@descryy/core 0.6.2 → 0.7.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 (45) hide show
  1. package/dist/graph/index.d.ts +1 -1
  2. package/dist/graph/index.d.ts.map +1 -1
  3. package/dist/graph/index.js.map +1 -1
  4. package/dist/graph/runtime-confirmation.d.ts +19 -0
  5. package/dist/graph/runtime-confirmation.d.ts.map +1 -1
  6. package/dist/graph/runtime-confirmation.js +35 -3
  7. package/dist/graph/runtime-confirmation.js.map +1 -1
  8. package/dist/query/index.d.ts +3 -0
  9. package/dist/query/index.d.ts.map +1 -1
  10. package/dist/query/index.js +2 -0
  11. package/dist/query/index.js.map +1 -1
  12. package/dist/query/model-table.d.ts +42 -0
  13. package/dist/query/model-table.d.ts.map +1 -0
  14. package/dist/query/model-table.js +51 -0
  15. package/dist/query/model-table.js.map +1 -0
  16. package/dist/query/persistence-reach.d.ts +150 -0
  17. package/dist/query/persistence-reach.d.ts.map +1 -0
  18. package/dist/query/persistence-reach.js +393 -0
  19. package/dist/query/persistence-reach.js.map +1 -0
  20. package/dist/query/queries.d.ts +1 -1
  21. package/dist/query/queries.d.ts.map +1 -1
  22. package/dist/query/queries.js +1 -1
  23. package/dist/query/queries.js.map +1 -1
  24. package/dist/scoping/weights.js +1 -1
  25. package/dist/scoping/weights.js.map +1 -1
  26. package/dist/store/reader.d.ts.map +1 -1
  27. package/dist/store/reader.js +6 -1
  28. package/dist/store/reader.js.map +1 -1
  29. package/dist/store/schema.d.ts +2 -2
  30. package/dist/store/schema.d.ts.map +1 -1
  31. package/dist/store/schema.js +2 -1
  32. package/dist/store/schema.js.map +1 -1
  33. package/dist/store/writer.d.ts.map +1 -1
  34. package/dist/store/writer.js +4 -3
  35. package/dist/store/writer.js.map +1 -1
  36. package/dist/tiers/certify.d.ts +174 -0
  37. package/dist/tiers/certify.d.ts.map +1 -1
  38. package/dist/tiers/certify.js +309 -5
  39. package/dist/tiers/certify.js.map +1 -1
  40. package/dist/tiers/index.d.ts +1 -1
  41. package/dist/tiers/index.d.ts.map +1 -1
  42. package/dist/tiers/index.js.map +1 -1
  43. package/dist/tiers/ladder.js +1 -1
  44. package/dist/tiers/ladder.js.map +1 -1
  45. package/package.json +2 -2
@@ -7,7 +7,7 @@ export type { Mergeable } from "./merge.ts";
7
7
  export { resolveCrossLanguage, RESOLVER_PRODUCED_BY } from "./cross-language.ts";
8
8
  export type { NamespaceDeclaration, CrossLanguageAmbiguity, CrossLanguageResult } from "./cross-language.ts";
9
9
  export { applyRuntimeObservations, reapplyEarnedOverlays, observedEdges, edgeCorrections, recordEdgeCorrection, RUNTIME_ADAPTER_ID, RUNTIME_ADAPTER_VERSION, RUNTIME_PRODUCER, } from "./runtime-confirmation.ts";
10
- export type { Clock, EdgeCorrectionRow, ObservedEdgeRow, RuntimeConfirmationInput, RuntimeConfirmationResult, RuntimeObservationRefusal, StaleR4Observation, } from "./runtime-confirmation.ts";
10
+ export type { Clock, ConfirmedFactConflict, EdgeCorrectionRow, ObservedEdgeRow, RuntimeConfirmationInput, RuntimeConfirmationResult, RuntimeObservationRefusal, StaleR4Observation, } from "./runtime-confirmation.ts";
11
11
  export { applyObservedTests, observedTests } from "./observed-tests.ts";
12
12
  export type { ObservedTestObservation, ObservedTestOutcome, ObservedTestRefusal, ObservedTestRow, ObservedTestsInput, ObservedTestsResult, } from "./observed-tests.ts";
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzG,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE7G,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,KAAK,EACL,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzG,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE7G,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,KAAK,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGjF,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAUnC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGjF,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAWnC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -18,6 +18,22 @@ export interface StaleR4Observation {
18
18
  readonly observedByRun: string | null;
19
19
  readonly detail: string;
20
20
  }
