@isaacriehm/cairn-core 0.7.0 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/align-undo/undo.js +2 -2
  3. package/dist/align-undo/undo.js.map +1 -1
  4. package/dist/attention/bulk-accept.js +48 -40
  5. package/dist/attention/bulk-accept.js.map +1 -1
  6. package/dist/attention/dedup.js +23 -10
  7. package/dist/attention/dedup.js.map +1 -1
  8. package/dist/attention/restore.js +2 -2
  9. package/dist/attention/restore.js.map +1 -1
  10. package/dist/attention/scoring.js +1 -1
  11. package/dist/attention/scoring.js.map +1 -1
  12. package/dist/attention/serve/api.d.ts +1 -0
  13. package/dist/attention/serve/api.js +127 -80
  14. package/dist/attention/serve/api.js.map +1 -1
  15. package/dist/attention/serve/index.d.ts +1 -0
  16. package/dist/attention/serve/index.js +21 -7
  17. package/dist/attention/serve/index.js.map +1 -1
  18. package/dist/attention/source-strip.js +41 -46
  19. package/dist/attention/source-strip.js.map +1 -1
  20. package/dist/claude/cache.d.ts +10 -19
  21. package/dist/claude/cache.js +0 -0
  22. package/dist/claude/cache.js.map +1 -1
  23. package/dist/claude/runner.d.ts +4 -6
  24. package/dist/claude/runner.js +242 -203
  25. package/dist/claude/runner.js.map +1 -1
  26. package/dist/claude/types.d.ts +5 -5
  27. package/dist/context/handoff-builder.d.ts +28 -4
  28. package/dist/context/handoff-builder.js +75 -157
  29. package/dist/context/handoff-builder.js.map +1 -1
  30. package/dist/context/spec-delta.js +61 -9
  31. package/dist/context/spec-delta.js.map +1 -1
  32. package/dist/context/task-summary.js +5 -1
  33. package/dist/context/task-summary.js.map +1 -1
  34. package/dist/decision-capture/id.js +1 -1
  35. package/dist/decision-capture/id.js.map +1 -1
  36. package/dist/doctor/index.d.ts +9 -11
  37. package/dist/doctor/index.js +118 -175
  38. package/dist/doctor/index.js.map +1 -1
  39. package/dist/drain/drain.d.ts +1 -1
  40. package/dist/drain/drain.js +16 -16
  41. package/dist/drain/drain.js.map +1 -1
  42. package/dist/drain/index.d.ts +1 -1
  43. package/dist/drain/index.js +1 -1
  44. package/dist/events/reader.d.ts +9 -10
  45. package/dist/events/reader.js +46 -57
  46. package/dist/events/reader.js.map +1 -1
  47. package/dist/events/writer.js +1 -1
  48. package/dist/events/writer.js.map +1 -1
  49. package/dist/fix-align/index.d.ts +1 -1
  50. package/dist/fix-align/index.js +1 -1
  51. package/dist/fix-align/run.d.ts +1 -1
  52. package/dist/fix-align/run.js +4 -3
  53. package/dist/fix-align/run.js.map +1 -1
  54. package/dist/fix-align/sentinel.d.ts +1 -2
  55. package/dist/fix-align/sentinel.js +3 -4
  56. package/dist/fix-align/sentinel.js.map +1 -1
  57. package/dist/gc/apply.js +1 -1
  58. package/dist/gc/apply.js.map +1 -1
  59. package/dist/gc/attested-commits.d.ts +19 -0
  60. package/dist/gc/attested-commits.js +48 -0
  61. package/dist/gc/attested-commits.js.map +1 -0
  62. package/dist/gc/canary.d.ts +11 -21
  63. package/dist/gc/canary.js +18 -24
  64. package/dist/gc/canary.js.map +1 -1
  65. package/dist/gc/citation-integrity.d.ts +11 -14
  66. package/dist/gc/citation-integrity.js +124 -125
  67. package/dist/gc/citation-integrity.js.map +1 -1
  68. package/dist/gc/classify.d.ts +1 -1
  69. package/dist/gc/classify.js +2 -2
  70. package/dist/gc/classify.js.map +1 -1
  71. package/dist/gc/completion-integrity.d.ts +6 -7
  72. package/dist/gc/completion-integrity.js +45 -53
  73. package/dist/gc/completion-integrity.js.map +1 -1
  74. package/dist/gc/doc-gardening.js +1 -9
  75. package/dist/gc/doc-gardening.js.map +1 -1
  76. package/dist/gc/frontmatter.js +2 -2
  77. package/dist/gc/frontmatter.js.map +1 -1
  78. package/dist/gc/index.d.ts +7 -6
  79. package/dist/gc/index.js +3 -2
  80. package/dist/gc/index.js.map +1 -1
  81. package/dist/gc/quality-update.d.ts +6 -10
  82. package/dist/gc/quality-update.js +12 -15
  83. package/dist/gc/quality-update.js.map +1 -1
  84. package/dist/gc/scope-coverage.js +1 -1
  85. package/dist/gc/scope-coverage.js.map +1 -1
  86. package/dist/gc/stub-hits.d.ts +7 -25
  87. package/dist/gc/stub-hits.js +14 -40
  88. package/dist/gc/stub-hits.js.map +1 -1
  89. package/dist/gc/sweep.js +15 -6
  90. package/dist/gc/sweep.js.map +1 -1
  91. package/dist/gc/types.d.ts +5 -5
  92. package/dist/gc/types.js +2 -2
  93. package/dist/gc/walk-source.js +8 -28
  94. package/dist/gc/walk-source.js.map +1 -1
  95. package/dist/hooks/defer.d.ts +9 -20
  96. package/dist/hooks/defer.js +10 -27
  97. package/dist/hooks/defer.js.map +1 -1
  98. package/dist/hooks/post-tool-use/allowlist-reader.d.ts +2 -1
  99. package/dist/hooks/post-tool-use/allowlist-reader.js +49 -34
  100. package/dist/hooks/post-tool-use/allowlist-reader.js.map +1 -1
  101. package/dist/hooks/post-tool-use/index.d.ts +3 -4
  102. package/dist/hooks/post-tool-use/index.js +3 -3
  103. package/dist/hooks/post-tool-use/index.js.map +1 -1
  104. package/dist/hooks/post-tool-use/legend-builder.d.ts +2 -2
  105. package/dist/hooks/post-tool-use/legend-builder.js +2 -2
  106. package/dist/hooks/post-tool-use/legend-builder.js.map +1 -1
  107. package/dist/hooks/post-tool-use/post-write.d.ts +8 -0
  108. package/dist/hooks/post-tool-use/post-write.js +112 -0
  109. package/dist/hooks/post-tool-use/post-write.js.map +1 -0
  110. package/dist/hooks/post-tool-use/read-enricher.d.ts +10 -5
  111. package/dist/hooks/post-tool-use/read-enricher.js +114 -155
  112. package/dist/hooks/post-tool-use/read-enricher.js.map +1 -1
  113. package/dist/hooks/post-tool-use/sot-align.d.ts +12 -0
  114. package/dist/hooks/post-tool-use/sot-align.js +73 -49
  115. package/dist/hooks/post-tool-use/sot-align.js.map +1 -1
  116. package/dist/hooks/post-tool-use/write-guardian.d.ts +40 -8
  117. package/dist/hooks/post-tool-use/write-guardian.js +202 -254
  118. package/dist/hooks/post-tool-use/write-guardian.js.map +1 -1
  119. package/dist/hooks/pre-commit/sot-align-precommit.js +2 -2
  120. package/dist/hooks/pre-commit/sot-align-precommit.js.map +1 -1
  121. package/dist/hooks/runners/index.d.ts +2 -2
  122. package/dist/hooks/runners/index.js +1 -1
  123. package/dist/hooks/runners/index.js.map +1 -1
  124. package/dist/hooks/runners/payload.d.ts +34 -19
  125. package/dist/hooks/runners/payload.js +47 -44
  126. package/dist/hooks/runners/payload.js.map +1 -1
  127. package/dist/hooks/runners/session-end.js +12 -11
  128. package/dist/hooks/runners/session-end.js.map +1 -1
  129. package/dist/hooks/runners/session-start.d.ts +4 -2
  130. package/dist/hooks/runners/session-start.js +88 -261
  131. package/dist/hooks/runners/session-start.js.map +1 -1
  132. package/dist/hooks/runners/stop.js +27 -8
  133. package/dist/hooks/runners/stop.js.map +1 -1
  134. package/dist/hooks/runners/user-prompt-submit.js +7 -1
  135. package/dist/hooks/runners/user-prompt-submit.js.map +1 -1
  136. package/dist/hooks/sot-align-common.d.ts +1 -2
  137. package/dist/hooks/sot-align-common.js +2 -2
  138. package/dist/hooks/sot-align-common.js.map +1 -1
  139. package/dist/index.d.ts +1 -1
  140. package/dist/index.js +12 -3
  141. package/dist/index.js.map +1 -1
  142. package/dist/init/baseline-audit.d.ts +14 -58
  143. package/dist/init/baseline-audit.js +92 -320
  144. package/dist/init/baseline-audit.js.map +1 -1
  145. package/dist/init/brand-derive.d.ts +11 -15
  146. package/dist/init/brand-derive.js +21 -46
  147. package/dist/init/brand-derive.js.map +1 -1
  148. package/dist/init/brand-setup.d.ts +1 -1
  149. package/dist/init/brand-setup.js +1 -1
  150. package/dist/init/detect.d.ts +25 -6
  151. package/dist/init/detect.js +107 -136
  152. package/dist/init/detect.js.map +1 -1
  153. package/dist/init/index.d.ts +2 -2
  154. package/dist/init/index.js +1 -1
  155. package/dist/init/index.js.map +1 -1
  156. package/dist/init/ingest-docs.d.ts +2 -2
  157. package/dist/init/ingest-docs.js +31 -43
  158. package/dist/init/ingest-docs.js.map +1 -1
  159. package/dist/init/init.d.ts +21 -21
  160. package/dist/init/init.js +41 -61
  161. package/dist/init/init.js.map +1 -1
  162. package/dist/init/mapper-merge.js +1 -1
  163. package/dist/init/mapper-merge.js.map +1 -1
  164. package/dist/init/mapper-parallel.d.ts +1 -1
  165. package/dist/init/mapper-parallel.js +2 -1
  166. package/dist/init/mapper-parallel.js.map +1 -1
  167. package/dist/init/mapper.js +1 -1
  168. package/dist/init/mapper.js.map +1 -1
  169. package/dist/init/multi-dev/install.d.ts +5 -5
  170. package/dist/init/multi-dev/install.js +4 -4
  171. package/dist/init/overlay.js +1 -0
  172. package/dist/init/overlay.js.map +1 -1
  173. package/dist/init/phases/1-detect.js +1 -1
  174. package/dist/init/phases/1-detect.js.map +1 -1
  175. package/dist/init/phases/{7c-rules-merge.d.ts → 10-rules-merge.d.ts} +2 -2
  176. package/dist/init/phases/{7c-rules-merge.js → 10-rules-merge.js} +6 -12
  177. package/dist/init/phases/10-rules-merge.js.map +1 -0
  178. package/dist/init/phases/11-baseline.d.ts +7 -0
  179. package/dist/init/phases/{8-baseline.js → 11-baseline.js} +5 -9
  180. package/dist/init/phases/11-baseline.js.map +1 -0
  181. package/dist/init/phases/12-strip.d.ts +10 -0
  182. package/dist/init/phases/{10-strip.js → 12-strip.js} +10 -14
  183. package/dist/init/phases/12-strip.js.map +1 -0
  184. package/dist/init/phases/{12-multidev.d.ts → 13-multidev.d.ts} +2 -2
  185. package/dist/init/phases/{12-multidev.js → 13-multidev.js} +4 -4
  186. package/dist/init/phases/{12-multidev.js.map → 13-multidev.js.map} +1 -1
  187. package/dist/init/phases/3-mapper.d.ts +1 -1
  188. package/dist/init/phases/3-mapper.js +2 -2
  189. package/dist/init/phases/3-mapper.js.map +1 -1
  190. package/dist/init/phases/{3b-seed.d.ts → 4-seed.d.ts} +2 -2
  191. package/dist/init/phases/{3b-seed.js → 4-seed.js} +7 -7
  192. package/dist/init/phases/4-seed.js.map +1 -0
  193. package/dist/init/phases/{4-pilot.d.ts → 5-pilot.d.ts} +2 -2
  194. package/dist/init/phases/{4-pilot.js → 5-pilot.js} +9 -9
  195. package/dist/init/phases/{4-pilot.js.map → 5-pilot.js.map} +1 -1
  196. package/dist/init/phases/{5-brand.d.ts → 6-brand.d.ts} +2 -7
  197. package/dist/init/phases/{5-brand.js → 6-brand.js} +6 -14
  198. package/dist/init/phases/6-brand.js.map +1 -0
  199. package/dist/init/phases/{5b-topic-index.d.ts → 7-topic-index.d.ts} +2 -11
  200. package/dist/init/phases/{5b-topic-index.js → 7-topic-index.js} +9 -18
  201. package/dist/init/phases/7-topic-index.js.map +1 -0
  202. package/dist/init/phases/8-docs-ingest.d.ts +10 -0
  203. package/dist/init/phases/{6-docs-ingest.js → 8-docs-ingest.js} +6 -11
  204. package/dist/init/phases/8-docs-ingest.js.map +1 -0
  205. package/dist/init/phases/9-source-comments.d.ts +6 -0
  206. package/dist/init/phases/{7b-source-comments.js → 9-source-comments.js} +7 -26
  207. package/dist/init/phases/9-source-comments.js.map +1 -0
  208. package/dist/init/phases/index.d.ts +12 -12
  209. package/dist/init/phases/index.js +11 -11
  210. package/dist/init/phases/index.js.map +1 -1
  211. package/dist/init/phases/{parallel-678.d.ts → parallel-8910.d.ts} +7 -8
  212. package/dist/init/phases/{parallel-678.js → parallel-8910.js} +26 -44
  213. package/dist/init/phases/parallel-8910.js.map +1 -0
  214. package/dist/init/phases/source-comments-output-io.d.ts +3 -3
  215. package/dist/init/phases/source-comments-output-io.js +3 -3
  216. package/dist/init/phases/types.d.ts +1 -1
  217. package/dist/init/phases/types.js +10 -10
  218. package/dist/init/phases/types.js.map +1 -1
  219. package/dist/init/rules-merge/discover.d.ts +2 -2
  220. package/dist/init/rules-merge/discover.js +28 -43
  221. package/dist/init/rules-merge/discover.js.map +1 -1
  222. package/dist/init/rules-merge/ingest.d.ts +6 -6
  223. package/dist/init/rules-merge/ingest.js +9 -10
  224. package/dist/init/rules-merge/ingest.js.map +1 -1
  225. package/dist/init/rules-merge/keep-markers.d.ts +1 -1
  226. package/dist/init/rules-merge/keep-markers.js +1 -1
  227. package/dist/init/rules-merge/regenerate.d.ts +3 -3
  228. package/dist/init/rules-merge/regenerate.js +3 -3
  229. package/dist/init/seed.js +17 -24
  230. package/dist/init/seed.js.map +1 -1
  231. package/dist/init/sot-emit.d.ts +27 -9
  232. package/dist/init/sot-emit.js +39 -7
  233. package/dist/init/sot-emit.js.map +1 -1
  234. package/dist/init/source-comments/classify.d.ts +2 -2
  235. package/dist/init/source-comments/classify.js +9 -1
  236. package/dist/init/source-comments/classify.js.map +1 -1
  237. package/dist/init/source-comments/index.d.ts +1 -1
  238. package/dist/init/source-comments/index.js.map +1 -1
  239. package/dist/init/source-comments/ingest.d.ts +2 -2
  240. package/dist/init/source-comments/ingest.js +6 -8
  241. package/dist/init/source-comments/ingest.js.map +1 -1
  242. package/dist/init/source-comments/strip-replace.js +3 -2
  243. package/dist/init/source-comments/strip-replace.js.map +1 -1
  244. package/dist/init/source-comments/walker.d.ts +3 -26
  245. package/dist/init/source-comments/walker.js +18 -30
  246. package/dist/init/source-comments/walker.js.map +1 -1
  247. package/dist/init/topic-index/index.d.ts +1 -1
  248. package/dist/init/topic-index/index.js +3 -3
  249. package/dist/init/topic-index/index.js.map +1 -1
  250. package/dist/init/topic-index/judge.d.ts +5 -9
  251. package/dist/init/topic-index/judge.js +17 -22
  252. package/dist/init/topic-index/judge.js.map +1 -1
  253. package/dist/init/topic-index/resolve.d.ts +5 -4
  254. package/dist/init/topic-index/resolve.js +6 -6
  255. package/dist/init/topic-index/resolve.js.map +1 -1
  256. package/dist/init/topic-index/walk.d.ts +6 -6
  257. package/dist/init/topic-index/walk.js +9 -9
  258. package/dist/init/topic-index/walk.js.map +1 -1
  259. package/dist/join/index.js +5 -1
  260. package/dist/join/index.js.map +1 -1
  261. package/dist/lock.js +4 -1
  262. package/dist/lock.js.map +1 -1
  263. package/dist/logger.js +3 -0
  264. package/dist/logger.js.map +1 -1
  265. package/dist/mcp/history/summarizer.js +1 -1
  266. package/dist/mcp/history/summarizer.js.map +1 -1
  267. package/dist/mcp/history/walker.js +1 -1
  268. package/dist/mcp/history/walker.js.map +1 -1
  269. package/dist/mcp/path-allowlist.js +1 -1
  270. package/dist/mcp/path-allowlist.js.map +1 -1
  271. package/dist/mcp/schemas.d.ts +16 -38
  272. package/dist/mcp/schemas.js +8 -22
  273. package/dist/mcp/schemas.js.map +1 -1
  274. package/dist/mcp/server.js +10 -0
  275. package/dist/mcp/server.js.map +1 -1
  276. package/dist/mcp/tools/archive.js +1 -1
  277. package/dist/mcp/tools/archive.js.map +1 -1
  278. package/dist/mcp/tools/attention-wait.js +12 -2
  279. package/dist/mcp/tools/attention-wait.js.map +1 -1
  280. package/dist/mcp/tools/bulk-accept-attention.js +29 -30
  281. package/dist/mcp/tools/bulk-accept-attention.js.map +1 -1
  282. package/dist/mcp/tools/canonical-for-topic.js +37 -15
  283. package/dist/mcp/tools/canonical-for-topic.js.map +1 -1
  284. package/dist/mcp/tools/decision-get.js +2 -2
  285. package/dist/mcp/tools/decision-get.js.map +1 -1
  286. package/dist/mcp/tools/decisions-for-symbol.js +2 -2
  287. package/dist/mcp/tools/decisions-for-symbol.js.map +1 -1
  288. package/dist/mcp/tools/get-full.js +1 -1
  289. package/dist/mcp/tools/get-full.js.map +1 -1
  290. package/dist/mcp/tools/ground-get.js +1 -1
  291. package/dist/mcp/tools/ground-get.js.map +1 -1
  292. package/dist/mcp/tools/in-scope.d.ts +8 -0
  293. package/dist/mcp/tools/in-scope.js +125 -0
  294. package/dist/mcp/tools/in-scope.js.map +1 -0
  295. package/dist/mcp/tools/index.js +7 -12
  296. package/dist/mcp/tools/index.js.map +1 -1
  297. package/dist/mcp/tools/init-phases.d.ts +18 -10
  298. package/dist/mcp/tools/init-phases.js +139 -192
  299. package/dist/mcp/tools/init-phases.js.map +1 -1
  300. package/dist/mcp/tools/invariant-get.js +2 -2
  301. package/dist/mcp/tools/invariant-get.js.map +1 -1
  302. package/dist/mcp/tools/record-decision.d.ts +4 -3
  303. package/dist/mcp/tools/record-decision.js +111 -36
  304. package/dist/mcp/tools/record-decision.js.map +1 -1
  305. package/dist/mcp/tools/reject-candidate.d.ts +1 -1
  306. package/dist/mcp/tools/reject-candidate.js +3 -3
  307. package/dist/mcp/tools/reject-candidate.js.map +1 -1
  308. package/dist/mcp/tools/resolve-attention.d.ts +5 -18
  309. package/dist/mcp/tools/resolve-attention.js +58 -158
  310. package/dist/mcp/tools/resolve-attention.js.map +1 -1
  311. package/dist/mcp/tools/search-candidates.d.ts +1 -1
  312. package/dist/mcp/tools/search-candidates.js +4 -4
  313. package/dist/mcp/tools/search-candidates.js.map +1 -1
  314. package/dist/mcp/tools/search.js +5 -4
  315. package/dist/mcp/tools/search.js.map +1 -1
  316. package/dist/mcp/tools/supersedes-chain.js +2 -2
  317. package/dist/mcp/tools/supersedes-chain.js.map +1 -1
  318. package/dist/mcp/tools/task-create.d.ts +1 -0
  319. package/dist/mcp/tools/task-create.js +2 -0
  320. package/dist/mcp/tools/task-create.js.map +1 -1
  321. package/dist/mcp/tools/timeline.js +1 -1
  322. package/dist/mcp/tools/timeline.js.map +1 -1
  323. package/dist/mcp/tools/types.d.ts +1 -0
  324. package/dist/mcp/tools/types.js +9 -1
  325. package/dist/mcp/tools/types.js.map +1 -1
  326. package/dist/sensors/attestation.d.ts +1 -1
  327. package/dist/sensors/attestation.js +2 -2
  328. package/dist/sensors/attestation.js.map +1 -1
  329. package/dist/sensors/catalog.d.ts +26 -28
  330. package/dist/sensors/catalog.js +79 -81
  331. package/dist/sensors/catalog.js.map +1 -1
  332. package/dist/sensors/decisions.d.ts +1 -1
  333. package/dist/sensors/decisions.js +15 -14
  334. package/dist/sensors/decisions.js.map +1 -1
  335. package/dist/sensors/diff.js +46 -22
  336. package/dist/sensors/diff.js.map +1 -1
  337. package/dist/sensors/runner.d.ts +2 -2
  338. package/dist/sensors/runner.js +3 -3
  339. package/dist/sensors/shell.d.ts +4 -0
  340. package/dist/sensors/shell.js +16 -0
  341. package/dist/sensors/shell.js.map +1 -0
  342. package/dist/sensors/structural.d.ts +3 -2
  343. package/dist/sensors/structural.js +3 -11
  344. package/dist/sensors/structural.js.map +1 -1
  345. package/dist/sensors/stub-catalog.d.ts +2 -1
  346. package/dist/sensors/stub-catalog.js +2 -9
  347. package/dist/sensors/stub-catalog.js.map +1 -1
  348. package/dist/sensors/types.d.ts +3 -4
  349. package/dist/sensors/types.js +1 -2
  350. package/dist/sensors/types.js.map +1 -1
  351. package/dist/session-start/build.js +1 -1
  352. package/dist/session-start/build.js.map +1 -1
  353. package/dist/status-line/event-queue.js +1 -1
  354. package/dist/status-line/index.d.ts +1 -1
  355. package/package.json +3 -2
  356. package/templates/.cairn/config/sensors.yaml +8 -8
  357. package/templates/attention-ui/app.js +61 -36
  358. package/dist/fs.d.ts +0 -5
  359. package/dist/fs.js +0 -11
  360. package/dist/fs.js.map +0 -1
  361. package/dist/ground/alignment-pending.d.ts +0 -28
  362. package/dist/ground/alignment-pending.js +0 -83
  363. package/dist/ground/alignment-pending.js.map +0 -1
  364. package/dist/ground/anchor-map.d.ts +0 -14
  365. package/dist/ground/anchor-map.js +0 -56
  366. package/dist/ground/anchor-map.js.map +0 -1
  367. package/dist/ground/drift.d.ts +0 -8
  368. package/dist/ground/drift.js +0 -23
  369. package/dist/ground/drift.js.map +0 -1
  370. package/dist/ground/file-candidates-map.d.ts +0 -23
  371. package/dist/ground/file-candidates-map.js +0 -76
  372. package/dist/ground/file-candidates-map.js.map +0 -1
  373. package/dist/ground/frontmatter.d.ts +0 -32
  374. package/dist/ground/frontmatter.js +0 -77
  375. package/dist/ground/frontmatter.js.map +0 -1
  376. package/dist/ground/glob.d.ts +0 -10
  377. package/dist/ground/glob.js +0 -46
  378. package/dist/ground/glob.js.map +0 -1
  379. package/dist/ground/index.d.ts +0 -25
  380. package/dist/ground/index.js +0 -19
  381. package/dist/ground/index.js.map +0 -1
  382. package/dist/ground/ledgers.d.ts +0 -14
  383. package/dist/ground/ledgers.js +0 -105
  384. package/dist/ground/ledgers.js.map +0 -1
  385. package/dist/ground/manifest.d.ts +0 -10
  386. package/dist/ground/manifest.js +0 -84
  387. package/dist/ground/manifest.js.map +0 -1
  388. package/dist/ground/paths.d.ts +0 -43
  389. package/dist/ground/paths.js +0 -109
  390. package/dist/ground/paths.js.map +0 -1
  391. package/dist/ground/quality-grades.d.ts +0 -11
  392. package/dist/ground/quality-grades.js +0 -100
  393. package/dist/ground/quality-grades.js.map +0 -1
  394. package/dist/ground/rejected.d.ts +0 -42
  395. package/dist/ground/rejected.js +0 -100
  396. package/dist/ground/rejected.js.map +0 -1
  397. package/dist/ground/schemas.d.ts +0 -582
  398. package/dist/ground/schemas.js +0 -372
  399. package/dist/ground/schemas.js.map +0 -1
  400. package/dist/ground/scope-index.d.ts +0 -96
  401. package/dist/ground/scope-index.js +0 -290
  402. package/dist/ground/scope-index.js.map +0 -1
  403. package/dist/ground/slug.d.ts +0 -60
  404. package/dist/ground/slug.js +0 -103
  405. package/dist/ground/slug.js.map +0 -1
  406. package/dist/ground/sot-bindings.d.ts +0 -14
  407. package/dist/ground/sot-bindings.js +0 -79
  408. package/dist/ground/sot-bindings.js.map +0 -1
  409. package/dist/ground/sot-cache.d.ts +0 -18
  410. package/dist/ground/sot-cache.js +0 -62
  411. package/dist/ground/sot-cache.js.map +0 -1
  412. package/dist/ground/topic-index.d.ts +0 -27
  413. package/dist/ground/topic-index.js +0 -82
  414. package/dist/ground/topic-index.js.map +0 -1
  415. package/dist/ground/walk.d.ts +0 -7
  416. package/dist/ground/walk.js +0 -53
  417. package/dist/ground/walk.js.map +0 -1
  418. package/dist/hooks/post-tool-use/ledger-cache.d.ts +0 -53
  419. package/dist/hooks/post-tool-use/ledger-cache.js +0 -338
  420. package/dist/hooks/post-tool-use/ledger-cache.js.map +0 -1
  421. package/dist/init/phases/10-strip.d.ts +0 -11
  422. package/dist/init/phases/10-strip.js.map +0 -1
  423. package/dist/init/phases/3b-seed.js.map +0 -1
  424. package/dist/init/phases/5-brand.js.map +0 -1
  425. package/dist/init/phases/5b-topic-index.js.map +0 -1
  426. package/dist/init/phases/6-docs-ingest.d.ts +0 -15
  427. package/dist/init/phases/6-docs-ingest.js.map +0 -1
  428. package/dist/init/phases/7b-source-comments.d.ts +0 -15
  429. package/dist/init/phases/7b-source-comments.js.map +0 -1
  430. package/dist/init/phases/7c-rules-merge.js.map +0 -1
  431. package/dist/init/phases/8-baseline.d.ts +0 -10
  432. package/dist/init/phases/8-baseline.js.map +0 -1
  433. package/dist/init/phases/parallel-678.js.map +0 -1
  434. package/dist/mcp/tools/decisions-in-scope.d.ts +0 -7
  435. package/dist/mcp/tools/decisions-in-scope.js +0 -66
  436. package/dist/mcp/tools/decisions-in-scope.js.map +0 -1
  437. package/dist/mcp/tools/invariants-in-scope.d.ts +0 -7
  438. package/dist/mcp/tools/invariants-in-scope.js +0 -81
  439. package/dist/mcp/tools/invariants-in-scope.js.map +0 -1
  440. package/dist/mcp/tools/propose-decision.d.ts +0 -34
  441. package/dist/mcp/tools/propose-decision.js +0 -200
  442. package/dist/mcp/tools/propose-decision.js.map +0 -1
