@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.
Files changed (149) hide show
  1. package/README.md +1 -2
  2. package/dist/src/cli.js +40 -6
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/index.js +5 -0
  5. package/dist/src/index.js.map +1 -1
  6. package/dist/src/skills-mirror.d.ts +38 -0
  7. package/dist/src/skills-mirror.js +160 -0
  8. package/dist/src/skills-mirror.js.map +1 -0
  9. package/package.json +3 -2
  10. package/template/canonical/README.md +7 -1
  11. package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +2040 -0
  12. package/template/canonical/canonical-specdev-goal-plan.md +1379 -0
  13. package/template/canonical/canonical-specdev-grill-with-docs.md +848 -285
  14. package/template/canonical/canonical-specdev-spec.md +1061 -46
  15. package/template/canonical/canonical-specdev-tickets.md +1529 -175
  16. package/template/canonical/canonical-specdev-wayfinder.md +677 -107
  17. package/template/commands/git-repository-audit.md +682 -0
  18. package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +69 -36
  19. package/template/workflows/specdev/A-archive-and-consolidate/archive-checklist.md +15 -0
  20. package/template/workflows/specdev/A-archive-and-consolidate/knowledge-promotion-rules.md +32 -0
  21. package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +51 -51
  22. package/template/workflows/specdev/D-diagnose-bugs/diagnosis-template.md +64 -0
  23. package/template/workflows/specdev/E-engineering-cognitive-mentor/E-engineering-cognitive-mentor.md +252 -0
  24. package/template/workflows/specdev/E-engineering-cognitive-mentor/architecture-guidance.md +90 -0
  25. package/template/workflows/specdev/E-engineering-cognitive-mentor/bug-guidance.md +80 -0
  26. package/template/workflows/specdev/E-engineering-cognitive-mentor/codebase-guidance.md +107 -0
  27. package/template/workflows/specdev/E-engineering-cognitive-mentor/comprehension-and-closure.md +95 -0
  28. package/template/workflows/specdev/E-engineering-cognitive-mentor/domain-learning-guidance.md +62 -0
  29. package/template/workflows/specdev/E-engineering-cognitive-mentor/evidence-and-options.md +132 -0
  30. package/template/workflows/specdev/E-engineering-cognitive-mentor/interaction-protocol.md +116 -0
  31. package/template/workflows/specdev/E-engineering-cognitive-mentor/mentor-report-template.md +135 -0
  32. package/template/workflows/specdev/E-engineering-cognitive-mentor/mode-routing.md +47 -0
  33. package/template/workflows/specdev/E-engineering-cognitive-mentor/persistence-and-resume.md +147 -0
  34. package/template/workflows/specdev/E-engineering-cognitive-mentor/requirements-guidance.md +92 -0
  35. package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +100 -30
  36. package/template/workflows/specdev/G-grill-with-docs/adr-format.md +22 -77
  37. package/template/workflows/specdev/G-grill-with-docs/context-format.md +27 -53
  38. package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +6 -82
  39. package/template/workflows/specdev/G-grill-with-docs/grilling-protocol.md +32 -49
  40. package/template/workflows/specdev/G-grill-with-docs/log-format.md +16 -98
  41. package/template/workflows/specdev/I-implement/I-implement.md +168 -52
  42. package/template/workflows/specdev/I-implement/code-review-process.md +10 -76
  43. package/template/workflows/specdev/I-implement/codebase-design-glossary.md +12 -109
  44. package/template/workflows/specdev/I-implement/deepening.md +12 -32
  45. package/template/workflows/specdev/I-implement/design-it-twice.md +6 -41
  46. package/template/workflows/specdev/I-implement/evidence-template.md +69 -0
  47. package/template/workflows/specdev/I-implement/execution-preflight.md +20 -0
  48. package/template/workflows/specdev/I-implement/tdd-examples.md +10 -135
  49. package/template/workflows/specdev/I-implement/tdd-rules.md +12 -28
  50. package/template/workflows/specdev/I-init-setup/I-init-setup.md +81 -86
  51. package/template/workflows/specdev/I-init-setup/change-status-template.json +15 -0
  52. package/template/workflows/specdev/I-init-setup/config-template.json +26 -0
  53. package/template/workflows/specdev/I-init-setup/domain-layout-template.md +23 -0
  54. package/template/workflows/specdev/I-init-setup/status-labels-template.md +55 -0
  55. package/template/workflows/specdev/I-init-setup/status-template.json +7 -0
  56. package/template/workflows/specdev/I-init-setup/tracking-template.md +10 -0
  57. package/template/workflows/specdev/INDEX.md +165 -82
  58. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +108 -44
  59. package/template/workflows/specdev/P-goal-plan/completion-control.md +79 -0
  60. package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +105 -0
  61. package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +115 -0
  62. package/template/workflows/specdev/P-goal-plan/planning-modes.md +70 -0
  63. package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +103 -40
  64. package/template/workflows/specdev/R-review-architecture/architecture-review-report-template.html +58 -0
  65. package/template/workflows/specdev/R-review-architecture/architecture-review-template.md +68 -0
  66. package/template/workflows/specdev/R-review-architecture/proposal-to-ticket.md +11 -0
  67. package/template/workflows/specdev/S-spec/S-spec.md +103 -49
  68. package/template/workflows/specdev/S-spec/spec-readiness.md +16 -0
  69. package/template/workflows/specdev/S-spec/spec-template.md +95 -0
  70. package/template/workflows/specdev/T-tickets/T-tickets.md +146 -133
  71. package/template/workflows/specdev/T-tickets/decomposition-rules.md +56 -0
  72. package/template/workflows/specdev/T-tickets/ticket-readiness.md +45 -0
  73. package/template/workflows/specdev/T-tickets/ticket-template.md +124 -0
  74. package/template/workflows/specdev/T-tickets/tickets-map-template.md +52 -50
  75. package/template/workflows/specdev/T-triage/T-triage.md +32 -63
  76. package/template/workflows/specdev/T-triage/triage-template.md +29 -0
  77. package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +88 -155
  78. package/template/workflows/specdev/W-wayfinder/investigation-ticket-template.md +50 -0
  79. package/template/workflows/specdev/W-wayfinder/wayfinder-map-template.md +46 -0
  80. package/template/workflows/specdev/_state/status.json +1 -1
  81. package/template/workflows/specdev/common/README.md +47 -0
  82. package/template/workflows/specdev/common/rules/artifact-contract.md +57 -0
  83. package/template/workflows/specdev/common/rules/code-commenting-rule.md +39 -0
  84. package/template/workflows/specdev/common/rules/deviation-control.md +43 -0
  85. package/template/workflows/specdev/common/rules/evidence-and-verification.md +57 -0
  86. package/template/workflows/specdev/common/rules/path-ownership.md +35 -0
  87. package/template/workflows/specdev/common/rules/path-reference-contract.md +116 -0
  88. package/template/workflows/specdev/common/rules/planning-principles.md +57 -0
  89. package/template/workflows/specdev/common/rules/readiness-and-depth.md +51 -0
  90. package/template/workflows/specdev/common/schemas/change-status.schema.json +170 -0
  91. package/template/workflows/specdev/common/schemas/config.schema.json +54 -0
  92. package/template/workflows/specdev/common/schemas/goal-plan.schema.json +21 -0
  93. package/template/workflows/specdev/common/schemas/spec.schema.json +16 -0
  94. package/template/workflows/specdev/common/schemas/status.schema.json +149 -0
  95. package/template/workflows/specdev/common/schemas/ticket.schema.json +130 -0
  96. package/template/workflows/specdev/common/schemas/tickets-map.schema.json +14 -0
  97. package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +28 -0
  98. package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +30 -0
  99. package/template/workflows/specdev/common/skills/dev-worktree/references/finalize.md +16 -0
  100. package/template/workflows/specdev/common/skills/research/SKILL.md +43 -0
  101. package/template/workflows/specdev/common/tools/README.md +16 -0
  102. package/template/workflows/specdev/common/tools/validate-specdev.mjs +1155 -0
  103. package/template/canonical/canonical-teach.md +0 -301
  104. package/template/workflows/specdev/A-archive-and-consolidate/archive-rules.md +0 -49
  105. package/template/workflows/specdev/A-archive-and-consolidate/cleanup-rules.md +0 -80
  106. package/template/workflows/specdev/A-archive-and-consolidate/consolidation-rules.md +0 -122
  107. package/template/workflows/specdev/A-archive-and-consolidate/discrimination-guide.md +0 -96
  108. package/template/workflows/specdev/A-archive-and-consolidate/knowledge-graduation.md +0 -51
  109. package/template/workflows/specdev/D-diagnose-bugs/cleanup-postmortem.md +0 -37
  110. package/template/workflows/specdev/D-diagnose-bugs/feedback-loop-techniques.md +0 -84
  111. package/template/workflows/specdev/D-diagnose-bugs/hypothesis-format.md +0 -46
  112. package/template/workflows/specdev/D-diagnose-bugs/instrumentation-rules.md +0 -51
  113. package/template/workflows/specdev/I-init-setup/domain-layout.md +0 -55
  114. package/template/workflows/specdev/I-init-setup/status-labels.md +0 -53
  115. package/template/workflows/specdev/I-init-setup/tracking-convention.md +0 -52
  116. package/template/workflows/specdev/P-goal-plan/execution-sections.md +0 -126
  117. package/template/workflows/specdev/P-goal-plan/governance-sections.md +0 -103
  118. package/template/workflows/specdev/P-goal-plan/input-validation.md +0 -94
  119. package/template/workflows/specdev/P-goal-plan/lead-orchestration-protocol.md +0 -158
  120. package/template/workflows/specdev/P-goal-plan/quick-reference-table.md +0 -60
  121. package/template/workflows/specdev/P-goal-plan/vision-sections.md +0 -80
  122. package/template/workflows/specdev/R-review-architecture/exploration-guide.md +0 -103
  123. package/template/workflows/specdev/R-review-architecture/html-report-template.md +0 -124
  124. package/template/workflows/specdev/T-triage/artifact-templates.md +0 -122
  125. package/template/workflows/specdev/T-triage/intake-rules.md +0 -71
  126. package/template/workflows/specdev/T-triage/routing-rules.md +0 -70
  127. package/template/workflows/specdev/T-triage/understanding-rules.md +0 -102
  128. package/template/workflows/specdev/_state/adr/.gitkeep +0 -0
  129. package/template/workflows/specdev/_state/context/.gitkeep +0 -0
  130. package/template/workflows/specdev/_state/research/.gitkeep +0 -0
  131. package/template/workflows/specdev/common/dev-worktree/SKILL.md +0 -48
  132. package/template/workflows/specdev/common/dev-worktree/references/create.md +0 -63
  133. package/template/workflows/specdev/common/dev-worktree/references/finalize.md +0 -102
  134. package/template/workflows/specdev/common/handoff/SKILL.md +0 -42
  135. package/template/workflows/specdev/common/neat-freak/SKILL.md +0 -210
  136. package/template/workflows/specdev/common/neat-freak/references/agent-paths.md +0 -72
  137. package/template/workflows/specdev/common/neat-freak/references/governance.md +0 -88
  138. package/template/workflows/specdev/common/neat-freak/references/sync-matrix.md +0 -77
  139. package/template/workflows/specdev/common/neat-freak/references/verification.md +0 -92
  140. package/template/workflows/specdev/common/neat-freak/scripts/audit-inventory.sh +0 -106
  141. package/template/workflows/specdev/common/prototype/LOGIC.md +0 -89
  142. package/template/workflows/specdev/common/prototype/SKILL.md +0 -78
  143. package/template/workflows/specdev/common/prototype/UI.md +0 -120
  144. package/template/workflows/specdev/common/research/SKILL.md +0 -54
  145. package/template/workflows/specdev/common/resolving-merge-conflicts/SKILL.md +0 -14
  146. package/template/workflows/specdev/common/scripts/hitl-loop.template.sh +0 -41
  147. package/template/workflows/specdev/common/triage/AGENT-BRIEF.md +0 -204
  148. package/template/workflows/specdev/common/triage/OUT-OF-SCOPE.md +0 -104
  149. package/template/workflows/specdev/common/triage/SKILL.md +0 -112
