host-instruction-projection · git:20261018.fda4337 · 2026-10-18 · sha256 be5094658879029c

host-instruction-projection git:20261018.fda4337A

Immutable. This exact content never changes and is served at /api/v1/blob/be5094658879029c.

---
name: host-instruction-projection
description: 宿主指令投影 Owner — 从统一 instructions 真相源确定性生成精简 Host Kernel、薄包装、覆盖回执与完整回退
---
# Host Instruction Projection Skill

## 职责

当任务涉及 always-on instructions 体积、Copilot/Codex/Claude/Gemini/Grok 规则加载、宿主入口文件、生成式规则投影、重复指令碰撞或完整规范回退时,本 Skill 是唯一 Owner。

本 Skill 只负责 `content/instructions.md → projection config → generated host projections → coverage receipt → user-global host targets`。分拆规则与 shared 片段由 control-content 编译器解析;发布包的 `instructions.md` 是编译交付路径。它不替代 `intent`、`cp-gate`、`load-profile`、`spec-governance` 或 `host-contract-verification` 的执行正文,也不把派生文件升级成第二规范真相源。

确定性实现位于 `scripts/lib/host-instruction-projection.js`,生成配置位于 `scripts/host-instruction-projection.json`,派生产物位于 `host-projections/`。

## 触发条件

| 场景 | 是否触发 |
|---|:---:|
| 修改 `instructions.md` 中 S/C、路由、CP、Context、治理或闭环语义 | 必须 |
| 修改宿主入口文件、安装路径或 deployment descriptor | 必须 |
| 新增/调整 Copilot、Claude、Codex、Gemini、Grok、Cursor surface | 必须 |
| 调整 always-on 指令预算或 full fallback | 必须 |
| 仅修改按需 Skill 正文且不触达投影锚点 | N/A + skipReason |

## HostInstructionProjectionGate

投影链固定为:

`instructions.md → mandatory rule parser → semantic replay groups → HostKernelV1 → thin wrappers → HostInstructionCoverageReceiptV1`。

- `instructions.md` 是唯一规范真相源;配置只声明抽取规则、语义锚点、宿主包装与预算。
- S01~S07、C01~C22 必须逐 ID 解析并进入 kernel;缺号、重复号、源锚点缺失或投影锚点缺失均 fail closed。
- 语义组至少覆盖 routing、CP、Context、governance、closure;用户可见输出与 auto 边界作为横切组进入同一回放。
- coverage 必须为 100%;生成器、`--check`、负向 mutation 和 staged/post-commit freshness 缺一不可。
- 禁止手工编辑 projection config 的 `outputs` 指定的 `host-projections/*` 派生产物;发现漂移时重新生成,不能在派生文件上补规则。明确标为 retired 的兼容 fixture 不属于当前部署输出,其历史语义单独保留。

## KernelBudgetGate

| 产物 | 预算 |
|---|---:|
| shared/Copilot kernel | ≤ 16 KiB 且 ≤ 200 行 |
| Claude/Gemini wrapper | ≤ 2 KiB |
| 相同完整 kernel 重复入口 | 0 |

预算超限、覆盖不完整或碰撞时,投影状态必须为 `full-fallback`,不得把部分 kernel 标成可用。性能优化不能降低安全、CP、恢复、治理或 ECR 语义。

## HostSurfaceProjectionGate

| Surface | always-on | 按需/回退 |
|---|---|---|
| Copilot | 用户级 `GlobalHostTargetV1.files.instructions`(Copilot projection) | 当前 receipt 的 G_RUNTIME、MCP/Hook 路径与 full fallback |
| Codex | 用户级 `files.instructions` 的 `AGENTS.md`(shared kernel) | 当前 receipt 的 G_RUNTIME、`files.config` / `files.hooks` 与 full fallback |
| Claude | 用户级 `files.instructions` 的 `CLAUDE.md` 薄包装,指向同代 runtime kernel | 当前 receipt 的 G_RUNTIME、用户原生 Skill 发现、settings/MCP 与 full fallback |
| Gemini | 用户级 `files.instructions` 的 `GEMINI.md` 薄包装,指向同代 runtime kernel | 当前 receipt 的 G_RUNTIME、用户原生 Skill 发现、settings 与 full fallback |
| Grok | 用户级 `files.plugin` / config / hooks;Full 入口使用 `devcodex grok` | 官方用户登记的 canonical plugin identity、同代 runtime 与 `--rules`;plain/full 能力分别以 direct evidence 声明 |
| Cursor | 用户级 `files.plugin` / `files.hooks` | 按当前 target 的 support/evidenceCeiling 验证;Cloud 不从本地结果升级 |

上述路径由 `global-host-target.js`、`global-host-config.js` 和实际 `GlobalHostConfigReceiptV1` 共同确定,不能从 repo cwd 推断。hidden 模式使用受管 G_RUNTIME;可选 legacy discovery 也仍是用户级部署。wrapper 只允许宿主能力提示和 shared kernel 指针;不得复制完整规则。

