@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
|
@@ -1,70 +1,72 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
schema_version: 3
|
|
3
|
+
artifact: tickets-map
|
|
4
|
+
change: <YYYY-MM-DD-topic>
|
|
5
|
+
status: draft
|
|
6
|
+
---
|
|
2
7
|
|
|
3
|
-
|
|
8
|
+
# Tickets Map: <工作名称>
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
- **Map:** `<Path>{roots.state}/specdev/changes/{change}/tickets-map.md</Path>`
|
|
11
|
+
- **Spec:** `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
|
|
12
|
+
- **Ticket 目录:** `<Path>{roots.state}/specdev/changes/{change}/ticket/</Path>`
|
|
13
|
+
- **Evidence 目录:** `<Path>{roots.state}/specdev/changes/{change}/evidence/</Path>`
|
|
14
|
+
- **可选 Goal Plan:** `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>`
|
|
6
15
|
|
|
7
|
-
|
|
8
|
-
|------|--------|----------|------|-------------|------|
|
|
9
|
-
| 01 | [ticket-name](./ticket/01-<kebab-title>.md) | 无 | P0 | — | 未开始 |
|
|
10
|
-
| 02 | [ticket-name](./ticket/02-<kebab-title>.md) | 01 | P1 | P1-03 | 未开始 |
|
|
11
|
-
| 10 | [ticket-name](./ticket/10-<kebab-title>.md) | 02, 05 | P2 | — | 未开始 |
|
|
16
|
+
## 1. 目标与拆分策略
|
|
12
17
|
|
|
13
|
-
|
|
14
|
-
> **被阻塞于**列填写阻塞本 ticket 的 ticket 编号(如 `01`、`02, 05`),执行者需自行打开对应 ticket 文件查看其状态。不可仅凭此表判断——始终以对应 ticket 文件中的状态字段为准。
|
|
15
|
-
> **Gate 列**:P0 = 核心基础设施(阻塞所有后续工作)/ P1 = 主要功能切片 / P2 = 增强和边界情况。由 P-goal-plan 填充,T-tickets 阶段留空或标注 `[待标注]`。
|
|
16
|
-
> **Contract ID 列**:如有冻结合同/验收文档,填写本 ticket 覆盖的验收条目 ID(如 `P0-01, P1-03`);无合同则填 `—`。由 P-goal-plan 填充。
|
|
18
|
+
引用主要用户故事、验收合同和架构决策,说明所有 Ticket 共同交付的目标、切片原则、prefactor 和 expand-contract 选择。不要复制整个 Spec。
|
|
17
19
|
|
|
18
|
-
##
|
|
20
|
+
## 2. 执行清单
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
| ID | Ticket | 可观察产出 | Blocked By | Depth | Risk | Ready | Owner | Contract IDs | Wave/Gate | Status |
|
|
23
|
+
|---|---|---|---|---|---|---|---|---|---|---|
|
|
24
|
+
| T-01 | `<Path>{roots.state}/specdev/changes/{change}/ticket/01-<ticket-name>.md</Path>` | ... | — | standard | medium | yes | unassigned | AC-001 | — | ready |
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
- 每行一个 ticket,缩进表示依赖深度
|
|
26
|
-
- → 表示依赖关系(A → B 表示 B 依赖 A)
|
|
27
|
-
- 用注释标注门禁边界:--- P0 gate ---
|
|
28
|
-
- 可立即开始的 ticket 标注 [READY]
|
|
29
|
-
- 扇出点标注 [FAN-OUT: N路并行]
|
|
26
|
+
Ticket frontmatter 是状态、依赖、深度和路径访问契约的权威;本表是同步投影,不得独立修改出另一套真相。
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
01 [READY] → 02 [FAN-OUT: 3路并行]
|
|
33
|
-
├→ 03 [P0]
|
|
34
|
-
├→ 04 [P1]
|
|
35
|
-
└→ 05 [P1]
|
|
36
|
-
--- P0 gate ---
|
|
37
|
-
03 → 06 [P1] → 07 [P2]
|
|
38
|
-
-->
|
|
28
|
+
## 3. 依赖 DAG
|
|
39
29
|
|
|
30
|
+
```text
|
|
31
|
+
T-01 [READY]
|
|
32
|
+
├─→ T-02
|
|
33
|
+
└─→ T-03
|
|
34
|
+
└─→ T-04
|
|
40
35
|
```
|
|
41
|
-
01-<name> ← 无阻塞,可立即开始
|
|
42
|
-
├── 02-<name> ← 阻塞于 01
|
|
43
|
-
└── 03-<name> ← 阻塞于 01
|
|
44
|
-
└── 04-<name> ← 阻塞于 03
|
|
45
|
-
```
|
|
46
36
|
|
|
47
|
-
|
|
37
|
+
每条边必须表示真实开始条件。标记关键汇合点、prefactor、expand、migrate、observe、contract 和集成验证点。
|
|
38
|
+
|
|
39
|
+
## 4. 合同覆盖矩阵
|
|
40
|
+
|
|
41
|
+
| Contract ID | 覆盖 Ticket | 验证接缝 | 状态 | 说明 |
|
|
42
|
+
|---|---|---|---|---|
|
|
43
|
+
| AC-001 | T-01 | ... | covered | ... |
|
|
44
|
+
|
|
45
|
+
`uncovered` 必须修复;`deferred` 必须有用户批准、原因和后续归属。
|
|
48
46
|
|
|
49
|
-
|
|
50
|
-
- 并发 ticket 的 file allowlist 必须互不重叠——两两之间无可写文件交集
|
|
51
|
-
- 共享文件(package.json、lockfile、合同文档、IPC 根导出、领域词汇表)仅由 Lead 修改
|
|
52
|
-
- 共享文件修改后,所有并发子代理需在继续前同步
|
|
47
|
+
## 5. 并行与路径所有权
|
|
53
48
|
|
|
54
|
-
|
|
49
|
+
- 最大并发来自 `<Path>{roots.state}/specdev/config.json</Path>`。
|
|
50
|
+
- shared owner 为 Lead 或专用 Ticket。
|
|
51
|
+
- 项目路径契约以 Ticket frontmatter 为准。
|
|
52
|
+
- 并行写代码的 Ticket 使用独立 worktree;只读调查不需要。
|
|
55
53
|
|
|
56
|
-
|
|
54
|
+
| Ticket A | Ticket B | Writable 交集 | 真实依赖 | 处理 |
|
|
55
|
+
|---|---|---|---|---|
|
|
56
|
+
| T-02 | T-03 | 无 | 否 | 可并行 |
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
- **契约先行**:<跨 ticket 的 schema/API 变更顺序约束>
|
|
60
|
-
- **行号现场核对**:所有文件路径和行号为近似,实施时以现场代码为准。
|
|
58
|
+
## 6. Gate、Wave 与集成点
|
|
61
59
|
|
|
62
|
-
|
|
60
|
+
T-tickets 可以标注候选 Wave 和行为里程碑。需要正式跨 Ticket 编排时,由 `<Path>{roots.workflows}/specdev/P-goal-plan/P-goal-plan.md</Path>` 完成 Gate、Wave、owner、发布与恢复,并把结果投影回本 Map。
|
|
63
61
|
|
|
64
|
-
|
|
62
|
+
## 7. 横切契约与风险
|
|
65
63
|
|
|
66
|
-
|
|
64
|
+
只记录跨多个 Ticket 的数据、安全、兼容、共享接口、迁移、发布和恢复规则。单 Ticket 规则留在具体 `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`。
|
|
67
65
|
|
|
68
|
-
##
|
|
66
|
+
## 8. 同步规则
|
|
69
67
|
|
|
70
|
-
|
|
68
|
+
- Ticket 状态变化后同步执行清单;
|
|
69
|
+
- Ticket ID、路径、依赖或 frontmatter 不一致时,以 Ticket 文件为权威并修复本 Map;
|
|
70
|
+
- Goal Plan 存在时,Wave、Gate 和 owner 以 `<Path>{roots.state}/specdev/changes/{change}/goal-plan.md</Path>` 为编排权威;
|
|
71
|
+
- 依赖、合同覆盖或路径所有权变化后运行 `<Path>{roots.workflows}/specdev/common/tools/validate-specdev.mjs</Path>`;
|
|
72
|
+
- 内部工件不得使用相对 Markdown 链接。
|
|
@@ -2,75 +2,44 @@
|
|
|
2
2
|
id: specdev/triage
|
|
3
3
|
type: workflow-entry
|
|
4
4
|
workflow: specdev
|
|
5
|
-
name:
|
|
6
|
-
description:
|
|
7
|
-
keywords: [
|
|
5
|
+
name: 请求分诊
|
|
6
|
+
description: 完整摄入外部请求,判断问题类型、影响、风险、缺失信息和下一 work,不在分诊阶段过早设计或实现。
|
|
7
|
+
keywords: [triage, 摄入, issue, 风险, 路由]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
#
|
|
10
|
+
# 请求分诊
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
产物路径:`<Path>{roots.state}/specdev/changes/{change}/</Path>`(`{change}` = `<YYYY-MM-DD>-<topic>`)。
|
|
12
|
+
分诊负责保存原始意图、建立 change、识别问题类型与风险,并推荐下一 work。分诊完成不等于实现 Ready。
|
|
15
13
|
|
|
16
14
|
## 流程
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
推荐 status 只记在 `triage.md`。标签字符串可读 `<Path>{roots.state}/specdev/.config/status-labels.md</Path>`(若有),否则用角色名。
|
|
46
|
-
|
|
47
|
-
**完成标准**:两文件已落盘;含类别、推荐 status、行为契约草案与 next work;无残留 `[TODO:]`(`needs-info` 的信息缺口列表除外)。
|
|
48
|
-
|
|
49
|
-
### 5. 路由推荐
|
|
50
|
-
|
|
51
|
-
加载 `<Path>{roots.workflows}/specdev/T-triage/routing-rules.md</Path>`。首匹配恰好一条主推荐(可附一条备选),写入 `triage.md` 并展示 Path 与理由。
|
|
52
|
-
|
|
53
|
-
**完成标准**:主推荐已展示;下游尚未启动。
|
|
54
|
-
|
|
55
|
-
### 6. 停止并交接
|
|
56
|
-
|
|
57
|
-
更新 `<Path>{roots.state}/specdev/status.json</Path>`:`active` 中对应条目的 `current_work = null`;`work_history` 对应条目补 `completed_at`、`result`(无 `artifacts` 字段)。汇报 change、类别、status、next work、产物路径;明确询问是否进入推荐 work。用户确认前保持代码与下游不动。
|
|
58
|
-
|
|
59
|
-
**完成标准**:status 已更新;用户已收到摘要与确认问题;本 work 结束。
|
|
16
|
+
1. **创建或选择 change**:使用 `<Path>{roots.state}/specdev/changes/{change}/</Path>`。
|
|
17
|
+
2. **摄入原文**:完整保存到 `<Path>{roots.state}/specdev/changes/{change}/source-issue.md</Path>`,保留来源、时间、链接和附件引用,不改写原意。
|
|
18
|
+
3. **读取上下文**:按需读取 `<Path>{roots.state}/specdev/context/</Path>`、`<Path>{roots.state}/specdev/adr/</Path>`、当前 change 文档和相关代码事实。
|
|
19
|
+
4. **分类**:bug、feature、refactor、investigation、operations、documentation 或混合;混合请求按主要阻塞问题路由,不强行塞入单类。
|
|
20
|
+
5. **评估**:影响、紧急度、风险、事故半径、安全/数据/兼容/迁移因素和所需人工批准。
|
|
21
|
+
6. **未知项分类**:可发现事实继续探索;无法发现且会改变方案的内容标为 decision-needed;低影响实现细节不阻塞。
|
|
22
|
+
7. **推荐路线**:
|
|
23
|
+
- bug 且根因未知 → `<Path>{roots.workflows}/specdev/D-diagnose-bugs/D-diagnose-bugs.md</Path>`;
|
|
24
|
+
- 需求或架构不清 → `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`;
|
|
25
|
+
- 外部行为已清楚 → `<Path>{roots.workflows}/specdev/S-spec/S-spec.md</Path>`;
|
|
26
|
+
- 小且完全明确、风险低 → `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>` 的 Lite Ticket,或用户批准的 Direct Spec 实现;
|
|
27
|
+
- 路径未知或调查超出单次上下文 → `<Path>{roots.workflows}/specdev/W-wayfinder/W-wayfinder.md</Path>`;
|
|
28
|
+
- 架构质量问题 → `<Path>{roots.workflows}/specdev/R-review-architecture/R-review-architecture.md</Path>`。
|
|
29
|
+
8. **写入结果**:使用 `<Path>{roots.workflows}/specdev/T-triage/triage-template.md</Path>` 写入 `<Path>{roots.state}/specdev/changes/{change}/triage.md</Path>`,更新 `<Path>{roots.state}/specdev/status.json</Path>` 和 `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>`(首次创建时使用 `<Path>{roots.workflows}/specdev/I-init-setup/change-status-template.json</Path>`)。
|
|
30
|
+
|
|
31
|
+
## 就绪门禁
|
|
32
|
+
|
|
33
|
+
只有推荐为“直接实现”,且目标、范围、验证、路径和风险均明确并获用户批准时,才能设置 `ready_for_implementation: true`。其他情况必须为 `false`,并明确下一 work。
|
|
34
|
+
|
|
35
|
+
## 完成标准
|
|
36
|
+
|
|
37
|
+
- 原始请求未被改写或丢失;
|
|
38
|
+
- 问题类型、影响、风险和未知项已区分;
|
|
39
|
+
- 推荐下一 work 有明确理由;
|
|
40
|
+
- 分诊没有夹带实现;
|
|
41
|
+
- 状态已更新。
|
|
60
42
|
|
|
61
43
|
## 子文件引用
|
|
62
44
|
|
|
63
|
-
|
|
64
|
-
|------|------|----------|
|
|
65
|
-
| `<Path>{roots.workflows}/specdev/T-triage/intake-rules.md</Path>` | gh / 粘贴摄入、字段规范化 | 步骤 1 |
|
|
66
|
-
| `<Path>{roots.workflows}/specdev/T-triage/understanding-rules.md</Path>` | 理解清单、冗余与范围外 | 步骤 2 |
|
|
67
|
-
| `<Path>{roots.workflows}/specdev/T-triage/artifact-templates.md</Path>` | 两产物模板 | 步骤 4 |
|
|
68
|
-
| `<Path>{roots.workflows}/specdev/T-triage/routing-rules.md</Path>` | 首匹配路由与话术 | 步骤 5 |
|
|
69
|
-
| `<Path>{roots.workflows}/specdev/common/triage/AGENT-BRIEF.md</Path>` | 行为契约原则 | 步骤 2/4 起草摘要 |
|
|
70
|
-
| `<Path>{roots.workflows}/specdev/common/triage/OUT-OF-SCOPE.md</Path>` | 范围外只读去重 | 步骤 2 扫描时 |
|
|
71
|
-
|
|
72
|
-
## 依赖关系
|
|
73
|
-
|
|
74
|
-
- **上游**:外部 issue(`gh` 或用户);可选永久 adr/context;可选 `.out-of-scope/`
|
|
75
|
-
- **下游**(确认后):`<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`、`<Path>{roots.workflows}/specdev/S-spec/S-spec.md</Path>`、`<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>`、`<Path>{roots.workflows}/specdev/D-diagnose-bugs/D-diagnose-bugs.md</Path>`、`<Path>{roots.workflows}/specdev/W-wayfinder/W-wayfinder.md</Path>`
|
|
76
|
-
- **并列**:`<Path>{roots.workflows}/specdev/common/triage/SKILL.md</Path>` 仍可独立做 tracker 状态机;本 work 只引用其 AGENT-BRIEF / OUT-OF-SCOPE
|
|
45
|
+
- 分诊模板:`<Path>{roots.workflows}/specdev/T-triage/triage-template.md</Path>`
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Triage: <标题>
|
|
2
|
+
|
|
3
|
+
- **Change:** `<change>`
|
|
4
|
+
- **来源工件:** `<Path>{roots.state}/specdev/changes/{change}/source-issue.md</Path>` / 外部输入
|
|
5
|
+
- **类型:** bug / feature / refactor / investigation / operations / documentation
|
|
6
|
+
- **影响:** 用户、系统、数据或交付影响
|
|
7
|
+
- **风险:** low / medium / high / critical
|
|
8
|
+
- **紧急度:** immediate / scheduled / normal / unknown
|
|
9
|
+
- **当前证据:** 已观察事实,不写推测
|
|
10
|
+
- **相关代码/工件:** `<Path>src/example.ts</Path>` / `<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>` / 无
|
|
11
|
+
- **缺失的可发现事实:** 无 / 可通过仓库、日志、测试或配置查明的事实
|
|
12
|
+
- **需要用户决定:** 无 / 只有无法从环境推导且会改变目标、范围或风险承受度的决定
|
|
13
|
+
- **推荐下一 work:** D-diagnose-bugs / G-grill-with-docs / S-spec / W-wayfinder / I-implement / R-review-architecture / A-archive-and-consolidate
|
|
14
|
+
- **推荐理由:** 为什么该 work 是最小且正确的下一步
|
|
15
|
+
- **ready_for_implementation:** false
|
|
16
|
+
|
|
17
|
+
## 路由判定
|
|
18
|
+
|
|
19
|
+
- **Bug 但根因未知:** 进入 D-diagnose-bugs。
|
|
20
|
+
- **需求或设计存在关键未知:** 进入 G-grill-with-docs。
|
|
21
|
+
- **意图清晰但尚无可验收 Spec:** 进入 S-spec。
|
|
22
|
+
- **需要并行调查多个未知:** 进入 W-wayfinder。
|
|
23
|
+
- **已具备 Ready Ticket,或满足受控 Direct Spec:** 进入 I-implement。
|
|
24
|
+
- **目标是结构健康评估而非立即修复:** 进入 R-review-architecture。
|
|
25
|
+
- **目标是关闭、合并或沉淀 change:** 进入 A-archive-and-consolidate。
|
|
26
|
+
|
|
27
|
+
## 输出
|
|
28
|
+
|
|
29
|
+
将结果写入 `<Path>{roots.state}/specdev/changes/{change}/triage.md</Path>`,并同步 `<Path>{roots.state}/specdev/changes/{change}/.status.json</Path>` 的下一阶段和阻塞状态。
|
|
@@ -3,203 +3,136 @@ id: specdev/wayfinder
|
|
|
3
3
|
type: workflow-entry
|
|
4
4
|
workflow: specdev
|
|
5
5
|
name: 寻路
|
|
6
|
-
description:
|
|
7
|
-
keywords: [
|
|
6
|
+
description: 为路径未知、跨域或超出单次上下文的工作建立共享调查地图,通过可领取的研究与决策 Ticket 关闭未知项并收敛到可执行路线。
|
|
7
|
+
keywords: [wayfinder, 调查, research, decision, shared-map, 并行, 未知项]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# 寻路
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Wayfinder 用于“尚不知道怎样安全形成 Spec 或实现路线”的场景。它保留共享地图、多会话领取、研究型 Ticket 和决策型 Ticket 的能力,但禁止把产品实现伪装成调查。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
## 产物
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
- 共享地图:`<Path>{roots.state}/specdev/changes/{change}/wayfinder-map.md</Path>`
|
|
17
|
+
- 调查 Ticket 目录:`<Path>{roots.state}/specdev/changes/{change}/investigation/</Path>`
|
|
18
|
+
- 单个调查 Ticket:`<Path>{roots.state}/specdev/changes/{change}/investigation/{investigation-id}.md</Path>`
|
|
19
|
+
- 调查 Evidence:`<Path>{roots.state}/specdev/changes/{change}/investigation/evidence/</Path>`
|
|
20
|
+
- 全局领取状态:`<Path>{roots.state}/specdev/status.json</Path>` 中当前 change 的 `claimed_investigations`
|
|
17
21
|
|
|
18
|
-
|
|
22
|
+
模板:
|
|
19
23
|
|
|
20
|
-
|
|
24
|
+
- `<Path>{roots.workflows}/specdev/W-wayfinder/investigation-ticket-template.md</Path>`
|
|
25
|
+
- `<Path>{roots.workflows}/specdev/W-wayfinder/wayfinder-map-template.md</Path>`
|
|
21
26
|
|
|
22
|
-
|
|
27
|
+
## 何时运行
|
|
23
28
|
|
|
24
|
-
|
|
29
|
+
- 路径未知,无法安全写出 Ready Spec 或 Ticket;
|
|
30
|
+
- 需要跨多个领域、技术栈或外部系统调查;
|
|
31
|
+
- 调查量超出单个上下文,适合并行研究;
|
|
32
|
+
- 存在多个相互依赖的高影响未知项;
|
|
33
|
+
- 需要在若干候选方案中先获得事实证据再做决定。
|
|
25
34
|
|
|
26
|
-
|
|
35
|
+
若问题只是一个可在当前上下文通过短暂只读探索回答的事实,不创建 Wayfinder Map。
|
|
27
36
|
|
|
28
|
-
|
|
37
|
+
## 流程
|
|
29
38
|
|
|
30
|
-
|
|
39
|
+
### 1. 定义目标与未知项
|
|
31
40
|
|
|
32
|
-
|
|
41
|
+
写明最终目标、已知边界、当前不能决定的事项和“为什么这些未知项阻塞规划”。未知项分为:
|
|
33
42
|
|
|
34
|
-
|
|
43
|
+
- **research**:答案可由代码、文档、实验或外部来源证实;
|
|
44
|
+
- **decision**:事实已足够,但需要用户或架构 owner 做取舍;
|
|
45
|
+
- **validation**:已有方案,需要实验验证关键可行性或风险;
|
|
46
|
+
- **mapping**:需要建立调用链、数据流、依赖图或影响面。
|
|
35
47
|
|
|
36
|
-
|
|
48
|
+
低影响实现细节不创建调查 Ticket。
|
|
37
49
|
|
|
38
|
-
|
|
39
|
-
# 地图:<工作名称>
|
|
50
|
+
### 2. 建立共享地图
|
|
40
51
|
|
|
41
|
-
|
|
52
|
+
使用 `<Path>{roots.workflows}/specdev/W-wayfinder/wayfinder-map-template.md</Path>` 写入 `<Path>{roots.state}/specdev/changes/{change}/wayfinder-map.md</Path>`:
|
|
42
53
|
|
|
43
|
-
|
|
54
|
+
- 每个 Ticket 只关闭一个高影响未知项;
|
|
55
|
+
- 写明依赖、owner、领取状态、停止条件和结果消费方;
|
|
56
|
+
- 构建调查 DAG,避免多个调查重复回答同一问题;
|
|
57
|
+
- 标记可并行调查和必须串行的决策点;
|
|
58
|
+
- 定义整体停止条件,不以“所有可能问题都研究完”为目标。
|
|
44
59
|
|
|
45
|
-
|
|
60
|
+
### 3. 领取与并行
|
|
46
61
|
|
|
47
|
-
|
|
62
|
+
调查者开始前原子地更新 `<Path>{roots.state}/specdev/status.json</Path>` 的 `claimed_investigations`:
|
|
48
63
|
|
|
49
|
-
|
|
64
|
+
- 未领取且依赖满足 → 设置 owner、session 和 claimed 时间;
|
|
65
|
+
- 已领取 → 跳过并选择其他可用 Ticket;
|
|
66
|
+
- 超过配置的 claim 超时且无进展 → 允许在记录原因后回收;
|
|
67
|
+
- 完成或释放后从领取集合移除,并同步共享地图。
|
|
50
68
|
|
|
51
|
-
|
|
69
|
+
并行调查使用独立上下文;不要复制所有调查历史,只读取共享地图、当前调查 Ticket、相关上游工件和必要代码事实。
|
|
52
70
|
|
|
53
|
-
|
|
71
|
+
### 4. 执行调查
|
|
54
72
|
|
|
55
|
-
|
|
73
|
+
调查默认只读。允许:
|
|
56
74
|
|
|
57
|
-
|
|
75
|
+
- 代码搜索与静态分析;
|
|
76
|
+
- 文档、规范和官方来源研究;
|
|
77
|
+
- 可撤销的临时实验、最小原型或插桩;
|
|
78
|
+
- 性能测量、调用点扫描、schema 对比或兼容性验证。
|
|
58
79
|
|
|
59
|
-
|
|
80
|
+
外部研究使用 `<Path>{roots.workflows}/specdev/common/skills/research/SKILL.md</Path>`。
|
|
60
81
|
|
|
61
|
-
|
|
62
|
-
```
|
|
82
|
+
禁止:
|
|
63
83
|
|
|
64
|
-
|
|
84
|
+
- 顺手实现产品功能;
|
|
85
|
+
- 提交未经审查的实验代码;
|
|
86
|
+
- 将原型视为最终架构;
|
|
87
|
+
- 在没有证据时把建议写成事实;
|
|
88
|
+
- 无停止条件地持续研究。
|
|
65
89
|
|
|
66
|
-
|
|
90
|
+
### 5. 记录结果与影响
|
|
67
91
|
|
|
68
|
-
|
|
69
|
-
## <编号>. <Ticket 标题> `[<类型>]` `[<HITL|AFK>]`
|
|
92
|
+
每个调查结果区分:
|
|
70
93
|
|
|
71
|
-
|
|
94
|
+
- 官方或规范事实;
|
|
95
|
+
- 当前代码事实;
|
|
96
|
+
- 实验结果;
|
|
97
|
+
- 推断;
|
|
98
|
+
- 建议;
|
|
99
|
+
- 用户或 owner 决策。
|
|
72
100
|
|
|
73
|
-
|
|
101
|
+
写明来源、版本、置信度、适用范围、反例、仍未知项和对以下工件的影响:
|
|
74
102
|
|
|
75
|
-
|
|
103
|
+
- `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`;
|
|
104
|
+
- `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`;
|
|
105
|
+
- `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`;
|
|
106
|
+
- `<Path>{roots.state}/specdev/changes/{change}/diagnosis.md</Path>`。
|
|
76
107
|
|
|
77
|
-
|
|
108
|
+
调查完成、阻塞或释放时,同步调查 Ticket、调查 Evidence、共享地图和领取状态,并返回 investigation ID、状态及三份工件的完整路径。
|
|
78
109
|
|
|
79
|
-
|
|
110
|
+
状态使用 `open | claimed | confirmed | disproved | decision-needed | unresolved | superseded | cancelled`。
|
|
80
111
|
|
|
81
|
-
|
|
112
|
+
### 6. 收敛与退出
|
|
82
113
|
|
|
83
|
-
|
|
114
|
+
当剩余未知项不再阻止目标、行为、架构、风险或验证决策时停止。根据结果进入:
|
|
84
115
|
|
|
85
|
-
|
|
116
|
+
- 需要产品或架构取舍 → `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`;
|
|
117
|
+
- 外部行为已清楚 → `<Path>{roots.workflows}/specdev/S-spec/S-spec.md</Path>`;
|
|
118
|
+
- Spec 已 Ready 且只是实现拆分未知 → `<Path>{roots.workflows}/specdev/T-tickets/T-tickets.md</Path>`;
|
|
119
|
+
- Bug 根因路径已收敛 → `<Path>{roots.workflows}/specdev/D-diagnose-bugs/D-diagnose-bugs.md</Path>`;
|
|
120
|
+
- 仍存在高影响未知项 → 保持 blocked,并明确下一调查或用户决策。
|
|
86
121
|
|
|
87
|
-
|
|
88
|
-
```
|
|
122
|
+
长期有效且经实现验证的研究,只有在归档时由 `<Path>{roots.workflows}/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md</Path>` 提升。
|
|
89
123
|
|
|
90
|
-
|
|
124
|
+
## 完成标准
|
|
91
125
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
每个 ticket 要么是 **HITL** —— 人在回路中,与一个代表自己发言的人类*一起*工作 —— 要么是 **AFK**,由 agent 独立驱动。HITL ticket 只能通过实时交流来解决;agent 绝不代替人类一方发言(一个自问自答的质询 agent 已经破坏了这一点)。
|
|
101
|
-
|
|
102
|
-
- **Research**(AFK):调用 `<Path>{roots.workflows}/specdev/common/research/SKILL.md</Path>` 启动后台 Agent 针对一手来源调查问题,在 ticket 的答案中链接研究产出文件。当需要当前工作目录之外的知识时使用。
|
|
103
|
-
- **Prototype**(HITL):调用 `<Path>{roots.workflows}/specdev/common/prototype/SKILL.md</Path>` 制作一个廉价、粗糙、具体的产物来提高讨论的保真度 —— 大纲、粗略尝试、桩代码、或 UI/逻辑代码。将原型链接为资产。当"它应该是什么样子"或"它应该怎样表现"是关键问题时使用。
|
|
104
|
-
- **Grilling**(HITL):通过 `<Path>{roots.workflows}/specdev/G-grill-with-docs/grilling-protocol.md</Path>` 访谈协议逐个问题进行对话。同时使用 `<Path>{roots.workflows}/specdev/G-grill-with-docs/domain-modeling-rules.md</Path>` 维护领域模型。默认情况 —— 当不确定类型时选此。
|
|
105
|
-
- **Task**(HITL 或 AFK):在*决策*能够做出之前必须完成的手动工作 —— 没有需要决定、原型化或研究的内容,但讨论被阻塞直到完成。注册服务以便判断其 API、开通访问权限、移动数据以便看到其形态。这是唯一一个*执行*而非决策的类型 —— 它通过为决策解除阻塞来赢得其位置,而非通过交付目标。Agent 在可能的情况下独立驱动(AFK);否则它交给人类一份精确的清单(HITL)。当工作完成时解决;答案记录已完成的工作以及后续 tickets 依赖的任何结果性事实(凭据位置、新 URL、行数)。
|
|
106
|
-
|
|
107
|
-
## 战争迷雾
|
|
108
|
-
|
|
109
|
-
地图是*刻意*不完整的:不要绘制你还看不到的内容。在活跃的 tickets 之外是**战争迷雾** —— 你能感觉到即将到来但尚无法确定的决策和调查的模糊视野,因为它们依赖于尚未解决的问题。解决一个 ticket 会清除它前方的迷雾,将任何现在可以明确的内容升级为新的 tickets —— 逐个进行,直到通往目标的路径清晰且没有剩余 tickets。
|
|
110
|
-
|
|
111
|
-
地图的**尚未明确**章节记录这些模糊视野:待定的问题、后续重新审视的区域。它是朝向目标*方向*的未发现前沿 —— 此处的所有内容都在范围内,只是不够清晰以做成 ticket。根据视野允许的范围,尽可能松散或完整地书写;它同时也是协作者阅读工作方向的路标。
|
|
112
|
-
|
|
113
|
-
**迷雾还是 ticket?** 判断标准是你是否现在就能精确地陈述问题 —— 而不是你现在是否能回答它。
|
|
114
|
-
|
|
115
|
-
- **做成 ticket 当** 问题已经清晰 —— 即使它被阻塞,你尚不能行动。你能写出明确的"问题"段落。
|
|
116
|
-
- **尚未明确当** 你还无法如此精确地表述它。不要将迷雾预先切成 ticket 大小的碎片:它比 ticket 更粗糙,一个补丁可能在当前沿到达时升级为多个 tickets,或零个。
|
|
117
|
-
|
|
118
|
-
**尚未明确**排除已决策的内容(「已做出的决策」)、已有的活跃 ticket 以及超出范围的内容(下一节)。
|
|
119
|
-
|
|
120
|
-
## 超出范围
|
|
121
|
-
|
|
122
|
-
迷雾只会向目标方向*聚集*。目标确定了范围,因此目标之外的工作是**超出范围**的 —— 它不是迷雾,也不属于**尚未明确**。它在地图上拥有自己的**超出范围**章节:你已自觉排除在*此*工作之外的工作。是范围而非清晰度让它落入此处。
|
|
123
|
-
|
|
124
|
-
超出范围的工作永不升级 —— 前沿停在目标处 —— 因此只有在目标被重新划定后才会重新考虑,且以一个全新的工作而非恢复旧工作的形式出现。
|
|
125
|
-
|
|
126
|
-
将某物裁定为超出范围是一个范围界定行为,而非路径上的一步。当已有的一个 ticket 被发现位于目标之外 —— 绘制地图时范围划分错误,或因某个解决方案而暴露 —— **关闭它**(勾选 checkbox),并在**超出范围**章节留下一行:概括加上为何超出范围,链接已关闭的 ticket。它不会出现在**已做出的决策**中,该节记录实际走过的路径 —— 范围边界不是路径上的一步。
|
|
127
|
-
|
|
128
|
-
## 调用方式
|
|
129
|
-
|
|
130
|
-
两种模式。无论哪种,**每个会话绝不解决超过一个 ticket。**
|
|
131
|
-
|
|
132
|
-
### 绘制地图
|
|
133
|
-
|
|
134
|
-
用户带着模糊的想法调用。
|
|
135
|
-
|
|
136
|
-
1. **命名目标。** 运行一次 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>` 访谈会话,以确定此地图正在寻路的目标 —— spec、决策或变更。目标确定了范围,因此先确定它。使用 `<Path>{roots.workflows}/specdev/G-grill-with-docs/grilling-protocol.md</Path>` 进行访谈,使用 `<Path>{roots.workflows}/specdev/G-grill-with-docs/domain-modeling-rules.md</Path>` 维护领域模型。
|
|
137
|
-
|
|
138
|
-
**完成标准**:目标已命名,范围边界已确定。
|
|
139
|
-
|
|
140
|
-
2. **绘制前沿。** 再次质询,这次**广度优先**:在整个空间上扩展而非深入任何一条线索,揭示开放的决策和现在可以迈出的第一步。如果此过程没有浮现任何迷雾 —— 通往目标的路径已经清晰,整个旅程足够小到放入一个会话 —— 你不需要地图。停下来询问用户他们希望如何继续。
|
|
141
|
-
|
|
142
|
-
**完成标准**:前沿的开放决策和第一步已浮现;迷雾部分已识别并草拟。
|
|
143
|
-
|
|
144
|
-
3. **创建地图**:写入 `<Path>{roots.state}/specdev/changes/{change}/map.md</Path>`,填写「目的地」和「说明」,「已做出的决策」 为空,迷雾草拟进**尚未明确**。
|
|
145
|
-
|
|
146
|
-
**完成标准**:地图文件已创建,目的地、说明、尚未明确、超出范围均已填写。
|
|
147
|
-
|
|
148
|
-
4. **创建你现在能明确的 tickets** 作为地图文件内的小节 —— 然后在**第二遍**中连接阻塞边(tickets 需要首先有标题才能相互引用)。连接关系将它们排序为前沿和被阻塞;你尚无法明确的都在迷雾中 —— **尚未明确**章节。
|
|
149
|
-
|
|
150
|
-
**完成标准**:所有可明确的 tickets 已创建并连接阻塞边;迷雾已归入尚未明确。
|
|
151
|
-
|
|
152
|
-
5. **停止** —— 绘制地图是一个会话的工作;不要同时解决 tickets。
|
|
153
|
-
|
|
154
|
-
### 遍历地图
|
|
155
|
-
|
|
156
|
-
用户带着一张地图(变更目录或 map.md 路径)调用。Ticket 是**可选的** —— 不提供时,你选择下一个决策,而非用户。
|
|
157
|
-
|
|
158
|
-
1. **加载地图** —— 低分辨率视图(目的地、说明、已做出的决策、尚未明确、超出范围),而非每个 ticket 的完整正文。
|
|
159
|
-
|
|
160
|
-
**完成标准**:地图的低分辨率视图已加载,当前状态已理解。
|
|
161
|
-
|
|
162
|
-
2. **选择 ticket。** 如果用户指定了一个,使用它。否则按顺序选择第一个前沿 ticket。**领取它**(规则见上方「Tickets」节)。
|
|
163
|
-
|
|
164
|
-
**完成标准**:一个前沿 ticket 已被选中并领取。
|
|
165
|
-
|
|
166
|
-
3. **解决它** —— **按需缩放**:按需拉取任何相关或已关闭 ticket 的完整正文;调用「说明」中指定的技能。根据 ticket 类型选择解决方式:**research** 调用 `<Path>{roots.workflows}/specdev/common/research/SKILL.md</Path>`;**grilling** 使用 `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>`;**prototype** 调用 `<Path>{roots.workflows}/specdev/common/prototype/SKILL.md</Path>`;**task** 按问题描述执行。查阅 `<Path>{roots.workflows}/specdev/G-grill-with-docs/domain-modeling-rules.md</Path>` 维护领域模型。
|
|
167
|
-
|
|
168
|
-
**完成标准**:ticket 的问题已解决,答案已记录。
|
|
169
|
-
|
|
170
|
-
4. **记录解决方案:** 在 ticket 的"答案"小节中填写答案,将 checkbox 从 `- [ ]` 改为 `- [x]`,在地图的「已做出的决策」中**追加一条上下文指针**:`- [ticket 标题] —— 答案的一句话概括`。从 `claimed_tickets` 中移除该 ticket(规则见上方「Tickets」节)。
|
|
171
|
-
|
|
172
|
-
**完成标准**:ticket checkbox 已勾选,「已做出的决策」已更新,领取标记已清除。
|
|
173
|
-
|
|
174
|
-
5. **添加新浮现的 tickets** 作为地图文件内新的小节(先创建再连接阻塞边);升级答案使任何变得可明确的迷雾,从**尚未明确**中清除每个已升级的补丁,使其仅以其新 ticket 的形式存在。如果答案揭示某个 ticket —— 这个或其他 —— 位于目标之外,**将其裁定为超出范围**而非在路径上解决它。如果该决策使地图的其他部分无效,更新或删除这些 tickets(勾选并注明无效原因)。
|
|
175
|
-
|
|
176
|
-
**完成标准**:新浮现的 tickets 已添加,迷雾已升级或清除,超出范围的 tickets 已裁定。
|
|
177
|
-
|
|
178
|
-
用户可以并行运行未被阻塞的 tickets,因此需预期其他会话会并发编辑地图文件和 status.json。
|
|
179
|
-
|
|
180
|
-
### 完成
|
|
181
|
-
|
|
182
|
-
当所有 tickets 已关闭(勾选)、迷雾已清空(尚未明确为空或仅剩无法继续分解的模糊项)、且通往目标的路径已清晰时,地图完成。向用户汇报:
|
|
183
|
-
|
|
184
|
-
- 目的地是否已可抵达——路径上的每个步骤是否都已有明确的 ticket 或决策
|
|
185
|
-
- 「已做出的决策」 中的关键结论摘要
|
|
186
|
-
- 剩余的任何**尚未明确**项——它们是否阻碍行动,还是可作为实现细节处理
|
|
187
|
-
- 建议的下一步行动(移交实现、开始执行、或重新划定目标)
|
|
188
|
-
|
|
189
|
-
**完成标准**:前沿已清空——无开放 tickets、无残留迷雾、通往目标的路径清晰。完成汇报已向用户呈现。
|
|
190
|
-
|
|
191
|
-
---
|
|
126
|
+
- 共享地图、调查 Ticket 和领取状态一致;
|
|
127
|
+
- 每个调查只关闭一个高影响未知项;
|
|
128
|
+
- 结论区分事实、实验、推断、建议和决定;
|
|
129
|
+
- 来源、版本、置信度和停止条件可追踪;
|
|
130
|
+
- 并行调查没有重复领取或互相覆盖;
|
|
131
|
+
- 调查状态及 Ticket、Evidence、共享地图路径已返回;
|
|
132
|
+
- 没有把产品实现藏在调查中;
|
|
133
|
+
- 已明确下一 work 或阻塞决策。
|
|
192
134
|
|
|
193
135
|
## 子文件引用
|
|
194
136
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
| 文件 | 触发条件 |
|
|
198
|
-
|------|----------|
|
|
199
|
-
| `<Path>{roots.workflows}/specdev/G-grill-with-docs/G-grill-with-docs.md</Path>` | 需要访谈以命名目标或解决 grilling 类型 ticket |
|
|
200
|
-
| `<Path>{roots.workflows}/specdev/G-grill-with-docs/grilling-protocol.md</Path>` | 进入具体访谈——一次一问,决策树遍历 |
|
|
201
|
-
| `<Path>{roots.workflows}/specdev/G-grill-with-docs/domain-modeling-rules.md</Path>` | 维护领域模型——术语精炼、决策记录 |
|
|
202
|
-
| `<Path>{roots.state}/specdev/changes/{change}/map.md</Path>` | 地图持久化文件 |
|
|
203
|
-
|
|
204
|
-
状态追踪:
|
|
205
|
-
- `<Path>{roots.state}/specdev/status.json</Path>` —— `active` 条目中的 `claimed_tickets` 数组记录当前领取的 ticket
|
|
137
|
+
- 调查 Ticket 模板:`<Path>{roots.workflows}/specdev/W-wayfinder/investigation-ticket-template.md</Path>`
|
|
138
|
+
- 共享地图模板:`<Path>{roots.workflows}/specdev/W-wayfinder/wayfinder-map-template.md</Path>`
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
artifact: investigation-ticket
|
|
3
|
+
id: INV-01
|
|
4
|
+
type: research
|
|
5
|
+
status: open
|
|
6
|
+
blocked_by: []
|
|
7
|
+
owner: unassigned
|
|
8
|
+
claimed_by: null
|
|
9
|
+
claimed_at: null
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Investigation INV-01: <问题>
|
|
13
|
+
|
|
14
|
+
- **调查文件:** `<Path>{roots.state}/specdev/changes/{change}/investigation/INV-01-<name>.md</Path>`
|
|
15
|
+
- **共享地图:** `<Path>{roots.state}/specdev/changes/{change}/wayfinder-map.md</Path>`
|
|
16
|
+
- **Evidence:** `<Path>{roots.state}/specdev/changes/{change}/investigation/evidence/INV-01.md</Path>`
|
|
17
|
+
|
|
18
|
+
## 1. 决策用途
|
|
19
|
+
|
|
20
|
+
- 要回答或决定什么:
|
|
21
|
+
- 为什么阻塞规划:
|
|
22
|
+
- 结果由哪个工件消费:
|
|
23
|
+
|
|
24
|
+
## 2. 已知事实与假设
|
|
25
|
+
|
|
26
|
+
### 已知事实
|
|
27
|
+
|
|
28
|
+
### 待验证假设
|
|
29
|
+
|
|
30
|
+
## 3. 调查契约
|
|
31
|
+
|
|
32
|
+
- **允许的代码探索:** `<Path>project/relative/path/**</Path>`
|
|
33
|
+
- **允许的实验:**
|
|
34
|
+
- **禁止的产品实现:**
|
|
35
|
+
- **来源优先级:**
|
|
36
|
+
- **停止条件:**
|
|
37
|
+
- **时间或资源边界:**
|
|
38
|
+
|
|
39
|
+
## 4. 结果
|
|
40
|
+
|
|
41
|
+
- **状态:** confirmed / disproved / decision-needed / unresolved / superseded
|
|
42
|
+
- **结论:**
|
|
43
|
+
- **证据:**
|
|
44
|
+
- **置信度:** high / medium / low
|
|
45
|
+
- **适用范围与版本:**
|
|
46
|
+
- **反例或限制:**
|
|
47
|
+
- **对 Spec 的影响:** 无 / `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`
|
|
48
|
+
- **对 ADR 的影响:** 无 / `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`
|
|
49
|
+
- **对 Ticket 的影响:** 无 / `<Path>{roots.state}/specdev/changes/{change}/ticket/{ticket-file}.md</Path>`
|
|
50
|
+
- **下一步:**
|