instar 1.3.1619 → 1.3.1621

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 (100) hide show
  1. package/dist/commands/server.d.ts +6 -0
  2. package/dist/commands/server.d.ts.map +1 -1
  3. package/dist/commands/server.js +115 -9
  4. package/dist/commands/server.js.map +1 -1
  5. package/dist/core/PostUpdateMigrator.d.ts +6 -0
  6. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  7. package/dist/core/PostUpdateMigrator.js +24 -0
  8. package/dist/core/PostUpdateMigrator.js.map +1 -1
  9. package/dist/core/TopicProfileOrchestrator.d.ts +4 -0
  10. package/dist/core/TopicProfileOrchestrator.d.ts.map +1 -1
  11. package/dist/core/TopicProfileOrchestrator.js +14 -1
  12. package/dist/core/TopicProfileOrchestrator.js.map +1 -1
  13. package/dist/core/TopicSpawnBriefStore.d.ts +48 -0
  14. package/dist/core/TopicSpawnBriefStore.d.ts.map +1 -0
  15. package/dist/core/TopicSpawnBriefStore.js +107 -0
  16. package/dist/core/TopicSpawnBriefStore.js.map +1 -0
  17. package/dist/core/componentCategories.d.ts.map +1 -1
  18. package/dist/core/componentCategories.js +1 -0
  19. package/dist/core/componentCategories.js.map +1 -1
  20. package/dist/core/devGatedFeatures.js +1 -1
  21. package/dist/core/devGatedFeatures.js.map +1 -1
  22. package/dist/data/llmBenchCoverage.d.ts.map +1 -1
  23. package/dist/data/llmBenchCoverage.js +5 -0
  24. package/dist/data/llmBenchCoverage.js.map +1 -1
  25. package/dist/data/provenanceCoverage.d.ts +2 -0
  26. package/dist/data/provenanceCoverage.d.ts.map +1 -1
  27. package/dist/data/provenanceCoverage.js +15 -0
  28. package/dist/data/provenanceCoverage.js.map +1 -1
  29. package/dist/data/standards-guard-index.json +1 -1
  30. package/dist/data/standards-guard-index.meta.json +2 -2
  31. package/dist/data/standards-registry.meta.json +1 -1
  32. package/dist/monitoring/MachineWedgeJudge.d.ts +28 -0
  33. package/dist/monitoring/MachineWedgeJudge.d.ts.map +1 -0
  34. package/dist/monitoring/MachineWedgeJudge.js +114 -0
  35. package/dist/monitoring/MachineWedgeJudge.js.map +1 -0
  36. package/dist/monitoring/MachineWedgeNotice.d.ts +38 -0
  37. package/dist/monitoring/MachineWedgeNotice.d.ts.map +1 -0
  38. package/dist/monitoring/MachineWedgeNotice.js +71 -0
  39. package/dist/monitoring/MachineWedgeNotice.js.map +1 -0
  40. package/dist/monitoring/guardManifest.d.ts.map +1 -1
  41. package/dist/monitoring/guardManifest.js +1 -0
  42. package/dist/monitoring/guardManifest.js.map +1 -1
  43. package/dist/monitoring/machineMaintenance/DrainRehearsal.d.ts +6 -0
  44. package/dist/monitoring/machineMaintenance/DrainRehearsal.d.ts.map +1 -1
  45. package/dist/monitoring/machineMaintenance/DrainRehearsal.js +7 -2
  46. package/dist/monitoring/machineMaintenance/DrainRehearsal.js.map +1 -1
  47. package/dist/monitoring/machineMaintenance/HostMaintenanceStore.d.ts +36 -0
  48. package/dist/monitoring/machineMaintenance/HostMaintenanceStore.d.ts.map +1 -1
  49. package/dist/monitoring/machineMaintenance/HostMaintenanceStore.js +54 -0
  50. package/dist/monitoring/machineMaintenance/HostMaintenanceStore.js.map +1 -1
  51. package/dist/monitoring/machineMaintenance/WedgeMonitor.d.ts +191 -0
  52. package/dist/monitoring/machineMaintenance/WedgeMonitor.d.ts.map +1 -0
  53. package/dist/monitoring/machineMaintenance/WedgeMonitor.js +489 -0
  54. package/dist/monitoring/machineMaintenance/WedgeMonitor.js.map +1 -0
  55. package/dist/monitoring/machineMaintenance/readings.d.ts +46 -0
  56. package/dist/monitoring/machineMaintenance/readings.d.ts.map +1 -1
  57. package/dist/monitoring/machineMaintenance/readings.js +71 -8
  58. package/dist/monitoring/machineMaintenance/readings.js.map +1 -1
  59. package/dist/monitoring/machineMaintenance/wedgeEvidence.d.ts +73 -0
  60. package/dist/monitoring/machineMaintenance/wedgeEvidence.d.ts.map +1 -0
  61. package/dist/monitoring/machineMaintenance/wedgeEvidence.js +111 -0
  62. package/dist/monitoring/machineMaintenance/wedgeEvidence.js.map +1 -0
  63. package/dist/monitoring/machineMaintenance/wedgeWindow.d.ts +94 -0
  64. package/dist/monitoring/machineMaintenance/wedgeWindow.d.ts.map +1 -0
  65. package/dist/monitoring/machineMaintenance/wedgeWindow.js +126 -0
  66. package/dist/monitoring/machineMaintenance/wedgeWindow.js.map +1 -0
  67. package/dist/monitoring/selfaction/policies.d.ts.map +1 -1
  68. package/dist/monitoring/selfaction/policies.js +15 -0
  69. package/dist/monitoring/selfaction/policies.js.map +1 -1
  70. package/dist/native/instar-desktop-host +0 -0
  71. package/dist/scaffold/templates.d.ts.map +1 -1
  72. package/dist/scaffold/templates.js +2 -1
  73. package/dist/scaffold/templates.js.map +1 -1
  74. package/dist/server/CapabilityIndex.js +1 -1
  75. package/dist/server/CapabilityIndex.js.map +1 -1
  76. package/dist/server/routes.d.ts +3 -0
  77. package/dist/server/routes.d.ts.map +1 -1
  78. package/dist/server/routes.js +56 -12
  79. package/dist/server/routes.js.map +1 -1
  80. package/dist/server/sessionSpawnTopicBinding.d.ts +26 -0
  81. package/dist/server/sessionSpawnTopicBinding.d.ts.map +1 -1
  82. package/dist/server/sessionSpawnTopicBinding.js +50 -0
  83. package/dist/server/sessionSpawnTopicBinding.js.map +1 -1
  84. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  85. package/dist/testing/selfActionRegistry.js +63 -0
  86. package/dist/testing/selfActionRegistry.js.map +1 -1
  87. package/package.json +1 -1
  88. package/src/data/builtin-manifest.json +63 -63
  89. package/src/data/llmBenchCoverage.ts +7 -0
  90. package/src/data/provenanceCoverage.ts +18 -0
  91. package/src/data/standards-guard-index.json +1 -1
  92. package/src/data/standards-guard-index.meta.json +2 -2
  93. package/src/data/standards-registry.meta.json +1 -1
  94. package/src/scaffold/templates.ts +2 -1
  95. package/upgrades/1.3.1620.md +26 -0
  96. package/upgrades/1.3.1621.md +27 -0
  97. package/upgrades/eli16/profile-restart-keeps-spawn-brief.md +24 -0
  98. package/upgrades/side-effects/machine-wedge-dryrun.eli16.md +15 -0
  99. package/upgrades/side-effects/machine-wedge-dryrun.md +146 -0
  100. package/upgrades/side-effects/profile-restart-keeps-spawn-brief.md +91 -0
