daftari 1.22.0 → 1.24.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 (99) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +50 -0
  3. package/dist/backfill/apply.d.ts.map +1 -1
  4. package/dist/backfill/apply.js +3 -1
  5. package/dist/backfill/apply.js.map +1 -1
  6. package/dist/backfill/derive.d.ts +1 -0
  7. package/dist/backfill/derive.d.ts.map +1 -1
  8. package/dist/backfill/derive.js +36 -4
  9. package/dist/backfill/derive.js.map +1 -1
  10. package/dist/backfill/index.d.ts +3 -1
  11. package/dist/backfill/index.d.ts.map +1 -1
  12. package/dist/backfill/index.js +2 -1
  13. package/dist/backfill/index.js.map +1 -1
  14. package/dist/backfill/obsidian.d.ts +4 -0
  15. package/dist/backfill/obsidian.d.ts.map +1 -0
  16. package/dist/backfill/obsidian.js +64 -0
  17. package/dist/backfill/obsidian.js.map +1 -0
  18. package/dist/backfill/plan.d.ts +1 -0
  19. package/dist/backfill/plan.d.ts.map +1 -1
  20. package/dist/backfill/plan.js +1 -0
  21. package/dist/backfill/plan.js.map +1 -1
  22. package/dist/cli.d.ts.map +1 -1
  23. package/dist/cli.js +7 -21
  24. package/dist/cli.js.map +1 -1
  25. package/dist/consolidate/admit.d.ts +15 -0
  26. package/dist/consolidate/admit.d.ts.map +1 -0
  27. package/dist/consolidate/admit.js +176 -0
  28. package/dist/consolidate/admit.js.map +1 -0
  29. package/dist/consolidate/birth.d.ts +5 -0
  30. package/dist/consolidate/birth.d.ts.map +1 -1
  31. package/dist/consolidate/birth.js +62 -0
  32. package/dist/consolidate/birth.js.map +1 -1
  33. package/dist/consolidate/edge-write.d.ts +0 -1
  34. package/dist/consolidate/edge-write.d.ts.map +1 -1
  35. package/dist/consolidate/edge-write.js +21 -38
  36. package/dist/consolidate/edge-write.js.map +1 -1
  37. package/dist/consolidate/envelope.d.ts +27 -0
  38. package/dist/consolidate/envelope.d.ts.map +1 -0
  39. package/dist/consolidate/envelope.js +90 -0
  40. package/dist/consolidate/envelope.js.map +1 -0
  41. package/dist/consolidate/index.d.ts.map +1 -1
  42. package/dist/consolidate/index.js +63 -9
  43. package/dist/consolidate/index.js.map +1 -1
  44. package/dist/consolidate/revision.d.ts +7 -1
  45. package/dist/consolidate/revision.d.ts.map +1 -1
  46. package/dist/consolidate/revision.js +70 -28
  47. package/dist/consolidate/revision.js.map +1 -1
  48. package/dist/curation/shadow.d.ts +30 -0
  49. package/dist/curation/shadow.d.ts.map +1 -1
  50. package/dist/curation/shadow.js +74 -26
  51. package/dist/curation/shadow.js.map +1 -1
  52. package/dist/curation/staged-actions.d.ts +2 -0
  53. package/dist/curation/staged-actions.d.ts.map +1 -1
  54. package/dist/curation/staged-actions.js +8 -0
  55. package/dist/curation/staged-actions.js.map +1 -1
  56. package/dist/curation/tension.d.ts +1 -0
  57. package/dist/curation/tension.d.ts.map +1 -1
  58. package/dist/curation/tension.js +8 -0
  59. package/dist/curation/tension.js.map +1 -1
  60. package/dist/curation/vault-docs.d.ts +2 -1
  61. package/dist/curation/vault-docs.d.ts.map +1 -1
  62. package/dist/curation/vault-docs.js +1 -0
  63. package/dist/curation/vault-docs.js.map +1 -1
  64. package/dist/import/index.d.ts +2 -0
  65. package/dist/import/index.d.ts.map +1 -0
  66. package/dist/import/index.js +131 -0
  67. package/dist/import/index.js.map +1 -0
  68. package/dist/index.js +1 -1
  69. package/dist/storage/index-db.d.ts +1 -0
  70. package/dist/storage/index-db.d.ts.map +1 -1
  71. package/dist/storage/index-db.js.map +1 -1
  72. package/dist/storage/local.d.ts.map +1 -1
  73. package/dist/storage/local.js +6 -1
  74. package/dist/storage/local.js.map +1 -1
  75. package/dist/tools/curation.d.ts.map +1 -1
  76. package/dist/tools/curation.js +16 -2
  77. package/dist/tools/curation.js.map +1 -1
  78. package/dist/tools/edges.d.ts.map +1 -1
  79. package/dist/tools/edges.js +1 -0
  80. package/dist/tools/edges.js.map +1 -1
  81. package/dist/tools/staged-actions.d.ts.map +1 -1
  82. package/dist/tools/staged-actions.js +2 -0
  83. package/dist/tools/staged-actions.js.map +1 -1
  84. package/dist/tools/write.d.ts.map +1 -1
  85. package/dist/tools/write.js +17 -3
  86. package/dist/tools/write.js.map +1 -1
  87. package/dist/utils/config.d.ts +1 -0
  88. package/dist/utils/config.d.ts.map +1 -1
  89. package/dist/utils/config.js +40 -1
  90. package/dist/utils/config.js.map +1 -1
  91. package/dist/utils/git.d.ts +4 -2
  92. package/dist/utils/git.d.ts.map +1 -1
  93. package/dist/utils/git.js +27 -5
  94. package/dist/utils/git.js.map +1 -1
  95. package/dist/utils/vault-gitignore.d.ts +3 -0
  96. package/dist/utils/vault-gitignore.d.ts.map +1 -0
  97. package/dist/utils/vault-gitignore.js +59 -0
  98. package/dist/utils/vault-gitignore.js.map +1 -0
  99. package/package.json +1 -1
