instar 1.3.830 → 1.3.832

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 (114) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +83 -12
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/AutonomousRealCheckAnnotator.d.ts +105 -0
  5. package/dist/core/AutonomousRealCheckAnnotator.d.ts.map +1 -0
  6. package/dist/core/AutonomousRealCheckAnnotator.js +122 -0
  7. package/dist/core/AutonomousRealCheckAnnotator.js.map +1 -0
  8. package/dist/core/AutonomousRunStore.d.ts +29 -0
  9. package/dist/core/AutonomousRunStore.d.ts.map +1 -1
  10. package/dist/core/AutonomousRunStore.js +38 -0
  11. package/dist/core/AutonomousRunStore.js.map +1 -1
  12. package/dist/core/BackupManager.d.ts.map +1 -1
  13. package/dist/core/BackupManager.js +47 -1
  14. package/dist/core/BackupManager.js.map +1 -1
  15. package/dist/core/CircuitBreakingIntelligenceProvider.d.ts +12 -0
  16. package/dist/core/CircuitBreakingIntelligenceProvider.d.ts.map +1 -1
  17. package/dist/core/CircuitBreakingIntelligenceProvider.js +56 -4
  18. package/dist/core/CircuitBreakingIntelligenceProvider.js.map +1 -1
  19. package/dist/core/CompletionEvaluator.d.ts +62 -2
  20. package/dist/core/CompletionEvaluator.d.ts.map +1 -1
  21. package/dist/core/CompletionEvaluator.js +124 -6
  22. package/dist/core/CompletionEvaluator.js.map +1 -1
  23. package/dist/core/DecisionQualityRecorderImpl.d.ts +192 -0
  24. package/dist/core/DecisionQualityRecorderImpl.d.ts.map +1 -0
  25. package/dist/core/DecisionQualityRecorderImpl.js +363 -0
  26. package/dist/core/DecisionQualityRecorderImpl.js.map +1 -0
  27. package/dist/core/IntelligenceRouter.d.ts +33 -0
  28. package/dist/core/IntelligenceRouter.d.ts.map +1 -1
  29. package/dist/core/IntelligenceRouter.js +240 -54
  30. package/dist/core/IntelligenceRouter.js.map +1 -1
  31. package/dist/core/JudgmentProvenanceLog.d.ts +102 -2
  32. package/dist/core/JudgmentProvenanceLog.d.ts.map +1 -1
  33. package/dist/core/JudgmentProvenanceLog.js +239 -11
  34. package/dist/core/JudgmentProvenanceLog.js.map +1 -1
  35. package/dist/core/MessagingToneGate.d.ts +30 -0
  36. package/dist/core/MessagingToneGate.d.ts.map +1 -1
  37. package/dist/core/MessagingToneGate.js +63 -0
  38. package/dist/core/MessagingToneGate.js.map +1 -1
  39. package/dist/core/PostUpdateMigrator.d.ts +11 -0
  40. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  41. package/dist/core/PostUpdateMigrator.js +32 -0
  42. package/dist/core/PostUpdateMigrator.js.map +1 -1
  43. package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
  44. package/dist/core/WriteDomainRegistry.js +24 -0
  45. package/dist/core/WriteDomainRegistry.js.map +1 -1
  46. package/dist/core/decisionGradingPass.d.ts +89 -0
  47. package/dist/core/decisionGradingPass.d.ts.map +1 -0
  48. package/dist/core/decisionGradingPass.js +188 -0
  49. package/dist/core/decisionGradingPass.js.map +1 -0
  50. package/dist/core/decisionQualityTypes.d.ts +170 -0
  51. package/dist/core/decisionQualityTypes.d.ts.map +1 -0
  52. package/dist/core/decisionQualityTypes.js +85 -0
  53. package/dist/core/decisionQualityTypes.js.map +1 -0
  54. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  55. package/dist/core/devGatedFeatures.js +6 -0
  56. package/dist/core/devGatedFeatures.js.map +1 -1
  57. package/dist/core/machineCoherenceManifest.d.ts.map +1 -1
  58. package/dist/core/machineCoherenceManifest.js +4 -0
  59. package/dist/core/machineCoherenceManifest.js.map +1 -1
  60. package/dist/core/types.d.ts +69 -4
  61. package/dist/core/types.d.ts.map +1 -1
  62. package/dist/core/types.js.map +1 -1
  63. package/dist/data/provenanceCoverage.d.ts +156 -0
  64. package/dist/data/provenanceCoverage.d.ts.map +1 -0
  65. package/dist/data/provenanceCoverage.js +674 -0
  66. package/dist/data/provenanceCoverage.js.map +1 -0
  67. package/dist/monitoring/ExternalHogDecisionStore.d.ts +256 -0
  68. package/dist/monitoring/ExternalHogDecisionStore.d.ts.map +1 -0
  69. package/dist/monitoring/ExternalHogDecisionStore.js +481 -0
  70. package/dist/monitoring/ExternalHogDecisionStore.js.map +1 -0
  71. package/dist/monitoring/ExternalHogRealAdapters.d.ts +6 -2
  72. package/dist/monitoring/ExternalHogRealAdapters.d.ts.map +1 -1
  73. package/dist/monitoring/ExternalHogRealAdapters.js +2 -2
  74. package/dist/monitoring/ExternalHogRealAdapters.js.map +1 -1
  75. package/dist/monitoring/ExternalHogScanTick.d.ts +95 -3
  76. package/dist/monitoring/ExternalHogScanTick.d.ts.map +1 -1
  77. package/dist/monitoring/ExternalHogScanTick.js +102 -9
  78. package/dist/monitoring/ExternalHogScanTick.js.map +1 -1
  79. package/dist/monitoring/ExternalHogSentinel.d.ts +71 -3
  80. package/dist/monitoring/ExternalHogSentinel.d.ts.map +1 -1
  81. package/dist/monitoring/ExternalHogSentinel.js +126 -2
  82. package/dist/monitoring/ExternalHogSentinel.js.map +1 -1
  83. package/dist/monitoring/ExternalHogServerPrimitives.d.ts +10 -2
  84. package/dist/monitoring/ExternalHogServerPrimitives.d.ts.map +1 -1
  85. package/dist/monitoring/ExternalHogServerPrimitives.js +1 -1
  86. package/dist/monitoring/ExternalHogServerPrimitives.js.map +1 -1
  87. package/dist/monitoring/FeatureMetricsLedger.d.ts +304 -0
  88. package/dist/monitoring/FeatureMetricsLedger.d.ts.map +1 -1
  89. package/dist/monitoring/FeatureMetricsLedger.js +731 -0
  90. package/dist/monitoring/FeatureMetricsLedger.js.map +1 -1
  91. package/dist/scaffold/templates.d.ts.map +1 -1
  92. package/dist/scaffold/templates.js +2 -1
  93. package/dist/scaffold/templates.js.map +1 -1
  94. package/dist/server/AgentServer.d.ts.map +1 -1
  95. package/dist/server/AgentServer.js +55 -1
  96. package/dist/server/AgentServer.js.map +1 -1
  97. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  98. package/dist/server/CapabilityIndex.js +15 -1
  99. package/dist/server/CapabilityIndex.js.map +1 -1
  100. package/dist/server/fileRoutes.d.ts.map +1 -1
  101. package/dist/server/fileRoutes.js +9 -0
  102. package/dist/server/fileRoutes.js.map +1 -1
  103. package/dist/server/routes.d.ts.map +1 -1
  104. package/dist/server/routes.js +334 -5
  105. package/dist/server/routes.js.map +1 -1
  106. package/package.json +1 -1
  107. package/src/data/builtin-manifest.json +65 -65
  108. package/src/data/provenanceCoverage.ts +850 -0
  109. package/src/scaffold/templates/jobs/instar/llm-decision-grading.md +32 -0
  110. package/src/scaffold/templates.ts +2 -1
  111. package/upgrades/1.3.831.md +30 -0
  112. package/upgrades/1.3.832.md +22 -0
  113. package/upgrades/side-effects/llm-decision-quality-meter.md +95 -0
  114. package/upgrades/side-effects/messaging-tone-gate-provenance-enrollment.md +68 -0
