版本管理(Version)
Version 只处理版本边界操作;工作区扫描、校验和快照构建由确定性脚本一次完成,模型只
确认版本意图并读取紧凑结果,不重复解释完整契约。
读取 command.md、references/version-lineage.md、
../speckit-specify/references/workflow-state-contract.md、
../speckit-specify/references/delivery-mode-contract.md、
../speckit-specify/references/feature-state-contract.md 和
../speckit-specify/references/traceability-contract.md,使用
scripts/version_snapshot.py。不得手工复制快照。
两种模式
freeze:Draft -> Frozen,生成versions/vX.Y.Z-YYYY-MM-DD/、manifest、CHANGELOG 和 SPEC-INDEX。begin-revision:Frozen -> 更高版本 Revision Draft,Baseline 指向上一快照,历史快照不可修改。
字段密集型 spec 冻结前必须通过字段契约校验,并将 field-contract.json、field-coverage.json、
prototype/field-render-map.json 和适用的 schema-snapshot.json 纳入快照。契约 digest 变化时
不得复用旧覆盖报告。
begin-revision 完成后必须运行统一路由器:存在未消费 Analyze 交接时下一步为 Specify;
否则根据 Draft 中的 open 项决定 Clarify 或 Prototype/Review。
冻结门禁
- 当前
Formal review必须有效且结论允许推进;风险 override 必须记录责任人、理由、范围和有效期。 - 闭环矩阵、交互状态矩阵、transition 回放结果和对应证据必须与当前 spec/原型一致。
- 缺少关键 transition、存在
Blocked或只有页面存在证据时不得冻结。 - 失败时保留原文件,不覆盖历史快照,不自动调用 publish。
工作区治理钩子
archive_workspace.py 只处理临时残留,不处理历史版本、历史原型或正式交付物。
历史迭代必须在产品版本目录下按 Spec-Revision 直接并列保存,禁止生成
<Product-Version>/archive/。
freeze 会自动调用 speckit-workspace 的 archive_workspace.py --known-only --apply
和 audit_workspace.py --mode gate。已知临时残留会先移动到
.specify/archive/<timestamp>/ 并生成 archive-manifest.json;Unknown 或
Misplaced 文件不会自动移动,必须人工处理后重试。该钩子是确定性的脚本调用,不需要
用户额外手动执行另一个 Skill。
产品版本与规格修订(Product Version vs Spec Revision)
读取 references/version-context-contract.md。freeze 的版本参数表示 Spec-Revision,
不是产品版本;产品版本必须从当前 Draft 的 Product-Version 读取并写入 snapshot manifest。
冻结结果必须包含 product_id、product_version、spec_revision、feature_id 和
artifact_key。不能把 v0.1.0 直接作为 Git 顶层版本目录。
Spec 内容范围门禁(Spec Scope Gate)
冻结前在正式 Review 之后运行:
python -X utf8 "<speckit-workspace>\scripts\validate_spec_scope.py" --spec "<FEATURE_DIR>\spec.md" --strict
返回 BLOCKED 或包含 SPEC_CONTEXT_CONTAMINATION 时不得生成 Frozen snapshot。该门禁只检查规范范围,不要求先冻结原型,也不限制用户阶段性上传原型。