@isaacriehm/cairn-core 0.14.2 → 0.15.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/join/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/join/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * `rebuildDerived` — reconstruct the gitignored derived ground-state
3
+ * indexes from the committed source of truth (DEC/INV `.md` frontmatter
4
+ * + bodies + source tree).
5
+ *
6
+ * As of v0.15.0 the derived ground files are gitignored to kill multi-dev
7
+ * merge conflicts (every clone used to regenerate and commit divergent
8
+ * copies). They no longer ship in git, so every clone must be able to
9
+ * regenerate them locally. This routine is the single rebuild entry
10
+ * point, wired into:
11
+ * - `cairn join` — a fresh teammate clone has no derived files yet.
12
+ * - SessionStart — refresh on every session open (cheap).
13
+ *
14
+ * (CI needs no rebuild: sensors read the committed DEC/INV `.md` directly,
15
+ * not the derived indexes.)
16
+ *
17
+ * Haiku-free and deterministic from committed sources. Covers the
18
+ * load-bearing set:
19
+ * - decisions/invariants ledgers (context injection)
20
+ * - scope-index (cairn_in_scope)
21
+ * - manifest (inventory)
22
+ * - sot-bindings (lens + sensors + align resolve §DEC → path)
23
+ * - sot-cache (Layer A Jaccard pre-filter)
24
+ *
25
+ * `topic-index.yaml` + `anchor-map.yaml` are discovery-time artifacts
26
+ * (init builds them with a Haiku dedup walk). We don't re-run discovery,
27
+ * but we DO reconstruct them Haiku-free on a COLD clone: the accepted
28
+ * `sot_kind: path` DEC/INV already encode resolved topics, so we walk
29
+ * the source prose blocks (`walkProseBlocks`, deterministic) and
30
+ * content-hash-rematch each entity's `sot_content_hash` to its current
31
+ * location → `anchor-map[slug]` + `topic-index[slug].dec_id`. This only
32
+ * runs when the files are absent (fresh clone / post-untrack); when
33
+ * present they are left to the incremental sot-align hook (no repeat of
34
+ * the full walk on every SessionStart). `file-candidates-map` is a pure
35
+ * function of the resulting `topic-index`.
36
+ */
37
+ export interface RebuildDerivedResult {
38
+ decisions: number;
39
+ invariants: number;
40
+ bindings: number;
41
+ cacheEntries: number;
42
+ /** `sot_kind: path` entities relocated into topic-index/anchor-map on a cold rebuild. */
43
+ topicAnchorRebuilt: number;
44
+ }
45
+ export declare function rebuildDerived(repoRoot: string): RebuildDerivedResult;
@@ -0,0 +1,221 @@
1
+ /**
2
+ * `rebuildDerived` — reconstruct the gitignored derived ground-state
3
+ * indexes from the committed source of truth (DEC/INV `.md` frontmatter
4
+ * + bodies + source tree).
5
+ *
6
+ * As of v0.15.0 the derived ground files are gitignored to kill multi-dev
7
+ * merge conflicts (every clone used to regenerate and commit divergent
8
+ * copies). They no longer ship in git, so every clone must be able to
9
+ * regenerate them locally. This routine is the single rebuild entry
10
+ * point, wired into:
11
+ * - `cairn join` — a fresh teammate clone has no derived files yet.
12
+ * - SessionStart — refresh on every session open (cheap).
13
+ *
14
+ * (CI needs no rebuild: sensors read the committed DEC/INV `.md` directly,
15
+ * not the derived indexes.)
16
+ *
17
+ * Haiku-free and deterministic from committed sources. Covers the
18
+ * load-bearing set:
19
+ * - decisions/invariants ledgers (context injection)
20
+ * - scope-index (cairn_in_scope)
21
+ * - manifest (inventory)
22
+ * - sot-bindings (lens + sensors + align resolve §DEC → path)
23
+ * - sot-cache (Layer A Jaccard pre-filter)
24
+ *
25
+ * `topic-index.yaml` + `anchor-map.yaml` are discovery-time artifacts
26
+ * (init builds them with a Haiku dedup walk). We don't re-run discovery,
27
+ * but we DO reconstruct them Haiku-free on a COLD clone: the accepted
28
+ * `sot_kind: path` DEC/INV already encode resolved topics, so we walk
29
+ * the source prose blocks (`walkProseBlocks`, deterministic) and
30
+ * content-hash-rematch each entity's `sot_content_hash` to its current
31
+ * location → `anchor-map[slug]` + `topic-index[slug].dec_id`. This only
32
+ * runs when the files are absent (fresh clone / post-untrack); when
33
+ * present they are left to the incremental sot-align hook (no repeat of
34
+ * the full walk on every SessionStart). `file-candidates-map` is a pure
35
+ * function of the resulting `topic-index`.
36
+ */
37
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
38
+ import { join } from "node:path";
39
+ import { DecisionFrontmatter, InvariantFrontmatter, anchorMapPath, bindDec, bodyContentHash, decisionsDir, emptyAnchorMap, emptySotBindings, emptySotCache, emptyTopicIndex, invariantsDir, parseFrontmatter, readTopicIndex, rescanScopeIndex, setAnchor, setSotCacheEntry, setTopic, topicIndexPath, writeAnchorMap, writeDecisionsLedger, writeFileCandidatesMap, writeInvariantsLedger, writeManifest, writeSotBindings, writeSotCache, writeTopicIndex, } from "@isaacriehm/cairn-state";
40
+ import { walkProseBlocks } from "../init/topic-index/walk.js";
41
+ import { tokenize } from "../text/jaccard.js";
42
+ import { logger } from "../logger.js";
43
+ const log = logger("rebuild-derived");
44
+ /** Read every `.md` in a ground entity dir (skipping `_`-prefixed). */
45
+ function listEntityFiles(dir) {
46
+ if (!existsSync(dir))
47
+ return [];
48
+ try {
49
+ return readdirSync(dir)
50
+ .filter((n) => n.endsWith(".md") && !n.startsWith("_"))
51
+ .sort();
52
+ }
53
+ catch {
54
+ return [];
55
+ }
56
+ }
57
+ export function rebuildDerived(repoRoot) {
58
+ // 1. Deterministic ledgers + scope-index + manifest. These already had
59
+ // writers; SessionStart used to call the ledgers + scope rescan
60
+ // directly — now centralized here so join gets the same path.
61
+ writeDecisionsLedger({ repoRoot });
62
+ writeInvariantsLedger({ repoRoot });
63
+ rescanScopeIndex(repoRoot);
64
+ // 2. sot-bindings + sot-cache, reconstructed from committed DEC/INV
65
+ // frontmatter (sot_path) + bodies (tokens). The forward binding is
66
+ // one entity → its sot_path; sot-cache holds the tokenized body for
67
+ // the Layer A Jaccard pre-filter.
68
+ let bindings = emptySotBindings();
69
+ let cache = emptySotCache();
70
+ const pathEntities = [];
71
+ let decisions = 0;
72
+ let invariants = 0;
73
+ const decDir = decisionsDir(repoRoot);
74
+ for (const name of listEntityFiles(decDir)) {
75
+ const abs = join(decDir, name);
76
+ const parsed = parseFrontmatter(readFileSync(abs, "utf8"));
77
+ const fm = DecisionFrontmatter.safeParse(parsed.frontmatter);
78
+ if (!fm.success)
79
+ continue;
80
+ if (fm.data.status !== "accepted")
81
+ continue;
82
+ if (fm.data.superseded_by)
83
+ continue;
84
+ const entry = makeCacheEntry(fm.data.id, fm.data.sot_path, parsed.body, abs);
85
+ bindings = bindDec(bindings, fm.data.id, fm.data.sot_path);
86
+ cache = setSotCacheEntry(cache, fm.data.id, entry);
87
+ if (fm.data.sot_kind === "path") {
88
+ pathEntities.push({ id: fm.data.id, sotContentHash: fm.data.sot_content_hash });
89
+ }
90
+ decisions += 1;
91
+ }
92
+ const invDir = invariantsDir(repoRoot);
93
+ for (const name of listEntityFiles(invDir)) {
94
+ const abs = join(invDir, name);
95
+ const parsed = parseFrontmatter(readFileSync(abs, "utf8"));
96
+ const fm = InvariantFrontmatter.safeParse(parsed.frontmatter);
97
+ if (!fm.success)
98
+ continue;
99
+ if ((fm.data.status ?? "active") !== "active")
100
+ continue;
101
+ const entry = makeCacheEntry(fm.data.id, fm.data.sot_path, parsed.body, abs);
102
+ bindings = bindDec(bindings, fm.data.id, fm.data.sot_path);
103
+ cache = setSotCacheEntry(cache, fm.data.id, entry);
104
+ if (fm.data.sot_kind === "path") {
105
+ pathEntities.push({ id: fm.data.id, sotContentHash: fm.data.sot_content_hash });
106
+ }
107
+ invariants += 1;
108
+ }
109
+ writeSotBindings(repoRoot, bindings);
110
+ writeSotCache(repoRoot, cache);
111
+ // 3. Manifest (inventory over the freshly-written ground files).
112
+ writeManifest({ repoRoot });
113
+ // 4. Cold-start only: reconstruct topic-index + anchor-map for
114
+ // `sot_kind: path` entities by content-hash rematch. Skip when both
115
+ // files already exist — the sot-align hook maintains them warm, and
116
+ // a full prose walk on every SessionStart would be wasteful.
117
+ let topicAnchorRebuilt = 0;
118
+ const topicMissing = !existsSync(topicIndexPath(repoRoot));
119
+ const anchorMissing = !existsSync(anchorMapPath(repoRoot));
120
+ if ((topicMissing || anchorMissing) && pathEntities.length > 0) {
121
+ topicAnchorRebuilt = rebuildTopicAndAnchor(repoRoot, pathEntities);
122
+ }
123
+ // 5. file-candidates-map is a pure function of topic-index.
124
+ writeFileCandidatesMap(repoRoot, readTopicIndex(repoRoot));
125
+ const bindingCount = Object.keys(bindings.forward).length;
126
+ const cacheCount = Object.keys(cache.entries).length;
127
+ log.debug({
128
+ repoRoot,
129
+ decisions,
130
+ invariants,
131
+ bindings: bindingCount,
132
+ cache: cacheCount,
133
+ topicAnchorRebuilt,
134
+ }, "rebuilt derived ground state");
135
+ return {
136
+ decisions,
137
+ invariants,
138
+ bindings: bindingCount,
139
+ cacheEntries: cacheCount,
140
+ topicAnchorRebuilt,
141
+ };
142
+ }
143
+ /**
144
+ * Cold rebuild of `topic-index` + `anchor-map` for `sot_kind: path`
145
+ * entities. Walks the source prose blocks once, indexes them by content
146
+ * hash, and relocates each entity's `sot_content_hash` to its current
147
+ * block (slug, file, line range, anchor). Haiku-free — discovery already
148
+ * happened; this just re-resolves known topics. Entities whose SoT block
149
+ * isn't found (content drifted, or it lives in a source-comment the doc
150
+ * walker doesn't cover) are skipped and left to the incremental hook.
151
+ * Returns the number of entities relocated.
152
+ */
153
+ function rebuildTopicAndAnchor(repoRoot, entities) {
154
+ let blocksByHash;
155
+ try {
156
+ const blocks = walkProseBlocks(repoRoot);
157
+ blocksByHash = new Map();
158
+ for (const b of blocks) {
159
+ if (!blocksByHash.has(b.content_hash))
160
+ blocksByHash.set(b.content_hash, b);
161
+ }
162
+ }
163
+ catch {
164
+ return 0; // walk failed (non-repo / IO) — leave maps to the hook
165
+ }
166
+ let topic = emptyTopicIndex();
167
+ let anchors = emptyAnchorMap();
168
+ let relocated = 0;
169
+ const now = new Date().toISOString();
170
+ for (const e of entities) {
171
+ const b = blocksByHash.get(e.sotContentHash);
172
+ if (b === undefined)
173
+ continue;
174
+ const topicEntry = {
175
+ slug: b.slug,
176
+ dec_id: e.id,
177
+ sot_source: b.file,
178
+ candidates: [
179
+ {
180
+ file: b.file,
181
+ kind: b.kind,
182
+ line_range: b.line_range,
183
+ ...(b.anchor !== undefined ? { anchor: b.anchor } : {}),
184
+ },
185
+ ],
186
+ created_at: now,
187
+ content_hash: b.content_hash,
188
+ };
189
+ topic = setTopic(topic, b.slug, topicEntry);
190
+ const anchorEntry = {
191
+ file: b.file,
192
+ content_hash: b.content_hash,
193
+ line_range: b.line_range,
194
+ kind: b.kind,
195
+ ...(b.anchor !== undefined ? { current_anchor: b.anchor } : {}),
196
+ };
197
+ anchors = setAnchor(anchors, b.slug, anchorEntry);
198
+ relocated += 1;
199
+ }
200
+ writeTopicIndex(repoRoot, topic);
201
+ writeAnchorMap(repoRoot, anchors);
202
+ return relocated;
203
+ }
204
+ function makeCacheEntry(id, sotPath, body, abs) {
205
+ let mtimeMs = 0;
206
+ try {
207
+ mtimeMs = statSync(abs).mtimeMs;
208
+ }
209
+ catch {
210
+ /* best-effort — mtime is a local incremental-staleness hint only */
211
+ }
212
+ return {
213
+ dec_id: id,
214
+ sot_path: sotPath,
215
+ body_hash: bodyContentHash(body),
216
+ tokens: Array.from(tokenize(body, { codeAware: true })),
217
+ shingles: [],
218
+ mtime_ms: mtimeMs,
219
+ };
220
+ }
221
+ //# sourceMappingURL=rebuild-derived.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rebuild-derived.js","sourceRoot":"","sources":["../../src/state/rebuild-derived.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isaacriehm/cairn-core",
3
- "version": "0.14.2",
3
+ "version": "0.15.1",
4
4
  "description": "Cairn core — state + context layer. Curated `.cairn/ground/` (decisions, §INV invariants, canonical-map, brand, quality-grades), MCP server, init wizard, hook runners, sensors, GC drift sweep.",
