instar 1.3.581 → 1.3.583

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.
@@ -116,10 +116,29 @@ export interface RecordPreferenceOptions {
116
116
  * authoritative instruction (spec §3.6).
117
117
  */
118
118
  export declare function formatPreferencesForSessionStart(store: PreferencesStore, maxBytes?: number): string;
119
+ /**
120
+ * WS2.1 preferences-record replication emit seam (injected, dark by default). server.ts
121
+ * constructs the journal/clock AFTER the manager, so this is late-bound. PUT-ONLY by
122
+ * construction — recordPreference is the only writer and it upserts (keyed on dedupeKey);
123
+ * there is no delete path, so there is no emitDelete. Absent ⇒ strict single-machine no-op.
124
+ */
125
+ export interface PreferenceReplicationEmitter {
126
+ /** Emit a `put` for a freshly upserted preference entry (called from recordPreference). */
127
+ emitPut(entry: PreferenceEntry): void;
128
+ }
119
129
  export declare class PreferencesManager {
120
130
  private stateDir;
121
131
  private preferencesPath;
132
+ /** WS2.1 preferences-record replication emitter (injected, dark by default). Absent ⇒ no-op. */
133
+ private replication;
122
134
  constructor(stateDir: string);
135
+ /**
136
+ * Late-bind the WS2.1 preferences-record replication emitter (server.ts constructs the
137
+ * journal/clock AFTER the manager). Idempotent; passing undefined/null detaches (back to
138
+ * single-machine no-op). The emit funnel checks `this.replication` per write, so attaching
139
+ * mid-life takes effect on the next recordPreference.
140
+ */
141
+ setReplicationEmitter(emitter: PreferenceReplicationEmitter | null | undefined): void;
123
142
  /** Absolute path to the backing file (for tests / observability). */
124
143
  getPath(): string;
125
144
  /** Whether the backing file exists on disk. */
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesManager.d.ts","sourceRoot":"","sources":["../../src/core/PreferencesManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAQH,yEAAyE;AACzE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,qFAAqF;AACrF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAErD,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,UAAU,EAAE,oBAAoB,CAAC;IACjC,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,8CAA8C;AAC9C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wCAAwC;AACxC,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AA6BD;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,gBAAgB,EACvB,QAAQ,SAAO,GACd,MAAM,CAmBR;AAID,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,eAAe,CAAS;gBAEZ,QAAQ,EAAE,MAAM;IAIpC,qEAAqE;IACrE,OAAO,IAAI,MAAM;IAIjB,+CAA+C;IAC/C,MAAM,IAAI,OAAO;IAIjB;;;;OAIG;IACH,IAAI,IAAI,gBAAgB;IAqExB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,EAAE,KAAK,GAAE,uBAA4B,GAAG,eAAe;IA8DxG;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,SAAO,GAAG;QAC/B,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf;IAUD,gDAAgD;IAChD,OAAO,CAAC,WAAW;IAiCnB;;;;OAIG;IACH,oBAAoB,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;IAQvE;;;;OAIG;IACH,aAAa,IAAI,eAAe,EAAE;CAGnC"}
1
+ {"version":3,"file":"PreferencesManager.d.ts","sourceRoot":"","sources":["../../src/core/PreferencesManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAQH,yEAAyE;AACzE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,qFAAqF;AACrF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAErD,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,UAAU,EAAE,oBAAoB,CAAC;IACjC,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,8CAA8C;AAC9C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wCAAwC;AACxC,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AA6BD;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,gBAAgB,EACvB,QAAQ,SAAO,GACd,MAAM,CAmBR;AAID;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IAC3C,2FAA2F;IAC3F,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;CACvC;AAED,qBAAa,kBAAkB;IAMjB,OAAO,CAAC,QAAQ;IAL5B,OAAO,CAAC,eAAe,CAAS;IAEhC,gGAAgG;IAChG,OAAO,CAAC,WAAW,CAA6C;gBAE5C,QAAQ,EAAE,MAAM;IAIpC;;;;;OAKG;IACH,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAIrF,qEAAqE;IACrE,OAAO,IAAI,MAAM;IAIjB,+CAA+C;IAC/C,MAAM,IAAI,OAAO;IAIjB;;;;OAIG;IACH,IAAI,IAAI,gBAAgB;IAqExB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,EAAE,KAAK,GAAE,uBAA4B,GAAG,eAAe;IA4ExG;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,SAAO,GAAG;QAC/B,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf;IAUD,gDAAgD;IAChD,OAAO,CAAC,WAAW;IAiCnB;;;;OAIG;IACH,oBAAoB,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;IAQvE;;;;OAIG;IACH,aAAa,IAAI,eAAe,EAAE;CAGnC"}
@@ -85,14 +85,24 @@ export function formatPreferencesForSessionStart(store, maxBytes = 4000) {
85
85
  return '';
86
86
  return [header, intro, '', ...bodyLines, footer].join('\n');
87
87
  }
88
- // ── Main Class ───────────────────────────────────────────────────────
89
88
  export class PreferencesManager {
90
89
  stateDir;
91
90
  preferencesPath;
91
+ /** WS2.1 preferences-record replication emitter (injected, dark by default). Absent ⇒ no-op. */
92
+ replication = null;
92
93
  constructor(stateDir) {
93
94
  this.stateDir = stateDir;
94
95
  this.preferencesPath = path.join(stateDir, 'preferences.json');
95
96
  }
97
+ /**
98
+ * Late-bind the WS2.1 preferences-record replication emitter (server.ts constructs the
99
+ * journal/clock AFTER the manager). Idempotent; passing undefined/null detaches (back to
100
+ * single-machine no-op). The emit funnel checks `this.replication` per write, so attaching
101
+ * mid-life takes effect on the next recordPreference.
102
+ */
103
+ setReplicationEmitter(emitter) {
104
+ this.replication = emitter ?? null;
105
+ }
96
106
  /** Absolute path to the backing file (for tests / observability). */
97
107
  getPath() {
98
108
  return this.preferencesPath;
@@ -240,6 +250,20 @@ export class PreferencesManager {
240
250
  result.lastMutatedSeq = nextSeq;
241
251
  store.schemaVersion = PREFERENCES_SCHEMA_VERSION;
242
252
  this.writeAtomic(store);
253
+ // WS2.1 — best-effort preferences-record replication emission (dark by default; the
254
+ // emitter is only injected when multiMachine.stateSync.preferences.enabled is true).
255
+ // PUT-ONLY: recordPreference is the sole writer and upserts on dedupeKey, so a put on
256
+ // the upserted entry carries the latest state (a peer SEES the refreshed learning +
257
+ // bumped confidence). The emitter swallows its own errors, but we wrap defensively so a
258
+ // replication fault can NEVER break or roll back a local preference write — the durable
259
+ // on-disk state is already persisted above.
260
+ try {
261
+ this.replication?.emitPut(result);
262
+ }
263
+ catch {
264
+ // @silent-fallback-ok: replication is best-effort and must never break the local write.
265
+ // The emitter counts its own failures internally.
266
+ }
243
267
  return result;
244
268
  }
245
269
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesManager.js","sourceRoot":"","sources":["../../src/core/PreferencesManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PreferencesManager.js","sourceRoot":"","sources":["../../src/core/PreferencesManager.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,25 @@
30
30
  * On top of classification, a `minWakeIntervalMs` cooldown caps the emit rate so
31
31
  * even a misclassified burst can't trigger a recovery storm.
32
32
  *
33
+ * ## Recurring-drift guard for the MODERATE-load band (2026-06-15)
34
+ *
35
+ * The load guard (`maxLoadRatio`, default 1.5) and the consecutive-drift burst floor
36
+ * together miss one real cascade: a host oversubscribed only MODERATELY — load just
37
+ * above 1.0/core but below `maxLoadRatio` — stalls its event loop for tens of seconds
38
+ * *intermittently*, ~every couple of minutes. Because on-time ticks fall between those
39
+ * drifts, the consecutive counter resets (so the burst floor never trips), and because
40
+ * the 1-minute `loadavg[0]` sits below 1.5, the load guard never trips either. Each
41
+ * isolated drift then emits a FALSE wake, and the ~2-minute cadence outlasts the
42
+ * `minWakeIntervalMs` cooldown — the 2026-06-15 multi-machine cascade (loadRatio ~1.1/core,
43
+ * `Wake detected after ~33s sleep` roughly every 2 minutes while the host was in use).
44
+ *
45
+ * The recurring-drift guard closes that band: a SHORT drift within `recentDriftWindowMs`
46
+ * of a PRIOR short drift, while `loadRatio > recentDriftLoadFloor`, is recurring
47
+ * starvation and is suppressed — generalizing the burst floor from *consecutive* ticks
48
+ * to *recent* ticks. A genuine isolated sleep (no recent prior drift) and any drift on a
49
+ * lightly-loaded host (ratio <= the floor) are unaffected and still emit; long sleeps are
50
+ * always exempt. Set `recentDriftWindowMs: 0` to disable.
51
+ *
33
52
  * Suppressed events are NOT added to `wakeHistory`, so `getCumulativeSleepMsBetween`
34
53
  * (the wake-reaper's sleep-credit source) only ever counts genuine sleep.
35
54
  */
@@ -65,6 +84,20 @@ export interface SleepWakeDetectorConfig {
65
84
  * (the 2nd consecutive drift is already a storm). Set 0 to disable.
66
85
  */
67
86
  driftBurstSuppressFloor?: number;
87
+ /**
88
+ * A SHORT drift within this window (ms) of a PRIOR short drift, while
89
+ * `loadRatio > recentDriftLoadFloor`, is treated as recurring CPU starvation and
90
+ * suppressed — closing the moderate-load band (above the floor, below `maxLoadRatio`)
91
+ * where intermittent drifts dodge BOTH the load guard and the consecutive burst floor.
92
+ * Default: 300000 (5 min). Set 0 to disable.
93
+ */
94
+ recentDriftWindowMs?: number;
95
+ /**
96
+ * `loadavg[0] / cpuCount` above which the recurring-drift guard applies. At or below
97
+ * this the host is not oversubscribed, so a recurring short drift is trusted as a real
98
+ * brief sleep and still emits. Default: 1.0.
99
+ */
100
+ recentDriftLoadFloor?: number;
68
101
  /** Injectable system-load source (testing). Default: os.loadavg. */
69
102
  loadAvgProvider?: () => number[];
70
103
  /** Injectable CPU-count source (testing). Default: os.cpus().length. */
@@ -103,6 +136,12 @@ export declare class SleepWakeDetector extends EventEmitter {
103
136
  private longSleepFloorSeconds;
104
137
  private minWakeIntervalMs;
105
138
  private driftBurstSuppressFloor;
139
+ private recentDriftWindowMs;
140
+ private recentDriftLoadFloor;
141
+ /** Wall-clock (ms) of the most recent SHORT drift, emitted or suppressed. Drives the
142
+ * recurring-drift guard: a fresh short drift within `recentDriftWindowMs` of this,
143
+ * under elevated load, is recurring starvation. Null until the first short drift. */
144
+ private lastShortDriftAtMs;
106
145
  /** Count of BACK-TO-BACK drift ticks (reset by any on-time tick). A real sleep is
107
146
  * ONE isolated drift; sustained CPU starvation produces consecutive drifts. The
108
147
  * Nth+ consecutive drift is a storm, not a sleep, and is suppressed regardless of
@@ -1 +1 @@
1
- {"version":3,"file":"SleepWakeDetector.d.ts","sourceRoot":"","sources":["../../src/core/SleepWakeDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IACjC,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;IAChC,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG,UAAU,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0EAA0E;IAC1E,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAC1D,6DAA6D;IAC7D,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,uBAAuB,CAAS;IACxC;;;;;kDAK8C;IAC9C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,kBAAkB,CAA6B;gBAE3C,MAAM,GAAE,uBAA4B;IAchD,KAAK,IAAI,IAAI;IAoEb,IAAI,IAAI,IAAI;IAOZ;qFACiF;IACjF,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,iBAAiB;IAezB;;;;;;;;;;;;;;OAcG;IACH,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAanE,oDAAoD;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc;CAkB3C"}
1
+ {"version":3,"file":"SleepWakeDetector.d.ts","sourceRoot":"","sources":["../../src/core/SleepWakeDetector.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,25 @@
30
30
  * On top of classification, a `minWakeIntervalMs` cooldown caps the emit rate so
31
31
  * even a misclassified burst can't trigger a recovery storm.
32
32
  *
33
+ * ## Recurring-drift guard for the MODERATE-load band (2026-06-15)
34
+ *
35
+ * The load guard (`maxLoadRatio`, default 1.5) and the consecutive-drift burst floor
36
+ * together miss one real cascade: a host oversubscribed only MODERATELY — load just
37
+ * above 1.0/core but below `maxLoadRatio` — stalls its event loop for tens of seconds
38
+ * *intermittently*, ~every couple of minutes. Because on-time ticks fall between those
39
+ * drifts, the consecutive counter resets (so the burst floor never trips), and because
40
+ * the 1-minute `loadavg[0]` sits below 1.5, the load guard never trips either. Each
41
+ * isolated drift then emits a FALSE wake, and the ~2-minute cadence outlasts the
42
+ * `minWakeIntervalMs` cooldown — the 2026-06-15 multi-machine cascade (loadRatio ~1.1/core,
43
+ * `Wake detected after ~33s sleep` roughly every 2 minutes while the host was in use).
44
+ *
45
+ * The recurring-drift guard closes that band: a SHORT drift within `recentDriftWindowMs`
46
+ * of a PRIOR short drift, while `loadRatio > recentDriftLoadFloor`, is recurring
47
+ * starvation and is suppressed — generalizing the burst floor from *consecutive* ticks
48
+ * to *recent* ticks. A genuine isolated sleep (no recent prior drift) and any drift on a
49
+ * lightly-loaded host (ratio <= the floor) are unaffected and still emit; long sleeps are
50
+ * always exempt. Set `recentDriftWindowMs: 0` to disable.
51
+ *
33
52
  * Suppressed events are NOT added to `wakeHistory`, so `getCumulativeSleepMsBetween`
34
53
  * (the wake-reaper's sleep-credit source) only ever counts genuine sleep.
35
54
  */
@@ -45,6 +64,12 @@ export class SleepWakeDetector extends EventEmitter {
45
64
  longSleepFloorSeconds;
46
65
  minWakeIntervalMs;
47
66
  driftBurstSuppressFloor;
67
+ recentDriftWindowMs;
68
+ recentDriftLoadFloor;
69
+ /** Wall-clock (ms) of the most recent SHORT drift, emitted or suppressed. Drives the
70
+ * recurring-drift guard: a fresh short drift within `recentDriftWindowMs` of this,
71
+ * under elevated load, is recurring starvation. Null until the first short drift. */
72
+ lastShortDriftAtMs = null;
48
73
  /** Count of BACK-TO-BACK drift ticks (reset by any on-time tick). A real sleep is
49
74
  * ONE isolated drift; sustained CPU starvation produces consecutive drifts. The
50
75
  * Nth+ consecutive drift is a storm, not a sleep, and is suppressed regardless of
@@ -65,6 +90,8 @@ export class SleepWakeDetector extends EventEmitter {
65
90
  this.longSleepFloorSeconds = config.longSleepFloorSeconds ?? 300;
66
91
  this.minWakeIntervalMs = config.minWakeIntervalMs ?? 60000;
67
92
  this.driftBurstSuppressFloor = config.driftBurstSuppressFloor ?? 2;
93
+ this.recentDriftWindowMs = config.recentDriftWindowMs ?? 300000;
94
+ this.recentDriftLoadFloor = config.recentDriftLoadFloor ?? 1.0;
68
95
  this.loadAvgProvider = config.loadAvgProvider ?? (() => os.loadavg());
69
96
  this.cpuCountProvider = config.cpuCountProvider ?? (() => os.cpus().length);
70
97
  this.now = config.nowProvider ?? (() => Date.now());
@@ -86,6 +113,11 @@ export class SleepWakeDetector extends EventEmitter {
86
113
  const isLongSleep = sleepDuration >= this.longSleepFloorSeconds;
87
114
  const loadRatio = this.currentLoadRatio();
88
115
  this.consecutiveDrifts += 1;
116
+ // Record every SHORT drift's time (emitted or suppressed) so the recurring-drift
117
+ // guard below can measure recurrence; capture the prior value first for the check.
118
+ const prevShortDriftAtMs = this.lastShortDriftAtMs;
119
+ if (!isLongSleep)
120
+ this.lastShortDriftAtMs = now;
89
121
  // Consecutive-drift burst = sustained CPU starvation, not sleep. A genuine sleep
90
122
  // is ONE isolated drift (the next on-time tick resets the counter); the 2nd+
91
123
  // back-to-back SHORT drift is a storm. Suppress it regardless of the (lagging,
@@ -107,6 +139,26 @@ export class SleepWakeDetector extends EventEmitter {
107
139
  `(> ${this.maxLoadRatio}) — treating as CPU starvation, suppressing wake`);
108
140
  return;
109
141
  }
142
+ // Recurring short drift under MODERATE load (the band the two guards above miss):
143
+ // a short drift within recentDriftWindowMs of a PRIOR short drift, while load is
144
+ // above recentDriftLoadFloor (oversubscribed) but below maxLoadRatio, is recurring
145
+ // CPU starvation — the 2026-06-15 cascade where loadRatio sat ~1.1/core (under the
146
+ // 1.5 hard guard) yet the loop stalled every ~2min, and on-time ticks between the
147
+ // drifts reset the consecutive counter so the burst floor never tripped. A genuine
148
+ // isolated sleep (no recent prior drift) and any drift on a lightly-loaded host
149
+ // (ratio <= floor) still emit; long sleeps are exempt (handled above).
150
+ if (!isLongSleep &&
151
+ this.recentDriftWindowMs > 0 &&
152
+ loadRatio > this.recentDriftLoadFloor &&
153
+ prevShortDriftAtMs !== null &&
154
+ now - prevShortDriftAtMs < this.recentDriftWindowMs) {
155
+ this.recordSuppression('cpu-starvation', sleepDuration, loadRatio, now);
156
+ console.warn(`[SleepWakeDetector] Recurring short drift ~${sleepDuration}s within ` +
157
+ `${this.recentDriftWindowMs}ms of a prior short drift at load ratio ` +
158
+ `${loadRatio.toFixed(2)} (> ${this.recentDriftLoadFloor}) — recurring CPU ` +
159
+ `starvation, suppressing wake`);
160
+ return;
161
+ }
110
162
  // Rate-limit emitted wakes so even a misclassified burst can't storm
111
163
  // recovery. Long sleeps bypass the cooldown — recovery there is essential.
112
164
  if (!isLongSleep &&
@@ -1 +1 @@
1
- {"version":3,"file":"SleepWakeDetector.js","sourceRoot":"","sources":["../../src/core/SleepWakeDetector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SleepWakeDetector.js","sourceRoot":"","sources":["../../src/core/SleepWakeDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AAgFzB,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACzC,QAAQ,GAA0C,IAAI,CAAC;IACvD,QAAQ,CAAS;IACjB,mBAAmB,GAAkB,IAAI,CAAC;IAC1C,eAAe,CAAS;IACxB,gBAAgB,CAAS;IACzB,YAAY,CAAS;IACrB,qBAAqB,CAAS;IAC9B,iBAAiB,CAAS;IAC1B,uBAAuB,CAAS;IAChC,mBAAmB,CAAS;IAC5B,oBAAoB,CAAS;IACrC;;0FAEsF;IAC9E,kBAAkB,GAAkB,IAAI,CAAC;IACjD;;;;;kDAK8C;IACtC,iBAAiB,GAAG,CAAC,CAAC;IACtB,eAAe,CAAiB;IAChC,gBAAgB,CAAe;IAC/B,GAAG,CAAe;IAClB,WAAW,GAAgB,EAAE,CAAC;IAC9B,kBAAkB,GAA0B,EAAE,CAAC;IAEvD,YAAY,SAAkC,EAAE;QAC9C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;QACtD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,KAAK,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC;QAC/C,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,IAAI,GAAG,CAAC;QACjE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAC;QAC3D,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC;QAChE,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,GAAG,CAAC;QAC/D,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE3B,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YAEpB,IAAI,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC,CAAC,8BAA8B;YAE5G,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1E,MAAM,WAAW,GAAG,aAAa,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1C,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAC5B,iFAAiF;YACjF,mFAAmF;YACnF,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACnD,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;YAEhD,iFAAiF;YACjF,6EAA6E;YAC7E,+EAA+E;YAC/E,iFAAiF;YACjF,kFAAkF;YAClF,gFAAgF;YAChF,kFAAkF;YAClF,uEAAuE;YACvE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/G,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CACV,8BAA8B,aAAa,0BAA0B,IAAI,CAAC,iBAAiB,GAAG;oBAC5F,OAAO,IAAI,CAAC,uBAAuB,wCAAwC,CAC9E,CAAC;gBACF,OAAO;YACT,CAAC;YAED,uEAAuE;YACvE,IAAI,CAAC,WAAW,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CACV,8BAA8B,aAAa,sBAAsB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;oBACtF,MAAM,IAAI,CAAC,YAAY,kDAAkD,CAC5E,CAAC;gBACF,OAAO;YACT,CAAC;YAED,kFAAkF;YAClF,iFAAiF;YACjF,mFAAmF;YACnF,mFAAmF;YACnF,kFAAkF;YAClF,mFAAmF;YACnF,gFAAgF;YAChF,uEAAuE;YACvE,IACE,CAAC,WAAW;gBACZ,IAAI,CAAC,mBAAmB,GAAG,CAAC;gBAC5B,SAAS,GAAG,IAAI,CAAC,oBAAoB;gBACrC,kBAAkB,KAAK,IAAI;gBAC3B,GAAG,GAAG,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,EACnD,CAAC;gBACD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CACV,8CAA8C,aAAa,WAAW;oBACpE,GAAG,IAAI,CAAC,mBAAmB,0CAA0C;oBACrE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,oBAAoB,oBAAoB;oBAC3E,8BAA8B,CACjC,CAAC;gBACF,OAAO;YACT,CAAC;YAED,qEAAqE;YACrE,2EAA2E;YAC3E,IACE,CAAC,WAAW;gBACZ,IAAI,CAAC,mBAAmB,KAAK,IAAI;gBACjC,GAAG,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EACvD,CAAC;gBACD,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBAClE,OAAO,CAAC,IAAI,CACV,2CAA2C;oBACzC,IAAI,GAAG,GAAG,IAAI,CAAC,mBAAmB,QAAQ,IAAI,CAAC,iBAAiB,sCAAsC,CACzG,CAAC;gBACF,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,4CAA4C,aAAa,SAAS,CAAC,CAAC;YAChF,MAAM,KAAK,GAAc,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACzG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG;gBAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC5D,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,6CAA6C;IACtE,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED;qFACiF;IACzE,gBAAgB;QACtB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,CAAC,CAAC;QACf,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACpD,OAAO,KAAK,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAEO,iBAAiB,CACvB,MAA6B,EAC7B,YAAoB,EACpB,SAAiB,EACjB,KAAa;QAEb,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC3B,MAAM;YACN,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG;YAC5C,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;SACzC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,GAAG;YAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAC5E,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,2BAA2B,CAAC,OAAe,EAAE,KAAa;QACxD,IAAI,KAAK,IAAI,OAAO;YAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/C,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3C,IAAI,UAAU,GAAG,YAAY;gBAAE,KAAK,IAAI,UAAU,GAAG,YAAY,CAAC;QACpE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oDAAoD;IACpD,QAAQ,CAAC,OAAgB;QACvB,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,CAAC;QACxF,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,CAAC;QACjG,MAAM,kBAAkB,GAA0C;YAChE,gBAAgB,EAAE,CAAC;YACnB,QAAQ,EAAE,CAAC;SACZ,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,UAAU;YAAE,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,OAAO;YACL,SAAS,EAAE,QAAQ,CAAC,MAAM;YAC1B,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC;YAC/E,mBAAmB,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrG,eAAe,EAAE,UAAU,CAAC,MAAM;YAClC,kBAAkB;YAClB,gBAAgB,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SAC7F,CAAC;IACJ,CAAC;CACF"}
@@ -3987,6 +3987,16 @@ export interface MonitoringConfig {
3987
3987
  /** Minimum gap (ms) between EMITTED wakes; short drifts within it are
3988
3988
  * rate-limited. Long sleeps bypass it. Default: 60000. */
3989
3989
  minWakeIntervalMs?: number;
3990
+ /** A SHORT drift within this window (ms) of a PRIOR short drift, while load is
3991
+ * above `recentDriftLoadFloor`, is treated as recurring CPU starvation and
3992
+ * suppressed — catching the moderate-load band (below `maxLoadRatio`) where
3993
+ * isolated drifts dodge the consecutive burst floor. Default: 300000 (5 min).
3994
+ * Set 0 to disable this guard. */
3995
+ recentDriftWindowMs?: number;
3996
+ /** loadavg[0]/cpuCount above which the recent-drift recurrence guard applies.
3997
+ * Below this, a recurring short drift is trusted as a real brief sleep. Default:
3998
+ * 1.0 (the oversubscription threshold; the host has more runnable work than cores). */
3999
+ recentDriftLoadFloor?: number;
3990
4000
  };
3991
4001
  /**
3992
4002
  * SessionReaper — pressure-aware reaper of idle-but-alive sessions. The only