@@ -1 +1 @@
1
- {"version":3,"file":"WriteDomainRegistry.d.ts","sourceRoot":"","sources":["../../src/core/WriteDomainRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WriteDomainRegistry.d.ts","sourceRoot":"","sources":["../../src/core/WriteDomainRegistry.ts"],"names":[],"mappings":"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"}
@@ -302,6 +302,30 @@ export function buildWriteDomainRegistry(opts) {
302
302
  };
303
303
  reg.add({ kind: 'route', method: 'POST', pathPrefix: '/external-hog/arm', domain: 'machine-local', story: externalHogArmStory });
304
304
  reg.add({ kind: 'route', method: 'POST', pathPrefix: '/external-hog/disarm', domain: 'machine-local', story: externalHogArmStory });
305
+ // ── Decision-Quality deterministic grading pass (llm-decision-quality-meter §5.5, §Multi-machine) ──
306
+ // Machine-local by construction: POST /decision-quality/grade-pass upserts grade
307
+ // rows for THIS machine's decision points into the per-machine feature-metrics
308
+ // SQLite (state/server-data/feature-metrics.db — decision_quality/decision_outcomes/
309
+ // rollup/cursor tables). It inherits the RATIFIED machine-local feature_metrics
310
+ // posture (spec §Multi-machine: "machine-local SQLite observability; per-machine
311
+ // spend/activity is the semantic unit"); the grading job runs per machine over its
312
+ // OWN local rows. Logical convergence is proxied-on-read — GET /decision-quality?scope=pool
313
+ // merges MACHINE-TAGGED rows across peers, summed nowhere silently. The backing store
314
+ // is a binary SQLite .db under the generated .instar/ server-data dir — git-sync-excluded
315
+ // on both counts (FileClassifier BINARY_EXTENSIONS + the .instar/server-data generated
316
+ // pattern), mirroring the topic-memory.db precedent above.
317
+ reg.add({
318
+ kind: 'route',
319
+ method: 'POST',
320
+ pathPrefix: '/decision-quality/grade-pass',
321
+ domain: 'machine-local',
322
+ story: {
323
+ logical: 'pool-scope-read-merge',
324
+ onSharedGitSyncedPath: true,
325
+ fileLevel: 'git-sync-excluded',
326
+ note: 'grades upsert into the per-machine feature-metrics SQLite (decision_quality/decision_outcomes tables); GET /decision-quality?scope=pool merges machine-tagged rows across peers (summed nowhere silently); the .db is git-sync-excluded via FileClassifier BINARY_EXTENSIONS + the .instar/server-data generated pattern',
327
+ },
328
+ });
305
329
  return reg;
306
330
  }
307
331
  //# sourceMappingURL=WriteDomainRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WriteDomainRegistry.js","sourceRoot":"","sources":["../../src/core/WriteDomainRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WriteDomainRegistry.js","sourceRoot":"","sources":["../../src/core/WriteDomainRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * decisionGradingPass — the deterministic grading pass driven by
