@isaacriehm/cairn-core 0.8.0 → 0.9.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 (143) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/attention/bulk-accept.d.ts +0 -2
  3. package/dist/attention/bulk-accept.js +0 -3
  4. package/dist/attention/bulk-accept.js.map +1 -1
  5. package/dist/attention/scoring.d.ts +1 -3
  6. package/dist/attention/scoring.js +1 -12
  7. package/dist/attention/scoring.js.map +1 -1
  8. package/dist/claude/cache.js +1 -0
  9. package/dist/claude/cache.js.map +1 -1
  10. package/dist/claude/runner.js +25 -1
  11. package/dist/claude/runner.js.map +1 -1
  12. package/dist/claude/types.d.ts +8 -0
  13. package/dist/hooks/runners/payload.d.ts +10 -0
  14. package/dist/hooks/runners/payload.js +13 -0
  15. package/dist/hooks/runners/payload.js.map +1 -1
  16. package/dist/hooks/runners/session-end.js +2 -4
  17. package/dist/hooks/runners/session-end.js.map +1 -1
  18. package/dist/hooks/runners/session-start.js +48 -4
  19. package/dist/hooks/runners/session-start.js.map +1 -1
  20. package/dist/init/brand-derive.js +6 -1
  21. package/dist/init/brand-derive.js.map +1 -1
  22. package/dist/init/brand-setup.d.ts +12 -1
  23. package/dist/init/brand-setup.js +36 -1
  24. package/dist/init/brand-setup.js.map +1 -1
  25. package/dist/init/curator/corpus.d.ts +92 -0
  26. package/dist/init/curator/corpus.js +171 -0
  27. package/dist/init/curator/corpus.js.map +1 -0
  28. package/dist/init/curator/emit.d.ts +42 -0
  29. package/dist/init/curator/emit.js +230 -0
  30. package/dist/init/curator/emit.js.map +1 -0
  31. package/dist/init/curator/index.d.ts +1 -0
  32. package/dist/init/curator/index.js +2 -0
  33. package/dist/init/curator/index.js.map +1 -0
  34. package/dist/init/curator/regex-prefilter.d.ts +54 -0
  35. package/dist/init/curator/regex-prefilter.js +185 -0
  36. package/dist/init/curator/regex-prefilter.js.map +1 -0
  37. package/dist/init/curator/validate.d.ts +46 -0
  38. package/dist/init/curator/validate.js +100 -0
  39. package/dist/init/curator/validate.js.map +1 -0
  40. package/dist/init/curator/walker.d.ts +36 -0
  41. package/dist/init/curator/walker.js +380 -0
  42. package/dist/init/curator/walker.js.map +1 -0
  43. package/dist/init/eta-calibration.d.ts +39 -0
  44. package/dist/init/eta-calibration.js +143 -0
  45. package/dist/init/eta-calibration.js.map +1 -0
  46. package/dist/init/index.d.ts +3 -2
  47. package/dist/init/index.js +2 -1
  48. package/dist/init/index.js.map +1 -1
  49. package/dist/init/init.js +4 -20
  50. package/dist/init/init.js.map +1 -1
  51. package/dist/init/mapper-merge.d.ts +4 -6
  52. package/dist/init/mapper-merge.js +11 -34
  53. package/dist/init/mapper-merge.js.map +1 -1
  54. package/dist/init/mapper-parallel.d.ts +0 -1
  55. package/dist/init/mapper-parallel.js +7 -6
  56. package/dist/init/mapper-parallel.js.map +1 -1
  57. package/dist/init/mapper-prompts.d.ts +1 -4
  58. package/dist/init/mapper-prompts.js +2 -6
  59. package/dist/init/mapper-prompts.js.map +1 -1
  60. package/dist/init/mapper.d.ts +8 -7
  61. package/dist/init/mapper.js +23 -15
  62. package/dist/init/mapper.js.map +1 -1
  63. package/dist/init/overlay.js +0 -1
  64. package/dist/init/overlay.js.map +1 -1
  65. package/dist/init/phases/10-rules-merge.d.ts +7 -2
  66. package/dist/init/phases/10-rules-merge.js +18 -45
  67. package/dist/init/phases/10-rules-merge.js.map +1 -1
  68. package/dist/init/phases/13-multidev.d.ts +5 -1
  69. package/dist/init/phases/13-multidev.js +23 -2
  70. package/dist/init/phases/13-multidev.js.map +1 -1
  71. package/dist/init/phases/4-seed.js +1 -2
  72. package/dist/init/phases/4-seed.js.map +1 -1
  73. package/dist/init/phases/5-preflight.d.ts +42 -0
  74. package/dist/init/phases/5-preflight.js +244 -0
  75. package/dist/init/phases/5-preflight.js.map +1 -0
  76. package/dist/init/phases/7-topic-index.d.ts +6 -0
  77. package/dist/init/phases/7-topic-index.js +13 -0
  78. package/dist/init/phases/7-topic-index.js.map +1 -1
  79. package/dist/init/phases/8-docs-ingest.d.ts +6 -5
  80. package/dist/init/phases/8-docs-ingest.js +17 -56
  81. package/dist/init/phases/8-docs-ingest.js.map +1 -1
  82. package/dist/init/phases/9a-walker.d.ts +15 -0
  83. package/dist/init/phases/9a-walker.js +63 -0
  84. package/dist/init/phases/9a-walker.js.map +1 -0
  85. package/dist/init/phases/9b-curate.d.ts +19 -0
  86. package/dist/init/phases/9b-curate.js +79 -0
  87. package/dist/init/phases/9b-curate.js.map +1 -0
  88. package/dist/init/phases/9c-emit.d.ts +13 -0
  89. package/dist/init/phases/9c-emit.js +57 -0
  90. package/dist/init/phases/9c-emit.js.map +1 -0
  91. package/dist/init/phases/index.d.ts +6 -5
  92. package/dist/init/phases/index.js +4 -4
  93. package/dist/init/phases/index.js.map +1 -1
  94. package/dist/init/phases/mapper-output-io.d.ts +5 -5
  95. package/dist/init/phases/mapper-output-io.js +5 -5
  96. package/dist/init/phases/orchestrator.js +1 -1
  97. package/dist/init/phases/state-io.js +1 -1
  98. package/dist/init/phases/types.d.ts +79 -13
  99. package/dist/init/phases/types.js +4 -2
  100. package/dist/init/phases/types.js.map +1 -1
  101. package/dist/init/source-comments/ingest.d.ts +0 -2
  102. package/dist/init/source-comments/ingest.js.map +1 -1
  103. package/dist/init/source-comments/walker.js +2 -2
  104. package/dist/init/topic-index/index.d.ts +8 -0
  105. package/dist/init/topic-index/index.js +10 -2
  106. package/dist/init/topic-index/index.js.map +1 -1
  107. package/dist/init/topic-index/judge.d.ts +15 -0
  108. package/dist/init/topic-index/judge.js +15 -1
  109. package/dist/init/topic-index/judge.js.map +1 -1
  110. package/dist/init/topic-index/resolve.js +41 -14
  111. package/dist/init/topic-index/resolve.js.map +1 -1
  112. package/dist/init/walker.d.ts +1 -1
  113. package/dist/init/walker.js +1 -1
  114. package/dist/init/workflow-block.d.ts +5 -6
  115. package/dist/init/workflow-block.js +5 -9
  116. package/dist/init/workflow-block.js.map +1 -1
  117. package/dist/mcp/tools/bulk-accept-attention.d.ts +1 -1
  118. package/dist/mcp/tools/bulk-accept-attention.js +4 -6
  119. package/dist/mcp/tools/bulk-accept-attention.js.map +1 -1
  120. package/dist/mcp/tools/init-phases.d.ts +7 -6
  121. package/dist/mcp/tools/init-phases.js +34 -59
  122. package/dist/mcp/tools/init-phases.js.map +1 -1
  123. package/dist/session-start/build.js +47 -5
  124. package/dist/session-start/build.js.map +1 -1
  125. package/package.json +2 -2
  126. package/templates/.cairn/config/trust-policy.yaml +0 -3
  127. package/templates/.cairn/config/workflow.md +0 -1
  128. package/templates/.cairn/ground/canonical-map/topics.yaml +0 -12
  129. package/dist/init/phases/5-pilot.d.ts +0 -10
  130. package/dist/init/phases/5-pilot.js +0 -108
  131. package/dist/init/phases/5-pilot.js.map +0 -1
  132. package/dist/init/phases/9-source-comments.d.ts +0 -6
  133. package/dist/init/phases/9-source-comments.js +0 -67
  134. package/dist/init/phases/9-source-comments.js.map +0 -1
  135. package/dist/init/phases/parallel-8910.d.ts +0 -27
  136. package/dist/init/phases/parallel-8910.js +0 -197
  137. package/dist/init/phases/parallel-8910.js.map +0 -1
  138. package/dist/init/phases/source-comments-output-io.d.ts +0 -89
  139. package/dist/init/phases/source-comments-output-io.js +0 -81
  140. package/dist/init/phases/source-comments-output-io.js.map +0 -1
  141. package/templates/.cairn/ground/capabilities/mcp-tools.yaml +0 -29
  142. package/templates/.cairn/ground/capabilities/skills.yaml +0 -25
  143. package/templates/.cairn/ground/capabilities/snippets.yaml +0 -29
