- 状态:Active
- 文档地图:
docs/README.md - 注册表:
docs/specs/README.md - 模板:
docs/specs/_template.md
SDD 先定义“改变什么、保持什么、怎样证明完成”,再修改生产代码。Spec 是跨 session 的持久契约,不是大而全的设计报告。
源码、CMakeLists.txt、AGENTS.md、当前验证
↓ 约束现状
Accepted / Implementing Spec
↓ 驱动
代码、测试、迁移
↓ 留证
Verified Spec Evidence
README.md:项目入口和已实现能力摘要。AGENTS.md:编码代理规则和高风险工程契约。docs/architecture/:跨领域长期设计不变量;不代表已经实现。docs/plans/:方向、依赖和未来里程碑,不代表已实现。docs/specs/:一次具体变更的目标、边界和验收。docs/references/:原始设计输入和校验快照;不具有规范优先级。- Spec 与源码冲突时必须先查明是实现偏离还是 Spec 过时,不能选择性忽略。
以下任一情况必须创建或复用正式 Spec:
- 新用户/游戏功能,公共 C++/HLSL/API 或 target 边界。
- 跨核心模块架构、线程、任务、所有权或启动/关闭顺序。
- RHI、RenderGraph、Renderer Pass、Shader schema 或 GPU 生命周期。
- Scene、WEMesh、Asset、配置、MCP、Trace、SaveGame 等格式/协议。
- 坐标、Transform、Rotator、相机 basis 或资产规范化。
- 引入/升级第三方依赖。
- 多提交变更,或失败可导致数据破坏、GPU use-after-free、协议不兼容。
没有 Accepted Spec 时只能调研、测量、原型和完善 Draft,不得开始生产实现。
局部 bug fix、无语义机械重构、构建/警告修复和纯诊断增强可不建文件,但修改前必须写明:
- 当前问题或目标。
- 必须保持的不变量。
- 最小验证。
一旦触及 Full SDD 边界立即升级为正式 Spec。
只读解释/审查、状态报告、不改变约束的文档修正,以及用户明确要求的 Git 操作通常无需 Spec。
| 状态 | 含义 | 允许工作 |
|---|---|---|
Draft |
调研或等待审查 | 调研、原型、更新 Spec;禁止生产实现 |
Accepted |
用户已明确接受契约 | 实施准备 |
Implementing |
正在修改生产代码 | 实现、测试、分片验证和交接 |
Verified |
当前实现已通过全部必需验收 | 维护与后续 Spec |
Superseded |
已被其他 Spec 替代 | 仅保留历史 |
Draft --用户明确接受--> Accepted --开始生产修改--> Implementing --当前实现验收留证--> Verified
Accepted / Implementing --实质契约变化--> Draft
Draft / Accepted / Implementing --被替代--> Superseded
门禁:
- 代理不能推断用户接受;
Accepted by/on只能在明确确认后填写。 - 第一次生产修改前进入
Implementing。 - 目标、非目标、外部行为、不变量、格式或迁移实质变化时先更新 Spec,必要时退回
Draft。 - 未运行验证必须记为未运行;历史结果不能把 Spec 变成
Verified。 Superseded必须链接替代 Spec并说明剩余工作归属。
- 运行
git status --short。 - 读取根
AGENTS.md、AI-Native Engine Architecture 和 Spec 注册表。 - 搜索全部具体 Spec 状态:
rg -n "^- Status: (Draft|Accepted|Implementing|Verified|Superseded)$" docs/specs --glob "!_template.md"- 用用户请求识别 Spec ID,完整读取匹配 Spec、直接依赖和相关源码。
- 对照源码、
CMakeLists.txt与当前状态检查 Spec 是否过时。 - 在 commentary 报告 Spec ID、状态和本次允许范围。
- 按状态行动:
- 无 Spec:创建
Draft。 Draft:只完善/审查。Accepted:建立计划后进入Implementing。Implementing:从 Current Progress/Next Step 恢复。Verified:新需求通常建立后继 Spec。
- 无 Spec:创建
仓库内 Spec 和 Git 状态是跨 session 真值,不能依赖旧聊天记忆。
文件名:
docs/specs/YYYY-MM-DD-<spec-id>-<short-name>.md
顶部元数据必须包含:Spec ID、Status、Created、Updated、Roadmap、Architecture、Depends on、Owners、Accepted by/on、Supersedes、Superseded by。
正文统一为十节:
- Context:摘要、当前事实、问题和源码证据。
- Goals and Non-Goals。
- Scenarios:主路径、失败和关闭。
- Constraints and Invariants;包含
AI-Native Impact。 - Design。
- Alternatives。
- Delivery Slices。
- Verification and Acceptance。
- Compatibility, Risks, and Open Questions。
- Implementation Record。
规则:
- Spec ID 唯一并优先复用路线图 Issue;文件日期不随更新重命名。
- Draft 先写可观察行为、不变量、失败/迁移和验收,再选择设计。
- 每个 Full SDD Spec 必须逐项判断 Identity、Schema、Query、Effect、Determinism、Validation/Evidence、Provenance/Migration、Security/Budget 和 Headless。
AI-Native Impact使用Required、N/A或Deferred;N/A写明原因,Deferred引用后继 Issue/Spec,所有Required项进入验收与验证。- Schema 决策包含兼容版本;Query 决策包含 snapshot/diff/change feed、revision/freshness 和 resync;Effect 决策说明 target scope 与真实 undo/cancel/compensation 边界。
- 涉及 Human/Agent 并发写时明确 base/expected revision、workspace/staging 和 conflict,不采用 silent last-writer-wins。
- 至少记录一个未采用方案及原因。
- Delivery Slice 必须能独立验证并保持仓库可运行。
Accepted前关闭所有会改变契约的 Open Questions。- 注册表必须同步,但 Spec 文件自身状态是最终真值。
用户明确接受后:
- 更新为
Accepted,填写Accepted by/on,同步注册表。 - 开始生产修改前从 Delivery Slices 建立计划并改为
Implementing。
实施时:
- 一次改变一个可陈述不变量,优先建立能失败的测试或基线。
- 新旧路径并存时写清切换、兼容和移除条件。
- 格式、cache key、共享 C++/HLSL 布局或协议的版本与迁移同批落地。
- 实现与 Spec 冲突时暂停代码,先更新并重新审查 Spec。
- 不顺带实现 Non-Goals。
- 每个 Slice 后更新进度、偏差和证据。
Spec 文档契约:
py -3 Tests/spec_contracts.py .
ctest --test-dir Build -C Debug -R SpecContracts --output-on-failure功能验证按范围选择 CPU、Debug/Release、CTest、MCP/WEMesh、WAVE_RG_STRICT=1、raster、DXR、Editor/PIE、failure injection、package smoke 和 performance baseline。
Evidence 记录:
| 字段 | 内容 |
|---|---|
| Date | 实际日期 |
| Commit | 精确提交或明确 working tree |
| Environment | 配置、GPU/driver、环境变量 |
| Command/Steps | 实际命令或手工步骤 |
| Result | Pass/Fail/Not Run |
| Artifacts | 日志、trace、截图、dump 或报告 |
Verified 门禁:
- Acceptance Criteria 全部勾选。
- 所有必需验证已在当前实现执行;未运行项不是完成前置且写明原因。
- 本次日志无新增 Error、Fatal 或 D3D12 validation。
- 实际实现偏差、Evidence、注册表和路线图状态已同步。
停止 Implementing 工作前更新:
Current Progress:已完成且验证的 Slice。Next Step:下一次 session 的单一首要动作。Changes and Deviations:文件、关键决策和偏差。Evidence:本次验证与未验证项。Remaining Work:剩余 Slice/验收项。- Git 状态:未提交修改及归属。
建议把 Draft、接受记录、实现 Slice 和最终验证拆成可审查提交;实现提交引用 Spec ID。实现完成不授权自动 push。
修改本流程时同步更新:
AGENTS.md的简明门禁。docs/architecture/ai-native-engine.md的影响维度。docs/specs/_template.md。Tests/spec_contracts.py。
不能通过放宽状态含义把未验证实现标记为完成。