@@ -22,4 +22,30 @@ export declare function persistDiskTopicSessionBinding(opts: {
22
22
  tmuxSession: string;
23
23
  topicName?: string;
24
24
  }): void;
25
+ /**
26
+ * Topic-profile resolution for a topic-bound direct spawn (POST /sessions/spawn).
27
+ *
28
+ * Mirrors spawnSessionForTopic's single resolution point: the topic's resolved
29
+ * profile supplies framework + model for every axis the request leaves unset
30
+ * (an explicit request value always wins). Returns `applied` — what the launch
31
+ * will actually carry, in the orchestrator's AppliedProfile shape — so the
32
+ * route can record it and the profile orchestrator never mistakes a freshly
33
+ * spawned session for one whose pin "wasn't applied".
34
+ *
35
+ * thinkingMode/effort are recorded as null: the direct spawn path has no
36
+ * launch control for them, and recording a value it did not apply would hide
37
+ * a real divergence.
38
+ */
39
+ export declare function resolveTopicSpawnProfile(input: {
40
+ resolver?: {
41
+ resolve(topicId: number): import('../core/TopicProfileResolver.js').ResolvedTopicProfile;
42
+ } | null;
43
+ topicId?: number;
44
+ requestedFramework?: import('../core/intelligenceProviderFactory.js').IntelligenceFramework;
45
+ requestedModel?: string;
46
+ }): {
47
+ framework?: import('../core/intelligenceProviderFactory.js').IntelligenceFramework;
48
+ model?: string;
49
+ applied: import('../core/TopicProfileOrchestrator.js').AppliedProfile | null;
50
+ };
25
51
  //# sourceMappingURL=sessionSpawnTopicBinding.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessionSpawnTopicBinding.d.ts","sourceRoot":"","sources":["../../src/server/sessionSpawnTopicBinding.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,wBAAwB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA4BjF;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CAoBP"}