21
+ /** A denial that lands on an edge `mintEdgesFromConfirmedFacts` wrote from a
22
+ * human's answer (`attrs.humanAsserted`, DEC-223). Structurally separate from
23
+ * the generic `contradictions` bucket on purpose: a human assertion and a
24
+ * fresh runtime observation disagreeing is a different situation from the
25
+ * graph's own static guess being wrong, and this project's rule is that a
26
+ * human assertion is never silently overridden or silently trusted forever —
27
+ * so this only names the collision. It does not pick a winner: the edge is
28
+ * still demoted the same as any other contradicted sub-R4 edge (see the
29
+ * caller), and `attrs.confirmedFacts` on the edge itself is left untouched. */
30
+ export interface ConfirmedFactConflict {
31
+ readonly edgeId: string;
32
+ /** `attrs.confirmedFacts` off the edge, verbatim — the confirmed side of the disagreement. */
33
+ readonly confirmedFacts: readonly Record<string, unknown>[];
34
+ /** The runtime observation's own words — the fresh side of the disagreement. */
35
+ readonly detail: string;
36
+ }
21
37
  export interface RuntimeConfirmationInput {
22
38
  /** The run that witnessed these observations. Becomes `edges.observed_by_run` and `observed_edges.run_id`. */
23
39
  readonly runId: string;
@@ -36,6 +52,9 @@ export interface RuntimeConfirmationResult {
36
52
  readonly contradictions: readonly GraphDefectRecord[];
37
53
  readonly staleR4: readonly StaleR4Observation[];
38
54
  readonly refused: readonly RuntimeObservationRefusal[];
55
+ /** Denials that also collided with a human-confirmed edge. A subset named
56
+ * separately, never merged into `contradictions` — see {@link ConfirmedFactConflict}. */
57
+ readonly confirmedFactConflict: readonly ConfirmedFactConflict[];
39
58
  }
40
59
  /** One row of the EARNED R4 ledger. */
41
60
  export interface ObservedEdgeRow {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-confirmation.d.ts","sourceRoot":"","sources":["../../src/graph/runtime-confirmation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-confirmation.d.ts","sourceRoot":"","sources":["../../src/graph/runtime-confirmation.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ export function applyRuntimeObservations(driver, input, clock = SYSTEM_CLOCK) {
15
15
  const contradictions = [];
16
16
  const staleR4 = [];
17
17
  const refused = [];
18
+ const confirmedFactConflict = [];
18
19
  const now = clock.now();
19
20
  driver.transaction(() => {
20
21
  for (const observation of input.observations) {
@@ -73,9 +74,17 @@ export function applyRuntimeObservations(driver, input, clock = SYSTEM_CLOCK) {
73
74
  claimedResolution: existing.resolution,
74
75
  detail: observation.detail,
75
76
  });
77
+ // A human answered this exact edge (DEC-223) and the runtime now disagrees.
78
+ // Named separately from the contradiction above — not auto-resolved, not
79
+ // merged: the demotion above still runs unconditionally (this signal never
80
+ // picks a winner), and `attrs.confirmedFacts` on the edge is left as-is.
81
+ const confirmedFacts = confirmedFactsOf(existing);
82
+ if (confirmedFacts !== null) {
83
+ confirmedFactConflict.push({ edgeId: id, confirmedFacts, detail: observation.detail });
84
+ }
76
85
  }
77
86
  });
78
- return { promoted, created, confirmed, contradictions, staleR4, refused };
87
+ return { promoted, created, confirmed, contradictions, staleR4, refused, confirmedFactConflict };
79
88
  }
80
89
  /** Re-projects the EARNED ledgers onto a freshly rebuilt derived graph — what
81
90
  * makes the DEC-017 partition pay. Without this, a re-index silently resets the
@@ -120,7 +129,7 @@ export function reapplyEarnedOverlays(driver) {
120
129
  demoteEdge(driver, correction.edgeId);
121
130
  }
122
131
  });
123
- return { promoted, created, confirmed, contradictions: [], staleR4: [], refused };
132
+ return { promoted, created, confirmed, contradictions: [], staleR4: [], refused, confirmedFactConflict: [] };
124
133
  }
125
134
  /** Every row of the EARNED R4 ledger, oldest first, optionally for one run. */
126
135
  export function observedEdges(driver, options = {}) {
@@ -169,9 +178,32 @@ export function recordEdgeCorrection(driver, input, clock = SYSTEM_CLOCK) {
169
178
  // Internals.
170
179
  function readEdge(driver, id) {
171
180
  return driver
172
- .prepare("SELECT id, resolution, observed_by_run FROM edges WHERE id = ?")
181
+ .prepare("SELECT id, resolution, observed_by_run, attrs FROM edges WHERE id = ?")
173
182
  .all(id)[0];
174
183
  }
184
+ /** The `attrs.confirmedFacts` array off a human-confirmed edge row, or `null`
185
+ * when the edge carries no `attrs.humanAsserted` — the signal that gates
186
+ * {@link ConfirmedFactConflict}. Malformed/missing `attrs` reads as "not
187
+ * human-asserted" rather than throwing — a parse failure here must never
188
+ * block the ordinary demotion path. */
189
+ function confirmedFactsOf(edge) {
190
+ if (edge.attrs === null)
191
+ return null;
192
+ let parsed;
193
+ try {
194
+ parsed = JSON.parse(edge.attrs);
195
+ }
196
+ catch {
197
+ return null;
198
+ }
199
+ if (typeof parsed !== "object" || parsed === null)
200
+ return null;
201
+ const attrs = parsed;
202
+ if (attrs["humanAsserted"] !== true)
203
+ return null;
204
+ const facts = attrs["confirmedFacts"];
205
+ return Array.isArray(facts) ? facts : [];
206
+ }
175
207
  /** The first of `from`/`to` this graph does not hold, or `null` when it holds both. */
176
208
  function missingNode(driver, from, to) {
177
209
  const statement = driver.prepare("SELECT id FROM nodes WHERE id = ?");
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-confirmation.js","sourceRoot":"","sources":["../../src/graph/runtime-confirmation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-confirmation.js","sourceRoot":"","sources":["../../src/graph/runtime-confirmation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAsE,MAAM,aAAa,CAAC;AA2FzG,MAAM,YAAY,GAAU,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAEtD;;yEAEyE;AACzE,MAAM,UAAU,wBAAwB,CACtC,MAAiB,EACjB,KAA+B,EAC/B,QAAe,YAAY;IAE3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAwB,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAgC,EAAE,CAAC;IAChD,MAAM,qBAAqB,GAA4B,EAAE,CAAC;IAE1D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAExB,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;QACtB,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAEtC,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrB,yEAAyE;gBACzE,sDAAsD;gBACtD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;gBACtE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,WAAW,CAAC,IAAI;wBACtB,EAAE,EAAE,WAAW,CAAC,EAAE;wBAClB,QAAQ,EAAE,WAAW,CAAC,QAAQ;wBAC9B,MAAM,EACJ,GAAG,OAAO,0CAA0C,WAAW,CAAC,QAAQ,kBAAkB;4BAC1F,qEAAqE;qBACxE,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBAED,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;gBAExD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;oBACtE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC;qBAAM,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;oBACnC,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrB,CAAC;gBACD,SAAS;YACX,CAAC;YAED,YAAY;YACZ,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,EAAE,EAAE,WAAW,CAAC,EAAE;oBAClB,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,MAAM,EACJ,MAAM,WAAW,CAAC,QAAQ,cAAc,WAAW,CAAC,IAAI,OAAO,WAAW,CAAC,EAAE,kBAAkB;wBAC/F,gEAAgE;iBACnE,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;gBAC7B,wEAAwE;gBACxE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;gBAClG,SAAS;YACX,CAAC;YAED,gBAAgB,CAAC,MAAM,EAAE,EAAE,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACtD,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvB,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,EAAE,EAAE,WAAW,CAAC,EAAE;gBAClB,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,iBAAiB,EAAE,QAAQ,CAAC,UAAoD;gBAChF,MAAM,EAAE,WAAW,CAAC,MAAM;aAC3B,CAAC,CAAC;YAEH,4EAA4E;YAC5E,yEAAyE;YACzE,2EAA2E;YAC3E,yEAAyE;YACzE,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC5B,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACnG,CAAC;AAED;;;4FAG4F;AAC5F,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAEjF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAgC,EAAE,CAAC;IAEhD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;QACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,MAAM,EAAE,GAAG,OAAO,uCAAuC,GAAG,CAAC,KAAK,mCAAmC;iBACtG,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;gBAClE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;iBAAM,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC3C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,0EAA0E;YAC1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC;gBAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC;AAC/G,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,UAAuC,EAAE;IACxF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACrE,MAAM,GAAG,GACP,sFAAsF;QACtF,uBAAuB,KAAK,wCAAwC,CAAC;IACvE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChE,OAAO,MAAM;SACV,OAAO,CAQL,GAAG,CAAC;SACN,GAAG,CAAC,GAAG,IAAI,CAAC;SACZ,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,KAAK,EAAE,GAAG,CAAC,MAAM;QACjB,IAAI,EAAE,GAAG,CAAC,YAAY;QACtB,EAAE,EAAE,GAAG,CAAC,UAAU;QAClB,QAAQ,EAAE,GAAG,CAAC,SAAqB;QACnC,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,UAAU,EAAE,GAAG,CAAC,WAAW;KAC5B,CAAC,CAAC,CAAC;AACR,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO,MAAM;SACV,OAAO,CACN,4GAA4G,CAC7G;SACA,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;QACpD,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,YAAY;KAC9B,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;sDAEsD;AACtD,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,KAAgJ,EAChJ,QAAe,YAAY;IAE3B,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;QACtB,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC;YAAE,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7G,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACxB,CAAC;AAED,aAAa;AAEb,SAAS,QAAQ,CAAC,MAAiB,EAAE,EAAU;IAC7C,OAAO,MAAM;SACV,OAAO,CAAU,uEAAuE,CAAC;SACzF,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC;AAED;;;;wCAIwC;AACxC,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAiC,CAAC;IAChD,IAAI,KAAK,CAAC,eAAe,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAmC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,uFAAuF;AACvF,SAAS,WAAW,CAAC,MAAiB,EAAE,IAAY,EAAE,EAAU;IAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAiB,mCAAmC,CAAC,CAAC;IACtF,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAiB,EACjB,EAAU,EACV,KAA+B,EAC/B,WAAmC,EACnC,GAAW;IAEX,MAAM;SACH,OAAO,CACN,4GAA4G;QAC1G,+BAA+B;QAC/B,0CAA0C,CAC7C;SACA,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAiB,EAAE,EAAU,EAAE,MAAc,EAAE,GAAW;IAClF,mBAAmB,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAiB,EAAE,EAAU,EAAE,OAAe,EAAE,MAAc,EAAE,GAAW;IACtG,MAAM;SACH,OAAO,CACN,2FAA2F;QACzF,2FAA2F;QAC3F,uCAAuC,CAC1C;SACA,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,WAAW,CAAC,MAAiB,EAAE,EAAU,EAAE,KAAa;IAC/D,4EAA4E;IAC5E,MAAM;SACH,OAAO,CAAC,qFAAqF,CAAC;SAC9F,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAC,MAAiB,EAAE,EAAU;IAC/C,MAAM,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,cAAc,CACrB,MAAiB,EACjB,EAAU,EACV,WAAwF,EACxF,KAAa,EACb,SAAiB;IAEjB,8EAA8E;IAC9E,8EAA8E;IAC9E,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM;SACH,OAAO,CACN,mHAAmH;QACjH,6CAA6C;QAC7C,6GAA6G,CAChH;SACA,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AAC7G,CAAC;AAED,+FAA+F;AAC/F,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,kBAAkB,IAAI,uBAAuB,EAAE,CAAC;AAEnF,SAAS,gBAAgB,CAAC,MAAiB,EAAE,KAAa,EAAE,SAAiB;IAC3E,MAAM,EAAE,GAAG,WAAW,KAAK,EAAE,CAAC;IAC9B,MAAM;SACH,OAAO,CACN,sGAAsG;QACpG,4DAA4D;QAC5D,kDAAkD;QAClD,6BAA6B,CAChC;SACA,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjG,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -31,4 +31,7 @@ export { rankRootCause, DEFAULT_ROOT_CAUSE_WEIGHTS, ROOT_CAUSE_TRACE_EDGE_TYPES,
31
31
  export type { RootCauseWeights, RootCauseOptions, RankedRootCauseCandidate, RootCauseRanking, ChangeCouplingEvidence, } from "./root-cause-score.ts";
32
32
  export { createResolutionFloor } from "./resolution-floor.ts";
33
33
  export type { ResolutionFloor } from "./resolution-floor.ts";
34
+ export { tableForModel, modelsForTable, tableIdForModel } from "./model-table.ts";
35
+ export { endpointsReachingTable, MODEL_ACCESS_EDGE_TYPES, WRITE_MEANING_NOTE } from "./persistence-reach.ts";
36
+ export type { AccessDirection, EndpointTableAccess, PersistenceHopGap, PersistencePath, PersistenceReach, PersistenceReachOptions, } from "./persistence-reach.ts";
34
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACxG,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE7G,OAAO,EACL,QAAQ,EACR,eAAe,EACf,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExF,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACrG,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9E,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEzF,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7G,YAAY,EACV,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEzG,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrG,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAC9F,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACpI,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC7G,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC"}
@@ -15,4 +15,6 @@ export { applyDeclaredValues, DECLARED_VALUE_RELIABILITY } from "./declared-valu
15
15
  export { describeRowClosures } from "./row-closure-picture.js";
16
16
  export { rankRootCause, DEFAULT_ROOT_CAUSE_WEIGHTS, ROOT_CAUSE_TRACE_EDGE_TYPES, INCIDENT_SATURATION } from "./root-cause-score.js";
17
17
  export { createResolutionFloor } from "./resolution-floor.js";
18
+ export { tableForModel, modelsForTable, tableIdForModel } from "./model-table.js";
19
+ export { endpointsReachingTable, MODEL_ACCESS_EDGE_TYPES, WRITE_MEANING_NOTE } from "./persistence-reach.js";
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAQjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGxG,OAAO,EACL,QAAQ,EACR,eAAe,EACf,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,WAAW,GACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AASrG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAQ7G,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIrG,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAO9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAQ/D,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AASpI,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAQjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGxG,OAAO,EACL,QAAQ,EACR,eAAe,EACf,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,WAAW,GACZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AASrG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAQ7G,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIrG,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAO9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAQ/D,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AASpI,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /** `MODEL` -> `DATABASE_TABLE`, joined at query time rather than by a stored
2
+ * edge — `DEC-NEXT-database-table-column-traversability-vs-queryability.md`
3
+ * rules that queryability, not a new edge type, is what these checks need.
4
+ *
5
+ * `databaseTableNodesFromModel` (`@descryy/ir`, DEC-240) mints every
6
+ * `DATABASE_TABLE` node's id deterministically from
7
+ * `nodeId(scope, "DATABASE_TABLE", tableQsp(schema, table), null)` — with
8
+ * `language: null` unconditionally, specifically so an ORM-derived producer
9
+ * and a raw-DDL-derived producer land on the identical id for the same real
10
+ * table, with no coordination between them. A `MODEL` node's `attrs.table`
11
+ * (and optional `attrs.schema`) is the literal table name it declares — a
12
+ * model refuses rather than guesses if it can't determine one, so this is
13
+ * always single-valued, never ambiguous. Recomputing the same id from those
14
+ * attrs and looking it up is therefore an O(1) exact match, no scan, no
15
+ * fuzzy string comparison — the same "relationship read from attrs at query
16
+ * time, not stored" precedent as `contracts/orphans.ts`'s `keyOf()`. */
17
+ import { type IdentityScope, type IRNode } from "@descryy/ir";
18
+ import type { AdjacencyProvider } from "./provider.ts";
19
+ /** The table id a `MODEL` node's own declared shape computes to, or
20
+ * `undefined` when it names no table — refused rather than guessed at mint
21
+ * time (`model-tables.ts`), so this is a real absence, not a lookup miss.
22
+ * Exported so a composed query can enumerate `MODEL` once and both filter and
23
+ * probe from that one enumeration; a second `nodesOfType` call to recover the
24
+ * same set is a scan the store does not need to repeat. */
25
+ export declare function tableIdForModel(model: IRNode, scope: IdentityScope): string | undefined;
26
+ /** A `MODEL` node's `DATABASE_TABLE` counterpart, or `undefined` when the
27
+ * model names no table, or when the table it names was never observed in
28
+ * this graph (no adapter emitted it, or it belongs to a different scope).
29
+ * Both are real, disclosable gaps — never an error. `scope` must be the
30
+ * same `IdentityScope` the graph was built with; `DATABASE_TABLE` is
31
+ * workspace-scoped (`NODE_SCOPE`), so a mismatched scope silently misses. */
32
+ export declare function tableForModel(provider: AdjacencyProvider, model: IRNode, scope: IdentityScope): IRNode | undefined;
33
+ /** The reverse direction: every `MODEL` node in this graph whose declared
34
+ * table resolves to `table`. Real and legitimate to be more than one — two
35
+ * ORM entities intentionally sharing a table is not an error, just a fact
36
+ * to enumerate correctly. O(models enumerated); there is no stored edge to
37
+ * walk in the other direction. */
38
+ export declare function modelsForTable(provider: AdjacencyProvider, table: IRNode, scope: IdentityScope, limit?: number): {
39
+ readonly models: readonly IRNode[];
40
+ readonly truncated: boolean;
41
+ };
42
+ //# sourceMappingURL=model-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-table.d.ts","sourceRoot":"","sources":["../../src/query/model-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;yEAeyE;AAEzE,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,MAAM,EACZ,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,iBAAiB,EAAW,MAAM,eAAe,CAAC;AAEhE;;;;;4DAK4D;AAC5D,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAKvF;AAED;;;;;8EAK8E;AAC9E,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,aAAa,GACnB,MAAM,GAAG,SAAS,CAGpB;AAED;;;;mCAImC;AACnC,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,aAAa,EACpB,KAAK,CAAC,EAAE,MAAM,GACb;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAIrE"}
@@ -0,0 +1,51 @@
1
+ /** `MODEL` -> `DATABASE_TABLE`, joined at query time rather than by a stored
2
+ * edge — `DEC-NEXT-database-table-column-traversability-vs-queryability.md`
3
+ * rules that queryability, not a new edge type, is what these checks need.
4
+ *
5
+ * `databaseTableNodesFromModel` (`@descryy/ir`, DEC-240) mints every
6
+ * `DATABASE_TABLE` node's id deterministically from
7
+ * `nodeId(scope, "DATABASE_TABLE", tableQsp(schema, table), null)` — with
8
+ * `language: null` unconditionally, specifically so an ORM-derived producer
9
+ * and a raw-DDL-derived producer land on the identical id for the same real
10
+ * table, with no coordination between them. A `MODEL` node's `attrs.table`
11
+ * (and optional `attrs.schema`) is the literal table name it declares — a
12
+ * model refuses rather than guesses if it can't determine one, so this is
13
+ * always single-valued, never ambiguous. Recomputing the same id from those
14
+ * attrs and looking it up is therefore an O(1) exact match, no scan, no
15
+ * fuzzy string comparison — the same "relationship read from attrs at query
16
+ * time, not stored" precedent as `contracts/orphans.ts`'s `keyOf()`. */
17
+ import { DEFAULT_MODEL_SCHEMA, nodeId, tableQsp, } from "@descryy/ir";
18
+ /** The table id a `MODEL` node's own declared shape computes to, or
19
+ * `undefined` when it names no table — refused rather than guessed at mint
20
+ * time (`model-tables.ts`), so this is a real absence, not a lookup miss.
21
+ * Exported so a composed query can enumerate `MODEL` once and both filter and
22
+ * probe from that one enumeration; a second `nodesOfType` call to recover the
23
+ * same set is a scan the store does not need to repeat. */
24
+ export function tableIdForModel(model, scope) {
25
+ const table = model.attrs["table"];
26
+ if (typeof table !== "string" || table === "")
27
+ return undefined;
28
+ const schema = typeof model.attrs["schema"] === "string" ? model.attrs["schema"] : DEFAULT_MODEL_SCHEMA;
29
+ return nodeId(scope, "DATABASE_TABLE", tableQsp(schema, table), null);
30
+ }
31
+ /** A `MODEL` node's `DATABASE_TABLE` counterpart, or `undefined` when the
32
+ * model names no table, or when the table it names was never observed in
33
+ * this graph (no adapter emitted it, or it belongs to a different scope).
34
+ * Both are real, disclosable gaps — never an error. `scope` must be the
35
+ * same `IdentityScope` the graph was built with; `DATABASE_TABLE` is
36
+ * workspace-scoped (`NODE_SCOPE`), so a mismatched scope silently misses. */
37
+ export function tableForModel(provider, model, scope) {
38
+ const tableId = tableIdForModel(model, scope);
39
+ return tableId === undefined ? undefined : provider.node(tableId);
40
+ }
41
+ /** The reverse direction: every `MODEL` node in this graph whose declared
42
+ * table resolves to `table`. Real and legitimate to be more than one — two
43
+ * ORM entities intentionally sharing a table is not an error, just a fact
44
+ * to enumerate correctly. O(models enumerated); there is no stored edge to
45
+ * walk in the other direction. */
46
+ export function modelsForTable(provider, table, scope, limit) {
47
+ const set = limit === undefined ? provider.nodesOfType("MODEL") : provider.nodesOfType("MODEL", limit);
48
+ const models = set.nodes.filter((model) => tableIdForModel(model, scope) === table.id);
49
+ return { models, truncated: set.truncated };
50
+ }
51
+ //# sourceMappingURL=model-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-table.js","sourceRoot":"","sources":["../../src/query/model-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;yEAeyE;AAEzE,OAAO,EACL,oBAAoB,EACpB,MAAM,EACN,QAAQ,GAGT,MAAM,aAAa,CAAC;AAIrB;;;;;4DAK4D;AAC5D,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAoB;IACjE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAChE,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACxG,OAAO,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC;AAED;;;;;8EAK8E;AAC9E,MAAM,UAAU,aAAa,CAC3B,QAA2B,EAC3B,KAAa,EACb,KAAoB;IAEpB,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpE,CAAC;AAED;;;;mCAImC;AACnC,MAAM,UAAU,cAAc,CAC5B,QAA2B,EAC3B,KAAa,EACb,KAAoB,EACpB,KAAc;IAEd,MAAM,GAAG,GAAY,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChH,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;IACvF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,150 @@
1
+ /** "Which endpoints reach this table, and which of them write to it" — the
2
+ * persistence half of the bug-relevant subgraph, made askable.
3
+ *
4
+ * Until this query existed the question could not be asked in any language:
5
+ * `DATABASE_TABLE`/`DATABASE_COLUMN` are in no edge, of any type, in either
6
+ * direction. That is not a defect — it is the consequence of a ruling. The
7
+ * model-to-table join was deliberately built **by shared node identity rather
8
+ * than by an edge** (`databaseTableNodesFromModel`, `@descryy/ir`, DEC-240),
9
+ * so an ORM-derived producer and a raw-DDL-derived producer land on the same
10
+ * id for the same real table with no coordination. Identity merging and
11
+ * reachability are different problems, and solving the first left the second
12
+ * untouched. This module solves the second **without touching the first**:
13
+ * no new edge type, no new node type, no adapter change
14
+ * (`DEC-NEXT-database-table-column-traversability-vs-queryability.md`,
15
+ * `DEC-NEXT-persistence-half-of-the-bug-relevant-subgraph-is-unreachable.md`
16
+ * option 1).
17
+ *
18
+ * ## The three hops, walked backwards from the table
19
+ *
20
+ * 1. **table -> model** — `modelsForTable` (`model-table.ts`), an O(1) exact
21
+ * id match per model, recomputed from the model's own declared table name.
22
+ * **This leg has no edge under it.** Its evidence is two declarations: a
23
+ * string in the model and the table node's identity. That is why the whole
24
+ * composed claim is name-level and can never reach reliability class A,
25
+ * however well-resolved the other two hops are.
26
+ * 2. **model -> accessor** — `READS`/`ASSIGNS` edges pointing at the model.
27
+ * 3. **accessor -> route -> endpoint** — one budgeted inbound `CALLS` walk
28
+ * seeded on every accessor at once (never one walk per accessor), carrying
29
+ * the set of accessors each node reaches, then
30
+ * `API_ROUTE --SERVES_API--> API_ENDPOINT`.
31
+ *
32
+ * ## The write gate, and why it names no language
33
+ *
34
+ * A developer acting on "this endpoint writes to your users table" changes
35
+ * code. Only some producers distinguish an assignment from a read; the rest
36
+ * emit every field access as `READS`, so answering the write question from a
37
+ * `READS` edge would state the opposite of what the code does for those
38
+ * producers. It must therefore be gated — but gating on a language name above
39
+ * the IR is a boundary breach (rule 1), and the mechanical boundary lint is
40
+ * right to forbid it.
41
+ *
42
+ * So the gate is **evidence, not configuration**: a producer is
43
+ * direction-aware iff it is observed emitting at least one `ASSIGNS` edge
44
+ * into a `MODEL` in this graph. An `ASSIGNS` edge is self-evidencing and
45
+ * needs no gate at all. A `READS` edge from a direction-aware producer is a
46
+ * genuine read. A `READS` edge from a producer never seen emitting `ASSIGNS`
47
+ * is `unknown-direction` — reported as not analysable, folded into neither
48
+ * the read set nor the write set. The failure mode is one-directional by
49
+ * construction: the worst this rule can do is decline to answer, and it can
50
+ * never manufacture a write. */
51
+ import { type EdgeType, type IdentityScope, type IREdge, type IRNode, type ReliabilityClass } from "@descryy/ir";
52
+ import type { AdjacencyProvider, QueryResult } from "./provider.ts";
53
+ /** The two edge types that carry a function's access to a model's fields.
54
+ * Named once so the accessor read and the direction probe cannot drift. */
55
+ export declare const MODEL_ACCESS_EDGE_TYPES: readonly EdgeType[];
56
+ /** What this query is willing to say about an endpoint's access to a table.
57
+ *
58
+ * `writes` means **an assignment to a mapped column of the model backing this
59
+ * table**, which is what the underlying edge actually records. It is not a
60
+ * witnessed database write: whether the assignment reaches the database
61
+ * depends on the object being session-attached and the session being flushed,
62
+ * and nothing in the graph establishes either. Rule 4 governs the difference —
63
+ * this is a behavioural prediction until a runtime run confirms it, and the
64
+ * reliability cap and `WRITE_MEANING_NOTE` both say so.
65
+ *
66
+ * `unknown-direction` is a real answer, not a missing one: the endpoint
67
+ * demonstrably reaches the table, and the direction is not analysable from
68
+ * the evidence the producer emitted. */
69
+ export type AccessDirection = "writes" | "reads" | "unknown-direction";
70
+ /** Which hop stopped, and where. A missing hop is disclosed rather than
71
+ * silently yielding a shorter answer — an endpoint absent from the result
72
+ * because hop 2 had nothing to walk is not an endpoint that does not touch
73
+ * the table. */
74
+ export interface PersistenceHopGap {
75
+ readonly hop: "model-for-table" | "accessor-for-model" | "route-for-accessor" | "endpoint-for-route";
76
+ /** The node the hop was walked from. */
77
+ readonly node: IRNode;
78
+ readonly reason: string;
79
+ }
80
+ /** One traced route from an endpoint to the table, with every edge under it. */
81
+ export interface PersistencePath {
82
+ readonly endpoint: IRNode;
83
+ readonly route: IRNode;
84
+ /** The function carrying the model-access edge — the end of the call chain. */
85
+ readonly accessor: IRNode;
86
+ readonly model: IRNode;
87
+ readonly direction: AccessDirection;
88
+ /** Columns the access edge names, where it names any. */
89
+ readonly columns: readonly string[];
90
+ /** `CALLS` hops from the route to the accessor. 1 when the route calls it directly. */
91
+ readonly callDepth: number;
92
+ /** Every edge this claim rests on, in path order: route->endpoint,
93
+ * route->..->accessor, accessor->model. The model->table leg is absent by
94
+ * construction — it is an identity match, not an edge. */
95
+ readonly edges: readonly IREdge[];
96
+ }
97
+ export interface EndpointTableAccess {
98
+ readonly endpoint: IRNode;
99
+ /** Precedence is `writes` > `unknown-direction` > `reads`: one undetermined
100
+ * path is enough to forbid the claim that this endpoint only reads. */
101
+ readonly direction: AccessDirection;
102
+ readonly columns: readonly string[];
103
+ readonly paths: readonly PersistencePath[];
104
+ }
105
+ export interface PersistenceReach {
106
+ readonly table: IRNode;
107
+ /** The `MODEL` nodes whose declared table is this one. More than one is
108
+ * legitimate — two entities intentionally sharing a table. */
109
+ readonly models: readonly IRNode[];
110
+ readonly endpoints: readonly EndpointTableAccess[];
111
+ readonly hopGaps: readonly PersistenceHopGap[];
112
+ /** Producers observed emitting `ASSIGNS` into a `MODEL` in this graph:
113
+ * their `READS` edges are genuine reads. */
114
+ readonly directionAwareProducers: readonly string[];
115
+ /** Producers on a path here that were never observed emitting `ASSIGNS`:
116
+ * their `READS` edges carry no direction, and are reported as such. */
117
+ readonly directionBlindProducers: readonly string[];
118
+ /** Capped at B unconditionally — see the module doc's hop 1. */
119
+ readonly reliability: ReliabilityClass;
120
+ }
121
+ export interface PersistenceReachOptions {
122
+ /** `CALLS` hops from a route to an accessor. Default 4. */
123
+ readonly maxCallDepth?: number;
124
+ /** Budget for the inbound `CALLS` walk, counted in (node, accessor) pairs
125
+ * rather than nodes — the walk re-enters a node for a new accessor, so
126
+ * pairs are what actually bound it. DEC-007's 200/1,000/5,000. Default 1,000. */
127
+ readonly budget?: number;
128
+ /** Fan-out cap per hop, and the cap on accessors read per model. Default 200. */
129
+ readonly perNodeLimit?: number;
130
+ /** Cap on `MODEL` nodes enumerated, for both the table join and the
131
+ * direction probe. Default 5,000 — the provider's own default. */
132
+ readonly modelLimit?: number;
133
+ }
134
+ /** Emitted whenever a write is reported. The distinction it draws is the one a
135
+ * reader will otherwise collapse, and collapsing it turns a provable
136
+ * statement about source into an unproven one about a running database. */
137
+ export declare const WRITE_MEANING_NOTE: string;
138
+ /**
139
+ * Every `API_ENDPOINT` that reaches `table`, and which of them write to it.
140
+ *
141
+ * `scope` must be the `IdentityScope` the graph was built with —
142
+ * `DATABASE_TABLE` is workspace-scoped, so a mismatched scope misses silently
143
+ * rather than erroring, and the miss surfaces as a `model-for-table` gap.
144
+ *
145
+ * Never throws on graph content. A node of the wrong type, a model whose
146
+ * declared table is not a string, a dangling edge — each degrades to a named
147
+ * reason in `hopGaps` or `notes`.
148
+ */
149
+ export declare function endpointsReachingTable(provider: AdjacencyProvider, table: IRNode, scope: IdentityScope, options?: PersistenceReachOptions): QueryResult<PersistenceReach>;
150
+ //# sourceMappingURL=persistence-reach.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence-reach.d.ts","sourceRoot":"","sources":["../../src/query/persistence-reach.ts"],"names":[],"mappings":"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"}