@@ -0,0 +1,79 @@
1
+ # Goal Plan 完成、证据与恢复控制
2
+
3
+ ## 1. Outcome and Authority
4
+
5
+ Goal Plan 用紧凑摘要表达:
6
+
7
+ - 业务或用户目标;
8
+ - 目标受众或运营角色;
9
+ - 所有计划 Ticket 完成后的可观察终态;
10
+ - 关键约束;
11
+ - 明确非目标;
12
+ - 权威来源和冲突规则。
13
+
14
+ 不复制 `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>` 的完整用户故事。
15
+
16
+ ## 2. 整体 Definition of Done
17
+
18
+ 整体完成至少覆盖:
19
+
20
+ - 所有计划内 Ticket 完成,cancelled 或 deferred 项有批准;
21
+ - 所有 Spec 验收合同和外部符合性要求有 Evidence;
22
+ - 项目类型检查、静态检查、测试、lint、构建和适用 CI 完成;仅 UI 交互受影响时由 Lead 完成 E2E;
23
+ - 迁移、兼容、调用点清零、监控、回滚和不可逆批准完成;
24
+ - 无未批准偏差和未处置高风险残余问题;
25
+ - Ticket、Map、Goal Plan、Evidence 和状态一致。
26
+
27
+ ## 3. Gate 关闭仪式
28
+
29
+ 每个 Gate 关闭时:
30
+
31
+ 1. 汇总覆盖的 `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`;
32
+ 2. 检查对应合同和参考符合性;
33
+ 3. 检查共享接口、数据、兼容、迁移和调用点;
34
+ 4. 运行里程碑级验证;仅 UI 交互受影响时由 Lead 运行最小 E2E;
35
+ 5. 审查失败分类、偏差、残余风险和恢复能力;
36
+ 6. 获取适用人工批准;
37
+ 7. 同步 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`、`<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>` 和状态工件。
38
+
39
+ ## 4. 不可协商约束
40
+
41
+ 只记录跨多个 Ticket 且不可由实现者改变的规则,例如数据完整性、wire format 兼容、旧协议收缩条件、shared owner、安全要求、发布窗口、回滚演练和批准点。
42
+
43
+ 来源必须指向:
44
+
45
+ - `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`;
46
+ - `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`;
47
+ - 具体 `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`;
48
+ - 外部 Url 标签;
49
+ - `<Path>{roots.state}/specdev/config.json</Path>`。
50
+
51
+ ## 5. 偏差与暂停
52
+
53
+ 偏差等级和处理遵循 `<Path>{roots.workflows}/specdev/common/rules/deviation-control.md</Path>`。
54
+
55
+ 跨 Ticket 偏差还必须明确:
56
+
57
+ - 暂停哪些 Wave 或 Ticket;
58
+ - 哪个 Gate 重新打开;
59
+ - 哪些 Agent 需要重新基线;
60
+ - 哪些 Evidence 失效;
61
+ - 重新开始的条件。
62
+
63
+ ## 6. 风险与恢复
64
+
65
+ 每个高风险项写明:触发信号、事故半径、预防措施、检测方式、恢复动作、owner 和批准点。迁移或发布计划必须给出回滚不可行时的前向恢复方案。
66
+
67
+ ## 7. 进度与决策回报
68
+
69
+ 使用可核验状态,不使用主观百分比:
70
+
71
+ ```text
72
+ WAVE_STATUS wave=<n> ready=<ids> active=<ids> done=<ids> blocked=<ids>
73
+ GATE_STATUS gate=<name> state=open|closed evidence=<paths> risks=<summary>
74
+ TICKET_STATUS id=<id> state=<state> evidence=<path> deviation=<none|id>
75
+ BLOCKER id=<id> owner=<owner> needed=<decision-or-input> impact=<scope>
76
+ DECISION id=<id> owner=<owner> status=pending|approved|rejected impact=<scope>
77
+ ```
78
+
79
+ 具体路径必须以完整 Path 标签 形式填写。
@@ -0,0 +1,105 @@
1
+ ---
2
+ schema_version: 3
3
+ artifact: goal-plan
4
+ change: <YYYY-MM-DD-topic>
5
+ status: draft
6
+ modes: [coordination]
7
+ ready_for_execution: false
8
+ ---
9
+
10
+ # Goal Plan: <标题>
11
+
12
+ - **Goal Plan:** `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`
13
+ - **Spec:** `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
14
+ - **Tickets Map:** `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`
15
+ - **Ticket 目录:** `<Path>{roots.state}/specdev/changes/{change}/ticket/</Path>`
16
+ - **Evidence 目录:** `<Path>{roots.state}/specdev/changes/{change}/evidence/</Path>`
17
+
18
+ ## 1. Outcome and Authority
19
+
20
+ ### Outcome
21
+
22
+ ### Non-goals
23
+
24
+ ### Authoritative Inputs
25
+
26
+ | 优先级 | 来源 | 负责内容 | 冲突处理 |
27
+ |---|---|---|---|
28
+ | 1 | 用户最新明确决定 | 产品取舍与批准 | 更新真正拥有该决策的工件 |
29
+ | 2 | `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` | 已接受架构决策 | 通过新决策替代 |
30
+ | 3 | `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>` | 外部行为、范围与验收 | 下游不得改写 |
31
+ | 4 | `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>` | 单 Ticket 契约 | Goal Plan 只编排 |
32
+ | 5 | 当前代码事实 | 现状与可行性 | 冲突时触发偏差 |
33
+
34
+ ## 2. Execution Graph
35
+
36
+ ### DAG and Critical Path
37
+
38
+ ```text
39
+ ...
40
+ ```
41
+
42
+ ### Waves and Ownership
43
+
44
+ | Wave | Ticket | 前置条件 | 项目写路径 | Shared owner | 集成点 |
45
+ |---|---|---|---|---|---|
46
+
47
+ ### Ticket Quick Reference
48
+
49
+ <!-- Ticket 较多或执行者需要时添加;数据从 Ticket 与 Tickets Map 提取。 -->
50
+
51
+ | ID | Ticket | 行为产出 | Depth/Risk | Dependencies | Wave/Gate | Owner | Evidence |
52
+ |---|---|---|---|---|---|---|---|
53
+ | T-01 | `<Path>{roots.state}/specdev/changes/{change}/ticket/01-<name>.md</Path>` | ... | standard/medium | — | W0/G0 | lead | `<Path>{roots.state}/specdev/changes/{change}/evidence/T-01.md</Path>` |
54
+
55
+ ## 3. Gates and Completion Evidence
56
+
57
+ ### Overall Definition of Done
58
+
59
+ ### Gates
60
+
61
+ | Gate | 开启条件 | 关闭证据 | 阻塞范围 | Owner/批准人 | 失败恢复 |
62
+ |---|---|---|---|---|---|
63
+
64
+ ### Contract and Reference Coverage
65
+
66
+ | 合同或参考要求 | 覆盖 Ticket | 验证接缝 | Evidence | 状态 |
67
+ |---|---|---|---|---|
68
+
69
+ ## 4. Execution and Integration Protocol
70
+
71
+ ### Dispatch Payload
72
+
73
+ 并行写代码时记录统一 `base_sha`,并为每个 Ticket 指定分支、`workspace_ref` 和 worktree owner。
74
+
75
+ ### Ticket Execution
76
+
77
+ 引用 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 和对应 `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`,不复制 Ticket 全文。
78
+
79
+ ### Evidence Return and Integration
80
+
81
+ Worker 将 Ticket 推进到 `review`,返回 Ticket ID 与状态、Evidence 路径、`workspace_ref`、commit 或 PR 引用,以及条件性 Lead E2E;Lead 负责集成、回归和 worktree 收尾。
82
+
83
+ ## 5. Constraints, Risk and Recovery
84
+
85
+ ### Non-negotiable Constraints
86
+
87
+ ### Migration or Release Sequence
88
+
89
+ ### Risks, Monitoring and Recovery
90
+
91
+ ### Deviation Control
92
+
93
+ 遵循 `<Path>{roots.workflows}/specdev/common/rules/deviation-control.md</Path>`。
94
+
95
+ ## 6. Progress and Decisions
96
+
97
+ ### Current Status
98
+
99
+ ### Pending Decisions and Blockers
100
+
101
+ ### Reporting Format
102
+
103
+ ## Assumptions
104
+
105
+ 仅记录低影响、可逆且有验证方式的假设。高影响假设存在时,`ready_for_execution` 必须为 `false`。
@@ -0,0 +1,115 @@
1
+ # Goal Plan 编排协议
2
+
3
+ 本文件定义 DAG、Wave、Gate、路径所有权、Lead/Subagent、worktree、Evidence 返回和集成规则。
4
+
5
+ ## 1. DAG 与关键路径
6
+
7
+ - 依赖权威来自 `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>` frontmatter 的 `blocked_by`;
8
+ - `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>` 是投影,不是第二套依赖真相;
9
+ - 计算根节点、扇出、汇合点、关键路径、共享合同 owner 和最终收缩点;
10
+ - 依赖只表示真实开始条件,不表示偏好、人员交接或“最好先做”;
11
+ - 无法独立保持可验证状态的迁移批次必须有隔离集成策略和最终集成 Gate。
12
+
13
+ ## 2. Wave
14
+
15
+ Wave 内 Ticket 必须同时满足:
16
+
17
+ - `ready: true`;
18
+ - 所有依赖已完成并有 Evidence;
19
+ - 项目写路径不相交;
20
+ - shared path 已由 owner 稳定;
21
+ - 适用 Gate 已打开;
22
+ - 基线和外部合同版本一致。
23
+
24
+ 最大并发从 `<Path>{roots.state}/specdev/config.json</Path>` 读取。并发上限是资源约束,不是强制填满的目标。
25
+
26
+ ## 3. Gate
27
+
28
+ Gate 由可验证状态定义,不用“完成若干 Ticket”作为唯一条件。每个 Gate 必须写明:
29
+
30
+ - 业务或工程状态;
31
+ - 开启条件;
32
+ - 关闭证据;
33
+ - 阻塞范围;
34
+ - owner 与批准人;
35
+ - 失败时恢复动作。
36
+
37
+ 常见 Gate 包括共享合同稳定、首条垂直路径通过、迁移完成、旧调用点归零、发布就绪和观察期结束。名称按项目语义自定义。
38
+
39
+ ## 4. Shared path 与共享合同
40
+
41
+ 规则遵循 `<Path>{roots.workflows}/specdev/common/rules/path-ownership.md</Path>`:
42
+
43
+ 1. 由专用 owner Ticket 或 Lead 修改共享路径;
44
+ 2. 形成可验证稳定基线;
45
+ 3. 下游消费者在新基线上重新运行 preflight;
46
+ 4. 才允许扇出并行;
47
+ 5. 共享契约需要变化时暂停消费者并修订上游,不通过多个 Agent 同时修改解决。
48
+
49
+ ## 5. Expand-contract
50
+
51
+ 标准顺序:
52
+
53
+ 1. **expand**:新旧形式并存,既有调用者继续工作;
54
+ 2. **migrate**:按可独立验证的影响范围分批迁移;
55
+ 3. **observe**:扫描旧调用点、旧数据或旧协议使用量;
56
+ 4. **contract**:收缩条件有证据后删除旧形式;
57
+ 5. **verify**:运行兼容、数据、回归、监控和回滚检查。
58
+
59
+ 收缩不得仅以“所有迁移 Ticket 已完成”为依据。
60
+
61
+ ## 6. Lead/Subagent
62
+
63
+ Lead 负责基线、DAG、Wave、shared owner、Gate、Evidence 汇总和集成;不抢做已派发 Ticket 的实现。
64
+
65
+ 并行写代码且配置允许时,Lead 为每个 Ticket 调用 `<Path>{roots.workflows}/specdev/common/skills/dev-worktree/SKILL.md</Path>`:
66
+
67
+ - 所有并行 Ticket 固定同一 `base_sha`,每个 Ticket 使用独立分支和 `workspace_ref`;
68
+ - Lead 创建、恢复、集成和清理;Worker 只把状态推进到 `review`;
69
+ - 只读调查和顺序执行不为形式创建 worktree。
70
+
71
+ 每个 Agent 的最小读取顺序:
72
+
73
+ 1. `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>`;
74
+ 2. `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`;
75
+ 3. `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` 中适用的 Wave、Gate 和硬约束;
76
+ 4. `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>` 中相关合同;
77
+ 5. `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` 和 `<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>` 中相关条目;
78
+ 6. 项目级 Agent 指令和当前代码事实。
79
+
80
+ 不把完整历史对话、全部 Ticket 或无关研究塞入 Agent 上下文。
81
+
82
+ ## 7. 派单载荷
83
+
84
+ 派单必须包含:
85
+
86
+ - Ticket ID 与 `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`;
87
+ - 基线 SHA、分支和 `workspace_ref`;
88
+ - 项目写、只读和 shared 路径;
89
+ - 已完成依赖及其 Evidence;
90
+ - 合同 ID;
91
+ - 适用 Wave、Gate 和跨 Ticket 约束;
92
+ - 必须执行的验证矩阵;
93
+ - 偏差升级方式和禁止修改事项。
94
+
95
+ ## 8. Evidence 返回与集成
96
+
97
+ Agent 完成或阻塞时:
98
+
99
+ 1. 写入 `<Path>{roots.state}/specdev/changes/{change}/evidence/{ticket-id}.md</Path>`;
100
+ 2. 同步 Ticket、Tickets Map、Goal Plan 和 change 状态;
101
+ 3. 向 Lead 返回 Ticket ID 与状态、Evidence 完整路径、`workspace_ref`、commit 或 PR 引用,以及仅在用户界面交互受影响时由 Lead 执行的待办 E2E。
102
+
103
+ Lead 集成时:
104
+
105
+ 1. 读取 Ticket、Evidence、Goal Plan 和对应代码引用;
106
+ 2. 检查路径授权;
107
+ 3. 复跑定向验证;
108
+ 4. 合并或应用变更;
109
+ 5. 运行受影响回归;
110
+ 6. 仅当用户界面交互受影响时,由 Lead 运行最小 E2E;
111
+ 7. 按 dev-worktree Skill 更新或清理 worktree;
112
+ 8. 同步 Ticket、Map、Evidence 和 Goal Plan;
113
+ 9. 检查 Gate 是否可关闭。
114
+
115
+ 逻辑冲突返回契约和 owner 解决,不机械选择某一侧版本。
@@ -0,0 +1,70 @@
1
+ # Goal Plan 规划模式与输入门禁
2
+
3
+ 本文件由 `<Path>{roots.workflows}/specdev/P-goal-plan/P-goal-plan.md</Path>` 在上游验证和模式选择时加载。
4
+
5
+ ## 1. 必需输入门禁
6
+
7
+ - [ ] `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>` 设置 `ready_for_tickets: true`,或存在用户明确批准的等价权威目标。
8
+ - [ ] `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>` 与全部 Ticket 一致。
9
+ - [ ] 所有计划执行的 Ticket 设置 `ready: true`。
10
+ - [ ] Ticket ID、具体 `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>` 和 Map 行一致。
11
+ - [ ] `blocked_by` 引用存在,DAG 无环。
12
+ - [ ] Spec 验收合同全部 covered,或 deferred 项有批准、原因和后续归属。
13
+ - [ ] 可能并行的 Ticket 项目写路径不相交,或已有 shared owner 与排序方案。
14
+ - [ ] Deep Ticket 具备迁移、兼容、监控、回滚、收缩条件和批准点。
15
+ - [ ] Ticket 与 Spec、ADR、代码事实不存在未处理冲突。
16
+
17
+ ## 2. 硬停止
18
+
19
+ 出现以下任一情况时停止:
20
+
21
+ - 任一计划内 Ticket 未 Ready;
22
+ - DAG 有环、缺失引用或依赖仅代表偏好;
23
+ - 合同 uncovered 且未批准 deferred;
24
+ - 并行候选写路径相交且无 owner 或顺序;
25
+ - Ticket 改写了 Spec 的外部行为、范围或验收;
26
+ - Ticket 与 `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` 的已接受决策冲突;
27
+ - Deep Ticket 缺少关键迁移或恢复信息;
28
+ - 当前代码事实使 Ticket 的核心行为、接口或验证不可执行;
29
+ - 必需外部合同或参考权威不可获得。
30
+
31
+ 按 `<Path>{roots.workflows}/specdev/common/rules/artifact-contract.md</Path>` 和 `<Path>{roots.workflows}/specdev/common/rules/deviation-control.md</Path>` 返回真正拥有该决策的工件。
32
+
33
+ ## 3. 可组合模式
34
+
35
+ ### coordination
36
+
37
+ 适用于多 Wave、扇出/汇合、shared path 或 Lead/Subagent。重点是 DAG、owner、Evidence 返回、集成和状态同步。
38
+
39
+ ### migration
40
+
41
+ 适用于 expand-contract、数据迁移、协议迁移或兼容窗口。重点是扩展、分批迁移、收缩条件、数据核对、监控和回滚。
42
+
43
+ ### high-assurance
44
+
45
+ 适用于安全、隐私、资金、数据完整性、法规或不可逆操作。重点是独立审查、人工批准、Evidence 完整性和失败恢复。
46
+
47
+ ### reference-conformance
48
+
49
+ 适用于外部合同、标准、官方实现或指定兼容行为。重点是来源版本、符合性矩阵和冲突裁决。
50
+
51
+ ### release-coordination
52
+
53
+ 适用于发布窗口、跨团队依赖、部署顺序或运营交接。重点是环境前置条件、Gate、观察期和回退。
54
+
55
+ 模式可以组合。仅有线性低风险 Ticket 时不应为了形式生成重型 Goal Plan。
56
+
57
+ ## 4. 模式摘要
58
+
59
+ 写入 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` 前形成:
60
+
61
+ ```text
62
+ modes=<mode-list>
63
+ tickets=<count>
64
+ critical_path=<ticket-list>
65
+ parallel_capacity=<n>
66
+ shared_owners=<owner-map>
67
+ gates=<gate-list>
68
+ hard_stops=<none-or-list>
69
+ adopted_assumptions=<low-impact-only>
70
+ ```
@@ -3,75 +3,138 @@ id: specdev/review-architecture
3
3
  type: workflow-entry
4
4
  workflow: specdev
5
5
  name: 架构审查
6
- description: 扫描代码仓寻找深层化机会——发现浅模块、接缝泄漏和局部性缺陷,以可视化 HTML 报告呈现候选方案,逐一访谈深化。
7
- keywords: [架构审查, 深化, 模块设计, 接缝, 重构, 可视化]
6
+ description: 扫描与目标相关的代码区域,识别浅模块、接缝泄漏和局部性问题,以可视化报告呈现候选方案,并通过逐项访谈转化为可执行决策。
7
+ keywords: [architecture, review, module depth, seams, locality, HTML, refactor]
8
8
  ---
9
9
 
10
10
  # 架构审查
11
11
 
12
- 主动扫描代码仓发现架构摩擦,将其转化为可操作的深化方案——融合有机探索、可视化报告和访谈打磨。每一步引用内部子文件,不依赖外部 skill。
12
+ work 保留并强化三项核心能力:从真实代码压力识别深层化机会、输出可视化 HTML 审查报告、与用户逐项访谈候选方案。它不以“更优雅”为由制造无目标重构,也不直接修改产品代码。
13
13
 
14
- 在开始之前,读取当前变更的上下文与架构决策:
14
+ ## 输入与产物
15
15
 
16
- - **CONTEXT.md** —— 项目领域术语与概念:`<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
17
- - **ADR.md** —— 架构决策记录:`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
18
- - **永久 ADR** —— 已确认并提升的架构决策:`<Path>{roots.state}/specdev/adr/</Path>`
19
- - **永久 CONTEXT** —— 已确认并提升的领域词汇表:`<Path>{roots.state}/specdev/context/</Path>`
16
+ 按存在情况读取:
20
17
 
21
- 如果当前 change 尚不存在或其下无 CONTEXT.md、ADR.md,静默继续——架构审查常是新变更的起点,change 的创建在步骤 4 用户选定候选后进行。
18
+ - `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
19
+ - `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
20
+ - `<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>`
21
+ - `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`
22
+ - `<Path>{roots.state}/specdev/changes/{change}/ticket/</Path>`
23
+ - `<Path>{roots.state}/specdev/adr/</Path>`
24
+ - `<Path>{roots.state}/specdev/context/</Path>`
25
+ - 当前代码、测试、依赖、近期变更和缺陷事实。
26
+
27
+ 产物:
28
+
29
+ - 决策记录:`<Path>{roots.state}/specdev/changes/{change}/architecture-review.md</Path>`
30
+ - 可视化报告:`<Path>{roots.state}/specdev/changes/{change}/architecture-review.html</Path>`
31
+
32
+ 模板:
33
+
34
+ - `<Path>{roots.workflows}/specdev/R-review-architecture/architecture-review-template.md</Path>`
35
+ - `<Path>{roots.workflows}/specdev/R-review-architecture/architecture-review-report-template.html</Path>`
22
36
 
23
37
  ## 流程
24
38
 
25
- ### 1. 建立基准
39
+ ### 1. 明确审查压力与范围
26
40
 
27
- 读取 `<Path>{roots.workflows}/specdev/I-implement/codebase-design-glossary.md</Path>` 建立架构评估词汇——module、interface、depth、seam、adapter、leverage、locality 八个术语及其原则。读取 `<Path>{roots.workflows}/specdev/I-implement/deepening.md</Path>` 建立依赖分类(进程内/本地可替换/远程但自有/真正外部依赖)和接缝纪律基准。
41
+ 记录触发审查的业务目标、近期变更、缺陷、维护成本、性能或风险,不做无边界全仓巡检。明确:审查入口、相关调用路径、不审查范围和成功标准。
28
42
 
29
- **完成标准**:架构术语、删除测试、接缝纪律和依赖分类已加载;CONTEXT.md 领域术语和 ADR.md 已有决策已理解。
43
+ 用户明确要求全仓架构扫描时,可以扩展范围,但仍按领域、模块或调用链分批,避免在单次上下文中生成无证据的泛化结论。
30
44
 
31
- ### 2. 探索摩擦
45
+ ### 2. 建立当前结构地图
32
46
 
33
- 委托给 `<Path>{roots.workflows}/specdev/R-review-architecture/exploration-guide.md</Path>`。使用 Explore 子 Agent 有机遍历代码仓——不遵循僵化启发式,注意你在何处遇到摩擦:哪些模块是浅层的?哪些接缝存在泄漏?哪里缺乏局部性?哪些部分未经测试或难以测试?对每个可疑点应用删除测试。
47
+ 只读探索目标区域:
34
48
 
35
- 探索中若发现候选方案与已有 ADR 矛盾,仅当摩擦足够真实、值得重新审视 ADR 时才标注——在报告中以警告框清晰标记。
49
+ - 模块及其公共接口;
50
+ - 信息隐藏与调用者负担;
51
+ - 接缝、适配器和依赖类别;
52
+ - 数据、控制和错误流;
53
+ - 时间耦合、共享状态和跨目录跳转;
54
+ - 测试接缝与变更热点;
55
+ - 近期缺陷、重复 workaround 和高频共同修改路径。
36
56
 
37
- **完成标准**:代码仓已遍历,每个摩擦点已记录涉及文件、摩擦类型和删除测试结果。
57
+ 使用:
38
58
 
39
- ### 3. 生成可视化报告
59
+ - `<Path>{roots.workflows}/specdev/I-implement/codebase-design-glossary.md</Path>`
60
+ - `<Path>{roots.workflows}/specdev/I-implement/deepening.md</Path>`
40
61
 
41
- 委托给 `<Path>{roots.workflows}/specdev/R-review-architecture/html-report-template.md</Path>`。将探索发现渲染为自包含 HTML 文件,写入 OS 临时目录(`$TMPDIR` 或 `/tmp`),自动在浏览器中打开。每候选一张卡片:涉及文件、问题、方案、收益、before/after 图表、推荐强度(Strong / Worth exploring / Speculative)。报告结尾附最佳推荐。
62
+ 外部技术或模式不清楚时使用 `<Path>{roots.workflows}/specdev/common/skills/research/SKILL.md</Path>`。
42
63
 
43
- 此时不提出接口。报告打开后询问用户:"你想探索其中哪一个?"
64
+ ### 3. 识别候选深层化机会
44
65
 
45
- **完成标准**:HTML 报告已写入临时目录并已在浏览器中打开;用户已看到候选方案并做出选择。
66
+ 候选至少属于一种机制:
46
67
 
47
- ### 4. 访谈深化循环
68
+ - 浅模块把复杂性推给调用者;
69
+ - 接缝泄漏导致多处了解同一协议或状态;
70
+ - 局部性差导致一个行为修改跨越过多路径;
71
+ - 依赖方向或生命周期不清导致测试与替换困难;
72
+ - 时间耦合、共享状态或错误语义造成事故半径;
73
+ - 缺少真正适配器导致 Mock 代替设计;
74
+ - 宽重构压力需要 expand-contract。
48
75
 
49
- 用户选择候选后,先绑定变更:按 `<Path>{roots.workflows}/specdev/INDEX.md</Path>` 启动协议复用当前活跃 change 或创建新 change(topic 取自候选名);新建时参照 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>` 步骤 1 初始化 `.status.json` 与三文件。
76
+ 每个候选必须有项目路径、调用或测试证据,并说明“不做”的实际后果。没有用户或工程收益、近期变化压力或风险降低的候选直接过滤。
50
77
 