@@ -31,13 +31,21 @@ import { logger } from "../../logger.js";
31
31
  import { jaccard, tokenize } from "../../text/jaccard.js";
32
32
  const log = logger("init.topic-index.resolve");
33
33
  /**
34
- * Bail the rest of phase 7 after this many consecutive judge timeouts
35
- * once the Haiku subprocess starts timing out, every subsequent call is
36
- * very likely to time out too (env / quota / network), and continuing
37
- * would burn TIMEOUT_MS × pair-count of wall-time. Quota / auth errors
38
- * trip the breaker on the first occurrence.
34
+ * Bail the rest of phase 7 after this many consecutive judge failures of
35
+ * ANY kind. Any sustained failure mode (timeout, overloaded, rate-limited
36
+ * via wording the regex didn't catch, broken pipe, JSON parse glitch on
37
+ * every call) means subsequent calls will almost certainly fail too;
38
+ * continuing would burn `TIMEOUT_MS × pair-count` of wall-time AND mask
39
+ * the true partial-completion as a successful phase output. Quota / auth
40
+ * errors trip the breaker on the first occurrence.
41
+ *
42
+ * Crucially, a breaker trip caused by quota/auth — or by reaching this
43
+ * consecutive-fail threshold — surfaces as a thrown error from
44
+ * `resolveTopics`, not a degraded-but-successful result. Phase 7 wraps
45
+ * that as `status: "error"` so the orchestrator stops instead of
46
+ * advancing on a partial topic index.
39
47
  */