1
+ {"version":3,"file":"sessionSpawnTopicBinding.d.ts","sourceRoot":"","sources":["../../src/server/sessionSpawnTopicBinding.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,wBAAwB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA4BjF;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CAoBP;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,iCAAiC,EAAE,oBAAoB,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/G,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,wCAAwC,EAAE,qBAAqB,CAAC;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG;IACF,SAAS,CAAC,EAAE,OAAO,wCAAwC,EAAE,qBAAqB,CAAC;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,qCAAqC,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9E,CAiCA"}
@@ -47,4 +47,54 @@ export function persistDiskTopicSessionBinding(opts) {
47
47
  fs.writeFileSync(tmpPath, JSON.stringify(registry, null, 2));
48
48
  fs.renameSync(tmpPath, registryPath);
49
49
  }
50
+ /**
51
+ * Topic-profile resolution for a topic-bound direct spawn (POST /sessions/spawn).
52
+ *
53
+ * Mirrors spawnSessionForTopic's single resolution point: the topic's resolved
54
+ * profile supplies framework + model for every axis the request leaves unset
55
+ * (an explicit request value always wins). Returns `applied` — what the launch
56
+ * will actually carry, in the orchestrator's AppliedProfile shape — so the
57
+ * route can record it and the profile orchestrator never mistakes a freshly
58
+ * spawned session for one whose pin "wasn't applied".
59
+ *
60
+ * thinkingMode/effort are recorded as null: the direct spawn path has no
61
+ * launch control for them, and recording a value it did not apply would hide
62
+ * a real divergence.
63
+ */
64
+ export function resolveTopicSpawnProfile(input) {
65
+ const passthrough = { framework: input.requestedFramework, model: input.requestedModel, applied: null };
66
+ if (!input.resolver || input.topicId === undefined)
67
+ return passthrough;
68
+ let resolved;
69
+ try {
70
+ resolved = input.resolver.resolve(input.topicId);
71
+ }
72
+ catch {
73
+ // @silent-fallback-ok: an unresolvable profile degrades to the request's
74
+ // own values (today's behaviour) and records nothing.
75
+ return passthrough;
76
+ }
77
+ const framework = input.requestedFramework ?? resolved.framework;
78
+ // The profile's model only rides a launch on the framework it was resolved
79
+ // for; a local-model binding is applied by the topic spawn path, not here.
80
+ const profileModelUsable = framework === resolved.framework
81
+ && resolved.sources?.model !== 'local-model-binding';
82
+ const useProfileModel = input.requestedModel === undefined && profileModelUsable;
83
+ const model = input.requestedModel ?? (useProfileModel ? resolved.model : undefined);
84
+ return {
85
+ framework,
86
+ model,
87
+ applied: {
88
+ framework,
89
+ model: input.requestedModel !== undefined
90
+ ? input.requestedModel
91
+ : useProfileModel
92
+ ? (resolved.modelTier ? null : (resolved.model ?? null))
93
+ : null,
94
+ modelTier: useProfileModel ? (resolved.modelTier ?? null) : null,
95
+ thinkingMode: null,
96
+ effort: null,
97
+ },
98
+ };
99
+ }
50
100
  //# sourceMappingURL=sessionSpawnTopicBinding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sessionSpawnTopicBinding.js","sourceRoot":"","sources":["../../src/server/sessionSpawnTopicBinding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionSpawnTopicBinding.js","sourceRoot":"","sources":["../../src/server/sessionSpawnTopicBinding.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"selfActionRegistry.d.ts","sourceRoot":"","sources":["../../src/testing/selfActionRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA+BH,uFAAuF;AACvF,MAAM,WAAW,YAAY;IAC3B,KAAK,IAAI,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,gGAAgG;IAChG,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,wEAAwE;IACxE,eAAe,IAAI,OAAO,CAAC;IAC3B,8EAA8E;IAC9E,gBAAgB,IAAI,OAAO,CAAC;IAC5B,qFAAqF;IACrF,mBAAmB,IAAI,OAAO,CAAC;IAC/B,uGAAuG;IACvG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9C;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,2BAA2B;AAC3B,wBAAgB,cAAc,IAAI,UAAU,CAY3C;AAED,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,iBAAiB,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,GAAG;QAAE,IAAI,IAAI,IAAI,CAAA;KAAE,CAAC;IAC1E,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,sGAAsG;IACtG,eAAe,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,0FAA0F;IAC1F,cAAc,EACV;QAAE,gBAAgB,EAAE,KAAK,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GACpD;QAAE,gBAAgB,EAAE,IAAI,CAAC;QAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,KAAK;YAAE,IAAI,IAAI,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;CAClH;AAo1GD,eAAO,MAAM,uBAAuB,EAAE,oBAAoB,EA+EzD,CAAC"}
1
+ {"version":3,"file":"selfActionRegistry.d.ts","sourceRoot":"","sources":["../../src/testing/selfActionRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA+BH,uFAAuF;AACvF,MAAM,WAAW,YAAY;IAC3B,KAAK,IAAI,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,gGAAgG;IAChG,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,wEAAwE;IACxE,eAAe,IAAI,OAAO,CAAC;IAC3B,8EAA8E;IAC9E,gBAAgB,IAAI,OAAO,CAAC;IAC5B,qFAAqF;IACrF,mBAAmB,IAAI,OAAO,CAAC;IAC/B,uGAAuG;IACvG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9C;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,2BAA2B;AAC3B,wBAAgB,cAAc,IAAI,UAAU,CAY3C;AAED,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,iBAAiB,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,GAAG;QAAE,IAAI,IAAI,IAAI,CAAA;KAAE,CAAC;IAC1E,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,sGAAsG;IACtG,eAAe,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,0FAA0F;IAC1F,cAAc,EACV;QAAE,gBAAgB,EAAE,KAAK,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GACpD;QAAE,gBAAgB,EAAE,IAAI,CAAC;QAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,KAAK;YAAE,IAAI,IAAI,IAAI,CAAA;SAAE,CAAA;KAAE,CAAC;CAClH;AAi5GD,eAAO,MAAM,uBAAuB,EAAE,oBAAoB,EAgFzD,CAAC"}
@@ -3530,6 +3530,68 @@ function preparingRunWatchdogModel(f, sink) {
3530
3530
  f.durableState.delete('preparing-notice-at');
3531
3531
  } };
3532
3532
  }
