instar 1.3.887 → 1.3.889

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 (131) hide show
  1. package/dashboard/index.html +12 -0
  2. package/dashboard/preferences-learning.js +87 -5
  3. package/dist/cli.js +8 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/gate.d.ts +3 -0
  6. package/dist/commands/gate.d.ts.map +1 -1
  7. package/dist/commands/gate.js +17 -0
  8. package/dist/commands/gate.js.map +1 -1
  9. package/dist/commands/init.js +3 -0
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/server.d.ts.map +1 -1
  12. package/dist/commands/server.js +129 -0
  13. package/dist/commands/server.js.map +1 -1
  14. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  15. package/dist/config/ConfigDefaults.js +20 -0
  16. package/dist/config/ConfigDefaults.js.map +1 -1
  17. package/dist/core/BackupManager.d.ts.map +1 -1
  18. package/dist/core/BackupManager.js +9 -0
  19. package/dist/core/BackupManager.js.map +1 -1
  20. package/dist/core/ClassReviewReplicatedStore.d.ts +27 -0
  21. package/dist/core/ClassReviewReplicatedStore.d.ts.map +1 -0
  22. package/dist/core/ClassReviewReplicatedStore.js +153 -0
  23. package/dist/core/ClassReviewReplicatedStore.js.map +1 -0
  24. package/dist/core/CoherenceJournal.d.ts +1 -1
  25. package/dist/core/CoherenceJournal.d.ts.map +1 -1
  26. package/dist/core/CoherenceJournal.js +9 -2
  27. package/dist/core/CoherenceJournal.js.map +1 -1
  28. package/dist/core/PostUpdateMigrator.d.ts +2 -1
  29. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  30. package/dist/core/PostUpdateMigrator.js +153 -0
  31. package/dist/core/PostUpdateMigrator.js.map +1 -1
  32. package/dist/core/StopGateBreakerState.d.ts +45 -0
  33. package/dist/core/StopGateBreakerState.d.ts.map +1 -0
  34. package/dist/core/StopGateBreakerState.js +49 -0
  35. package/dist/core/StopGateBreakerState.js.map +1 -0
  36. package/dist/core/StopGateDb.d.ts +25 -1
  37. package/dist/core/StopGateDb.d.ts.map +1 -1
  38. package/dist/core/StopGateDb.js +125 -0
  39. package/dist/core/StopGateDb.js.map +1 -1
  40. package/dist/core/UnjustifiedStopGate.d.ts +22 -1
  41. package/dist/core/UnjustifiedStopGate.d.ts.map +1 -1
  42. package/dist/core/UnjustifiedStopGate.js +165 -8
  43. package/dist/core/UnjustifiedStopGate.js.map +1 -1
  44. package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
  45. package/dist/core/WriteDomainRegistry.js +32 -0
  46. package/dist/core/WriteDomainRegistry.js.map +1 -1
  47. package/dist/core/componentCategories.d.ts.map +1 -1
  48. package/dist/core/componentCategories.js +2 -0
  49. package/dist/core/componentCategories.js.map +1 -1
  50. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  51. package/dist/core/devGatedFeatures.js +18 -0
  52. package/dist/core/devGatedFeatures.js.map +1 -1
  53. package/dist/core/machineCoherenceManifest.d.ts +2 -2
  54. package/dist/core/machineCoherenceManifest.d.ts.map +1 -1
  55. package/dist/core/machineCoherenceManifest.js +2 -1
  56. package/dist/core/machineCoherenceManifest.js.map +1 -1
  57. package/dist/core/types.d.ts +17 -0
  58. package/dist/core/types.d.ts.map +1 -1
  59. package/dist/core/types.js.map +1 -1
  60. package/dist/data/llmBenchCoverage.d.ts.map +1 -1
  61. package/dist/data/llmBenchCoverage.js +14 -0
  62. package/dist/data/llmBenchCoverage.js.map +1 -1
  63. package/dist/data/provenanceCoverage.d.ts +4 -0
  64. package/dist/data/provenanceCoverage.d.ts.map +1 -1
  65. package/dist/data/provenanceCoverage.js +20 -0
  66. package/dist/data/provenanceCoverage.js.map +1 -1
  67. package/dist/monitoring/ClaimClauseArbiter.d.ts +54 -0
  68. package/dist/monitoring/ClaimClauseArbiter.d.ts.map +1 -0
  69. package/dist/monitoring/ClaimClauseArbiter.js +163 -0
  70. package/dist/monitoring/ClaimClauseArbiter.js.map +1 -0
  71. package/dist/monitoring/ClassReviewStore.d.ts +152 -0
  72. package/dist/monitoring/ClassReviewStore.d.ts.map +1 -0
  73. package/dist/monitoring/ClassReviewStore.js +431 -0
  74. package/dist/monitoring/ClassReviewStore.js.map +1 -0
  75. package/dist/monitoring/CommitmentTracker.d.ts +5 -0
  76. package/dist/monitoring/CommitmentTracker.d.ts.map +1 -1
  77. package/dist/monitoring/CommitmentTracker.js +2 -0
  78. package/dist/monitoring/CommitmentTracker.js.map +1 -1
  79. package/dist/monitoring/CompletionClaimVerifier.d.ts +79 -0
  80. package/dist/monitoring/CompletionClaimVerifier.d.ts.map +1 -0
  81. package/dist/monitoring/CompletionClaimVerifier.js +281 -0
  82. package/dist/monitoring/CompletionClaimVerifier.js.map +1 -0
  83. package/dist/monitoring/CorrectionCaptureLoop.d.ts +6 -1
  84. package/dist/monitoring/CorrectionCaptureLoop.d.ts.map +1 -1
  85. package/dist/monitoring/CorrectionCaptureLoop.js +10 -0
  86. package/dist/monitoring/CorrectionCaptureLoop.js.map +1 -1
  87. package/dist/monitoring/CorrectionClassReview.d.ts +93 -0
  88. package/dist/monitoring/CorrectionClassReview.d.ts.map +1 -0
  89. package/dist/monitoring/CorrectionClassReview.js +280 -0
  90. package/dist/monitoring/CorrectionClassReview.js.map +1 -0
  91. package/dist/monitoring/CorrectionInstanceFixGate.d.ts +20 -0
  92. package/dist/monitoring/CorrectionInstanceFixGate.d.ts.map +1 -0
  93. package/dist/monitoring/CorrectionInstanceFixGate.js +30 -0
  94. package/dist/monitoring/CorrectionInstanceFixGate.js.map +1 -0
  95. package/dist/monitoring/TurnEvidence.d.ts +38 -0
  96. package/dist/monitoring/TurnEvidence.d.ts.map +1 -0
  97. package/dist/monitoring/TurnEvidence.js +208 -0
  98. package/dist/monitoring/TurnEvidence.js.map +1 -0
  99. package/dist/monitoring/guardManifest.d.ts.map +1 -1
  100. package/dist/monitoring/guardManifest.js +26 -0
  101. package/dist/monitoring/guardManifest.js.map +1 -1
  102. package/dist/scaffold/templates.d.ts.map +1 -1
  103. package/dist/scaffold/templates.js +2 -0
  104. package/dist/scaffold/templates.js.map +1 -1
  105. package/dist/server/AgentServer.d.ts +6 -0
  106. package/dist/server/AgentServer.d.ts.map +1 -1
  107. package/dist/server/AgentServer.js +116 -1
  108. package/dist/server/AgentServer.js.map +1 -1
  109. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  110. package/dist/server/CapabilityIndex.js +16 -0
  111. package/dist/server/CapabilityIndex.js.map +1 -1
  112. package/dist/server/routes.d.ts +3 -0
  113. package/dist/server/routes.d.ts.map +1 -1
  114. package/dist/server/routes.js +346 -9
  115. package/dist/server/routes.js.map +1 -1
  116. package/dist/testing/selfActionRegistry.d.ts +12 -0
  117. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  118. package/dist/testing/selfActionRegistry.js +87 -0
  119. package/dist/testing/selfActionRegistry.js.map +1 -1
  120. package/package.json +1 -1
  121. package/src/data/builtin-manifest.json +98 -98
  122. package/src/data/llmBenchCoverage.ts +14 -0
  123. package/src/data/provenanceCoverage.ts +24 -0
  124. package/src/scaffold/templates/jobs/instar/correction-class-review-backstop.md +23 -0
  125. package/src/scaffold/templates.ts +2 -0
  126. package/src/templates/hooks/settings-template.json +10 -0
  127. package/upgrades/1.3.888.md +26 -0
  128. package/upgrades/1.3.889.md +26 -0
  129. package/upgrades/eli16/durable-stop-gate-breaker.eli16.md +30 -0
  130. package/upgrades/side-effects/NEXT.md +57 -68
  131. package/upgrades/side-effects/durable-stop-gate-breaker.md +141 -0