40
- const CONSECUTIVE_TIMEOUT_BAIL = 5;
48
+ const CONSECUTIVE_FAIL_BAIL = 5;
41
49
  const PRIORITY = {
42
50
  doc: 0,
43
51
  claudemd: 1,
@@ -110,8 +118,18 @@ export async function resolveTopics(blocks, opts) {
110
118
  const concurrency = Math.max(1, opts.judgeConcurrency ?? 5);
111
119
  let judgeCalls = 0;
112
120
  let unresolvedAmbiguous = 0;
113
- let consecutiveTimeouts = 0;
121
+ let consecutiveFails = 0;
114
122
  let judgeBroken = false;
123
+ /**
124
+ * First fatal error encountered. Set when:
125
+ * - quota/auth error (immediate trip — no point retrying), OR
126
+ * - the consecutive-fail threshold trips on any error kind.
127
+ * Re-thrown after Promise.all so phase 7 surfaces as an error and
128
+ * the orchestrator does NOT advance on a partial topic index.
129
+ * Non-fatal soft failures (isolated parse glitch, single timeout)
130
+ * still count toward `unresolvedAmbiguous` and let the phase finish.
131
+ */
132
+ let firstFatalErr = null;
115
133
  let nextIdx = 0;
116
134
  const sameVerdicts = [];
117
135
  const worker = async () => {
@@ -132,24 +150,27 @@ export async function resolveTopics(blocks, opts) {
132
150
  judgeCalls += 1;
133
151
  try {
134
152
  const verdict = await opts.judge({ a: pair.a, b: pair.b });
135
- consecutiveTimeouts = 0;
153
+ consecutiveFails = 0;
136
154
  if (verdict === "same")
137
155
  sameVerdicts.push({ i: pair.i, j: pair.j });
138
156
  }
139
157
  catch (err) {
140
158
  unresolvedAmbiguous += 1;
159
+ consecutiveFails += 1;
141
160
  if (err instanceof ClaudeError) {
142
161
  if (err.kind === "auth" || isQuotaKind(err.kind)) {
143
162
  log.warn({ kind: err.kind }, "phase 7 judge bailed on quota/auth error");
163
+ if (firstFatalErr === null)
164
+ firstFatalErr = err;
144
165
  judgeBroken = true;
145
166
  }
146
- else if (err.kind === "timeout") {
147
- consecutiveTimeouts += 1;
148
- if (consecutiveTimeouts >= CONSECUTIVE_TIMEOUT_BAIL) {
149
- log.warn({ consecutiveTimeouts }, "phase 7 judge bailed after consecutive timeouts; remaining pairs treated as different");
150
- judgeBroken = true;
151
- }
167
+ }
168
+ if (!judgeBroken && consecutiveFails >= CONSECUTIVE_FAIL_BAIL) {
169
+ log.warn({ consecutiveFails, errKind: err instanceof ClaudeError ? err.kind : "non-claude" }, "phase 7 judge bailed after consecutive fails; surfacing as phase error");
170
+ if (firstFatalErr === null) {
171
+ firstFatalErr = err instanceof Error ? err : new Error(String(err));
152
172
  }
173
+ judgeBroken = true;
153
174
  }
154
175
  }
155
176
  if (opts.onProgress !== undefined) {
@@ -158,6 +179,12 @@ export async function resolveTopics(blocks, opts) {
158
179
  }
159
180
  };
160
181
  await Promise.all(Array.from({ length: concurrency }, () => worker()));
182
+ // Surface fatal failure to phase 7. Doing this before applying merges
183
+ // / writing topicIndex prevents a partial topic-index from being
184
+ // written to ground state when quota / auth / sustained failures
185
+ // mean the resolver never got a clean run.
186
+ if (firstFatalErr !== null)
187
+ throw firstFatalErr;
161
188
  // Apply union-find merges from successful "same" verdicts. Done after
162
189
  // all workers finish so concurrent verdicts can't race the merge map.
163
190
  // Order doesn't affect the final equivalence classes — union is
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/init/topic-index/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/init/topic-index/resolve.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@
31
31
  *
32
32
  * The mapper turns this into the `<slug>:` extension block (route_handler_globs,
33
33
  * dto_globs, generator_source_globs, high_stakes_globs, off_limits_globs,
34
- * pilot_module, key_modules, proposed_sensors, domain_summary).
34
+ * key_modules, proposed_sensors, domain_summary).
35
35
  */
36
36
  export interface ManifestPreview {
37
37
  path: string;
@@ -31,7 +31,7 @@
31
31
  *
32
32
  * The mapper turns this into the `<slug>:` extension block (route_handler_globs,
33
33
  * dto_globs, generator_source_globs, high_stakes_globs, off_limits_globs,
34
- * pilot_module, key_modules, proposed_sensors, domain_summary).
34
+ * key_modules, proposed_sensors, domain_summary).
35
35
  */
36
36
  import { execFileSync } from "node:child_process";
37
37
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
@@ -5,18 +5,17 @@
5
5
  * 1. `.cairn/config.yaml` — the project overlay (built by `init.ts` directly)
6
6
  * 2. `.cairn/config/workflow.md` — the `<slug>:` block in YAML frontmatter
7
7
  *
8
- * (2) is shipped as a template with placeholder values (pilot_module: ALL,
9
- * empty arrays). After seed substitutes `<project_name>:` → `<slug>:`, this
10
- * module patches the slug block with the mapper's outputs while preserving
11
- * the rest of the frontmatter (comments, key order, sibling keys) and the
12
- * markdown body below the closing `---`.
8
+ * (2) is shipped as a template with empty glob arrays. After seed
9
+ * substitutes `<project_name>:` → `<slug>:`, this module patches the slug
10
+ * block with the mapper's outputs while preserving the rest of the
11
+ * frontmatter (comments, key order, sibling keys) and the markdown body
12
+ * below the closing `---`.
13
13
  *
14
14
  * Round-trip uses `yaml`'s `parseDocument` API so comments outside the slug
15
15
  * block survive. Comments inside the slug block are dropped on the keys we
16
16
  * mutate; that's acceptable because the placeholder block is comment-light.
17
17
  */
18
18
  export interface WorkflowSlugBlockUpdate {
19
- pilot_module?: string;
20
19
  route_handler_globs?: string[];
21
20
  dto_globs?: string[];
22
21
  generator_source_globs?: string[];
@@ -5,11 +5,11 @@
5
5
  * 1. `.cairn/config.yaml` — the project overlay (built by `init.ts` directly)
6
6
  * 2. `.cairn/config/workflow.md` — the `<slug>:` block in YAML frontmatter
7
7
  *
8
- * (2) is shipped as a template with placeholder values (pilot_module: ALL,
9
- * empty arrays). After seed substitutes `<project_name>:` → `<slug>:`, this
10
- * module patches the slug block with the mapper's outputs while preserving
11
- * the rest of the frontmatter (comments, key order, sibling keys) and the
12
- * markdown body below the closing `---`.
8
+ * (2) is shipped as a template with empty glob arrays. After seed
9
+ * substitutes `<project_name>:` → `<slug>:`, this module patches the slug
10
+ * block with the mapper's outputs while preserving the rest of the
11
+ * frontmatter (comments, key order, sibling keys) and the markdown body
12
+ * below the closing `---`.
13
13
  *
14
14
  * Round-trip uses `yaml`'s `parseDocument` API so comments outside the slug
15
15
  * block survive. Comments inside the slug block are dropped on the keys we
@@ -44,10 +44,6 @@ export function updateWorkflowSlugBlock(args) {
44
44
  }
45
45
  const applied = [];
46
46
  const u = args.update;
47
- if (u.pilot_module !== undefined) {
48
- slugBlock.set("pilot_module", u.pilot_module);
49
- applied.push("pilot_module");
50
- }
51
47
  if (u.route_handler_globs !== undefined) {
52
48
  slugBlock.set("route_handler_globs", doc.createNode(u.route_handler_globs));
53
49
  applied.push("route_handler_globs");
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-block.js","sourceRoot":"","sources":["../../src/init/workflow-block.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-block.js","sourceRoot":"","sources":["../../src/init/workflow-block.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Wraps `bulkAcceptObvious` so the cairn-attention skill can drain
5
5
  * obvious DEC drafts in one tool call instead of N rounds of
6
6
  * `cairn_resolve_attention(choice="a")` per draft. Loads the project
7
- * globs + pilot module from `.cairn/config.yaml` so the scoring
7
+ * globs from `.cairn/config.yaml` so the scoring
8
8
  * heuristic has the same context the cli subcommand does.
9
9
  *
10
10
  * Returns a slim count-distribution shape — no draft bodies, no file
@@ -4,7 +4,7 @@
4
4
  * Wraps `bulkAcceptObvious` so the cairn-attention skill can drain
5
5
  * obvious DEC drafts in one tool call instead of N rounds of
6
6
  * `cairn_resolve_attention(choice="a")` per draft. Loads the project
7
- * globs + pilot module from `.cairn/config.yaml` so the scoring
7
+ * globs from `.cairn/config.yaml` so the scoring
8
8
  * heuristic has the same context the cli subcommand does.
9
9
  *
10
10
  * Returns a slim count-distribution shape — no draft bodies, no file
@@ -31,7 +31,6 @@ const ConfigSchema = z.object({
31
31
  }).optional(),
32
32
  high_stakes_globs: z.array(z.string()).optional(),
33
33
  off_limits: z.array(z.string()).optional(),
34
- pilot_module: z.string().optional(),
35
34
  }).passthrough();
36
35
  function loadProjectGlobs(repoRoot) {
37
36
  const configPath = join(repoRoot, ".cairn", "config.yaml");
@@ -66,18 +65,17 @@ function loadProjectGlobs(repoRoot) {
66
65
  globs.high_stakes_globs = pg.high_stakes_globs;
67
66
  }
68
67
  }
69
- return cfg.pilot_module !== undefined ? { globs, pilotModule: cfg.pilot_module } : { globs };
68
+ return { globs };
70
69
  }
71
70
  export const bulkAcceptAttentionTool = {
72
71
  name: "cairn_bulk_accept_attention",
73
- description: "Score every DEC draft + invariant in `.cairn/ground/decisions/_inbox/` and `.cairn/ground/invariants/` against a confidence heuristic (file in high_stakes_globs / pilot module / route or dto globs, prose substantiveness, decision verbs, JSDoc tags). Auto-promote DEC drafts at or above `threshold` (default 'high') out of the inbox to accepted state and rebuild the decisions ledger. Stamp `capture_confidence` on every draft + invariant so subsequent attention surfaces can sort. Use this once per adoption to drain the obvious classifications before per-item triage. Returns count distributions and the accepted ID list. `dryRun: true` reports the same distribution without writing.",
72
+ description: "Score every DEC draft + invariant in `.cairn/ground/decisions/_inbox/` and `.cairn/ground/invariants/` against a confidence heuristic (file in high_stakes_globs / route or dto globs, prose substantiveness, decision verbs, JSDoc tags). Auto-promote DEC drafts at or above `threshold` (default 'high') out of the inbox to accepted state and rebuild the decisions ledger. Stamp `capture_confidence` on every draft + invariant so subsequent attention surfaces can sort. Use this once per adoption to drain the obvious classifications before per-item triage. Returns count distributions and the accepted ID list. `dryRun: true` reports the same distribution without writing.",
74
73
  inputSchema: inputShape,
75
74
  handler: async (ctx, input) => {
76
- const { globs, pilotModule } = loadProjectGlobs(ctx.repoRoot);
75
+ const { globs } = loadProjectGlobs(ctx.repoRoot);
77
76
  return bulkAcceptObvious({
78
77
  repoRoot: ctx.repoRoot,
79
78
  globs,
80
- ...(pilotModule !== undefined ? { pilotModule } : {}),
81
79
  threshold: input.threshold ?? "high",
82
80
  ...(input.dryRun !== undefined ? { dryRun: input.dryRun } : {}),
83
81
  });
@@ -1 +1 @@
1
- {"version":3,"file":"bulk-accept-attention.js","sourceRoot":"","sources":["../../../src/mcp/tools/bulk-accept-attention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bulk-accept-attention.js","sourceRoot":"","sources":["../../../src/mcp/tools/bulk-accept-attention.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * MCP tools for the v0.3.5 init pipeline.
2
+ * MCP tools for the v0.9.0 init pipeline.
3
3
  *
4
4
  * Two tools, single surface:
5
5
  * 1. `cairn_init_resume` → { status, nextPhase, repoRoot }
@@ -11,11 +11,12 @@
11
11
  * 3. AskUserQuestion if needs_input → re-call same tool with { answer }
12
12
  * 4. loop on complete + advance until nextPhase === null
13
13
  *
14
- * Phase 8 (`8-docs-ingest`) is special: `cairn_init_run` internally
15
- * dispatches the parallel 8/9/10 runner so the three Haiku-batched
16
- * ingestion phases overlap on wall-clock. The combined result advances
17
- * to `11-baseline`. The skill doesn't need a separate code path for
18
- * this `cairn_init_run` is the only umbrella.
14
+ * Phase 9b-curate is a skill-driven pseudo-phase: between Phase 9a
15
+ * (walker) and Phase 9c (emit), the cairn-adopt skill spawns
16
+ * `cairn:curator-map` and `cairn:curator-reduce` subagents that write
17
+ * `.cairn/init/curator/final.jsonl`. The 9b runner only confirms the
18
+ * file exists + counts entries before advancing; the heavy work
19
+ * happens outside the MCP server.
19
20
  *
20
21
  * State persists to .cairn/init-state.json after every successful
21
22
  * phase result so the operator can crash-recover. The skill no longer
@@ -1,5 +1,5 @@
1
1
  /**
2
- * MCP tools for the v0.3.5 init pipeline.
2
+ * MCP tools for the v0.9.0 init pipeline.
3
3
  *
4
4
  * Two tools, single surface:
5
5
  * 1. `cairn_init_resume` → { status, nextPhase, repoRoot }
@@ -11,11 +11,12 @@
11
11
  * 3. AskUserQuestion if needs_input → re-call same tool with { answer }
12
12
  * 4. loop on complete + advance until nextPhase === null
13
13
  *
14
- * Phase 8 (`8-docs-ingest`) is special: `cairn_init_run` internally
15
- * dispatches the parallel 8/9/10 runner so the three Haiku-batched
16
- * ingestion phases overlap on wall-clock. The combined result advances
17
- * to `11-baseline`. The skill doesn't need a separate code path for
18
- * this `cairn_init_run` is the only umbrella.
14
+ * Phase 9b-curate is a skill-driven pseudo-phase: between Phase 9a
15
+ * (walker) and Phase 9c (emit), the cairn-adopt skill spawns
16
+ * `cairn:curator-map` and `cairn:curator-reduce` subagents that write
17
+ * `.cairn/init/curator/final.jsonl`. The 9b runner only confirms the
18
+ * file exists + counts entries before advancing; the heavy work
19
+ * happens outside the MCP server.
19
20
  *
20
21
  * State persists to .cairn/init-state.json after every successful
21
22
  * phase result so the operator can crash-recover. The skill no longer
@@ -34,7 +35,7 @@
34
35
  * phase outputs — a single bad call could nuke a 90KB mapper run.
35
36
  */
36
37
  import { z } from "zod";
37
- import { PHASE_IDS, clearProgress, freshPhaseState, readPhaseState, resumePhases, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase4Seed, runPhase5Pilot, runPhase6Brand, runPhase7TopicIndex, runPhase8DocsIngest, runPhase9SourceComments, runPhase10RulesMerge, runPhase11Baseline, runPhase12Strip, runPhase13Multidev, runPhases8910Parallel, writePhaseState, writeProgress, } from "../../init/index.js";
38
+ import { PHASE_IDS, clearProgress, freshPhaseState, readPhaseState, resumePhases, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase4Seed, runPhase5Preflight, runPhase6Brand, runPhase7TopicIndex, runPhase8DocsIngest, runPhase9aWalker, runPhase9bCurate, runPhase9cEmit, runPhase10RulesMerge, runPhase11Baseline, runPhase12Strip, runPhase13Multidev, writePhaseState, writeProgress, } from "../../init/index.js";
38
39
  import { mcpError } from "../errors.js";
39
40
  const phaseIdEnum = z.enum(PHASE_IDS);
40
41
  const phaseStateSchema = z.object({
@@ -43,7 +44,7 @@ const phaseStateSchema = z.object({
43
44
  outputs: z.record(z.string(), z.unknown()),
44
45
  answer: z.string().optional(),
45
46
  startedAt: z.string().min(1),
46
- schemaVersion: z.literal(1),
47
+ schemaVersion: z.literal(3),
47
48
  });
48
49
  const phaseRunInput = {
49
50
  phase: phaseIdEnum,
@@ -62,11 +63,13 @@ const RUNNERS = {
62
63
  "2-walker": runPhase2Walker,
63
64
  "3-mapper": runPhase3Mapper,
64
65
  "4-seed": runPhase4Seed,
65
- "5-pilot": runPhase5Pilot,
66
+ "5-preflight": runPhase5Preflight,
66
67
  "6-brand": runPhase6Brand,
67
68
  "7-topic-index": runPhase7TopicIndex,
68
69
  "8-docs-ingest": runPhase8DocsIngest,
69
- "9-source-comments": runPhase9SourceComments,
70
+ "9a-walker": runPhase9aWalker,
71
+ "9b-curate": runPhase9bCurate,
72
+ "9c-emit": runPhase9cEmit,
70
73
  "10-rules-merge": runPhase10RulesMerge,
71
74
  "11-baseline": runPhase11Baseline,
72
75
  "12-strip": runPhase12Strip,
@@ -81,40 +84,6 @@ function toSlim(result) {
81
84
  }
82
85
  return { status: "error", error: result.error };
83
86
  }
84
- /**
85
- * Phase 8 fans out to phases 8/9/10 in parallel. Centralized here so
86
- * `cairn_init_run` callers don't have to special-case the gate.
87
- */
88
- async function handlePhase8Parallel(ctx, state) {
89
- if (state.repoRoot !== ctx.repoRoot) {
90
- return mcpError("VALIDATION_FAILED", `state.repoRoot ${state.repoRoot} does not match MCP context ${ctx.repoRoot}`);
91
- }
92
- const t0 = performance.now();
93
- const result = await runPhases8910Parallel(state);
94
- const durationMs = Math.round(performance.now() - t0);
95
- clearProgress(state.repoRoot);
96
- if (result.status !== "error") {
97
- for (const id of [
98
- "8-docs-ingest",
99
- "9-source-comments",
100
- "10-rules-merge",
101
- ]) {
102
- const phaseOut = result.state.outputs[id];
103
- if (typeof phaseOut === "object" && phaseOut !== null) {
104
- if (!("duration_ms" in phaseOut)) {
105
- Object.assign(phaseOut, { duration_ms: durationMs });
106
- }
107
- }
108
- }
109
- try {
110
- writePhaseState(result.state);
111
- }
112
- catch (err) {
113
- return mcpError("INTERNAL_ERROR", `failed to persist init state: ${err instanceof Error ? err.message : String(err)}`);
114
- }
115
- }
116
- return toSlim(result);
117
- }
118
87
  async function handlePhaseRun(ctx, id, input) {
119
88
  // Resolve state: prefer the explicit arg (smoke tests, debug
120
89
  // tooling), fall back to disk (cairn-adopt skill default).
@@ -139,17 +108,9 @@ async function handlePhaseRun(ctx, id, input) {
139
108
  const stateForRun = input.answer !== undefined && input.answer.length > 0
140
109
  ? { ...state, answer: input.answer }
141
110
  : state;
142
- // Phase 8 dispatches the parallel 8/9/10 runner — the three Haiku-
143
- // batched ingestion phases overlap on wall-clock and the combined
144
- // result advances to `11-baseline`. No separate MCP tool needed.
145
- if (id === "8-docs-ingest") {
146
- return handlePhase8Parallel(ctx, stateForRun);
147
- }
148
111
  const runner = RUNNERS[id];
149
112
  // Coarse-grained statusline coverage
150
- const isLongPhase = id === "3-mapper" ||
151
- id === "9-source-comments" ||
152
- id === "10-rules-merge";
113
+ const isLongPhase = id === "3-mapper" || id === "9a-walker" || id === "9c-emit";
153
114
  if (!isLongPhase) {
154
115
  writeProgress(state.repoRoot, {
155
116
  phase: id,
@@ -183,7 +144,7 @@ async function handlePhaseRun(ctx, id, input) {
183
144
  function makePhaseRunTool() {
184
145
  return {
185
146
  name: "cairn_init_run",
186
- description: "Run the next initialization phase. Call cairn_init_resume to find the next phase, then invoke this tool with that phase ID. Phase 8-docs-ingest internally fans out to phases 8/9/10 in parallel and advances to 11-baseline; every other phase runs sequentially. The cairn-adopt skill loops on this tool until nextPhase === null.",
147
+ description: "Run the next initialization phase. Call cairn_init_resume to find the next phase, then invoke this tool with that phase ID. Phase 8-docs-ingest and 10-rules-merge are no-op markers in v0.9.0 (the curator pipeline 9a-walker → 9b-curate → 9c-emit subsumes both); 10-rules-merge advances to 11-baseline. Phase 9b-curate is a skill-driven pseudo-phase: the cairn-adopt skill must dispatch curator-map + curator-reduce subagents and write .cairn/init/curator/final.jsonl before invoking it. The cairn-adopt skill loops on this tool until nextPhase === null.",
187
148
  inputSchema: phaseRunInput,
188
149
  handler: async (ctx, input) => {
189
150
  return handlePhaseRun(ctx, input.phase, input);
@@ -193,19 +154,33 @@ function makePhaseRunTool() {
193
154
  function makeResumeTool() {
194
155
  return {
195
156
  name: "cairn_init_resume",
196
- description: "Read the on-disk init state for the current repo and return the next phase to invoke. The cairn-adopt skill calls this once at the start of the pipeline (and after any operator interruption) to find where to pick up. Returns { status: 'ready' | 'done', nextPhase: PhaseId | null, repoRoot }.",
157
+ description: "Read the on-disk init state for the current repo and return the next phase to invoke. The cairn-adopt skill calls this once at the start of the pipeline (and after any operator interruption) to find where to pick up. Returns { status: 'ready' | 'done', nextPhase: PhaseId | null, repoRoot }. For a fresh start (no `.cairn/init-state.json`), the tool persists a fresh PhaseState to disk so the very next `cairn_init_run` call can read it back without the skill having to thread state through tool arguments.",
197
158
  inputSchema: initResumeInput,
198
159
  handler: async (ctx) => {
199
160
  const report = resumePhases(ctx.repoRoot);
200
161
  // For a fresh start, ensure state.repoRoot matches ctx.repoRoot
201
162
  // (resumePhases uses freshPhaseState(ctx.repoRoot) for this case).
202
- const repoRoot = report.state.repoRoot !== ctx.repoRoot
203
- ? freshPhaseState(ctx.repoRoot).repoRoot
204
- : report.state.repoRoot;
163
+ const stateForCtx = report.state.repoRoot !== ctx.repoRoot
164
+ ? freshPhaseState(ctx.repoRoot)
165
+ : report.state;
166
+ // Persist fresh state to disk so the next `cairn_init_run` call
167
+ // (which by SKILL.md contract omits the `state` arg) finds
168
+ // something to read. Without this, the loop deadlocks at Phase
169
+ // 1-detect with `VALIDATION_FAILED ... no init state at
170
+ // .cairn/init-state.json` on every fresh adoption.
171
+ const onDisk = readPhaseState(ctx.repoRoot);
172
+ if (onDisk === null) {
173
+ try {
174
+ writePhaseState(stateForCtx);
175
+ }
176
+ catch (err) {
177
+ return mcpError("INTERNAL_ERROR", `failed to seed init state: ${err instanceof Error ? err.message : String(err)}`);
178
+ }
179
+ }
205
180
  return {
206
181
  status: report.status,
207
182
  nextPhase: report.nextPhase,
208
- repoRoot,
183
+ repoRoot: stateForCtx.repoRoot,
209
184
  };
210
185
  },
211
186
  };
@@ -1 +1 @@
1
- {"version":3,"file":"init-phases.js","sourceRoot":"","sources":["../../../src/mcp/tools/init-phases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-phases.js","sourceRoot":"","sources":["../../../src/mcp/tools/init-phases.ts"],"names":[],"mappings":"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"}
@@ -111,9 +111,14 @@ export async function buildSessionStartContext(args) {
111
111
  counts.pendingDrafts = drafts.length;
112
112
  const pendingDraftsSection = renderPendingDraftsSection(drafts);
113
113
  // Baseline findings drive the attention surface alongside drafts +
114
- // drift; read the latest audit's total_findings count if present.
114
+ // drift. Only HARD findings count soft findings (e.g. the
115
+ // commented-block-3-plus-lines pattern that fires on every
116
+ // 3+-line commented block in the repo) are inventory for the
117
+ // attestation cross-check, not actionable attention. Surfacing
118
+ // 500+ soft findings as "⚑ N pending" gives the operator a count
119
+ // they can't drain item-by-item.
115
120
  const latestBaseline = readLatestBaselineAudit(args.repoRoot, warnings);
116
- counts.baselineFindings = latestBaseline?.totalFindings ?? 0;
121
+ counts.baselineFindings = latestBaseline?.hardFindings ?? 0;
117
122
  // ── Section 1.5 — brand + product positioning (always injected) ───
118
123
  const brandAndPositioningSection = readBrandAndPositioning(args.repoRoot, warnings);
119
124
  // ── First-session onboarding block ────────────────────────────────
@@ -558,8 +563,16 @@ function renderFirstSessionOnboarding(args) {
558
563
  lines.push("");
559
564
  }
560
565
  if (audit.totalFindings > 0) {
561
- lines.push(` Baseline debt: ${audit.totalFindings} pre-Cairn violation${audit.totalFindings === 1 ? "" : "s"} found in existing code.`);
562
- lines.push(" Invoke the cairn-attention skill to surface these inline before starting work.");
566
+ const breakdown = audit.hardFindings > 0 || audit.softFindings > 0
567
+ ? ` (${audit.hardFindings} hard · ${audit.softFindings} soft)`
568
+ : "";
569
+ lines.push(` Baseline debt: ${audit.totalFindings} pre-Cairn violation${audit.totalFindings === 1 ? "" : "s"}${breakdown} found in existing code.`);
570
+ if (audit.hardFindings > 0) {
571
+ lines.push(" Invoke the cairn-attention skill to triage hard findings; soft findings are inventory, drained in bulk.");
572
+ }
573
+ else {
574
+ lines.push(" All findings are soft (inventory only). No hard violations to triage.");
575
+ }
563
576
  lines.push("");
564
577
  }
565
578
  else {
@@ -602,13 +615,42 @@ function readLatestBaselineAudit(repoRoot, warnings) {
602
615
  const filesScanned = typeof parsed["files_scanned"] === "number"
603
616
  ? parsed["files_scanned"]
604
617
  : 0;
605
- return { runAt, totalFindings, filesScanned };
618
+ const { hard, soft } = countFindingsBySeverity(parsed["sensors"]);
619
+ return { runAt, totalFindings, hardFindings: hard, softFindings: soft, filesScanned };
606
620
  }
607
621
  catch (err) {
608
622
  warnings.push(`baseline audit unreadable: ${err instanceof Error ? err.message : String(err)}`);
609
623
  return null;
610
624
  }
611
625
  }
626
+ /**
627
+ * Walk the audit's `sensors[].findings[]` and tally by severity. Defensive
628
+ * against schema drift — anything that isn't string `"hard"` or `"soft"`
629
+ * is silently ignored rather than counted under the wrong bucket.
630
+ */
631
+ function countFindingsBySeverity(sensorsRaw) {
632
+ let hard = 0;
633
+ let soft = 0;
634
+ if (!Array.isArray(sensorsRaw))
635
+ return { hard, soft };
636
+ for (const sensor of sensorsRaw) {
637
+ if (typeof sensor !== "object" || sensor === null)
638
+ continue;
639
+ const findings = sensor["findings"];
640
+ if (!Array.isArray(findings))
641
+ continue;
642
+ for (const f of findings) {
643
+ if (typeof f !== "object" || f === null)
644
+ continue;
645
+ const sev = f["severity"];
646
+ if (sev === "hard")
647
+ hard += 1;
648
+ else if (sev === "soft")
649
+ soft += 1;
650
+ }
651
+ }
652
+ return { hard, soft };
653
+ }
612
654
  function readActiveSensorIds(repoRoot, warnings) {
613
655
  try {
614
656
  const reg = loadSensorRegistry(repoRoot);