## HostAdapterScopeGate

当前安装、更新、状态检查、诊断或卸载采用 `GlobalOnlyHostConfigModeV1`:先解析 `GlobalHostTargetV1` 的用户级 root、shared root、runtime generation、config 与 receipt。host config owner 属于用户级目标;workspace-namespace 只决定项目 active-root 和运行态,不能决定宿主配置落点。

- `global-adapters apply --dry-run --json` 提供只读计划;apply 通过六宿主事务更新受管内容,未知配置、原生 Skill 碰撞和其他插件按当前 merge/ownership 契约保留。
- `status` / `doctor` 与 apply/remove 必须核对同一当前 target、generation 和 receipt。配置路径存在或安装成功,不等于旧 CLI/MCP 已加载;需要新进程与实际执行路径/内容摘要。
- Grok canonical source 使用当前用户级 target 的 `files.plugin`,官方插件登记与该 source identity 对账;旧 workspace/plugin 路径只作明确迁移输入,不作为当前安装 owner。
- 当前 workspace 默认宿主产物为 0;不得通过禁用的 `init/update --host` 或 alias 生成 project-portable adapter。
- 移除使用 `uninstall --dry-run` 后显式 `uninstall --apply`(或公开 global-adapters remove 等价入口),按 receipt-owned 内容执行原子六宿主清理;不得用单 host 参数或目录猜测扩大删除范围。

以下 `HostAdapterScopeV1` 是保留的 legacy helper / 历史迁移分类,不能作为当前公开安装入口:

| scope | owner / activation | 子项目默认产物 |
|---|---|---:|
| `workspace-native` | workspace root / ancestor 或宿主原生工作区发现 | 0 |
| `user-registered-workspace` | workspace root / 官方用户级本地插件登记 + 配置 enabled 状态 | 0 |
| `project-portable` | 显式 project root / repo-shared project discovery | 按显式选择生成 |

历史 fixture 中的 workspace-native、user-registered-workspace、project-portable、root native kernel 与 child plain partial 仅证明当时范围。迁移须核旧 manifest/identity、当前 canonical source 与可逆备份,不能把当前用户级 receipt 改写成旧 workspace owner,也不能按 retired fixture 启用旧 adapter。

## GrokWorkspacePluginGate

1. 官方能力证据必须覆盖 plugin install/update/uninstall、`[plugins].enabled`、plugin hooks 的 `GROK_PLUGIN_ROOT`、passive Hook stdout ignored、官方 `--rules` 与 `grok inspect --json`;变更前重新核验时效性。
2. `UserPromptSubmit` / `Stop` / `PreCompact` 的 passive stdout 不能作为 kernel injection evidence;所有事件保持 S01 的宿主权限边界,风险标签不能产生 shadow permission allow/deny。typed workflow-invalid 与宿主真实权限决定分别留证。
3. plain `grok` 从实际支持的 cwd direct 验证当前用户级 plugin identity、有效项目/active-root 与能力上限;项目歧义或无有效绑定时不得注入另一个项目状态。历史 root/child fixture 不证明当前原生能力。
4. `devcodex grok` launcher 按官方 `--cwd` 解析最终项目并绑定当前用户级 runtime/kernel,合并允许的用户 `--rules`,拒绝 system prompt override 与重复 cwd 冲突;以 headless direct replay 证明 `launcher-rules`。不得把 launcher 结果升级成 plain 模式已验证,缺失当前 kernel 时不得借用历史 workspace 副本。

## FullFallbackGate

完整源部署到用户级 shared target 的 full fallback(逻辑路径 `user://agents/devcodex/instructions.full.md`,通常为 `~/.agents/devcodex/instructions.full.md`);以当前 target/receipt 和代际为准,不从工作区相对路径寻找。它不位于任一宿主自动规则目录。以下任一情况必须使用或建议读取 full fallback:

- coverage、source/config digest 或生成新鲜度失败;
- 当前任务属于 audit/migration,或低置信无法安全裁剪;
- kernel 中的 Owner 索引要求读取按需 Skill,但 Skill 缺失/不可读;
- 宿主报告 0 instruction、root 截断、冲突版本或未知 import 语义。

full fallback 是兼容/故障路径,不得与 kernel 同时作为两个 always-on 完整副本加载。

## GrokFullLaunchAndPrivateTempGate

