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":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAyDH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AA0BjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA6H7D,OAAO,KAAK,EAAW,oBAAoB,EAAe,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgFtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAkoDD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,oBAAoB,GAAG,IAAI,GACxC;IACD,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAqBA;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,EAQrD,oBAAoB,CAAC,EAAE,MAAM;IAC3B,YAAY,EAAE,OAAO,kBAAkB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,GACP,IAAI,CAssBN;AAgmBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoznBtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAyDH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AA0BjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA6H7D,OAAO,KAAK,EAAW,oBAAoB,EAAe,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgFtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAkoDD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,oBAAoB,GAAG,IAAI,GACxC;IACD,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAqBA;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,EAQrD,oBAAoB,CAAC,EAAE,MAAM;IAC3B,YAAY,EAAE,OAAO,kBAAkB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,GACP,IAAI,CAssBN;AAgmBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA83nBtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
@@ -15699,8 +15699,19 @@ export async function startServer(options) {
15699
15699
  let completionEvaluator;
15700
15700
  if (sharedIntelligence) {
15701
15701
  const { CompletionEvaluator } = await import('../core/CompletionEvaluator.js');
15702
- completionEvaluator = new CompletionEvaluator({ intelligence: sharedIntelligence });
15703
- console.log(pc.green(' Completion evaluator: active (independent /goal-style judge)'));
15702
+ // LLM-Decision Quality Meter §5.3 (P8 integration): the router-minted
15703
+ // completion/P13 correlation ids are persisted into the durable autonomous
15704
+ // run-state record so the realcheck path can annotate the decision later.
15705
+ // The sink is a file-backed AutonomousRunStore keyed on the same stateDir
15706
+ // the routes' instance uses (the store is stateless file IO — the
15707
+ // throwaway-instance pattern at AutonomousRunStore.ts, so both instances
15708
+ // read/write the same state/autonomous-server/*.json records coherently).
15709
+ const { AutonomousRunStore } = await import('../core/AutonomousRunStore.js');
15710
+ completionEvaluator = new CompletionEvaluator({
15711
+ intelligence: sharedIntelligence,
15712
+ runCorrelationSink: new AutonomousRunStore(config.stateDir),
15713
+ });
15714
+ console.log(pc.green(' Completion evaluator: active (independent /goal-style judge; §5.3 correlation sink wired)'));
15704
15715
  }
15705
15716
  // ── LiveTestGate (live-user-channel-proof spec §4) ──────────────────────
15706
15717
  // The completion-gate teeth: refuse a "done" verdict for a USER-FACING feature
@@ -16987,6 +16998,8 @@ export async function startServer(options) {
16987
16998
  const { createExternalHogServerPrimitives } = await import('../monitoring/ExternalHogServerPrimitives.js');
16988
16999
  const { createExternalHogAdapters } = await import('../monitoring/ExternalHogRealAdapters.js');
16989
17000
  const { ExternalHogSentinel } = await import('../monitoring/ExternalHogSentinel.js');
17001
+ const { ExternalHogDecisionStore } = await import('../monitoring/ExternalHogDecisionStore.js');
17002
+ const { annotateDecisionOutcome } = await import('../core/DecisionQualityRecorderImpl.js');
16990
17003
  // Positive-clamp the interval-critical knobs so a garbage config (0/negative/huge-but-finite,
16991
17004
  // which ehNum passes through) can never hot-loop the tick or widen candidacy to everything
16992
17005
  // (Phase-5 reviewer nit D — dev-only robustness; the kill gate is unaffected either way).
@@ -17004,8 +17017,13 @@ export async function startServer(options) {
17004
17017
  catch {
17005
17018
  return false;
17006
17019
  } }, // @silent-fallback-ok: `false` IS the signal primitive's contract (pid gone / EPERM → delivery failed); the kill funnel consumes the boolean and surfaces every outcome
17007
- evaluate: (prompt) => (sharedIntelligence
17008
- ? sharedIntelligence.evaluate(prompt, { model: 'fast', attribution: { component: 'ExternalHogClassifier' } })
17020
+ // llm-decision-quality-meter §5.3: forward the router-enrollment provenance
17021
+ // block (from ExternalHogScanTick) into the intelligence options so the
17022
+ // router mints + settles a decision_quality row for the classifier call.
17023
+ // Minting is always-on; the decision_quality WRITE is gated inside the
17024
+ // recorder (dev-gate + dryRun), so this forward is unconditional.
17025
+ evaluate: (prompt, provenance) => (sharedIntelligence
17026
+ ? sharedIntelligence.evaluate(prompt, { model: 'fast', attribution: { component: 'ExternalHogClassifier' }, ...(provenance ? { provenance } : {}) })
17009
17027
  : Promise.reject(new Error('no intelligence provider'))),
17010
17028
  raiseAttention: (item) => telegram?.createAttentionItem({
17011
17029
  id: 'agent:external-hog',
@@ -17029,6 +17047,27 @@ export async function startServer(options) {
17029
17047
  killTimeCpuCoreThreshold: 0.5,
17030
17048
  homeDir: os.homedir(),
17031
17049
  });
17050
+ // ── llm-decision-quality-meter §5.3 wiring: the durable decision store +
17051
+ // the §5.4 annotate chokepoint. The SEAM gate is independent of the hog
17052
+ // gate — resolve it the SAME way the recorder does (resolveDevAgentGate
17053
+ // on provenance.uniformSeam.enabled + dryRun defaults TRUE). The store is
17054
+ // constructed ONLY when the seam resolves live; dryRun is threaded in so
17055
+ // the store suppresses its durable persist while still running
17056
+ // grade-on-supersede in-memory (§5.2: "dry-run suppresses all durable
17057
+ // writes"). `annotate` is always passed — the recorder gates it
17058
+ // internally, and a disabled seam leaves `decisionStore` undefined so
17059
+ // recordDecisions() no-ops before reaching it.
17060
+ const _dqSeamEnabled = resolveDevAgentGate(config.provenance?.uniformSeam?.enabled, config);
17061
+ const _dqSeamDryRun = config.provenance?.uniformSeam?.dryRun !== false;
17062
+ const ehDecisionStore = _dqSeamEnabled
17063
+ ? new ExternalHogDecisionStore({
17064
+ stateDir: config.stateDir,
17065
+ config, // reads provenance.quality.{evidenceWindowHours,gradingSlackHours}
17066
+ killLedgerBreakerWindowMs: 3_600_000, // MUST equal breaker.windowMs below (§5.3 retention derivation)
17067
+ dryRun: _dqSeamDryRun,
17068
+ log: (m) => console.log(m),
17069
+ })
17070
+ : undefined;
17032
17071
  externalHogSentinel = new ExternalHogSentinel(ehAdapters, {
17033
17072
  sampler: { ownEuid: ehEuid, cpuCoreThreshold: ehCpuCoreThreshold, sampleWindowMs: ehSampleWindowMs, maxAncestorHops: 30 },
17034
17073
  sustainedSampleCount: ehSustainedSampleCount,
@@ -17038,6 +17077,21 @@ export async function startServer(options) {
17038
17077
  noticeBudgetPerWindow: ehNum(ehCfg.noticeBudgetPerWindow, 4),
17039
17078
  killLedgerRetentionMs: 3_600_000,
17040
17079
  samplerDeadThresholdMs: Math.max(2 * ehScanIntervalMs, ehSustainedSampleCount * ehSampleWindowMs),
17080
+ }, {
17081
+ decisionStore: ehDecisionStore,
17082
+ annotate: (a) => {
17083
+ // Map the sentinel's HogOutcomeAnnotation → the recorder's
17084
+ // DecisionOutcomeAnnotationInput (ruleId is top-level on the input but
17085
+ // nested in gradedBy on the hog annotation). The result is discarded —
17086
+ // `annotate` is void; the recorder gates enabled+dryRun internally.
17087
+ annotateDecisionOutcome({
17088
+ correlationId: a.correlationId,
17089
+ ruleId: a.gradedBy.ruleId,
17090
+ gradedBy: { component: a.gradedBy.component },
17091
+ grade: a.grade,
17092
+ evidence: a.evidence,
17093
+ });
17094
+ },
17041
17095
  });
17042
17096
  // Register the /guards runtime getter regardless of enabled (so posture reports honestly).
17043
17097
  guardRegistry.register('monitoring.externalHogSentinel.enabled', () => externalHogSentinel.guardRuntimeStatus());
@@ -18027,6 +18081,28 @@ export async function startServer(options) {
18027
18081
  // onCommit hook. Stays null on pool-dark installs (the index warms empty;
18028
18082
  // scoped domains collapse to the legacy lease boolean anyway).
18029
18083
  let _writeAdmissionOwnershipStore = null;
18084
+ // ── Judgment-provenance log (llm-decision-quality-meter §5.7/FD9) ──
18085
+ // Constructed UNCONDITIONALLY — the decision-quality settlement seam needs
18086
+ // a substrate on every agent, single-machine included (construction uses
18087
+ // only stateDir/config/logger, zero mesh inputs). Previously this lived
18088
+ // inside the mesh block below, so a single-machine agent had nothing to
18089
+ // write to and /judgment-provenance 503'd through the whole dev soak.
18090
+ // Only the assignment moved; the hoisted `_judgmentProvenance` is passed
18091
+ // to AgentServer unchanged, and the two mesh-block callsites keep their
18092
+ // optional-chaining writes.
18093
+ try {
18094
+ const jplMod = await import('../core/JudgmentProvenanceLog.js');
18095
+ const provCfg = config.provenance ?? {};
18096
+ _judgmentProvenance = new jplMod.JudgmentProvenanceLog({
18097
+ dir: path.join(config.stateDir, 'state', 'judgment-provenance'),
18098
+ retentionDays: provCfg.retentionDays,
18099
+ sampling: provCfg.deterministicSampling,
18100
+ log: (m) => console.log(pc.dim(` ${m}`)),
18101
+ });
18102
+ }
18103
+ catch (err) {
18104
+ console.error(`[judgment-provenance] construction failed (provenance rows will not be recorded; /judgment-provenance will 503): ${err instanceof Error ? err.message : String(err)}`);
18105
+ }
18030
18106
  try {
18031
18107
  const meshMod = await import('../core/MeshRpc.js');
18032
18108
  const idMod = await import('../core/MachineIdentity.js');
@@ -20851,16 +20927,11 @@ export async function startServer(options) {
20851
20927
  try {
20852
20928
  const spawnAdmMod = await import('../core/SpawnAdmission.js');
20853
20929
  const ladderMod = await import('../core/OwnerDarkLadder.js');
20854
- const jplMod = await import('../core/JudgmentProvenanceLog.js');
20855
20930
  const audMod = await import('../core/BoundedJsonlAudit.js');
20856
20931
  const ogsCfg = config.multiMachine?.sessionPool?.ownershipGatedSpawn ?? {};
20857
- const provCfg = config.provenance ?? {};
20858
- _judgmentProvenance = new jplMod.JudgmentProvenanceLog({
20859
- dir: path.join(config.stateDir, 'state', 'judgment-provenance'),
20860
- retentionDays: provCfg.retentionDays,
20861
- sampling: provCfg.deterministicSampling,
20862
- log: (m) => console.log(pc.dim(` ${m}`)),
20863
- });
20932
+ // (The JudgmentProvenanceLog is constructed UNCONDITIONALLY before
20933
+ // this mesh block — llm-decision-quality-meter FD9; the seam callsites
20934
+ // here keep their optional-chaining writes.)
20864
20935
  const ownerDarkAudit = new audMod.BoundedJsonlAudit({
20865
20936
  file: path.join(config.stateDir, 'logs', 'owner-dark-ladder.jsonl'),
20866
20937
  log: (m) => console.log(pc.dim(` ${m}`)),