instar 1.3.895 → 1.3.896

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 (30) hide show
  1. package/dist/core/FailureEpisodeLatch.d.ts +8 -0
  2. package/dist/core/FailureEpisodeLatch.d.ts.map +1 -1
  3. package/dist/core/FailureEpisodeLatch.js +14 -0
  4. package/dist/core/FailureEpisodeLatch.js.map +1 -1
  5. package/dist/core/SelfHealGate.d.ts +148 -0
  6. package/dist/core/SelfHealGate.d.ts.map +1 -0
  7. package/dist/core/SelfHealGate.js +391 -0
  8. package/dist/core/SelfHealGate.js.map +1 -0
  9. package/dist/feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.d.ts +19 -0
  10. package/dist/feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.d.ts.map +1 -0
  11. package/dist/feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.js +118 -0
  12. package/dist/feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.js.map +1 -0
  13. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.d.ts +11 -1
  14. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.d.ts.map +1 -1
  15. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.js +88 -25
  16. package/dist/feedback-factory/drain/FeedbackFactoryGeneratedDefaults.js.map +1 -1
  17. package/dist/monitoring/selfaction/policies.d.ts.map +1 -1
  18. package/dist/monitoring/selfaction/policies.js +14 -0
  19. package/dist/monitoring/selfaction/policies.js.map +1 -1
  20. package/dist/server/AgentServer.d.ts.map +1 -1
  21. package/dist/server/AgentServer.js +24 -6
  22. package/dist/server/AgentServer.js.map +1 -1
  23. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  24. package/dist/testing/selfActionRegistry.js +25 -0
  25. package/dist/testing/selfActionRegistry.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/data/builtin-manifest.json +3 -3
  28. package/src/data/state-coherence-registry.json +17 -0
  29. package/upgrades/1.3.896.md +25 -0
  30. package/upgrades/side-effects/self-heal-gate.md +87 -0
@@ -45,7 +45,7 @@ import { FeedbackInitiativeConsumer } from '../feedback-factory/drain/FeedbackIn
45
45
  import { FeedbackReadinessArbiter } from '../feedback-factory/drain/FeedbackReadinessArbiter.js';
46
46
  import { FeedbackDrainService } from '../feedback-factory/drain/FeedbackDrainService.js';
47
47
  import { FeedbackDrainTickProxy, resolveFeedbackDrainOwnerMachineId } from '../feedback-factory/drain/FeedbackDrainTickProxy.js';
48
- import { inspectFeedbackFactoryGeneratedDefaults } from '../feedback-factory/drain/FeedbackFactoryGeneratedDefaults.js';
48
+ import { runFeedbackFactoryDefaultsSelfHeal } from '../feedback-factory/drain/FeedbackFactoryDefaultsSelfHeal.js';
49
49
  import { FeedbackConsumerPromotionStore } from '../feedback-factory/drain/FeedbackConsumerPromotionStore.js';
50
50
  import { resolveFeedbackDrainPosture } from '../feedback-factory/drain/FeedbackDrainPosture.js';
51
51
  import { FeedbackDrainBackupCadence } from '../feedback-factory/drain/FeedbackDrainBackupCadence.js';
@@ -1554,9 +1554,6 @@ export class AgentServer {
1554
1554
  // and exact-key Initiative handoff. Dev-live/fleet-dark, consumer dry-run
1555
1555
  // until a durable PIN-approved promotion record exists.
1556
1556
  try {
1557
- const generatedDefaultsNeedHeal = options.config.stateDir
1558
- ? inspectFeedbackFactoryGeneratedDefaults(options.config.stateDir, options.config.developmentAgent === true) === 'repair-needed'
1559
- : false;
1560
1557
  const drainEnabled = resolveDevAgentGate(options.config.feedbackFactory?.drain?.enabled, options.config);
1561
1558
  const consumerEnabled = resolveDevAgentGate(options.config.feedbackFactory?.consumer?.enabled, options.config);
1562
1559
  const dataDir = resolveCanonicalStoreDir(options.config);
@@ -1668,8 +1665,29 @@ export class AgentServer {
1668
1665
  return { ...finalized, reconciliation };
1669
1666
  };
1670
1667
  this.feedbackDrain = { service, store, promotion, tickProxy, checkpointBackup, finalizeFailoverRestore, isRestorePending: () => restorePending };
1671
- if (generatedDefaultsNeedHeal && sourceCheckout) {
1672
- console.warn('[feedback-factory] development defaults require repair; automated recovery is deferred to the shared SelfHealGate foundation lane');
1668
+ if (options.config.stateDir && sourceCheckout) {
1669
+ const selfHealBootId = randomUUID();
1670
+ void runFeedbackFactoryDefaultsSelfHeal({
1671
+ stateDir: options.config.stateDir,
1672
+ developmentAgent: options.config.developmentAgent === true,
1673
+ bootId: selfHealBootId,
1674
+ currentFence: () => isCanonicalOwner() ? `${selfMachineId}:${options.coordinator?.enabled ? options.coordinator.getLeaseEpoch() : localOwnerEpoch}` : null,
1675
+ notify: async (notice) => {
1676
+ const enqueue = this.telegramAdapter?.createAttentionItem;
1677
+ if (!enqueue)
1678
+ throw new Error('durable attention enqueue unavailable');
1679
+ await enqueue.call(this.telegramAdapter, {
1680
+ id: notice.id,
1681
+ title: 'Feedback defaults self-heal needs attention',
1682
+ description: `The bounded feedback-defaults repair reported ${notice.reason}.`,
1683
+ summary: `Feedback-defaults self-heal: ${notice.reason}`,
1684
+ priority: notice.priority,
1685
+ category: 'monitoring',
1686
+ sourceContext: 'self-heal-gate:feedback-defaults',
1687
+ });
1688
+ },
1689
+ audit: (event) => console.log(`[self-heal-gate] feedback-defaults ${event.event}${event.reason ? ` (${event.reason})` : ''}`),
1690
+ }).catch((error) => console.warn('[self-heal-gate] feedback-defaults attempt failed safely:', error instanceof Error ? error.message : 'unknown'));
1673
1691
  }
1674
1692
  if (options.config.developmentAgent === true && sourceCheckout) {
1675
1693
  const backupTick = () => {