Skip to content

契约与质量门禁

Spec-First 的质量体系不是单一测试命令,而是一组轻量合同:入口声明能做什么,产物声明怎么交接,验证声明跑了什么,评审声明证据在哪里,安全边界声明哪些 raw evidence 不能进入持久化文档。

核心目标是防止 fake completion:不能只因为 LLM 判断“应该没问题”就声明完成。完成声明必须指向 source reads、diff、测试、构建、截图、日志、schema 或用户提供证据。

Review checklist

Workflow Contract Summary

公共 workflow 和关键 standalone skill 都应在入口附近声明紧凑合同:

字段作用
When To Use当前任务是否应该进入该入口
When Not To Use哪些情况应停止、澄清或转到上游
Inputs需要的计划、task pack、diff、setup facts 或用户目标
Outputs产物、变更、报告或下一步
Artifactsdurable 或 session-scoped evidence 在哪里
Failure Modes何时不应继续自作主张
Workflow入口内部的高层执行姿态
Downstream Consumers谁会消费这次输出

这个 summary 是入口边界,不是完整说明书。它帮助 LLM 和人先判断路线,再决定是否读取更深的 source 或 artifact。

Artifact Summary 与 Handoff

artifact-summary.v1 解决跨 workflow 交接时的上下文膨胀问题:下游先读摘要、路径、限制和触发条件,只有必要时才展开完整 artifact。

字段组典型内容消费方式
Identityschema_versionartifact_typesource_pathproducer定位 artifact 链路
Decision surfacegoalscopenon_goalskey_conclusions判断是否可继续
Risk surfaceunresolved_riskslimitations形成 residual status
Evidence surfaceevidence_pathssource_reads_required回到 source/test/log 确认
Routing surfacerecommended_next_actionfull_artifact_read_triggers决定下一入口和是否展开全文

当 workflow 无法安全继续时,handoff 也应可执行:

text
Blocking reason: <why execution cannot continue safely>
Recommended entrypoint: <workflow or standalone skill>
Next action: <copy-ready invocation or approval>
Context to carry: <plan/task-pack path, failed validation, scope evidence>

这比只说“回到 plan”更可靠,因为它保留了阻塞原因和下一步上下文。

Context Governance

上下文治理的原则是 summary-first、source-first、runtime excluded by default。

路径范围普通 workflow 默认处理原因
.claude/**.codex/**.agents/skills/**排除generated runtime mirror,不是 source fix
.spec-first/audits/**.spec-first/governance/**排除runtime/audit artifact,体积大且需按任务精确读取
skills/(含 skill-local references/agents)、templates/src/cli/按任务读取source-of-truth
docs/contracts/、README、host instruction source按需读取项目与 workflow 合同
当前源码、测试、计划、需求、review 摘要优先读取当前任务直接证据

AGENTS.mdCLAUDE.md 通常已由宿主加载,普通 workflow 不应每次重新全文读取。只有用户点名、正在修改 instruction/runtime/setup、已加载指令明显 stale、或 code review 需要目录级项目标准时,才精确读取。

Verification Profile

Verification profile 描述“本次应该跑哪些检查”,不是替你执行检查的魔法。

来源适用
显式 spec-first.verification.json团队已定义标准检查
local profile / alias本机或项目局部覆盖
package.json 推断没有 profile 时从 typechecktestlintbuild 等脚本推断
workflow closeout记录实际运行、未运行、失败、降级和原因

高质量 closeout 至少要回答:

  • 运行了哪些检查
  • 哪些检查通过、失败或未运行
  • 未运行是否有 reason code
  • 结果是否支持当前完成声明
  • 是否仍有 residual risks

自然语言“测试应该没问题”不能替代 verification evidence。

Schema、契约测试与质量反馈

Spec-First 用 schema 和契约测试锁定公共协议:

质量面例子价值
Workflow contractsplan/work/review/setup 的入口合同防止入口语义漂移
Artifact schemastask pack、review finding、quality gate result防止产物不可消费
Release gatespackage delivery、website sync、install matrix防止发布缺资产或文档失配
AI Dev Quality Gateworkflow-runtime-contracts + advisory benchmark fixtures聚合阻断检查和反馈主题

Benchmark fixtures 是 advisory:它们声明场景、预期工作流、预期产物和验证命令,但不等同于真实端到端执行。质量门禁应把阻断失败和 advisory 失败分开。

Review Finding 证据要求

结构化 finding 应包含足够行动信息:

字段说明
severityP0-P3,决定优先级
confidence离散锚点,不使用伪精度
file / line可定位证据
why_it_matters影响解释
evidencesource/test/log/contract/diff/user evidence
autofix_classsafe、gated、manual、advisory
ownerdownstream resolver、human、release 等
requires_verification修复后是否需要额外验证

外部工具证据可以作为 supporting evidence,但如果没有直接证据配对,不能升级为高置信 finding、root cause 或 merge block。

安全与隐私边界

持久化 artifact、review report、handoff 和 solution docs 应避免写入 raw sensitive evidence。

禁止进入 durable docs 的内容正确处理
raw external-tool dump、大 JSON、完整 MCP 输出写 compact summary + artifact path + limitation
credentialed URLs、tokens、Authorization/Cookieredaction 后再记录
internal hostnames、private process/route dumpssummary-first,必要时保留安全路径
私钥、.env、工具凭据、签名材料由 secret deny patterns 拦截或人工排除
generated runtime mirror 全文指向 source-of-truth 或 setup/update 路径

Provider readiness 只是机械 setup fact,不证明业务结论。Graph、CodeGraph、MCP 等输出最适合做 exploration-tier orientation:帮助决定下一步读哪里,而不是直接给出最终答案。

新增 Skill / Agent / 入口的接入门槛

新增能力时先回答三类边界:

问题要求
它是 workflow command、standalone skill 还是 internal helper不把 internal helper 暴露为用户入口
Source truth 在哪里修改 skills/(含 skill-local references/agents)、templates/src/cli/,不修 runtime mirror
谁消费它的产物明确 Inputs、Outputs、Artifacts、Failure Modes、Downstream Consumers

质量上至少考虑:

  • 是否需要 README / Guide / Reference 更新
  • 是否影响 Claude、Codex 与 preview hosts 的多宿主投递
  • 是否需要 contract test 或 content audit 覆盖
  • 是否需要 fresh-source eval 或 source 文件检查
  • 是否需要更新 CHANGELOG.md

实践检查表

准备声明完成前,确认问题
Source/runtime 边界是否修改了 source,而不是 generated mirror
Handoff是否有摘要、路径、限制、下一步
Verification是否跑了匹配改动的最小检查
Evidence结论能否回到 source/test/log/contract/user evidence
Context是否避免了 full artifact / raw output 广播
Security是否移除了 token、credentialed URL、private dump
Changelog用户可见 source 变更是否记录

阅读下一步