@isaacriehm/cairn-state 0.22.5

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 (94) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/alignment-pending.d.ts +28 -0
  5. package/dist/alignment-pending.js +83 -0
  6. package/dist/alignment-pending.js.map +1 -0
  7. package/dist/anchor-map.d.ts +14 -0
  8. package/dist/anchor-map.js +56 -0
  9. package/dist/anchor-map.js.map +1 -0
  10. package/dist/archive.d.ts +48 -0
  11. package/dist/archive.js +96 -0
  12. package/dist/archive.js.map +1 -0
  13. package/dist/cache.d.ts +48 -0
  14. package/dist/cache.js +241 -0
  15. package/dist/cache.js.map +1 -0
  16. package/dist/component-registry.d.ts +93 -0
  17. package/dist/component-registry.js +0 -0
  18. package/dist/component-registry.js.map +1 -0
  19. package/dist/components.d.ts +192 -0
  20. package/dist/components.js +603 -0
  21. package/dist/components.js.map +1 -0
  22. package/dist/config.d.ts +9 -0
  23. package/dist/config.js +26 -0
  24. package/dist/config.js.map +1 -0
  25. package/dist/drift.d.ts +8 -0
  26. package/dist/drift.js +23 -0
  27. package/dist/drift.js.map +1 -0
  28. package/dist/file-candidates-map.d.ts +23 -0
  29. package/dist/file-candidates-map.js +76 -0
  30. package/dist/file-candidates-map.js.map +1 -0
  31. package/dist/frontmatter.d.ts +32 -0
  32. package/dist/frontmatter.js +77 -0
  33. package/dist/frontmatter.js.map +1 -0
  34. package/dist/fs.d.ts +36 -0
  35. package/dist/fs.js +47 -0
  36. package/dist/fs.js.map +1 -0
  37. package/dist/glob.d.ts +10 -0
  38. package/dist/glob.js +46 -0
  39. package/dist/glob.js.map +1 -0
  40. package/dist/home.d.ts +69 -0
  41. package/dist/home.js +168 -0
  42. package/dist/home.js.map +1 -0
  43. package/dist/index.d.ts +29 -0
  44. package/dist/index.js +30 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/languages.d.ts +113 -0
  47. package/dist/languages.js +512 -0
  48. package/dist/languages.js.map +1 -0
  49. package/dist/ledgers.d.ts +14 -0
  50. package/dist/ledgers.js +105 -0
  51. package/dist/ledgers.js.map +1 -0
  52. package/dist/logger.d.ts +13 -0
  53. package/dist/logger.js +17 -0
  54. package/dist/logger.js.map +1 -0
  55. package/dist/manifest.d.ts +10 -0
  56. package/dist/manifest.js +84 -0
  57. package/dist/manifest.js.map +1 -0
  58. package/dist/missions.d.ts +119 -0
  59. package/dist/missions.js +414 -0
  60. package/dist/missions.js.map +1 -0
  61. package/dist/paths.d.ts +117 -0
  62. package/dist/paths.js +241 -0
  63. package/dist/paths.js.map +1 -0
  64. package/dist/quality-grades.d.ts +11 -0
  65. package/dist/quality-grades.js +100 -0
  66. package/dist/quality-grades.js.map +1 -0
  67. package/dist/rejected.d.ts +42 -0
  68. package/dist/rejected.js +100 -0
  69. package/dist/rejected.js.map +1 -0
  70. package/dist/schemas.d.ts +789 -0
  71. package/dist/schemas.js +506 -0
  72. package/dist/schemas.js.map +1 -0
  73. package/dist/scope-index.d.ts +96 -0
  74. package/dist/scope-index.js +299 -0
  75. package/dist/scope-index.js.map +1 -0
  76. package/dist/slug.d.ts +81 -0
  77. package/dist/slug.js +138 -0
  78. package/dist/slug.js.map +1 -0
  79. package/dist/sot-bindings.d.ts +14 -0
  80. package/dist/sot-bindings.js +79 -0
  81. package/dist/sot-bindings.js.map +1 -0
  82. package/dist/sot-cache.d.ts +18 -0
  83. package/dist/sot-cache.js +62 -0
  84. package/dist/sot-cache.js.map +1 -0
  85. package/dist/text.d.ts +27 -0
  86. package/dist/text.js +63 -0
  87. package/dist/text.js.map +1 -0
  88. package/dist/topic-index.d.ts +27 -0
  89. package/dist/topic-index.js +82 -0
  90. package/dist/topic-index.js.map +1 -0
  91. package/dist/walk.d.ts +7 -0
  92. package/dist/walk.js +34 -0
  93. package/dist/walk.js.map +1 -0
  94. package/package.json +35 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"missions.js","sourceRoot":"","sources":["../src/missions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /** `.cairn/config.yaml` — the per-repo config + adoption marker. */
2
+ export declare function configPath(repoRoot: string): string;
3
+ /** `core.hooksPath` value Cairn writes in committed mode (relative, tracked). */
4
+ export declare const COMMITTED_HOOKS_PATH = ".cairn/git-hooks";
5
+ /**
6
+ * The `core.hooksPath` value join writes for THIS repo's mode: committed → the
7
+ * relative `.cairn/git-hooks`; ghost → the absolute out-of-repo
8
+ * `<cairnHome>/git-hooks` (a relative path can't reach outside the tree). Single
9
+ * source for the mode fork — the writer (`setGitHooksPath`) and the reader
10
+ * (`inspectJoinState`) both call this so the expected value can't drift.
11
+ */
12
+ export declare function cairnHooksPathForConfig(repoRoot: string): string;
13
+ /**
14
+ * True when the repo is cairn-adopted in EITHER mode. `cairnDir` resolves to
15
+ * the in-repo `.cairn/` (committed) or the out-of-repo state home (ghost), so a
16
+ * present `config.yaml` is the single mode-agnostic "adoption finished" signal
17
+ * — the same one `resolveRepoRoot` uses for its ghost branch. CLI guards use
18
+ * this instead of a literal `${repoRoot}/.cairn` probe, which is blind to ghost
19
+ * repos whose state lives out-of-repo.
20
+ */
21
+ export declare function isAdopted(repoRoot: string): boolean;
22
+ /**
23
+ * Convert a path to POSIX format (using forward slashes).
24
+ */
25
+ export declare function toPosix(p: string): string;
26
+ /**
27
+ * Canonical-zone glob roots, relative to the adopted project's repo root.
28
+ *
29
+ * Per FILESYSTEM_LAYOUT.md §2.1. These paths are project-agnostic (every
30
+ * cairn-adopted repo carries the same layout).
31
+ */
32
+ export declare const CANONICAL_GLOBS: string[];
33
+ /** Paths excluded from canonical regardless of glob match. */
34
+ export declare const CANONICAL_EXCLUDES: string[];
35
+ export declare function groundDir(repoRoot: string): string;
36
+ export declare function manifestPath(repoRoot: string): string;
37
+ export declare function decisionsDir(repoRoot: string): string;
38
+ export declare function invariantsDir(repoRoot: string): string;
39
+ /**
40
+ * `.cairn/ground/.archive/` — the retirement graveyard. DEC/INV entities
41
+ * that orphaned (source gone / zero live cites) or were manually retired
42
+ * are moved here. Outside the active ledger and the canonical zone; only
43
+ * `cairn_query_history` reads it.
44
+ */
45
+ export declare function archiveDir(repoRoot: string): string;
46
+ export declare function archiveDecisionsDir(repoRoot: string): string;
47
+ export declare function archiveInvariantsDir(repoRoot: string): string;
48
+ export declare function decisionsLedgerPath(repoRoot: string): string;
49
+ export declare function invariantsLedgerPath(repoRoot: string): string;
50
+ export declare function qualityGradesPath(repoRoot: string): string;
51
+ export declare function topicIndexPath(repoRoot: string): string;
52
+ export declare function rejectedYamlPath(repoRoot: string): string;
53
+ export declare function fileCandidatesMapPath(repoRoot: string): string;
54
+ export declare function sotBindingsPath(repoRoot: string): string;
55
+ export declare function sotCachePath(repoRoot: string): string;
56
+ export declare function anchorMapPath(repoRoot: string): string;
57
+ /**
58
+ * `.cairn/ground/components/` — the component-registry index store. Holds
59
+ * the generated INDEX.md (single-app) or manifest + `index/<ws>.md` slices
60
+ * (monorepo). Derived from `@cairn` source headers, so gitignored per the
61
+ * v0.15.0 gitignore-derived-ground-state decision: the headers in code are
62
+ * the committed source of truth, this directory is a rebuildable cache the
63
+ * agent reads in full before UI work.
64
+ */
65
+ export declare function componentsGroundDir(repoRoot: string): string;
66
+ /** `.cairn/ground/components/INDEX.md` — flat inventory or monorepo manifest. */
67
+ export declare function componentsIndexPath(repoRoot: string): string;
68
+ /** `.cairn/ground/components/index/` — per-workspace slice dir (monorepo only). */
69
+ export declare function componentsSliceDir(repoRoot: string): string;
70
+ /**
71
+ * `.cairn/ground/components/index/<ws>.md` — one workspace's inventory slice.
72
+ * The workspace name is sanitized to a filesystem-safe slug; callers pass the
73
+ * already-sanitized slice filename when iterating render output.
74
+ */
75
+ export declare function componentSlicePath(repoRoot: string, sliceSlug: string): string;
76
+ export declare function conflictsDir(repoRoot: string): string;
77
+ export declare function archivedConflictsDir(repoRoot: string): string;
78
+ export declare function alignmentPendingDir(repoRoot: string): string;
79
+ export declare function sotRenderedCacheDir(repoRoot: string): string;
80
+ export declare function haikuCacheDir(repoRoot: string): string;
81
+ export declare function stalenessDir(repoRoot: string): string;
82
+ export declare function stalenessLogPath(repoRoot: string): string;
83
+ export declare function stalenessCurrentPath(repoRoot: string): string;
84
+ /**
85
+ * Layer A live-hook deferred-block log. PostToolUse Write/Edit appends
86
+ * one rich record per block when the per-Write Haiku cap is exceeded
87
+ * or Pass-2-still-ambiguous fires. Drained by SessionStart Drain at SessionStart.
88
+ */
89
+ export declare function layerADeferredLogPath(repoRoot: string): string;
90
+ /**
91
+ * Layer B pre-commit-drift rich log. Git pre-commit hook appends one
92
+ * record per prose block discovered in staged content. Drained by
93
+ * SessionStart Drain at SessionStart.
94
+ */
95
+ export declare function preCommitDeferredLogPath(repoRoot: string): string;
96
+ export declare function runsTerminalDir(repoRoot: string): string;
97
+ /** `.cairn/ground/missions/` — committed roadmap surface. */
98
+ export declare function missionsGroundRoot(repoRoot: string): string;
99
+ /** `.cairn/ground/missions/_done/` — archived roadmaps. */
100
+ export declare function missionsGroundDoneRoot(repoRoot: string): string;
101
+ /** `.cairn/ground/missions/<id>/` for the live roadmap. */
102
+ export declare function missionGroundDir(repoRoot: string, missionId: string): string;
103
+ /** `.cairn/ground/missions/<id>/roadmap.md`. */
104
+ export declare function missionRoadmapPath(repoRoot: string, missionId: string): string;
105
+ /** `.cairn/ground/missions/<id>/briefs/` — committed per-phase briefs. */
106
+ export declare function missionBriefsDir(repoRoot: string, missionId: string): string;
107
+ /** `.cairn/ground/missions/<id>/briefs/<phaseId>.md`. */
108
+ export declare function missionBriefPath(repoRoot: string, missionId: string, phaseId: string): string;
109
+ /** `.cairn/missions/` — per-clone runtime state root. */
110
+ export declare function missionsRuntimeRoot(repoRoot: string): string;
111
+ /** `.cairn/missions/_done/` — archived per-clone state. */
112
+ export declare function missionsRuntimeDoneRoot(repoRoot: string): string;
113
+ /** `.cairn/missions/<id>/`. */
114
+ export declare function missionRuntimeDir(repoRoot: string, missionId: string): string;
115
+ export declare function missionStatePath(repoRoot: string, missionId: string): string;
116
+ export declare function missionSpecPath(repoRoot: string, missionId: string): string;
117
+ export declare function missionJournalPath(repoRoot: string, missionId: string): string;
package/dist/paths.js ADDED
@@ -0,0 +1,241 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { cairnDir, isGhost } from "./home.js";
4
+ /** `.cairn/config.yaml` — the per-repo config + adoption marker. */
5
+ export function configPath(repoRoot) {
6
+ return cairnDir(repoRoot, "config.yaml");
7
+ }
8
+ /** `core.hooksPath` value Cairn writes in committed mode (relative, tracked). */
9
+ export const COMMITTED_HOOKS_PATH = ".cairn/git-hooks";
10
+ /**
11
+ * The `core.hooksPath` value join writes for THIS repo's mode: committed → the
12
+ * relative `.cairn/git-hooks`; ghost → the absolute out-of-repo
13
+ * `<cairnHome>/git-hooks` (a relative path can't reach outside the tree). Single
14
+ * source for the mode fork — the writer (`setGitHooksPath`) and the reader
15
+ * (`inspectJoinState`) both call this so the expected value can't drift.
16
+ */
17
+ export function cairnHooksPathForConfig(repoRoot) {
18
+ return isGhost(repoRoot) ? cairnDir(repoRoot, "git-hooks") : COMMITTED_HOOKS_PATH;
19
+ }
20
+ /**
21
+ * True when the repo is cairn-adopted in EITHER mode. `cairnDir` resolves to
22
+ * the in-repo `.cairn/` (committed) or the out-of-repo state home (ghost), so a
23
+ * present `config.yaml` is the single mode-agnostic "adoption finished" signal
24
+ * — the same one `resolveRepoRoot` uses for its ghost branch. CLI guards use
25
+ * this instead of a literal `${repoRoot}/.cairn` probe, which is blind to ghost
26
+ * repos whose state lives out-of-repo.
27
+ */
28
+ export function isAdopted(repoRoot) {
29
+ return existsSync(configPath(repoRoot));
30
+ }
31
+ /**
32
+ * Convert a path to POSIX format (using forward slashes).
33
+ */
34
+ export function toPosix(p) {
35
+ return p.replace(/\\/g, "/");
36
+ }
37
+ /**
38
+ * Canonical-zone glob roots, relative to the adopted project's repo root.
39
+ *
40
+ * Per FILESYSTEM_LAYOUT.md §2.1. These paths are project-agnostic (every
41
+ * cairn-adopted repo carries the same layout).
42
+ */
43
+ export const CANONICAL_GLOBS = [
44
+ "AGENTS.md",
45
+ "CLAUDE.md",
46
+ ".claude/agents/**/*.md",
47
+ ".claude/skills/**/*.md",
48
+ ".claude/rules/**/*.md",
49
+ "docs/**/*.md",
50
+ ".cairn/config/**/*",
51
+ ".cairn/ground/**/*",
52
+ ".cairn/tasks/active/**/*",
53
+ ];
54
+ /** Paths excluded from canonical regardless of glob match. */
55
+ export const CANONICAL_EXCLUDES = [
56
+ ".cairn/ground/decisions/_inbox/**",
57
+ ".cairn/ground/manifest.yaml",
58
+ ".cairn/ground/decisions/decisions.ledger.yaml",
59
+ ".cairn/ground/invariants/invariants.ledger.yaml",
60
+ ".cairn/ground/quality-grades.yaml",
61
+ // Retired DEC/INV bodies — historical only, reachable via cairn_query_history.
62
+ // Excluded from the canonical zone so archived entities stop loading into
63
+ // agent context, search, and the drift sensors.
64
+ ".cairn/ground/.archive/**",
65
+ ];
66
+ export function groundDir(repoRoot) {
67
+ return cairnDir(repoRoot, "ground");
68
+ }
69
+ export function manifestPath(repoRoot) {
70
+ return join(groundDir(repoRoot), "manifest.yaml");
71
+ }
72
+ export function decisionsDir(repoRoot) {
73
+ return join(groundDir(repoRoot), "decisions");
74
+ }
75
+ export function invariantsDir(repoRoot) {
76
+ return join(groundDir(repoRoot), "invariants");
77
+ }
78
+ /**
79
+ * `.cairn/ground/.archive/` — the retirement graveyard. DEC/INV entities
80
+ * that orphaned (source gone / zero live cites) or were manually retired
81
+ * are moved here. Outside the active ledger and the canonical zone; only
82
+ * `cairn_query_history` reads it.
83
+ */
84
+ export function archiveDir(repoRoot) {
85
+ return join(groundDir(repoRoot), ".archive");
86
+ }
87
+ export function archiveDecisionsDir(repoRoot) {
88
+ return join(archiveDir(repoRoot), "decisions");
89
+ }
90
+ export function archiveInvariantsDir(repoRoot) {
91
+ return join(archiveDir(repoRoot), "invariants");
92
+ }
93
+ export function decisionsLedgerPath(repoRoot) {
94
+ return join(decisionsDir(repoRoot), "decisions.ledger.yaml");
95
+ }
96
+ export function invariantsLedgerPath(repoRoot) {
97
+ return join(invariantsDir(repoRoot), "invariants.ledger.yaml");
98
+ }
99
+ export function qualityGradesPath(repoRoot) {
100
+ return join(groundDir(repoRoot), "quality-grades.yaml");
101
+ }
102
+ export function topicIndexPath(repoRoot) {
103
+ return join(groundDir(repoRoot), "topic-index.yaml");
104
+ }
105
+ export function rejectedYamlPath(repoRoot) {
106
+ return join(groundDir(repoRoot), "_rejected.yaml");
107
+ }
108
+ export function fileCandidatesMapPath(repoRoot) {
109
+ return join(groundDir(repoRoot), "file-candidates-map.yaml");
110
+ }
111
+ export function sotBindingsPath(repoRoot) {
112
+ return join(groundDir(repoRoot), "sot-bindings.yaml");
113
+ }
114
+ export function sotCachePath(repoRoot) {
115
+ return join(groundDir(repoRoot), "sot-cache.yaml");
116
+ }
117
+ export function anchorMapPath(repoRoot) {
118
+ return join(groundDir(repoRoot), "anchor-map.yaml");
119
+ }
120
+ /* -------------------------------------------------------------------------- */
121
+ /* Components — the registry ground store (derived; headers in source are SoT) */
122
+ /* -------------------------------------------------------------------------- */
123
+ /**
124
+ * `.cairn/ground/components/` — the component-registry index store. Holds
125
+ * the generated INDEX.md (single-app) or manifest + `index/<ws>.md` slices
126
+ * (monorepo). Derived from `@cairn` source headers, so gitignored per the
127
+ * v0.15.0 gitignore-derived-ground-state decision: the headers in code are
128
+ * the committed source of truth, this directory is a rebuildable cache the
129
+ * agent reads in full before UI work.
130
+ */
131
+ export function componentsGroundDir(repoRoot) {
132
+ return join(groundDir(repoRoot), "components");
133
+ }
134
+ /** `.cairn/ground/components/INDEX.md` — flat inventory or monorepo manifest. */
135
+ export function componentsIndexPath(repoRoot) {
136
+ return join(componentsGroundDir(repoRoot), "INDEX.md");
137
+ }
138
+ /** `.cairn/ground/components/index/` — per-workspace slice dir (monorepo only). */
139
+ export function componentsSliceDir(repoRoot) {
140
+ return join(componentsGroundDir(repoRoot), "index");
141
+ }
142
+ /**
143
+ * `.cairn/ground/components/index/<ws>.md` — one workspace's inventory slice.
144
+ * The workspace name is sanitized to a filesystem-safe slug; callers pass the
145
+ * already-sanitized slice filename when iterating render output.
146
+ */
147
+ export function componentSlicePath(repoRoot, sliceSlug) {
148
+ return join(componentsSliceDir(repoRoot), `${sliceSlug}.md`);
149
+ }
150
+ export function conflictsDir(repoRoot) {
151
+ return join(groundDir(repoRoot), "conflicts");
152
+ }
153
+ export function archivedConflictsDir(repoRoot) {
154
+ return join(conflictsDir(repoRoot), "_archived");
155
+ }
156
+ export function alignmentPendingDir(repoRoot) {
157
+ return join(groundDir(repoRoot), "alignment-pending");
158
+ }
159
+ export function sotRenderedCacheDir(repoRoot) {
160
+ return cairnDir(repoRoot, "cache", "sot-rendered");
161
+ }
162
+ export function haikuCacheDir(repoRoot) {
163
+ return cairnDir(repoRoot, "cache", "haiku");
164
+ }
165
+ export function stalenessDir(repoRoot) {
166
+ return cairnDir(repoRoot, "staleness");
167
+ }
168
+ export function stalenessLogPath(repoRoot) {
169
+ return join(stalenessDir(repoRoot), "log.jsonl");
170
+ }
171
+ export function stalenessCurrentPath(repoRoot) {
172
+ return join(stalenessDir(repoRoot), "current.json");
173
+ }
174
+ /**
175
+ * Layer A live-hook deferred-block log. PostToolUse Write/Edit appends
176
+ * one rich record per block when the per-Write Haiku cap is exceeded
177
+ * or Pass-2-still-ambiguous fires. Drained by SessionStart Drain at SessionStart.
178
+ */
179
+ export function layerADeferredLogPath(repoRoot) {
180
+ return join(stalenessDir(repoRoot), "layer-a-deferred.jsonl");
181
+ }
182
+ /**
183
+ * Layer B pre-commit-drift rich log. Git pre-commit hook appends one
184
+ * record per prose block discovered in staged content. Drained by
185
+ * SessionStart Drain at SessionStart.
186
+ */
187
+ export function preCommitDeferredLogPath(repoRoot) {
188
+ return join(stalenessDir(repoRoot), "pre-commit-deferred.jsonl");
189
+ }
190
+ export function runsTerminalDir(repoRoot) {
191
+ return cairnDir(repoRoot, "runs", "terminal");
192
+ }
193
+ /* -------------------------------------------------------------------------- */
194
+ /* Missions — committed roadmap + per-clone runtime state */
195
+ /* -------------------------------------------------------------------------- */
196
+ /** `.cairn/ground/missions/` — committed roadmap surface. */
197
+ export function missionsGroundRoot(repoRoot) {
198
+ return join(groundDir(repoRoot), "missions");
199
+ }
200
+ /** `.cairn/ground/missions/_done/` — archived roadmaps. */
201
+ export function missionsGroundDoneRoot(repoRoot) {
202
+ return join(missionsGroundRoot(repoRoot), "_done");
203
+ }
204
+ /** `.cairn/ground/missions/<id>/` for the live roadmap. */
205
+ export function missionGroundDir(repoRoot, missionId) {
206
+ return join(missionsGroundRoot(repoRoot), missionId);
207
+ }
208
+ /** `.cairn/ground/missions/<id>/roadmap.md`. */
209
+ export function missionRoadmapPath(repoRoot, missionId) {
210
+ return join(missionGroundDir(repoRoot, missionId), "roadmap.md");
211
+ }
212
+ /** `.cairn/ground/missions/<id>/briefs/` — committed per-phase briefs. */
213
+ export function missionBriefsDir(repoRoot, missionId) {
214
+ return join(missionGroundDir(repoRoot, missionId), "briefs");
215
+ }
216
+ /** `.cairn/ground/missions/<id>/briefs/<phaseId>.md`. */
217
+ export function missionBriefPath(repoRoot, missionId, phaseId) {
218
+ return join(missionBriefsDir(repoRoot, missionId), `${phaseId}.md`);
219
+ }
220
+ /** `.cairn/missions/` — per-clone runtime state root. */
221
+ export function missionsRuntimeRoot(repoRoot) {
222
+ return cairnDir(repoRoot, "missions");
223
+ }
224
+ /** `.cairn/missions/_done/` — archived per-clone state. */
225
+ export function missionsRuntimeDoneRoot(repoRoot) {
226
+ return join(missionsRuntimeRoot(repoRoot), "_done");
227
+ }
228
+ /** `.cairn/missions/<id>/`. */
229
+ export function missionRuntimeDir(repoRoot, missionId) {
230
+ return join(missionsRuntimeRoot(repoRoot), missionId);
231
+ }
232
+ export function missionStatePath(repoRoot, missionId) {
233
+ return join(missionRuntimeDir(repoRoot, missionId), "state.json");
234
+ }
235
+ export function missionSpecPath(repoRoot, missionId) {
236
+ return join(missionRuntimeDir(repoRoot, missionId), "spec.md");
237
+ }
238
+ export function missionJournalPath(repoRoot, missionId) {
239
+ return join(missionRuntimeDir(repoRoot, missionId), "journal.jsonl");
240
+ }
241
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type QualityGrades } from "./schemas.js";
2
+ export interface QualityGradesOptions {
3
+ repoRoot: string;
4
+ /** Number of most recent terminal runs to consider (default 50). */
5
+ recentRunCount?: number;
6
+ }
7
+ export declare function buildQualityGrades(opts: QualityGradesOptions): QualityGrades;
8
+ export declare function writeQualityGrades(opts: QualityGradesOptions): {
9
+ grades: QualityGrades;
10
+ path: string;
11
+ };
@@ -0,0 +1,100 @@
1
+ import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
4
+ import { getLogger } from "./logger.js";
5
+ import { qualityGradesPath, runsTerminalDir } from "./paths.js";
6
+ const log = getLogger();
7
+ export function buildQualityGrades(opts) {
8
+ const dir = runsTerminalDir(opts.repoRoot);
9
+ const limit = opts.recentRunCount ?? 50;
10
+ const moduleAccum = new Map();
11
+ if (existsSync(dir)) {
12
+ const runIds = listRecentRuns(dir, limit);
13
+ for (const runId of runIds) {
14
+ const meta = readJsonIfExists(join(dir, runId, "meta.json"));
15
+ const sensors = readYamlIfExists(join(dir, runId, "sensor-results.yaml"));
16
+ const moduleKey = meta?.scoped_module ?? "unscoped";
17
+ const acc = moduleAccum.get(moduleKey) ?? {
18
+ passes: 0,
19
+ total: 0,
20
+ drifts: 0,
21
+ latest: "",
22
+ runs: 0,
23
+ };
24
+ acc.runs += 1;
25
+ if (sensors) {
26
+ for (const s of sensors) {
27
+ if (s.status === "skip")
28
+ continue;
29
+ acc.total += 1;
30
+ if (s.status === "pass")
31
+ acc.passes += 1;
32
+ }
33
+ }
34
+ if (meta?.finished_at && (!acc.latest || meta.finished_at > acc.latest)) {
35
+ acc.latest = meta.finished_at;
36
+ }
37
+ moduleAccum.set(moduleKey, acc);
38
+ }
39
+ }
40
+ const modules = [];
41
+ for (const [module, acc] of moduleAccum) {
42
+ const passRate = acc.total === 0 ? 1 : acc.passes / acc.total;
43
+ const score = Math.round(passRate * 100);
44
+ modules.push({
45
+ module,
46
+ score,
47
+ pass_rate: Number(passRate.toFixed(3)),
48
+ drift_count: acc.drifts,
49
+ last_updated: acc.latest || new Date().toISOString(),
50
+ recent_run_count: acc.runs,
51
+ });
52
+ }
53
+ modules.sort((a, b) => a.score - b.score); // weakest first
54
+ return { version: 1, generated: new Date().toISOString(), modules };
55
+ }
56
+ export function writeQualityGrades(opts) {
57
+ const grades = buildQualityGrades(opts);
58
+ const path = qualityGradesPath(opts.repoRoot);
59
+ mkdirSync(resolve(path, ".."), { recursive: true });
60
+ writeFileSync(path, stringifyYaml(grades), "utf8");
61
+ log.debug({ path, modules: grades.modules.length }, "wrote quality grades");
62
+ return { grades, path };
63
+ }
64
+ function listRecentRuns(dir, limit) {
65
+ let dirents;
66
+ try {
67
+ dirents = readdirSync(dir, { withFileTypes: true, encoding: "utf8" });
68
+ }
69
+ catch {
70
+ return [];
71
+ }
72
+ const dirs = dirents.filter((d) => d.isDirectory()).map((d) => d.name);
73
+ dirs.sort((a, b) => {
74
+ const sa = statSync(join(dir, a)).mtimeMs;
75
+ const sb = statSync(join(dir, b)).mtimeMs;
76
+ return sb - sa;
77
+ });
78
+ return dirs.slice(0, limit);
79
+ }
80
+ function readJsonIfExists(path) {
81
+ if (!existsSync(path))
82
+ return null;
83
+ try {
84
+ return JSON.parse(readFileSync(path, "utf8"));
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
90
+ function readYamlIfExists(path) {
91
+ if (!existsSync(path))
92
+ return null;
93
+ try {
94
+ return parseYaml(readFileSync(path, "utf8"));
95
+ }
96
+ catch {
97
+ return null;
98
+ }
99
+ }
100
+ //# sourceMappingURL=quality-grades.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-grades.js","sourceRoot":"","sources":["../src/quality-grades.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * `.cairn/ground/_rejected.yaml` — slug-keyed ledger of topic-index
3
+ * entries the operator (or AI curator) has marked as not-a-decision.
4
+ *
5
+ * Phase 6 / `cairn ingest` skip any slug present here. The PR 2
6
+ * `cairn_propose_decision` MCP tool refuses rejected slugs with
7
+ * `{ ok: false, reason: "rejected" }`. Phase 5b's GC pass at the end
8
+ * of `buildTopicIndex` drops any entry whose slug is no longer in the
9
+ * freshly-built topic-index — so rotating docs / deleted markdown
10
+ * files don't accumulate dead rejection records.
11
+ *
12
+ * Dedup: first writer wins the `reason`; subsequent writes for the
13
+ * same slug only refresh `rejected_at`.
14
+ */
15
+ import { RejectedYaml, type RejectedEntry } from "./schemas.js";
16
+ export declare function emptyRejectedYaml(): RejectedYaml;
17
+ /**
18
+ * Read `_rejected.yaml` and return a slug-keyed Map for O(1) lookups.
19
+ * Missing file → empty Map. Malformed file → empty Map + warn (the
20
+ * sensor surface treats this as a deliberate clean slate rather than
21
+ * an error so the operator can recover by deleting the file).
22
+ */
23
+ export declare function readRejectedYaml(repoRoot: string): Map<string, RejectedEntry>;
24
+ /**
25
+ * Persist a slug-keyed Map to `_rejected.yaml`. Rebuilds `generated`.
26
+ * Sorted by slug for stable diffs.
27
+ */
28
+ export declare function writeRejectedYaml(repoRoot: string, rejected: Map<string, RejectedEntry>): string;
29
+ /**
30
+ * Append (or refresh) a rejection record. Dedup by slug — first writer
31
+ * wins the `reason` string; subsequent writes update `rejected_at`
32
+ * only. Returns the merged Map without persisting; callers handle the
33
+ * write so concurrent paths can batch under a single lock.
34
+ */
35
+ export declare function appendRejected(current: Map<string, RejectedEntry>, entry: RejectedEntry): Map<string, RejectedEntry>;
36
+ /**
37
+ * Garbage-collect rejection records whose slug is no longer present in
38
+ * the freshly-built topic-index. Phase 5b runs this at the end of
39
+ * `buildTopicIndex` so the index-builder owns rejection lifecycle —
40
+ * keeps the sensor surface clean as docs rotate.
41
+ */
42
+ export declare function gcRejectedYaml(rejected: Map<string, RejectedEntry>, liveSlugs: Set<string>): Map<string, RejectedEntry>;