5
5
  "author": "Isaac Riehm",
6
6
  "license": "MIT",
@@ -39,7 +39,7 @@
39
39
  "simple-git": "^3.36.0",
40
40
  "yaml": "^2.8.4",
41
41
  "zod": "^4.4.3",
42
- "@isaacriehm/cairn-state": "0.14.2"
42
+ "@isaacriehm/cairn-state": "0.15.1"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/cli-progress": "^3.11.6",
@@ -4,25 +4,31 @@ This project is adopted by [Cairn](https://github.com/isaacriehm/cairn).
4
4
  The `.cairn/` directory carries decisions, invariants, brand, canonical-map,
5
5
  and sensor configuration that govern code changes here.
6
6
 
7
- ## Plugin probe
7
+ ## FIRST: check the plugin is installed
8
8
 
9
- If you cannot see `mcp__plugin_cairn_cairn__cairn_*` MCP tools or the
10
- `cairn-direction` / `cairn-attention` skills, the operator is missing
11
- the plugin. Surface on the first reply:
9
+ Look for `mcp__plugin_cairn_cairn__cairn_*` MCP tools (or the
10
+ `cairn-direction` / `cairn-attention` skills).
12
11
 
13
- > Cairn plugin not installed. Run once per machine:
12
+ **If they are absent, STOP. Do not edit code yet.** This project enforces
13
+ recorded decisions and invariants through the Cairn plugin; mutating
14
+ source without it skips attestation and silently drifts the codebase from
15
+ its ground state. Lead your first reply with exactly this:
16
+
17
+ > **This project uses Cairn, but the plugin isn't installed in your Claude
18
+ > Code.** Install it once per machine:
14
19
  >
15
20
  > ```
16
21
  > /plugin marketplace add isaacriehm/cairn
17
22
  > /plugin install cairn@isaacriehm-cairn
18
23
  > ```
19
24
  >
20
- > Then `/exit` and reopen. Auto-bootstrap fires on the next session.
25
+ > Then `/exit` and reopen Cairn bootstraps automatically on the next
26
+ > session. (CLI-only contributors: `npm i -g @isaacriehm/cairn && cairn join`.)
27
+
28
+ Hold further code changes until the operator confirms the plugin is present.
21
29
 
22
- Do not continue code changes until the plugin is present — source
23
- mutations without Cairn skip attestation and bypass the
24
- decisions/invariants the project enforces.
30
+ ## When the plugin IS installed
25
31
 
26
- When the plugin IS installed, defer entirely to its SessionStart
27
- context block, `cairn-direction`, and `cairn-attention` surfaces.
28
- This file is the fallback for the plugin-absent case.
32
+ Defer entirely to its SessionStart context block, `cairn-direction`, and
33
+ `cairn-attention` surfaces. This file is only the fallback for the
34
+ plugin-absent case.
@@ -1,13 +0,0 @@
1
- # Ground manifest — read-only for agents.
2
- #
3
- # Regenerated by the GC sweep and post-commit hook. Each entry is one
4
- # canonical-zone file with its hash, classification, audience, verified-at,
5
- # and (for generated artifacts) the source + generator.
6
- #
7
- # Agents query the MCP tool surface, NOT this file directly.
8
- #
9
- # Layout per docs/FILESYSTEM_LAYOUT.md §8.
10
-
11
- version: 1
12
- generated: 2026-05-02T13:19:00Z
13
- files: []