@isaacriehm/cairn-core 0.1.9 → 0.2.0

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 (158) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/context/checkpoint.d.ts +4 -3
  3. package/dist/context/checkpoint.js +4 -3
  4. package/dist/context/checkpoint.js.map +1 -1
  5. package/dist/context/index.d.ts +2 -2
  6. package/dist/context/index.js +2 -2
  7. package/dist/context/spec-delta.js +1 -1
  8. package/dist/context/spec-delta.js.map +1 -1
  9. package/dist/doctor/index.d.ts +1 -1
  10. package/dist/doctor/index.js +4 -59
  11. package/dist/doctor/index.js.map +1 -1
  12. package/dist/frontend-types.d.ts +3 -3
  13. package/dist/frontend-types.js +3 -3
  14. package/dist/gc/quality-update.d.ts +4 -4
  15. package/dist/gc/quality-update.js +4 -4
  16. package/dist/ground/manifest.js +0 -2
  17. package/dist/ground/manifest.js.map +1 -1
  18. package/dist/ground/paths.js +0 -1
  19. package/dist/ground/paths.js.map +1 -1
  20. package/dist/ground/scope-index.d.ts +3 -2
  21. package/dist/ground/scope-index.js +3 -2
  22. package/dist/ground/scope-index.js.map +1 -1
  23. package/dist/hooks/bypass-detection.js +13 -18
  24. package/dist/hooks/bypass-detection.js.map +1 -1
  25. package/dist/hooks/defer.d.ts +50 -0
  26. package/dist/hooks/defer.js +87 -0
  27. package/dist/hooks/defer.js.map +1 -0
  28. package/dist/hooks/index.d.ts +2 -0
  29. package/dist/hooks/index.js +1 -0
  30. package/dist/hooks/index.js.map +1 -1
  31. package/dist/hooks/post-tool-use/ledger-cache.d.ts +2 -2
  32. package/dist/hooks/post-tool-use/ledger-cache.js +5 -4
  33. package/dist/hooks/post-tool-use/ledger-cache.js.map +1 -1
  34. package/dist/hooks/runners/index.d.ts +2 -0
  35. package/dist/hooks/runners/index.js +1 -0
  36. package/dist/hooks/runners/index.js.map +1 -1
  37. package/dist/hooks/runners/session-start.js +49 -15
  38. package/dist/hooks/runners/session-start.js.map +1 -1
  39. package/dist/hooks/runners/stop.js +81 -24
  40. package/dist/hooks/runners/stop.js.map +1 -1
  41. package/dist/hooks/seed-attested.d.ts +25 -0
  42. package/dist/hooks/seed-attested.js +84 -0
  43. package/dist/hooks/seed-attested.js.map +1 -0
  44. package/dist/index.d.ts +2 -0
  45. package/dist/index.js +13 -7
  46. package/dist/index.js.map +1 -1
  47. package/dist/init/index.d.ts +2 -0
  48. package/dist/init/index.js +1 -0
  49. package/dist/init/index.js.map +1 -1
  50. package/dist/init/init.js +8 -90
  51. package/dist/init/init.js.map +1 -1
  52. package/dist/init/mapper.d.ts +1 -1
  53. package/dist/init/multi-dev/install.d.ts +15 -10
  54. package/dist/init/multi-dev/install.js +17 -14
  55. package/dist/init/multi-dev/install.js.map +1 -1
  56. package/dist/init/overlay.d.ts +14 -0
  57. package/dist/init/overlay.js +65 -0
  58. package/dist/init/overlay.js.map +1 -0
  59. package/dist/init/phases/1-detect.d.ts +10 -0
  60. package/dist/init/phases/1-detect.js +36 -0
  61. package/dist/init/phases/1-detect.js.map +1 -0
  62. package/dist/init/phases/10-strip.d.ts +11 -0
  63. package/dist/init/phases/10-strip.js +80 -0
  64. package/dist/init/phases/10-strip.js.map +1 -0
  65. package/dist/init/phases/12-multidev.d.ts +11 -0
  66. package/dist/init/phases/12-multidev.js +39 -0
  67. package/dist/init/phases/12-multidev.js.map +1 -0
  68. package/dist/init/phases/2-walker.d.ts +8 -0
  69. package/dist/init/phases/2-walker.js +34 -0
  70. package/dist/init/phases/2-walker.js.map +1 -0
  71. package/dist/init/phases/3-mapper.d.ts +14 -0
  72. package/dist/init/phases/3-mapper.js +56 -0
  73. package/dist/init/phases/3-mapper.js.map +1 -0
  74. package/dist/init/phases/3b-seed.d.ts +27 -0
  75. package/dist/init/phases/3b-seed.js +149 -0
  76. package/dist/init/phases/3b-seed.js.map +1 -0
  77. package/dist/init/phases/4-pilot.d.ts +10 -0
  78. package/dist/init/phases/4-pilot.js +70 -0
  79. package/dist/init/phases/4-pilot.js.map +1 -0
  80. package/dist/init/phases/5-brand.d.ts +10 -0
  81. package/dist/init/phases/5-brand.js +66 -0
  82. package/dist/init/phases/5-brand.js.map +1 -0
  83. package/dist/init/phases/6-docs-ingest.d.ts +11 -0
  84. package/dist/init/phases/6-docs-ingest.js +39 -0
  85. package/dist/init/phases/6-docs-ingest.js.map +1 -0
  86. package/dist/init/phases/7b-source-comments.d.ts +6 -0
  87. package/dist/init/phases/7b-source-comments.js +34 -0
  88. package/dist/init/phases/7b-source-comments.js.map +1 -0
  89. package/dist/init/phases/7c-rules-merge.d.ts +6 -0
  90. package/dist/init/phases/7c-rules-merge.js +34 -0
  91. package/dist/init/phases/7c-rules-merge.js.map +1 -0
  92. package/dist/init/phases/8-baseline.d.ts +10 -0
  93. package/dist/init/phases/8-baseline.js +52 -0
  94. package/dist/init/phases/8-baseline.js.map +1 -0
  95. package/dist/init/phases/index.d.ts +15 -0
  96. package/dist/init/phases/index.js +16 -0
  97. package/dist/init/phases/index.js.map +1 -0
  98. package/dist/init/phases/orchestrator.d.ts +49 -0
  99. package/dist/init/phases/orchestrator.js +85 -0
  100. package/dist/init/phases/orchestrator.js.map +1 -0
  101. package/dist/init/phases/state-io.d.ts +19 -0
  102. package/dist/init/phases/state-io.js +73 -0
  103. package/dist/init/phases/state-io.js.map +1 -0
  104. package/dist/init/phases/types.d.ts +93 -0
  105. package/dist/init/phases/types.js +30 -0
  106. package/dist/init/phases/types.js.map +1 -0
  107. package/dist/init/seed.js +11 -2
  108. package/dist/init/seed.js.map +1 -1
  109. package/dist/init/walker.d.ts +0 -6
  110. package/dist/init/walker.js +2 -3
  111. package/dist/init/walker.js.map +1 -1
  112. package/dist/join/index.js +49 -2
  113. package/dist/join/index.js.map +1 -1
  114. package/dist/logger.d.ts +1 -1
  115. package/dist/logger.js +5 -5
  116. package/dist/logger.js.map +1 -1
  117. package/dist/mcp/errors.d.ts +1 -1
  118. package/dist/mcp/schemas.d.ts +19 -0
  119. package/dist/mcp/schemas.js +19 -0
  120. package/dist/mcp/schemas.js.map +1 -1
  121. package/dist/mcp/tools/append-run-note.js +13 -6
  122. package/dist/mcp/tools/append-run-note.js.map +1 -1
  123. package/dist/mcp/tools/drop-task.js +1 -1
  124. package/dist/mcp/tools/drop-task.js.map +1 -1
  125. package/dist/mcp/tools/ground-get.js +2 -2
  126. package/dist/mcp/tools/ground-get.js.map +1 -1
  127. package/dist/mcp/tools/index.js +4 -0
  128. package/dist/mcp/tools/index.js.map +1 -1
  129. package/dist/mcp/tools/init-phases.d.ts +24 -0
  130. package/dist/mcp/tools/init-phases.js +140 -0
  131. package/dist/mcp/tools/init-phases.js.map +1 -0
  132. package/dist/mcp/tools/query-history.js +1 -1
  133. package/dist/mcp/tools/query-history.js.map +1 -1
  134. package/dist/mcp/tools/resolve-attention.d.ts +3 -1
  135. package/dist/mcp/tools/resolve-attention.js +228 -11
  136. package/dist/mcp/tools/resolve-attention.js.map +1 -1
  137. package/dist/profiles/types.d.ts +1 -1
  138. package/dist/sensors/catalog.js +8 -3
  139. package/dist/sensors/catalog.js.map +1 -1
  140. package/dist/session-start/build.d.ts +4 -0
  141. package/dist/session-start/build.js +7 -0
  142. package/dist/session-start/build.js.map +1 -1
  143. package/dist/status-line/format.d.ts +10 -7
  144. package/dist/status-line/format.js +16 -14
  145. package/dist/status-line/format.js.map +1 -1
  146. package/dist/status-line/index.d.ts +0 -3
  147. package/dist/status-line/index.js.map +1 -1
  148. package/dist/status-line/reader.d.ts +1 -1
  149. package/dist/status-line/reader.js +2 -5
  150. package/dist/status-line/reader.js.map +1 -1
  151. package/dist/status-line/writer.d.ts +1 -9
  152. package/dist/status-line/writer.js +1 -12
  153. package/dist/status-line/writer.js.map +1 -1
  154. package/package.json +1 -1
  155. package/templates/.cairn/JOIN.md +3 -9
  156. package/templates/.cairn/git-hooks/commit-msg +14 -3
  157. package/templates/.cairn/git-hooks/pre-commit +22 -13
  158. package/templates/README.md +0 -24
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/init/multi-dev/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/init/multi-dev/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Project-overlay config.yaml builder — extracted so both runInit
3
+ * (terminal CLI) and the v0.2.0 MCP-native phase pipeline can call
4
+ * it. Pure function; no IO.
5
+ */
6
+ import type { MapperOutput } from "./mapper.js";
7
+ import type { DetectionResult } from "./types.js";
8
+ export declare const DEFAULT_OFF_LIMITS: string[];
9
+ export interface BuildProjectOverlayArgs {
10
+ detection: DetectionResult;
11
+ decidedSlug: string;
12
+ mapperOutput?: MapperOutput;
13
+ }
14
+ export declare function buildProjectOverlay(args: BuildProjectOverlayArgs): Record<string, unknown>;
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Project-overlay config.yaml builder — extracted so both runInit
3
+ * (terminal CLI) and the v0.2.0 MCP-native phase pipeline can call
4
+ * it. Pure function; no IO.
5
+ */
6
+ import { VERSION } from "../index.js";
7
+ export const DEFAULT_OFF_LIMITS = [
8
+ ".env",
9
+ ".env.*",
10
+ "node_modules/",
11
+ "dist/",
12
+ "build/",
13
+ "target/",
14
+ "__pycache__/",
15
+ "vendor/",
16
+ ".venv/",
17
+ ".direnv/",
18
+ ".cache/",
19
+ "coverage/",
20
+ ];
21
+ export function buildProjectOverlay(args) {
22
+ const detected_sensor_commands = args.detection.proposed_sensors.map((s) => ({
23
+ id: s.id,
24
+ command: s.command,
25
+ args: s.args,
26
+ applies_to: s.applies_to,
27
+ reason: s.reason,
28
+ }));
29
+ const m = args.mapperOutput;
30
+ const offLimits = [...DEFAULT_OFF_LIMITS];
31
+ if (m !== undefined) {
32
+ for (const x of m.off_limits_globs) {
33
+ if (!offLimits.includes(x))
34
+ offLimits.push(x);
35
+ }
36
+ }
37
+ const overlay = {
38
+ version: 1,
39
+ cairn_version: VERSION,
40
+ slug: args.decidedSlug,
41
+ origin_url: args.detection.origin_url,
42
+ stack_signatures: args.detection.stack_signatures.map((s) => s.kind),
43
+ hook_capability: args.detection.hook_capability,
44
+ start_command: args.detection.start_command,
45
+ detected_sensor_commands,
46
+ off_limits: offLimits,
47
+ high_stakes_globs: m?.high_stakes_globs ?? [],
48
+ project_globs: {
49
+ route_handler_globs: m?.route_handler_globs ?? [],
50
+ dto_globs: m?.dto_globs ?? [],
51
+ generator_source_globs: m?.generator_source_globs ?? [],
52
+ high_stakes_globs: m?.high_stakes_globs ?? [],
53
+ },
54
+ };
55
+ if (m !== undefined) {
56
+ overlay["pilot_module"] = m.pilot_module;
57
+ overlay["domain_summary"] = m.domain_summary;
58
+ overlay["key_modules"] = m.key_modules;
59
+ overlay["mapper_proposed_sensors"] = m.proposed_sensors;
60
+ if (m.notes.trim().length > 0)
61
+ overlay["mapper_notes"] = m.notes;
62
+ }
63
+ return overlay;
64
+ }
65
+ //# sourceMappingURL=overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../src/init/overlay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAItC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM;IACN,QAAQ;IACR,eAAe;IACf,OAAO;IACP,QAAQ;IACR,SAAS;IACT,cAAc;IACd,SAAS;IACT,QAAQ;IACR,UAAU;IACV,SAAS;IACT,WAAW;CACZ,CAAC;AAQF,MAAM,UAAU,mBAAmB,CACjC,IAA6B;IAE7B,MAAM,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IAC5B,MAAM,SAAS,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA4B;QACvC,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,OAAO;QACtB,IAAI,EAAE,IAAI,CAAC,WAAW;QACtB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU;QACrC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe;QAC/C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa;QAC3C,wBAAwB;QACxB,UAAU,EAAE,SAAS;QACrB,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,IAAI,EAAE;QAC7C,aAAa,EAAE;YACb,mBAAmB,EAAE,CAAC,EAAE,mBAAmB,IAAI,EAAE;YACjD,SAAS,EAAE,CAAC,EAAE,SAAS,IAAI,EAAE;YAC7B,sBAAsB,EAAE,CAAC,EAAE,sBAAsB,IAAI,EAAE;YACvD,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,IAAI,EAAE;SAC9C;KACF,CAAC;IACF,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;QACzC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;QAC7C,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QACvC,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC;QACxD,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Phase 1-detect — synchronous environment + stack signature scan.
3
+ *
4
+ * Wraps `detectAll` in the PhaseResult contract. No operator input;
5
+ * always advances. Output stamped under `state.outputs["1-detect"]`
6
+ * is the full DetectionResult so downstream phases can read repo_root,
7
+ * stack, sensors, etc. without re-detecting.
8
+ */
9
+ import type { PhaseResult, PhaseState } from "./types.js";
10
+ export declare function runPhase1Detect(state: PhaseState): Promise<PhaseResult>;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Phase 1-detect — synchronous environment + stack signature scan.
3
+ *
4
+ * Wraps `detectAll` in the PhaseResult contract. No operator input;
5
+ * always advances. Output stamped under `state.outputs["1-detect"]`
6
+ * is the full DetectionResult so downstream phases can read repo_root,
7
+ * stack, sensors, etc. without re-detecting.
8
+ */
9
+ import { detectAll } from "../detect.js";
10
+ import { advancePhase } from "./orchestrator.js";
11
+ export async function runPhase1Detect(state) {
12
+ try {
13
+ const detection = await detectAll(state.repoRoot);
14
+ const next = {
15
+ ...state,
16
+ outputs: { ...state.outputs, "1-detect": detection },
17
+ };
18
+ return {
19
+ status: "complete",
20
+ nextPhase: "2-walker",
21
+ state: advancePhase(next),
22
+ };
23
+ }
24
+ catch (err) {
25
+ return {
26
+ status: "error",
27
+ error: {
28
+ code: "detect-failed",
29
+ message: "Failed to scan project environment",
30
+ detail: err instanceof Error ? err.stack ?? err.message : String(err),
31
+ },
32
+ state,
33
+ };
34
+ }
35
+ }
36
+ //# sourceMappingURL=1-detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1-detect.js","sourceRoot":"","sources":["../../../src/init/phases/1-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAiB;IACrD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;SACrD,CAAC;QACF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,oCAAoC;gBAC7C,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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Phase 10-strip — per-module strip-replace consent.
3
+ *
4
+ * Surfaces each ingestion-flagged module as an A/B/C choice (strip /
5
+ * keep / skip). Tracks remaining modules in
6
+ * `outputs["10-strip"].pending` and emits one question at a time
7
+ * until the queue is empty. When the list is empty (most repos), the
8
+ * phase completes immediately with no operator prompts.
9
+ */
10
+ import type { PhaseResult, PhaseState } from "./types.js";
11
+ export declare function runPhase10Strip(state: PhaseState): Promise<PhaseResult>;
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Phase 10-strip — per-module strip-replace consent.
3
+ *
4
+ * Surfaces each ingestion-flagged module as an A/B/C choice (strip /
5
+ * keep / skip). Tracks remaining modules in
6
+ * `outputs["10-strip"].pending` and emits one question at a time
7
+ * until the queue is empty. When the list is empty (most repos), the
8
+ * phase completes immediately with no operator prompts.
9
+ */
10
+ import { advancePhase } from "./orchestrator.js";
11
+ export async function runPhase10Strip(state) {
12
+ const existing = state.outputs["10-strip"];
13
+ const modules = computeFlaggedModules(state);
14
+ // Initialize on first entry.
15
+ let s = existing ?? { pending: [...modules], decisions: {} };
16
+ // Operator just answered → record + dequeue.
17
+ if (state.answer !== undefined && state.answer.length > 0 && s.pending.length > 0) {
18
+ const head = s.pending[0];
19
+ const choice = normalizeChoice(state.answer);
20
+ s = {
21
+ pending: s.pending.slice(1),
22
+ decisions: { ...s.decisions, [head]: choice },
23
+ };
24
+ }
25
+ if (s.pending.length === 0) {
26
+ const next = {
27
+ ...state,
28
+ outputs: { ...state.outputs, "10-strip": s },
29
+ answer: undefined,
30
+ };
31
+ return {
32
+ status: "complete",
33
+ nextPhase: "12-multidev",
34
+ state: advancePhase(next),
35
+ };
36
+ }
37
+ const head = s.pending[0];
38
+ const question = {
39
+ id: `10-strip:${head}`,
40
+ prompt: `Strip the source-comment essay in ${head}?`,
41
+ options: [
42
+ {
43
+ id: "strip",
44
+ label: "strip — DEC is the source of truth",
45
+ },
46
+ {
47
+ id: "keep",
48
+ label: "keep — leave comment alongside DEC",
49
+ },
50
+ {
51
+ id: "skip",
52
+ label: "skip — decide later",
53
+ },
54
+ ],
55
+ default: "skip",
56
+ };
57
+ return {
58
+ status: "needs_input",
59
+ question,
60
+ state: { ...state, outputs: { ...state.outputs, "10-strip": s }, answer: undefined },
61
+ };
62
+ }
63
+ function normalizeChoice(answer) {
64
+ switch (answer) {
65
+ case "strip":
66
+ case "keep":
67
+ case "skip":
68
+ return answer;
69
+ default:
70
+ return "skip";
71
+ }
72
+ }
73
+ function computeFlaggedModules(_state) {
74
+ // Source-comment + docs-ingest classifiers don't currently flag
75
+ // module-level strip candidates explicitly; v0.2.x will extend
76
+ // those classifiers to surface them. For now the queue starts empty
77
+ // → phase 10 completes silently.
78
+ return [];
79
+ }
80
+ //# sourceMappingURL=10-strip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"10-strip.js","sourceRoot":"","sources":["../../../src/init/phases/10-strip.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAcjD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAiB;IACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAA2B,CAAC;IACrE,MAAM,OAAO,GAAa,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAEvD,6BAA6B;IAC7B,IAAI,CAAC,GAAe,QAAQ,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAEzE,6CAA6C;IAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC,GAAG;YACF,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3B,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE;SAC9C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;YAC5C,MAAM,EAAE,SAAS;SAClB,CAAC;QACF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;IAC3B,MAAM,QAAQ,GAAkB;QAC9B,EAAE,EAAE,YAAY,IAAI,EAAE;QACtB,MAAM,EAAE,qCAAqC,IAAI,GAAG;QACpD,OAAO,EAAE;YACP;gBACE,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,oCAAoC;aAC5C;YACD;gBACE,EAAE,EAAE,MAAM;gBACV,KAAK,EAAE,oCAAoC;aAC5C;YACD;gBACE,EAAE,EAAE,MAAM;gBACV,KAAK,EAAE,qBAAqB;aAC7B;SACF;QACD,OAAO,EAAE,MAAM;KAChB,CAAC;IACF,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,QAAQ;QACR,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;KACrF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAkB;IAC/C,gEAAgE;IAChE,+DAA+D;IAC/D,oEAAoE;IACpE,iCAAiC;IACjC,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Phase 12-multidev — detect per-host package manager(s) and emit
3
+ * JOIN.md hints for new contributors.
4
+ *
5
+ * No filesystem mutation outside the result payload. The `.cairn/`
6
+ * skeleton + `.attested-commits` seeding moved to phase 3b-seed; the
7
+ * Claude Code SessionStart bootstrap banner replaces the old
8
+ * `package.json` `prepare` patching path. Idempotent.
9
+ */
10
+ import type { PhaseResult, PhaseState } from "./types.js";
11
+ export declare function runPhase12Multidev(state: PhaseState): Promise<PhaseResult>;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Phase 12-multidev — detect per-host package manager(s) and emit
3
+ * JOIN.md hints for new contributors.
4
+ *
5
+ * No filesystem mutation outside the result payload. The `.cairn/`
6
+ * skeleton + `.attested-commits` seeding moved to phase 3b-seed; the
7
+ * Claude Code SessionStart bootstrap banner replaces the old
8
+ * `package.json` `prepare` patching path. Idempotent.
9
+ */
10
+ import { installMultiDev, } from "../multi-dev/index.js";
11
+ import { advancePhase } from "./orchestrator.js";
12
+ export async function runPhase12Multidev(state) {
13
+ try {
14
+ const result = installMultiDev({
15
+ repoRoot: state.repoRoot,
16
+ });
17
+ const next = {
18
+ ...state,
19
+ outputs: { ...state.outputs, "12-multidev": result },
20
+ };
21
+ return {
22
+ status: "complete",
23
+ nextPhase: null,
24
+ state: advancePhase(next),
25
+ };
26
+ }
27
+ catch (err) {
28
+ return {
29
+ status: "error",
30
+ error: {
31
+ code: "multidev-failed",
32
+ message: "Multi-dev install failed",
33
+ detail: err instanceof Error ? err.stack ?? err.message : String(err),
34
+ },
35
+ state,
36
+ };
37
+ }
38
+ }
39
+ //# sourceMappingURL=12-multidev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"12-multidev.js","sourceRoot":"","sources":["../../../src/init/phases/12-multidev.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,eAAe,GAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAiB;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAA0B,eAAe,CAAC;YACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE;SACrD,CAAC;QACF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,0BAA0B;gBACnC,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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Phase 2-walker — repo summary scan.
3
+ *
4
+ * Synchronous file walk producing manifest previews, by-extension
5
+ * counts, framework signals, etc. Feeds the mapper (3) + pilot (4).
6
+ */
7
+ import type { PhaseResult, PhaseState } from "./types.js";
8
+ export declare function runPhase2Walker(state: PhaseState): Promise<PhaseResult>;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Phase 2-walker — repo summary scan.
3
+ *
4
+ * Synchronous file walk producing manifest previews, by-extension
5
+ * counts, framework signals, etc. Feeds the mapper (3) + pilot (4).
6
+ */
7
+ import { buildRepoSummary } from "../walker.js";
8
+ import { advancePhase } from "./orchestrator.js";
9
+ export async function runPhase2Walker(state) {
10
+ try {
11
+ const summary = buildRepoSummary({ repoRoot: state.repoRoot });
12
+ const next = {
13
+ ...state,
14
+ outputs: { ...state.outputs, "2-walker": summary },
15
+ };
16
+ return {
17
+ status: "complete",
18
+ nextPhase: "3-mapper",
19
+ state: advancePhase(next),
20
+ };
21
+ }
22
+ catch (err) {
23
+ return {
24
+ status: "error",
25
+ error: {
26
+ code: "walker-failed",
27
+ message: "Failed to summarize repo layout",
28
+ detail: err instanceof Error ? err.stack ?? err.message : String(err),
29
+ },
30
+ state,
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=2-walker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2-walker.js","sourceRoot":"","sources":["../../../src/init/phases/2-walker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAiB;IACrD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE;SACnD,CAAC;QACF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Phase 3-mapper — Sonnet-driven domain map.
3
+ *
4
+ * Reads detection (from phase 1) + repo summary (from phase 2),
5
+ * dispatches the chunked mapper pipeline, and stamps MapperResult
6
+ * under outputs["3-mapper"]. The downstream phases consume
7
+ * mapper.output for pilot suggestions, project_globs, sensor
8
+ * proposals, etc.
9
+ *
10
+ * No operator input — the mapper runs unattended (Sonnet via the
11
+ * cairn runner).
12
+ */
13
+ import type { PhaseResult, PhaseState } from "./types.js";
14
+ export declare function runPhase3Mapper(state: PhaseState): Promise<PhaseResult>;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Phase 3-mapper — Sonnet-driven domain map.
3
+ *
4
+ * Reads detection (from phase 1) + repo summary (from phase 2),
5
+ * dispatches the chunked mapper pipeline, and stamps MapperResult
6
+ * under outputs["3-mapper"]. The downstream phases consume
7
+ * mapper.output for pilot suggestions, project_globs, sensor
8
+ * proposals, etc.
9
+ *
10
+ * No operator input — the mapper runs unattended (Sonnet via the
11
+ * cairn runner).
12
+ */
13
+ import { runMapper } from "../mapper.js";
14
+ import { advancePhase } from "./orchestrator.js";
15
+ export async function runPhase3Mapper(state) {
16
+ const detection = state.outputs["1-detect"];
17
+ const summary = state.outputs["2-walker"];
18
+ if (detection === undefined || summary === undefined) {
19
+ return {
20
+ status: "error",
21
+ error: {
22
+ code: "missing-prereqs",
23
+ message: "Phase 3 needs phases 1-detect + 2-walker outputs",
24
+ },
25
+ state,
26
+ };
27
+ }
28
+ try {
29
+ const result = await runMapper({
30
+ detection,
31
+ summary,
32
+ repoRoot: state.repoRoot,
33
+ });
34
+ const next = {
35
+ ...state,
36
+ outputs: { ...state.outputs, "3-mapper": result },
37
+ };
38
+ return {
39
+ status: "complete",
40
+ nextPhase: "3b-seed",
41
+ state: advancePhase(next),
42
+ };
43
+ }
44
+ catch (err) {
45
+ return {
46
+ status: "error",
47
+ error: {
48
+ code: "mapper-failed",
49
+ message: "Mapper pipeline failed",
50
+ detail: err instanceof Error ? err.stack ?? err.message : String(err),
51
+ },
52
+ state,
53
+ };
54
+ }
55
+ }
56
+ //# sourceMappingURL=3-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3-mapper.js","sourceRoot":"","sources":["../../../src/init/phases/3-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAqB,MAAM,cAAc,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAiB;IACrD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAgC,CAAC;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAA4B,CAAC;IACrE,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,kDAAkD;aAC5D;YACD,KAAK;SACN,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAiB,MAAM,SAAS,CAAC;YAC3C,SAAS;YACT,OAAO;YACP,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE;SAClD,CAAC;QACF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,wBAAwB;gBACjC,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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Phase 3b-seed — write `.cairn/` skeleton + project overlay +
3
+ * grandfather pre-adoption commits.
4
+ *
5
+ * Bridges 3-mapper and 4-pilot. Without this phase the v0.2.0 init
6
+ * pipeline produced an `.cairn/` populated only by side effects of
7
+ * downstream phases (events/, baseline/, ground/decisions/_inbox/)
8
+ * but never wrote `config.yaml`, `git-hooks/`, or the brand /
9
+ * canonical-map / capabilities skeleton — leaving the project in a
10
+ * "half-adopted" shape that subsequent SessionStarts could not
11
+ * detect as adopted.
12
+ *
13
+ * Steps:
14
+ * 1. seedCairnLayout (templates → .cairn/)
15
+ * 2. updateWorkflowSlugBlock (mapper output → workflow.md)
16
+ * 3. write .cairn/config.yaml + .cairn/ground/scope-index.yaml
17
+ * 4. seed .cairn/.attested-commits with every reachable HEAD SHA
18
+ * so the Stop-hook bypass detector grandfathers pre-adoption
19
+ * history (otherwise the very next assistant turn flags every
20
+ * pre-adoption commit as a `--no-verify` bypass).
21
+ *
22
+ * No operator input. Always advances. Idempotent — re-running on a
23
+ * project that already has .cairn/ keeps existing files (collisions
24
+ * recorded in seed.collisions but not fatal).
25
+ */
26
+ import type { PhaseResult, PhaseState } from "./types.js";
27
+ export declare function runPhase3bSeed(state: PhaseState): Promise<PhaseResult>;
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Phase 3b-seed — write `.cairn/` skeleton + project overlay +
3
+ * grandfather pre-adoption commits.
4
+ *
5
+ * Bridges 3-mapper and 4-pilot. Without this phase the v0.2.0 init
6
+ * pipeline produced an `.cairn/` populated only by side effects of
7
+ * downstream phases (events/, baseline/, ground/decisions/_inbox/)
8
+ * but never wrote `config.yaml`, `git-hooks/`, or the brand /
9
+ * canonical-map / capabilities skeleton — leaving the project in a
10
+ * "half-adopted" shape that subsequent SessionStarts could not
11
+ * detect as adopted.
12
+ *
13
+ * Steps:
14
+ * 1. seedCairnLayout (templates → .cairn/)
15
+ * 2. updateWorkflowSlugBlock (mapper output → workflow.md)
16
+ * 3. write .cairn/config.yaml + .cairn/ground/scope-index.yaml
17
+ * 4. seed .cairn/.attested-commits with every reachable HEAD SHA
18
+ * so the Stop-hook bypass detector grandfathers pre-adoption
19
+ * history (otherwise the very next assistant turn flags every
20
+ * pre-adoption commit as a `--no-verify` bypass).
21
+ *
22
+ * No operator input. Always advances. Idempotent — re-running on a
23
+ * project that already has .cairn/ keeps existing files (collisions
24
+ * recorded in seed.collisions but not fatal).
25
+ */
26
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
27
+ import { join } from "node:path";
28
+ import { stringify as stringifyYaml } from "yaml";
29
+ import { scopeIndexPath, writeScopeIndex, } from "../../ground/scope-index.js";
30
+ import { seedAttestedCommits } from "../../hooks/seed-attested.js";
31
+ import { buildProjectOverlay } from "../overlay.js";
32
+ import { seedCairnLayout } from "../seed.js";
33
+ import { updateWorkflowSlugBlock } from "../workflow-block.js";
34
+ import { advancePhase } from "./orchestrator.js";
35
+ export async function runPhase3bSeed(state) {
36
+ const detection = state.outputs["1-detect"];
37
+ const mapperResult = state.outputs["3-mapper"];
38
+ if (detection === undefined) {
39
+ return {
40
+ status: "error",
41
+ error: {
42
+ code: "missing-prereqs",
43
+ message: "Phase 3b-seed needs phase 1-detect output",
44
+ },
45
+ state,
46
+ };
47
+ }
48
+ const projectSlug = detection.project_slug;
49
+ const mapperOutput = mapperResult?.output;
50
+ try {
51
+ // Step 1 — seed templates into .cairn/.
52
+ const seed = seedCairnLayout({ repoRoot: state.repoRoot, projectSlug });
53
+ // Step 2 — patch <slug>: workflow.md block when workflow.md was
54
+ // freshly seeded (existing workflow stays untouched on re-run).
55
+ const wfRel = ".cairn/config/workflow.md";
56
+ const wfWasSeeded = seed.written_files.includes(wfRel);
57
+ let workflowSlugPatched = false;
58
+ let workflowPatchError = null;
59
+ if (mapperOutput !== undefined && wfWasSeeded) {
60
+ try {
61
+ updateWorkflowSlugBlock({
62
+ workflowMdPath: join(state.repoRoot, wfRel),
63
+ slug: projectSlug,
64
+ update: {
65
+ pilot_module: mapperOutput.pilot_module,
66
+ route_handler_globs: mapperOutput.route_handler_globs,
67
+ dto_globs: mapperOutput.dto_globs,
68
+ generator_source_globs: mapperOutput.generator_source_globs,
69
+ high_stakes_globs: mapperOutput.high_stakes_globs,
70
+ off_limits_append: mapperOutput.off_limits_globs,
71
+ },
72
+ });
73
+ workflowSlugPatched = true;
74
+ }
75
+ catch (err) {
76
+ // Soft fail — record the error and continue. config.yaml +
77
+ // scope-index still get written below; the operator can
78
+ // hand-edit workflow.md after init if needed.
79
+ workflowPatchError =
80
+ err instanceof Error ? err.stack ?? err.message : String(err);
81
+ }
82
+ }
83
+ // Step 3 — write .cairn/config.yaml.
84
+ const configPath = join(state.repoRoot, ".cairn", "config.yaml");
85
+ mkdirSync(join(state.repoRoot, ".cairn"), { recursive: true });
86
+ if (!existsSync(configPath)) {
87
+ const config = buildProjectOverlay({
88
+ detection,
89
+ decidedSlug: projectSlug,
90
+ ...(mapperOutput !== undefined ? { mapperOutput } : {}),
91
+ });
92
+ writeFileSync(configPath, stringifyYaml(config), "utf8");
93
+ }
94
+ // Step 4 — write .cairn/ground/scope-index.yaml from mapper.
95
+ const scopeFile = scopeIndexPath(state.repoRoot);
96
+ if (!existsSync(scopeFile)) {
97
+ const seedFiles = {};
98
+ const mapperFiles = mapperOutput?.scope_index?.files ?? {};
99
+ for (const [path, e] of Object.entries(mapperFiles)) {
100
+ const entry = {
101
+ decisions: e.decisions,
102
+ invariants: e.invariants,
103
+ };
104
+ if (e.unscoped === true)
105
+ entry.unscoped = true;
106
+ seedFiles[path] = entry;
107
+ }
108
+ writeScopeIndex(state.repoRoot, {
109
+ generated: new Date().toISOString(),
110
+ files: seedFiles,
111
+ });
112
+ }
113
+ // Step 5 — grandfather pre-adoption commits in
114
+ // `.cairn/.attested-commits` so the Stop-hook bypass detector
115
+ // doesn't flag every pre-existing SHA on the next turn.
116
+ const attestedSeed = seedAttestedCommits(state.repoRoot);
117
+ const out = {
118
+ written_files: seed.written_files,
119
+ collisions: seed.collisions,
120
+ config_path: ".cairn/config.yaml",
121
+ scope_index_path: ".cairn/ground/scope-index.yaml",
122
+ workflow_slug_patched: workflowSlugPatched,
123
+ workflow_patch_error: workflowPatchError,
124
+ attested_seeded: attestedSeed.count ?? 0,
125
+ attested_seed_status: attestedSeed.status,
126
+ };
127
+ const next = {
128
+ ...state,
129
+ outputs: { ...state.outputs, "3b-seed": out },
130
+ };
131
+ return {
132
+ status: "complete",
133
+ nextPhase: "4-pilot",
134
+ state: advancePhase(next),
135
+ };
136
+ }
137
+ catch (err) {
138
+ return {
139
+ status: "error",
140
+ error: {
141
+ code: "seed-failed",
142
+ message: "Failed to seed .cairn/ skeleton",
143
+ detail: err instanceof Error ? err.stack ?? err.message : String(err),
144
+ },
145
+ state,
146
+ };
147
+ }
148
+ }
149
+ //# sourceMappingURL=3b-seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3b-seed.js","sourceRoot":"","sources":["../../../src/init/phases/3b-seed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Phase 4-pilot — operator picks the seed module.
3
+ *
4
+ * The mapper's `pilot_module` field is the model's first guess; this
5
+ * phase surfaces it alongside the next 2 strongest `key_modules` so
6
+ * the operator can override. Picking the pilot determines which
7
+ * module's globs flow into `.cairn/config.yaml.project_globs` first.
8
+ */
9
+ import type { PhaseResult, PhaseState } from "./types.js";
10
+ export declare function runPhase4Pilot(state: PhaseState): Promise<PhaseResult>;