| name | host-contract-verification |
| description | 宿主契约验证规范 — 为 Hook / CLI / bootstrap / visible envelope / workspace guard / LinkCapabilityDecision / MCP fallback 定义 direct replay、fixture replay、部署同步与证据路线 |
Host Contract Verification Skill
职责
当任务涉及宿主事件契约、Hook 可见回复、workspace 项目识别、bootstrap 护栏、产物链接可点击性、MCP bridge fallback 或部署副本同步时,本 Skill 负责把“怎么证明宿主行为真的成立”收口为可复审的验证路线。
它不替代 test-router、report 或 runtime tests,而是为这些产物提供统一的宿主证据模型。
触发条件
| 场景 | 是否触发 |
|---|
| Hook runtime / 宿主适配 / Hook 输出契约变更 | 🔴 必须 |
| Stop / PreCompact 可见回复验证语义变更 | 🔴 必须 |
sticky activeProject / mode / workspace guard 变更 | 🔴 必须 |
| Bootstrap、部署副本、父链同步口径变更 | 🔴 必须 |
EntryCheckModelV3 / DevCodexVisibleEnvelopeV3 / V1/V2 只读兼容 / PostCompletionActionSetV1 / UserFacingArtifactSetV1 / LinkCapabilityDecisionV1 / HostLinkCapabilityDecisionV2 / ArtifactDeliveryAttemptV1 变更 | 🔴 必须 |
Copilot / Codex MCP bridge 报错、profile_load fallback、invoke undefined 恢复链变更 | 🔴 必须 |
ContextReadPlanV2 / ContextReadReceiptV2(含 V1 兼容)、Pre/Post 相关性、内容身份/复用、上下文读取 allowlist 或 fallback 语义变更 | 🔴 必须 |
| 公开本地 probe、checkpoint 证据语义或 trace show/replay 变更 | 🔴 必须 |
| 仅普通业务代码改动 | N/A |
HostContractRoute
| 字段 | 必填 | 说明 |
|---|
hostSurface | ✅ | Copilot / Claude Code / Codex / instruction-fallback 中本轮实际验证的宿主面 |
eventScope | ✅ | UserPromptSubmit / PreToolUse / PostToolUse / PreCompact / Stop / bootstrap / deploy-sync |
evidenceMode | ✅ | direct replay / fixture replay / targeted test / validate probe / manual trace |
fixtureSource | 条件 | 使用 fixture replay 时记录脚本、payload 或样例来源 |
visibleReplyEvidence | 条件 | verified-present / verified-missing / unverified,以及证据来源 |
workspaceGuard | 条件 | 多项目 workspace、sticky project、workspace profile 提示等边界验证 |
bootstrapScope | 条件 | 父链部署体、入口检查块、adapter 初始化或 update 部署验证 |
artifactLinkMatrix | 条件 | presentationSurface + capability evidence 主选 renderer,hostSurface 只验 adapter 匹配;记录 ArtifactDeliveryAttemptV1 的 actionId/attempted/actionStatus/readback/status/fallbackReason 与 renderer parity |
mcpFallback | 条件 | MCP bridge 失败时是否降级到同计划有界文件读取 / instruction-fallback;记录错误文本、fallback 路线和是否停止重试 |
contextAcquisition | 条件 | plan/epoch/target/source 相关性、Pre attempted、Post success receipt、fallback 与完成状态 |
turnLiveness | 条件 | 长任务/无续接场景的 host-native、Hook-event、sidecar 能力边界,以及 lease、ACK、terminal、checkpoint 证据 |
localProbe | 条件 | LocalProbeDescriptorV1/ResultV1 的 ID、依赖、local-only、同步只读和 zero-write 证据 |
|
最小验证矩阵
| 变更类型 | 最小验证 |
|---|
| Hook 输出契约 | targeted test + direct replay |
| 可见回复三态 | fixture replay 或 direct replay,报告中写明 visibleReplyEvidence |
| sticky project / workspace guard | multi-project fixture + follow-up replay |
| bootstrap / 部署副本 | node scripts/validate.js + 部署同步后的落点复核 |
| managed deployment manifest | legacy 多 owner + workspace-namespace fixture、规范化 destination 单一 current owner、project current host=0、workspace missing/mismatch/stale/duplicate=0、V8 direct replay |
| workspace 宿主作用域 | HostAdapterScopeV1 owner/activation 一致 + 子项目五类 generated host artifact=0 + Grok workspace plugin/用户登记正向 + uninstall/repeat/reinstall 配置保真 + status/doctor 同 owner + root native kernel + child plain partial + devcodex grok --rules full 路线 + --cwd/nested workspace/Windows path identity + outside-workspace no-op 负向 |
| visible set / 产物打开 | manifest/projection property test + Codex Desktop、VS Code、Zed、WebStorm、Codex CLI、Claude/unknown renderer fixture;renderer-only 必须 fallback,opened 必须同时具备 action success + readback success;若声称当前 presentationSurface 已打开,需 direct replay 或用户实测证据 |
| MCP bridge fallback | MCP server no-args direct replay + 非 Full 宿主 fallback 文案探针;若错误来自宿主桥接层,只能声明 fallback 已覆盖,不能声明宿主 bug 已修复 |
| 意图驱动上下文获取 | ContextAcquisitionToolAllowlistProbe + plan/receipt direct replay + Pre/Post fixture + hidden-full-read 负例 + fallback no-deadlock |
| Turn Liveness / orphaned turn | state-machine fault matrix + Hook direct replay + restart rehydrate;事件停止后的 proactive 检测只能由 host-native watchdog 或 gray read-only sidecar 证明 |
| 本地 probe | descriptor/dependency/error fixture + CLI JSON/human replay + state hash zero-write;不得联网、启动 watcher 或写 telemetry |
| checkpoint / local trace | fixed-clock 双阶段 fixture + Hook terminal replay + sequence/duplicate/restart/terminal 负例;trace replay 必须证明 payload 不执行且源 state hash 不变 |
| 仅文档声明变更 | source-consumer-sync + validate probe;若声称宿主行为改变则不得只改文档 |
证据要求
VisibleOutputHostEvidenceGate
Stop/PreCompact 对最终回复证据必须使用 verified-present / verified-missing / unverified:只有观察到可解析 assistant 内容和当前 DevCodexVisibleEnvelopeV3 marker、合法动作标题、语义 item 才能判定 present/missing;V1/V2 marker 只记录 legacy-v1-read-only / legacy-v2-read-only,不得把它当作新写入证据。未观察到只能 unverified。记录 evidenceSource / missingItems / semanticDigest,不得保存不必要的完整回复正文。
legacy “主要产物 + 绝对路径”最多为 unverified-legacy。能力未 direct 验证时保持 portable/plain;Rich clickable 只显示单个语义链接。session、daily、SUMMARY、task/checkpoint 和 raw ledger 默认 internal-only,但宿主验证仍要核对它们已进入 internal manifest 和 ECR。
HostPermissionAuthorityInvariant
PreToolUse 与 PermissionRequest 的文件、命令、删除及工具调用权限完全归当前宿主和用户宿主配置。DevCodex 只能记录风险 advisory、telemetry 或 typed workflow-invalid;runtime、输出 builder 和每个宿主 adapter 均不得发出或转译 allow / deny / ask / block / continue:false 操作权限载荷。Stop、PreCompact 等非操作生命周期完成门禁不受此条影响。验证必须向 Codex、Claude、Gemini、Copilot、Grok、Cursor 注入遗留允许/拒绝载荷,并证明最终操作事件投影不含任何 permission carrier。
ContextAcquisitionHostEvidenceGate
ContextAcquisitionToolAllowlistProbe 只允许已注册的只读 Profile / memory 查询工具推进 source state;普通文件搜索、写工具、legacy no-args 全文读取或未知工具不得伪造完成。
PreToolUse 只记录 correlated attempted;只有 PostToolUse 中可解析的成功结果,且 invocation planId、planContentId、contextEpoch、activeRoot、tool/source/query 全部匹配时,才生成或推进 ContextReadReceiptV2(V1 兼容)。
ContextDeliveryReuseHostProbe 必须分别证明 computation reuse 与 delivery reuse:跨进程只允许复用内容身份绑定的计算元数据;正文省略还必须同 host session、同 epoch、同 source identity 且当前模型已有成功 body observation。宿主无法提供稳定 session 或 Post body 证据时 delivery reuse 必须降级为 false。
- 需覆盖结构化 MCP、path-observable 与 instruction-only 三种宿主能力;后两者缺少可验证结果时必须保持
unverified,不能由提示文案升级为 relevant-complete/completed。
- MCP bridge 失败只允许一次同计划 bounded fallback 并停止重试;fallback 失败或证据不可观察时输出 warnings / missing sources,但不得形成死循环或跳过后续安全与 CP 门禁。
- Progressive SkillRoute enforcement policy 缺失、损坏或字段非法时必须使用受控 fail-safe:所有宿主的
PreToolUse/PermissionRequest 保持 advisory-only;Stop 等非操作生命周期事件可按宿主能力恢复 hard default。bootstrap 与 observe 均保持。
- direct/fixture replay 至少覆盖 success、tool error、mismatched epoch/target/source、duplicate/stale Post、legacy projection 和 hidden full-read mutation;报告区分 server direct success 与 host bridge verified。
- 报告必须说明证据来自 direct replay、fixture replay、现有 targeted test,还是 validate probe 推断。
- 无法直接读取最终 assistant 内容时,只能落为
unverified,不能伪造 verified-present。
- workspace guard 场景必须写清“唯一项目继续沿用”“真实歧义重新提示”“workspace profile 路径”三类边界是否覆盖。
- 若宿主不支持某类硬拦,只能记录为能力差异或 fallback,不得把缺失能力写成已验证通过。
- 产物链接必须区分“Markdown 主链接已生成”“当前宿主可点击已实测”“绝对路径 copy fallback 已提供”三种证据;不得把第一项等同于后两项。
profile_load / MCP 工具出现 Cannot read properties of undefined (reading 'invoke') 时,若 DevCodex MCP server direct replay 通过,应记录为宿主 MCP bridge 失败并启用 mcpFallback=used,禁止反复重试同一 MCP 调用。
- Turn Liveness 声明必须分别标注
host-native-verified / hook-event-verified / sidecar-observed / unsupported / unverified;PostToolUse 落盘只能证明工具结果已观察,不能证明模型续接或 turn 已终态。
CheckpointValidationResultV1 缺失 post-execution evidence 时只能是 unverified 或 incomplete-timeout;只有实际 Hook terminal evidence 才能通过,禁止把等待或 PreCompact 当完成。
LocalTaskTraceV1 只保留当前 turn 的 typed data projection;replay 不得 dispatch payload、重放 mutation、改 lifecycle state、唤醒宿主或控制进程。
- workspace-namespace 下项目根存在 generated
.grok/AGENTS.md 是作用域异常而不是部署成功证据;只有 workspace plugin、用户注册、两 cwd 同 identity 与工作区外 no-op 同时通过,才能升级 Grok workspace 结论。
- plain host 与显式 launcher fallback 必须分别记录
commands/evidenceMode/evidenceCeiling;任何一方通过都不能替另一方升级结论。
- Grok HostParity partial 闭环(PF-165):
doctor/status 的 hostParity 必须能给出 failedChecks + 可执行 repairSteps(command + detail);宣称已修复 registration/plugin 缺口时,证据须含再次 doctor --json 的 checks 回读,不得只写「建议 update」。
- GrokTurnChecklist:声称「Grok 完整工作流已执行」时,报告/回执须覆盖 entry-pc0-pc7、skill-bundle、report-memory 与 honest-ceiling;负向探针见
classifyGrokTurnOmissionSample(scripts/lib/host-parity-scorecard.js)。
NativeCommandExitCodeGate 可执行适配
- 仓库内需要串行执行原生命令并保留证据的维护脚本优先复用
scripts/lib/checked-command.js 的 runChecked / runSequenceChecked,统一记录 command、cwd、exitCode、signal、duration 与 stdout/stderr 摘要。
- 默认
shell:false;只有调用方记录 allowShellReason 时才允许 shell。positional path 中的字面 glob 必须在 spawn 前拒绝,显式 --glob/-g 等 option value 除外。
- 适配器只是实现路径,不替代 direct replay / fixture replay;必须用 nonzero、ENOENT、失败短路和 literal-glob 负向 fixture 证明不会假绿。
与其他 Skill 的关系
test-router:决定宿主验证是否进入 direct replay / fixture replay / targeted test。
execution-contract:记录 verificationEvidence,说明本轮要收集哪些宿主证据。
source-consumer-sync:当宿主契约变化会影响 README / website / Profile / 部署副本时,负责同步消费链。
report:把 HostContractRoute 的结果写入实施报告或审查报告。
输出格式
## HostContractRoute
| 字段 | 内容 |
|------|------|
| hostSurface | |
| eventScope | |
| evidenceMode | |
| fixtureSource | |
| visibleReplyEvidence | |
| workspaceGuard | |
| bootstrapScope | |
| artifactLinkMatrix | |
| mcpFallback | |
| contextAcquisition | plan/epoch/target/source、allowlist、Pre/Post、receipt、fallback 与完成状态 |
| turnLiveness | capability layer、lease/ACK/terminal/checkpoint、fault matrix 与证据状态 |
| localProbe | descriptor/dependency/local-only/zero-write 与 CLI 证据 |
| checkpointValidation | response-time/post-execution 结果、deadline 与证据状态 |
| localTaskTrace | ordered events、terminal、restart、read-only replay 与 source hash |
| commands | |
禁止
- 禁止仅凭 README / prompt 文案就断言宿主契约已验证。
- 禁止把
npm test 通过等价为 direct replay 已覆盖。
- 禁止在需要 direct replay 的场景下只保留人工口头判断。
- 禁止把 Hook 下一事件到达时的 stale 检测写成无事件时可自唤醒;禁止用 sidecar 观察授权自动进程或宿主状态 mutation。
- 禁止把 trace replay 写成 operation replay,或执行 payload 中的命令、文件动作和工具调用。