sillyspec 3.29.3 → 3.29.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/asset-audit-2026-09-20/README.md +42 -0
  2. package/asset-audit-2026-09-20/asset-audit.cjs +253 -0
  3. package/asset-audit-2026-09-20/extract-candidates.cjs +37 -0
  4. package/asset-audit-2026-09-20/platform-archive.csv +294 -0
  5. package/asset-audit-2026-09-20/platform-fr.csv +12 -0
  6. package/asset-audit-2026-09-20/platform-gotchas.csv +6 -0
  7. package/asset-audit-2026-09-20/platform-knownissues.csv +23 -0
  8. package/asset-audit-2026-09-20/platform-modules.csv +222 -0
  9. package/asset-audit-2026-09-20/platform-quicklog.csv +1076 -0
  10. package/asset-audit-2026-09-20/platform-troubleshooting-candidates.csv +88 -0
  11. package/asset-audit-2026-09-20/platform-troubleshooting.csv +1 -0
  12. package/asset-audit-2026-09-20/sillyspec-archive.csv +108 -0
  13. package/asset-audit-2026-09-20/sillyspec-fr.csv +51 -0
  14. package/asset-audit-2026-09-20/sillyspec-gotchas.csv +4 -0
  15. package/asset-audit-2026-09-20/sillyspec-knownissues.csv +34 -0
  16. package/asset-audit-2026-09-20/sillyspec-modules.csv +30 -0
  17. package/asset-audit-2026-09-20/sillyspec-quicklog.csv +460 -0
  18. package/asset-audit-2026-09-20/sillyspec-troubleshooting.csv +69 -0
  19. package/asset-audit-2026-09-20/summary.json +241 -0
  20. package/assets/command-cards/run-archive.md +26 -0
  21. package/assets/command-cards/run-brainstorm.md +33 -0
  22. package/assets/command-cards/run-execute.md +29 -0
  23. package/assets/command-cards/run-plan.md +27 -0
  24. package/assets/command-cards/run-quick.md +34 -0
  25. package/assets/command-cards/run-verify.md +29 -0
  26. package/assets/command-cards/status.md +27 -0
  27. package/package.json +1 -1
  28. package/round4/account.mjs +85 -0
  29. package/round4/brief-autocompact.md +34 -0
  30. package/round4/brief-session-replay.md +50 -0
  31. package/round4/deep-read-synthesis.md +38 -0
  32. package/round4/extract-full.mjs +38 -0
  33. package/round4/extract-timeline.mjs +43 -0
  34. package/round4/find-sessions.mjs +13 -0
  35. package/round4/full-r4-l.md +4707 -0
  36. package/round4/full-r4-o-l.md +4300 -0
  37. package/round4/full-r4-os.md +1681 -0
  38. package/round4/full-r4-sf.md +4255 -0
  39. package/round4/full-r4-sq.md +1734 -0
  40. package/round4/gate-audit-relay-receipt.md +30 -0
  41. package/round4/gate-value-audit.md +52 -0
  42. package/round4/prereg.md +67 -0
  43. package/round4/prompt-R4-L.md +63 -0
  44. package/round4/prompt-R4-O-L.md +59 -0
  45. package/round4/prompt-R4-O-S.md +56 -0
  46. package/round4/prompt-R4-S-F.md +60 -0
  47. package/round4/prompt-R4-S-Q.md +66 -0
  48. package/round4/r4-os-timeline.txt +297 -0
  49. package/round4/r4-sf-timeline.txt +738 -0
  50. package/round4/r4-sq-timeline.txt +322 -0
  51. package/round4/r4l-timeline.txt +793 -0
  52. package/round4/r4ol-timeline.txt +729 -0
  53. package/round4/r4sf-timeline.txt +852 -0
  54. package/round4/result-S.md +171 -0
  55. package/round4/result-final.md +46 -0
  56. package/round4/result-quality.md +63 -0
  57. package/src/command-cards.js +73 -0
  58. package/src/contract-matrix.js +26 -5
  59. package/src/cross-repo-reconcile.js +232 -46
  60. package/src/diagnostic-codes.js +2 -1
  61. package/src/fr-index.js +58 -2
  62. package/src/index.js +35 -8
  63. package/src/init.js +25 -8
  64. package/src/machine-interface.js +88 -3
  65. package/src/module-impact.js +51 -22
  66. package/src/run/bg-sync.js +231 -0
  67. package/src/run/command.js +4 -0
  68. package/src/run/complete-handlers.js +244 -6
  69. package/src/run/complete.js +6 -3
  70. package/src/run/gate-snapshot.js +10 -4
  71. package/src/run/gates.js +124 -42
  72. package/src/run/prompt.js +1 -1
  73. package/src/run/quick-audit.js +28 -2
  74. package/src/run/shared.js +35 -1
  75. package/src/scope-audit.js +303 -20
  76. package/src/stages/execute.js +2 -2
  77. package/src/stages/plan-postcheck.js +33 -19
  78. package/src/stages/quick.js +2 -0
  79. package/src/sync.js +12 -0
  80. package/src/taskcard-frontmatter.js +57 -0
  81. package/src/verify-postcheck.js +68 -6
  82. package/src/verify-probes.js +45 -23
