@namewta/speculo 0.2.2 → 0.2.6
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 +11 -15
- package/dist/src/index.js +72 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/migrate.js +8 -8
- package/dist/src/migrate.js.map +1 -1
- package/dist/src/workflows.js +2 -2
- package/dist/src/workflows.js.map +1 -1
- package/package.json +1 -1
- package/template/.speculo/README.md +3 -3
- package/template/AGENTS.md +4 -0
- package/template/CLAUDE.md +3 -0
- package/template/canonical/README.md +114 -0
- package/template/canonical/canonical-domain-modeling.md +289 -0
- package/template/canonical/canonical-skill-example.md +608 -0
- package/template/canonical/canonical-teach.md +296 -0
- package/template/commands/archive-and-consolidate.md +49 -0
- package/template/commands/docs-sync.md +2 -2
- package/template/commands/retro.md +9 -7
- package/template/commands/status.md +2 -2
- package/template/skills/archive-and-consolidate/SKILL.md +179 -0
- package/template/skills/archive-and-consolidate/assets/archive-plan-template.md +34 -0
- package/template/skills/archive-and-consolidate/assets/cleanup-candidate-template.md +69 -0
- package/template/skills/archive-and-consolidate/assets/consolidation-plan-template.md +67 -0
- package/template/skills/archive-and-consolidate/references/archive-rules.md +48 -0
- package/template/skills/archive-and-consolidate/references/cleanup-rules.md +73 -0
- package/template/skills/archive-and-consolidate/references/consolidation-rules.md +70 -0
- package/template/skills/archive-and-consolidate/references/knowledge-graduation.md +50 -0
- package/template/skills/docs-sync/SKILL.md +1 -1
- package/template/skills/docs-sync/references/readme-contract.md +2 -0
- package/template/skills/docs-sync/references/readme-writing-guide.md +294 -0
- package/template/skills/docs-sync/references/workflow-scope-contract.md +3 -3
- package/template/skills/speculo-retro/SKILL.md +1 -1
- package/template/skills/speculo-retro/references/issue-drafting-sop.md +1 -1
- package/template/skills/worktree-isolation/references/merge-and-cleanup.md +2 -2
- package/template/vendor/README.md +3 -3
- package/template/vendor/khazix-skills/neat-freak/SKILL.md +210 -0
- package/template/vendor/khazix-skills/neat-freak/references/agent-paths.md +72 -0
- package/template/vendor/khazix-skills/neat-freak/references/governance.md +88 -0
- package/template/vendor/khazix-skills/neat-freak/references/sync-matrix.md +77 -0
- package/template/vendor/khazix-skills/neat-freak/references/verification.md +92 -0
- package/template/vendor/khazix-skills/neat-freak/scripts/audit-inventory.sh +106 -0
- package/template/workflows/person/INDEX.md +12 -0
- package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +73 -74
- package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +85 -0
- package/template/workflows/specdev/D-diagnose-bugs/cleanup-postmortem.md +37 -0
- package/template/workflows/specdev/D-diagnose-bugs/feedback-loop-techniques.md +84 -0
- package/template/workflows/specdev/D-diagnose-bugs/hypothesis-format.md +46 -0
- package/template/workflows/specdev/D-diagnose-bugs/instrumentation-rules.md +51 -0
- package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +54 -0
- package/template/workflows/specdev/G-grill-with-docs/adr-format.md +77 -0
- package/template/workflows/specdev/G-grill-with-docs/context-format.md +63 -0
- package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +93 -0
- package/template/workflows/specdev/G-grill-with-docs/grilling-protocol.md +54 -0
- package/template/workflows/specdev/G-grill-with-docs/log-format.md +99 -0
- package/template/workflows/specdev/I-implement/I-implement.md +85 -0
- package/template/workflows/specdev/I-implement/code-review-process.md +83 -0
- package/template/workflows/specdev/I-implement/codebase-design-glossary.md +109 -0
- package/template/workflows/specdev/I-implement/deepening.md +37 -0
- package/template/workflows/specdev/I-implement/design-it-twice.md +44 -0
- package/template/workflows/specdev/I-implement/tdd-examples.md +139 -0
- package/template/workflows/specdev/I-implement/tdd-rules.md +31 -0
- package/template/workflows/specdev/I-init-setup/I-init-setup.md +132 -0
- package/template/workflows/specdev/I-init-setup/domain-layout.md +90 -0
- package/template/workflows/specdev/I-init-setup/status-labels.md +54 -0
- package/template/workflows/specdev/I-init-setup/tracking-convention.md +58 -0
- package/template/workflows/specdev/INDEX.md +81 -0
- package/template/workflows/specdev/S-spec/S-spec.md +91 -0
- package/template/workflows/specdev/T-tickets/T-tickets.md +241 -0
- package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +209 -0
- package/template/workflows/specdev/_state/adr/.gitkeep +0 -0
- package/template/workflows/specdev/_state/archive/.gitkeep +0 -0
- package/template/workflows/specdev/_state/changes/.gitkeep +0 -0
- package/template/workflows/specdev/_state/context/.gitkeep +0 -0
- package/template/workflows/{matt-pocock → specdev}/_state/status.json +1 -1
- package/template/commands/finalize.md +0 -37
- package/template/commands/knowledge-prune.md +0 -20
- package/template/skills/change-lifecycle/SKILL.md +0 -25
- package/template/skills/change-lifecycle/assets/completion-summary-template.md +0 -25
- package/template/skills/change-lifecycle/assets/completion-verification-template.md +0 -29
- package/template/skills/change-lifecycle/references/completion-gate.md +0 -19
- package/template/skills/change-lifecycle/references/finalize-archive.md +0 -32
- package/template/skills/knowledge-prune/SKILL.md +0 -29
- package/template/skills/knowledge-prune/references/audit-rules.md +0 -24
- package/template/skills/runtime-context/SKILL.md +0 -54
- package/template/skills/runtime-context/references/path-resolution.md +0 -41
- package/template/workflows/matt-pocock/PERSISTENCE.md +0 -80
- package/template/workflows/matt-pocock/WORKFLOW.md +0 -103
- package/template/workflows/matt-pocock/_state/archive/.gitkeep +0 -1
- package/template/workflows/matt-pocock/_state/changes/.gitkeep +0 -1
- package/template/workflows/matt-pocock/atomic-skills/ask-matt.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/claude-handoff.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/code-review.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/codebase-design.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/diagnosing-bugs.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/domain-modeling.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/grill-me.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/grill-with-docs.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/grilling.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/handoff.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/implement.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/improve-codebase-architecture.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/loop-me.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/prototype.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/research.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/resolving-merge-conflicts.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/setup-matt-pocock-skills.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/tdd.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/teach.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/to-spec.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/to-tickets.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/triage.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/wayfinder.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/wizard.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/writing-beats.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/writing-fragments.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/writing-great-skills.md +0 -21
- package/template/workflows/matt-pocock/atomic-skills/writing-shape.md +0 -20
- package/template/workflows/matt-pocock/routes/architecture.md +0 -24
- package/template/workflows/matt-pocock/routes/diagnose.md +0 -22
- package/template/workflows/matt-pocock/routes/experimental.md +0 -18
- package/template/workflows/matt-pocock/routes/idea-to-delivery.md +0 -63
- package/template/workflows/matt-pocock/routes/merge-conflicts.md +0 -19
- package/template/workflows/matt-pocock/routes/productivity.md +0 -25
- package/template/workflows/matt-pocock/routes/research-prototype.md +0 -20
- package/template/workflows/matt-pocock/routes/review.md +0 -19
- package/template/workflows/matt-pocock/routes/setup.md +0 -42
- package/template/workflows/matt-pocock/routes/triage.md +0 -25
- package/template/workflows/matt-pocock/routes/wayfinder.md +0 -27
- package/template/workflows/person/PERSISTENCE.md +0 -56
- package/template/workflows/person/WORKFLOW.md +0 -50
- package/template/workflows/person/_state/.config/LESSONS.md +0 -3
- package/template/workflows/person/_state/.config/RULES.md +0 -3
- package/template/workflows/person/_state/.config/context/.gitkeep +0 -1
- package/template/workflows/person/_templates/mao-consultation-output-template.md +0 -55
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# 规范执行审计细则
|
|
2
|
+
|
|
3
|
+
核心原则:规则的内容来自现场层级文件,本 reference 只提供提取、核验和处置方法。系统、用户和项目规则的授权边界高于本 skill。
|
|
4
|
+
|
|
5
|
+
## 提取可机械核验约定
|
|
6
|
+
|
|
7
|
+
读实际生效的规则链时,找能够转成检查命令的祈使句,并记录原文出处。
|
|
8
|
+
|
|
9
|
+
| 类别 | 规则句式 | 核验证据 |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| 命名 | “目录必须 kebab-case” | 同级名字清单和例外条款 |
|
|
12
|
+
| 必备文件 | “每个项目必须有 X” | 文件存在性与最小内容 |
|
|
13
|
+
| 同源 | “A 软链/导入 B”“只编辑 B” | `readlink`、realpath、导入、加载诊断 |
|
|
14
|
+
| 安全红线 | “密钥不进代码”“ignore 必须含 X” | tracked files、ignore 规则、secret scanner |
|
|
15
|
+
| 目录纪律 | “根目录不放裸文件” | 根目录 manifest 与白名单 |
|
|
16
|
+
| 声明一致 | “启动命令/URL/服务名必须真实” | package/config、服务或 live probe |
|
|
17
|
+
| 发布流程 | “完整汇报与用户确认先于清场” | knowledge receipt、deploy marker、cleanup candidate、post-report user approval receipt |
|
|
18
|
+
|
|
19
|
+
行为偏好如“结论先行”也要遵守,但不属于结构审计结果,除非存在可验证模板或门禁。
|
|
20
|
+
|
|
21
|
+
## 确定实际规则链
|
|
22
|
+
|
|
23
|
+
不要假设所有平台都从根目录读同一个文件:
|
|
24
|
+
|
|
25
|
+
1. 识别当前 Agent 和 `cwd`。
|
|
26
|
+
2. 从项目根到 `cwd` 查本平台的规则文件、override、fallback 和路径规则。
|
|
27
|
+
3. 再查用户/组织级规则。
|
|
28
|
+
4. 记录加载顺序和覆盖关系;同目录只采用平台实际会加载的文件。
|
|
29
|
+
5. 若项目声明 CLAUDE.md/AGENTS.md 必须同源,再核对软链或导入;没有声明时只报告分叉风险,不擅自规定方向。
|
|
30
|
+
|
|
31
|
+
## 核验范围
|
|
32
|
+
|
|
33
|
+
- **当前项目请求**:审当前项目内容;上级规则和同级名字只读。
|
|
34
|
+
- **跨项目变更**:审实际受影响的 upstream/consumer 文档,先说明扩展依据。
|
|
35
|
+
- **整个 workspace**:用户明确授权后,逐项目做存在性、同源和规则检查;仍按风险决定是否读全文。
|
|
36
|
+
- **全局配置**:默认只读审计死引用、矛盾和加载漂移,不把项目细节写入全局。
|
|
37
|
+
|
|
38
|
+
## 处置等级
|
|
39
|
+
|
|
40
|
+
先服从现场规则;如果现场没有更具体规定,用下面的默认分级。
|
|
41
|
+
|
|
42
|
+
### 可直接修
|
|
43
|
+
|
|
44
|
+
必须同时满足:在请求范围内、安全、可逆、没有外部副作用,并且当前规则授权自动修复。例如:
|
|
45
|
+
|
|
46
|
+
- 现场明确要求的软链/导入缺失;
|
|
47
|
+
- `.gitignore` 缺少规则明文要求的敏感文件模式;
|
|
48
|
+
- 文档里的明显笔误、确认已不存在的死链接;
|
|
49
|
+
- 同一事实的过期摘要,可由当前代码/运行态唯一裁决。
|
|
50
|
+
|
|
51
|
+
### 先报告再决定
|
|
52
|
+
|
|
53
|
+
- 目录或项目重命名、文件/目录删除;
|
|
54
|
+
- 合并内容不同的规则文件且权威无法唯一确定;
|
|
55
|
+
- 规则与稳定实践漂移,但不清楚该改规则还是实践;
|
|
56
|
+
- 修改范围外项目、全局配置或其他人的工作区;
|
|
57
|
+
- 停服、权限/密钥、不可逆迁移、对外消息等现场规则列出的风险动作;
|
|
58
|
+
- 唯一证据在未合并/dirty lane 中,清理会丢失它。
|
|
59
|
+
|
|
60
|
+
### 只读报告
|
|
61
|
+
|
|
62
|
+
- 用户明确限制为“看看/审计/报告”;
|
|
63
|
+
- 发现问题位于请求范围外;
|
|
64
|
+
- 平台生成文件禁止直接修改;
|
|
65
|
+
- 事实无法验证或需要外部系统权限。
|
|
66
|
+
|
|
67
|
+
## 规则本身的质量
|
|
68
|
+
|
|
69
|
+
同时检查:
|
|
70
|
+
|
|
71
|
+
- **死引用**:路径、命令、服务、项目是否存在;跨设备路径拿不准时不能直接删。
|
|
72
|
+
- **矛盾**:上下级规则、override、skill 和实践是否给出互斥要求。
|
|
73
|
+
- **不可执行**:大量“保持整洁/注意安全”但没有判断标准。
|
|
74
|
+
- **重复**:同一红线在全局、项目和 skill 复制,导致未来分叉。
|
|
75
|
+
- **过载**:核心规则被历史叙事挤没;优先删/迁,而不是继续加目录。
|
|
76
|
+
- **无门禁**:同一违规第三次出现,说明散文约束不足。根据现场授权建议或实现 check/hook/test。
|
|
77
|
+
|
|
78
|
+
## 报告要求
|
|
79
|
+
|
|
80
|
+
每条未自动修复的问题必须包含:
|
|
81
|
+
|
|
82
|
+
- 证据和规则出处;
|
|
83
|
+
- 所在范围;
|
|
84
|
+
- 对用户或协作流程的影响;
|
|
85
|
+
- 推荐动作;
|
|
86
|
+
- 为什么本次没有自动执行。
|
|
87
|
+
|
|
88
|
+
不要用“发现 N 个问题”代替判断材料,也不要把范围外问题混进“项目已清洁”的结论。
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# 变更影响矩阵
|
|
2
|
+
|
|
3
|
+
矩阵用于路由,不用于强造固定文件名。先识别项目现有的架构、接入、运维、决策和发布文档,再把对应受众更新到位。
|
|
4
|
+
|
|
5
|
+
## 先删哪些噪音
|
|
6
|
+
|
|
7
|
+
| 反模式 | 默认处理 |
|
|
8
|
+
|---|---|
|
|
9
|
+
| “某日 X 上线,详见 Y”塞在主规则顶部 | 现役约束就地融合;纯历史迁 git/changelog/事故文档 |
|
|
10
|
+
| 主规则抄完整架构、评分公式或数据流 | 留边界和权威文档指针,详细机制回 docs |
|
|
11
|
+
| 多个版本都自称“现役” | 以代码开关、运行态和回退链裁决;历史版显式标回退/退役 |
|
|
12
|
+
| 已完成待办仍列开放项 | 核实后删除或改为当前约束,不保留“已完成”流水账 |
|
|
13
|
+
| 单次事故长篇常驻 memory | 提炼可复用教训;机制进 docs,过程进 incident/git |
|
|
14
|
+
| 多处复制同一规则 | 保留一个权威真身,其他位置放短指针或删除 |
|
|
15
|
+
| “保留作历史”但没有真实读者和用途 | 删除;历史需要用途、权威位置和检索入口 |
|
|
16
|
+
| Agent 会话残留:一次性计划文档、调试脚本、`xxx_old`/`xxx_backup` 副本 | 有效内容并进正式文档;文件列删除候选,经用户确认后才清 |
|
|
17
|
+
|
|
18
|
+
## 代码或运行态变化 → 知识面
|
|
19
|
+
|
|
20
|
+
| 变化 | 要核对的受众面 |
|
|
21
|
+
|---|---|
|
|
22
|
+
| API / 路由 /协议 | 外部接入合同、架构路由、鉴权、示例、consumer 文档、smoke |
|
|
23
|
+
| 环境变量 / provider / model | 示例 env、运行手册、默认值权威、下游配置、成本/回退说明 |
|
|
24
|
+
| schema / 存储字段 | 数据模型、迁移与回滚、派生/缓存、读写边界、测试 |
|
|
25
|
+
| 用户流程 / 权限 /导航 | README/产品说明、架构权限、运营手册、视觉验收 |
|
|
26
|
+
| 评分 /筛选 /聚类 / prompt | 现役算法文档、阈值/开关、回测证据、回退链、展示影响 |
|
|
27
|
+
| 服务 /部署 /CDN /边缘 | 运维手册、服务名、marker、cache、回滚、live acceptance |
|
|
28
|
+
| 后台任务 /告警 | job 文档、调度、失败收口、告警路由、决策面 |
|
|
29
|
+
| 退役 /改名 /下线 | 搜旧 symbol 的非历史引用、consumer、rules、skills 和 memory;保留明确标注的历史证据 |
|
|
30
|
+
| 发布流程 /多 Agent 生命周期 | SOP、合并/部署脚本、知识凭证、清场门禁、workspace audit |
|
|
31
|
+
|
|
32
|
+
## 受众职责
|
|
33
|
+
|
|
34
|
+
新增或改变一个能力时,至少判断四种职责是否存在;不是要求创建四个固定文件:
|
|
35
|
+
|
|
36
|
+
1. **怎么用**:README、API/集成指南、示例。
|
|
37
|
+
2. **怎么工作**:architecture、schema、状态机、设计边界。
|
|
38
|
+
3. **怎么运维**:runbook、环境变量、smoke、回滚、告警。
|
|
39
|
+
4. **当前状态/历史**:产品 changelog、release note、incident 或 git;只有项目规则/用户明确要求才写 changelog。
|
|
40
|
+
|
|
41
|
+
如果同一文档承担多个职责,可以就地更新,不为形式拆文件。
|
|
42
|
+
|
|
43
|
+
## 记忆路由
|
|
44
|
+
|
|
45
|
+
| 记忆类型 | 处理 |
|
|
46
|
+
|---|---|
|
|
47
|
+
| 用户偏好 /反复纠正 | 在平台允许且用户授权时保留短、可执行条目 |
|
|
48
|
+
| 系统机制 | 毕业进权威 docs;memory 只留检索指针 |
|
|
49
|
+
| 决策事件 | 只保留最终结论和仍有效的为什么;过程归 git/changelog |
|
|
50
|
+
| 已完成开放项 | 核实后删,不让它继续冒充计划 |
|
|
51
|
+
| 相对时间 | 当前状态改绝对日期;历史叙事中的自然语言不机械替换 |
|
|
52
|
+
| 重复或冲突 | 用当前代码/运行态裁决;无法裁决就保留冲突并标 pending |
|
|
53
|
+
| 机器生成索引 | 不直接编辑;写规定输入或候选,交给生成流程 |
|
|
54
|
+
| 长期未引用 | 结合权威性和复用价值判断;未引用不是单独删除理由 |
|
|
55
|
+
|
|
56
|
+
## 规则违规 → 动作
|
|
57
|
+
|
|
58
|
+
| 发现 | 动作 |
|
|
59
|
+
|---|---|
|
|
60
|
+
| 现场规则要求同源,但软链/导入缺失 | 在授权范围内补齐并验证 realpath/load |
|
|
61
|
+
| 两份独立规则内容不同 | 能由现场声明唯一裁决则合并;否则待决 |
|
|
62
|
+
| 有可运行代码但缺项目规则 | 默认创建最小规则文件(五要素、精简);工作空间有模板按模板 |
|
|
63
|
+
| ignore 缺安全红线 | 在请求范围和授权内直接补,并验证 tracked secrets |
|
|
64
|
+
| 命名违规、根目录乱放 | 只读报告影响;移动/重命名/删除通常待决 |
|
|
65
|
+
| 规则引用退役路径/命令 | 当前机器唯一确认且无跨设备疑点时清;否则报告 |
|
|
66
|
+
| 同一违规反复出现 | 用 check/hook/test 根治;是否自动实现服从现场授权 |
|
|
67
|
+
|
|
68
|
+
## 跨项目检查
|
|
69
|
+
|
|
70
|
+
以下任一为真,就搜索实际 consumer,而不是只改当前项目:
|
|
71
|
+
|
|
72
|
+
- 共享 API、SDK、域名、认证、schema 或环境变量改变;
|
|
73
|
+
- 部署/边缘层改变了下游可见行为;
|
|
74
|
+
- 公共 skill、脚本或模板被多个项目引用;
|
|
75
|
+
- 当前项目文档明确列出依赖方。
|
|
76
|
+
|
|
77
|
+
只读发现 consumer 不等于获准编辑它。先说明依赖证据和影响,再按任务与工作空间规则行动。
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# 证据层级与发布终态
|
|
2
|
+
|
|
3
|
+
## 风险决定证据深度
|
|
4
|
+
|
|
5
|
+
| 结论 | 最低证据 |
|
|
6
|
+
|---|---|
|
|
7
|
+
| “文档链接有效” | 项目自己的 doc-link/index check 或逐链接存在性 |
|
|
8
|
+
| “规则已同源” | realpath/readlink/import + 平台实际加载顺序 |
|
|
9
|
+
| “代码实现是 X” | 当前目标分支代码、schema、配置与相关测试 |
|
|
10
|
+
| “PR 已完成” | PR state=merged + merge commit;不能推导已部署 |
|
|
11
|
+
| “已部署” | deploy marker/release 指向目标 commit + 服务 active |
|
|
12
|
+
| “用户已看到新版本” | canonical 用户 URL/API 的真实响应,必要时同时比 origin/cache |
|
|
13
|
+
| “可安全清场” | merged + production contains change + knowledge receipt + lane clean + 无唯一未集成文件 |
|
|
14
|
+
| “已获准清场” | 完整结果已向用户汇报 + 用户在该汇报后明确确认可以清场 + 现场要求的确认凭证 |
|
|
15
|
+
| “整个项目干净” | 项目内所有适用事实面 verified;warning、pending 和 out-of-scope 单列 |
|
|
16
|
+
|
|
17
|
+
代码直觉、旧 memory、commit message 和 cache-buster URL 都只能当线索,不能单独证明生产终态。
|
|
18
|
+
|
|
19
|
+
## 真相矩阵
|
|
20
|
+
|
|
21
|
+
对每个发现至少记录:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
topic: <事实主题>
|
|
25
|
+
authority: <当前权威来源>
|
|
26
|
+
code: verified-current | stale | n/a
|
|
27
|
+
runtime: verified-current | stale | unverified | n/a
|
|
28
|
+
docs: verified-current | stale | changed
|
|
29
|
+
rules: verified-current | stale | changed | n/a
|
|
30
|
+
memory: verified-current | stale | generated-read-only | changed | n/a
|
|
31
|
+
action: <做了什么或为什么没做>
|
|
32
|
+
verification: <命令、页面或门禁>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
用户不需要看到完整矩阵,但最终摘要必须保留未闭合状态。
|
|
36
|
+
|
|
37
|
+
## 发布状态机
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
implemented
|
|
41
|
+
-> locally verified
|
|
42
|
+
-> pushed / PR opened
|
|
43
|
+
-> CI + required backtest/visual review passed
|
|
44
|
+
-> merged
|
|
45
|
+
-> deployed
|
|
46
|
+
-> live verified
|
|
47
|
+
-> knowledge closed + receipt recorded
|
|
48
|
+
-> full result reported while evidence is preserved
|
|
49
|
+
-> user explicitly approved cleanup after the report
|
|
50
|
+
-> workspace cleaned
|
|
51
|
+
-> post-cleanup audit passed
|
|
52
|
+
-> cleanup result appended
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
跳过的状态必须有项目规则允许的原因。失败停在哪一格,就按那一格汇报,不能用“基本完成”覆盖。
|
|
56
|
+
|
|
57
|
+
## 缓存和多表面产品
|
|
58
|
+
|
|
59
|
+
当用户可见内容经过 CDN、边缘缓存、搜索索引、异步 worker 或多客户端时,至少识别:
|
|
60
|
+
|
|
61
|
+
- origin 是否为新内容;
|
|
62
|
+
- canonical URL 是否仍为旧缓存;
|
|
63
|
+
- API/页面/通知/RSS 是否共享同一数据出口;
|
|
64
|
+
- deploy marker 是否在所有异步进程真正切换之后才写;
|
|
65
|
+
- cache-buster 是否只是诊断,而非真实用户验收。
|
|
66
|
+
|
|
67
|
+
只验证其中一个表面时,在结论里明确限制范围。
|
|
68
|
+
|
|
69
|
+
## 清场前 gate
|
|
70
|
+
|
|
71
|
+
清场会销毁复盘和用户复核证据,因此顺序固定为:
|
|
72
|
+
|
|
73
|
+
1. 验证目标工作已集成并上线;
|
|
74
|
+
2. 同步 docs/rules/获准记忆;
|
|
75
|
+
3. 记录项目要求的 knowledge closeout receipt;
|
|
76
|
+
4. 预览待删除 worktree/branch/db/artifact;
|
|
77
|
+
5. 检查 dirty 文件和 patch equivalence;
|
|
78
|
+
6. 向用户完整汇报结果并保留上述现场;
|
|
79
|
+
7. 等待用户在看完汇报后明确确认可以清场;
|
|
80
|
+
8. 记录项目要求的用户确认凭证并执行授权的清理;
|
|
81
|
+
9. 重新运行 workspace audit,补充汇报清场结果。
|
|
82
|
+
|
|
83
|
+
用户最初任务中的“收尾并清理”“做完删掉”等预授权不替代第 7 步;确认必须发生在完整汇报之后,因为用户要先看到结果才能判断是否需要保留现场继续复核。
|
|
84
|
+
|
|
85
|
+
目录名、分支年龄和 agent 会话是否关闭都不能证明可删除。
|
|
86
|
+
|
|
87
|
+
## 验证失败时
|
|
88
|
+
|
|
89
|
+
- 同一失败第二次出现,停止盲重试,重新检查假设、环境和命令名。
|
|
90
|
+
- 门禁要求机器可读 metadata 时,补正确留痕并触发新事件;不要用人工确认绕过可修复的格式问题。
|
|
91
|
+
- 失败发生在生产写入前,明确说“尚未影响生产”;发生在切流后,先确认当前 active release 和回滚边界。
|
|
92
|
+
- 任何未验证项保持 `pending`,不要为了摘要好看把它降格成 warning。
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Read-only inventory for neat-freak. Prints metadata and paths only; never reads file contents.
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
usage() {
|
|
7
|
+
echo "usage: $0 <project-root>" >&2
|
|
8
|
+
exit 64
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
[[ $# -eq 1 ]] || usage
|
|
12
|
+
[[ -d "$1" ]] || { echo "[ERR] project root is not a directory: $1" >&2; exit 66; }
|
|
13
|
+
|
|
14
|
+
PROJECT_ROOT="$(cd "$1" && pwd -P)"
|
|
15
|
+
SEEN_RULE_FILES=$'\n'
|
|
16
|
+
|
|
17
|
+
section() {
|
|
18
|
+
printf '\n## %s\n' "$1"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
file_size() {
|
|
22
|
+
local file="$1"
|
|
23
|
+
local lines bytes
|
|
24
|
+
lines="$(wc -l < "$file" | tr -d ' ')"
|
|
25
|
+
bytes="$(wc -c < "$file" | tr -d ' ')"
|
|
26
|
+
printf '%s\tlines=%s\tbytes=%s\n' "$file" "$lines" "$bytes"
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe_rule_file() {
|
|
30
|
+
local file="$1"
|
|
31
|
+
case "$SEEN_RULE_FILES" in
|
|
32
|
+
*$'\n'"$file"$'\n'*) return ;;
|
|
33
|
+
esac
|
|
34
|
+
SEEN_RULE_FILES+="$file"$'\n'
|
|
35
|
+
if [[ -L "$file" ]]; then
|
|
36
|
+
local target state
|
|
37
|
+
target="$(readlink "$file")"
|
|
38
|
+
if [[ -e "$file" ]]; then state="valid"; else state="broken"; fi
|
|
39
|
+
printf '%s\tsymlink=%s\tstate=%s\n' "$file" "$target" "$state"
|
|
40
|
+
elif [[ -f "$file" ]]; then
|
|
41
|
+
file_size "$file"
|
|
42
|
+
fi
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
printf '# neat-freak inventory v2\n'
|
|
46
|
+
printf 'project_root=%s\n' "$PROJECT_ROOT"
|
|
47
|
+
printf 'generated_at=%s\n' "$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
|
|
48
|
+
|
|
49
|
+
section "platform-directories"
|
|
50
|
+
# Common agent home dirs; nonexistent ones are skipped silently.
|
|
51
|
+
for dir in "$HOME/.claude" "$HOME/.codex" "$HOME/.cursor" "$HOME/.gemini" \
|
|
52
|
+
"$HOME/.qoder" "$HOME/.trae" "$HOME/.iflow" "$HOME/.codebuddy"; do
|
|
53
|
+
[[ -d "$dir" ]] && printf '%s\n' "$dir"
|
|
54
|
+
done
|
|
55
|
+
|
|
56
|
+
section "other-agent-rule-artifacts"
|
|
57
|
+
# Platform-specific rule forms at the project root (existence only).
|
|
58
|
+
for rel in .cursorrules .windsurfrules .cursor/rules .qoder .trae .iflow; do
|
|
59
|
+
[[ -e "$PROJECT_ROOT/$rel" ]] && printf '%s\n' "$PROJECT_ROOT/$rel"
|
|
60
|
+
done
|
|
61
|
+
true
|
|
62
|
+
|
|
63
|
+
section "git"
|
|
64
|
+
if git -C "$PROJECT_ROOT" rev-parse --show-toplevel >/dev/null 2>&1; then
|
|
65
|
+
GIT_ROOT="$(git -C "$PROJECT_ROOT" rev-parse --show-toplevel)"
|
|
66
|
+
printf 'git_root=%s\n' "$GIT_ROOT"
|
|
67
|
+
printf 'branch=%s\n' "$(git -C "$PROJECT_ROOT" branch --show-current 2>/dev/null || true)"
|
|
68
|
+
printf 'head=%s\n' "$(git -C "$PROJECT_ROOT" rev-parse HEAD)"
|
|
69
|
+
printf 'status_entries=%s\n' "$(git -C "$PROJECT_ROOT" status --porcelain=v1 | wc -l | tr -d ' ')"
|
|
70
|
+
printf 'worktrees=%s\n' "$(git -C "$PROJECT_ROOT" worktree list --porcelain | awk '$1 == "worktree" {n++} END {print n+0}')"
|
|
71
|
+
else
|
|
72
|
+
printf 'git_root=none\n'
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
section "rule-chain-candidates"
|
|
76
|
+
cursor="$PROJECT_ROOT"
|
|
77
|
+
while :; do
|
|
78
|
+
for rel in AGENTS.override.md AGENTS.md CLAUDE.md CLAUDE.local.md .claude/CLAUDE.md; do
|
|
79
|
+
describe_rule_file "$cursor/$rel"
|
|
80
|
+
done
|
|
81
|
+
[[ "$cursor" == "/" ]] && break
|
|
82
|
+
parent="$(dirname "$cursor")"
|
|
83
|
+
[[ "$parent" == "$cursor" ]] && break
|
|
84
|
+
cursor="$parent"
|
|
85
|
+
done
|
|
86
|
+
for file in \
|
|
87
|
+
"$HOME/.codex/AGENTS.override.md" \
|
|
88
|
+
"$HOME/.codex/AGENTS.md" \
|
|
89
|
+
"$HOME/.claude/CLAUDE.md"; do
|
|
90
|
+
describe_rule_file "$file"
|
|
91
|
+
done
|
|
92
|
+
|
|
93
|
+
section "project-markdown"
|
|
94
|
+
find "$PROJECT_ROOT" \
|
|
95
|
+
\( -name .git -o -name node_modules -o -name .next -o -name dist -o -name build -o -name .venv -o -name venv -o -name __pycache__ -o -name target -o -name vendor -o -name .turbo -o -name .cache \) -prune \
|
|
96
|
+
-o -type f \( -name '*.md' -o -name '*.mdx' \) -print \
|
|
97
|
+
| LC_ALL=C sort
|
|
98
|
+
|
|
99
|
+
section "project-markdown-count"
|
|
100
|
+
find "$PROJECT_ROOT" \
|
|
101
|
+
\( -name .git -o -name node_modules -o -name .next -o -name dist -o -name build -o -name .venv -o -name venv -o -name __pycache__ -o -name target -o -name vendor -o -name .turbo -o -name .cache \) -prune \
|
|
102
|
+
-o -type f \( -name '*.md' -o -name '*.mdx' \) -print \
|
|
103
|
+
| awk 'END {print NR+0}'
|
|
104
|
+
|
|
105
|
+
section "root-entries"
|
|
106
|
+
find "$PROJECT_ROOT" -mindepth 1 -maxdepth 1 -print | LC_ALL=C sort
|
|
@@ -9,81 +9,80 @@ keywords: [毛泽东, 毛选, 矛盾分析, 战略, 组织, 咨询]
|
|
|
9
9
|
|
|
10
10
|
# 毛泽东 · 认知操作系统
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
##
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
<transition from="activate" to="diagnose" />
|
|
77
|
-
<transition from="diagnose" to="strategize" />
|
|
78
|
-
<transition from="strategize" to="mobilize" />
|
|
79
|
-
<transition from="mobilize" to="deliver" />
|
|
80
|
-
<transition from="deliver" to="finalize">
|
|
81
|
-
<command root="commands" path="finalize.md" />
|
|
82
|
-
<when>用户确认综合咨询输出。</when>
|
|
83
|
-
</transition>
|
|
84
|
-
</transitions>
|
|
85
|
-
```
|
|
12
|
+
本入口把"分析问题—制定战略—组织行动"组织为渐进披露的咨询流程。产物写入当前 `person/changes/<change>/`。
|
|
13
|
+
|
|
14
|
+
## 流程
|
|
15
|
+
|
|
16
|
+
### 1. 激活与问诊
|
|
17
|
+
|
|
18
|
+
委托给 `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/activate.md</Path>`。输出首次激活声明,通过开口三问摸清用户处境,判定问题类型并匹配主框架。
|
|
19
|
+
|
|
20
|
+
产物:`<Path>{roots.state}/person/changes/{change}/problem-statement.md</Path>`
|
|
21
|
+
|
|
22
|
+
**完成标准**:首次激活声明已输出,至少已追问 2 个开口问题且用户已回应,问题类型与主框架已匹配,problem-statement.md 六段均已填写无残留 `[TODO:]`。
|
|
23
|
+
|
|
24
|
+
### 2. 诊断分析
|
|
25
|
+
|
|
26
|
+
依赖步骤 1 的 problem-statement.md。委托给 `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/diagnose.md</Path>`。从 Module A 八模型中选用至少 2 个进行诊断——所有问题必过 A1(矛盾分析);信息来自二手必过 A3(调查研究);涉及多方利益必过 A6(结构分析)。
|
|
27
|
+
|
|
28
|
+
产物:`<Path>{roots.state}/person/changes/{change}/analysis.md</Path>`
|
|
29
|
+
|
|
30
|
+
**完成标准**:已应用至少 2 个 Module A 模型,每个模型结论带条件与局限,主要矛盾已明确写出且带论证,analysis.md 无残留 `[TODO:]`。
|
|
31
|
+
|
|
32
|
+
### 3. 战略制定
|
|
33
|
+
|
|
34
|
+
依赖步骤 2 的 analysis.md。委托给 `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/strategize.md</Path>`。沿元框架流水线(定性→定向→站位→时间→投放→运用)展开主框架,必要时补充辅助框架。
|
|
35
|
+
|
|
36
|
+
产物:`<Path>{roots.state}/person/changes/{change}/strategy.md</Path>`
|
|
37
|
+
|
|
38
|
+
**完成标准**:主框架已选定并充分展开,阶段划分清晰(至少分两步),有明确的关键战役判断,strategy.md 无残留 `[TODO:]`。
|
|
39
|
+
|
|
40
|
+
### 4. 组织行动
|
|
41
|
+
|
|
42
|
+
依赖步骤 3 的 strategy.md。委托给 `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/mobilize.md</Path>`。将战略转化为具体行动方案——谁来干、干什么、什么时候干完、干到什么程度算好、干砸了怎么办。
|
|
43
|
+
|
|
44
|
+
产物:`<Path>{roots.state}/person/changes/{change}/action-plan.md</Path>`
|
|
45
|
+
|
|
46
|
+
**完成标准**:行动、责任与反馈机制已明确,action-plan.md 无残留 `[TODO:]`。
|
|
47
|
+
|
|
48
|
+
### 5. 综合交付
|
|
49
|
+
|
|
50
|
+
依赖前四步全部产物。委托给 `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/deliver.md</Path>`。按模板 `../_templates/mao-consultation-output-template.md` 整合为连贯的教员第一人称咨询输出——五拍论证节奏、收尾四动作、引用纪律、反模式检查和内在张力标注。
|
|
51
|
+
|
|
52
|
+
产物:`<Path>{roots.state}/person/changes/{change}/consultation-output.md</Path>`
|
|
53
|
+
|
|
54
|
+
**完成标准**:已整合四阶段产物为连贯的教员第一人称咨询输出,五拍论证节奏可辨识,收尾四动作齐全,所有毛泽东原文引用均带篇目出处,反模式检查通过,consultation-output.md 无残留 `[TODO:]`。
|
|
55
|
+
|
|
56
|
+
## 依赖关系
|
|
57
|
+
|
|
58
|
+
- 步骤 2「诊断分析」依赖步骤 1「激活与问诊」
|
|
59
|
+
- 步骤 3「战略制定」依赖步骤 2「诊断分析」
|
|
60
|
+
- 步骤 4「组织行动」依赖步骤 3「战略制定」
|
|
61
|
+
- 步骤 5「综合交付」依赖步骤 4「组织行动」
|
|
62
|
+
|
|
63
|
+
所有步骤为硬依赖——前一产物必须完成并验证后才能进入下一步。
|
|
64
|
+
|
|
65
|
+
## 状态追踪
|
|
66
|
+
|
|
67
|
+
咨询过程中维护以下状态字段,记录在 `<Path>{roots.state}/person/status.json</Path>` 中:
|
|
68
|
+
|
|
69
|
+
- **`problem_type`**(字符串)—— 问题类型,从激活阶段的问题类型表中选定
|
|
70
|
+
- **`primary_framework`**(字符串)—— 匹配的主框架及篇目编号
|
|
71
|
+
- **`models_applied`**(数组)—— 诊断阶段已应用的 Module A 模型列表
|
|
72
|
+
- **`frameworks_applied`**(数组)—— 战略阶段已应用的 Module B 框架列表
|
|
73
|
+
- **`methods_applied`**(数组)—— 组织阶段已应用的 Module C 方法列表
|
|
74
|
+
- **`quotes_cited`**(数组)—— 已引用的毛泽东原话及出处
|
|
75
|
+
- **`consultation_status`**(字符串)—— 当前阶段:`activating` → `diagnosing` → `strategizing` → `mobilizing` → `delivering` → `completed`
|
|
86
76
|
|
|
87
77
|
## 渐进披露
|
|
88
78
|
|
|
89
79
|
角色、声音、模型和引用规则继续由各 phase 文件及其相对引用拥有;未进入 phase 时不加载对应材料。
|
|
80
|
+
|
|
81
|
+
| 文件 | 触发条件 |
|
|
82
|
+
|------|----------|
|
|
83
|
+
| `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/activate.md</Path>` | 步骤 1「激活与问诊」进入时 |
|
|
84
|
+
| `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/diagnose.md</Path>` | 步骤 2「诊断分析」进入时 |
|
|
85
|
+
| `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/strategize.md</Path>` | 步骤 3「战略制定」进入时 |
|
|
86
|
+
| `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/mobilize.md</Path>` | 步骤 4「组织行动」进入时 |
|
|
87
|
+
| `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/deliver.md</Path>` | 步骤 5「综合交付」进入时 |
|
|
88
|
+
| `<Path>{roots.workflows}/person/M-mao-zedong-cognitive-os/books/README.md</Path>` | 需要查原文时——引语库 `references/research/15-quote-bank.md` 映射篇目编号到 books 目录 |
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: specdev/diagnose-bugs
|
|
3
|
+
type: workflow-entry
|
|
4
|
+
workflow: specdev
|
|
5
|
+
name: 诊断
|
|
6
|
+
description: 针对疑难 bug 建立诊断循环——构建紧凑反馈回路、复现最小化、可证伪假设排名、插桩定位根因,确认后移交 I-implement 修复。
|
|
7
|
+
keywords: [诊断, 调试, bug, 反馈回路, 假设, 根因分析]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# 诊断
|
|
11
|
+
|
|
12
|
+
针对疑难 bug 的诊断规程。先建立紧凑的反馈回路锚定症状,再通过可证伪假设排名定位根因,确认后移交 I-implement 执行修复。仅在明确有理由时才跳过阶段。
|
|
13
|
+
|
|
14
|
+
在开始诊断之前,读取当前变更的上下文与架构决策:
|
|
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
|
+
|
|
19
|
+
如果这些文件不存在,先运行 `<Path>{roots.workflows}/specdev/W-wayfinder/W-wayfinder.md</Path>` 或询问用户以建立上下文。
|
|
20
|
+
|
|
21
|
+
## 流程
|
|
22
|
+
|
|
23
|
+
### 1. 加载上下文
|
|
24
|
+
|
|
25
|
+
读取 `<Path>{roots.state}/specdev/status.json</Path>` 确认活跃变更。读取 CONTEXT.md 获取领域词汇表——使用其中已定义的术语。读取 ADR.md 了解已做出的架构决策——诊断过程中涉及的模块若与已有 ADR 相关,在假设中引用。
|
|
26
|
+
|
|
27
|
+
**完成标准**:活跃变更已确认,领域词汇表和架构决策已加载。`{change}` 已确定。
|
|
28
|
+
|
|
29
|
+
### 2. 构建反馈回路
|
|
30
|
+
|
|
31
|
+
委托给 `<Path>{roots.workflows}/specdev/D-diagnose-bugs/feedback-loop-techniques.md</Path>`。构建一个紧凑的通过/失败信号——一条命令,确定性、秒级、agent 可无人值守运行。在此投入不成比例的精力:反馈回路是诊断的超能力。如果确实无法构建回路,向用户明确说明已尝试的方法并请求访问复现环境或捕获产物。
|
|
32
|
+
|
|
33
|
+
**完成标准**:反馈回路紧凑且具备变红能力——一条命令已运行并通过/失败输出验证,确定性、秒级、agent 可运行。回路断言的是用户的确切症状,而非"运行不出错"。
|
|
34
|
+
|
|
35
|
+
### 3. 复现与最小化
|
|
36
|
+
|
|
37
|
+
运行回路,确认它产生用户描述的故障模式。然后逐元素削减输入、调用者、配置和数据——每次削减后重新运行回路——只保留对故障有负载作用的部分。
|
|
38
|
+
|
|
39
|
+
**完成标准**:回路已复现用户症状。复现场景已最小化——每个剩余元素都有负载作用,移除任何一个都会使回路变绿。
|
|
40
|
+
|
|
41
|
+
### 4. 提出诊断计划
|
|
42
|
+
|
|
43
|
+
委托给 `<Path>{roots.workflows}/specdev/D-diagnose-bugs/hypothesis-format.md</Path>`。生成 3-5 个排名假设,每个假设必须是可证伪的——陈述其预测。将排名列表作为诊断计划呈现给用户确认。用户可能拥有立即重排名的领域知识。如果用户 AFK,按排名继续。
|
|
44
|
+
|
|
45
|
+
**完成标准**:3-5 个可证伪假设已排名并作为诊断计划呈现给用户。用户已确认或 AFK 下按排名继续。
|
|
46
|
+
|
|
47
|
+
### 5. 插桩验证
|
|
48
|
+
|
|
49
|
+
委托给 `<Path>{roots.workflows}/specdev/D-diagnose-bugs/instrumentation-rules.md</Path>`。每个探测映射到诊断计划中的一个具体预测。每次只改变一个变量。使用调试器/REPL 优先于日志。所有调试日志使用 `[DEBUG-xxxx]` 唯一前缀标记。
|
|
50
|
+
|
|
51
|
+
**完成标准**:根因已通过插桩确认——某个假设的预测已验证,其他假设已排除。所有探测结果与诊断计划中的预测对应。
|
|
52
|
+
|
|
53
|
+
### 6. 移交修复
|
|
54
|
+
|
|
55
|
+
调用 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 执行修复。移交以下信息:
|
|
56
|
+
|
|
57
|
+
- **根因描述**——哪个假设被确认,通过什么探测验证
|
|
58
|
+
- **最小复现场景**——阶段 3 产出的最小化复现,可直接转为回归测试
|
|
59
|
+
- **建议的修复接缝**——在哪个模块/接口处修复最合适
|
|
60
|
+
|
|
61
|
+
修复、回归测试编写和提交由 I-implement 完成。如果不存在正确的测试缝合点,将此发现记录到 `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>` 并在步骤 7 的事后分析中提出架构改进建议。
|
|
62
|
+
|
|
63
|
+
**完成标准**:I-implement 已启动,根因描述、最小复现、建议修复接缝已移交。
|
|
64
|
+
|
|
65
|
+
### 7. 清理与复盘
|
|
66
|
+
|
|
67
|
+
委托给 `<Path>{roots.workflows}/specdev/D-diagnose-bugs/cleanup-postmortem.md</Path>`。移除所有 `[DEBUG-xxxx]` 标记的插桩代码,删除一次性原型。在 `<Path>{roots.state}/specdev/changes/{change}/LOG.md</Path>` 中记录:被证实的假设、根因、修复提交。执行事后分析——什么本可以预防这个 bug?如果涉及架构变更,提出改进建议。
|
|
68
|
+
|
|
69
|
+
**完成标准**:调试产物已清理(grep `[DEBUG-` 无残留),根因已记录到 LOG.md,预防建议已提出。
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 子文件引用
|
|
74
|
+
|
|
75
|
+
| 文件 | 内容 | 触发条件 |
|
|
76
|
+
|------|------|---------|
|
|
77
|
+
| `<Path>{roots.workflows}/specdev/D-diagnose-bugs/feedback-loop-techniques.md</Path>` | 10 种反馈回路构建技术、收紧回路、非确定性 bug 策略、无法构建回路时的升级路径、最小化协议 | 步骤 2「构建反馈回路」和步骤 3「复现与最小化」进入时 |
|
|
78
|
+
| `<Path>{roots.workflows}/specdev/D-diagnose-bugs/hypothesis-format.md</Path>` | 可证伪假设格式模板、排名规则、用户 Plan 呈现模板、AFK 默认行为 | 步骤 4「提出诊断计划」进入时 |
|
|
79
|
+
| `<Path>{roots.workflows}/specdev/D-diagnose-bugs/instrumentation-rules.md</Path>` | 探测映射规则、工具偏好、`[DEBUG-xxxx]` 标记约定、性能分支处理 | 步骤 5「插桩验证」进入时 |
|
|
80
|
+
| `<Path>{roots.workflows}/specdev/D-diagnose-bugs/cleanup-postmortem.md</Path>` | 清理检查清单、事后分析问题、预防建议记录格式 | 步骤 7「清理与复盘」进入时 |
|
|
81
|
+
|
|
82
|
+
## 依赖关系
|
|
83
|
+
|
|
84
|
+
- 依赖 `<Path>{roots.workflows}/specdev/I-implement/I-implement.md</Path>` 执行修复——步骤 6 移交已确认的根因和最小复现
|
|
85
|
+
- 依赖 `<Path>{roots.state}/specdev/changes/{change}/CONTEXT.md</Path>` 和 `<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>` 提供领域上下文——步骤 1 加载
|