@isaacriehm/cairn-core 0.21.0 → 0.22.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 (243) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/align-undo/log.js +3 -2
  3. package/dist/align-undo/log.js.map +1 -1
  4. package/dist/attention/source-strip.js +2 -1
  5. package/dist/attention/source-strip.js.map +1 -1
  6. package/dist/components/emit.js +33 -6
  7. package/dist/components/emit.js.map +1 -1
  8. package/dist/components/freshness.d.ts +51 -0
  9. package/dist/components/freshness.js +121 -0
  10. package/dist/components/freshness.js.map +1 -0
  11. package/dist/components/index.d.ts +4 -0
  12. package/dist/components/index.js +2 -0
  13. package/dist/components/index.js.map +1 -1
  14. package/dist/components/reconfirm.d.ts +64 -0
  15. package/dist/components/reconfirm.js +204 -0
  16. package/dist/components/reconfirm.js.map +1 -0
  17. package/dist/context/handoff-builder.js +3 -3
  18. package/dist/context/handoff-builder.js.map +1 -1
  19. package/dist/context/task-summary.js +2 -2
  20. package/dist/context/task-summary.js.map +1 -1
  21. package/dist/doctor/index.js +7 -7
  22. package/dist/doctor/index.js.map +1 -1
  23. package/dist/events/paths.js +2 -2
  24. package/dist/events/paths.js.map +1 -1
  25. package/dist/fix-align/sentinel.js +2 -3
  26. package/dist/fix-align/sentinel.js.map +1 -1
  27. package/dist/gc/attested-commits.js +2 -2
  28. package/dist/gc/attested-commits.js.map +1 -1
  29. package/dist/gc/canary.js +2 -3
  30. package/dist/gc/canary.js.map +1 -1
  31. package/dist/gc/citation-integrity.d.ts +2 -3
  32. package/dist/gc/citation-integrity.js +2 -26
  33. package/dist/gc/citation-integrity.js.map +1 -1
  34. package/dist/gc/completion-integrity.js +4 -3
  35. package/dist/gc/completion-integrity.js.map +1 -1
  36. package/dist/gc/entity-orphan.js +60 -8
  37. package/dist/gc/entity-orphan.js.map +1 -1
  38. package/dist/gc/ghost-anchor.d.ts +57 -0
  39. package/dist/gc/ghost-anchor.js +171 -0
  40. package/dist/gc/ghost-anchor.js.map +1 -0
  41. package/dist/gc/index.d.ts +2 -0
  42. package/dist/gc/index.js +1 -0
  43. package/dist/gc/index.js.map +1 -1
  44. package/dist/gc/sweep.js +12 -0
  45. package/dist/gc/sweep.js.map +1 -1
  46. package/dist/gc/types.d.ts +1 -1
  47. package/dist/hooks/bypass-detection.js +3 -2
  48. package/dist/hooks/bypass-detection.js.map +1 -1
  49. package/dist/hooks/defer.js +3 -2
  50. package/dist/hooks/defer.js.map +1 -1
  51. package/dist/hooks/ghost-backup.d.ts +37 -0
  52. package/dist/hooks/ghost-backup.js +82 -0
  53. package/dist/hooks/ghost-backup.js.map +1 -0
  54. package/dist/hooks/post-tool-use/allowlist-reader.js +2 -2
  55. package/dist/hooks/post-tool-use/allowlist-reader.js.map +1 -1
  56. package/dist/hooks/post-tool-use/ask-user-blocked.js +2 -2
  57. package/dist/hooks/post-tool-use/ask-user-blocked.js.map +1 -1
  58. package/dist/hooks/post-tool-use/citation-scanner.d.ts +8 -6
  59. package/dist/hooks/post-tool-use/citation-scanner.js +9 -14
  60. package/dist/hooks/post-tool-use/citation-scanner.js.map +1 -1
  61. package/dist/hooks/post-tool-use/legend-builder.d.ts +2 -2
  62. package/dist/hooks/post-tool-use/legend-builder.js +1 -19
  63. package/dist/hooks/post-tool-use/legend-builder.js.map +1 -1
  64. package/dist/hooks/post-tool-use/post-write.js +18 -1
  65. package/dist/hooks/post-tool-use/post-write.js.map +1 -1
  66. package/dist/hooks/post-tool-use/read-enricher.d.ts +2 -2
  67. package/dist/hooks/post-tool-use/read-enricher.js +4 -6
  68. package/dist/hooks/post-tool-use/read-enricher.js.map +1 -1
  69. package/dist/hooks/post-tool-use/sot-align.js +29 -3
  70. package/dist/hooks/post-tool-use/sot-align.js.map +1 -1
  71. package/dist/hooks/post-tool-use/write-guardian.js +4 -4
  72. package/dist/hooks/post-tool-use/write-guardian.js.map +1 -1
  73. package/dist/hooks/runners/context-threshold.js +3 -3
  74. package/dist/hooks/runners/context-threshold.js.map +1 -1
  75. package/dist/hooks/runners/payload.js +2 -1
  76. package/dist/hooks/runners/payload.js.map +1 -1
  77. package/dist/hooks/runners/phase-ready-surface.js +3 -2
  78. package/dist/hooks/runners/phase-ready-surface.js.map +1 -1
  79. package/dist/hooks/runners/session-start.js +42 -3
  80. package/dist/hooks/runners/session-start.js.map +1 -1
  81. package/dist/hooks/runners/stop.js +26 -12
  82. package/dist/hooks/runners/stop.js.map +1 -1
  83. package/dist/hooks/runners/user-prompt-submit.d.ts +2 -2
  84. package/dist/hooks/runners/user-prompt-submit.js +4 -9
  85. package/dist/hooks/runners/user-prompt-submit.js.map +1 -1
  86. package/dist/hooks/seed-attested.js +3 -2
  87. package/dist/hooks/seed-attested.js.map +1 -1
  88. package/dist/index.d.ts +3 -0
  89. package/dist/index.js +2 -0
  90. package/dist/index.js.map +1 -1
  91. package/dist/init/baseline-audit.js +3 -3
  92. package/dist/init/baseline-audit.js.map +1 -1
  93. package/dist/init/claude-rule.js +13 -1
  94. package/dist/init/claude-rule.js.map +1 -1
  95. package/dist/init/curator/corpus.d.ts +1 -0
  96. package/dist/init/curator/corpus.js +6 -2
  97. package/dist/init/curator/corpus.js.map +1 -1
  98. package/dist/init/curator/emit.js +2 -3
  99. package/dist/init/curator/emit.js.map +1 -1
  100. package/dist/init/detect-components.js +2 -2
  101. package/dist/init/detect-components.js.map +1 -1
  102. package/dist/init/eta-calibration.js +2 -2
  103. package/dist/init/eta-calibration.js.map +1 -1
  104. package/dist/init/index.d.ts +1 -1
  105. package/dist/init/index.js +1 -1
  106. package/dist/init/index.js.map +1 -1
  107. package/dist/init/init.d.ts +8 -0
  108. package/dist/init/init.js +16 -6
  109. package/dist/init/init.js.map +1 -1
  110. package/dist/init/mapper.js +2 -2
  111. package/dist/init/mapper.js.map +1 -1
  112. package/dist/init/multi-dev/install.js +24 -0
  113. package/dist/init/multi-dev/install.js.map +1 -1
  114. package/dist/init/phases/11-baseline.js +1 -1
  115. package/dist/init/phases/11-baseline.js.map +1 -1
  116. package/dist/init/phases/4-seed.js +7 -5
  117. package/dist/init/phases/4-seed.js.map +1 -1
  118. package/dist/init/phases/9a-walker.js +4 -0
  119. package/dist/init/phases/9a-walker.js.map +1 -1
  120. package/dist/init/phases/9b-curate.d.ts +1 -0
  121. package/dist/init/phases/9b-curate.js +6 -2
  122. package/dist/init/phases/9b-curate.js.map +1 -1
  123. package/dist/init/phases/9d-comp-walk.js +2 -2
  124. package/dist/init/phases/9d-comp-walk.js.map +1 -1
  125. package/dist/init/phases/9e-comp-annotate.js +63 -3
  126. package/dist/init/phases/9e-comp-annotate.js.map +1 -1
  127. package/dist/init/phases/index.d.ts +0 -1
  128. package/dist/init/phases/index.js +0 -1
  129. package/dist/init/phases/index.js.map +1 -1
  130. package/dist/init/phases/mapper-output-io.d.ts +1 -1
  131. package/dist/init/phases/mapper-output-io.js +3 -2
  132. package/dist/init/phases/mapper-output-io.js.map +1 -1
  133. package/dist/init/phases/state-io.d.ts +1 -1
  134. package/dist/init/phases/state-io.js +3 -2
  135. package/dist/init/phases/state-io.js.map +1 -1
  136. package/dist/init/phases/types.d.ts +20 -8
  137. package/dist/init/phases/types.js +0 -1
  138. package/dist/init/phases/types.js.map +1 -1
  139. package/dist/init/progress.d.ts +1 -0
  140. package/dist/init/progress.js +3 -1
  141. package/dist/init/progress.js.map +1 -1
  142. package/dist/init/rules-merge/ingest.js +3 -3
  143. package/dist/init/rules-merge/ingest.js.map +1 -1
  144. package/dist/init/seed.js +54 -5
  145. package/dist/init/seed.js.map +1 -1
  146. package/dist/init/source-comments/strip-replace.d.ts +0 -1
  147. package/dist/init/source-comments/strip-replace.js +17 -1
  148. package/dist/init/source-comments/strip-replace.js.map +1 -1
  149. package/dist/join/index.d.ts +9 -0
  150. package/dist/join/index.js +82 -25
  151. package/dist/join/index.js.map +1 -1
  152. package/dist/lock.js +4 -3
  153. package/dist/lock.js.map +1 -1
  154. package/dist/mcp/bootstrap-guard.js +10 -1
  155. package/dist/mcp/bootstrap-guard.js.map +1 -1
  156. package/dist/mcp/schemas.d.ts +22 -0
  157. package/dist/mcp/schemas.js +22 -0
  158. package/dist/mcp/schemas.js.map +1 -1
  159. package/dist/mcp/server.js +3 -3
  160. package/dist/mcp/server.js.map +1 -1
  161. package/dist/mcp/telemetry.js +4 -3
  162. package/dist/mcp/telemetry.js.map +1 -1
  163. package/dist/mcp/tools/component-reconfirm.d.ts +7 -0
  164. package/dist/mcp/tools/component-reconfirm.js +39 -0
  165. package/dist/mcp/tools/component-reconfirm.js.map +1 -0
  166. package/dist/mcp/tools/component-register.d.ts +15 -0
  167. package/dist/mcp/tools/component-register.js +65 -0
  168. package/dist/mcp/tools/component-register.js.map +1 -0
  169. package/dist/mcp/tools/index.js +5 -0
  170. package/dist/mcp/tools/index.js.map +1 -1
  171. package/dist/mcp/tools/init-phases.d.ts +2 -0
  172. package/dist/mcp/tools/init-phases.js +21 -5
  173. package/dist/mcp/tools/init-phases.js.map +1 -1
  174. package/dist/mcp/tools/mission-advance.js +5 -5
  175. package/dist/mcp/tools/mission-advance.js.map +1 -1
  176. package/dist/mcp/tools/mission-resume.js +3 -3
  177. package/dist/mcp/tools/mission-resume.js.map +1 -1
  178. package/dist/mcp/tools/record-decision.js +11 -4
  179. package/dist/mcp/tools/record-decision.js.map +1 -1
  180. package/dist/mcp/tools/resolve-attention.js +20 -4
  181. package/dist/mcp/tools/resolve-attention.js.map +1 -1
  182. package/dist/mcp/tools/resume.js +3 -2
  183. package/dist/mcp/tools/resume.js.map +1 -1
  184. package/dist/mcp/tools/search.js +2 -2
  185. package/dist/mcp/tools/search.js.map +1 -1
  186. package/dist/mcp/tools/task-complete.js +2 -3
  187. package/dist/mcp/tools/task-complete.js.map +1 -1
  188. package/dist/mcp/tools/task-create.js +2 -2
  189. package/dist/mcp/tools/task-create.js.map +1 -1
  190. package/dist/migrate/config-io.d.ts +10 -2
  191. package/dist/migrate/config-io.js +21 -19
  192. package/dist/migrate/config-io.js.map +1 -1
  193. package/dist/migrate/gitignore.d.ts +28 -0
  194. package/dist/migrate/gitignore.js +82 -0
  195. package/dist/migrate/gitignore.js.map +1 -0
  196. package/dist/migrate/index.d.ts +1 -0
  197. package/dist/migrate/index.js +1 -0
  198. package/dist/migrate/index.js.map +1 -1
  199. package/dist/migrate/migrations/0001-drop-dead-config-fields.js +2 -2
  200. package/dist/migrate/migrations/0001-drop-dead-config-fields.js.map +1 -1
  201. package/dist/migrate/migrations/0002-backfill-gitignore.d.ts +14 -0
  202. package/dist/migrate/migrations/0002-backfill-gitignore.js +40 -0
  203. package/dist/migrate/migrations/0002-backfill-gitignore.js.map +1 -0
  204. package/dist/migrate/registry.js +2 -1
  205. package/dist/migrate/registry.js.map +1 -1
  206. package/dist/migrate/runner.js +17 -10
  207. package/dist/migrate/runner.js.map +1 -1
  208. package/dist/migrate/types.d.ts +10 -2
  209. package/dist/missions/task-link.js +4 -5
  210. package/dist/missions/task-link.js.map +1 -1
  211. package/dist/paths/index.d.ts +12 -1
  212. package/dist/paths/index.js +17 -3
  213. package/dist/paths/index.js.map +1 -1
  214. package/dist/sensors/catalog.js +3 -3
  215. package/dist/sensors/catalog.js.map +1 -1
  216. package/dist/session-start/build.js +31 -16
  217. package/dist/session-start/build.js.map +1 -1
  218. package/dist/status-line/event-queue.js +2 -1
  219. package/dist/status-line/event-queue.js.map +1 -1
  220. package/dist/status-line/reader.js +5 -5
  221. package/dist/status-line/reader.js.map +1 -1
  222. package/dist/status-line/writer.js +2 -1
  223. package/dist/status-line/writer.js.map +1 -1
  224. package/dist/tasks/lifecycle.js +10 -9
  225. package/dist/tasks/lifecycle.js.map +1 -1
  226. package/dist/trace/index.js +2 -2
  227. package/dist/trace/index.js.map +1 -1
  228. package/dist/update-check.d.ts +28 -0
  229. package/dist/update-check.js +137 -0
  230. package/dist/update-check.js.map +1 -0
  231. package/package.json +2 -2
  232. package/templates/.cairn/git-hooks/commit-msg +33 -5
  233. package/templates/.cairn/git-hooks/post-commit +13 -3
  234. package/templates/.cairn/git-hooks/pre-commit +48 -25
  235. package/dist/hooks/read-enrich.d.ts +0 -6
  236. package/dist/hooks/read-enrich.js +0 -11
  237. package/dist/hooks/read-enrich.js.map +0 -1
  238. package/dist/hooks/write-guard.d.ts +0 -6
  239. package/dist/hooks/write-guard.js +0 -11
  240. package/dist/hooks/write-guard.js.map +0 -1
  241. package/dist/init/phases/12-strip.d.ts +0 -10
  242. package/dist/init/phases/12-strip.js +0 -88
  243. package/dist/init/phases/12-strip.js.map +0 -1