- `devcodex grok` 的 SkillRoute bootstrap 必须明确 active,才允许物化 `GrokPrivateTempOwnerV1` prompt snapshot 并 spawn child;bootstrap error/inactive 分别返回 `GROK_FULL_BOOTSTRAP_ERROR` / `GROK_FULL_BOOTSTRAP_INACTIVE`,且 `promptMaterialized=0`、`spawnCount=0`。plain Grok 继续保持 Partial,不能用 SessionStart fallback 冒充 Full bootstrap。
- launcher 的 prompt snapshot 与 plugin SessionStart 分属两个 writer,只共享 `grok/plugins/devcodex-workspace/lib/private-temp-contract.cjs` 的 schema/identity/path guard;installed plugin 不得反向 require source-only 文件,诊断 owner record 不保存 prompt body。
- SessionStart 每次创建 `GrokSessionPrivateOwnerV1` nonce owner root;sessionId 缺失也必须保持唯一。owner token、host/PID、path containment、TTL 与 state 任一不可验证都 fail closed;仅 `expired + dead owner` 可进入恢复,live/unknown owner 不得抢占或清理。

## HostInstructionCollisionGate

碰撞检查至少记录:`path / surface / role / digest / bytes / lines / sourceDigest / cwd / projectRoot`。

- 同一路径多 writer、相同完整内容多入口、不同 sourceDigest kernel、wrapper 未指向 shared kernel、入口为 0 字节或超预算均为 blocker。
- import-only wrapper 计入实际 bytes,但不按第二份完整 kernel 计数。
- 当前 global-adapters transaction、managed block 与 receipt ownership 决定冲突处理;计划、实际写入及回读都要核对,不能用禁用的 `init/update --host` 绕过。
- direct host inspect 不可用时最高为 `instruction-backed/unverified`,不得凭 fixture 升级 enforced。

## CLI 与部署消费者

- `init/update/uninstall --host <copilot|claude|codex|gemini|grok|cursor|all>` 与旧 `--claude`、`--codex`、`--gemini`、`--grok`、`--cursor` 不再是当前部署入口;已知 workspace host selector 返回 `CLI_HOST_CONFIG_GLOBAL_ONLY`。
- `GlobalOnlyWorkspaceCleanModeV1` 下,bare `init/update` 只维护 `.devcodex`,不部署任何 workspace 宿主 adapter;用户级 `global-adapters apply` 默认部署六宿主。legacy project projection 仍只有 copilot+claude+codex+gemini+grok 五类工作区 surface,Cursor 必须保持零业务 workspace `.cursor` 产物。
- 重复或冲突 selector 使用 `CLI_HOST_SELECTION_CONFLICT`;未知 host 使用 `CLI_HOST_UNSUPPORTED`。
- managed manifest 必须记录 projection source/content digest,并保证规范化物理 destination 单一 current owner;dry-run 零写入;从 source cwd 与目标项目 cwd 分别验证边界。
- 从 source cwd、workspace root 或 child project 调用,当前 host config target 都按用户级 home/显式路径解析,不切换为 workspace owner;项目 profile/data/memory 仍按独立 active-root 绑定。dry-run 与失败 selector 必须证明零写入。

## 验证路线

1. `node scripts/generate-host-instruction-projections.js --check`。
2. `node scripts/test-host-instruction-projection.js`:规则缺失、锚点 mutation、预算回退、重复内容碰撞、派生新鲜度。
3. `node scripts/test-host-adapters.js`:Gemini/Grok/Cursor event 与输出映射。
4. `node scripts/test-cli-command-registry.js` 与 host install fixture:六宿主用户级目标、旧 selector 拒收、unknown/conflict、dry-run、collision、two-cwd、workspace 零宿主产物、六宿主原子 remove/reinstall 及配置保真;legacy helper fixture 单列。
5. Grok 官方 plugin validate/inspect 对当前用户级 canonical source 与多 cwd 的 direct replay;Source 中 `grok/plugins/devcodex-workspace` 是分发源目录,不是 workspace owner。无 direct 的宿主保持 `UNVERIFIED`。
6. 按授权的 plan/lease 执行适用的 source、package/Profile/deploy 或 full 验证,记录 scoped/managed V3/发布资格边界;staged freshness 与 post-commit clean replay 必须分别留证,不能以裸 runner 命令或组件绿冒充 release-pipeline。

## 回滚

任一 correctness、coverage、碰撞或 direct evidence 失败:

1. 将投影状态降为 `full-fallback`;
2. 保留完整 reader 与已验证的旧代际证据,不重新启用禁用的 CLI aliases;
3. 沿公开事务/保留代际恢复受管配置;保持六宿主原子性、用户未知内容与原生 Skill,不手改 receipt 或 owner;
4. 记录 source/config digest、失败探针和恢复条件,修复后重新生成并完整回放。

## 禁止事项

- 手工维护六份完整规范。
- 用关键词计数代替 S/C ID 与语义锚点回放。
- 为压缩体积删除安全、CP、Context、治理、恢复或 ECR 不变量。
- 在缺少 direct evidence 时宣称宿主已实际加载、执行或强制。
- 把 coverage receipt 或生成 header 当成规范真相源。
- 在 workspace 默认模式向子项目生成 `AGENTS.md/.grok/.codex/.claude/.gemini`,或让读写/诊断使用不同作用域解析器。