@namewta/speculo 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/dist/src/cli.js +40 -6
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/skills-mirror.d.ts +38 -0
- package/dist/src/skills-mirror.js +160 -0
- package/dist/src/skills-mirror.js.map +1 -0
- package/package.json +3 -2
- package/template/canonical/README.md +7 -1
- package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +2040 -0
- package/template/canonical/canonical-specdev-goal-plan.md +1379 -0
- package/template/canonical/canonical-specdev-grill-with-docs.md +848 -285
- package/template/canonical/canonical-specdev-spec.md +1061 -46
- package/template/canonical/canonical-specdev-tickets.md +1529 -175
- package/template/canonical/canonical-specdev-wayfinder.md +677 -107
- package/template/commands/git-repository-audit.md +682 -0
- package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +69 -36
- package/template/workflows/specdev/A-archive-and-consolidate/archive-checklist.md +15 -0
- package/template/workflows/specdev/A-archive-and-consolidate/knowledge-promotion-rules.md +32 -0
- package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +51 -51
- package/template/workflows/specdev/D-diagnose-bugs/diagnosis-template.md +64 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/E-engineering-cognitive-mentor.md +252 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/architecture-guidance.md +90 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/bug-guidance.md +80 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/codebase-guidance.md +107 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/comprehension-and-closure.md +95 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/domain-learning-guidance.md +62 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/evidence-and-options.md +132 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/interaction-protocol.md +116 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/mentor-report-template.md +135 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/mode-routing.md +47 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/persistence-and-resume.md +147 -0
- package/template/workflows/specdev/E-engineering-cognitive-mentor/requirements-guidance.md +92 -0
- package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +100 -30
- package/template/workflows/specdev/G-grill-with-docs/adr-format.md +22 -77
- package/template/workflows/specdev/G-grill-with-docs/context-format.md +27 -53
- package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +6 -82
- package/template/workflows/specdev/G-grill-with-docs/grilling-protocol.md +32 -49
- package/template/workflows/specdev/G-grill-with-docs/log-format.md +16 -98
- package/template/workflows/specdev/I-implement/I-implement.md +168 -52
- package/template/workflows/specdev/I-implement/code-review-process.md +10 -76
- package/template/workflows/specdev/I-implement/codebase-design-glossary.md +12 -109
- package/template/workflows/specdev/I-implement/deepening.md +12 -32
- package/template/workflows/specdev/I-implement/design-it-twice.md +6 -41
- package/template/workflows/specdev/I-implement/evidence-template.md +69 -0
- package/template/workflows/specdev/I-implement/execution-preflight.md +20 -0
- package/template/workflows/specdev/I-implement/tdd-examples.md +10 -135
- package/template/workflows/specdev/I-implement/tdd-rules.md +12 -28
- package/template/workflows/specdev/I-init-setup/I-init-setup.md +81 -86
- package/template/workflows/specdev/I-init-setup/change-status-template.json +15 -0
- package/template/workflows/specdev/I-init-setup/config-template.json +26 -0
- package/template/workflows/specdev/I-init-setup/domain-layout-template.md +23 -0
- package/template/workflows/specdev/I-init-setup/status-labels-template.md +55 -0
- package/template/workflows/specdev/I-init-setup/status-template.json +7 -0
- package/template/workflows/specdev/I-init-setup/tracking-template.md +10 -0
- package/template/workflows/specdev/INDEX.md +165 -82
- package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +108 -44
- package/template/workflows/specdev/P-goal-plan/completion-control.md +79 -0
- package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +105 -0
- package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +115 -0
- package/template/workflows/specdev/P-goal-plan/planning-modes.md +70 -0
- package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +103 -40
- package/template/workflows/specdev/R-review-architecture/architecture-review-report-template.html +58 -0
- package/template/workflows/specdev/R-review-architecture/architecture-review-template.md +68 -0
- package/template/workflows/specdev/R-review-architecture/proposal-to-ticket.md +11 -0
- package/template/workflows/specdev/S-spec/S-spec.md +103 -49
- package/template/workflows/specdev/S-spec/spec-readiness.md +16 -0
- package/template/workflows/specdev/S-spec/spec-template.md +95 -0
- package/template/workflows/specdev/T-tickets/T-tickets.md +146 -133
- package/template/workflows/specdev/T-tickets/decomposition-rules.md +56 -0
- package/template/workflows/specdev/T-tickets/ticket-readiness.md +45 -0
- package/template/workflows/specdev/T-tickets/ticket-template.md +124 -0
- package/template/workflows/specdev/T-tickets/tickets-map-template.md +52 -50
- package/template/workflows/specdev/T-triage/T-triage.md +32 -63
- package/template/workflows/specdev/T-triage/triage-template.md +29 -0
- package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +88 -155
- package/template/workflows/specdev/W-wayfinder/investigation-ticket-template.md +50 -0
- package/template/workflows/specdev/W-wayfinder/wayfinder-map-template.md +46 -0
- package/template/workflows/specdev/_state/status.json +1 -1
- package/template/workflows/specdev/common/README.md +47 -0
- package/template/workflows/specdev/common/rules/artifact-contract.md +57 -0
- package/template/workflows/specdev/common/rules/code-commenting-rule.md +39 -0
- package/template/workflows/specdev/common/rules/deviation-control.md +43 -0
- package/template/workflows/specdev/common/rules/evidence-and-verification.md +57 -0
- package/template/workflows/specdev/common/rules/path-ownership.md +35 -0
- package/template/workflows/specdev/common/rules/path-reference-contract.md +116 -0
- package/template/workflows/specdev/common/rules/planning-principles.md +57 -0
- package/template/workflows/specdev/common/rules/readiness-and-depth.md +51 -0
- package/template/workflows/specdev/common/schemas/change-status.schema.json +170 -0
- package/template/workflows/specdev/common/schemas/config.schema.json +54 -0
- package/template/workflows/specdev/common/schemas/goal-plan.schema.json +21 -0
- package/template/workflows/specdev/common/schemas/spec.schema.json +16 -0
- package/template/workflows/specdev/common/schemas/status.schema.json +149 -0
- package/template/workflows/specdev/common/schemas/ticket.schema.json +130 -0
- package/template/workflows/specdev/common/schemas/tickets-map.schema.json +14 -0
- package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +28 -0
- package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +30 -0
- package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +16 -0
- package/template/workflows/specdev/common/skills/research/SKILL.md +43 -0
- package/template/workflows/specdev/common/tools/README.md +16 -0
- package/template/workflows/specdev/common/tools/validate-specdev.mjs +1155 -0
- package/template/canonical/canonical-teach.md +0 -301
- package/template/workflows/specdev/A-archive-and-consolidate/archive-rules.md +0 -49
- package/template/workflows/specdev/A-archive-and-consolidate/cleanup-rules.md +0 -80
- package/template/workflows/specdev/A-archive-and-consolidate/consolidation-rules.md +0 -122
- package/template/workflows/specdev/A-archive-and-consolidate/discrimination-guide.md +0 -96
- package/template/workflows/specdev/A-archive-and-consolidate/knowledge-graduation.md +0 -51
- package/template/workflows/specdev/D-diagnose-bugs/cleanup-postmortem.md +0 -37
- package/template/workflows/specdev/D-diagnose-bugs/feedback-loop-techniques.md +0 -84
- package/template/workflows/specdev/D-diagnose-bugs/hypothesis-format.md +0 -46
- package/template/workflows/specdev/D-diagnose-bugs/instrumentation-rules.md +0 -51
- package/template/workflows/specdev/I-init-setup/domain-layout.md +0 -55
- package/template/workflows/specdev/I-init-setup/status-labels.md +0 -53
- package/template/workflows/specdev/I-init-setup/tracking-convention.md +0 -52
- package/template/workflows/specdev/P-goal-plan/execution-sections.md +0 -126
- package/template/workflows/specdev/P-goal-plan/governance-sections.md +0 -103
- package/template/workflows/specdev/P-goal-plan/input-validation.md +0 -94
- package/template/workflows/specdev/P-goal-plan/lead-orchestration-protocol.md +0 -158
- package/template/workflows/specdev/P-goal-plan/quick-reference-table.md +0 -60
- package/template/workflows/specdev/P-goal-plan/vision-sections.md +0 -80
- package/template/workflows/specdev/R-review-architecture/exploration-guide.md +0 -103
- package/template/workflows/specdev/R-review-architecture/html-report-template.md +0 -124
- package/template/workflows/specdev/T-triage/artifact-templates.md +0 -122
- package/template/workflows/specdev/T-triage/intake-rules.md +0 -71
- package/template/workflows/specdev/T-triage/routing-rules.md +0 -70
- package/template/workflows/specdev/T-triage/understanding-rules.md +0 -102
- package/template/workflows/specdev/_state/adr/.gitkeep +0 -0
- package/template/workflows/specdev/_state/context/.gitkeep +0 -0
- package/template/workflows/specdev/_state/research/.gitkeep +0 -0
- package/template/workflows/specdev/common/dev-worktree/SKILL.md +0 -48
- package/template/workflows/specdev/common/dev-worktree/references/create.md +0 -63
- package/template/workflows/specdev/common/dev-worktree/references/finalize.md +0 -102
- package/template/workflows/specdev/common/handoff/SKILL.md +0 -42
- package/template/workflows/specdev/common/neat-freak/SKILL.md +0 -210
- package/template/workflows/specdev/common/neat-freak/references/agent-paths.md +0 -72
- package/template/workflows/specdev/common/neat-freak/references/governance.md +0 -88
- package/template/workflows/specdev/common/neat-freak/references/sync-matrix.md +0 -77
- package/template/workflows/specdev/common/neat-freak/references/verification.md +0 -92
- package/template/workflows/specdev/common/neat-freak/scripts/audit-inventory.sh +0 -106
- package/template/workflows/specdev/common/prototype/LOGIC.md +0 -89
- package/template/workflows/specdev/common/prototype/SKILL.md +0 -78
- package/template/workflows/specdev/common/prototype/UI.md +0 -120
- package/template/workflows/specdev/common/research/SKILL.md +0 -54
- package/template/workflows/specdev/common/resolving-merge-conflicts/SKILL.md +0 -14
- package/template/workflows/specdev/common/scripts/hitl-loop.template.sh +0 -41
- package/template/workflows/specdev/common/triage/AGENT-BRIEF.md +0 -204
- package/template/workflows/specdev/common/triage/OUT-OF-SCOPE.md +0 -104
- package/template/workflows/specdev/common/triage/SKILL.md +0 -112
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
artifact: architecture-review
|
|
3
|
+
change: <YYYY-MM-DD-topic>
|
|
4
|
+
status: draft
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Architecture Review: <范围>
|
|
8
|
+
|
|
9
|
+
- **决策记录:** `<Path>{roots.state}/specdev/changes/{change}/architecture-review.md</Path>`
|
|
10
|
+
- **可视化报告:** `<Path>{roots.state}/specdev/changes/{change}/architecture-review.html</Path>`
|
|
11
|
+
|
|
12
|
+
## 1. 审查压力与范围
|
|
13
|
+
|
|
14
|
+
- 触发目标:
|
|
15
|
+
- 审查入口:
|
|
16
|
+
- 相关行为或 Ticket:
|
|
17
|
+
- 不审查范围:
|
|
18
|
+
- 成功标准:
|
|
19
|
+
|
|
20
|
+
## 2. 当前结构地图
|
|
21
|
+
|
|
22
|
+
### 模块与接口
|
|
23
|
+
|
|
24
|
+
### 数据、控制与错误流
|
|
25
|
+
|
|
26
|
+
### 变化热点与测试接缝
|
|
27
|
+
|
|
28
|
+
## 3. 候选提案
|
|
29
|
+
|
|
30
|
+
### AR-001: <标题>
|
|
31
|
+
|
|
32
|
+
- **机制:** shallow-module / seam-leak / locality / dependency / temporal-coupling / shared-state / migration
|
|
33
|
+
- **严重度:** low / medium / high / critical
|
|
34
|
+
- **证据:** `<Path>project/relative/path</Path>`
|
|
35
|
+
- **问题如何发生:**
|
|
36
|
+
- **用户或工程影响:**
|
|
37
|
+
- **当前 workaround:**
|
|
38
|
+
- **不做后果:**
|
|
39
|
+
|
|
40
|
+
#### 方案 A:保持现状
|
|
41
|
+
|
|
42
|
+
#### 方案 B:推荐最小深层化
|
|
43
|
+
|
|
44
|
+
#### 方案 C:替代方案
|
|
45
|
+
|
|
46
|
+
| 维度 | A | B | C |
|
|
47
|
+
|---|---|---|---|
|
|
48
|
+
| 调用者复杂度 | | | |
|
|
49
|
+
| 接口稳定性 | | | |
|
|
50
|
+
| 迁移与兼容 | | | |
|
|
51
|
+
| 测试与验证 | | | |
|
|
52
|
+
| 回滚 | | | |
|
|
53
|
+
| 事故半径 | | | |
|
|
54
|
+
|
|
55
|
+
- **推荐:**
|
|
56
|
+
- **建议 Planning Depth:** lite / standard / deep
|
|
57
|
+
- **访谈状态:** proposed / accepted / adjusted / deferred / rejected
|
|
58
|
+
- **用户结论:**
|
|
59
|
+
- **ADR 影响:** 无 / `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` 中的 ADR-###
|
|
60
|
+
|
|
61
|
+
## 4. 优先级与依赖
|
|
62
|
+
|
|
63
|
+
| Candidate | Value | Risk Reduction | Cost | Dependency | Decision |
|
|
64
|
+
|---|---|---|---|---|---|
|
|
65
|
+
|
|
66
|
+
## 5. 下一步
|
|
67
|
+
|
|
68
|
+
- 接受项进入 `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>`。
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# 架构提案转 Ticket
|
|
2
|
+
|
|
3
|
+
本规则由 `<Path>{roots.workflows}/specdev/R-review-architecture/R-review-architecture.md</Path>` 在候选被用户接受后加载。
|
|
4
|
+
|
|
5
|
+
- 只有有代码证据、具体收益和用户接受的提案才生成 Ticket。
|
|
6
|
+
- Prefactor Ticket 必须指出解除的后续阻碍、受益 Ticket 或行为,以及独立验证。
|
|
7
|
+
- 修改公共接口、schema、数据或大范围调用方时使用 Deep,并采用 expand → migrate → observe → contract。
|
|
8
|
+
- 架构报告中的项目路径只是审查证据;生成 Ticket 时重新确认当前项目路径和所有权。
|
|
9
|
+
- 不把“清理整个模块”写成单一 Ticket;按可验证安全落点拆分。
|
|
10
|
+
- 任何会改变外部行为或验收合同的提案先修订 `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`。
|
|
11
|
+
- 任何会改变已接受架构决策的提案先更新 `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`。
|
|
@@ -3,91 +3,145 @@ id: specdev/spec
|
|
|
3
3
|
type: workflow-entry
|
|
4
4
|
workflow: specdev
|
|
5
5
|
name: 编写 Spec
|
|
6
|
-
description:
|
|
7
|
-
keywords: [spec,
|
|
6
|
+
description: 综合已知事实、设计决定、诊断与代码现状,产出以外部行为和验收合同为权威的 Ready Spec。
|
|
7
|
+
keywords: [spec, PRD, 用户故事, 验收合同, 接缝, 范围, readiness]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# 编写 Spec
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
本 work 以“综合已有上下文”为主,不启动宽泛访谈。它保留原有的代码库探索、领域词汇、ADR 约束、测试接缝设计和用户确认能力,但将确认限制为真正影响外部行为或验证的高价值问题。
|
|
13
|
+
|
|
14
|
+
Spec 决定“为什么、为谁、系统应表现为何”。它可以锁定影响公共接口、数据、兼容、安全或验收的实现约束,但不写逐文件施工计划。
|
|
15
|
+
|
|
16
|
+
## 输入
|
|
17
|
+
|
|
18
|
+
按存在情况读取:
|
|
19
|
+
|
|
20
|
+
- `<Path>{roots.state}/specdev/changes/{change}/source-issue.md</Path>`
|
|
21
|
+
- `<Path>{roots.state}/specdev/changes/{change}/triage.md</Path>`
|
|
22
|
+
- `<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`
|
|
23
|
+
- `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
|
|
24
|
+
- `<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
|
|
25
|
+
- `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
|
|
26
|
+
- `<Path>{roots.state}/specdev/context/</Path>`
|
|
27
|
+
- `<Path>{roots.state}/specdev/adr/</Path>`
|
|
28
|
+
- 当前代码、测试、接口、schema、配置和运行事实。
|
|
29
|
+
|
|
30
|
+
不存在的可选工件静默跳过,不得把缺失内容当作已确认事实。
|
|
13
31
|
|
|
14
32
|
## 流程
|
|
15
33
|
|
|
16
|
-
### 1.
|
|
34
|
+
### 1. Grounding 与事实探索
|
|
17
35
|
|
|
18
|
-
|
|
36
|
+
1. 汇总用户目标、受众、问题、限制和已有决定;
|
|
37
|
+
2. 只读探索相关代码、测试、配置、schema 和相邻实现;
|
|
38
|
+
3. 使用 `<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>` 与 `<Path>{roots.state}/specdev/context/</Path>` 的术语,不自创冲突名称;
|
|
39
|
+
4. 使用 `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` 与 `<Path>{roots.state}/specdev/adr/</Path>` 的已接受决策;
|
|
40
|
+
5. 按 `<Path>{roots.workflows}/specdev/common/rules/planning-principles.md</Path>` 区分可发现事实、高影响偏好和低影响实现细节;
|
|
41
|
+
6. 按 `<Path>{roots.workflows}/specdev/common/rules/artifact-contract.md</Path>` 处理冲突;
|
|
42
|
+
7. 外部依赖、标准或版本行为不清楚时使用 `<Path>{roots.workflows}/specdev/common/skills/research/SKILL.md</Path>`。
|
|
19
43
|
|
|
20
|
-
|
|
44
|
+
广泛的产品或架构取舍仍未确定时,返回 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`;不要在 Spec 中用猜测补齐。
|
|
21
45
|
|
|
22
|
-
|
|
46
|
+
### 2. 定义问题、用户和成功
|
|
23
47
|
|
|
24
|
-
|
|
48
|
+
从用户或调用者视角写明:
|
|
25
49
|
|
|
26
|
-
|
|
50
|
+
- 当前问题与影响;
|
|
51
|
+
- 目标用户、调用者或运营角色;
|
|
52
|
+
- 主要场景和现有痛点;
|
|
53
|
+
- 成功状态与可观察结果;
|
|
54
|
+
- 明确非目标。
|
|
27
55
|
|
|
28
|
-
|
|
56
|
+
目标不能只写“新增模块”“修改接口”或“完成 Ticket”。
|
|
29
57
|
|
|
30
|
-
###
|
|
58
|
+
### 3. 定义外部行为与范围
|
|
31
59
|
|
|
32
|
-
|
|
60
|
+
写明:
|
|
33
61
|
|
|
34
|
-
|
|
62
|
+
- 解决方案摘要;
|
|
63
|
+
- 正常路径;
|
|
64
|
+
- 边界和失败路径;
|
|
65
|
+
- 稳定错误行为;
|
|
66
|
+
- 状态转换和不变量;
|
|
67
|
+
- IN、REUSE、OUT;
|
|
68
|
+
- 需要保持的既有行为;
|
|
69
|
+
- 公共接口、数据、安全、迁移和运维影响。
|
|
35
70
|
|
|
36
|
-
|
|
37
|
-
- 使用尽可能高层的接缝。UI 测试 > API 测试 > 单元测试,按此优先级选择。
|
|
38
|
-
- 如果需要新接缝,在尽可能高的层级提出。代码库中的接缝越少越好 —— 理想数量是 1 个。
|
|
39
|
-
- 每个接缝描述:接缝位置(什么模块/组件)、接缝类型(E2E、API、单元)、何时触发、如何验证。
|
|
71
|
+
局部文件组织、辅助函数和逐行实现不进入 Spec。
|
|
40
72
|
|
|
41
|
-
|
|
42
|
-
- 接缝层级是否合适?(太高可能遗漏细节,太低可能过于脆弱)
|
|
43
|
-
- 是否有遗漏的接缝?
|
|
44
|
-
- 现有接缝是否已足够,无需新增?
|
|
73
|
+
### 4. 设计验证接缝
|
|
45
74
|
|
|
46
|
-
|
|
75
|
+
优先复用现有稳定接缝。通常优先顺序是用户端到端行为、公共 API 或 CLI、事件或集成接缝、稳定单元接缝;实际层级由风险和项目先例决定,不机械追求最高层测试。
|
|
47
76
|
|
|
48
|
-
|
|
77
|
+
每个接缝写明:
|
|
49
78
|
|
|
50
|
-
|
|
79
|
+
- 入口位置和类型;
|
|
80
|
+
- 触发方式;
|
|
81
|
+
- 可观察结果;
|
|
82
|
+
- 覆盖哪些验收合同;
|
|
83
|
+
- 现有测试先例或命令。
|
|
51
84
|
|
|
52
|
-
|
|
85
|
+
若接缝选择会显著改变可测试性、事故半径或实现范围,向用户做一次聚焦确认;接缝可由代码和已有测试明确推导时,直接采用并记录依据,不为形式提问。
|
|
53
86
|
|
|
54
|
-
|
|
87
|
+
证据规则见 `<Path>{roots.workflows}/specdev/common/rules/evidence-and-verification.md</Path>`。
|
|
55
88
|
|
|
56
|
-
|
|
89
|
+
### 5. 编写 Spec
|
|
57
90
|
|
|
58
|
-
|
|
91
|
+
使用 `<Path>{roots.workflows}/specdev/S-spec/spec-template.md</Path>` 写入 `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`。
|
|
59
92
|
|
|
60
|
-
|
|
93
|
+
稳定编号:
|
|
61
94
|
|
|
62
|
-
|
|
95
|
+
- `US-###`:用户故事;
|
|
96
|
+
- `AC-###`:验收合同;
|
|
97
|
+
- `NFR-###`:非功能要求;
|
|
98
|
+
- `DEC-###`:已锁定实现约束;
|
|
99
|
+
- `OOS-###`:明确超出范围。
|
|
63
100
|
|
|
64
|
-
|
|
65
|
-
- 主要流程(happy path)—— 用户最常走的路径
|
|
66
|
-
- 边界情况 —— 空数据、极限值、并发操作
|
|
67
|
-
- 错误处理 —— 用户犯错时发生什么
|
|
68
|
-
- 权限与角色 —— 不同角色的不同体验
|
|
69
|
-
- 状态转换 —— 数据从创建到归档的每个状态变化
|
|
101
|
+
不得虚构错误码、性能阈值、schema、迁移政策、法规或合规要求。项目代码证据使用项目相对 Path 标签。
|
|
70
102
|
|
|
71
|
-
|
|
103
|
+
### 6. Readiness Review
|
|
72
104
|
|
|
73
|
-
|
|
105
|
+
加载 `<Path>{roots.workflows}/specdev/S-spec/spec-readiness.md</Path>` 检查 `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`。
|
|
74
106
|
|
|
75
|
-
|
|
107
|
+
任何会改变以下内容的未决问题都会使 `ready_for_tickets: false`:
|
|
76
108
|
|
|
77
|
-
|
|
109
|
+
- 外部行为和范围;
|
|
110
|
+
- 公共接口或数据;
|
|
111
|
+
- 安全、隐私、资金或数据完整性;
|
|
112
|
+
- 兼容、迁移和发布约束;
|
|
113
|
+
- 验收合同或验证接缝。
|
|
78
114
|
|
|
79
|
-
|
|
115
|
+
低影响、可逆实现默认值可以作为显式假设,但必须有验证方式。
|
|
80
116
|
|
|
81
|
-
|
|
117
|
+
### 7. 发布与路由
|
|
82
118
|
|
|
83
|
-
|
|
119
|
+
1. 对照 `<Path>{roots.workflows}/specdev/common/schemas/spec.schema.json</Path>`;
|
|
120
|
+
2. 运行:
|
|
84
121
|
|
|
85
|
-
|
|
122
|
+
```bash
|
|
123
|
+
node <Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path> \
|
|
124
|
+
<Path>{roots.state}/specdev/changes/{change}</Path>
|
|
125
|
+
```
|
|
86
126
|
|
|
87
|
-
|
|
127
|
+
3. 更新 `<Path>{roots.state}/specdev/status.json</Path>` 与 `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>`;
|
|
128
|
+
4. 汇报主要用户故事、验收合同、范围、验证接缝、风险和 Ready 状态;
|
|
129
|
+
5. 返回 `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`、Ready 状态及下一 Work 的完整路径;
|
|
130
|
+
6. 只有用户请求或工作流显式串联时,进入 `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>`。
|
|
131
|
+
|
|
132
|
+
## 完成标准
|
|
88
133
|
|
|
89
|
-
|
|
134
|
+
- `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>` 已按模板写入;
|
|
135
|
+
- 问题、目标用户、外部行为、范围和非目标明确;
|
|
136
|
+
- 用户故事覆盖主要、边界、错误、角色和状态场景;
|
|
137
|
+
- 每个验收合同可观察、可判定并绑定验证接缝;
|
|
138
|
+
- 公共接口、数据、兼容、安全和迁移已决定或明确不适用;
|
|
139
|
+
- 高影响未决问题与 `ready_for_tickets` 一致;
|
|
140
|
+
- 不包含逐文件施工计划;
|
|
141
|
+
- Spec、Ready 状态和下一 Work 路径已返回;
|
|
142
|
+
- 状态和用户摘要已更新。
|
|
143
|
+
|
|
144
|
+
## 子文件引用
|
|
90
145
|
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
- `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` —— 架构决策记录(阅读用)
|
|
146
|
+
- Spec 模板:`<Path>{roots.workflows}/specdev/S-spec/spec-template.md</Path>`
|
|
147
|
+
- Ready 检查:`<Path>{roots.workflows}/specdev/S-spec/spec-readiness.md</Path>`
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Spec Readiness
|
|
2
|
+
|
|
3
|
+
本检查适用于 `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`。
|
|
4
|
+
|
|
5
|
+
- [ ] 问题、目标用户和成功标准从用户或调用者视角可理解。
|
|
6
|
+
- [ ] 主要、边界、错误、角色和状态场景足以生成垂直切片。
|
|
7
|
+
- [ ] 每个用户故事至少被一个验收合同覆盖。
|
|
8
|
+
- [ ] 每个验收合同可观察、可判定且有验证接缝。
|
|
9
|
+
- [ ] IN、REUSE、OUT 无冲突。
|
|
10
|
+
- [ ] 公共接口、数据、兼容、安全、迁移和发布影响已决定或明确不适用。
|
|
11
|
+
- [ ] 已锁定实现约束有来源,没有把偏好伪装成事实。
|
|
12
|
+
- [ ] 高影响未决问题为零。
|
|
13
|
+
- [ ] 低影响假设可逆且有验证方式。
|
|
14
|
+
- [ ] 项目路径引用使用项目相对 Path 标签,内部工件使用完整根变量 Path 标签。
|
|
15
|
+
- [ ] Spec 不包含逐文件施工清单或容易过时的行号承诺。
|
|
16
|
+
- [ ] `ready_for_tickets: true` 与实际内容一致。
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 3
|
|
3
|
+
artifact: spec
|
|
4
|
+
change: <YYYY-MM-DD-topic>
|
|
5
|
+
status: draft
|
|
6
|
+
ready_for_tickets: false
|
|
7
|
+
sources:
|
|
8
|
+
- USER-DECISION:<summary>
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Spec: <标题>
|
|
12
|
+
|
|
13
|
+
- **Spec:** `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
|
|
14
|
+
- **当前 ADR:** `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
|
|
15
|
+
- **当前领域上下文:** `<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
|
|
16
|
+
|
|
17
|
+
## 1. 问题与目标
|
|
18
|
+
|
|
19
|
+
### 问题陈述
|
|
20
|
+
|
|
21
|
+
### 目标用户与场景
|
|
22
|
+
|
|
23
|
+
### 成功标准
|
|
24
|
+
|
|
25
|
+
### 非目标
|
|
26
|
+
|
|
27
|
+
## 2. 解决方案与外部行为
|
|
28
|
+
|
|
29
|
+
### 解决方案摘要
|
|
30
|
+
|
|
31
|
+
### 主要流程
|
|
32
|
+
|
|
33
|
+
### 边界、失败与稳定错误行为
|
|
34
|
+
|
|
35
|
+
### 状态转换与不变量
|
|
36
|
+
|
|
37
|
+
## 3. 用户故事
|
|
38
|
+
|
|
39
|
+
- **US-001**:作为 <角色>,我希望 <能力>,以便 <收益>。
|
|
40
|
+
|
|
41
|
+
## 4. 验收合同
|
|
42
|
+
|
|
43
|
+
| ID | 前置条件 | 动作或事件 | 可观察结果 | 验证接缝 |
|
|
44
|
+
|---|---|---|---|---|
|
|
45
|
+
| AC-001 | ... | ... | ... | ... |
|
|
46
|
+
|
|
47
|
+
## 5. 范围
|
|
48
|
+
|
|
49
|
+
### IN
|
|
50
|
+
|
|
51
|
+
### REUSE
|
|
52
|
+
|
|
53
|
+
### OUT
|
|
54
|
+
|
|
55
|
+
- **OOS-001**:<不做什么及原因>。
|
|
56
|
+
|
|
57
|
+
## 6. 已锁定实现约束
|
|
58
|
+
|
|
59
|
+
- **DEC-001**:<只写影响公共接口、数据、不变量、兼容、安全或验证的决策>。来源:`ADR-###`。
|
|
60
|
+
|
|
61
|
+
## 7. 数据、接口与兼容
|
|
62
|
+
|
|
63
|
+
- **公共接口变化:** 无 / ...
|
|
64
|
+
- **数据模型与持久化:** 无 / ...
|
|
65
|
+
- **兼容要求:** 无 / ...
|
|
66
|
+
- **迁移要求:** 无 / ...
|
|
67
|
+
- **发布或运维影响:** 无 / ...
|
|
68
|
+
|
|
69
|
+
## 8. 非功能要求
|
|
70
|
+
|
|
71
|
+
- **NFR-001 安全与隐私:**
|
|
72
|
+
- **NFR-002 性能与容量:**
|
|
73
|
+
- **NFR-003 可用性与可靠性:**
|
|
74
|
+
- **NFR-004 可观测性与运营:**
|
|
75
|
+
|
|
76
|
+
不适用的维度写“不适用:原因”。
|
|
77
|
+
|
|
78
|
+
## 9. 验证策略
|
|
79
|
+
|
|
80
|
+
| 接缝 | 层级 | 覆盖合同 | 现有先例或命令 | Evidence 类型 |
|
|
81
|
+
|---|---|---|---|---|
|
|
82
|
+
|
|
83
|
+
项目测试先例可引用项目相对路径,例如 `<Path>tests/example.test.ts</Path>`。
|
|
84
|
+
|
|
85
|
+
## 10. 风险、假设与未决问题
|
|
86
|
+
|
|
87
|
+
### 风险
|
|
88
|
+
|
|
89
|
+
### 已采用的低影响假设
|
|
90
|
+
|
|
91
|
+
### 未决问题
|
|
92
|
+
|
|
93
|
+
无。
|
|
94
|
+
|
|
95
|
+
存在高影响未决问题时,`ready_for_tickets` 必须为 `false`。
|