51
- 随后委托 `<Path>{roots.workflows}/specdev/G-grill-with-docs/grilling-protocol.md</Path>` 执行一次一问访谈——沿设计树推进:约束、依赖、深化模块的形状、接缝背后的内容、存留的测试。
78
+ ### 4. 设计替代方案
52
79
 
53
- 访谈中按 grilling-protocol 与 domain-modeling-rules 维护三文件(LOG → CONTEXT → ADR)。
80
+ 每个保留候选至少比较:
54
81
 
55
- 如需探索替代接口,启动 `<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>`。
82
+ - 保持现状;
83
+ - 最小深层化方案;
84
+ - 一个具有实质差异的替代方案。
56
85
 
57
- 用户以负载性理由拒绝候选时,提供 ADR 记录:"要我将其记录为 ADR 吗?这样未来的架构审查不会重新建议它。"访谈共识达成后,移交 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 执行实现。
86
+ 比较调用者复杂度、接口稳定性、迁移、兼容、测试、回滚、路径影响和事故半径。局部接口存在多个可行设计时,可使用 `<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>`。
58
87
 
59
- **完成标准**:change 已绑定(复用或新建);访谈共识已达成;LOG.md/CONTEXT.md/ADR.md 已同步;用户已确认进入实现或记录 ADR 排除候选。
88
+ ### 5. 生成 Markdown 与 HTML 报告
60
89
 