@@ -4139,6 +4139,8 @@ export async function startServer(options) {
4139
4139
  // `multiMachine.stateSync.preferences.enabled` (default false ⇒ strict no-op).
4140
4140
  const { PREF_KIND_REGISTRATION } = await import('../core/PreferencesReplicatedStore.js');
4141
4141
  replicatedKindRegistry.register(PREF_KIND_REGISTRATION);
4142
+ const { CLASS_REVIEW_KIND_REGISTRATION } = await import('../core/ClassReviewReplicatedStore.js');
4143
+ replicatedKindRegistry.register(CLASS_REVIEW_KIND_REGISTRATION);
4142
4144
  // WS2.3 (ws23-relationships-userregistry-security) — register the SECOND concrete
4143
4145
  // replicated kind, `relationship-record`, onto the registry: the FIRST PII kind.
4144
4146
  // Dual-registry's dynamic half (the static half is CoherenceJournal.JOURNAL_KINDS,
@@ -12456,6 +12458,10 @@ export async function startServer(options) {
12456
12458
  // Census #8 (the E4a liar): when re-pointing is enabled and the ledger knows the `~/.claude`
12457
12459
  // tenant, the badge resolves from the ledger — NOT a stale `claude auth status` re-probe.
12458
12460
  const inUseAccountResolver = new InUseAccountResolver({ locationGate: credentialLocationGate });
12461
+ // Late-bound across messaging-capture setup and the post-evolution
12462
+ // class-review outcome wiring below.
12463
+ let recordCorrectionClassReview;
12464
+ let correctionLedgerForClassReview;
12459
12465
  // EnrollmentWizard — mobile-first new-account login (P2.1 of the Subscription
12460
12466
  // & Auth Standard). Dark with the pool: the /subscription-pool/enroll routes
12461
12467
  // do nothing until an operator starts an enrollment. The login driver reuses
@@ -13152,6 +13158,7 @@ export async function startServer(options) {
13152
13158
  const correctionLedger = new CorrectionLedger({
13153
13159
  dbPath: path.join(config.stateDir, 'correction-ledger.db'),
13154
13160
  });
13161
+ correctionLedgerForClassReview = correctionLedger;
13155
13162
  // Per-sentinel LlmQueue — object opts (do NOT pass a bare number; that
13156
13163
  // is the latent PresenceProxy bug §2). Dedicated daily cap.
13157
13164
  const correctionLlmQueue = new LlmQueue({
@@ -13230,6 +13237,7 @@ export async function startServer(options) {
13230
13237
  llmAvailable: () => llmCircuitAvailable(),
13231
13238
  ttlMs: backlogTtlMs,
13232
13239
  audit: (e) => correctionAudit({ decision: e.decision, topicId: e.topicId, detail: e.detail }),
13240
+ onRecorded: (record) => recordCorrectionClassReview?.(record),
13233
13241
  }, backlogDrainPerTick);
13234
13242
  }
13235
13243
  finally {
@@ -13259,6 +13267,7 @@ export async function startServer(options) {
13259
13267
  rateCeiling: { maxPerWindow: cl.distillPerTopicRatePerMinute ?? 8, windowMs: 60_000 },
13260
13268
  backlog: captureBacklog,
13261
13269
  audit: correctionAudit,
13270
+ onRecorded: (record) => recordCorrectionClassReview?.(record),
13262
13271
  }, {
13263
13272
  topicId: entry.topicId ?? null,
13264
13273
  text: entry.text ?? '',
@@ -15696,6 +15705,7 @@ export async function startServer(options) {
15696
15705
  if (sharedIntelligence && stopGateDb) {
15697
15706
  try {
15698
15707
  const { UnjustifiedStopGate } = await import('../core/UnjustifiedStopGate.js');
15708
+ const { stopGateBreakerKey } = await import('../core/StopGateBreakerState.js');
15699
15709
  const { resolveDevAgentGate } = await import('../core/devAgentGate.js');
15700
15710
  // Turn-End Self-Deferral Guard (Phase A / shadow) — dev-gated dark:
15701
15711
  // `monitoring.selfDeferralGuard` OMITS `enabled` so resolveDevAgentGate
@@ -15705,6 +15715,22 @@ export async function startServer(options) {
15705
15715
  unjustifiedStopGate = new UnjustifiedStopGate({
15706
15716
  intelligence: sharedIntelligence,
15707
15717
  selfDeferralGuardEnabled,
15718
+ breakerStateStore: stopGateDb,
15719
+ breakerKey: stopGateBreakerKey({
15720
+ defaultFramework: config.sessions?.framework,
15721
+ gateCategoryFramework: config.sessions?.componentFrameworks?.categories?.gate,
15722
+ stopGateOverride: config.sessions?.componentFrameworks?.overrides?.UnjustifiedStopGate,
15723
+ failureSwap: config.sessions?.componentFrameworks?.failureSwap,
15724
+ }),
15725
+ onBreakerPersistenceError: (err) => {
15726
+ DegradationReporter.getInstance().report({
15727
+ feature: 'unjustifiedStopGate.breakerPersistence',
15728
+ primary: 'Durable Stop-gate authority breaker state',
15729
+ fallback: 'memory-only breaker + fail-open allow',
15730
+ reason: err instanceof Error ? err.message : String(err),
15731
+ impact: 'Restart-survival may be temporarily unavailable; Stop events remain fail-open.',
15732
+ });
15733
+ },
15708
15734
  });
15709
15735
  }
15710
15736
  catch (err) {
@@ -16245,6 +16271,100 @@ export async function startServer(options) {
16245
16271
  }
16246
16272
  const { InitiativeTracker } = await import('../core/InitiativeTracker.js');
16247
16273
  const initiativeTracker = new InitiativeTracker(config.stateDir);
16274
+ // Drive 7 WS1 — bind the automated operator-attributed capture path to the
16275
+ // same record-time class-review store used by the HTTP surface. This seam is
16276
+ // independent of recurrence: every successful durable CorrectionLedger
16277
+ // write invokes it, including backlog-drain writes.
16278
+ if (sharedIntelligence && resolveDevAgentGate(config.monitoring?.correctionClassReview?.enabled, config)) {
16279
+ try {
16280
+ const [{ ClassReviewStore }, { CorrectionClassReview }] = await Promise.all([
16281
+ import('../monitoring/ClassReviewStore.js'),
16282
+ import('../monitoring/CorrectionClassReview.js'),
16283
+ ]);
16284
+ const { evaluateCorrectionInstanceFix } = await import('../monitoring/CorrectionInstanceFixGate.js');
16285
+ const classReviewCfg = config.monitoring?.correctionClassReview ?? {};
16286
+ const classReviewStore = new ClassReviewStore({
16287
+ dbPath: path.join(config.stateDir, 'class-reviews.db'),
16288
+ machineId: coordinator.identity?.machineId ?? os.hostname(),
16289
+ });
16290
+ if (replicatedRecordEmitter) {
16291
+ const { CLASS_REVIEW_STORE_KEY, buildClassReviewRecordData } = await import('../core/ClassReviewReplicatedStore.js');
16292
+ classReviewStore.setReplicationEmitter({
16293
+ emitPut: (record) => replicatedRecordEmitter.emit(CLASS_REVIEW_STORE_KEY, record.dedupeKey, (hlc, origin, observed) => buildClassReviewRecordData({ record, hlc, op: 'put', origin, observed })),
16294
+ });
16295
+ }
16296
+ if (_stateSyncStoresResolved?.classReview?.enabled && replicatedPeerStreamReader) {
16297
+ const { CLASS_REVIEW_STORE_KEY, classReviewFromOriginRecord } = await import('../core/ClassReviewReplicatedStore.js');
16298
+ classReviewStore.setRemoteReader({
16299
+ get: (dedupeKey) => replicatedPeerStreamReader.loadOriginRecords(CLASS_REVIEW_STORE_KEY, dedupeKey)
16300
+ .flatMap((record) => { const parsed = classReviewFromOriginRecord(record); return parsed ? [parsed] : []; }),
16301
+ keys: () => replicatedPeerStreamReader.listRecordKeys(CLASS_REVIEW_STORE_KEY),
16302
+ });
16303
+ }
16304
+ const classReviewAuditPath = path.join(config.stateDir, 'logs', 'correction-class-review.jsonl');
16305
+ const classReview = new CorrectionClassReview({
16306
+ store: classReviewStore,
16307
+ intelligence: sharedIntelligence,
16308
+ dryRun: classReviewCfg.dryRun !== false,
16309
+ maxAttempts: classReviewCfg.maxAttempts,
16310
+ maxReviewsPerTick: classReviewCfg.maxReviewsPerTick,
16311
+ maxOpenArtifacts: classReviewCfg.maxOpenArtifacts,
16312
+ admitCorrectionAction: ({ correctionId, classReviewRef }) => evaluateCorrectionInstanceFix({
16313
+ originCorrection: true, correctionId, claimedClassReviewRef: classReviewRef,
16314
+ dryRun: classReviewCfg.dryRun !== false,
16315
+ correctionLedger: correctionLedgerForClassReview ?? null,
16316
+ classReviewStore,
16317
+ }),
16318
+ standardTitles: () => {
16319
+ try {
16320
+ const registry = fs.readFileSync(path.join(config.projectDir, 'docs', 'STANDARDS-REGISTRY.md'), 'utf8');
16321
+ return [...registry.matchAll(/^###\s+(.+)$/gm)].map((match) => match[1].trim()).slice(0, 100);
16322
+ }
16323
+ catch {
16324
+ return [];
16325
+ }
16326
+ },
16327
+ createInitiative: async (input) => {
16328
+ const created = await initiativeTracker.create({
16329
+ id: String(input.id), title: String(input.title), description: String(input.description),
16330
+ phases: [{ id: 'operator-ratification', name: 'Operator ratification' }],
16331
+ needsUser: true,
16332
+ needsUserReason: 'Standards amendments require explicit operator ratification.',
16333
+ });
16334
+ return { id: created.id };
16335
+ },
16336
+ addAction: (input) => {
16337
+ const recovery = input.origin === 'correction-class-review-recovery';
16338
+ const action = evolution.addAction({
16339
+ title: String(input.title),
16340
+ description: `Correction-derived process improvement. classReviewRef=${String(input.classReviewRef)}; autonomous execution is forbidden.`,
16341
+ priority: 'medium',
16342
+ source: { platform: 'correction-class-review', context: 'process-gap' },
16343
+ tags: [recovery ? 'origin:class-review-recovery' : 'origin:correction', `class-review:${String(input.classReviewRef)}`],
16344
+ });
16345
+ return { id: action.id };
16346
+ },
16347
+ attentionRoute: async (input) => {
16348
+ await telegram?.createAttentionItem({
16349
+ id: `correction-class-review:${input.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').slice(0, 48)}`,
16350
+ title: input.title, summary: input.body, priority: input.priority === 'high' ? 'HIGH' : 'NORMAL',
16351
+ category: 'general', sourceContext: 'correction-class-review',
16352
+ });
16353
+ },
16354
+ audit: (event) => {
16355
+ try {
16356
+ fs.mkdirSync(path.dirname(classReviewAuditPath), { recursive: true });
16357
+ fs.appendFileSync(classReviewAuditPath, `${JSON.stringify({ ts: new Date().toISOString(), ...event })}\n`, { mode: 0o600 });
16358
+ }
16359
+ catch { /* @silent-fallback-ok — audit is best-effort */ }
16360
+ },
16361
+ });
16362
+ recordCorrectionClassReview = (record) => { classReview.record(record, 'operator-attributed'); };
16363
+ }
16364
+ catch (error) {
16365
+ console.warn('[CorrectionClassReview] automated capture wiring unavailable:', error.message);
16366
+ }
16367
+ }
16248
16368
  // Project-scope Phase 1.9 — wire the digest cache writer so every
16249
16369
  // project mutation re-renders `.instar/projects-digest.cache`. The
16250
16370
  // session-start + compaction-recovery hooks read this file directly
@@ -22476,6 +22596,15 @@ export async function startServer(options) {
22476
22596
  peers = (_listPoolMachines?.() ?? []).filter((m) => m.machineId !== _meshSelfId && !!m.lastKnownUrl).map((m) => ({ machineId: m.machineId, nickname: m.nickname ?? m.machineId, url: m.lastKnownUrl }));
22477
22597
  } if (peers.length === 0)
22478
22598
  return []; const { fetchPeerSubscriptionViews } = await import('../core/fetchPeerSubscriptionViews.js'); return fetchPeerSubscriptionViews({ peers: () => peers, fetchImpl: fetch, authToken: config.authToken ?? '' }); }, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, inUseAccountResolver, enrollmentWizard, accountFollowMeRevocation, credentialRepointing, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, greenPrAutoMerger: greenPrAutoMerger ?? undefined, guardLatchStore: guardLatchStore ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, topicProfile: _topicProfileCtx ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, meshBindActive: coordinator.managers.identityManager.hasIdentity() && config.multiMachine?.meshTransport?.enabled !== false, localSigningKeyPem, leaseTransport, peerEndpointRecorder, getSelfMeshEndpoints, onLeasePullRequest: () => leaseCoordinatorRef?.currentLease() ?? null, liveTailReceiver, handoffWireTransport, onHandoffBegin, onHandoffInitiate: handoffInitiate, handoffInProgress: handoffSentinelInProgress, messageLedger, currentInboundByTopic, replyMarkerTransport, onReplyMarker: messageLedger ? (marker) => { const m = marker; messageLedger.applyRemoteReplyMarker(m.dedupeKey, { platform: m.platform, replyIdempotencyKey: m.replyIdempotencyKey, epoch: m.epoch, topic: m.topic ?? null }); } : undefined, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, conversationRegistry, conversationBindAuth, conversationFollowThrough, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, threadLog, threadMessageRecorder, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, a2aDeliveryTracker: a2aDeliveryTracker ?? undefined, responseReviewGate, reviewCanaryBattery, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, ropeHealthMonitor, writeAdmission: writeAdmission ?? undefined, getInboundQueue: () => _inboundQueue, getMachineCoherence: () => _machineCoherenceSentinel, meshRpcDispatcher, deliverA2aToMachine: _deliverA2aToMachine ?? undefined, workingSetPullCoordinator, workingSetArtifactManager, orchestratorPoller, commitmentReplicaStore, preferenceReplicaStore, replicatedRecordEmitter, conflictStore, rollbackUnmerge, droppedOriginRegistry, preferencesUnionReader, forwardCommitmentMutate, sessionOwnershipRegistry, sendDrain: _sendDrain ?? undefined, topicPinStore: _topicPinStore ?? undefined, topicPinSkewQuarantine: _topicPinSkewQuarantine ?? undefined, topicPinFoldView: _topicPinFoldView ?? undefined, ownershipReconciler: _ownershipReconciler ?? undefined, staleOwnerEngine: _staleOwnerEngine ?? undefined, duplicateReconciler: _duplicateReconciler ?? undefined, ownerDarkLadder: _ownerDarkLadder ?? undefined, spawnAdmission: _spawnAdmission ?? undefined, judgmentProvenance: _judgmentProvenance ?? undefined, leaseHandback: _leaseHandbackCtx ?? undefined, streamTicketStore: _streamTicketStore ?? undefined, poolStreamAllowRemoteInput: config.dashboard?.poolStream?.allowRemoteInput ?? false, poolStreamConnector: _poolStreamConnector ?? undefined, secretSync: _secretSyncHandle ?? undefined, meshSelfId: _meshSelfId ?? undefined, resolveRouterUrl: _resolveRouterUrl ?? undefined, resolvePeerUrls: _resolvePeerUrls ?? undefined, guardRegistry, listPoolMachines: _listPoolMachines ?? undefined, deliverMandateToMachine: _deliverMandateToMachine ?? undefined, poolLink: _poolLink ?? undefined, poolPollCache: _poolPollCache ?? undefined, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, externalHogSentinel, orphanedWorkSentinel, mcpProcessReaper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, autonomousLivenessReconciler, enforcedTerminationStatus: () => enforcedTerminationWatchdog?.guardStatus() ?? null, prHandLease: prHandLease ?? undefined, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier, liveTestGate, liveTestGateMode, liveTestRunnerCtx }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
22599
+ if (_stateSyncStoresResolved?.classReview?.enabled && replicatedPeerStreamReader) {
22600
+ const { CLASS_REVIEW_STORE_KEY, classReviewFromOriginRecord } = await import('../core/ClassReviewReplicatedStore.js');
22601
+ const reader = replicatedPeerStreamReader;
22602
+ server.setClassReviewRemoteReader({
22603
+ get: (dedupeKey) => reader.loadOriginRecords(CLASS_REVIEW_STORE_KEY, dedupeKey)
22604
+ .flatMap((record) => { const parsed = classReviewFromOriginRecord(record); return parsed ? [parsed] : []; }),
22605
+ keys: () => reader.listRecordKeys(CLASS_REVIEW_STORE_KEY),
22606
+ });
22607
+ }
22479
22608
  // wired before the server existed; from here on inbound binds use the
22480
22609
  // server's own store instance.
22481
22610
  _agentServerRef = server;