instar 1.3.830 → 1.3.831

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 (108) 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/PostUpdateMigrator.d.ts +11 -0
  36. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  37. package/dist/core/PostUpdateMigrator.js +32 -0
  38. package/dist/core/PostUpdateMigrator.js.map +1 -1
  39. package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
  40. package/dist/core/WriteDomainRegistry.js +24 -0
  41. package/dist/core/WriteDomainRegistry.js.map +1 -1
  42. package/dist/core/decisionGradingPass.d.ts +69 -0
  43. package/dist/core/decisionGradingPass.d.ts.map +1 -0
  44. package/dist/core/decisionGradingPass.js +151 -0
  45. package/dist/core/decisionGradingPass.js.map +1 -0
  46. package/dist/core/decisionQualityTypes.d.ts +170 -0
  47. package/dist/core/decisionQualityTypes.d.ts.map +1 -0
  48. package/dist/core/decisionQualityTypes.js +85 -0
  49. package/dist/core/decisionQualityTypes.js.map +1 -0
  50. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  51. package/dist/core/devGatedFeatures.js +6 -0
  52. package/dist/core/devGatedFeatures.js.map +1 -1
  53. package/dist/core/machineCoherenceManifest.d.ts.map +1 -1
  54. package/dist/core/machineCoherenceManifest.js +4 -0
  55. package/dist/core/machineCoherenceManifest.js.map +1 -1
  56. package/dist/core/types.d.ts +69 -4
  57. package/dist/core/types.d.ts.map +1 -1
  58. package/dist/core/types.js.map +1 -1
  59. package/dist/data/provenanceCoverage.d.ts +150 -0
  60. package/dist/data/provenanceCoverage.d.ts.map +1 -0
  61. package/dist/data/provenanceCoverage.js +649 -0
  62. package/dist/data/provenanceCoverage.js.map +1 -0
  63. package/dist/monitoring/ExternalHogDecisionStore.d.ts +256 -0
  64. package/dist/monitoring/ExternalHogDecisionStore.d.ts.map +1 -0
  65. package/dist/monitoring/ExternalHogDecisionStore.js +481 -0
  66. package/dist/monitoring/ExternalHogDecisionStore.js.map +1 -0
  67. package/dist/monitoring/ExternalHogRealAdapters.d.ts +6 -2
  68. package/dist/monitoring/ExternalHogRealAdapters.d.ts.map +1 -1
  69. package/dist/monitoring/ExternalHogRealAdapters.js +2 -2
  70. package/dist/monitoring/ExternalHogRealAdapters.js.map +1 -1
  71. package/dist/monitoring/ExternalHogScanTick.d.ts +95 -3
  72. package/dist/monitoring/ExternalHogScanTick.d.ts.map +1 -1
  73. package/dist/monitoring/ExternalHogScanTick.js +102 -9
  74. package/dist/monitoring/ExternalHogScanTick.js.map +1 -1
  75. package/dist/monitoring/ExternalHogSentinel.d.ts +71 -3
  76. package/dist/monitoring/ExternalHogSentinel.d.ts.map +1 -1
  77. package/dist/monitoring/ExternalHogSentinel.js +126 -2
  78. package/dist/monitoring/ExternalHogSentinel.js.map +1 -1
  79. package/dist/monitoring/ExternalHogServerPrimitives.d.ts +10 -2
  80. package/dist/monitoring/ExternalHogServerPrimitives.d.ts.map +1 -1
  81. package/dist/monitoring/ExternalHogServerPrimitives.js +1 -1
  82. package/dist/monitoring/ExternalHogServerPrimitives.js.map +1 -1
  83. package/dist/monitoring/FeatureMetricsLedger.d.ts +304 -0
  84. package/dist/monitoring/FeatureMetricsLedger.d.ts.map +1 -1
  85. package/dist/monitoring/FeatureMetricsLedger.js +731 -0
  86. package/dist/monitoring/FeatureMetricsLedger.js.map +1 -1
  87. package/dist/scaffold/templates.d.ts.map +1 -1
  88. package/dist/scaffold/templates.js +2 -1
  89. package/dist/scaffold/templates.js.map +1 -1
  90. package/dist/server/AgentServer.d.ts.map +1 -1
  91. package/dist/server/AgentServer.js +55 -1
  92. package/dist/server/AgentServer.js.map +1 -1
  93. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  94. package/dist/server/CapabilityIndex.js +15 -1
  95. package/dist/server/CapabilityIndex.js.map +1 -1
  96. package/dist/server/fileRoutes.d.ts.map +1 -1
  97. package/dist/server/fileRoutes.js +9 -0
  98. package/dist/server/fileRoutes.js.map +1 -1
  99. package/dist/server/routes.d.ts.map +1 -1
  100. package/dist/server/routes.js +334 -5
  101. package/dist/server/routes.js.map +1 -1
  102. package/package.json +1 -1
  103. package/src/data/builtin-manifest.json +65 -65
  104. package/src/data/provenanceCoverage.ts +823 -0
  105. package/src/scaffold/templates/jobs/instar/llm-decision-grading.md +32 -0
  106. package/src/scaffold/templates.ts +2 -1
  107. package/upgrades/1.3.831.md +30 -0
  108. package/upgrades/side-effects/llm-decision-quality-meter.md +95 -0