@@ -19,10 +19,11 @@
19
19
  * the same window is idempotent.
20
20
  */
21
21
  import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
22
- import { dirname, join } from "node:path";
22
+ import { dirname } from "node:path";
23
23
  import { z } from "zod";
24
24
  import { withWriteLock } from "../lock.js";
25
25
  import { logger } from "../logger.js";
26
+ import { cairnDir } from "@isaacriehm/cairn-state";
26
27
  const log = logger("align-undo.log");
27
28
  /**
28
29
  * Drop entries older than this on the next append + GC sweep. Operators
@@ -54,7 +55,7 @@ export const AlignUndoEntry = z.object({
54
55
  augments_existing_id: z.string().optional(),
55
56
  });
56
57
  export function alignUndoLogPath(repoRoot) {
57
- return join(repoRoot, ".cairn", "state", "align-undo-log.jsonl");
58
+ return cairnDir(repoRoot, "state", "align-undo-log.jsonl");
58
59
  }
59
60
  export async function appendAlignUndoEntry(repoRoot, entry) {
60
61
  const validated = AlignUndoEntry.parse(entry);
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/align-undo/log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/align-undo/log.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ import { parse as parseYaml } from "yaml";
23
23
  import { z } from "zod";
24
24
  import { applyStripReplace, formatBareCitation, } from "../init/source-comments/strip-replace.js";
25
25
  import { logger } from "../logger.js";
26
+ import { cairnDir } from "@isaacriehm/cairn-state";
26
27
  const DraftMetaSchema = z.object({
27
28
  blockId: z.string().nullable().optional(),
28
29
  sourceFile: z.string().nullable().optional(),
@@ -108,7 +109,7 @@ function extractAuditBlocks(body) {
108
109
  }));
109
110
  }
110
111
  export function findLatestSourceCommentsAudit(repoRoot) {
111
- const dir = join(repoRoot, ".cairn", "baseline");
112
+ const dir = cairnDir(repoRoot, "baseline");
112
113
  if (!existsSync(dir))
113
114
  return null;
114
115
  let entries;
@@ -1 +1 @@
1
- {"version":3,"file":"source-strip.js","sourceRoot":"","sources":["../../src/attention/source-strip.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source-strip.js","sourceRoot":"","sources":["../../src/attention/source-strip.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@
18
18
  import { mkdirSync, writeFileSync } from "node:fs";
19
19
  import { join } from "node:path";
20
20
  import { stringify as stringifyYaml } from "yaml";
21
- import { bodyContentHash, collectComponents, deriveInvId, hasComponentConfig, invariantsDir, loadComponentsConfig, writeInvariantsLedger, } from "@isaacriehm/cairn-state";
21
+ import { cairnDir, bodyContentHash, collectComponents, deriveInvId, hasComponentConfig, invariantsDir, isGhost, loadComponentsConfig, readComponentRegistry, writeInvariantsLedger, } from "@isaacriehm/cairn-state";
22
22
  import { buildComponentIndex } from "./index-build.js";
23
23
  import { runComponentAudit } from "./audit.js";
24
24
  const CAPTURE_SOURCE = "cairn-init-components";
@@ -133,16 +133,37 @@ function writeComponentBaseline(repoRoot, audit, missing) {
133
133
  severity: "soft",
134
134
  message: `${f.message} — ${f.recommendation}`,
135
135
  }));
136
+ // Ghost forbids the `@cairn` header in client source, so the "missing"
137
+ // list is an *unregistered units* offer, not a header nag — soft, and
138
+ // resolved by `cairn_component_register` (writes the out-of-repo store,
139
+ // never the file). Committed keeps the hard header-debt gate.
140
+ const ghost = isGhost(repoRoot);
136
141
  const missingFindings = missing.map((p) => ({
137
142
  path: p,
138
143
  line: 0,
139
- severity: "hard",
140
- message: "missing @cairn header — annotate this component so it joins the registry (the daily-flow check blocks on this)",
144
+ severity: (ghost ? "soft" : "hard"),
145
+ message: ghost
146
+ ? "unregistered unit — register it via cairn_component_register so it joins the store (no source edit)"
147
+ : "missing @cairn header — annotate this component so it joins the registry (the daily-flow check blocks on this)",
141
148
  }));
142
- const total = auditFindings.length + missingFindings.length;
149
+ // Ghost-only: registered components the freshness gate flagged as
150
+ // identity-changed (§3.8.1 L3). Surfacing them here — at emit / `components
151
+ // audit`, a quota-expected context — is where the deferred reclassify is
152
+ // meant to run. Soft offer; resolved by re-confirming the entry.
153
+ const reconfirmFindings = ghost
154
+ ? readComponentRegistry(repoRoot)
155
+ .entries.filter((e) => e.needs_reconfirm === true)
156
+ .map((e) => ({
157
+ path: e.file,
158
+ line: 0,
159
+ severity: "soft",
160
+ message: `${e.name} changed shape/exports since registration — re-confirm its category/purpose (no source edit)`,
161
+ }))
162
+ : [];
163
+ const total = auditFindings.length + missingFindings.length + reconfirmFindings.length;
143
164
  if (total === 0)
144
165
  return null;
145
- const dir = join(repoRoot, ".cairn", "baseline");
166
+ const dir = cairnDir(repoRoot, "baseline");
146
167
  mkdirSync(dir, { recursive: true });
147
168
  const nowIso = new Date().toISOString();
148
169
  const filename = `components-${nowIso.replace(/[:.]/g, "-")}.yaml`;
@@ -151,7 +172,13 @@ function writeComponentBaseline(repoRoot, audit, missing) {
151
172
  total_findings: total,
152
173
  sensors: [
153
174
  { sensor_id: "component-audit", findings: auditFindings },
154
- { sensor_id: "component-missing-header", findings: missingFindings },
175
+ {
176
+ sensor_id: ghost ? "component-unregistered" : "component-missing-header",
177
+ findings: missingFindings,
178
+ },
179
+ ...(reconfirmFindings.length > 0
180
+ ? [{ sensor_id: "component-reconfirm", findings: reconfirmFindings }]
181
+ : []),
155
182
  ],
156
183
  };
157
184
  writeFileSync(join(dir, filename), stringifyYaml(payload), "utf8");
@@ -1 +1 @@
1
- {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/components/emit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/components/emit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Headerless component freshness — the edit-time gate (ghost-mode design).
3
+ *
4
+ * In committed mode the `@cairn <Name>` header rots in place the moment someone
5
+ * edits a component and ignores the comment — caught only by a later sensor.
6
+ * Ghost has no header, so the out-of-repo registry has to *detect* a body change
7
+ * at edit time and decide whether the classification it stored is still valid.
8
+ *
9
+ * The hard rule: **the hot edit path never calls the LLM.** This module is the
10
+ * cheap-to-expensive gate that runs on every Write/Edit and exits free at the
11
+ * first layer that settles it. Reclassification (the only LLM spend) is deferred
12
+ * to a quota-expected context (a `components audit` / backfill, or the operator
13
+ * acting on the surfaced "N components changed" offer) — never here.
14
+ *
15
+ * - **L0 — registered?** Edited path not in the registry → stop. Zero cost.
16
+ * (Most edits — committed repos exit even earlier on the `isGhost` guard.)
17
+ * - **L1 — body changed?** Whole-file fingerprint matches the stored hash →
18
+ * stop. Zero work. (A Write that didn't actually change bytes.)
19
+ * - **L2 — identity changed (deterministic only)?** Body differs, but the
20
+ * exports + unit-shape are unchanged and the registered export symbol still
21
+ * exists → an internal refactor → refresh the fingerprint, no flag, no LLM.
22
+ * - **L3 — identity may have genuinely changed.** Exports changed, the shape
23
+ * flipped, or the registered export vanished → mark the entry
24
+ * `needs_reconfirm` (+ refresh the fingerprint/snapshot), free. The expensive
25
+ * reclassify runs later.
26
+ *
27
+ * v1 anchors on a whole-file fingerprint (one component per file is the UI
28
+ * convention, so the file body *is* the component span); the export-span hash is
29
+ * a later precision refinement. Every path is `isGhost`-gated — committed mode's
30
+ * header is its own SoT and this never runs there.
31
+ */
32
+ export type FreshnessAction = "inert" | "not-registered" | "unchanged" | "refreshed" | "reconfirm";
33
+ export interface FreshnessResult {
34
+ action: FreshnessAction;
35
+ /** Repo-relative path the gate ran against. */
36
+ file: string;
37
+ /** The registered component name, when the path resolved to one. */
38
+ name: string | null;
39
+ /**
40
+ * Operator-facing one-liner for the L3 case (surfaced as a PostToolUse hint),
41
+ * or null for every settled-free outcome.
42
+ */
43
+ hint: string | null;
44
+ }
45
+ /**
46
+ * Run the L0–L3 freshness gate against one repo-relative file. Pure, fast,
47
+ * deterministic — NO LLM. Mutates the registry only when a registered
48
+ * component's body actually changed (L2 refresh or L3 flag). Best-effort: any
49
+ * failure degrades to `inert` so the hot Write path is never blocked.
50
+ */
51
+ export declare function runComponentFreshness(repoRoot: string, relPath: string): FreshnessResult;
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Headerless component freshness — the edit-time gate (ghost-mode design).
3
+ *
4
+ * In committed mode the `@cairn <Name>` header rots in place the moment someone
5
+ * edits a component and ignores the comment — caught only by a later sensor.
6
+ * Ghost has no header, so the out-of-repo registry has to *detect* a body change
7
+ * at edit time and decide whether the classification it stored is still valid.
8
+ *
9
+ * The hard rule: **the hot edit path never calls the LLM.** This module is the
10
+ * cheap-to-expensive gate that runs on every Write/Edit and exits free at the
11
+ * first layer that settles it. Reclassification (the only LLM spend) is deferred
12
+ * to a quota-expected context (a `components audit` / backfill, or the operator
13
+ * acting on the surfaced "N components changed" offer) — never here.
14
+ *
15
+ * - **L0 — registered?** Edited path not in the registry → stop. Zero cost.
16
+ * (Most edits — committed repos exit even earlier on the `isGhost` guard.)
17
+ * - **L1 — body changed?** Whole-file fingerprint matches the stored hash →
18
+ * stop. Zero work. (A Write that didn't actually change bytes.)
19
+ * - **L2 — identity changed (deterministic only)?** Body differs, but the
20
+ * exports + unit-shape are unchanged and the registered export symbol still
21
+ * exists → an internal refactor → refresh the fingerprint, no flag, no LLM.
22
+ * - **L3 — identity may have genuinely changed.** Exports changed, the shape
23
+ * flipped, or the registered export vanished → mark the entry
24
+ * `needs_reconfirm` (+ refresh the fingerprint/snapshot), free. The expensive
25
+ * reclassify runs later.
26
+ *
27
+ * v1 anchors on a whole-file fingerprint (one component per file is the UI
28
+ * convention, so the file body *is* the component span); the export-span hash is
29
+ * a later precision refinement. Every path is `isGhost`-gated — committed mode's
30
+ * header is its own SoT and this never runs there.
31
+ */
32
+ import { existsSync, readFileSync } from "node:fs";
33
+ import { join } from "node:path";
34
+ import { bodyContentHash, extractExportNames, isGhost, lookupComponentEntryByFile, profileForFile, readComponentRegistry, registerComponentEntry, } from "@isaacriehm/cairn-state";
35
+ import { logger } from "../logger.js";
36
+ const log = logger("components.freshness");
37
+ function inert(file) {
38
+ return { action: "inert", file, name: null, hint: null };
39
+ }
40
+ /** Set equality, order-independent — a reorder is not an identity change. */
41
+ function sameSet(a, b) {
42
+ if (a.length !== b.length)
43
+ return false;
44
+ const sa = new Set(a);
45
+ for (const x of b)
46
+ if (!sa.has(x))
47
+ return false;
48
+ return true;
49
+ }
50
+ /**
51
+ * Run the L0–L3 freshness gate against one repo-relative file. Pure, fast,
52
+ * deterministic — NO LLM. Mutates the registry only when a registered
53
+ * component's body actually changed (L2 refresh or L3 flag). Best-effort: any
54
+ * failure degrades to `inert` so the hot Write path is never blocked.
55
+ */
56
+ export function runComponentFreshness(repoRoot, relPath) {
57
+ try {
58
+ // Committed mode: the in-file header is the SoT — this gate does not apply.
59
+ if (!isGhost(repoRoot))
60
+ return inert(relPath);
61
+ // L0 — is this a registered unit? (Cheap: one small yaml read, memoized
62
+ // isGhost already short-circuited committed repos to zero cost.)
63
+ const reg = readComponentRegistry(repoRoot);
64
+ const entry = lookupComponentEntryByFile(reg, relPath);
65
+ if (entry === null) {
66
+ return { action: "not-registered", file: relPath, name: null, hint: null };
67
+ }
68
+ const abs = join(repoRoot, relPath);
69
+ if (!existsSync(abs)) {
70
+ // Deletion is GC/orphan territory, not freshness — leave the entry as-is.
71
+ return { action: "not-registered", file: relPath, name: entry.name, hint: null };
72
+ }
73
+ let source;
74
+ try {
75
+ source = readFileSync(abs, "utf8");
76
+ }
77
+ catch {
78
+ return { action: "not-registered", file: relPath, name: entry.name, hint: null };
79
+ }
80
+ // L1 — body changed? Whole-file fingerprint vs the stored hash.
81
+ const hash = bodyContentHash(source);
82
+ if (hash === entry.anchor.content_hash) {
83
+ return { action: "unchanged", file: relPath, name: entry.name, hint: null };
84
+ }
85
+ // Body differs — L2/L3 deterministic identity check.
86
+ const exportsNow = extractExportNames(source, relPath);
87
+ const shapeNow = profileForFile(relPath)?.isUnitShaped(source, relPath) ?? false;
88
+ // No baseline snapshot (legacy entry registered before snapshots existed):
89
+ // backfill it on this edit, never flag — we have nothing to compare against.
90
+ const hasBaseline = (entry.exports?.length ?? 0) > 0 || entry.unit_shaped !== undefined;
91
+ const identityChanged = hasBaseline &&
92
+ (!sameSet(exportsNow, entry.exports ?? []) ||
93
+ (entry.unit_shaped !== undefined && entry.unit_shaped !== shapeNow) ||
94
+ !exportsNow.includes(entry.export));
95
+ const updated = {
96
+ ...entry,
97
+ anchor: { ...entry.anchor, content_hash: hash },
98
+ exports: exportsNow,
99
+ unit_shaped: shapeNow,
100
+ // Latch the flag: an internal refactor must NOT clear a reconfirm that a
101
+ // prior identity change already raised — only an actual reclassify clears
102
+ // it. So once true, stay true until re-confirmed.
103
+ needs_reconfirm: identityChanged ? true : entry.needs_reconfirm,
104
+ };
105
+ registerComponentEntry(repoRoot, updated, reg);
106
+ if (identityChanged) {
107
+ return {
108
+ action: "reconfirm",
109
+ file: relPath,
110
+ name: entry.name,
111
+ hint: `⬡ ${entry.name} changed shape/exports — re-confirm its registry purpose with \`cairn components audit\` (ghost: no source edit).`,
112
+ };
113
+ }
114
+ return { action: "refreshed", file: relPath, name: entry.name, hint: null };
115
+ }
116
+ catch (err) {
117
+ log.warn({ err: err instanceof Error ? err.message : String(err), file: relPath }, "component freshness gate failed; degrading to inert");
118
+ return inert(relPath);
119
+ }
120
+ }
121
+ //# sourceMappingURL=freshness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/components/freshness.ts"],"names":[],"mappings":"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"}
@@ -6,3 +6,7 @@ export { runComponentAudit } from "./audit.js";
6
6
  export type { ComponentAuditFinding, ComponentAuditKind, ComponentAuditResult, } from "./audit.js";
7
7
  export { emitComponentStore } from "./emit.js";
8
8
  export type { ComponentEmitResult } from "./emit.js";
9
+ export { runComponentFreshness } from "./freshness.js";
10
+ export type { FreshnessAction, FreshnessResult } from "./freshness.js";
11
+ export { runComponentReconfirm } from "./reconfirm.js";
12
+ export type { ReconfirmArgs, ReconfirmResult, ReconfirmVerdict } from "./reconfirm.js";
@@ -2,4 +2,6 @@ export { runComponentCheck } from "./check.js";
2
2
  export { buildComponentIndex } from "./index-build.js";
3
3
  export { runComponentAudit } from "./audit.js";
4
4
  export { emitComponentStore } from "./emit.js";
5
+ export { runComponentFreshness } from "./freshness.js";
6
+ export { runComponentReconfirm } from "./reconfirm.js";
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Headerless component re-confirm — the deferred reclassify tier (§3.8.1).
3
+ *
4
+ * The freshness gate (`freshness.ts`) runs on every edit and, when a registered
5
+ * component's identity changes, latches `needs_reconfirm` — deterministically,
6
+ * NO LLM. This module is the *other half*: the narrow, quota-gated pass that
7
+ * actually decides whether the stored classification still holds and clears the
8
+ * flag. It runs ONLY in a quota-expected context (an explicit
9
+ * `cairn_component_reconfirm`, a `components audit` refresh, or the operator
10
+ * acting on the surfaced "N components changed" offer) — never on the hot edit
11
+ * path.
12
+ *
13
+ * Tier split (§3.8.2): *initial* classification ("what IS this component —
14
+ * category, purpose") is a rich judgment → Sonnet (the adoption annotator). A
15
+ * *re-confirm* on a changed body ("does the EXISTING category still fit?") is a
16
+ * narrow yes/no → **Haiku**. That keeps the recurring, higher-frequency path the
17
+ * cheapest one.
18
+ *
19
+ * Cost controls, mirroring sot-align:
20
+ * - **Hard per-run cap** on Haiku calls; entries past it stay flagged
21
+ * (deferred), logged via the returned counts — never silently dropped.
22
+ * - **Verdict cached on the body fingerprint** — re-running over a still-flagged
23
+ * component whose body hasn't changed is a free cache hit, so repeated sweeps
24
+ * don't re-burn quota on a stuck-stale entry.
25
+ *
26
+ * A "fits" verdict clears the flag. A "stale"/"ambiguous" verdict leaves it
27
+ * flagged; the operator resolves it by re-registering (`cairn_component_register`
28
+ * overwrites the entry — and, building it fresh, drops the flag). Every path is
29
+ * `isGhost`-gated.
30
+ */
31
+ export type ReconfirmVerdict = "fits" | "stale" | "ambiguous";
32
+ export interface ReconfirmArgs {
33
+ repoRoot: string;
34
+ /** Hard cap on fresh Haiku calls per run. Rest stay flagged (deferred). */
35
+ cap?: number;
36
+ /** Reconfirm a single file (operator acting on one offer). Omit = sweep all. */
37
+ onlyFile?: string;
38
+ /** Mock judge for smokes — default is the real Haiku judge. */
39
+ mockJudge?: (args: {
40
+ name: string;
41
+ category: string;
42
+ purpose: string;
43
+ body: string;
44
+ }) => Promise<ReconfirmVerdict>;
45
+ }
46
+ export interface ReconfirmResult {
47
+ /** Flagged entries in scope this run. */
48
+ considered: number;
49
+ /** Verdict "fits" → flag cleared. */
50
+ cleared: number;
51
+ /** Verdict "stale"/"ambiguous" (or unreadable source) → left flagged. */
52
+ stillStale: number;
53
+ /** Past the Haiku cap → untouched, still flagged. */
54
+ deferred: number;
55
+ /** Fresh Haiku calls made. */
56
+ haikuCalls: number;
57
+ /** Verdicts served from the fingerprint cache (free). */
58
+ cacheHits: number;
59
+ }
60
+ /**
61
+ * Re-confirm flagged components. No-op (zeros) outside ghost. NEVER called from
62
+ * the hot edit path — this is the quota-expected reclassify pass.
63
+ */
64
+ export declare function runComponentReconfirm(args: ReconfirmArgs): Promise<ReconfirmResult>;