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、C01C22 必须逐 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 模式使用 receipt 的 skillsRuntimeRoot(G_RUNTIME);可选 legacy discovery 也仍是用户级部署。wrapper 只允许宿主能力提示和 shared kernel 指针;不得复制完整规则。生成的包装是位置无关模板,安装器必须把 kernel import 绑定到当前 target.runtimeRoot/AGENTS.md;验收须解析实际 import、证明文件存在且属于 receipt 当前代际,旧固定路径存在也不能算通过。
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
- 官方能力证据必须覆盖 plugin install/update/uninstall、
[plugins].enabled、plugin hooks 的GROK_PLUGIN_ROOT、passive Hook stdout ignored、官方--rules与grok inspect --json;变更前重新核验时效性。 UserPromptSubmit/Stop/PreCompact的 passive stdout 不能作为 kernel injection evidence;所有事件保持 S01 的宿主权限边界,风险标签不能产生 shadow permission allow/deny。typed workflow-invalid 与宿主真实权限决定分别留证。- plain
grok从实际支持的 cwd direct 验证当前用户级 plugin identity、有效项目/active-root 与能力上限;项目歧义或无有效绑定时不得注入另一个项目状态。历史 root/child fixture 不证明当前原生能力。 devcodex groklauncher 按官方--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,才允许物化GrokPrivateTempOwnerV1prompt 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 每次创建
GrokSessionPrivateOwnerV1nonce 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 --host <copilot|claude|codex|gemini|grok|cursor|all>及单宿主旧 alias 不再是当前部署入口,已知 workspace host selector 返回CLI_HOST_CONFIG_GLOBAL_ONLY。uninstall 的单宿主选择同样禁用;兼容的uninstall --host all仍进入六宿主 global remove,并保持 dry-run/显式--apply边界,不是单宿主卸载。GlobalOnlyWorkspaceCleanModeV1下,bareinit/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 必须证明零写入。
验证路线
node scripts/generate-host-instruction-projections.js --check。node scripts/test-host-instruction-projection.js:规则缺失、锚点 mutation、预算回退、重复内容碰撞、派生新鲜度。node scripts/test-host-adapters.js:Gemini/Grok/Cursor event 与输出映射。node scripts/test-cli-command-registry.js与 host install fixture:六宿主用户级目标、旧 selector 拒收、unknown/conflict、dry-run、collision、two-cwd、workspace 零宿主产物、六宿主原子 remove/reinstall 及配置保真;legacy helper fixture 单列。- Grok 官方 plugin validate/inspect 对当前用户级 canonical source 与多 cwd 的 direct replay;Source 中
grok/plugins/devcodex-workspace是分发源目录,不是 workspace owner。无 direct 的宿主保持UNVERIFIED。 - 按授权的 plan/lease 执行适用的 source、package/Profile/deploy 或 full 验证,记录 scoped/managed V3/发布资格边界;staged freshness 与 post-commit clean replay 必须分别留证,不能以裸 runner 命令或组件绿冒充 release-pipeline。
回滚
任一 correctness、coverage、碰撞或 direct evidence 失败:
- 将投影状态降为
full-fallback; - 保留完整 reader 与已验证的旧代际证据,不重新启用禁用的 CLI aliases;
- 沿公开事务/保留代际恢复受管配置;保持六宿主原子性、用户未知内容与原生 Skill,不手改 receipt 或 owner;
- 记录 source/config digest、失败探针和恢复条件,修复后重新生成并完整回放。
禁止事项
- 手工维护六份完整规范。
- 用关键词计数代替 S/C ID 与语义锚点回放。
- 为压缩体积删除安全、CP、Context、治理、恢复或 ECR 不变量。
- 在缺少 direct evidence 时宣称宿主已实际加载、执行或强制。
- 把 coverage receipt 或生成 header 当成规范真相源。
- 在 workspace 默认模式向子项目生成
AGENTS.md/.grok/.codex/.claude/.gemini,或让读写/诊断使用不同作用域解析器。