@@ -1 +1 @@
1
- {"version":3,"file":"WriteDomainRegistry.d.ts","sourceRoot":"","sources":["../../src/core/WriteDomainRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAEjG,MAAM,MAAM,uBAAuB,GAC/B,iBAAiB,GACjB,uBAAuB,GACvB,kBAAkB,GAClB,mBAAmB,GACnB,uBAAuB,CAAC;AAE5B,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAEpE,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,OAAO,EAAE,uBAAuB,CAAC;IACjC;iEAC6D;IAC7D,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gEAAgE;IAChE,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB;8EAC0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;mCAE+B;IAC/B,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gCAAgC,QAAQ,CAAC;AAatD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGtF;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAA8B;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,+EAA+E;IAC/E,QAAQ,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,CAAM;IAE9D;;2DAEuD;IACvD,GAAG,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAsBlC;;;;OAIG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI;IAO9D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;KAAE;IAK/F;8BAC0B;IAC1B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQnE,qEAAqE;IACrE,YAAY,IAAI,SAAS,UAAU,EAAE;IAIrC,MAAM,IAAI,MAAM,EAAE;IAIlB,OAAO,IAAI,MAAM,EAAE;CAGpB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,mBAAmB,CAoLhG"}
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,69 @@
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
+ * Run one deterministic grading pass. See the module doc for cursor semantics.
63
+ * The only DecisionGrading-owned window-close rule in this build is
64
+ * `hog-sustained-right-v1`; adding another enrolls a new point here AND flips
65
+ * `SUBBUDGET_IMPLEMENTED` (the census ratchet enforces the fairness sub-budget
66
+ * before a third enrolled point).
67
+ */
68
+ export declare function runDecisionGradingPass(deps: DecisionGradingPassDeps): DecisionGradingPassResult;
69
+ //# 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;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,uBAAuB,GAAG,yBAAyB,CAoH/F"}
@@ -0,0 +1,151 @@
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
+ * Run one deterministic grading pass. See the module doc for cursor semantics.
40
+ * The only DecisionGrading-owned window-close rule in this build is
41
+ * `hog-sustained-right-v1`; adding another enrolls a new point here AND flips
42
+ * `SUBBUDGET_IMPLEMENTED` (the census ratchet enforces the fairness sub-budget
43
+ * before a third enrolled point).
44
+ */
45
+ export function runDecisionGradingPass(deps) {
46
+ const { ledger, hogStore, annotate, now } = deps;
47
+ const budget = Math.max(1, Math.min(10_000, Math.floor(deps.maxDecisionsPerPass) || 200));
48
+ const evidenceWindowMs = deps.evidenceWindowMs > 0 ? deps.evidenceWindowMs : 6 * HOUR_MS;
49
+ const result = { graded: 0, byRule: {}, cursors: {} };
50
+ const point = DP_EXTERNAL_HOG_KILL_LEAVE;
51
+ const nowMs = now();
52
+ const cursor = ledger.getGradingCursor(point) ?? {
53
+ decisionPoint: point,
54
+ cursorTs: 0,
55
+ cursorCorrelationId: '',
56
+ nextRecheckTs: null,
57
+ attempts: 0,
58
+ updatedAt: 0,
59
+ };
60
+ // P19 backoff: while a point is backing off, no fresh evidence can have
61
+ // matured — skip it entirely this pass (report the frozen boundary honestly).
62
+ if (cursor.nextRecheckTs !== null && nowMs < cursor.nextRecheckTs) {
63
+ result.cursors[point] = { ts: cursor.cursorTs, correlationId: cursor.cursorCorrelationId };
64
+ return result;
65
+ }
66
+ // No durable evidence source wired (the sentinel store is not constructed) →
67
+ // nothing to grade; leave the cursor untouched.
68
+ if (!hogStore) {
69
+ result.cursors[point] = { ts: cursor.cursorTs, correlationId: cursor.cursorCorrelationId };
70
+ return result;
71
+ }
72
+ // correlationId → hog record (bounded: the store retains a handful of slots).
73
+ const byCorr = new Map();
74
+ for (const { record } of hogStore.list()) {
75
+ if (record.correlationId)
76
+ byCorr.set(record.correlationId, record);
77
+ }
78
+ const rows = ledger.walkDecisionsForGrading(point, cursor.cursorTs, cursor.cursorCorrelationId, budget);
79
+ let cursorTs = cursor.cursorTs;
80
+ let cursorCorr = cursor.cursorCorrelationId;
81
+ let sawPending = false;
82
+ for (const row of rows) {
83
+ // Already terminally graded (respawn-wrong at the sentinel, or a prior
84
+ // pass' right): advance past it.
85
+ const winning = ledger.getWinningGrades([row.correlationId])[0];
86
+ if (winning && (winning.grade === 'right' || winning.grade === 'wrong')) {
87
+ cursorTs = row.ts;
88
+ cursorCorr = row.correlationId;
89
+ continue;
90
+ }
91
+ const rec = byCorr.get(row.correlationId);
92
+ const decisionAtMs = rec?.atMs ?? row.ts;
93
+ const age = nowMs - decisionAtMs;
94
+ // Within the evidence window → the window-close verdict has not matured.
95
+ // Uniform windows ⇒ every later row is pending too: stop (low-water mark).
96
+ if (age <= evidenceWindowMs) {
97
+ sawPending = true;
98
+ break;
99
+ }
100
+ // Window CLOSED — resolve now.
101
+ if (rec) {
102
+ const grade = evaluateHogSustainedRight(rec, nowMs);
103
+ if (grade === 'right') {
104
+ const res = annotate({
105
+ correlationId: row.correlationId,
106
+ ruleId: HOG_SUSTAINED_RIGHT_RULE_ID,
107
+ gradedBy: { component: DECISION_GRADING_COMPONENT },
108
+ grade: 'right',
109
+ decisionPoint: point,
110
+ evidence: { rule: HOG_SUSTAINED_RIGHT_RULE_ID, windowMs: rec.effectiveWindowMs, sustainedNoReflag: true },
111
+ ts: nowMs,
112
+ });
113
+ if (res.applied) {
114
+ result.graded++;
115
+ result.byRule[HOG_SUSTAINED_RIGHT_RULE_ID] = (result.byRule[HOG_SUSTAINED_RIGHT_RULE_ID] ?? 0) + 1;
116
+ cursorTs = row.ts;
117
+ cursorCorr = row.correlationId;
118
+ continue;
119
+ }
120
+ // dry-run / disabled / rejected: the durable write was suppressed —
121
+ // treat as PENDING (do NOT advance) so a later dryRun:false flip grades
122
+ // it rather than skipping it forever behind an advanced cursor.
123
+ sawPending = true;
124
+ break;
125
+ }
126
+ // Window closed and `right` does not apply (re-flagged / owner alive /
127
+ // un-orderable) → terminal-unknown (reads as unknown/expired); advance.
128
+ cursorTs = row.ts;
129
+ cursorCorr = row.correlationId;
130
+ continue;
131
+ }
132
+ // No hog record AND the window closed → no evidence will arrive → terminal.
133
+ cursorTs = row.ts;
134
+ cursorCorr = row.correlationId;
135
+ }
136
+ // Cursor + P19 backoff bookkeeping.
137
+ const advanced = cursorTs !== cursor.cursorTs || cursorCorr !== cursor.cursorCorrelationId;
138
+ let nextRecheckTs = null;
139
+ let attempts = 0;
140
+ if (sawPending && !advanced) {
141
+ // No progress AND a pending low-water row: back off before re-checking.
142
+ attempts = (cursor.attempts ?? 0) + 1;
143
+ nextRecheckTs = nowMs + Math.min(BACKOFF_CAP_MS, BACKOFF_BASE_MS * 2 ** Math.min(attempts - 1, 4));
144
+ }
145
+ // (A full page that fully resolved leaves nextRecheckTs null so the next pass
146
+ // continues immediately from the advanced boundary.)
147
+ ledger.setGradingCursor(point, { cursorTs, cursorCorrelationId: cursorCorr, nextRecheckTs, attempts });
148
+ result.cursors[point] = { ts: cursorTs, correlationId: cursorCorr };
149
+ return result;
150
+ }
151
+ //# 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":"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"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisionQualityTypes.js","sourceRoot":"","sources":["../../src/core/decisionQualityTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,+EAA+E;AAC/E,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,8EAA8E;AAC9E,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAE9E,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAkB,MAAM,CAAC,wCAAwC,CAAC,CAAC;AAEvG;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkB,MAAM,CAAC,qCAAqC,CAAC,CAAC;AAwHjG,+EAA+E;AAE/E,IAAI,wBAAwB,GAAmC,IAAI,CAAC;AACpE,MAAM,UAAU,0BAA0B,CAAC,QAAwC;IACjF,wBAAwB,GAAG,QAAQ,CAAC;AACtC,CAAC;AACD,MAAM,UAAU,0BAA0B;IACxC,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,4EAA4E;AAC5E,gFAAgF;AAChF,gFAAgF;AAChF,IAAI,WAAW,GAAkB,IAAI,CAAC;AACtC,MAAM,UAAU,2BAA2B,CAAC,SAAoC;IAC9E,WAAW,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrG,CAAC;AAED,0HAA0H;AAC1H,MAAM,UAAU,uBAAuB;IACrC,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,EAAE,CAAC;AAChF,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,wBAAwB;IACtC,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,EAAE,CAAC;AAChF,CAAC;AAaD,MAAM,SAAS,GAA4B;IACzC,qBAAqB,EAAE,CAAC;IACxB,2BAA2B,EAAE,CAAC;IAC9B,6BAA6B,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,UAAU,wBAAwB;IACtC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AACpC,CAAC;AACD,MAAM,UAAU,+BAA+B;IAC7C,SAAS,CAAC,2BAA2B,EAAE,CAAC;AAC1C,CAAC;AACD,MAAM,UAAU,iCAAiC;IAC/C,SAAS,CAAC,6BAA6B,EAAE,CAAC;AAC5C,CAAC;AACD,MAAM,UAAU,0BAA0B;IACxC,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;AAC1B,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,4BAA4B;IAC1C,wBAAwB,GAAG,IAAI,CAAC;IAChC,WAAW,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACpC,SAAS,CAAC,2BAA2B,GAAG,CAAC,CAAC;IAC1C,SAAS,CAAC,6BAA6B,GAAG,CAAC,CAAC;AAC9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAsiB/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAoKnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E"}
1
+ {"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA4iB/C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAoKnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E"}
@@ -547,6 +547,12 @@ export const DEV_GATED_FEATURES = [
547
547
  description: 'Swap-continuity in-flight work gate (swap-continuity-antithrash §4) — every session-killing mutation (proactive/reactive account swap, agent/API refresh) consults the SwapWorkGate at the SessionRefresh funnel: a proactive swap DEFERS over in-flight work (ceiling-dropped, never forced), a reactive swap gets a bounded ≤120s grace then proceeds WITH the F3 mitigations (enumerated killed subagents + re-injected unanswered inbound), an interactive refresh gets a structured session-busy refusal + force.',
548
548
  justification: 'Ships dryRun:true (the dry-run canary): on a dev agent the gate probes and LOGS every would-defer/would-refuse/would-mitigate verdict but changes NOTHING — every refresh kills exactly as today until a deliberate dryRun:false. The gate itself is deterministic structural-state math (pane footer / child process / subagent registry — Tier 0, no LLM), bounded on every edge (30-min deferral ceiling, 120-s reactive grace, force override, recovery-class exemption), and its uncertainty direction only ever DELAYS an optimization — it can never kill work, spend, or egress. Same dogfooding posture as topicProfiles / agentOwnedFollowthrough.',
549
549
  },
550
+ {
551
+ name: 'provenanceUniformSeam',
552
+ configPath: 'provenance.uniformSeam.enabled',
553
+ description: 'LLM-Decision Quality Meter uniform provenance seam (docs/specs/llm-decision-quality-meter.md §5.7) — the router-settlement side write that records each ENROLLED LLM decision (a ~250-byte decision_quality row always; a provenance JSONL row per the census volume valve) so per-decision-point right/wrong/unknown grading has parents. Read surface: GET /decision-quality (503 when the seam resolves off). dryRun defaults TRUE even on dev — metadata-only would-write logs, ALL durable writes suppressed — until a deliberate dryRun:false flip after the would-write soak.',
554
+ justification: 'observe-only side write at the router-settlement seam; never gates/blocks/delays the decision call; no egress, no spend, no destructive action; failure is catch-logged.',
555
+ },
550
556
  ];
551
557
  export const DARK_GATE_EXCLUSIONS = [
552
558
  // ── destructive — kills/deletes on a heuristic; off + dry-run for EVERYONE ──