@@ -0,0 +1,69 @@
1
+ "file","seq","title"
2
+ "docs/sillyspec/troubleshooting.md","1","1. Stage Review marker runId 格式(review- 前缀,CLI 自动生成)"
3
+ "docs/sillyspec/troubleshooting.md","2","2. docHash 漂移(design 改一字就要重算 sha256 + 续审)"
4
+ "docs/sillyspec/troubleshooting.md","3","3. 子代理撞主模型 5h 限额(429 中断)"
5
+ "docs/sillyspec/troubleshooting.md","4","4. requiresWait 两段式(--wait/--continue + AskUserQuestion)"
6
+ "docs/sillyspec/troubleshooting.md","5","5. _module-map.yaml schema_version=1 警告刷屏(已止血,根因待修)"
7
+ "docs/sillyspec/troubleshooting.md","6","6. QUICKLOG 轮转归档(提交时带上)"
8
+ "docs/sillyspec/troubleshooting.md","7","7. home 下长出平行 .sillyspec(读路径建库 + 向上解析无守卫,已根治)"
9
+ "docs/sillyspec/troubleshooting.md","8","8. `run quick --help` 误开会话(--help 被静默吞,已修)"
10
+ "docs/sillyspec/troubleshooting.md","9","9. quick --done 审计把并行会话的删除算成本会话(双重误判,2026-08-16 实证)"
11
+ "docs/sillyspec/troubleshooting.md","10","10. 并发状态分裂三坑(execute run 目录静默缺失 / apply --merge baseline 冲突 / 活文档引用漂移,2026-08-16 闭环)"
12
+ "docs/sillyspec/troubleshooting.md","11","11. archive module-impact 检查失败打印裸 [object Object](2026-08-19 实证)"
13
+ "docs/sillyspec/troubleshooting.md","12","12. plan 生成 module-impact 章节名与 archive-impact 契约不同源(2026-08-19 实证)"
14
+ "docs/sillyspec/troubleshooting.md","13","13. 工具驾驭三坑:review.json 手工回填 / --answer 提示滞后 / base_ts 冲突再现(2026-08-19 闭环)"
15
+ "docs/sillyspec/troubleshooting.md","14","14. quick 末步四字段模板展示滞后(2026-08-20 已修)"
16
+ "docs/sillyspec/troubleshooting.md","15","15. 三坑:install 白名单拒 monorepo 链式 / doctor --fix 误删活跃分支 / verify-postcheck CRLF(2026-08-20 闭环)"
17
+ "docs/sillyspec/troubleshooting.md","16","16. 四坑:execute 步骤表漂移 / doctor align 绕过 review 门 / modules 引号值转义 / taskcard 反引号(2026-08-20 闭环)"
18
+ "docs/sillyspec/troubleshooting.md","17","17. 三坑:ruff format × CRLF stash 死循环 / docHash 手工联动 / task review 草稿漏 task(2026-08-21 闭环)"
19
+ "docs/sillyspec/troubleshooting.md","18","18. quick 会话的文件路径规则提示误导纯代码 quick(2026-08-21 已修)"
20
+ "docs/sillyspec/troubleshooting.md","19","19. 三坑:建议命令缺 --change / baseline 裹挟跨变更 spec 文档 / 草稿归属漏未提交改动(2026-08-21 闭环)"
21
+ "docs/sillyspec/troubleshooting.md","20","20. 手动归档绕行 → 自愈/幽灵清理只翻 status,平台渲染成「进度丢失」(2026-08-21 闭环)"
22
+ "docs/sillyspec/troubleshooting.md","21","21. 三坑:apply 后提交误扫 / 他者半归档残留无提示 / review 引用分支只能手动保留(2026-08-21 闭环)"
23
+ "docs/sillyspec/troubleshooting.md","22","22. 四坑:provision 假 installed / 验证 task 零 diff 误杀 / Wave 漏识别 / taskcard 逐卡裁决(2026-08-21 闭环)"
24
+ "docs/sillyspec/troubleshooting.md","23","23. 四坑:parity 扫描噪音 / module 0 命中未提交改动 / junction 假成功第②层 / 模板元数据头滞后(2026-08-21 闭环)"
25
+ "docs/sillyspec/troubleshooting.md","24","24. 三坑:归档尾声 sync 噪音 / 孤儿 worktree 物理目录 / progress show 停留旧阶段(2026-08-21 闭环)"
26
+ "docs/sillyspec/troubleshooting.md","25","25. 三坑:未落仓虚警 / 归档变更 worktree 误供给 / verify 服务进程泄漏(2026-08-21 闭环)"
27
+ "docs/sillyspec/troubleshooting.md","26","26. 坑 22-① 复发:monorepo 子包假 installed(2026-08-22 闭环)"
28
+ "docs/sillyspec/troubleshooting.md","27","27. 四坑(全程总结批):junction 丢失强装依赖 / apply ENOBUFS / 字面证据误拦 / 跨变更冲突无预警(2026-08-22 闭环)"
29
+ "docs/sillyspec/troubleshooting.md","28","28. 两坑:module 匹配对 monorepo 布局失灵 / dev server 端口竞争误判(2026-08-22 闭环)"
30
+ "docs/sillyspec/troubleshooting.md","29","29. 三坑:head 真实 commit 契约后知 / changedFiles 注记后缀误判不相交 / 文档债拖到 verify 才拦(2026-08-22 闭环)"
31
+ "docs/sillyspec/troubleshooting.md","30","30. 两坑:--file-notes 非末步静默丢 / --files 追加不解锁危险拦截(2026-08-22 闭环)"
32
+ "docs/sillyspec/troubleshooting.md","31","31. 两坑:关联变更遗留误拦 / tasks.md 追加行落「提案书(Proposal)」占位(2026-08-22 闭环)"
33
+ "docs/sillyspec/troubleshooting.md","32","32. 三坑:TaskCard body 章节返工 / design 组合单元格对账过严 / 并发宽严不一致无说明(2026-08-22 闭环)"
34
+ "docs/sillyspec/troubleshooting.md","33","33. 三坑:探针5基线失配全量误报 / 子代理未 commit 纯新增文件 apply 炸 / pull 部署噪声落冲突(2026-08-23 闭环)"
35
+ "docs/sillyspec/troubleshooting.md","34","34. 五坑:状态机矛盾 / autoCheck 写 worktree / 子模块漏链 / 探针5口径 / 共享主仓竞态(2026-08-23 闭环)"
36
+ "docs/sillyspec/troubleshooting.md","35","35. 两坑:并行会话已声明文件误拦 / 四字段模板防线后置(2026-08-23 闭环)"
37
+ "docs/sillyspec/troubleshooting.md","36","36. 五坑:doctor 假 re-provisioned / apply 并发互踩+整批跳过 / push 409 内容一致自愈失效(sort TypeError)/ 409 横幅刷屏 / created_at UTC(2026-08-23 闭环)"
38
+ "docs/sillyspec/troubleshooting.md","37","37. 四坑:--merge 冲突即 abort / 已 merge 分支误判未落地 / archive 子确认碎 / verify 对账误伤+跨会话杀进程(2026-08-23 闭环)"
39
+ "docs/sillyspec/troubleshooting.md","38","38. 三坑:register-repo CRLF 假成功死循环 / 幽灵目录 junction 穿透 / 派生产物旧基线覆盖(2026-08-23 闭环)"
40
+ "docs/sillyspec/troubleshooting.md","39","39. 三坑:多行装饰器漏扫端点误报 / 探针1 worktree 路径盲区 / baseline checkpoint 夹带不透明 + FAIL 重验成本无预告(2026-08-24 闭环)"
41
+ "docs/sillyspec/troubleshooting.md","40","40. 三坑:主仓在途改动 apply 三路死锁 / stash pop 静默不落地 / review 未声明的执行期偏差拦 apply(2026-08-24 闭环)"
42
+ "docs/sillyspec/troubleshooting.md","41","41. 两坑:同名分支冲突死锁+误导删分支 / brainstorm-auto 无模板骨架连环卡字面门(2026-08-24 闭环)"
43
+ "docs/sillyspec/troubleshooting.md","42","42. 多会话单工作区混战(固有风险记录,2026-08-24 用户实证归档)"
44
+ "docs/sillyspec/troubleshooting.md","43","43. 三坑:跨变更归属排除警告刷屏 / 并行子代理 taskcard CLI 撞 SQLite 锁 / worktree editable-install 越界(2026-08-25 闭环)"
45
+ "docs/sillyspec/troubleshooting.md","44","44. 一坑:Git Bash(MSYS) 路径转换污染 quick prose 参数(2026-08-27 闭环)"
46
+ "docs/sillyspec/troubleshooting.md","45","45. 一坑:verify 测试对账把含 failed 字样的通过行误判失败行(2026-08-28 闭环)"
47
+ "docs/sillyspec/troubleshooting.md","46","46. 一坑:verify 对账把 vitest 捕获块【内容行】误判失败行(2026-08-31 闭环)"
48
+ "docs/sillyspec/troubleshooting.md","47","47. 一坑:endpoints artifact 不含挂载前缀 → 探针 5 全量假 missing(2026-08-31 闭环)"
49
+ "docs/sillyspec/troubleshooting.md","48","48. 一坑:verify 对账把 pytest warnings summary 误判失败行(2026-09-02 闭环)"
50
+ "docs/sillyspec/troubleshooting.md","49","49. 一坑:conditionalWait 步骤 --continue 被 --answer 直接收尾,agent 备好的 --done 落到下一步假完成(2026-09-02 闭环)"
51
+ "docs/sillyspec/troubleshooting.md","50","50. 一坑:per-task review 的 base..head 与「主代理统一 commit」模式天然冲突(2026-09-02 闭环)"
52
+ "docs/sillyspec/troubleshooting.md","51","51. 一坑:spec-sync 未决冲突期间横幅连环刷屏 + 残留标记永久红标(2026-09-03 闭环)"
53
+ "docs/sillyspec/troubleshooting.md","52","52. 三坑:spec 树冲突无「接受服务器版本」/ quick WARNING 审计无解法指引 / 空壳会话只能手工清(2026-09-03 闭环)"
54
+ "docs/sillyspec/troubleshooting.md","53","53. 三坑:--done 对不存在 change 静默新建 / progress repair 对双库分裂失明 / docHash 失配忘手动刷新(2026-09-04 闭环)"
55
+ "docs/sillyspec/troubleshooting.md","54","54. 一坑:spec-sync 间歇打 ""This operation was aborted"" 像未知异常(2026-09-07 闭环)"
56
+ "docs/sillyspec/troubleshooting.md","55","55. 三坑:verify 判账 tail 盲区归因难 / 豁免匹配不剥 ANSI / known_failures 连续链解析脆弱(2026-09-07 闭环)"
57
+ "docs/sillyspec/troubleshooting.md","56","56. 归档转换拦截「execute → archive」:--done 直达完成不写 currentStage(2026-09-08 已修复)"
58
+ "docs/sillyspec/troubleshooting.md","57","57. 两坑:pre-commit stash-restore 吞常规提交(三现)/ 批量文本替换无 assert 静默流失(2026-09-10 用户实证,workaround 文档化)"
59
+ "docs/sillyspec/troubleshooting.md","58","59. 三坑 postmortem:跨仓 worktree 被主仓清理面误删 / 跨仓 baseline checkpoint 卷入外来文件 / 门禁沙箱环境不一致(2026-09-12 用户实证,已修复)"
60
+ "docs/sillyspec/troubleshooting.md","59","60. 三坑:门禁沙箱环境缺失必挂(只能 advisory)/ 中断续跑半成品无主 / 回执解析全角缺陷(2026-09-12 用户实证,已修复)"
61
+ "docs/sillyspec/troubleshooting.md","60","61. 两坑:门禁快照对 monorepo 依赖布局不可用(四次重试才定位路径)/ baseline checkpoint 卷入 289MB 部署 tar.gz(2026-09-12 用户实证,已修复)"
62
+ "docs/sillyspec/troubleshooting.md","61","62. 两坑:审计 fail-closed 误伤并行会话 spec 残留(归档移动/未跟踪脚本)/ gen:types 行尾重写假 M(2026-09-12 用户实证,已修复)"
63
+ "docs/sillyspec/troubleshooting.md","62","63. 四坑:review.json 神秘空壳覆写(溯源戳根治)/ pnpm 沙箱必假败(布局探测跳过)/ probe1 NEW: 前缀失配噪声 / bash 长 heredoc 截断(2026-09-12 用户实证,已修复/落档)"
64
+ "docs/sillyspec/troubleshooting.md","63","64. apply 与并行会话工作区互相冲掉(2026-09-14 用户实证,已修复/落档)"
65
+ "docs/sillyspec/troubleshooting.md","64","65. 两坑:归档后 worktree 被并行会话代劳清理(change 无所有权)/ review 放行通道放进外来文件(2026-09-14 用户实证,护栏方向已立项)"
66
+ "docs/sillyspec/troubleshooting.md","65","66. 五坑:execute 双真相门禁口径(worktree 感知收敛)(2026-09-15 用户实证,已修复)"
67
+ "docs/sillyspec/troubleshooting.md","66","67. quick/全流程 `--done` 被 spec-sync 网络尾巴拖住分钟级不返回(2026-09-20 用户实证,已修复)"
68
+ "docs/troubleshooting.md","67","sillyspec 命令报 `Cannot find module '.../node_modules/sillyspec/bin/sillyspec.js'`"
69
+ "docs/troubleshooting.md","68","给 sillyspec 写测试 / 改 CRLF 文件时 Edit 工具失配"
@@ -0,0 +1,241 @@
1
+ {
2
+ "generatedAt": "2026-09-20T12:27:35.518Z",
3
+ "repos": {
4
+ "sillyspec": {
5
+ "root": "C:/Users/qinyi/IdeaProjects/sillyspec",
6
+ "archive": {
7
+ "total": 107,
8
+ "fullSixDocs": 43,
9
+ "dateRange": "2026-04-08 ~ 2026-09-20",
10
+ "datedNamed": 95,
11
+ "activeChanges": [
12
+ "2026-09-20-quick-asset-tail"
13
+ ]
14
+ },
15
+ "quicklog": {
16
+ "files": 11,
17
+ "entries": 459,
18
+ "status": {
19
+ "已完成": 436,
20
+ "已完成(代码并入 commit 4a5f596,与 --no-worktree 谎言修复混提;message 漏标 7 bug)": 2,
21
+ "已完成(经直接 git commit,非 quick --done——quick 审计 shared.js:516 对文件删除恒 blocked 无 flag 解锁,A6 必删 propose.js/propose.md 故走 quick 不通)": 2,
22
+ "已废弃": 1,
23
+ "进行中": 11,
24
+ "已取消": 7
25
+ },
26
+ "byMonth": {
27
+ "2026-06": 12,
28
+ "2026-07": 8,
29
+ "2026-08": 230,
30
+ "2026-09": 209
31
+ },
32
+ "firstTs": "2026-06-04 16:47:41",
33
+ "lastTs": "2026-09-20 18:19:21"
34
+ },
35
+ "moduleDocs": {
36
+ "count": 29,
37
+ "totalLines": 2455,
38
+ "byDir": {
39
+ ".sillyspec/docs/dashboard/modules": 6,
40
+ ".sillyspec/docs/sillyspec/modules": 23
41
+ }
42
+ },
43
+ "troubleshooting": {
44
+ "files": [
45
+ "docs/sillyspec/troubleshooting.md",
46
+ "docs/troubleshooting.md"
47
+ ],
48
+ "entries": 68,
49
+ "numberedEntries": 66
50
+ },
51
+ "knownIssues": {
52
+ "exists": true,
53
+ "entries": 33,
54
+ "statusTally": {},
55
+ "lines": 172
56
+ },
57
+ "frIndex": {
58
+ "entries": 50,
59
+ "withConfirm": 47,
60
+ "confirmVerified": 47
61
+ },
62
+ "gotchas": {
63
+ "files": 3,
64
+ "entries": 24,
65
+ "byFile": {
66
+ "conventions.md": 13,
67
+ "patterns.md": 10,
68
+ "uncategorized.md": 1
69
+ },
70
+ "indexRouteLines": 62
71
+ },
72
+ "tests": {
73
+ "testFiles": 554,
74
+ "testLines": 102854,
75
+ "regressionPinIndicator": 17,
76
+ "byTopLevelDir": {
77
+ "test": 554
78
+ }
79
+ },
80
+ "git": {
81
+ "commits": 1376,
82
+ "head": "41cb1a61",
83
+ "lastCommitDate": "2026-09-20"
84
+ },
85
+ "misc": {
86
+ "roadmap": {
87
+ "exists": true,
88
+ "lines": 22,
89
+ "items": 2
90
+ },
91
+ "knowledgeIndex": {
92
+ "exists": true,
93
+ "lines": 84
94
+ },
95
+ "redlinesYaml": false
96
+ }
97
+ },
98
+ "platform": {
99
+ "root": "C:/Users/qinyi/IdeaProjects/multi-agent-platform",
100
+ "archive": {
101
+ "total": 293,
102
+ "fullSixDocs": 16,
103
+ "dateRange": "2026-05-25 ~ 2026-09-20",
104
+ "datedNamed": 286,
105
+ "activeChanges": [
106
+ "2026-07-23-milestone-mobile",
107
+ "2026-09-03-agent-provider-abstraction",
108
+ "2026-09-03-group-chat-archive-delete",
109
+ "2026-09-04-conflict-resolve-entry",
110
+ "2026-09-07-pi-task-events",
111
+ "2026-09-07-session-pin-rename-scheduled-send",
112
+ "2026-09-08-cursor-interactive-session",
113
+ "2026-09-08-session-list-liveness-dot",
114
+ "2026-09-09-conflict-root-workspace-scoping",
115
+ "2026-09-09-sessions-file-browser-three-pane",
116
+ "2026-09-09-sessions-visual-refresh",
117
+ "2026-09-10-auto-resume-interrupted-turn",
118
+ "2026-09-10-group-agent-direct-chat",
119
+ "2026-09-10-review-dispatch-platform-fixes",
120
+ "2026-09-10-zcode-session-sqlite-read",
121
+ "2026-09-11-agent-log-attribution-refactor",
122
+ "2026-09-11-provider-adapter-registry",
123
+ "2026-09-11-session-provider-switch-codex-pi",
124
+ "2026-09-12-provider-file-tx",
125
+ "2026-09-12-session-live-display-fixes",
126
+ "2026-09-13-consensus-timeout-activity-aware",
127
+ "2026-09-13-session-group-ux-fixes",
128
+ "2026-09-14-session-ctx-compact",
129
+ "2026-09-14-session-export",
130
+ "2026-09-14-session-thinking-level",
131
+ "2026-09-14-workspace-drag-sort",
132
+ "2026-09-15-background-task-notification-delivery",
133
+ "2026-09-15-background-task-permission-lockout",
134
+ "2026-09-15-subagent-three-pane-display",
135
+ "2026-09-16-background-task-grace-timeout",
136
+ "2026-09-16-logs-cursor-tiebreaker",
137
+ "2026-09-16-mobile-changes-parity",
138
+ "2026-09-16-platform-progress-ingest-persist",
139
+ "2026-09-17-knowledge-precipitation",
140
+ "2026-09-18-single-chat-steering",
141
+ "2026-09-18-web-menu-management",
142
+ "2026-09-20-claude-autocompact-config",
143
+ "2026-09-20-scope-audit-cross-repo-platform",
144
+ "default"
145
+ ]
146
+ },
147
+ "quicklog": {
148
+ "files": 25,
149
+ "entries": 1075,
150
+ "status": {
151
+ "已完成": 1023,
152
+ "进行中": 41,
153
+ "已完成(3 commit 本地,push 待 GitHub 网络 port 443 连不上)": 1,
154
+ "已完成(纯调研;曾尝试 running-skip 修复已 revert)": 1,
155
+ "(未标)": 1,
156
+ "已完成(commit 5f39f496,已 push main)": 1,
157
+ "已完成(commit e9866a0b,已 push main)": 1,
158
+ "已完成(commit 913503ad,已 push main)": 1,
159
+ "已暂存(git add install.sh,未 commit;本机 .cmd 已手工修可立即用)": 1,
160
+ "已暂存(git add 4 文件,未 commit;DB 已临时 ALTER 生效;待 build backend 持久化)": 1,
161
+ "已完成(⚠️ quick --done 审计拦删除无法收尾,经用户确认直接 git 提交)": 1,
162
+ "已完成(分支 sillyspec/2026-09-10-mcp-central-registry 提交 83932255e,待随分支 ff 合并)": 1,
163
+ "已取消": 1
164
+ },
165
+ "byMonth": {
166
+ "2026-06": 216,
167
+ "2026-07": 184,
168
+ "2026-08": 364,
169
+ "2026-09": 311
170
+ },
171
+ "firstTs": "2026-06-04 09:11:09",
172
+ "lastTs": "2026-09-20 18:30:19"
173
+ },
174
+ "moduleDocs": {
175
+ "count": 221,
176
+ "totalLines": 14615,
177
+ "byDir": {
178
+ ".sillyspec/docs/backend/modules": 36,
179
+ ".sillyspec/docs/frontend/modules": 87,
180
+ ".sillyspec/docs/multi-agent-platform/modules": 11,
181
+ ".sillyspec/docs/sillyhub-daemon/modules": 51,
182
+ ".sillyspec/docs/SillyHub/modules": 36
183
+ }
184
+ },
185
+ "troubleshooting": {
186
+ "files": [],
187
+ "entries": 0,
188
+ "numberedEntries": 0
189
+ },
190
+ "knownIssues": {
191
+ "exists": true,
192
+ "entries": 22,
193
+ "statusTally": {},
194
+ "lines": 163
195
+ },
196
+ "frIndex": {
197
+ "entries": 11,
198
+ "withConfirm": 11,
199
+ "confirmVerified": 11
200
+ },
201
+ "gotchas": {
202
+ "files": 5,
203
+ "entries": 76,
204
+ "byFile": {
205
+ "conventions.md": 11,
206
+ "patterns.md": 10,
207
+ "sillyspec-gotchas.md": 10,
208
+ "testing-gotchas.md": 6,
209
+ "uncategorized.md": 39
210
+ },
211
+ "indexRouteLines": 74
212
+ },
213
+ "tests": {
214
+ "testFiles": 320,
215
+ "testLines": 132284,
216
+ "regressionPinIndicator": 2,
217
+ "byTopLevelDir": {
218
+ "frontend": 80,
219
+ "sillyhub-daemon": 240
220
+ }
221
+ },
222
+ "git": {
223
+ "commits": 2994,
224
+ "head": "82a76721f",
225
+ "lastCommitDate": "2026-09-20"
226
+ },
227
+ "misc": {
228
+ "roadmap": {
229
+ "exists": true,
230
+ "lines": 241,
231
+ "items": 34
232
+ },
233
+ "knowledgeIndex": {
234
+ "exists": true,
235
+ "lines": 106
236
+ },
237
+ "redlinesYaml": true
238
+ }
239
+ }
240
+ }
241
+ }
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: sillyspec:run-archive
3
+ description: archive 归档阶段:变更产物归档+知识蒸馏+FR/决策入库
4
+ ---
5
+ # 何时用
6
+
7
+ verify PASS 后归档:目录迁移+distill 知识沉淀+活文档同步。
8
+
9
+ # 生命周期速查
10
+
11
+ ```bash
12
+ export SILLYSPEC_SESSION_ID=<agent名+任务名> # 每条命令都带(shell 状态不持久;多会话并行的所有权判定依赖它)
13
+ sillyspec run archive --change <变更名>
14
+ sillyspec run archive --done --change <变更名> --output "<归档摘要>"
15
+ # 在隔离 worktree 内跑时(守卫默认拒绝,需双 flag):
16
+ # sillyspec <cmd> --allow-worktree-cwd --spec-dir "<worktree>/.sillyspec"
17
+ ```
18
+
19
+ # 防坑清单
20
+
21
+ - 归档是移动不是复制——活跃目录会被迁走,勿在归档中途手改。
22
+ - 跨仓同步检查(multi-repo 场景)在归档收口统一出。
23
+
24
+ # 边界声明
25
+
26
+ 本卡不含步骤内容——每步的具体指令由 `sillyspec run archive` 按当前状态实时渲染(含门禁、审查档位、产物契约)。本卡只管启动与防坑。
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: sillyspec:run-brainstorm
3
+ description: brainstorm 头脑风暴阶段:需求澄清→四件套→设计→Grill 审查
4
+ ---
5
+ # 何时用
6
+
7
+ 新能力/行为契约变更/跨模块取舍——需要落盘设计决策的变更,第一步走这里(判规模:范围明确的局部修补走 run-quick)。
8
+
9
+ # 生命周期速查
10
+
11
+ ```bash
12
+ export SILLYSPEC_SESSION_ID=<agent名+任务名> # 每条命令都带(shell 状态不持久;多会话并行的所有权判定依赖它)
13
+ sillyspec run brainstorm --change <变更名> --input "<需求一句话>"
14
+ # 每步产出后:
15
+ sillyspec run brainstorm --done --change <变更名> --output "<摘要>"
16
+ # 方案选择/设计确认等用户决策点(已拍板则一步落):
17
+ sillyspec run brainstorm --done --answer "<用户回答>" --change <变更名> --output "<摘要>"
18
+ # 预检省一轮返工:
19
+ sillyspec gate brainstorm --change <变更名>
20
+ # 在隔离 worktree 内跑时(守卫默认拒绝,需双 flag):
21
+ # sillyspec <cmd> --allow-worktree-cwd --spec-dir "<worktree>/.sillyspec"
22
+ ```
23
+
24
+ # 防坑清单
25
+
26
+ - 四件套/设计/任务卡一律用 CLI 骨架生成(fourpiece-init / design-init / taskcard)——手拼 frontmatter 会被门禁拦。
27
+ - design.md 计划新建的文件路径必须带 `NEW:` 前缀(末步存在性核验铁律)。
28
+ - Grill 审查档 S2=独立子代理单轮;审查者只读,唯一可写 review.json;FAIL 后 resume 同一审查者只验阻断项(禁全文重审)。
29
+ - 用户决策点用 --answer 落既有决策,不要空等。
30
+
31
+ # 边界声明
32
+
33
+ 本卡不含步骤内容——每步的具体指令由 `sillyspec run brainstorm` 按当前状态实时渲染(含门禁、审查档位、产物契约)。本卡只管启动与防坑。
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: sillyspec:run-execute
3
+ description: execute 执行阶段:按 Wave 逐任务实现(子代理或直做)+ 逐 task review
4
+ ---
5
+ # 何时用
6
+
7
+ plan 收口后写代码。多 agent 共享仓——开工前重读目标文件最新态。
8
+
9
+ # 生命周期速查
10
+
11
+ ```bash
12
+ export SILLYSPEC_SESSION_ID=<agent名+任务名> # 每条命令都带(shell 状态不持久;多会话并行的所有权判定依赖它)
13
+ sillyspec run execute --change <变更名>
14
+ sillyspec run execute --done --change <变更名> --output "<摘要>"
15
+ # 逐 task review.json:
16
+ sillyspec review write --change <变更名> --task task-NN --spec <verdict> --quality <verdict>
17
+ # 在隔离 worktree 内跑时(守卫默认拒绝,需双 flag):
18
+ # sillyspec <cmd> --allow-worktree-cwd --spec-dir "<worktree>/.sillyspec"
19
+ ```
20
+
21
+ # 防坑清单
22
+
23
+ - 改前重跑读最新态(多 agent 并行,Edit 前文件可能已被他侧改)。
24
+ - review 的 changedFiles 必须与本 task 卡 target_files/allowed_paths 相交(完全不相交过不了门)。
25
+ - 破坏性 git op 前先备份;禁止跳过 hook。
26
+
27
+ # 边界声明
28
+
29
+ 本卡不含步骤内容——每步的具体指令由 `sillyspec run execute` 按当前状态实时渲染(含门禁、审查档位、产物契约)。本卡只管启动与防坑。
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: sillyspec:run-plan
3
+ description: plan 计划阶段:复杂度分类→分级计划→计划审查→TaskCard→Wave 校验
4
+ ---
5
+ # 何时用
6
+
7
+ brainstorm 收口后拆任务排 Wave(plan_level=light 走轻计划,仍需 Wave 结构与任务卡)。
8
+
9
+ # 生命周期速查
10
+
11
+ ```bash
12
+ export SILLYSPEC_SESSION_ID=<agent名+任务名> # 每条命令都带(shell 状态不持久;多会话并行的所有权判定依赖它)
13
+ sillyspec run plan --change <变更名>
14
+ sillyspec run plan --done --change <变更名> --output "<摘要>"
15
+ # 在隔离 worktree 内跑时(守卫默认拒绝,需双 flag):
16
+ # sillyspec <cmd> --allow-worktree-cwd --spec-dir "<worktree>/.sillyspec"
17
+ ```
18
+
19
+ # 防坑清单
20
+
21
+ - plan.md 的 Wave 段只收纯 ID 引用行(`- task-01`),带括注长文会被 execute 契约门禁拦。
22
+ - 任务卡用 Edit 填充勿整文件重写(CRLF/漏字段回归);taskcard 骨架占位符未替换会被 --done 硬校验拦。
23
+ - 卡内 depends_on 必须与 tasks.md 注册表一致(分叉=执行序错乱)。
24
+
25
+ # 边界声明
26
+
27
+ 本卡不含步骤内容——每步的具体指令由 `sillyspec run plan` 按当前状态实时渲染(含门禁、审查档位、产物契约)。本卡只管启动与防坑。
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: sillyspec:run-quick
3
+ description: quick 轻流程:无落盘设计决策的小修补,三步到 --done
4
+ ---
5
+ # 何时用
6
+
7
+ 范围明确的局部修补(判据见 AGENTS.md 第 6 条;倒推 B 模式=代码先写好用 --done 收尾登记)。
8
+
9
+ # 生命周期速查
10
+
11
+ ```bash
12
+ export SILLYSPEC_SESSION_ID=<agent名+任务名> # 每条命令都带(shell 状态不持久;多会话并行的所有权判定依赖它)
13
+ # 启动(--input 必带,缺了占位标题/CLI 警告劝重启白跑一轮):
14
+ sillyspec run quick --input "<语义化标题>"
15
+ # 步进(每步产出后):
16
+ sillyspec run quick --done --change quick-<会话ID> --output "<摘要>"
17
+ # 末步收尾(四参数结构化落账 + 文件括注 + 关联变更):
18
+ sillyspec run quick --done --change quick-<会话ID> --req "<一句话标题>" --cause "<为什么改>" --solution "<怎么改的>" --result "<验证情况:测试数/lint/部署>" --file-notes "path::括注 || path2::括注" --linked-changes <关联的正式变更名>
19
+ # 在隔离 worktree 内跑时(守卫默认拒绝,需双 flag):
20
+ # sillyspec <cmd> --allow-worktree-cwd --spec-dir "<worktree>/.sillyspec"
21
+ # 断点恢复:
22
+ sillyspec progress show # 查进度后续跑
23
+ ```
24
+
25
+ # 防坑清单
26
+
27
+ - --done 时显式 --linked-changes 有效(会并入 guard:蒸馏尾/轻归档/QUICKLOG 关联行都吃它);'none' 清空。
28
+ - 触及 src/test 的改动 --done 门禁会亲自实测 local.yaml 的 test/lint——想省「被拦→修→重跑」一轮就先自跑。
29
+ - 纯 lint 失败重试时门禁仍会全量重测(已知损耗,勿绕门)。
30
+ - 显式 pathspec 提交(`git commit -m "..." -- 文件…`),禁 git add -A。
31
+
32
+ # 边界声明
33
+
34
+ 本卡不含步骤内容——每步的具体指令由 `sillyspec run quick` 按当前状态实时渲染(含门禁、审查档位、产物契约)。本卡只管启动与防坑。
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: sillyspec:run-verify
3
+ description: verify 验证阶段:探针核验+测试对账+验收报告
4
+ ---
5
+ # 何时用
6
+
7
+ execute 收口后对照文档验收(probe 契约+known_failures 对账+测试绿)。
8
+
9
+ # 生命周期速查
10
+
11
+ ```bash
12
+ export SILLYSPEC_SESSION_ID=<agent名+任务名> # 每条命令都带(shell 状态不持久;多会话并行的所有权判定依赖它)
13
+ sillyspec run verify --change <变更名>
14
+ sillyspec run verify --done --change <变更名> --output "<验收摘要>"
15
+ # 探针骨架缺失时:
16
+ sillyspec verify-probes --init --change <变更名> # 已存在加 --force 刷新
17
+ # 在隔离 worktree 内跑时(守卫默认拒绝,需双 flag):
18
+ # sillyspec <cmd> --allow-worktree-cwd --spec-dir "<worktree>/.sillyspec"
19
+ ```
20
+
21
+ # 防坑清单
22
+
23
+ - gate 失败明细落 .runtime/verify-runs/gate-<stage>-<change>.json(勿靠 stdout 记忆)。
24
+ - 非测试逻辑有误禁改测试来过——修逻辑。
25
+ - known_failures 豁免只在 local.yaml 声明位置复核,勿手抄。
26
+
27
+ # 边界声明
28
+
29
+ 本卡不含步骤内容——每步的具体指令由 `sillyspec run verify` 按当前状态实时渲染(含门禁、审查档位、产物契约)。本卡只管启动与防坑。
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: sillyspec:status
3
+ description: 状态查询:进度/变更清单/断点恢复入口
4
+ ---
5
+ # 何时用
6
+
7
+ 任何时刻查「我在哪、下一步做什么」——多变更并行时先看再动。
8
+
9
+ # 生命周期速查
10
+
11
+ ```bash
12
+ export SILLYSPEC_SESSION_ID=<agent名+任务名> # 每条命令都带(shell 状态不持久;多会话并行的所有权判定依赖它)
13
+ sillyspec progress show [--change <名>] [--all] [--json]
14
+ sillyspec status
15
+ # 有信号变更(冲突/滞留/疑似完成)保持详情渲染;--all 展开全部
16
+ # 在隔离 worktree 内跑时(守卫默认拒绝,需双 flag):
17
+ # sillyspec <cmd> --allow-worktree-cwd --spec-dir "<worktree>/.sillyspec"
18
+ ```
19
+
20
+ # 防坑清单
21
+
22
+ - 多会话并行:变更各自 --change 隔离,永不 reset 他人变更。
23
+ - 中途停下不靠额外命令存进度——上次 --done 已落盘。
24
+
25
+ # 边界声明
26
+
27
+ 本卡不含步骤内容——每步的具体指令由 `sillyspec run status` 按当前状态实时渲染(含门禁、审查档位、产物契约)。本卡只管启动与防坑。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sillyspec",
3
- "version": "3.29.3",
3
+ "version": "3.29.5",
4
4
  "description": "SillySpec CLI — 流程状态机,让 AI 严格按步骤来",