61
- ---
90
+ 使用 `<Path>{roots.workflows}/specdev/R-review-architecture/architecture-review-template.md</Path>` 写入 `<Path>{roots.state}/specdev/changes/{change}/architecture-review.md</Path>`。
62
91
 
63
- ## 子文件引用
92
+ 使用 `<Path>{roots.workflows}/specdev/R-review-architecture/architecture-review-report-template.html</Path>` 写入 `<Path>{roots.state}/specdev/changes/{change}/architecture-review.html</Path>`。HTML 应包含:
93
+
94
+ - 审查范围与结构地图;
95
+ - 候选卡片和严重度;
96
+ - 证据路径;
97
+ - 方案对比;
98
+ - 影响与迁移图;
99
+ - 接受、延后、拒绝状态;
100
+ - 指向 Markdown 决策记录的完整状态路径文本。
101
+
102
+ 不得依赖外部 CDN;报告应可作为单文件本地打开。
103
+
104
+ ### 6. 逐项访谈候选
64
105
 
65
- | 文件 | 内容 | 触发条件 |
66
- |------|------|---------|
67
- | `<Path>{roots.workflows}/specdev/R-review-architecture/exploration-guide.md</Path>` | 摩擦信号清单、删除测试应用规则、接缝评估标准、ADR 冲突检测规则 | 步骤 2「探索摩擦」进入时加载 |
68
- | `<Path>{roots.workflows}/specdev/R-review-architecture/html-report-template.md</Path>` | HTML 脚手架、6 种图表模式、样式指南、报告语言占位符 | 步骤 3「生成可视化报告」进入时加载 |
106
+ 按价值与风险排序,一次只讨论一个候选:
69
107
 
