@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/gc/quality-update.js +7 -11
- package/dist/gc/quality-update.js.map +1 -1
- package/dist/hooks/bypass-detection.d.ts +8 -0
- package/dist/hooks/bypass-detection.js +15 -1
- package/dist/hooks/bypass-detection.js.map +1 -1
- package/dist/hooks/runners/session-start.js +8 -21
- package/dist/hooks/runners/session-start.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init/claude-rule.d.ts +50 -0
- package/dist/init/claude-rule.js +101 -0
- package/dist/init/claude-rule.js.map +1 -0
- package/dist/init/index.d.ts +2 -0
- package/dist/init/index.js +1 -0
- package/dist/init/index.js.map +1 -1
- package/dist/init/multi-dev/install.js +31 -0
- package/dist/init/multi-dev/install.js.map +1 -1
- package/dist/join/index.js +21 -0
- package/dist/join/index.js.map +1 -1
- package/dist/state/rebuild-derived.d.ts +45 -0
- package/dist/state/rebuild-derived.js +221 -0
- package/dist/state/rebuild-derived.js.map +1 -0
- package/package.json +2 -2
- package/templates/.claude/rules/cairn.md +18 -12
- package/templates/.cairn/ground/manifest.yaml +0 -13
package/dist/join/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/join/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
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.
|
|
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.
|
|
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
|
-
##
|
|
7
|
+
## FIRST: check the plugin is installed
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
`cairn-direction` / `cairn-attention` skills
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
23
|
-
mutations without Cairn skip attestation and bypass the
|
|
24
|
-
decisions/invariants the project enforces.
|
|
30
|
+
## When the plugin IS installed
|
|
25
31
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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: []
|