@@ -0,0 +1,176 @@
1
+ // The real `makeAdmit` for the consolidate CLI (Stage 3 §5/D1/D5/D6). This is
2
+ // the envelope-owned admit: it assembles the EnvelopeCtx from in-process vault
3
+ // data, calls the pure evaluateEnvelope, owns the §3.7 per-session spend scalar
4
+ // (deduct-on-admit), and journals every loop decision to the shadow log.
5
+ //
6
+ // SCALE (carried concern): the vault docs are NOT loaded here — the caller
7
+ // (index.ts) already walked the vault once via loadDocuments and passes that
8
+ // LoadedDoc[] in. makeAdmit reuses it to build the reverse maps, per-endpoint
9
+ // metadata, and docCount, so there is no second disk walk and no per-file
10
+ // re-read. The only I/O makeAdmit itself does is reading staged actions and
11
+ // tensions ONCE at construction. The returned Admit closure does NO vault walk
12
+ // per call: it computes only blast from cached reverse maps. (Birth admits
13
+ // per-neighbor, so a per-call vault load would be N full walks per doc — which
14
+ // is exactly what reusing the caller's docs avoids.)
15
+ //
16
+ // Because docs/tensions are loaded once (the docs upstream, tensions here at
17
+ // construction), a tension the loop itself logs mid-pass does NOT self-gate
18
+ // later edges in the same run — this matches the plan's "load tensions once"
19
+ // intent.
20
+ import { posix } from "node:path";
21
+ import { computeDecay } from "../curation/decay.js";
22
+ import { recordEnvelopeDecision, shadowBudget, shadowImpact, } from "../curation/shadow.js";
23
+ import { listStagedActions } from "../curation/staged-actions.js";
24
+ import { listTensions } from "../curation/tension.js";
25
+ import { buildReverseLinkMap, buildReverseSourceMap, computeBlast, } from "../curation/tension-blast.js";
26
+ import { ok } from "../frontmatter/types.js";
27
+ import { evaluateEnvelope, } from "./envelope.js";
28
+ // Same canon() the consolidate modules use — the recurring path-aliasing bug
29
+ // class (an alias like `x/../x/a.md` or `./x.md` would miss every keyed map).
30
+ function canon(p) {
31
+ return posix.normalize(p).replace(/^\.\//, "");
32
+ }
33
+ // Map the envelope action type to its journaling tool name.
34
+ function toolFor(action) {
35
+ return action === "edge-observe" ? "vault_edge_observe" : "vault_edge_contest";
36
+ }
37
+ // Builds the admit closure. Async + Result: construction still does I/O —
38
+ // listStagedActions / listTensions are read ONCE here and can fail. (The vault
39
+ // docs are NOT loaded here; the caller passes them in.) The CLI fails CLOSED on
40
+ // a construction error — the envelope must never let Component A auto-write on
41
+ // incomplete information.
42
+ export async function makeAdmit(cfg) {
43
+ const { vaultRoot, principal, docs: loaded } = cfg;
44
+ const journal = cfg.journal ?? recordEnvelopeDecision;
45
+ // Closure-local count of journal-write failures. Mirrors the traceWriteFailures
46
+ // pattern in index.ts: a calibration row that fails to persist is counted and
47
+ // surfaced, never silently dropped.
48
+ let journalFailures = 0;
49
+ // --- per-endpoint metadata, from the caller's already-loaded docs ---
50
+ //
51
+ // No vault walk and no per-file re-read happen here: the LoadedDoc[] the caller
52
+ // passed already carries each doc's coerced frontmatter (for decay) AND its
53
+ // schema-validation report (for provenance), both from the loader's single
54
+ // parse pass. loadDocuments silently drops malformed-YAML docs, so any path
55
+ // absent from `loaded` reads as unknown provenance below (fail closed); a doc
56
+ // present but schema-invalid reads provenanceKnown=false via validation.valid.
57
+ const cachedByPath = new Map();
58
+ for (const d of loaded) {
59
+ const relPath = canon(d.path);
60
+ // The doc parsed cleanly (it's in the load set ⇒ YAML well-formed);
61
+ // validation.valid tells us whether the schema holds (provenance-required,
62
+ // §5.1) — recovered in-memory from the loader's parse, no re-read.
63
+ const provenanceKnown = d.validation.valid;
64
+ cachedByPath.set(relPath, {
65
+ relPath,
66
+ provenanceKnown,
67
+ decayInput: {
68
+ status: d.frontmatter.status,
69
+ confidence: d.frontmatter.confidence,
70
+ updated: d.frontmatter.updated,
71
+ created: d.frontmatter.created,
72
+ ttl_days: d.frontmatter.ttl_days,
73
+ superseded_by: d.frontmatter.superseded_by,
74
+ },
75
+ });
76
+ }
77
+ // Reverse maps for blast — built from the loaded docs (one source of truth
78
+ // with the tension-blast engine). buildReverse* key on the raw relPaths the
79
+ // loader walked, so blast seeds canonicalize to those keys below.
80
+ const reverseSource = buildReverseSourceMap(loaded);
81
+ const reverseLink = buildReverseLinkMap(loaded);
82
+ const docCount = loaded.length;
83
+ // --- I/O ONCE: live pending staged actions → B₀ queue depth (§5.2) ---
84
+ const pendingRes = await listStagedActions(vaultRoot, "pending");
85
+ if (!pendingRes.ok)
86
+ return pendingRes;
87
+ const nowMs = Date.now();
88
+ const livePending = pendingRes.value.filter((a) => Date.parse(a.expiresAt) > nowMs).length;
89
+ // --- I/O ONCE: unresolved tensions → the tension-respect invariant (§5.1) ---
90
+ const tensionsRes = await listTensions(vaultRoot);
91
+ if (!tensionsRes.ok)
92
+ return tensionsRes;
93
+ const unresolvedTensionPaths = new Set();
94
+ for (const t of tensionsRes.value) {
95
+ if (t.resolved)
96
+ continue;
97
+ unresolvedTensionPaths.add(canon(t.sourceA));
98
+ unresolvedTensionPaths.add(canon(t.sourceB));
99
+ }
100
+ // The §3.7 per-session spend scalar — closure-local, ENVELOPE-owned (D6).
101
+ // NEVER touches shadow's module-global spentByVault.
102
+ let spent = 0;
103
+ // Build an endpoint's invariant state. A canonical relPath not in the cached
104
+ // docs (missing file, or a doc whose YAML was malformed and so was dropped by
105
+ // loadDocuments) reads as unknown provenance — fail closed.
106
+ //
107
+ // v1 scope note: "unknown/broken provenance" here means the doc is missing
108
+ // from the load set or its frontmatter is schema-invalid. Dangling-source
109
+ // detection (an edge endpoint whose `sources` cite a non-vault path) is
110
+ // deferred to Stage 4/5.
111
+ const endpointState = (path) => {
112
+ const cached = cachedByPath.get(path);
113
+ if (!cached) {
114
+ return { path, provenanceKnown: false, decayBlocking: false, hasUnresolvedTension: false };
115
+ }
116
+ const d = computeDecay(cached.decayInput);
117
+ // warn|deprecated block; aging does not (the scarcity rule, §5.1).
118
+ const decayBlocking = d !== null && d.level !== "aging";
119
+ return {
120
+ path,
121
+ provenanceKnown: cached.provenanceKnown,
122
+ decayBlocking,
123
+ hasUnresolvedTension: unresolvedTensionPaths.has(path),
124
+ };
125
+ };
126
+ const admit = async (a) => {
127
+ const canonFrom = canon(a.fromPath);
128
+ const canonTo = canon(a.toPath);
129
+ const action = a.action;
130
+ const fromState = endpointState(canonFrom);
131
+ const toState = endpointState(canonTo);
132
+ // Blast from cached maps (no disk walk). 1 (the action's own footprint) +
133
+ // unique downstream reach of both endpoints. Seeds are the canonical relPath
134
+ // keys the reverse maps use — which is exactly canon() output here.
135
+ const blast = 1 +
136
+ computeBlast({ seeds: [canonFrom, canonTo], reverseSource, reverseLink }).downstream.length;
137
+ const impact = shadowImpact(action, blast);
138
+ const budget = shadowBudget(livePending, docCount);
139
+ const verdict = evaluateEnvelope({ action, endpoints: [fromState, toState], impact, budget }, spent);
140
+ // Journal the decision (admitted OR gated) to the shadow log. In shadow mode
141
+ // the EDGE STORE write is suppressed by makeObserve; this decision journal
142
+ // runs regardless of shadow mode (the gate decision is identical either way).
143
+ //
144
+ // The journal returns a Result — it is CHECKED, not thrown. A failed journal
145
+ // write loses exactly one calibration row, but it must NOT change the gate
146
+ // verdict or crash the pass: the gate decision and the deduct below proceed
147
+ // unchanged. We count the failure here and surface it via the report instead.
148
+ const res = await journal(vaultRoot, {
149
+ tool: toolFor(action),
150
+ action,
151
+ targetPath: canonFrom,
152
+ touchedPaths: [canonFrom, canonTo],
153
+ agent: principal,
154
+ principal,
155
+ decision: verdict.admit ? "admitted" : "gated",
156
+ ...(verdict.gate ? { gate: verdict.gate, gateReason: verdict.reason } : {}),
157
+ impact: verdict.impact,
158
+ budget,
159
+ blast,
160
+ spentBefore: spent,
161
+ commitMessage: `[envelope:${verdict.admit ? "admit" : "gate"}] ${action} ${canonFrom} ← ${canonTo}`,
162
+ });
163
+ if (!res.ok)
164
+ journalFailures++;
165
+ // Deduct on admit (D1): only an admitted action spends. A gated action
166
+ // leaves the budget untouched so a following clean action can still admit.
167
+ // By design: deduction happens here (on the decision), before the caller's
168
+ // observe/contest write — a post-admit storage failure (off-shadow only;
169
+ // the shadow stub never fails) consumes budget even if no edge lands.
170
+ if (verdict.admit)
171
+ spent += verdict.impact;
172
+ return verdict;
173
+ };
174
+ return ok({ admit, journalFailures: () => journalFailures });
175
+ }
176
+ //# sourceMappingURL=admit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admit.js","sourceRoot":"","sources":["../../src/consolidate/admit.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,12 @@ import type { LlmClient } from "../eval/llm.js";
4
4
  import { type Result } from "../frontmatter/types.js";
5
5
  import { CONSOLIDATE_AGENT, type ConsolidatePromptTemplate } from "./constants.js";
6
6
  import { type DerivationVerdict } from "./derivation-prompt.js";
7
+ import type { Admit } from "./envelope.js";
7
8
  export interface BirthDeps {
8
9
  llm: LlmClient;
9
10
  searchNeighbors: (docPath: string, k: number) => Promise<Result<string[], Error>>;
10
11
  loadNeighborContent: (path: string) => Promise<Result<string, Error>>;
12
+ admit: Admit;
11
13
  observe: (input: ObserveEdgeInput) => Promise<Result<DerivesFromEdge, Error>>;
12
14
  recordTension: (input: TensionInput) => Promise<Result<unknown, Error>>;
13
15
  recordBirthTrace: (row: BirthTraceRow) => Promise<Result<void, Error>>;
@@ -25,6 +27,8 @@ export interface BirthVerdict {
25
27
  direction: "directed" | "symmetric" | "none";
26
28
  premise: "doc" | "neighbor" | null;
27
29
  reason: string;
30
+ gated?: boolean;
31
+ gate?: "invariants" | "budget" | null;
28
32
  }
29
33
  export interface BirthVerdictError {
30
34
  neighbor: string;
@@ -48,6 +52,7 @@ export interface BirthOutcome {
48
52
  from: string;
49
53
  to: string;
50
54
  }>;
55
+ gatedCount: number;
51
56
  llmCalls: number;
52
57
  inputTokens: number;
53
58
  outputTokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"birth.d.ts","sourceRoot":"","sources":["../../src/consolidate/birth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"birth.d.ts","sourceRoot":"","sources":["../../src/consolidate/birth.ts"],"names":[],"mappings":"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"}
@@ -76,6 +76,25 @@ const MAX_DOC_CHARS = 1500;
76
76
  function truncate(s) {
77
77
  return s.length <= MAX_DOC_CHARS ? s : `${s.slice(0, MAX_DOC_CHARS)}\n…[truncated]`;
78
78
  }
79
+ // Defensive wrapper around the injected admit. The live makeAdmit (Task 7) does
80
+ // I/O — reads provenance / decay / tension state — so it can throw (network,
81
+ // config, fs). The house style is no-throw from this loop: a thrown admit must
82
+ // NOT crash the whole birth pass (losing every neighbor's verdict + the trace).
83
+ // Treat a throw as a refusal on the invariants gate (fail-closed: never write
84
+ // when the gate couldn't be evaluated), recorded like any other gated outcome.
85
+ async function safeAdmit(admit, action) {
86
+ try {
87
+ return await admit(action);
88
+ }
89
+ catch (e) {
90
+ return {
91
+ admit: false,
92
+ gate: "invariants",
93
+ reason: `admit threw: ${e instanceof Error ? e.message : String(e)}`,
94
+ impact: 0,
95
+ };
96
+ }
97
+ }
79
98
  // A non-empty one-line claim snippet for the tension record (addTension rejects
80
99
  // empty claims). Falls back to the path when the content is blank.
81
100
  function claimSnippet(content, fallback) {
@@ -94,6 +113,7 @@ export async function birthOne(doc, deps, opts) {
94
113
  const neighbors = neighborsRes.value.map(canon).filter((n) => n !== docPath);
95
114
  const verdicts = [];
96
115
  const observations = [];
116
+ let gatedCount = 0;
97
117
  let llmCalls = 0;
98
118
  let inputTokens = 0;
99
119
  let outputTokens = 0;
@@ -157,6 +177,26 @@ export async function birthOne(doc, deps, opts) {
157
177
  // Premise is materialized on `to` (clocks: from depends on to). doc-premise
158
178
  // ⇒ to=doc, from=neighbor; neighbor-premise ⇒ to=neighbor, from=doc.
159
179
  const [from, to] = outcome.premise === "doc" ? [neighbor, docPath] : [docPath, neighbor];
180
+ // Consult the envelope ONCE for this neighbor's edge-action. On refuse:
181
+ // record a gated verdict, count it, and skip the write entirely.
182
+ const verdict = await safeAdmit(deps.admit, {
183
+ action: "edge-observe",
184
+ fromPath: from,
185
+ toPath: to,
186
+ });
187
+ if (!verdict.admit) {
188
+ verdicts.push({
189
+ neighbor,
190
+ related: true,
191
+ direction: "directed",
192
+ premise: outcome.premise,
193
+ reason,
194
+ gated: true,
195
+ gate: verdict.gate,
196
+ });
197
+ gatedCount++;
198
+ continue;
199
+ }
160
200
  verdicts.push({
161
201
  neighbor,
162
202
  related: true,
@@ -184,6 +224,27 @@ export async function birthOne(doc, deps, opts) {
184
224
  // re-observation lands on the same key, plus an interpretive tension.
185
225
  const [from, to] = [docPath, neighbor].sort();
186
226
  const which = outcome.contested ? "contested" : "mutual";
227
+ // Consult the envelope ONCE for this neighbor's edge-action. On refuse:
228
+ // record a gated verdict, count it, and skip BOTH the observe AND the
229
+ // direction-pending tension (no write of any kind).
230
+ const symVerdict = await safeAdmit(deps.admit, {
231
+ action: "edge-observe",
232
+ fromPath: from,
233
+ toPath: to,
234
+ });
235
+ if (!symVerdict.admit) {
236
+ verdicts.push({
237
+ neighbor,
238
+ related: true,
239
+ direction: "symmetric",
240
+ premise: null,
241
+ reason,
242
+ gated: true,
243
+ gate: symVerdict.gate,
244
+ });
245
+ gatedCount++;
246
+ continue;
247
+ }
187
248
  verdicts.push({ neighbor, related: true, direction: "symmetric", premise: null, reason });
188
249
  const obs = await deps.observe({
189
250
  fromPath: from,
@@ -227,6 +288,7 @@ export async function birthOne(doc, deps, opts) {
227
288
  neighbors,
228
289
  verdicts,
229
290
  observations,
291
+ gatedCount,
230
292
  llmCalls,
231
293
  inputTokens,
232
294
  outputTokens,
@@ -1 +1 @@
1
- {"version":3,"file":"birth.js","sourceRoot":"","sources":["../../src/consolidate/birth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"birth.js","sourceRoot":"","sources":["../../src/consolidate/birth.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import { type Result } from "../frontmatter/types.js";
3
3
  export interface EdgeWriteConfig {
4
4
  vaultRoot: string;
5
5
  shadowMode: boolean;
6
- principal?: string;
7
6
  }
8
7
  export declare function makeObserve(config: EdgeWriteConfig): (input: ObserveEdgeInput) => Promise<Result<DerivesFromEdge, Error>>;
9
8
  export declare function makeContest(config: EdgeWriteConfig): (input: ContestEdgeInput) => Promise<Result<DerivesFromEdge, Error>>;
@@ -1 +1 @@
1
- {"version":3,"file":"edge-write.d.ts","sourceRoot":"","sources":["../../src/consolidate/edge-write.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IAIpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2BD,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,GACtB,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAuBtE;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,GACtB,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAiBtE"}
1
+ {"version":3,"file":"edge-write.d.ts","sourceRoot":"","sources":["../../src/consolidate/edge-write.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAiCD,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,GACtB,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAStE;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,GACtB,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAOtE"}
@@ -1,15 +1,19 @@
1
1
  // Shadow-aware wrappers around observeEdge / contestEdge for the consolidation
2
2
  // loop (spec §5.3, brief item 5). When the vault runs `shadow_mode: true`,
3
- // these factories route edge writes through `recordShadowAction` so the
4
- // calibration log gains records but `.daftari/edges.jsonl` is untouched.
5
- // When shadow is off, they fall through to the live store.
3
+ // these factories return a synthetic stub edge and touch NOTHING no edge
4
+ // store, no journal. When shadow is off, they fall through to the live store.
6
5
  //
7
- // The CLI (chunk 5) is the ONLY caller birth.ts and revision.ts receive
8
- // `observe` / `contest` via dependency injection and don't know which path
9
- // they're on. That keeps the unit tests for those modules hermetic (no fs,
10
- // no shadow config), and concentrates the live-vs-shadow branch here.
6
+ // Journaling used to live here (recordShadowAction). It moved out (Stage 3,
7
+ // decision D6): the calibration journal is now written by the CLI's admit
8
+ // wrapper, which owns the envelope's budget accounting. The loop must NOT
9
+ // advance the shared spentByVault, so edge-write must not record an action
10
+ // the way the live MCP tools do.
11
+ //
12
+ // The CLI is the ONLY caller — birth.ts and revision.ts receive `observe` /
13
+ // `contest` via dependency injection and don't know which path they're on.
14
+ // That keeps the unit tests for those modules hermetic (no fs, no shadow
15
+ // config), and concentrates the live-vs-shadow branch here.
11
16
  import { contestEdge, observeEdge, } from "../curation/edges.js";
12
- import { recordShadowAction } from "../curation/shadow.js";
13
17
  import { ok } from "../frontmatter/types.js";
14
18
  // In shadow mode we return a synthetic DerivesFromEdge so the caller's
15
19
  // success/error branch (which only checks `ok` + counts) works the same.
@@ -29,29 +33,19 @@ function stubEdge(fromPath, toPath, at, status, contestReason) {
29
33
  contestReason,
30
34
  };
31
35
  }
36
+ // Shadow-mode timestamp for the synthetic stub. Matches the edge store's
37
+ // second-resolution ISO format so the stub is shape-compatible.
38
+ function nowIso() {
39
+ return new Date().toISOString().replace(/\.\d{3}Z$/, "Z");
40
+ }
32
41
  export function makeObserve(config) {
33
42
  return async (input) => {
34
43
  if (!config.shadowMode) {
35
44
  return observeEdge(config.vaultRoot, input);
36
45
  }
37
- const shadowRes = await recordShadowAction(config.vaultRoot, {
38
- tool: "vault_edge_observe",
39
- action: "edge-observe",
40
- // targetPath drives the blast computation (downstream reach via reverse
41
- // link/source maps). The FROM doc is the right seed: strengthening
42
- // from→to could re-trigger anything downstream of `from`.
43
- targetPath: input.fromPath,
44
- touchedPaths: [input.fromPath, input.toPath],
45
- agent: input.observedBy,
46
- ...(config.principal ? { principal: config.principal } : {}),
47
- // Carry premiseVote in the message so the calibration journal can
48
- // reconstruct direction (directed-to vs symmetric/pending) — shadow mode
49
- // is where this feature is calibrated, so the signal must not be erased.
50
- commitMessage: `[shadow] edge_observe ${input.fromPath} ← ${input.toPath} [premise:${input.premiseVote ?? "n/a"}]${input.note ? ` (${input.note})` : ""}`,
51
- });
52
- if (!shadowRes.ok)
53
- return shadowRes;
54
- return ok(stubEdge(input.fromPath, input.toPath, shadowRes.value.at, "candidate", null));
46
+ // Shadow mode: advance nothing. Return the stub so the caller's success
47
+ // branch (which keys on `ok` + counts, not the row contents) is satisfied.
48
+ return ok(stubEdge(input.fromPath, input.toPath, nowIso(), "candidate", null));
55
49
  };
56
50
  }
57
51
  export function makeContest(config) {
@@ -59,18 +53,7 @@ export function makeContest(config) {
59
53
  if (!config.shadowMode) {
60
54
  return contestEdge(config.vaultRoot, input);
61
55
  }
62
- const shadowRes = await recordShadowAction(config.vaultRoot, {
63
- tool: "vault_edge_contest",
64
- action: "edge-contest",
65
- targetPath: input.fromPath,
66
- touchedPaths: [input.fromPath, input.toPath],
67
- agent: input.contestedBy,
68
- ...(config.principal ? { principal: config.principal } : {}),
69
- commitMessage: `[shadow] edge_contest ${input.fromPath} ← ${input.toPath}: ${input.reason}`,
70
- });
71
- if (!shadowRes.ok)
72
- return shadowRes;
73
- return ok(stubEdge(input.fromPath, input.toPath, shadowRes.value.at, "revoked", input.reason));
56
+ return ok(stubEdge(input.fromPath, input.toPath, nowIso(), "revoked", input.reason));
74
57
  };
75
58
  }
76
59
  //# sourceMappingURL=edge-write.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge-write.js","sourceRoot":"","sources":["../../src/consolidate/edge-write.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2EAA2E;AAC3E,wEAAwE;AACxE,yEAAyE;AACzE,2DAA2D;AAC3D,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,sEAAsE;AAEtE,OAAO,EAEL,WAAW,EAGX,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAe,MAAM,yBAAyB,CAAC;AAW1D,uEAAuE;AACvE,yEAAyE;AACzE,+DAA+D;AAC/D,SAAS,QAAQ,CACf,QAAgB,EAChB,MAAc,EACd,EAAU,EACV,MAA+B,EAC/B,aAA4B;IAE5B,OAAO;QACL,QAAQ;QACR,MAAM;QACN,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,EAAE;QACjB,MAAM;QACN,gBAAgB,EAAE,UAAU;QAC5B,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QAC7C,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAuB;IAEvB,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE;YAC3D,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,cAAc;YACtB,wEAAwE;YACxE,mEAAmE;YACnE,0DAA0D;YAC1D,UAAU,EAAE,KAAK,CAAC,QAAQ;YAC1B,YAAY,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,KAAK,CAAC,UAAU;YACvB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,kEAAkE;YAClE,yEAAyE;YACzE,yEAAyE;YACzE,aAAa,EAAE,yBAAyB,KAAK,CAAC,QAAQ,MAAM,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;SAC1J,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC;QACpC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAuB;IAEvB,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE;YAC3D,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,KAAK,CAAC,QAAQ;YAC1B,YAAY,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,KAAK,CAAC,WAAW;YACxB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,aAAa,EAAE,yBAAyB,KAAK,CAAC,QAAQ,MAAM,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;SAC5F,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC;QACpC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjG,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"edge-write.js","sourceRoot":"","sources":["../../src/consolidate/edge-write.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,8EAA8E;AAC9E,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,0EAA0E;AAC1E,2EAA2E;AAC3E,iCAAiC;AACjC,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,4DAA4D;AAE5D,OAAO,EAEL,WAAW,EAGX,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,EAAE,EAAe,MAAM,yBAAyB,CAAC;AAO1D,uEAAuE;AACvE,yEAAyE;AACzE,+DAA+D;AAC/D,SAAS,QAAQ,CACf,QAAgB,EAChB,MAAc,EACd,EAAU,EACV,MAA+B,EAC/B,aAA4B;IAE5B,OAAO;QACL,QAAQ;QACR,MAAM;QACN,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,EAAE;QACjB,MAAM;QACN,gBAAgB,EAAE,UAAU;QAC5B,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QAC7C,aAAa;KACd,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,gEAAgE;AAChE,SAAS,MAAM;IACb,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAuB;IAEvB,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,wEAAwE;QACxE,2EAA2E;QAC3E,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAuB;IAEvB,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ export type EnvelopeActionType = "edge-observe" | "edge-contest";
2
+ export interface EndpointState {
3
+ path: string;
4
+ provenanceKnown: boolean;
5
+ decayBlocking: boolean;
6
+ hasUnresolvedTension: boolean;
7
+ }
8
+ export interface EnvelopeCtx {
9
+ action: EnvelopeActionType;
10
+ endpoints: EndpointState[];
11
+ impact: number;
12
+ budget: number;
13
+ }
14
+ export interface EnvelopeVerdict {
15
+ admit: boolean;
16
+ gate: "invariants" | "budget" | null;
17
+ reason: string;
18
+ impact: number;
19
+ }
20
+ export interface EnvelopeAction {
21
+ action: EnvelopeActionType;
22
+ fromPath: string;
23
+ toPath: string;
24
+ }
25
+ export type Admit = (a: EnvelopeAction) => Promise<EnvelopeVerdict>;
26
+ export declare function evaluateEnvelope(ctx: EnvelopeCtx, spent: number): EnvelopeVerdict;
27
+ //# sourceMappingURL=envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/consolidate/envelope.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAAC;AAQjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,eAAe,EAAE,OAAO,CAAC;IAIzB,aAAa,EAAE,OAAO,CAAC;IAEvB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAEpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAoFjF"}
@@ -0,0 +1,90 @@
1
+ // The two-gate envelope (spec §5). PURE: callers assemble the context (I/O lives
2
+ // in the CLI's makeAdmit, a later task). An action is admitted iff BOTH the
3
+ // invariants gate AND the trust-budget gate pass. Gated actions surface (later
4
+ // tasks); they do NOT spend (deduct-on-admit happens in the caller).
5
+ // Actions A is allowed to take that do NOT delete (never-delete invariant).
6
+ const NON_DELETING_ACTIONS = new Set([
7
+ "edge-observe",
8
+ "edge-contest",
9
+ ]);
10
+ export function evaluateEnvelope(ctx, spent) {
11
+ // --- Invariants gate (first; §5.1) ---
12
+ //
13
+ // Precondition failures (malformed context, non-finite/negative numerics) are
14
+ // folded into the invariants gate because the correct behaviour is identical:
15
+ // refuse, never spend. A separate gate variant isn't worth rippling through the
16
+ // journal for inputs that are unreachable when metrics are computed normally.
17
+ // The reason string carries the specific signal for any journal reader.
18
+ // Precondition: callers must supply exactly 2 endpoints ([from, to]).
19
+ if (ctx.endpoints.length < 2) {
20
+ return {
21
+ admit: false,
22
+ gate: "invariants",
23
+ reason: `precondition: expected 2 endpoints (from, to), got ${ctx.endpoints.length}`,
24
+ impact: ctx.impact,
25
+ };
26
+ }
27
+ // Precondition: callers must supply finite, non-negative numeric values.
28
+ // NaN/Infinity would silently corrupt the budget comparison.
29
+ if (!Number.isFinite(ctx.impact) ||
30
+ !Number.isFinite(ctx.budget) ||
31
+ !Number.isFinite(spent) ||
32
+ ctx.impact < 0 ||
33
+ ctx.budget < 0 ||
34
+ spent < 0) {
35
+ return {
36
+ admit: false,
37
+ gate: "invariants",
38
+ reason: `precondition: non-finite or negative numeric input (impact/budget/spent)`,
39
+ impact: ctx.impact,
40
+ };
41
+ }
42
+ // never-delete (defensive assert).
43
+ if (!NON_DELETING_ACTIONS.has(ctx.action)) {
44
+ return {
45
+ admit: false,
46
+ gate: "invariants",
47
+ reason: `never-delete: action '${ctx.action}' is not permitted`,
48
+ impact: ctx.impact,
49
+ };
50
+ }
51
+ // Per-endpoint checks run in spec §5.1 priority order:
52
+ // 1. provenance-required 2. premise-freshness (decayBlocking) 3. tension-respect
53
+ for (const ep of ctx.endpoints) {
54
+ if (!ep.provenanceKnown) {
55
+ return {
56
+ admit: false,
57
+ gate: "invariants",
58
+ reason: `provenance-required: ${ep.path} has unknown/broken provenance`,
59
+ impact: ctx.impact,
60
+ };
61
+ }
62
+ if (ep.decayBlocking) {
63
+ return {
64
+ admit: false,
65
+ gate: "invariants",
66
+ reason: `premise-freshness: ${ep.path} is stale/deprecated`,
67
+ impact: ctx.impact,
68
+ };
69
+ }
70
+ if (ep.hasUnresolvedTension) {
71
+ return {
72
+ admit: false,
73
+ gate: "invariants",
74
+ reason: `tension-respect: ${ep.path} has an unresolved tension`,
75
+ impact: ctx.impact,
76
+ };
77
+ }
78
+ }
79
+ // --- Trust-budget gate (§5.2; strict > matches shadow.ts would_gate) ---
80
+ if (spent + ctx.impact > ctx.budget) {
81
+ return {
82
+ admit: false,
83
+ gate: "budget",
84
+ reason: `trust-budget exhausted: spent ${spent.toFixed(3)} + I ${ctx.impact.toFixed(3)} > B0 ${ctx.budget.toFixed(3)}`,
85
+ impact: ctx.impact,
86
+ };
87
+ }
88
+ return { admit: true, gate: null, reason: "admitted", impact: ctx.impact };
89
+ }
90
+ //# sourceMappingURL=envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/consolidate/envelope.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/consolidate/index.ts"],"names":[],"mappings":"AA0HA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0PpE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/consolidate/index.ts"],"names":[],"mappings":"AA2HA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsSpE"}