70
- ## 依赖关系
108
+ 1. 说明证据和问题机制;
109
+ 2. 给出推荐方案与理由;
110
+ 3. 展示至少一个替代方案和保持现状的后果;
111
+ 4. 询问用户接受、调整、延后或拒绝;
112
+ 5. 将结论写回 `<Path>{roots.state}/specdev/changes/{change}/architecture-review.md</Path>` 和 `<Path>{roots.state}/specdev/changes/{change}/architecture-review.html</Path>`;
113
+ 6. 架构级决定同步到 `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`,讨论轨迹同步到 `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>`。
114
+
115
+ 不得一次抛出所有问题要求用户批量选择。
116
+
117
+ ### 7. 转化为执行工作
118
+
119
+ 只有被接受且有具体变更压力的提案才进入执行。加载 `<Path>{roots.workflows}/specdev/R-review-architecture/proposal-to-ticket.md</Path>`:
120
+
121
+ - 可独立降低后续实现难度的改进生成 Prefactor Ticket;
122
+ - 常规垂直迁移生成 Standard Ticket;
123
+ - 公共契约、数据、宽迁移或高风险改动生成 Deep Ticket 与 expand-contract;
124
+ - 进入 `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>` 完成正式拆分和 Ready 门禁。
125
+
126
+ ## 完成标准
127
+
128
+ - 审查压力、范围和不审查范围明确;
129
+ - 每个候选有代码事实、行为影响和不做后果;
130
+ - 保留候选有至少两个实质方案与权衡;
131
+ - Markdown 和无外部依赖的 HTML 报告均已生成;
132
+ - 用户已逐项给出接受、调整、延后或拒绝结论;
133
+ - 接受的架构决定已同步到 ADR;
134
+ - 执行建议已转入 Ticket 治理,而不是直接修改代码。
135
+
136
+ ## 子文件引用
71
137
 