3533
+ /**
3534
+ * machine-wedge-notice — the wedge dry-run operator notice (machine-self-maintenance
3535
+ * Part E rung 7; WedgeMonitor + MachineWedgeNotice). Off by default (its own flag);
3536
+ * modelled here with the flag ON, the worst case. The pressure: two evidence families
3537
+ * positive at every 2-minute sample, forever. Convergence shape: the judge and the
3538
+ * notice are keyed on a durable wedge CONDITION held in the host store, which closes
3539
+ * only on a real negative observation of one of its families or a new boot. A server
3540
+ * restart starts a fresh in-memory window, so the candidate re-forms 20 minutes later
3541
+ * as a new episode, but it is the same condition: no second notice. Across conditions
3542
+ * (a flapping machine, not this fixture) it is also capped at one ordinary and one
3543
+ * breaker notice per 24 hours.
3544
+ */
3545
+ const machineWedgeNotice = {
3546
+ id: 'machine-wedge-notice',
3547
+ actionVerb: 'wedge-notify',
3548
+ models: 'src/monitoring/machineMaintenance/WedgeMonitor.ts (considerCandidate + sendNotice: durable condition latch, 24 h notice cap) via src/monitoring/MachineWedgeNotice.ts',
3549
+ modelsPath: 'src/monitoring/MachineWedgeNotice.ts',
3550
+ boundK: 1,
3551
+ perTargetBoundK: 1,
3552
+ ticks: 720,
3553
+ tickMs: 2 * 60_000, // 2-minute sampling while evidence is positive — 24 h of a wedge that never clears
3554
+ restartPosture: {
3555
+ pressureSurvives: true,
3556
+ restartUnderPressure: (f, sink) => makeMachineWedgeNotice(f, sink),
3557
+ },
3558
+ makeUnderPressure(f, sink) {
3559
+ return makeMachineWedgeNotice(f, sink);
3560
+ },
3561
+ };
3562
+ function makeMachineWedgeNotice(f, sink) {
3563
+ const WINDOW_MS = 20 * 60_000;
3564
+ const MIN_OBS = 3;
3565
+ const DAY_MS = 24 * 60 * 60_000;
3566
+ // In-memory: the evidence window (lost on restart, as in the real monitor).
3567
+ let run = null;
3568
+ return {
3569
+ tick() {
3570
+ sink.considered += 1;
3571
+ const now = f.clock.nowMs();
3572
+ // The pressure: both families positive at every sample (targetAlwaysRejects — the wedge never clears).
3573
+ const bothPositive = f.targetAlwaysRejects();
3574
+ if (!bothPositive) {
3575
+ // A real negative closes the durable condition (never reached under this fixture).
3576
+ f.durableState.delete('machine-wedge:condition');
3577
+ run = null;
3578
+ return;
3579
+ }
3580
+ run = run ? { startAt: run.startAt, observations: run.observations + 1 } : { startAt: now, observations: 1 };
3581
+ if (run.observations < MIN_OBS || now - run.startAt < WINDOW_MS)
3582
+ return;
3583
+ const condition = f.durableState.get('machine-wedge:condition');
3584
+ if (condition?.judged)
3585
+ return; // the same condition after a restart: no second notice
3586
+ f.durableState.set('machine-wedge:condition', { judged: true });
3587
+ const sent = (f.durableState.get('machine-wedge:notices') ?? []).filter((t) => now - t < DAY_MS);
3588
+ if (sent.length > 0)
3589
+ return;
3590
+ sink.emit({ verb: 'wedge-notify', target: 'machine:self' });
3591
+ f.durableState.set('machine-wedge:notices', [...sent, now]);
3592
+ },
3593
+ };
3594
+ }
3533
3595
  export const SELF_ACTION_CONTROLLERS = [
3534
3596
  desktopRelockGuardReplacement,
3535
3597
  desktopLockedHelperRespawn,
@@ -3609,5 +3671,6 @@ export const SELF_ACTION_CONTROLLERS = [
3609
3671
  deviceLimitSessionMove,
3610
3672
  replicatedStoreReconcilerRetry,
3611
3673
  preparingRunWatchdog,
3674
+ machineWedgeNotice,
3612
3675
  ];
3613
3676
  //# sourceMappingURL=selfActionRegistry.js.map