@@ -1,21 +1,12 @@
1
1
  /**
2
- * Phase 7b-source-comments — walk every source file's docblock-class
2
+ * Phase 9-source-comments — walk every source file's docblock-class
3
3
  * comment, classify via Haiku, write DEC drafts / invariant proposals.
4
- *
5
- * Heavy walk + per-block classifications spill to
6
- * `.cairn/init/source-comments-walk.json`; only the lightweight projection
7
- * (counts, ledger paths, kindCounts) lives on the persisted phase output.
8
- *
9
- * Project globs from the mapper + the 4-pilot picked module flow into
10
- * scoring so every DEC draft + invariant gets `capture_confidence`
11
- * stamped at write time — `cairn attention bulk-accept` becomes an
12
- * O(1) file move instead of a re-score sweep.
13
4
  */
14
5
  import { runSourceCommentsIngestion, } from "../source-comments/index.js";
15
- import { clearProgress, writeProgress } from "../progress.js";
6
+ import { clearProgress } from "../progress.js";
16
7
  import { advancePhase } from "./orchestrator.js";
17
8
  import { to7bResultPersisted, writeSourceCommentsWalkFile, } from "./source-comments-output-io.js";
18
- export async function runPhase7bSourceComments(state) {
9
+ export async function runPhase9SourceComments(state) {
19
10
  const mapper = state.outputs["3-mapper"];
20
11
  const globs = mapper
21
12
  ? {
@@ -26,7 +17,7 @@ export async function runPhase7bSourceComments(state) {
26
17
  off_limits: mapper.output.off_limits_globs,
27
18
  }
28
19
  : {};
29
- const pilotOut = state.outputs["4-pilot"];
20
+ const pilotOut = state.outputs["5-pilot"];
30
21
  const pilotModule = typeof pilotOut?.picked === "string" && pilotOut.picked.length > 0
31
22
  ? pilotOut.picked
32
23
  : undefined;
@@ -34,27 +25,17 @@ export async function runPhase7bSourceComments(state) {
34
25
  try {
35
26
  const result = await runSourceCommentsIngestion({
36
27
  repoRoot: state.repoRoot,
37
- globs,
38
- ...(pilotModule !== undefined ? { pilotModule } : {}),
39
- onBatchProgress: (row) => writeProgress(state.repoRoot, {
40
- phase: "7b-source-comments",
41
- batch: row.index + 1,
42
- total: row.total,
43
- classified: row.classified,
44
- failed: row.failed,
45
- startedAt,
46
- }),
47
28
  });
48
29
  writeSourceCommentsWalkFile(state.repoRoot, result);
49
30
  const persisted = to7bResultPersisted(result);
50
31
  clearProgress(state.repoRoot);
51
32
  const next = {
52
33
  ...state,
53
- outputs: { ...state.outputs, "7b-source-comments": persisted },
34
+ outputs: { ...state.outputs, "9-source-comments": persisted },
54
35
  };
55
36
  return {
56
37
  status: "complete",
57
- nextPhase: "7c-rules-merge",
38
+ nextPhase: "10-rules-merge",
58
39
  state: advancePhase(next),
59
40
  };
60
41
  }
@@ -71,4 +52,4 @@ export async function runPhase7bSourceComments(state) {
71
52
  };
72
53
  }
73
54
  }
74
- //# sourceMappingURL=7b-source-comments.js.map
55
+ //# sourceMappingURL=9-source-comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"9-source-comments.js","sourceRoot":"","sources":["../../../src/init/phases/9-source-comments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,0BAA0B,GAE3B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EACL,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,gCAAgC,CAAC;AAGxC,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAAiB;IAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAsC,CAAC;IAC9E,MAAM,KAAK,GAAiB,MAAM;QAChC,CAAC,CAAC;YACE,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB;YACtD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;YAClC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB;YAC5D,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB;YAClD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB;SAC3C;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAoC,CAAC;IAC7E,MAAM,WAAW,GACf,OAAO,QAAQ,EAAE,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAChE,CAAC,CAAC,QAAQ,CAAC,MAAM;QACjB,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAA+B,MAAM,0BAA0B,CAAC;YAC1E,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,2BAA2B,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC9C,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE;SAC9D,CAAC;QACF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,gBAAgB;YAC3B,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,iCAAiC;gBAC1C,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtE;YACD,KAAK;SACN,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -5,16 +5,16 @@ export { freshPhaseState, resumePhases, nextPhaseAfter, advancePhase, } from "./
5
5
  export { runPhase1Detect } from "./1-detect.js";
6
6
  export { runPhase2Walker } from "./2-walker.js";
7
7
  export { runPhase3Mapper } from "./3-mapper.js";
8
- export { runPhase3bSeed } from "./3b-seed.js";
9
- export { runPhase4Pilot } from "./4-pilot.js";
10
- export { runPhase5Brand } from "./5-brand.js";
11
- export { runPhase5bTopicIndex } from "./5b-topic-index.js";
12
- export type { TopicIndexPhaseOutput } from "./5b-topic-index.js";
13
- export { runPhase6DocsIngest } from "./6-docs-ingest.js";
14
- export { runPhase7bSourceComments } from "./7b-source-comments.js";
15
- export { runPhase7cRulesMerge } from "./7c-rules-merge.js";
16
- export { runPhase8Baseline } from "./8-baseline.js";
17
- export { runPhase10Strip } from "./10-strip.js";
18
- export { runPhase12Multidev } from "./12-multidev.js";
19
- export { runPhases678Parallel } from "./parallel-678.js";
8
+ export { runPhase4Seed } from "./4-seed.js";
9
+ export { runPhase5Pilot } from "./5-pilot.js";
10
+ export { runPhase6Brand } from "./6-brand.js";
11
+ export { runPhase7TopicIndex } from "./7-topic-index.js";
12
+ export type { TopicIndexPhaseOutput } from "./7-topic-index.js";
13
+ export { runPhase8DocsIngest } from "./8-docs-ingest.js";
14
+ export { runPhase9SourceComments } from "./9-source-comments.js";
15
+ export { runPhase10RulesMerge } from "./10-rules-merge.js";
16
+ export { runPhase11Baseline } from "./11-baseline.js";
17
+ export { runPhase12Strip } from "./12-strip.js";
18
+ export { runPhase13Multidev } from "./13-multidev.js";
19
+ export { runPhases8910Parallel } from "./parallel-8910.js";
20
20
  export { SOURCE_COMMENTS_WALK_PATH, sourceCommentsWalkAbsPath, readSourceCommentsWalkFile, writeSourceCommentsWalkFile, to7bResultPersisted, type IngestSourceCommentsResultPersisted, } from "./source-comments-output-io.js";
@@ -5,16 +5,16 @@ export { freshPhaseState, resumePhases, nextPhaseAfter, advancePhase, } from "./
5
5
  export { runPhase1Detect } from "./1-detect.js";
6
6
  export { runPhase2Walker } from "./2-walker.js";
7
7
  export { runPhase3Mapper } from "./3-mapper.js";
8
- export { runPhase3bSeed } from "./3b-seed.js";
9
- export { runPhase4Pilot } from "./4-pilot.js";
10
- export { runPhase5Brand } from "./5-brand.js";
11
- export { runPhase5bTopicIndex } from "./5b-topic-index.js";
12
- export { runPhase6DocsIngest } from "./6-docs-ingest.js";
13
- export { runPhase7bSourceComments } from "./7b-source-comments.js";
14
- export { runPhase7cRulesMerge } from "./7c-rules-merge.js";
15
- export { runPhase8Baseline } from "./8-baseline.js";
16
- export { runPhase10Strip } from "./10-strip.js";
17
- export { runPhase12Multidev } from "./12-multidev.js";
18
- export { runPhases678Parallel } from "./parallel-678.js";
8
+ export { runPhase4Seed } from "./4-seed.js";
9
+ export { runPhase5Pilot } from "./5-pilot.js";
10
+ export { runPhase6Brand } from "./6-brand.js";
11
+ export { runPhase7TopicIndex } from "./7-topic-index.js";
12
+ export { runPhase8DocsIngest } from "./8-docs-ingest.js";
13
+ export { runPhase9SourceComments } from "./9-source-comments.js";
14
+ export { runPhase10RulesMerge } from "./10-rules-merge.js";
15
+ export { runPhase11Baseline } from "./11-baseline.js";
16
+ export { runPhase12Strip } from "./12-strip.js";
17
+ export { runPhase13Multidev } from "./13-multidev.js";
18
+ export { runPhases8910Parallel } from "./parallel-8910.js";
19
19
  export { SOURCE_COMMENTS_WALK_PATH, sourceCommentsWalkAbsPath, readSourceCommentsWalkFile, writeSourceCommentsWalkFile, to7bResultPersisted, } from "./source-comments-output-io.js";
20
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/init/phases/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GASV,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,GAEpB,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/init/phases/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GASV,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,GAEpB,MAAM,gCAAgC,CAAC"}
@@ -1,16 +1,15 @@
1
1
  /**
2
- * Phases 6 / 7b / 7c sequential orchestrator.
2
+ * Phases 8 / 9 / 10 sequential orchestrator.
3
3
  *
4
4
  * The three post-pilot ingestion phases (docs-ingest, source-comments,
5
5
  * rules-merge) all read + write the same v0.5.0 ground-state files —
6
6
  * `topic-index.yaml`, `anchor-map.yaml`, `sot-bindings.yaml`,
7
7
  * `sot-cache.yaml`. Concurrent execution races on those writes: each
8
8
  * phase reads at start, mutates in memory, writes at end → last writer
9
- * wipes the others. The v0.4.x parallel orchestrator was safe because
10
- * only DEC/INV files (uniquely named per id) were on the write path.
9
+ * wipes the others.
11
10
  *
12
11
  * v0.5.0 fix: run the phases sequentially in canonical order
13
- * (67b7c). Each phase still uses Haiku internally (with its own
12
+ * (8910). Each phase still uses Haiku internally (with its own
14
13
  * concurrency for batching + per-section workers), so the wall-clock
15
14
  * cost vs. the v0.4.x parallel pipeline is bounded by the longest
16
15
  * phase plus the smaller two — historically <5s combined for the
@@ -18,11 +17,11 @@
18
17
  * motion across all three.
19
18
  *
20
19
  * State machine:
21
- * - The runner enters expecting `currentPhase === "6-docs-ingest"` and
22
- * exits with `currentPhase === "8-baseline"`, jumping past the
23
- * individual 7b / 7c slots in PHASE_IDS. The sequential per-phase
20
+ * - The runner enters expecting `currentPhase === "8-docs-ingest"` and
21
+ * exits with `currentPhase === "11-baseline"`, jumping past the
22
+ * individual 9 / 10 slots in PHASE_IDS. The sequential per-phase
24
23
  * MCP tools remain available; this runner is the optimized path the
25
24
  * adopt skill prefers.
26
25
  */
27
26
  import type { PhaseResult, PhaseState } from "./types.js";
28
- export declare function runPhases678Parallel(state: PhaseState): Promise<PhaseResult>;
27
+ export declare function runPhases8910Parallel(state: PhaseState): Promise<PhaseResult>;
@@ -1,16 +1,15 @@
1
1
  /**
2
- * Phases 6 / 7b / 7c sequential orchestrator.
2
+ * Phases 8 / 9 / 10 sequential orchestrator.
3
3
  *
4
4
  * The three post-pilot ingestion phases (docs-ingest, source-comments,
5
5
  * rules-merge) all read + write the same v0.5.0 ground-state files —
6
6
  * `topic-index.yaml`, `anchor-map.yaml`, `sot-bindings.yaml`,
7
7
  * `sot-cache.yaml`. Concurrent execution races on those writes: each
8
8
  * phase reads at start, mutates in memory, writes at end → last writer
9
- * wipes the others. The v0.4.x parallel orchestrator was safe because
10
- * only DEC/INV files (uniquely named per id) were on the write path.
9
+ * wipes the others.
11
10
  *
12
11
  * v0.5.0 fix: run the phases sequentially in canonical order
13
- * (67b7c). Each phase still uses Haiku internally (with its own
12
+ * (8910). Each phase still uses Haiku internally (with its own
14
13
  * concurrency for batching + per-section workers), so the wall-clock
15
14
  * cost vs. the v0.4.x parallel pipeline is bounded by the longest
16
15
  * phase plus the smaller two — historically <5s combined for the
@@ -18,9 +17,9 @@
18
17
  * motion across all three.
19
18
  *
20
19
  * State machine:
21
- * - The runner enters expecting `currentPhase === "6-docs-ingest"` and
22
- * exits with `currentPhase === "8-baseline"`, jumping past the
23
- * individual 7b / 7c slots in PHASE_IDS. The sequential per-phase
20
+ * - The runner enters expecting `currentPhase === "8-docs-ingest"` and
21
+ * exits with `currentPhase === "11-baseline"`, jumping past the
22
+ * individual 9 / 10 slots in PHASE_IDS. The sequential per-phase
24
23
  * MCP tools remain available; this runner is the optimized path the
25
24
  * adopt skill prefers.
26
25
  */
@@ -32,17 +31,17 @@ import { runRulesMerge } from "../rules-merge/index.js";
32
31
  import { runSourceCommentsIngestion } from "../source-comments/index.js";
33
32
  import { to7bResultPersisted, writeSourceCommentsWalkFile, } from "./source-comments-output-io.js";
34
33
  import { advancePhase } from "./orchestrator.js";
35
- const log = logger("init.phases.parallel-678");
36
- export async function runPhases678Parallel(state) {
37
- // Sanity: this runner only enters at the start of the 6 / 7b / 7c
34
+ const log = logger("init.phases.parallel-8910");
35
+ export async function runPhases8910Parallel(state) {
36
+ // Sanity: this runner only enters at the start of the 8 / 9 / 10
38
37
  // window. If currentPhase is anywhere else, the caller invoked the
39
38
  // wrong tool — surface as error so we don't mid-pipeline jump.
40
- if (state.currentPhase !== "6-docs-ingest") {
39
+ if (state.currentPhase !== "8-docs-ingest") {
41
40
  return {
42
41
  status: "error",
43
42
  error: {
44
43
  code: "wrong-phase",
45
- message: `runPhases678Parallel requires currentPhase=6-docs-ingest, got ${state.currentPhase}`,
44
+ message: `runPhases8910Parallel requires currentPhase=8-docs-ingest, got ${state.currentPhase}`,
46
45
  },
47
46
  state,
48
47
  };
@@ -57,7 +56,7 @@ export async function runPhases678Parallel(state) {
57
56
  off_limits: mapper.output.off_limits_globs,
58
57
  }
59
58
  : {};
60
- const pilotOut = state.outputs["4-pilot"];
59
+ const pilotOut = state.outputs["5-pilot"];
61
60
  const pilotModule = typeof pilotOut?.picked === "string" && pilotOut.picked.length > 0
62
61
  ? pilotOut.picked
63
62
  : undefined;
@@ -66,14 +65,14 @@ export async function runPhases678Parallel(state) {
66
65
  log.info({
67
66
  preScannedDecIds: sharedDecIds.size,
68
67
  preScannedInvIds: sharedInvIds.size,
69
- }, "parallel-678 starting");
68
+ }, "parallel-8910 starting");
70
69
  // Run the three phases sequentially. v0.5.0 ground-state files
71
70
  // (topic-index, anchor-map, sot-bindings, sot-cache) are the shared
72
- // mutable surface; serializing 67b7c removes the last-writer-
71
+ // mutable surface; serializing 8910 removes the last-writer-
73
72
  // wins race that Promise.allSettled had under v0.4.x.
74
73
  const t0 = performance.now();
75
74
  const startedAt = Date.now();
76
- // Phase 6 now runs the staged ingest pipeline (PHASE_6_REDESIGN §4.1):
75
+ // Phase 8 now runs the staged ingest pipeline:
77
76
  // Stage 3 marker scan (0 Haiku) → Stage 1 file-purpose binary filter
78
77
  // (batch=30, concurrency=5) → Stage 2 section-level batch classifier
79
78
  // (batch=30, concurrency=5) → Stage 4 emit drafts to `_inbox/`. Each
@@ -83,7 +82,7 @@ export async function runPhases678Parallel(state) {
83
82
  repoRoot: state.repoRoot,
84
83
  existingDecIds: sharedDecIds,
85
84
  onChunkProgress: (row) => writeProgress(state.repoRoot, {
86
- phase: `6-docs-ingest:${row.stage}`,
85
+ phase: `8-docs-ingest:${row.stage}`,
87
86
  batch: row.entriesDone,
88
87
  total: row.totalEntries,
89
88
  startedAt,
@@ -95,18 +94,8 @@ export async function runPhases678Parallel(state) {
95
94
  }
96
95
  const srcRes = await runPhaseSafely("source-comments-failed", async () => runSourceCommentsIngestion({
97
96
  repoRoot: state.repoRoot,
98
- globs,
99
97
  ...(pilotModule !== undefined ? { pilotModule } : {}),
100
- existingDecIds: sharedDecIds,
101
- existingInvIds: sharedInvIds,
102
- onBatchProgress: (row) => writeProgress(state.repoRoot, {
103
- phase: "7b-source-comments",
104
- batch: row.index + 1,
105
- total: row.total,
106
- classified: row.classified,
107
- failed: row.failed,
108
- startedAt,
109
- }),
98
+ dryRun: false,
110
99
  }));
111
100
  if ("error" in srcRes) {
112
101
  clearProgress(state.repoRoot);
@@ -114,14 +103,7 @@ export async function runPhases678Parallel(state) {
114
103
  }
115
104
  const rulesRes = await runPhaseSafely("rules-merge-failed", async () => runRulesMerge({
116
105
  repoRoot: state.repoRoot,
117
- existingDecIds: sharedDecIds,
118
- existingInvIds: sharedInvIds,
119
- onSectionProgress: (row) => writeProgress(state.repoRoot, {
120
- phase: "7c-rules-merge",
121
- batch: row.index,
122
- total: row.total,
123
- startedAt,
124
- }),
106
+ dryRun: false,
125
107
  }));
126
108
  if ("error" in rulesRes) {
127
109
  clearProgress(state.repoRoot);
@@ -132,12 +114,12 @@ export async function runPhases678Parallel(state) {
132
114
  writeSourceCommentsWalkFile(state.repoRoot, srcRes.value);
133
115
  const persistedSrc = to7bResultPersisted(srcRes.value);
134
116
  const outputs = {
135
- "6-docs-ingest": docsRes.value,
136
- "7b-source-comments": persistedSrc,
137
- "7c-rules-merge": rulesRes.value,
117
+ "8-docs-ingest": docsRes.value,
118
+ "9-source-comments": persistedSrc,
119
+ "10-rules-merge": rulesRes.value,
138
120
  };
139
- // Advance the state machine all the way past 7c so the next phase
140
- // tool the skill calls is 8-baseline.
121
+ // Advance the state machine all the way past 10 so the next phase
122
+ // tool the skill calls is 11-baseline.
141
123
  let next = {
142
124
  ...state,
143
125
  outputs: {
@@ -145,7 +127,7 @@ export async function runPhases678Parallel(state) {
145
127
  ...outputs,
146
128
  },
147
129
  };
148
- const skipTargets = ["6-docs-ingest", "7b-source-comments", "7c-rules-merge"];
130
+ const skipTargets = ["8-docs-ingest", "9-source-comments", "10-rules-merge"];
149
131
  for (const _ of skipTargets) {
150
132
  next = advancePhase(next);
151
133
  }
@@ -166,7 +148,7 @@ export async function runPhases678Parallel(state) {
166
148
  durationMs,
167
149
  decsAfter: sharedDecIds.size,
168
150
  invsAfter: sharedInvIds.size,
169
- }, "parallel-678 complete");
151
+ }, "parallel-8910 complete");
170
152
  return {
171
153
  status: "complete",
172
154
  nextPhase: next.currentPhase,
@@ -187,4 +169,4 @@ async function runPhaseSafely(code, fn) {
187
169
  return { error: { code, message, detail } };
188
170
  }
189
171
  }
190
- //# sourceMappingURL=parallel-678.js.map
172
+ //# sourceMappingURL=parallel-8910.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-8910.js","sourceRoot":"","sources":["../../../src/init/phases/parallel-8910.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Side-file persistence for the heavy Phase 7b output.
2
+ * Side-file persistence for the heavy Phase 9 output.
3
3
  *
4
4
  * `IngestSourceCommentsResult` carries the full walk (every comment block's
5
5
  * raw text + prose) and the matching classifications. On a busy monorepo
@@ -20,12 +20,12 @@ import type { CommentClassKind } from "../source-comments/classify.js";
20
20
  export declare const SOURCE_COMMENTS_WALK_PATH: string;
21
21
  export declare function sourceCommentsWalkAbsPath(repoRoot: string): string;
22
22
  /**
23
- * Atomically write the full Phase 7b result. Creates `.cairn/init/`
23
+ * Atomically write the full Phase 9 result. Creates `.cairn/init/`
24
24
  * if needed.
25
25
  */
26
26
  export declare function writeSourceCommentsWalkFile(repoRoot: string, full: IngestSourceCommentsResult): string;
27
27
  /**
28
- * Read the full Phase 7b result from `.cairn/init/source-comments-walk.json`.
28
+ * Read the full Phase 9 result from `.cairn/init/source-comments-walk.json`.
29
29
  * Returns null if missing or unreadable. Available for debug tooling and
30
30
  * post-hoc inspection — phase consumers prefer the lightweight projection
31
31
  * stored on state.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Side-file persistence for the heavy Phase 7b output.
2
+ * Side-file persistence for the heavy Phase 9 output.
3
3
  *
4
4
  * `IngestSourceCommentsResult` carries the full walk (every comment block's
5
5
  * raw text + prose) and the matching classifications. On a busy monorepo
@@ -22,7 +22,7 @@ export function sourceCommentsWalkAbsPath(repoRoot) {
22
22
  return join(repoRoot, SOURCE_COMMENTS_WALK_PATH);
23
23
  }
24
24
  /**
25
- * Atomically write the full Phase 7b result. Creates `.cairn/init/`
25
+ * Atomically write the full Phase 9 result. Creates `.cairn/init/`
26
26
  * if needed.
27
27
  */
28
28
  export function writeSourceCommentsWalkFile(repoRoot, full) {
@@ -34,7 +34,7 @@ export function writeSourceCommentsWalkFile(repoRoot, full) {
34
34
  return abs;
35
35
  }
36
36
  /**
37
- * Read the full Phase 7b result from `.cairn/init/source-comments-walk.json`.
37
+ * Read the full Phase 9 result from `.cairn/init/source-comments-walk.json`.
38
38
  * Returns null if missing or unreadable. Available for debug tooling and
39
39
  * post-hoc inspection — phase consumers prefer the lightweight projection
40
40
  * stored on state.
@@ -13,7 +13,7 @@
13
13
  * and pick up at the same phase on the next session.
14
14
  */
15
15
  /** Phase ids in execution order. */
16
- export declare const PHASE_IDS: readonly ["1-detect", "2-walker", "3-mapper", "3b-seed", "4-pilot", "5-brand", "5b-topic-index", "6-docs-ingest", "7b-source-comments", "7c-rules-merge", "8-baseline", "10-strip", "12-multidev"];
16
+ export declare const PHASE_IDS: readonly ["1-detect", "2-walker", "3-mapper", "4-seed", "5-pilot", "6-brand", "7-topic-index", "8-docs-ingest", "9-source-comments", "10-rules-merge", "11-baseline", "12-strip", "13-multidev"];
17
17
  export type PhaseId = (typeof PHASE_IDS)[number];
18
18
  /** Inline A/B/C question rendered via AskUserQuestion in the skill. */
19
19
  export interface PhaseQuestion {
@@ -17,15 +17,15 @@ export const PHASE_IDS = [
17
17
  "1-detect",
18
18
  "2-walker",
19
19
  "3-mapper",
20
- "3b-seed",
21
- "4-pilot",
22
- "5-brand",
23
- "5b-topic-index",
24
- "6-docs-ingest",
25
- "7b-source-comments",
26
- "7c-rules-merge",
27
- "8-baseline",
28
- "10-strip",
29
- "12-multidev",
20
+ "4-seed",
21
+ "5-pilot",
22
+ "6-brand",
23
+ "7-topic-index",
24
+ "8-docs-ingest",
25
+ "9-source-comments",
26
+ "10-rules-merge",
27
+ "11-baseline",
28
+ "12-strip",
29
+ "13-multidev",
30
30
  ];
31
31
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/init/phases/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,oCAAoC;AACpC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU;IACV,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,eAAe;IACf,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,UAAU;IACV,aAAa;CACL,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/init/phases/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,oCAAoC;AACpC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU;IACV,UAAU;IACV,UAAU;IACV,QAAQ;IACR,SAAS;IACT,SAAS;IACT,eAAe;IACf,eAAe;IACf,mBAAmB;IACnB,gBAAgB;IAChB,aAAa;IACb,UAAU;IACV,aAAa;CACL,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Phase 7c discovery — find existing project-rules sources.
2
+ * Phase 10 discovery — find existing project-rules sources.
3
3
  *
4
4
  * Plan §5.4 ownership set (v0.5.0):
5
5
  * - <repoRoot>/CLAUDE.md
@@ -7,7 +7,7 @@
7
7
  * - <repoRoot>/.claude/rules/**.md
8
8
  *
9
9
  * `.claude/CLAUDE.md` was previously discovered here too (kind
10
- * `claude-md-claude-dir`). The phase 5b walker treats every reachable
10
+ * `claude-md-claude-dir`). The phase 7 walker treats every reachable
11
11
  * `.md` outside the rule-owned set as `kind="doc"` — so phase 6 already
12
12
  * owns `.claude/CLAUDE.md`. Re-discovering it here would race with phase
13
13
  * 6's emit and double-bind the slug.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Phase 7c discovery — find existing project-rules sources.
2
+ * Phase 10 discovery — find existing project-rules sources.
3
3
  *
4
4
  * Plan §5.4 ownership set (v0.5.0):
5
5
  * - <repoRoot>/CLAUDE.md
@@ -7,15 +7,16 @@
7
7
  * - <repoRoot>/.claude/rules/**.md
8
8
  *
9
9
  * `.claude/CLAUDE.md` was previously discovered here too (kind
10
- * `claude-md-claude-dir`). The phase 5b walker treats every reachable
10
+ * `claude-md-claude-dir`). The phase 7 walker treats every reachable
11
11
  * `.md` outside the rule-owned set as `kind="doc"` — so phase 6 already
12
12
  * owns `.claude/CLAUDE.md`. Re-discovering it here would race with phase
13
13
  * 6's emit and double-bind the slug.
14
14
  *
15
15
  * Returns absolute + repo-relative paths that exist. Caller drives the rest.
16
16
  */
17
- import { existsSync, readdirSync, statSync } from "node:fs";
18
- import { join, relative } from "node:path";
17
+ import { existsSync, statSync } from "node:fs";
18
+ import { join } from "node:path";
19
+ import { toPosix, walkFs } from "@isaacriehm/cairn-state";
19
20
  export function discoverRuleSources(repoRoot) {
20
21
  const out = [];
21
22
  const tryFile = (rel, kind) => {
@@ -37,46 +38,30 @@ export function discoverRuleSources(repoRoot) {
37
38
  tryFile("AGENTS.md", "agents-md-root");
38
39
  const rulesDir = join(repoRoot, ".claude", "rules");
39
40
  if (existsSync(rulesDir)) {
40
- walkRules(rulesDir, repoRoot, out);
41
- }
42
- return out;
43
- }
44
- function walkRules(dir, repoRoot, out) {
45
- let entries;
46
- try {
47
- entries = readdirSync(dir, { withFileTypes: true, encoding: "utf8" });
48
- }
49
- catch {
50
- return;
51
- }
52
- for (const e of entries) {
53
- if (e.name.startsWith("."))
54
- continue;
55
- const abs = join(dir, e.name);
56
- if (e.isDirectory()) {
57
- walkRules(abs, repoRoot, out);
58
- continue;
59
- }
60
- if (!e.isFile())
61
- continue;
62
- if (!e.name.toLowerCase().endsWith(".md"))
63
- continue;
64
- let st;
65
- try {
66
- st = statSync(abs);
67
- }
68
- catch {
69
- continue;
70
- }
71
- out.push({
72
- path: toPosix(relative(repoRoot, abs)),
73
- absPath: abs,
74
- kind: "rule",
75
- size: st.size,
41
+ walkFs({
42
+ dir: rulesDir,
43
+ repoRoot,
44
+ onFile: (rel, abs, e) => {
45
+ if (e.name.startsWith("."))
46
+ return;
47
+ if (!e.name.toLowerCase().endsWith(".md"))
48
+ return;
49
+ let st;
50
+ try {
51
+ st = statSync(abs);
52
+ }
53
+ catch {
54
+ return;
55
+ }
56
+ out.push({
57
+ path: rel,
58
+ absPath: abs,
59
+ kind: "rule",
60
+ size: st.size,
61
+ });
62
+ },
76
63
  });
77
64
  }
78
- }
79
- function toPosix(p) {
80
- return p.replace(/\\/g, "/");
65
+ return out;
81
66
  }
82
67
  //# sourceMappingURL=discover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/init/rules-merge/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAY3C,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,IAA4B,EAAQ,EAAE;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,IAAI,EAAE,CAAC;QACP,IAAI,CAAC;YACH,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO;QACzB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC;IACF,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACvC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,QAAgB,EAAE,GAAqB;IACrE,IAAI,OAAmC,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACpB,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;YAAE,SAAS;QAC1B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QACpD,IAAI,EAAE,CAAC;QACP,IAAI,CAAC;YACH,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtC,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,EAAE,CAAC,IAAI;SACd,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/init/rules-merge/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAY1D,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,IAA4B,EAAQ,EAAE;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,IAAI,EAAE,CAAC;QACP,IAAI,CAAC;YACH,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO;QACzB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC;IACF,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACvC,OAAO,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC;YACL,GAAG,EAAE,QAAQ;YACb,QAAQ;YACR,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;gBACtB,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,OAAO;gBACnC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,OAAO;gBAClD,IAAI,EAAE,CAAC;gBACP,IAAI,CAAC;oBACH,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO;gBACT,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,GAAG;oBACT,OAAO,EAAE,GAAG;oBACZ,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,EAAE,CAAC,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,15 +1,15 @@
1
1
  /**
2
- * Phase 7c orchestrator (v0.5.0 SoT model).
2
+ * Phase 10 orchestrator (v0.5.0 SoT model).
3
3
  *
4
4
  * Plan §5.4 algorithm:
5
5
  * 1. Discover sections in `CLAUDE.md`, `AGENTS.md`, `.claude/rules/*.md`.
6
- * 2. Topic-index lookup (built by phase 5b) before classification:
6
+ * 2. Topic-index lookup (built by phase 7) before classification:
7
7
  * - **Match** — slug already owns a docs/CLAUDE.md/AGENTS.md/rule
8
- * SoT and was emitted by an earlier phase. Phase 7c records the
8
+ * SoT and was emitted by an earlier phase. Phase 10 records the
9
9
  * cite (no source rewrite — operator's narrative stays intact)
10
10
  * and skips emit.
11
11
  * - **Net-new** — slug is in topic-index but not yet emitted.
12
- * Phase 7c classifies the section via Haiku (kind only:
12
+ * Phase 10 classifies the section via Haiku (kind only:
13
13
  * decision / domain-rule / constraint / informational), emits
14
14
  * a verbatim DEC/INV via `sot-emit` with `sot_kind: "path"` +
15
15
  * `sot_path: <file>#<anchor>`, auto-promotes (`status: accepted`).
@@ -90,7 +90,7 @@ interface RuleEmittedRecord {
90
90
  status: "accepted";
91
91
  }
92
92
  interface RuleCiteRecord {
93
- /** DEC/INV id the section was bound to (already emitted by phase 6 / 7b). */
93
+ /** DEC/INV id the section was bound to (already emitted by phase 8 / 7b). */
94
94
  id: string;
95
95
  /** Section's source file. */
96
96
  sourceFile: string;
@@ -98,7 +98,7 @@ interface RuleCiteRecord {
98
98
  slug: string;
99
99
  }
100
100
  interface RuleConflictRecord {
101
- /** Newly emitted entity id (DEC or INV from this phase 7c run). */
101
+ /** Newly emitted entity id (DEC or INV from this phase 10 run). */
102
102
  newId: string;
103
103
  /** Pre-existing accepted entity id the new prose contradicts. */
104
104
  otherId: string;