72
- - 依赖 `<Path>{roots.workflows}/specdev/I-implement/codebase-design-glossary.md</Path>` 提供架构术语——步骤 1 加载
73
- - 依赖 `<Path>{roots.workflows}/specdev/I-implement/deepening.md</Path>` 提供依赖分类和接缝纪律——步骤 1 加载
74
- - 依赖 `<Path>{roots.workflows}/specdev/G-grill-with-docs/grilling-protocol.md</Path>` 执行访谈——步骤 4 委托
75
- - 依赖 `<Path>{roots.workflows}/specdev/G-grill-with-docs/domain-modeling-rules.md</Path>` 维护三文件——步骤 4 委托
76
- - 依赖 `<Path>{roots.workflows}/specdev/I-implement/design-it-twice.md</Path>` 探索替代接口——步骤 4 按需启动
77
- - 依赖 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 执行实现——步骤 4 共识后移交
138
+ - Markdown 模板:`<Path>{roots.workflows}/specdev/R-review-architecture/architecture-review-template.md</Path>`
139
+ - HTML 模板:`<Path>{roots.workflows}/specdev/R-review-architecture/architecture-review-report-template.html</Path>`
140
+ - 提案转 Ticket:`<Path>{roots.workflows}/specdev/R-review-architecture/proposal-to-ticket.md</Path>`
@@ -0,0 +1,58 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>SpecDev Architecture Review</title>
7
+ <style>
8
+ :root { color-scheme: light dark; font-family: system-ui, sans-serif; }
9
+ body { max-width: 1180px; margin: 0 auto; padding: 32px; line-height: 1.55; }
10
+ header, section { margin-bottom: 28px; }
11
+ .meta, .card { border: 1px solid #8886; border-radius: 12px; padding: 16px; }
12
+ .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; }
13
+ .badge { display: inline-block; border: 1px solid currentColor; border-radius: 999px; padding: 2px 9px; margin-right: 6px; font-size: 0.85rem; }
14
+ table { width: 100%; border-collapse: collapse; }
15
+ th, td { border: 1px solid #8886; padding: 8px; text-align: left; vertical-align: top; }
16
+ code { overflow-wrap: anywhere; }
17
+ path::before { content: "<Path>"; }
18
+ path::after { content: "</Path>"; }
19
+ </style>
20
+ </head>
21
+ <body>
22
+ <header>
23
+ <h1>Architecture Review: &lt;范围&gt;</h1>
24
+ <div class="meta">
25
+ <p>决策记录:<code><Path>{roots.state}/specdev/changes/{change}/architecture-review.md</Path></code></p>
26
+ <p>本报告:<code><Path>{roots.state}/specdev/changes/{change}/architecture-review.html</Path></code></p>
27
+ </div>
28
+ </header>
29
+ <section>
30
+ <h2>审查压力与结构地图</h2>
31
+ <p>&lt;填写触发目标、范围、模块、接口、数据流和变化热点。&gt;</p>
32
+ </section>
33
+ <section>
34
+ <h2>候选提案</h2>
35
+ <div class="grid">
36
+ <article class="card">
37
+ <h3>AR-001 · &lt;标题&gt;</h3>
38
+ <p><span class="badge">severity</span><span class="badge">status</span></p>
39
+ <p><strong>证据:</strong><code><Path>project/relative/path</Path></code></p>
40
+ <p><strong>问题机制:</strong>&lt;...&gt;</p>
41
+ <p><strong>实际影响:</strong>&lt;...&gt;</p>
42
+ <p><strong>推荐:</strong>&lt;...&gt;</p>
43
+ </article>
44
+ </div>
45
+ </section>
46
+ <section>
47
+ <h2>方案对比</h2>
48
+ <table>
49
+ <thead><tr><th>维度</th><th>保持现状</th><th>推荐方案</th><th>替代方案</th></tr></thead>
50
+ <tbody><tr><td>调用者复杂度</td><td></td><td></td><td></td></tr></tbody>
51
+ </table>
52
+ </section>
53
+ <section>
54
+ <h2>决策与下一步</h2>
55
+ <p>&lt;逐项记录 accepted / adjusted / deferred / rejected。&gt;</p>
56
+ </section>
57
+ </body>
58
+ </html>