sillyspec 3.20.2 → 3.20.4
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/.claude/skills/sillyspec-archive/SKILL.md +21 -21
- package/.claude/skills/sillyspec-auto/SKILL.md +83 -83
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +44 -44
- package/.claude/skills/sillyspec-commit/SKILL.md +106 -106
- package/.claude/skills/sillyspec-continue/SKILL.md +45 -45
- package/.claude/skills/sillyspec-doctor/SKILL.md +31 -31
- package/.claude/skills/sillyspec-execute/SKILL.md +30 -30
- package/.claude/skills/sillyspec-explore/SKILL.md +109 -109
- package/.claude/skills/sillyspec-knowledge/SKILL.md +269 -269
- package/.claude/skills/sillyspec-plan/SKILL.md +21 -21
- package/.claude/skills/sillyspec-propose/SKILL.md +21 -21
- package/.claude/skills/sillyspec-quick/SKILL.md +21 -21
- package/.claude/skills/sillyspec-resume/SKILL.md +68 -68
- package/.claude/skills/sillyspec-scan/SKILL.md +21 -21
- package/.claude/skills/sillyspec-state/SKILL.md +54 -54
- package/.claude/skills/sillyspec-status/SKILL.md +21 -21
- package/.claude/skills/sillyspec-verify/SKILL.md +21 -21
- package/.claude/skills/sillyspec-workspace/SKILL.md +157 -157
- package/.husky/pre-push +13 -13
- package/CLAUDE.md +18 -18
- package/README.md +198 -188
- package/SKILL.md +90 -91
- package/bin/sillyspec.js +2 -2
- package/docs/brainstorm-plan-contract.md +64 -64
- package/docs/plan-execute-contract.md +123 -123
- package/docs/platform-scan-protocol.md +298 -298
- package/docs/revision-mode.md +115 -115
- package/docs/sillyspec/file-lifecycle/known-implementation-gaps.md +99 -99
- package/docs/sillyspec/file-lifecycle/platform-workflows-sync.md +218 -218
- package/docs/sillyspec/file-lifecycle/stage-artifacts.md +167 -167
- package/docs/sillyspec/file-lifecycle/storage-and-state.md +148 -148
- package/docs/sillyspec/file-lifecycle/worktree-and-guard.md +211 -193
- package/docs/sillyspec/file-lifecycle.md +125 -125
- package/docs/workflow-contract-regression.md +106 -106
- package/docs/worktree-isolation.md +252 -252
- package/package.json +40 -40
- package/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -7446
- package/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -1
- package/packages/dashboard/dist/index.html +16 -16
- package/packages/dashboard/index.html +15 -15
- package/packages/dashboard/package-lock.json +2384 -2384
- package/packages/dashboard/package.json +25 -25
- package/packages/dashboard/server/executor.js +86 -86
- package/packages/dashboard/server/index.js +588 -588
- package/packages/dashboard/server/parser.js +526 -526
- package/packages/dashboard/server/watcher.js +344 -344
- package/packages/dashboard/src/App.vue +558 -558
- package/packages/dashboard/src/components/ActionBar.vue +93 -93
- package/packages/dashboard/src/components/CommandPalette.vue +96 -96
- package/packages/dashboard/src/components/DetailPanel.vue +137 -137
- package/packages/dashboard/src/components/LogStream.vue +65 -65
- package/packages/dashboard/src/components/PipelineStage.vue +95 -95
- package/packages/dashboard/src/components/PipelineView.vue +156 -156
- package/packages/dashboard/src/components/ProjectList.vue +210 -210
- package/packages/dashboard/src/components/StageBadge.vue +67 -67
- package/packages/dashboard/src/components/StepCard.vue +94 -94
- package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -48
- package/packages/dashboard/src/components/detail/GitDetail.vue +61 -61
- package/packages/dashboard/src/components/detail/TechDetail.vue +43 -43
- package/packages/dashboard/src/composables/useDashboard.js +170 -170
- package/packages/dashboard/src/composables/useKeyboard.js +119 -119
- package/packages/dashboard/src/composables/useWebSocket.js +129 -129
- package/packages/dashboard/src/main.js +8 -8
- package/packages/dashboard/src/style.css +132 -132
- package/packages/dashboard/vite.config.js +18 -18
- package/src/brainstorm-postcheck.js +158 -158
- package/src/change-list.js +52 -52
- package/src/change-risk-profile.js +352 -352
- package/src/classify-change.js +73 -73
- package/src/constants.js +70 -70
- package/src/contract-matrix.js +278 -278
- package/src/db.js +201 -201
- package/src/endpoint-extractor.js +315 -315
- package/src/hooks/claude-pre-tool-use.cjs +125 -125
- package/src/hooks/worktree-guard.js +653 -653
- package/src/index.js +922 -900
- package/src/init.js +431 -431
- package/src/knowledge-match.js +130 -130
- package/src/migrate.js +117 -117
- package/src/modules.js +482 -482
- package/src/progress.js +1734 -1734
- package/src/run.js +3465 -3358
- package/src/scan-postcheck.js +387 -383
- package/src/setup.js +398 -398
- package/src/stage-contract.js +700 -700
- package/src/stages/archive.js +160 -160
- package/src/stages/brainstorm-auto.js +229 -229
- package/src/stages/brainstorm.js +645 -645
- package/src/stages/doctor.js +365 -365
- package/src/stages/execute.js +625 -625
- package/src/stages/explore.js +34 -34
- package/src/stages/index.js +29 -29
- package/src/stages/knowledge.js +498 -498
- package/src/stages/plan-postcheck.js +511 -513
- package/src/stages/plan.js +582 -582
- package/src/stages/propose.js +174 -174
- package/src/stages/quick.js +82 -82
- package/src/stages/scan.js +558 -558
- package/src/stages/status.js +65 -65
- package/src/stages/verify.js +322 -322
- package/src/sync.js +497 -497
- package/src/task-review.js +346 -346
- package/src/workflow.js +785 -785
- package/src/worktree-apply.js +549 -549
- package/src/worktree-deps.js +185 -0
- package/src/worktree.js +982 -932
- package/templates/workflows/archive-impact.yaml +79 -79
- package/templates/workflows/scan-docs.yaml +132 -132
- package/test/brainstorm-plan-contract.test.mjs +273 -273
- package/test/check-syntax.mjs +26 -26
- package/test/contract-artifacts.test.mjs +323 -323
- package/test/decision-supersede.test.mjs +277 -277
- package/test/knowledge-match.test.mjs +231 -231
- package/test/plan-execute-contract.test.mjs +330 -330
- package/test/plan-optimization.test.mjs +572 -572
- package/test/platform-artifacts.test.mjs +166 -166
- package/test/platform-failure-samples.test.mjs +199 -199
- package/test/platform-recovery-chain.test.mjs +167 -167
- package/test/platform-recovery.test.mjs +136 -136
- package/test/platform-scan-p0.test.mjs +168 -168
- package/test/revision-v1.test.mjs +1145 -1145
- package/test/run-scan-project-parse.test.mjs +200 -200
- package/test/run-tests.mjs +48 -48
- package/test/scan-knowledge.test.mjs +175 -175
- package/test/scan-paths.test.mjs +68 -68
- package/test/scan-postcheck.test.mjs +197 -197
- package/test/spec-dir.test.mjs +206 -206
- package/test/stage-contract.test.mjs +299 -299
- package/test/stage-definitions.test.mjs +39 -39
- package/test/wait-gates.test.mjs +496 -496
- package/test/worktree-deps-provision.test.mjs +148 -0
- package/test/worktree-guard.test.mjs +71 -71
- package/test/worktree-native-overlay.test.mjs +188 -188
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
---
|
|
2
|
-
author: qinyi
|
|
3
|
-
created_at: 2026-05-31 11:00:00
|
|
4
|
-
updated_at: 2026-06-19 15:00:00
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# SillySpec 文件生命周期
|
|
8
|
-
|
|
9
|
-
> 本文档按当前代码重写。它描述的是仓库里已经实现或运行时会暴露的行为,不描述期望设计。
|
|
10
|
-
|
|
11
|
-
## 文档拆分
|
|
12
|
-
|
|
13
|
-
| 文件 | 说明 |
|
|
14
|
-
|---|---|
|
|
15
|
-
| [storage-and-state.md](file-lifecycle/storage-and-state.md) | `.sillyspec/.runtime/`、SQLite、gate、artifact、history、local 配置口径 |
|
|
16
|
-
| [stage-artifacts.md](file-lifecycle/stage-artifacts.md) | 各阶段的运行时步骤、变更目录产物、归档和 quicklog |
|
|
17
|
-
| [worktree-and-guard.md](file-lifecycle/worktree-and-guard.md) | `sillyspec worktree`、`meta.json`、apply、cleanup、Claude hook 门禁 |
|
|
18
|
-
| [platform-workflows-sync.md](file-lifecycle/platform-workflows-sync.md) | 平台模式、workflow check、manifest、SillyHub sync |
|
|
19
|
-
| [known-implementation-gaps.md](file-lifecycle/known-implementation-gaps.md) | 当前代码与提示文案/旧文档不一致的地方 |
|
|
20
|
-
|
|
21
|
-
## 代码依据
|
|
22
|
-
|
|
23
|
-
本组文档主要对照以下实现:
|
|
24
|
-
|
|
25
|
-
- `src/init.js`
|
|
26
|
-
- `src/db.js`
|
|
27
|
-
- `src/scan-postcheck.js`
|
|
28
|
-
- `src/knowledge-match.js`
|
|
29
|
-
- `src/progress.js`
|
|
30
|
-
- `src/run.js`
|
|
31
|
-
- `src/stages/*.js`
|
|
32
|
-
- `src/worktree.js`
|
|
33
|
-
- `src/worktree-apply.js`
|
|
34
|
-
- `src/hooks/worktree-guard.js`
|
|
35
|
-
- `src/workflow.js`
|
|
36
|
-
- `src/sync.js`
|
|
37
|
-
- `src/modules.js`
|
|
38
|
-
- `src/index.js`
|
|
39
|
-
|
|
40
|
-
运行时阶段列表以导入 `src/stages/index.js` 后得到的对象为准。当前导入结果:
|
|
41
|
-
|
|
42
|
-
| 阶段 | 当前步骤数 | 备注 |
|
|
43
|
-
|---|---:|---|
|
|
44
|
-
| scan | 11 | 辅助阶段;step 2 后会按项目动态展开 `perProject` 步骤;第 10 步「Extract Project Knowledge」写入 `knowledge/` |
|
|
45
|
-
| brainstorm | 11 | 独立包含“写设计文档并自审”和“用户确认并生成规范文件” |
|
|
46
|
-
| propose | 7 | 包含“生成规范文件”与“自检门控”,四件套是该阶段预期产物 |
|
|
47
|
-
| plan | 动态 | 默认 8 步;`plan.md` 解析到任务后插入任务蓝图协调器 |
|
|
48
|
-
| execute | 动态 | 默认 12 步;Wave 来自 `plan.md`,解析失败时默认 3 个 Wave |
|
|
49
|
-
| verify | 7 | 只读校验 + 写 `verify-result.md` |
|
|
50
|
-
| archive | 5 | 辅助阶段;第 4 步必须带 `--confirm`,由 `run.js` 移动目录并注销 active change |
|
|
51
|
-
| quick | 3 | 辅助阶段;直接在主工作区实现,不创建 worktree |
|
|
52
|
-
| explore | 1 | 只读探索 |
|
|
53
|
-
| status | 3 | 状态展示 |
|
|
54
|
-
| doctor | 5 | 环境和项目自检 |
|
|
55
|
-
|
|
56
|
-
## 顶层目录口径
|
|
57
|
-
|
|
58
|
-
当前 `sillyspec init` 会创建或维护以下目录:
|
|
59
|
-
|
|
60
|
-
| 路径 | tracked | 创建/维护方 | 当前生命周期 |
|
|
61
|
-
|---|---|---|---|
|
|
62
|
-
| `.sillyspec/projects/` | 是 | `init.js`、scan prompt 人工确认后 | 项目注册表,`*.yaml` 描述项目名、路径、状态 |
|
|
63
|
-
| `.sillyspec/docs/<project>/scan/` | 是 | `init.js` 建目录;scan 阶段生成文档 | 代码扫描产物,workflow `scan-docs` 会检查 |
|
|
64
|
-
| `.sillyspec/docs/<project>/modules/` | 是 | scan 可选步骤、archive sync、`modules` 子命令 | 模块索引和模块卡片 |
|
|
65
|
-
| `.sillyspec/changes/<change>/` | 是 | `ProgressManager.initChange()` 确保目录;阶段 prompt 写入 | 单个变更包文档和验收产物 |
|
|
66
|
-
| `.sillyspec/changes/archive/` | 是 | archive `确认归档 --confirm` 分支 | 已归档变更目录 |
|
|
67
|
-
| `.sillyspec/knowledge/` | 是 | `init.js` 建目录;scan「Extract Project Knowledge」步骤产出 | `INDEX.md`、`uncategorized.md`,以及 scan 提取的 `conventions.md`/`patterns.md`/`known-issues.md` |
|
|
68
|
-
| `.sillyspec/workflows/` | 是 | `init.js` 从模板复制 | workflow check 定义 |
|
|
69
|
-
| `.sillyspec/quicklog/` | 是 | quick prompt | 无 `--change` quick 任务记录 |
|
|
70
|
-
| `.sillyspec/shared/` | 是 | `init.js` | 共享目录,当前无核心生命周期逻辑 |
|
|
71
|
-
| `.sillyspec/workspace/` | 是 | `init.js` | 工作区目录,当前无核心生命周期逻辑 |
|
|
72
|
-
| `.sillyspec/.runtime/` | 否 | `init.js`、`ProgressManager`、运行时命令 | DB、gate、artifacts、history、workflow-runs、worktrees、knowledge-hit-report.json、postcheck-result.json |
|
|
73
|
-
|
|
74
|
-
`init.js` 会把 `.sillyspec/.runtime/`、`.sillyspec/local.yaml`、`.sillyspec/codebase/SCAN-RAW.md` 追加到 `.gitignore`。
|
|
75
|
-
|
|
76
|
-
## 主要文件流
|
|
77
|
-
|
|
78
|
-
```text
|
|
79
|
-
sillyspec init
|
|
80
|
-
-> .sillyspec/projects/<project>.yaml
|
|
81
|
-
-> .sillyspec/docs/<project>/scan/.gitkeep
|
|
82
|
-
-> .sillyspec/workflows/*.yaml
|
|
83
|
-
-> .sillyspec/knowledge/{INDEX.md,uncategorized.md}
|
|
84
|
-
-> .sillyspec/.runtime/{sillyspec.db,user-inputs.md,artifacts,history,logs,templates}
|
|
85
|
-
|
|
86
|
-
sillyspec run scan
|
|
87
|
-
-> .sillyspec/docs/<project>/scan/*.md
|
|
88
|
-
-> .sillyspec/docs/<project>/modules/_module-map.yaml (optional prompt)
|
|
89
|
-
-> .sillyspec/docs/<project>/modules/<module>.md (optional prompt)
|
|
90
|
-
-> .sillyspec/knowledge/{conventions,patterns,known-issues}.md (Extract Project Knowledge)
|
|
91
|
-
-> .sillyspec/knowledge/INDEX.md (索引更新)
|
|
92
|
-
-> .sillyspec/.runtime/scan-projects.json (step expansion state)
|
|
93
|
-
-> .sillyspec/.runtime/postcheck-result.json (scan-postcheck 结构化结果)
|
|
94
|
-
|
|
95
|
-
brainstorm / propose / plan / execute / verify / archive
|
|
96
|
-
-> .sillyspec/changes/<change>/...
|
|
97
|
-
-> .sillyspec/.runtime/sillyspec.db
|
|
98
|
-
-> .sillyspec/.runtime/user-inputs.md
|
|
99
|
-
-> .sillyspec/.runtime/artifacts/*.txt (long step output)
|
|
100
|
-
|
|
101
|
-
execute
|
|
102
|
-
-> .sillyspec/.runtime/worktrees/<change>/meta.json
|
|
103
|
-
-> .sillyspec/.runtime/knowledge-hit-report.json (启动时按 taskContext 匹配 knowledge)
|
|
104
|
-
-> worktree branch sillyspec/<change>
|
|
105
|
-
-> apply patch back to main workspace, then cleanup
|
|
106
|
-
|
|
107
|
-
quick
|
|
108
|
-
-> .sillyspec/quicklog/QUICKLOG-<git-user>.md (without --change)
|
|
109
|
-
-> or append checkbox to .sillyspec/changes/<change>/tasks.md
|
|
110
|
-
-> code changes are made in the main workspace
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## 核心修正
|
|
114
|
-
|
|
115
|
-
这版文档相对旧版长文档做了几项关键修正:
|
|
116
|
-
|
|
117
|
-
- `quick` 不走 worktree 生命周期。hook 在 quick 阶段对写文件放行,只拦截危险 Bash 命令。
|
|
118
|
-
- `scan` 当前定义是 10 步,并且 step 2 后会动态展开项目级步骤,不是固定 12 步。
|
|
119
|
-
- `brainstorm` 和 `propose` 的重复 object key 已拆成独立步骤,运行时步骤数分别是 11 和 7。
|
|
120
|
-
- `.sillyspec/local.yaml` 是当前主配置口径;scan prompt 写这里,sync 读写这里,hook 优先读这里并兼容根目录 fallback。
|
|
121
|
-
- 平台模式的 `manifest.json` 已接入 scan 完成回调;`workflow-runs` 的 runtimeRoot 路径支持在 `workflow.js` 中存在,但 `run.js` 当前调用没有传入 `runtimeRoot`。
|
|
122
|
-
- `archive` 的目录移动已经由 `run.js` 在第 4 步 `--confirm` 时执行;未带 `--confirm` 会回退该步骤并提示补参。
|
|
123
|
-
- scan 第 10 步「Extract Project Knowledge」把长期有效的项目知识写入 `.sillyspec/knowledge/`(`conventions.md`/`patterns.md`/`known-issues.md` + 更新 `INDEX.md`);`scan-postcheck.js` 校验产物(INDEX.md 存在、引用文件真实存在)。
|
|
124
|
-
- execute 启动时由 `knowledge-match.js` 按 plan.md 的 task 关键词匹配知识库,命中报告注入 prompt 并写 `.runtime/knowledge-hit-report.json`。
|
|
125
|
-
- Revision v1:`stages` 表新增 `revision`/`reopened_from_step`/`reopened_at`/`stale_reason` 列;阶段新增 `revising`/`stale` 状态;`sillyspec run <stage> --reopen --from-step <n>` 重开已完成阶段、级联标记下游 stale;`.runtime/postcheck-result.json` 由 `scan-postcheck.js` 的 `writeStructuredResult` 落盘(本地写 `specDir/.runtime`,平台写 `runtimeRoot/scan-runs/<id>`)。
|
|
1
|
+
---
|
|
2
|
+
author: qinyi
|
|
3
|
+
created_at: 2026-05-31 11:00:00
|
|
4
|
+
updated_at: 2026-06-19 15:00:00
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SillySpec 文件生命周期
|
|
8
|
+
|
|
9
|
+
> 本文档按当前代码重写。它描述的是仓库里已经实现或运行时会暴露的行为,不描述期望设计。
|
|
10
|
+
|
|
11
|
+
## 文档拆分
|
|
12
|
+
|
|
13
|
+
| 文件 | 说明 |
|
|
14
|
+
|---|---|
|
|
15
|
+
| [storage-and-state.md](file-lifecycle/storage-and-state.md) | `.sillyspec/.runtime/`、SQLite、gate、artifact、history、local 配置口径 |
|
|
16
|
+
| [stage-artifacts.md](file-lifecycle/stage-artifacts.md) | 各阶段的运行时步骤、变更目录产物、归档和 quicklog |
|
|
17
|
+
| [worktree-and-guard.md](file-lifecycle/worktree-and-guard.md) | `sillyspec worktree`、`meta.json`、apply、cleanup、Claude hook 门禁 |
|
|
18
|
+
| [platform-workflows-sync.md](file-lifecycle/platform-workflows-sync.md) | 平台模式、workflow check、manifest、SillyHub sync |
|
|
19
|
+
| [known-implementation-gaps.md](file-lifecycle/known-implementation-gaps.md) | 当前代码与提示文案/旧文档不一致的地方 |
|
|
20
|
+
|
|
21
|
+
## 代码依据
|
|
22
|
+
|
|
23
|
+
本组文档主要对照以下实现:
|
|
24
|
+
|
|
25
|
+
- `src/init.js`
|
|
26
|
+
- `src/db.js`
|
|
27
|
+
- `src/scan-postcheck.js`
|
|
28
|
+
- `src/knowledge-match.js`
|
|
29
|
+
- `src/progress.js`
|
|
30
|
+
- `src/run.js`
|
|
31
|
+
- `src/stages/*.js`
|
|
32
|
+
- `src/worktree.js`
|
|
33
|
+
- `src/worktree-apply.js`
|
|
34
|
+
- `src/hooks/worktree-guard.js`
|
|
35
|
+
- `src/workflow.js`
|
|
36
|
+
- `src/sync.js`
|
|
37
|
+
- `src/modules.js`
|
|
38
|
+
- `src/index.js`
|
|
39
|
+
|
|
40
|
+
运行时阶段列表以导入 `src/stages/index.js` 后得到的对象为准。当前导入结果:
|
|
41
|
+
|
|
42
|
+
| 阶段 | 当前步骤数 | 备注 |
|
|
43
|
+
|---|---:|---|
|
|
44
|
+
| scan | 11 | 辅助阶段;step 2 后会按项目动态展开 `perProject` 步骤;第 10 步「Extract Project Knowledge」写入 `knowledge/` |
|
|
45
|
+
| brainstorm | 11 | 独立包含“写设计文档并自审”和“用户确认并生成规范文件” |
|
|
46
|
+
| propose | 7 | 包含“生成规范文件”与“自检门控”,四件套是该阶段预期产物 |
|
|
47
|
+
| plan | 动态 | 默认 8 步;`plan.md` 解析到任务后插入任务蓝图协调器 |
|
|
48
|
+
| execute | 动态 | 默认 12 步;Wave 来自 `plan.md`,解析失败时默认 3 个 Wave |
|
|
49
|
+
| verify | 7 | 只读校验 + 写 `verify-result.md` |
|
|
50
|
+
| archive | 5 | 辅助阶段;第 4 步必须带 `--confirm`,由 `run.js` 移动目录并注销 active change |
|
|
51
|
+
| quick | 3 | 辅助阶段;直接在主工作区实现,不创建 worktree |
|
|
52
|
+
| explore | 1 | 只读探索 |
|
|
53
|
+
| status | 3 | 状态展示 |
|
|
54
|
+
| doctor | 5 | 环境和项目自检 |
|
|
55
|
+
|
|
56
|
+
## 顶层目录口径
|
|
57
|
+
|
|
58
|
+
当前 `sillyspec init` 会创建或维护以下目录:
|
|
59
|
+
|
|
60
|
+
| 路径 | tracked | 创建/维护方 | 当前生命周期 |
|
|
61
|
+
|---|---|---|---|
|
|
62
|
+
| `.sillyspec/projects/` | 是 | `init.js`、scan prompt 人工确认后 | 项目注册表,`*.yaml` 描述项目名、路径、状态 |
|
|
63
|
+
| `.sillyspec/docs/<project>/scan/` | 是 | `init.js` 建目录;scan 阶段生成文档 | 代码扫描产物,workflow `scan-docs` 会检查 |
|
|
64
|
+
| `.sillyspec/docs/<project>/modules/` | 是 | scan 可选步骤、archive sync、`modules` 子命令 | 模块索引和模块卡片 |
|
|
65
|
+
| `.sillyspec/changes/<change>/` | 是 | `ProgressManager.initChange()` 确保目录;阶段 prompt 写入 | 单个变更包文档和验收产物 |
|
|
66
|
+
| `.sillyspec/changes/archive/` | 是 | archive `确认归档 --confirm` 分支 | 已归档变更目录 |
|
|
67
|
+
| `.sillyspec/knowledge/` | 是 | `init.js` 建目录;scan「Extract Project Knowledge」步骤产出 | `INDEX.md`、`uncategorized.md`,以及 scan 提取的 `conventions.md`/`patterns.md`/`known-issues.md` |
|
|
68
|
+
| `.sillyspec/workflows/` | 是 | `init.js` 从模板复制 | workflow check 定义 |
|
|
69
|
+
| `.sillyspec/quicklog/` | 是 | quick prompt | 无 `--change` quick 任务记录 |
|
|
70
|
+
| `.sillyspec/shared/` | 是 | `init.js` | 共享目录,当前无核心生命周期逻辑 |
|
|
71
|
+
| `.sillyspec/workspace/` | 是 | `init.js` | 工作区目录,当前无核心生命周期逻辑 |
|
|
72
|
+
| `.sillyspec/.runtime/` | 否 | `init.js`、`ProgressManager`、运行时命令 | DB、gate、artifacts、history、workflow-runs、worktrees、knowledge-hit-report.json、postcheck-result.json |
|
|
73
|
+
|
|
74
|
+
`init.js` 会把 `.sillyspec/.runtime/`、`.sillyspec/local.yaml`、`.sillyspec/codebase/SCAN-RAW.md` 追加到 `.gitignore`。
|
|
75
|
+
|
|
76
|
+
## 主要文件流
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
sillyspec init
|
|
80
|
+
-> .sillyspec/projects/<project>.yaml
|
|
81
|
+
-> .sillyspec/docs/<project>/scan/.gitkeep
|
|
82
|
+
-> .sillyspec/workflows/*.yaml
|
|
83
|
+
-> .sillyspec/knowledge/{INDEX.md,uncategorized.md}
|
|
84
|
+
-> .sillyspec/.runtime/{sillyspec.db,user-inputs.md,artifacts,history,logs,templates}
|
|
85
|
+
|
|
86
|
+
sillyspec run scan
|
|
87
|
+
-> .sillyspec/docs/<project>/scan/*.md
|
|
88
|
+
-> .sillyspec/docs/<project>/modules/_module-map.yaml (optional prompt)
|
|
89
|
+
-> .sillyspec/docs/<project>/modules/<module>.md (optional prompt)
|
|
90
|
+
-> .sillyspec/knowledge/{conventions,patterns,known-issues}.md (Extract Project Knowledge)
|
|
91
|
+
-> .sillyspec/knowledge/INDEX.md (索引更新)
|
|
92
|
+
-> .sillyspec/.runtime/scan-projects.json (step expansion state)
|
|
93
|
+
-> .sillyspec/.runtime/postcheck-result.json (scan-postcheck 结构化结果)
|
|
94
|
+
|
|
95
|
+
brainstorm / propose / plan / execute / verify / archive
|
|
96
|
+
-> .sillyspec/changes/<change>/...
|
|
97
|
+
-> .sillyspec/.runtime/sillyspec.db
|
|
98
|
+
-> .sillyspec/.runtime/user-inputs.md
|
|
99
|
+
-> .sillyspec/.runtime/artifacts/*.txt (long step output)
|
|
100
|
+
|
|
101
|
+
execute
|
|
102
|
+
-> .sillyspec/.runtime/worktrees/<change>/meta.json
|
|
103
|
+
-> .sillyspec/.runtime/knowledge-hit-report.json (启动时按 taskContext 匹配 knowledge)
|
|
104
|
+
-> worktree branch sillyspec/<change>
|
|
105
|
+
-> apply patch back to main workspace, then cleanup
|
|
106
|
+
|
|
107
|
+
quick
|
|
108
|
+
-> .sillyspec/quicklog/QUICKLOG-<git-user>.md (without --change)
|
|
109
|
+
-> or append checkbox to .sillyspec/changes/<change>/tasks.md
|
|
110
|
+
-> code changes are made in the main workspace
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## 核心修正
|
|
114
|
+
|
|
115
|
+
这版文档相对旧版长文档做了几项关键修正:
|
|
116
|
+
|
|
117
|
+
- `quick` 不走 worktree 生命周期。hook 在 quick 阶段对写文件放行,只拦截危险 Bash 命令。
|
|
118
|
+
- `scan` 当前定义是 10 步,并且 step 2 后会动态展开项目级步骤,不是固定 12 步。
|
|
119
|
+
- `brainstorm` 和 `propose` 的重复 object key 已拆成独立步骤,运行时步骤数分别是 11 和 7。
|
|
120
|
+
- `.sillyspec/local.yaml` 是当前主配置口径;scan prompt 写这里,sync 读写这里,hook 优先读这里并兼容根目录 fallback。
|
|
121
|
+
- 平台模式的 `manifest.json` 已接入 scan 完成回调;`workflow-runs` 的 runtimeRoot 路径支持在 `workflow.js` 中存在,但 `run.js` 当前调用没有传入 `runtimeRoot`。
|
|
122
|
+
- `archive` 的目录移动已经由 `run.js` 在第 4 步 `--confirm` 时执行;未带 `--confirm` 会回退该步骤并提示补参。
|
|
123
|
+
- scan 第 10 步「Extract Project Knowledge」把长期有效的项目知识写入 `.sillyspec/knowledge/`(`conventions.md`/`patterns.md`/`known-issues.md` + 更新 `INDEX.md`);`scan-postcheck.js` 校验产物(INDEX.md 存在、引用文件真实存在)。
|
|
124
|
+
- execute 启动时由 `knowledge-match.js` 按 plan.md 的 task 关键词匹配知识库,命中报告注入 prompt 并写 `.runtime/knowledge-hit-report.json`。
|
|
125
|
+
- Revision v1:`stages` 表新增 `revision`/`reopened_from_step`/`reopened_at`/`stale_reason` 列;阶段新增 `revising`/`stale` 状态;`sillyspec run <stage> --reopen --from-step <n>` 重开已完成阶段、级联标记下游 stale;`.runtime/postcheck-result.json` 由 `scan-postcheck.js` 的 `writeStructuredResult` 落盘(本地写 `specDir/.runtime`,平台写 `runtimeRoot/scan-runs/<id>`)。
|
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
# Workflow Contract Regression Audit
|
|
2
|
-
|
|
3
|
-
> 日期:2026-06-19
|
|
4
|
-
> 范围:16 commits (f52e670..977ad0a)
|
|
5
|
-
> 结论:**全绿,0 bug,274 个断言全部通过**
|
|
6
|
-
|
|
7
|
-
## 审计目标
|
|
8
|
-
|
|
9
|
-
确认今晚 16 个 commit 引入的 contract/revision/stale safety 改动没有误伤现有主链路。
|
|
10
|
-
|
|
11
|
-
## 审计范围
|
|
12
|
-
|
|
13
|
-
### 新增功能
|
|
14
|
-
1. **Revision v1** — 阶段重开 + 步骤级修订控制
|
|
15
|
-
2. **Revision v1.1** — 可观测性与状态自检
|
|
16
|
-
3. **Revision v1.2** — progress repair 安全修复状态元数据
|
|
17
|
-
4. **Execute stale safety v1** — 防止基于旧 plan 继续执行
|
|
18
|
-
5. **Verify/Archive stale safety** — 8 个测试固化安全链
|
|
19
|
-
6. **Plan→Execute contract v1** — 校验 + 文档 + 测试
|
|
20
|
-
7. **Plan postcheck contract v1** — plan 完成时校验 execute 契约
|
|
21
|
-
8. **Brainstorm→Plan contract v1** — design.md 输入校验
|
|
22
|
-
|
|
23
|
-
### 新增契约链
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
brainstorm → design.md → [Design Contract 校验] → plan → plan.md → [Plan Contract 校验] → execute
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
- **brainstorm → plan**: `validateDesignForPlan` — 3 error + 3 warning
|
|
30
|
-
- **plan → execute**: `validatePlanForExecute` — 5 error + 1 warning
|
|
31
|
-
- 双重校验:plan 完成时 + execute 启动时
|
|
32
|
-
|
|
33
|
-
### 新增 Stale Cascade 链
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
scan → brainstorm → plan → execute → verify → archive
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
- `checkConsistency` 基于 STAGE_ORDER 遍历上游,自动发现下游假完成
|
|
40
|
-
- `repair` cascade:execute stale → verify/archive stale → verify stale → archive stale
|
|
41
|
-
|
|
42
|
-
## 测试执行
|
|
43
|
-
|
|
44
|
-
### 命令
|
|
45
|
-
```bash
|
|
46
|
-
cd ~/Desktop/sillyspec && npm test
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### 测试套件 (15 个,274 断言)
|
|
50
|
-
|
|
51
|
-
| 测试套件 | 断言数 | 状态 |
|
|
52
|
-
|---------|-------|------|
|
|
53
|
-
| brainstorm-plan-contract.test.mjs | 11 | ✅ |
|
|
54
|
-
| plan-execute-contract.test.mjs | 12 | ✅ |
|
|
55
|
-
| platform-artifacts.test.mjs | 31 | ✅ |
|
|
56
|
-
| platform-failure-samples.test.mjs | 20 | ✅ |
|
|
57
|
-
| platform-recovery-chain.test.mjs | 15 | ✅ |
|
|
58
|
-
| platform-recovery.test.mjs | 19 | ✅ |
|
|
59
|
-
| platform-scan-p0.test.mjs | 19 | ✅ |
|
|
60
|
-
| revision-v1.test.mjs | 12 | ✅ |
|
|
61
|
-
| scan-paths.test.mjs | 38 | ✅ |
|
|
62
|
-
| scan-postcheck.test.mjs | 38 | ✅ |
|
|
63
|
-
| spec-dir.test.mjs | 15 | ✅ |
|
|
64
|
-
| stage-contract.test.mjs | 19 | ✅ |
|
|
65
|
-
| stage-definitions.test.mjs | 29 | ✅ |
|
|
66
|
-
| wait-gates.test.mjs | 15 | ✅ |
|
|
67
|
-
| worktree-guard.test.mjs | (included) | ✅ |
|
|
68
|
-
|
|
69
|
-
**总计:15 套件,274 断言,0 失败。**
|
|
70
|
-
|
|
71
|
-
## 主链路验收
|
|
72
|
-
|
|
73
|
-
### 1. 完整主链路 (scan → brainstorm → plan → execute → verify)
|
|
74
|
-
- ✅ stage-contract.test.mjs 覆盖了各阶段的校验与转换
|
|
75
|
-
- ✅ stage-definitions.test.mjs 覆盖了所有阶段定义的步骤初始化
|
|
76
|
-
- ✅ 无 contract 误伤
|
|
77
|
-
|
|
78
|
-
### 2. Plan 级别验收 (none/light/full)
|
|
79
|
-
- ✅ plan-execute-contract.test.mjs 覆盖 none/light/full
|
|
80
|
-
- ✅ plan postcheck 在 plan completion path 执行
|
|
81
|
-
- ✅ execute startup 二次校验保留
|
|
82
|
-
|
|
83
|
-
### 3. Revision 链路
|
|
84
|
-
- ✅ revision-v1.test.mjs 覆盖 reopen/repair/checkConsistency
|
|
85
|
-
- ✅ verify/archive --reopen 清除旧 completed steps
|
|
86
|
-
- ✅ execute --reopen 重新解析最新 plan.md
|
|
87
|
-
- ✅ repair cascade execute → verify → archive
|
|
88
|
-
|
|
89
|
-
### 4. Progress check/repair
|
|
90
|
-
- ✅ 正常状态无误报
|
|
91
|
-
- ✅ 异常状态报告清晰(checkConsistency 输出 upstream/downstream 关系)
|
|
92
|
-
- ✅ repair 只修 progress 元数据,不改产物文件
|
|
93
|
-
|
|
94
|
-
## 发现
|
|
95
|
-
|
|
96
|
-
**0 bug。** 274 个断言全部通过,无回归。
|
|
97
|
-
|
|
98
|
-
### 设计确认
|
|
99
|
-
- checkConsistency 和 repair 基于 STAGE_ORDER 通用遍历,不针对特定 stage
|
|
100
|
-
- verify/archive 用静态 steps,不需要从文件重解析
|
|
101
|
-
- contract validator 只在阶段边界执行,不影响阶段内步骤流转
|
|
102
|
-
- repair cascade 是自然结果,不需要硬编码 stage 间关系
|
|
103
|
-
|
|
104
|
-
## 文件变更统计
|
|
105
|
-
|
|
106
|
-
16 commits, 28 files changed, +3675/-689 lines。
|
|
1
|
+
# Workflow Contract Regression Audit
|
|
2
|
+
|
|
3
|
+
> 日期:2026-06-19
|
|
4
|
+
> 范围:16 commits (f52e670..977ad0a)
|
|
5
|
+
> 结论:**全绿,0 bug,274 个断言全部通过**
|
|
6
|
+
|
|
7
|
+
## 审计目标
|
|
8
|
+
|
|
9
|
+
确认今晚 16 个 commit 引入的 contract/revision/stale safety 改动没有误伤现有主链路。
|
|
10
|
+
|
|
11
|
+
## 审计范围
|
|
12
|
+
|
|
13
|
+
### 新增功能
|
|
14
|
+
1. **Revision v1** — 阶段重开 + 步骤级修订控制
|
|
15
|
+
2. **Revision v1.1** — 可观测性与状态自检
|
|
16
|
+
3. **Revision v1.2** — progress repair 安全修复状态元数据
|
|
17
|
+
4. **Execute stale safety v1** — 防止基于旧 plan 继续执行
|
|
18
|
+
5. **Verify/Archive stale safety** — 8 个测试固化安全链
|
|
19
|
+
6. **Plan→Execute contract v1** — 校验 + 文档 + 测试
|
|
20
|
+
7. **Plan postcheck contract v1** — plan 完成时校验 execute 契约
|
|
21
|
+
8. **Brainstorm→Plan contract v1** — design.md 输入校验
|
|
22
|
+
|
|
23
|
+
### 新增契约链
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
brainstorm → design.md → [Design Contract 校验] → plan → plan.md → [Plan Contract 校验] → execute
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- **brainstorm → plan**: `validateDesignForPlan` — 3 error + 3 warning
|
|
30
|
+
- **plan → execute**: `validatePlanForExecute` — 5 error + 1 warning
|
|
31
|
+
- 双重校验:plan 完成时 + execute 启动时
|
|
32
|
+
|
|
33
|
+
### 新增 Stale Cascade 链
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
scan → brainstorm → plan → execute → verify → archive
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- `checkConsistency` 基于 STAGE_ORDER 遍历上游,自动发现下游假完成
|
|
40
|
+
- `repair` cascade:execute stale → verify/archive stale → verify stale → archive stale
|
|
41
|
+
|
|
42
|
+
## 测试执行
|
|
43
|
+
|
|
44
|
+
### 命令
|
|
45
|
+
```bash
|
|
46
|
+
cd ~/Desktop/sillyspec && npm test
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 测试套件 (15 个,274 断言)
|
|
50
|
+
|
|
51
|
+
| 测试套件 | 断言数 | 状态 |
|
|
52
|
+
|---------|-------|------|
|
|
53
|
+
| brainstorm-plan-contract.test.mjs | 11 | ✅ |
|
|
54
|
+
| plan-execute-contract.test.mjs | 12 | ✅ |
|
|
55
|
+
| platform-artifacts.test.mjs | 31 | ✅ |
|
|
56
|
+
| platform-failure-samples.test.mjs | 20 | ✅ |
|
|
57
|
+
| platform-recovery-chain.test.mjs | 15 | ✅ |
|
|
58
|
+
| platform-recovery.test.mjs | 19 | ✅ |
|
|
59
|
+
| platform-scan-p0.test.mjs | 19 | ✅ |
|
|
60
|
+
| revision-v1.test.mjs | 12 | ✅ |
|
|
61
|
+
| scan-paths.test.mjs | 38 | ✅ |
|
|
62
|
+
| scan-postcheck.test.mjs | 38 | ✅ |
|
|
63
|
+
| spec-dir.test.mjs | 15 | ✅ |
|
|
64
|
+
| stage-contract.test.mjs | 19 | ✅ |
|
|
65
|
+
| stage-definitions.test.mjs | 29 | ✅ |
|
|
66
|
+
| wait-gates.test.mjs | 15 | ✅ |
|
|
67
|
+
| worktree-guard.test.mjs | (included) | ✅ |
|
|
68
|
+
|
|
69
|
+
**总计:15 套件,274 断言,0 失败。**
|
|
70
|
+
|
|
71
|
+
## 主链路验收
|
|
72
|
+
|
|
73
|
+
### 1. 完整主链路 (scan → brainstorm → plan → execute → verify)
|
|
74
|
+
- ✅ stage-contract.test.mjs 覆盖了各阶段的校验与转换
|
|
75
|
+
- ✅ stage-definitions.test.mjs 覆盖了所有阶段定义的步骤初始化
|
|
76
|
+
- ✅ 无 contract 误伤
|
|
77
|
+
|
|
78
|
+
### 2. Plan 级别验收 (none/light/full)
|
|
79
|
+
- ✅ plan-execute-contract.test.mjs 覆盖 none/light/full
|
|
80
|
+
- ✅ plan postcheck 在 plan completion path 执行
|
|
81
|
+
- ✅ execute startup 二次校验保留
|
|
82
|
+
|
|
83
|
+
### 3. Revision 链路
|
|
84
|
+
- ✅ revision-v1.test.mjs 覆盖 reopen/repair/checkConsistency
|
|
85
|
+
- ✅ verify/archive --reopen 清除旧 completed steps
|
|
86
|
+
- ✅ execute --reopen 重新解析最新 plan.md
|
|
87
|
+
- ✅ repair cascade execute → verify → archive
|
|
88
|
+
|
|
89
|
+
### 4. Progress check/repair
|
|
90
|
+
- ✅ 正常状态无误报
|
|
91
|
+
- ✅ 异常状态报告清晰(checkConsistency 输出 upstream/downstream 关系)
|
|
92
|
+
- ✅ repair 只修 progress 元数据,不改产物文件
|
|
93
|
+
|
|
94
|
+
## 发现
|
|
95
|
+
|
|
96
|
+
**0 bug。** 274 个断言全部通过,无回归。
|
|
97
|
+
|
|
98
|
+
### 设计确认
|
|
99
|
+
- checkConsistency 和 repair 基于 STAGE_ORDER 通用遍历,不针对特定 stage
|
|
100
|
+
- verify/archive 用静态 steps,不需要从文件重解析
|
|
101
|
+
- contract validator 只在阶段边界执行,不影响阶段内步骤流转
|
|
102
|
+
- repair cascade 是自然结果,不需要硬编码 stage 间关系
|
|
103
|
+
|
|
104
|
+
## 文件变更统计
|
|
105
|
+
|
|
106
|
+
16 commits, 28 files changed, +3675/-689 lines。
|