3
+ * POST /decision-quality/grade-pass (llm-decision-quality-meter §5.5).
4
+ *
5
+ * DETERMINISTIC-ONLY (FD11): the LLM evidence-interpreter rung ships NO code.
6
+ * This pass drives the ONE window-close rule the grading JOB owns —
7
+ * `hog-sustained-right-v1` (owningComponent 'DecisionGrading') — over the
8
+ * durable ExternalHogDecisionStore, plus the durable per-decision-point cursor
9
+ * bookkeeping (keyset (ts, correlation_id), bounded per run, idempotent grade
10
+ * upserts, P19 backoff). Every OTHER evidence rule fires at its own owner (the
11
+ * sentinel's scan-tick / grade-on-supersede for respawn-wrong + leave-recurrence;
12
+ * the completion realcheck arm) — never here.
13
+ *
14
+ * Idempotent BY CONSTRUCTION: grades upsert through the §5.4 annotate chokepoint
15
+ * keyed on (correlationId × gradedBy), so a re-run — a concurrent job-tick +
16
+ * operator curl — converges, never multiplies (§5.5).
17
+ *
18
+ * Cursor semantics (low-water mark over a UNIFORM window): a decision younger
19
+ * than the evidence window is still PENDING (its window-close verdict has not
20
+ * matured). Because every hog decision shares the same window, an older pending
21
+ * row implies every later row is pending too — so the pass stops advancing at
22
+ * the oldest un-terminal row and re-checks it (with P19 backoff) next tick.
23
+ * A row is TERMINAL — the cursor advances past it — once it is graded right/wrong
24
+ * by ANY grader OR its window has closed and no `right` applies (it reads as
25
+ * `unknown`/`expired`). No LLM tokens are spent (deterministic predicates only).
26
+ */
27
+ import { type ExternalHogDecisionStore } from '../monitoring/ExternalHogDecisionStore.js';
28
+ import type { FeatureMetricsLedger } from '../monitoring/FeatureMetricsLedger.js';
29
+ import type { DecisionOutcomeAnnotationInput, DecisionOutcomeAnnotationResult } from './DecisionQualityRecorderImpl.js';
30
+ /** The DecisionGrading annotator identity — the `hog-sustained-right-v1`
31
+ * registered owner (§5.4.2). The annotate chokepoint rejects any other
32
+ * gradedBy.component for this rule, so this constant is load-bearing. */
33
+ export declare const DECISION_GRADING_COMPONENT = "DecisionGrading";
34
+ export interface DecisionGradingPassDeps {
35
+ /** The quality substrate (decision_quality/outcomes/rollup/cursor tables). */
36
+ ledger: FeatureMetricsLedger;
37
+ /** The durable hog decision store, or null when the sentinel has not wired it
38
+ * (the hog point then grades nothing this build — honest). */
39
+ hogStore: ExternalHogDecisionStore | null;
40
+ /** The §5.4 annotate chokepoint (production: `annotateDecisionOutcome`). */
41
+ annotate: (a: DecisionOutcomeAnnotationInput) => DecisionOutcomeAnnotationResult;
42
+ /** Global per-run row ceiling (provenance.quality.maxDecisionsPerPass, default 200). */
43
+ maxDecisionsPerPass: number;
44
+ /** The hog evidence window in ms — a decision younger than this is PENDING
45
+ * (window open). Provenance.quality.evidenceWindowHours (inline default 6h). */
46
+ evidenceWindowMs: number;
47
+ /** Injected clock (§Testing clock discipline — no bare Date.now() in the walk). */
48
+ now: () => number;
49
+ }
50
+ export interface DecisionGradingPassResult {
51
+ /** Grades that landed DURABLY this pass (dry-run/suppressed writes count 0). */
52
+ graded: number;
53
+ /** graded-by-rule tally (the job template's sanity-check surface). */
54
+ byRule: Record<string, number>;
55
+ /** decisionPoint → the advanced (ts, correlation_id) boundary. */
56
+ cursors: Record<string, {
57
+ ts: number;
58
+ correlationId: string;
59
+ }>;
60
+ }
61
+ /**
62
+ * The DecisionGrading-owned window-close points this pass drives (§5.5). ONE
63
+ * today (`hog-sustained-right-v1` over `external-hog-kill-leave`); adding another
64
+ * appends its point id here. The per-point sub-budget (`perPointSubBudget`)
65
+ * divides the GLOBAL row budget across THIS set round-robin so no single point
66
+ * can consume a whole pass and starve a sibling's maturing evidence window
67
+ * (LES r6 / §5.5 — the fairness bound the census `SUBBUDGET_IMPLEMENTED` flag
68
+ * asserts is in place before a third ENROLLED customer). MessagingToneGate (the
69
+ * third enrolled customer) is graded by its own evidence source, not this pass —
70
+ * so it is not listed here, but its enrollment is what tripped the structural
71
+ * requirement that this sub-budget exist.
72
+ */
73
+ export declare const GRADE_PASS_POINTS: ReadonlyArray<string>;
74
+ /**
75
+ * The per-point row slice of the GLOBAL grading budget (§5.5 fairness). Divides
76
+ * `globalBudget` evenly across `pointCount` grade-pass-driven points, floored at
77
+ * 1 so every point always makes some progress. With a single point (today) this
78
+ * returns the full budget — byte-identical to the pre-sub-budget behavior — and
79
+ * a second high-volume point can no longer starve the first: each gets ⌊N/2⌋.
80
+ */
81
+ export declare function perPointSubBudget(globalBudget: number, pointCount: number): number;
82
+ /**
83
+ * Run one deterministic grading pass. See the module doc for cursor semantics.
84
+ * The GLOBAL row budget is split per-point (`perPointSubBudget`) across
85
+ * `GRADE_PASS_POINTS` so a high-volume point cannot consume a whole pass and
86
+ * starve a sibling — the §5.5 fairness sub-budget (`SUBBUDGET_IMPLEMENTED`).
87
+ */
88
+ export declare function runDecisionGradingPass(deps: DecisionGradingPassDeps): DecisionGradingPassResult;
89
+ //# sourceMappingURL=decisionGradingPass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisionGradingPass.d.ts","sourceRoot":"","sources":["../../src/core/decisionGradingPass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAGL,KAAK,wBAAwB,EAE9B,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AAIxH;;0EAE0E;AAC1E,eAAO,MAAM,0BAA0B,oBAAoB,CAAC;AAO5D,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,MAAM,EAAE,oBAAoB,CAAC;IAC7B;mEAC+D;IAC/D,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC1C,4EAA4E;IAC5E,QAAQ,EAAE,CAAC,CAAC,EAAE,8BAA8B,KAAK,+BAA+B,CAAC;IACjF,wFAAwF;IACxF,mBAAmB,EAAE,MAAM,CAAC;IAC5B;qFACiF;IACjF,gBAAgB,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAgC,CAAC;AAErF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGlF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,uBAAuB,GAAG,yBAAyB,CAe/F"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * decisionGradingPass — the deterministic grading pass driven by
3
+ * POST /decision-quality/grade-pass (llm-decision-quality-meter §5.5).
4
+ *
5
+ * DETERMINISTIC-ONLY (FD11): the LLM evidence-interpreter rung ships NO code.
6
+ * This pass drives the ONE window-close rule the grading JOB owns —
7
+ * `hog-sustained-right-v1` (owningComponent 'DecisionGrading') — over the
8
+ * durable ExternalHogDecisionStore, plus the durable per-decision-point cursor
9
+ * bookkeeping (keyset (ts, correlation_id), bounded per run, idempotent grade
10
+ * upserts, P19 backoff). Every OTHER evidence rule fires at its own owner (the
11
+ * sentinel's scan-tick / grade-on-supersede for respawn-wrong + leave-recurrence;
12
+ * the completion realcheck arm) — never here.
13
+ *
14
+ * Idempotent BY CONSTRUCTION: grades upsert through the §5.4 annotate chokepoint
15
+ * keyed on (correlationId × gradedBy), so a re-run — a concurrent job-tick +
16
+ * operator curl — converges, never multiplies (§5.5).
17
+ *
18
+ * Cursor semantics (low-water mark over a UNIFORM window): a decision younger
19
+ * than the evidence window is still PENDING (its window-close verdict has not
20
+ * matured). Because every hog decision shares the same window, an older pending
21
+ * row implies every later row is pending too — so the pass stops advancing at
22
+ * the oldest un-terminal row and re-checks it (with P19 backoff) next tick.
23
+ * A row is TERMINAL — the cursor advances past it — once it is graded right/wrong
24
+ * by ANY grader OR its window has closed and no `right` applies (it reads as
25
+ * `unknown`/`expired`). No LLM tokens are spent (deterministic predicates only).
26
+ */
27
+ import { DP_EXTERNAL_HOG_KILL_LEAVE } from '../data/provenanceCoverage.js';
28
+ import { HOG_SUSTAINED_RIGHT_RULE_ID, evaluateHogSustainedRight, } from '../monitoring/ExternalHogDecisionStore.js';
29
+ const HOUR_MS = 60 * 60 * 1000;
30
+ /** The DecisionGrading annotator identity — the `hog-sustained-right-v1`
31
+ * registered owner (§5.4.2). The annotate chokepoint rejects any other
32
+ * gradedBy.component for this rule, so this constant is load-bearing. */
33
+ export const DECISION_GRADING_COMPONENT = 'DecisionGrading';
34
+ /** P19 backoff for a point that made no progress (its low-water row is still
35
+ * within its window): base × 2^n, capped — never a busy re-check loop. */
36
+ const BACKOFF_BASE_MS = 5 * 60 * 1000;
37
+ const BACKOFF_CAP_MS = 60 * 60 * 1000;
38
+ /**
39
+ * The DecisionGrading-owned window-close points this pass drives (§5.5). ONE
40
+ * today (`hog-sustained-right-v1` over `external-hog-kill-leave`); adding another
41
+ * appends its point id here. The per-point sub-budget (`perPointSubBudget`)
42
+ * divides the GLOBAL row budget across THIS set round-robin so no single point
43
+ * can consume a whole pass and starve a sibling's maturing evidence window
44
+ * (LES r6 / §5.5 — the fairness bound the census `SUBBUDGET_IMPLEMENTED` flag
45
+ * asserts is in place before a third ENROLLED customer). MessagingToneGate (the
46
+ * third enrolled customer) is graded by its own evidence source, not this pass —
47
+ * so it is not listed here, but its enrollment is what tripped the structural
48
+ * requirement that this sub-budget exist.
49
+ */
50
+ export const GRADE_PASS_POINTS = [DP_EXTERNAL_HOG_KILL_LEAVE];
51
+ /**
52
+ * The per-point row slice of the GLOBAL grading budget (§5.5 fairness). Divides
53
+ * `globalBudget` evenly across `pointCount` grade-pass-driven points, floored at
54
+ * 1 so every point always makes some progress. With a single point (today) this
55
+ * returns the full budget — byte-identical to the pre-sub-budget behavior — and
56
+ * a second high-volume point can no longer starve the first: each gets ⌊N/2⌋.
57
+ */
58
+ export function perPointSubBudget(globalBudget, pointCount) {
59
+ const n = Math.max(1, Math.floor(pointCount) || 1);
60
+ return Math.max(1, Math.floor(globalBudget / n));
61
+ }
62
+ /**
63
+ * Run one deterministic grading pass. See the module doc for cursor semantics.
64
+ * The GLOBAL row budget is split per-point (`perPointSubBudget`) across
65
+ * `GRADE_PASS_POINTS` so a high-volume point cannot consume a whole pass and
66
+ * starve a sibling — the §5.5 fairness sub-budget (`SUBBUDGET_IMPLEMENTED`).
67
+ */
68
+ export function runDecisionGradingPass(deps) {
69
+ const { ledger, hogStore, annotate, now } = deps;
70
+ const globalBudget = Math.max(1, Math.min(10_000, Math.floor(deps.maxDecisionsPerPass) || 200));
71
+ const evidenceWindowMs = deps.evidenceWindowMs > 0 ? deps.evidenceWindowMs : 6 * HOUR_MS;
72
+ const result = { graded: 0, byRule: {}, cursors: {} };
73
+ const nowMs = now();
74
+ // §5.5 fairness: each grade-pass-driven point gets an even slice of the global
75
+ // budget (round-robin over cursors), so no point can consume a whole pass.
76
+ const subBudget = perPointSubBudget(globalBudget, GRADE_PASS_POINTS.length);
77
+ for (const point of GRADE_PASS_POINTS) {
78
+ gradeOnePoint({ ledger, hogStore, annotate, point, subBudget, evidenceWindowMs, nowMs, result });
79
+ }
80
+ return result;
81
+ }
82
+ /**
83
+ * Grade one point's matured evidence within its own sub-budget slice, writing
84
+ * its advanced cursor + P19 backoff bookkeeping. Extracted from the single-point
85
+ * body so the sub-budget can drive N points fairly (§5.5). Behavior for the hog
86
+ * point is unchanged from the pre-sub-budget single-point walk.
87
+ */
88
+ function gradeOnePoint(args) {
89
+ const { ledger, hogStore, annotate, point, subBudget, evidenceWindowMs, nowMs, result } = args;
90
+ const cursor = ledger.getGradingCursor(point) ?? {
91
+ decisionPoint: point,
92
+ cursorTs: 0,
93
+ cursorCorrelationId: '',
94
+ nextRecheckTs: null,
95
+ attempts: 0,
96
+ updatedAt: 0,
97
+ };
98
+ // P19 backoff: while a point is backing off, no fresh evidence can have
99
+ // matured — skip it entirely this pass (report the frozen boundary honestly).
100
+ if (cursor.nextRecheckTs !== null && nowMs < cursor.nextRecheckTs) {
101
+ result.cursors[point] = { ts: cursor.cursorTs, correlationId: cursor.cursorCorrelationId };
102
+ return;
103
+ }
104
+ // No durable evidence source wired (the sentinel store is not constructed) →
105
+ // nothing to grade; leave the cursor untouched.
106
+ if (!hogStore) {
107
+ result.cursors[point] = { ts: cursor.cursorTs, correlationId: cursor.cursorCorrelationId };
108
+ return;
109
+ }
110
+ // correlationId → hog record (bounded: the store retains a handful of slots).
111
+ const byCorr = new Map();
112
+ for (const { record } of hogStore.list()) {
113
+ if (record.correlationId)
114
+ byCorr.set(record.correlationId, record);
115
+ }
116
+ const rows = ledger.walkDecisionsForGrading(point, cursor.cursorTs, cursor.cursorCorrelationId, subBudget);
117
+ let cursorTs = cursor.cursorTs;
118
+ let cursorCorr = cursor.cursorCorrelationId;
119
+ let sawPending = false;
120
+ for (const row of rows) {
121
+ // Already terminally graded (respawn-wrong at the sentinel, or a prior
122
+ // pass' right): advance past it.
123
+ const winning = ledger.getWinningGrades([row.correlationId])[0];
124
+ if (winning && (winning.grade === 'right' || winning.grade === 'wrong')) {
125
+ cursorTs = row.ts;
126
+ cursorCorr = row.correlationId;
127
+ continue;
128
+ }
129
+ const rec = byCorr.get(row.correlationId);
130
+ const decisionAtMs = rec?.atMs ?? row.ts;
131
+ const age = nowMs - decisionAtMs;
132
+ // Within the evidence window → the window-close verdict has not matured.
133
+ // Uniform windows ⇒ every later row is pending too: stop (low-water mark).
134
+ if (age <= evidenceWindowMs) {
135
+ sawPending = true;
136
+ break;
137
+ }
138
+ // Window CLOSED — resolve now.
139
+ if (rec) {
140
+ const grade = evaluateHogSustainedRight(rec, nowMs);
141
+ if (grade === 'right') {
142
+ const res = annotate({
143
+ correlationId: row.correlationId,
144
+ ruleId: HOG_SUSTAINED_RIGHT_RULE_ID,
145
+ gradedBy: { component: DECISION_GRADING_COMPONENT },
146
+ grade: 'right',
147
+ decisionPoint: point,
148
+ evidence: { rule: HOG_SUSTAINED_RIGHT_RULE_ID, windowMs: rec.effectiveWindowMs, sustainedNoReflag: true },
149
+ ts: nowMs,
150
+ });
151
+ if (res.applied) {
152
+ result.graded++;
153
+ result.byRule[HOG_SUSTAINED_RIGHT_RULE_ID] = (result.byRule[HOG_SUSTAINED_RIGHT_RULE_ID] ?? 0) + 1;
154
+ cursorTs = row.ts;
155
+ cursorCorr = row.correlationId;
156
+ continue;
157
+ }
158
+ // dry-run / disabled / rejected: the durable write was suppressed —
159
+ // treat as PENDING (do NOT advance) so a later dryRun:false flip grades
160
+ // it rather than skipping it forever behind an advanced cursor.
161
+ sawPending = true;
162
+ break;
163
+ }
164
+ // Window closed and `right` does not apply (re-flagged / owner alive /
165
+ // un-orderable) → terminal-unknown (reads as unknown/expired); advance.
166
+ cursorTs = row.ts;
167
+ cursorCorr = row.correlationId;
168
+ continue;
169
+ }
170
+ // No hog record AND the window closed → no evidence will arrive → terminal.
171
+ cursorTs = row.ts;
172
+ cursorCorr = row.correlationId;
173
+ }
174
+ // Cursor + P19 backoff bookkeeping.
175
+ const advanced = cursorTs !== cursor.cursorTs || cursorCorr !== cursor.cursorCorrelationId;
176
+ let nextRecheckTs = null;
177
+ let attempts = 0;
178
+ if (sawPending && !advanced) {
179
+ // No progress AND a pending low-water row: back off before re-checking.
180
+ attempts = (cursor.attempts ?? 0) + 1;
181
+ nextRecheckTs = nowMs + Math.min(BACKOFF_CAP_MS, BACKOFF_BASE_MS * 2 ** Math.min(attempts - 1, 4));
182
+ }
183
+ // (A full page that fully resolved leaves nextRecheckTs null so the next pass
184
+ // continues immediately from the advanced boundary.)
185
+ ledger.setGradingCursor(point, { cursorTs, cursorCorrelationId: cursorCorr, nextRecheckTs, attempts });
186
+ result.cursors[point] = { ts: cursorTs, correlationId: cursorCorr };
187
+ }
188
+ //# sourceMappingURL=decisionGradingPass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisionGradingPass.js","sourceRoot":"","sources":["../../src/core/decisionGradingPass.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * decisionQualityTypes — the correlation spine of the LLM-Decision Quality Meter
3
+ * (docs/specs/llm-decision-quality-meter.md §5.1; FD1/FD7/FD8).
4
+ *
5
+ * Layer A (always-on, zero callsite edits): `IntelligenceRouter.evaluate()` mints a
6
+ * per-DECISION correlation id at entry on a router-INTERNAL clone of the options
7
+ * object; the id threads down through every swap attempt of the same decision, and
8
+ * the funnel wrapper (`CircuitBreakingIntelligenceProvider`) stamps it into every
9
+ * `kind:'llm'` metric row's `verdict_id`. A funnel-wrapped provider used DIRECTLY
10
+ * (router bypassed) reaches the breaker without the router's per-call mint marker
11
+ * and gets a local `b-` mint — so no llm row is ever uncorrelated, and
12
+ * provenance-of-mint is derivable from the id prefix alone.
13
+ *
14
+ * This module is deliberately import-free of the rest of core (only node:crypto),
15
+ * so BOTH the router and the breaker can share the symbols/mints/counters without
16
+ * a layering cycle. The recorder singleton follows the setFeatureMetricsRecorder
17
+ * pattern (injected once at AgentServer construction; null = clean no-op).
18
+ */
19
+ /** The router-minted correlation id, attached to the router-INTERNAL options clone. */
20
+ export declare const DECISION_CORRELATION_ID: unique symbol;
21
+ /**
22
+ * The per-call single-use mint marker (§5.1.2). The breaker honors an inbound
23
+ * correlation id ONLY when this marker is present, and CONSUMES it (deletes the
24
+ * property from the received object) on acceptance — a reused options object
25
+ * cannot replay a stale marked id into a later decision's chain.
26
+ */
27
+ export declare const DECISION_MINT_MARKER: unique symbol;
28
+ /**
29
+ * The additive `options.provenance` enrollment block an enrolling callsite
30
+ * supplies (Layer B — opt-in, per decision point). The block is CONSUMED by the
31
+ * seam: the router strips it from every per-attempt option spread, and the
32
+ * breaker ALSO strips it before `inner.evaluate` — it can never reach an inner
33
+ * adapter on any path (§5.1.6).
34
+ */
35
+ export interface DecisionProvenanceBlock {
36
+ /**
37
+ * Stable decision-point id — IMPORTED from the census module (§5.6 typed
38
+ * registration; the settlement write additionally validates membership and
39
+ * counts unknowns in later phases).
40
+ */
41
+ decisionPoint: string;
42
+ /**
43
+ * Decision context, built via the decision point's content-class envelope
44
+ * BUILDER (§5.2) — callsites do not hand-roll envelopes. Scrubbed + clamped
45
+ * at the settlement write.
46
+ */
47
+ context?: Record<string, unknown>;
48
+ /** The bounded action space shown to the model — static, code-authored, enum-like labels (§5.2 clamps). */
49
+ optionsPresented?: string[];
50
+ /** Prompt identity — a hash/version tag (charset/length-clamped at write, §5.2). */
51
+ promptId?: string;
52
+ /**
53
+ * Fired by the ROUTER synchronously at MINT (entry, before the first attempt),
54
+ * exactly once per `evaluate()` invocation, INCLUDING decisions that
55
+ * subsequently throw — never after the returned promise settles. The router
56
+ * invokes it inside try/catch: a throwing callback is caught + counted and
57
+ * never propagates (the documented `classifyVerdict` containment contract).
58
+ * A router-BYPASSED call never fires it (the breaker strips the block).
59
+ */
60
+ onCorrelationId?: (id: string) => void;
61
+ }
62
+ /** Usage/model captured per attempt via fresh wrapper closures (per-attempt scoping). */
63
+ export interface DecisionAttemptCapture {
64
+ usage?: {
65
+ inputTokens: number;
66
+ outputTokens: number;
67
+ cachedTokens?: number;
68
+ };
69
+ resolved?: {
70
+ model: string;
71
+ framework?: string;
72
+ };
73
+ }
74
+ /**
75
+ * One settled decision, handed to the recorder at EVERY `evaluate()` exit —
76
+ * ladder success, ladder-final failure, the `!cfg` early return, the
77
+ * provider-unavailable degrade arm, the `enforcedNoRoute` throw, the
78
+ * `RouterFailClosedError` rethrow, and the fallback-`'none'` throw. Exactly ONE
79
+ * settlement per router invocation (write-once latch).
80
+ */
81
+ export interface DecisionSettlement {
82
+ /** The router-minted correlation id (`d-<machineId8>-<uuid>` / `d-<uuid>`). */
83
+ correlationId: string;
84
+ /** Router settlements are always router mints (breaker `b-` mints never settle — census-pending by rule). */
85
+ mintedBy: 'router';
86
+ /** Whether the call carried an `options.provenance` enrollment block (Layer B). */
87
+ enrolled: boolean;
88
+ /** The CONSUMED enrollment block (callback omitted) — present iff enrolled. */
89
+ provenance?: {
90
+ decisionPoint: string;
91
+ context?: Record<string, unknown>;
92
+ optionsPresented?: string[];
93
+ promptId?: string;
94
+ };
95
+ /**
96
+ * Usage/model/door of the attempt whose promise the router actually returned
97
+ * (§5.1.5 per-attempt capture scoping) — rejected attempts and
98
+ * withSwapTimeout-abandoned late callbacks never contribute. Empty on an
99
+ * errored settlement where no attempt resolved.
100
+ */
101
+ settledAttempt: {
102
+ model?: string;
103
+ framework?: string;
104
+ usage?: {
105
+ inputTokens: number;
106
+ outputTokens: number;
107
+ cachedTokens?: number;
108
+ };
109
+ };
110
+ /**
111
+ * `'fired'`/`'noop'` (from `classifyVerdict` where implemented) or
112
+ * `'unclassified'` on a successful settlement; the fixed marker `'<errored>'`
113
+ * on any throwing exit (so failure-swap-ladder quality is itself gradeable).
114
+ */
115
+ verdictClass: string;
116
+ /** The error class name, set only when `verdictClass === '<errored>'`. */
117
+ errorClass?: string;
118
+ /**
119
+ * A caller-supplied `classifyVerdict.verdictId`, RELOCATED here (FD8): it no
120
+ * longer lands in `feature_metrics.verdict_id` on llm rows. Present only when
121
+ * enrolled (destined for the provenance row's context as `callerRef`);
122
+ * dropped otherwise.
123
+ */
124
+ callerRef?: string;
125
+ /**
126
+ * Head of the raw model response (§5.1.5): present ONLY when enrolled AND
127
+ * the settlement classified `'unclassified'` (no classifier / classifier
128
+ * threw). Bounded at source; the seam scrubs + clamps it to 300 chars into
129
+ * the provenance row's `context` — it NEVER lands in the served `decision`
130
+ * field.
131
+ */
132
+ rawResponseHead?: string;
133
+ /** Wall-clock timestamps: the mint (evaluate entry) and the settlement (exit). */
134
+ mintedAtMs: number;
135
+ settledAtMs: number;
136
+ }
137
+ /**
138
+ * The decision-quality recorder the router's settlement seam writes to. The
139
+ * concrete substrate (SQLite `decision_quality` + provenance JSONL, later
140
+ * phases) is injected at AgentServer construction via
141
+ * `setDecisionQualityRecorder` — the setFeatureMetricsRecorder pattern. Null =
142
+ * no recording (CLI commands without a server), a clean no-op. A recorder MUST
143
+ * never throw into the decision path; the router additionally isolates the
144
+ * call defensively — observability must not break what it observes.
145
+ */
146
+ export interface DecisionQualityRecorder {
147
+ recordSettlement(settlement: DecisionSettlement): void;
148
+ }
149
+ export declare function setDecisionQualityRecorder(recorder: DecisionQualityRecorder | null): void;
150
+ export declare function getDecisionQualityRecorder(): DecisionQualityRecorder | null;
151
+ export declare function setDecisionQualityMachineId(machineId: string | null | undefined): void;
152
+ /** Router mint: `d-<machineId8>-<uuid>` on multi-machine installs, else `d-<uuid>` (FD1 — uuid-based, never time+seq). */
153
+ export declare function mintRouterCorrelationId(): string;
154
+ /** Breaker-floor mint for router-bypassing calls: `b-<machineId8>-<uuid>` / `b-<uuid>` (§5.1.2). */
155
+ export declare function mintBreakerCorrelationId(): string;
156
+ export interface DecisionQualityCounters {
157
+ /** onCorrelationId callbacks that threw (caught + contained; the decision call succeeded). */
158
+ onCorrelationIdThrows: number;
159
+ /** `options.provenance` blocks stripped at the BREAKER (a router-bypassed carrier — census-pending by rule). */
160
+ provenanceStrippedAtBreaker: number;
161
+ /** Inbound correlation ids DISCARDED at the breaker (unmarked / marker-less / marker already consumed). */
162
+ inboundCorrelationIdDiscarded: number;
163
+ }
164
+ export declare function bumpOnCorrelationIdThrow(): void;
165
+ export declare function bumpProvenanceStrippedAtBreaker(): void;
166
+ export declare function bumpInboundCorrelationIdDiscarded(): void;
167
+ export declare function getDecisionQualityCounters(): Readonly<DecisionQualityCounters>;
168
+ /** Test-only seam (the _resetUnlabeledEmissionForTest precedent). */
169
+ export declare function _resetDecisionQualityForTest(): void;
170
+ //# sourceMappingURL=decisionQualityTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisionQualityTypes.d.ts","sourceRoot":"","sources":["../../src/core/decisionQualityTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAaH,uFAAuF;AACvF,eAAO,MAAM,uBAAuB,EAAE,OAAO,MAAyD,CAAC;AAEvG;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,MAAsD,CAAC;AAIjG;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,2GAA2G;IAC3G,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAID,yFAAyF;AACzF,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7E,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,aAAa,EAAE,MAAM,CAAC;IACtB,6GAA6G;IAC7G,QAAQ,EAAE,QAAQ,CAAC;IACnB,mFAAmF;IACnF,QAAQ,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,UAAU,CAAC,EAAE;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF;;;;;OAKG;IACH,cAAc,EAAE;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9E,CAAC;IACF;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACxD;AAKD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,GAAG,IAAI,CAEzF;AACD,wBAAgB,0BAA0B,IAAI,uBAAuB,GAAG,IAAI,CAE3E;AAMD,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAEtF;AAED,0HAA0H;AAC1H,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,oGAAoG;AACpG,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAID,MAAM,WAAW,uBAAuB;IACtC,8FAA8F;IAC9F,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gHAAgH;IAChH,2BAA2B,EAAE,MAAM,CAAC;IACpC,2GAA2G;IAC3G,6BAA6B,EAAE,MAAM,CAAC;CACvC;AAQD,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AACD,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AACD,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AACD,wBAAgB,0BAA0B,IAAI,QAAQ,CAAC,uBAAuB,CAAC,CAE9E;AAED,qEAAqE;AACrE,wBAAgB,4BAA4B,IAAI,IAAI,CAMnD"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * decisionQualityTypes — the correlation spine of the LLM-Decision Quality Meter
3
+ * (docs/specs/llm-decision-quality-meter.md §5.1; FD1/FD7/FD8).
4
+ *
5
+ * Layer A (always-on, zero callsite edits): `IntelligenceRouter.evaluate()` mints a
6
+ * per-DECISION correlation id at entry on a router-INTERNAL clone of the options
7
+ * object; the id threads down through every swap attempt of the same decision, and
8
+ * the funnel wrapper (`CircuitBreakingIntelligenceProvider`) stamps it into every
9
+ * `kind:'llm'` metric row's `verdict_id`. A funnel-wrapped provider used DIRECTLY
10
+ * (router bypassed) reaches the breaker without the router's per-call mint marker
11
+ * and gets a local `b-` mint — so no llm row is ever uncorrelated, and
12
+ * provenance-of-mint is derivable from the id prefix alone.
13
+ *
14
+ * This module is deliberately import-free of the rest of core (only node:crypto),
15
+ * so BOTH the router and the breaker can share the symbols/mints/counters without
16
+ * a layering cycle. The recorder singleton follows the setFeatureMetricsRecorder
17
+ * pattern (injected once at AgentServer construction; null = clean no-op).
18
+ */
19
+ import { randomUUID } from 'node:crypto';
20
+ // ── Correlation plumbing symbols (router → breaker, internal-only) ──────────
21
+ //
22
+ // Symbol-keyed + enumerable ON PURPOSE: the router's per-attempt option objects
23
+ // are built by object spread, which copies own enumerable symbol-keyed
24
+ // properties — so every fresh attempt object carries its OWN copy of the mint
25
+ // marker, while `JSON.stringify`/`Object.keys` (CLI adapters, logs) never see
26
+ // it. Plain Symbols (not Symbol.for): a second module instance failing to
27
+ // recognize the marker degrades safely to a `b-` mint, never to id injection.
28
+ /** The router-minted correlation id, attached to the router-INTERNAL options clone. */
29
+ export const DECISION_CORRELATION_ID = Symbol('instar.decision-quality.correlation-id');
30
+ /**
31
+ * The per-call single-use mint marker (§5.1.2). The breaker honors an inbound
32
+ * correlation id ONLY when this marker is present, and CONSUMES it (deletes the
33
+ * property from the received object) on acceptance — a reused options object
34
+ * cannot replay a stale marked id into a later decision's chain.
35
+ */
36
+ export const DECISION_MINT_MARKER = Symbol('instar.decision-quality.mint-marker');
37
+ // ── Module singletons (injected once at AgentServer construction) ───────────
38
+ let _decisionQualityRecorder = null;
39
+ export function setDecisionQualityRecorder(recorder) {
40
+ _decisionQualityRecorder = recorder;
41
+ }
42
+ export function getDecisionQualityRecorder() {
43
+ return _decisionQualityRecorder;
44
+ }
45
+ // machineId8 — the first 8 chars of the pool/mesh self machine id (§5.1.1),
46
+ // injected beside the recorder singleton. Absent (single-machine install) ⇒ the
47
+ // id segment is omitted. Shared by BOTH mint sites (router `d-`, breaker `b-`).
48
+ let _machineId8 = null;
49
+ export function setDecisionQualityMachineId(machineId) {
50
+ _machineId8 = typeof machineId === 'string' && machineId.length > 0 ? machineId.slice(0, 8) : null;
51
+ }
52
+ /** Router mint: `d-<machineId8>-<uuid>` on multi-machine installs, else `d-<uuid>` (FD1 — uuid-based, never time+seq). */
53
+ export function mintRouterCorrelationId() {
54
+ return _machineId8 ? `d-${_machineId8}-${randomUUID()}` : `d-${randomUUID()}`;
55
+ }
56
+ /** Breaker-floor mint for router-bypassing calls: `b-<machineId8>-<uuid>` / `b-<uuid>` (§5.1.2). */
57
+ export function mintBreakerCorrelationId() {
58
+ return _machineId8 ? `b-${_machineId8}-${randomUUID()}` : `b-${randomUUID()}`;
59
+ }
60
+ const _counters = {
61
+ onCorrelationIdThrows: 0,
62
+ provenanceStrippedAtBreaker: 0,
63
+ inboundCorrelationIdDiscarded: 0,
64
+ };
65
+ export function bumpOnCorrelationIdThrow() {
66
+ _counters.onCorrelationIdThrows++;
67
+ }
68
+ export function bumpProvenanceStrippedAtBreaker() {
69
+ _counters.provenanceStrippedAtBreaker++;
70
+ }
71
+ export function bumpInboundCorrelationIdDiscarded() {
72
+ _counters.inboundCorrelationIdDiscarded++;
73
+ }
74
+ export function getDecisionQualityCounters() {
75
+ return { ..._counters };
76
+ }
77
+ /** Test-only seam (the _resetUnlabeledEmissionForTest precedent). */
78
+ export function _resetDecisionQualityForTest() {
79
+ _decisionQualityRecorder = null;
80
+ _machineId8 = null;
81
+ _counters.onCorrelationIdThrows = 0;
82
+ _counters.provenanceStrippedAtBreaker = 0;
83
+ _counters.inboundCorrelationIdDiscarded = 0;
84
+ }
85
+ //# sourceMappingURL=decisionQualityTypes.js.map