5
5
  "icon": "logo.jpg",
6
6
  "homepage": "https://sillyspec.ppdmq.top/",
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/env node
2
+ // R4 对照实验·核算脚本 —— zcode db 会话级 token/请求/时长归账
3
+ // 用法:node account.mjs [--arm R4] [--title 关键词] [--since 2026-09-19]
4
+ // 注意(第2/3轮各踩一次的坑):model_usage.started_at / session.time_created 均按
5
+ // 数值 epoch-ms 处理;若遇 ISO 字符串自动 Date.parse 兜底,绝不字符串比较。
6
+ import { DatabaseSync } from 'node:sqlite';
7
+
8
+ const DB = 'C:/Users/qinyi/.zcode/cli/db/db.sqlite';
9
+ const args = process.argv.slice(2);
10
+ const flag = (k) => { const i = args.indexOf(k); return i >= 0 ? args[i + 1] : null; };
11
+
12
+ const toMs = (v) => {
13
+ if (v === null || v === undefined) return null;
14
+ if (typeof v === 'number') return v;
15
+ const s = String(v);
16
+ if (/^\d+$/.test(s)) return Number(s);
17
+ const p = Date.parse(s.includes('T') ? s : s.replace(' ', 'T') + '+08:00');
18
+ return Number.isNaN(p) ? null : p;
19
+ };
20
+ const fmtMin = (ms) => (ms == null ? '?' : (ms / 60000).toFixed(1) + 'min');
21
+ const fmtTok = (t) => (t == null ? '?' : (t / 1e6).toFixed(2) + 'M');
22
+
23
+ const db = new DatabaseSync(DB, { readOnly: true });
24
+
25
+ // 1) 定位会话:标题关键词(可多个,逗号分隔),可加 --since YYYY-MM-DD 下限
26
+ const titleKw = (flag('--title') ?? 'R4').split(',').map(s => s.trim()).filter(Boolean);
27
+ const sinceRaw = flag('--since');
28
+ const sinceMs = sinceRaw ? toMs(sinceRaw + 'T00:00:00+08:00') : null;
29
+
30
+ const like = titleKw.map(() => 'title LIKE ?').join(' OR ');
31
+ const rows = db.prepare(
32
+ `SELECT id, parent_id, title, time_created FROM session WHERE (${like}) ORDER BY time_created`
33
+ ).all(...titleKw.map(k => '%' + k + '%'));
34
+
35
+ // 2) 每会话聚合(主会话 + 递归子会话),窗口=会话创建起 48h 防 spill
36
+ const aggFor = (sid) => db.prepare(
37
+ `SELECT COUNT(*) req, SUM(computed_total_tokens) tok, SUM(input_tokens) itok, SUM(output_tokens) otok,
38
+ SUM(duration_ms) dur, MIN(started_at) mn, MAX(started_at) mx, SUM(tool_call_count) tools
39
+ FROM model_usage WHERE session_id = ? AND started_at >= ?`
40
+ );
41
+
42
+ const results = [];
43
+ for (const s of rows) {
44
+ const created = toMs(s.time_created);
45
+ const winStart = sinceMs != null ? Math.max(created ?? 0, sinceMs) : (created ?? 0);
46
+ const winEnd = winStart + 48 * 3600 * 1000;
47
+ // 递归滚子会话
48
+ const kids = db.prepare(
49
+ `WITH RECURSIVE tree(id, title) AS (SELECT id, title FROM session WHERE parent_id = ?
50
+ UNION ALL SELECT s.id, s.title FROM session s JOIN tree t ON s.parent_id = t.id)
51
+ SELECT id, title FROM tree`
52
+ ).all(s.id);
53
+ const self = aggFor(s.id).get(winStart > 0 ? winStart : 0);
54
+ // 请求窗口上界也钳(started_at < winEnd)
55
+ const inWin = (r) => { const a = db.prepare(
56
+ `SELECT COUNT(*) req, SUM(computed_total_tokens) tok, SUM(duration_ms) dur FROM model_usage
57
+ WHERE session_id = ? AND started_at >= ? AND started_at < ?`
58
+ ).get(r, winStart, winEnd); return a; };
59
+ const mainAgg = inWin(s.id);
60
+ let kidReq = 0, kidTok = 0, kidDur = 0;
61
+ for (const k of kids) {
62
+ const a = inWin(k.id); kidReq += a.req ?? 0; kidTok += a.tok ?? 0; kidDur += a.dur ?? 0;
63
+ }
64
+ const wall = mainAgg.req > 0 || kidReq > 0 ? null : null;
65
+ const span = db.prepare(
66
+ `SELECT MIN(started_at) mn, MAX(started_at) mx FROM model_usage WHERE session_id = ?`
67
+ ).get(s.id);
68
+ const spanMs = (toMs(span.mx) ?? 0) - (toMs(span.mn) ?? 0);
69
+ results.push({
70
+ id: s.id, title: s.title, kids: kids.length,
71
+ mainReq: mainAgg.req ?? 0, mainTok: mainAgg.tok ?? 0, mainDur: mainAgg.dur ?? 0,
72
+ kidReq, kidTok, kidDur,
73
+ totReq: (mainAgg.req ?? 0) + kidReq, totTok: ((mainAgg.tok ?? 0) + kidTok),
74
+ spanMin: spanMs / 60000,
75
+ });
76
+ }
77
+
78
+ // 3) 输出
79
+ console.log(`| 会话 | 标题 | 子代 | 主会话 req/tok/model-time | 子代 req/tok | 合计 req | 合计 tok | 活动跨度 |`);
80
+ console.log(`|---|---|---|---|---|---|---|---|`);
81
+ for (const r of results) {
82
+ console.log(`| ${r.id} | ${(r.title ?? '').slice(0, 40).replace(/\|/g, '/')} | ${r.kids} | ${r.mainReq} / ${fmtTok(r.mainTok)} / ${fmtMin(r.mainDur)} | ${r.kidReq} / ${fmtTok(r.kidTok)} | ${r.totReq} | ${fmtTok(r.totTok)} | ${fmtMin(r.spanMs ?? r.spanMin * 60000)} |`);
83
+ }
84
+ if (results.length === 0) console.log('(无匹配会话——检查标题关键词或 --since');
85
+ db.close();