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.
- package/dist/commands/server.d.ts +6 -0
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +115 -9
- package/dist/commands/server.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +6 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +24 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/TopicProfileOrchestrator.d.ts +4 -0
- package/dist/core/TopicProfileOrchestrator.d.ts.map +1 -1
- package/dist/core/TopicProfileOrchestrator.js +14 -1
- package/dist/core/TopicProfileOrchestrator.js.map +1 -1
- package/dist/core/TopicSpawnBriefStore.d.ts +48 -0
- package/dist/core/TopicSpawnBriefStore.d.ts.map +1 -0
- package/dist/core/TopicSpawnBriefStore.js +107 -0
- package/dist/core/TopicSpawnBriefStore.js.map +1 -0
- package/dist/core/componentCategories.d.ts.map +1 -1
- package/dist/core/componentCategories.js +1 -0
- package/dist/core/componentCategories.js.map +1 -1
- package/dist/core/devGatedFeatures.js +1 -1
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/data/llmBenchCoverage.d.ts.map +1 -1
- package/dist/data/llmBenchCoverage.js +5 -0
- package/dist/data/llmBenchCoverage.js.map +1 -1
- package/dist/data/provenanceCoverage.d.ts +2 -0
- package/dist/data/provenanceCoverage.d.ts.map +1 -1
- package/dist/data/provenanceCoverage.js +15 -0
- package/dist/data/provenanceCoverage.js.map +1 -1
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/dist/monitoring/MachineWedgeJudge.d.ts +28 -0
- package/dist/monitoring/MachineWedgeJudge.d.ts.map +1 -0
- package/dist/monitoring/MachineWedgeJudge.js +114 -0
- package/dist/monitoring/MachineWedgeJudge.js.map +1 -0
- package/dist/monitoring/MachineWedgeNotice.d.ts +38 -0
- package/dist/monitoring/MachineWedgeNotice.d.ts.map +1 -0
- package/dist/monitoring/MachineWedgeNotice.js +71 -0
- package/dist/monitoring/MachineWedgeNotice.js.map +1 -0
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +1 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/monitoring/machineMaintenance/DrainRehearsal.d.ts +6 -0
- package/dist/monitoring/machineMaintenance/DrainRehearsal.d.ts.map +1 -1
- package/dist/monitoring/machineMaintenance/DrainRehearsal.js +7 -2
- package/dist/monitoring/machineMaintenance/DrainRehearsal.js.map +1 -1
- package/dist/monitoring/machineMaintenance/HostMaintenanceStore.d.ts +36 -0
- package/dist/monitoring/machineMaintenance/HostMaintenanceStore.d.ts.map +1 -1
- package/dist/monitoring/machineMaintenance/HostMaintenanceStore.js +54 -0
- package/dist/monitoring/machineMaintenance/HostMaintenanceStore.js.map +1 -1
- package/dist/monitoring/machineMaintenance/WedgeMonitor.d.ts +191 -0
- package/dist/monitoring/machineMaintenance/WedgeMonitor.d.ts.map +1 -0
- package/dist/monitoring/machineMaintenance/WedgeMonitor.js +489 -0
- package/dist/monitoring/machineMaintenance/WedgeMonitor.js.map +1 -0
- package/dist/monitoring/machineMaintenance/readings.d.ts +46 -0
- package/dist/monitoring/machineMaintenance/readings.d.ts.map +1 -1
- package/dist/monitoring/machineMaintenance/readings.js +71 -8
- package/dist/monitoring/machineMaintenance/readings.js.map +1 -1
- package/dist/monitoring/machineMaintenance/wedgeEvidence.d.ts +73 -0
- package/dist/monitoring/machineMaintenance/wedgeEvidence.d.ts.map +1 -0
- package/dist/monitoring/machineMaintenance/wedgeEvidence.js +111 -0
- package/dist/monitoring/machineMaintenance/wedgeEvidence.js.map +1 -0
- package/dist/monitoring/machineMaintenance/wedgeWindow.d.ts +94 -0
- package/dist/monitoring/machineMaintenance/wedgeWindow.d.ts.map +1 -0
- package/dist/monitoring/machineMaintenance/wedgeWindow.js +126 -0
- package/dist/monitoring/machineMaintenance/wedgeWindow.js.map +1 -0
- package/dist/monitoring/selfaction/policies.d.ts.map +1 -1
- package/dist/monitoring/selfaction/policies.js +15 -0
- package/dist/monitoring/selfaction/policies.js.map +1 -1
- package/dist/native/instar-desktop-host +0 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +2 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/CapabilityIndex.js +1 -1
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +3 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +56 -12
- package/dist/server/routes.js.map +1 -1
- package/dist/server/sessionSpawnTopicBinding.d.ts +26 -0
- package/dist/server/sessionSpawnTopicBinding.d.ts.map +1 -1
- package/dist/server/sessionSpawnTopicBinding.js +50 -0
- package/dist/server/sessionSpawnTopicBinding.js.map +1 -1
- package/dist/testing/selfActionRegistry.d.ts.map +1 -1
- package/dist/testing/selfActionRegistry.js +63 -0
- package/dist/testing/selfActionRegistry.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +63 -63
- package/src/data/llmBenchCoverage.ts +7 -0
- package/src/data/provenanceCoverage.ts +18 -0
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/src/scaffold/templates.ts +2 -1
- package/upgrades/1.3.1620.md +26 -0
- package/upgrades/1.3.1621.md +27 -0
- package/upgrades/eli16/profile-restart-keeps-spawn-brief.md +24 -0
- package/upgrades/side-effects/machine-wedge-dryrun.eli16.md +15 -0
- package/upgrades/side-effects/machine-wedge-dryrun.md +146 -0
- package/upgrades/side-effects/profile-restart-keeps-spawn-brief.md +91 -0
|
@@ -24,19 +24,82 @@ const READ_ONLY_CALLS = {
|
|
|
24
24
|
chromeProcesses: { command: 'ps', args: ['-axo', 'pid=,lstart=,args='] },
|
|
25
25
|
battery: { command: 'pmset', args: ['-g', 'batt'] },
|
|
26
26
|
tmuxSessions: { command: 'tmux', args: ['list-sessions', '-F', '#{session_name}'] },
|
|
27
|
+
// Wedge evidence (Part E). The process table's state column, timed: a hung or
|
|
28
|
+
// refused `ps` is itself the F2 evidence.
|
|
29
|
+
processStates: { command: 'ps', args: ['-axo', 'stat='] },
|
|
30
|
+
// F1 on Linux: a no-op run through the user service manager. It starts one transient
|
|
31
|
+
// unit that runs `/bin/true` and is collected; it observes whether that path works.
|
|
32
|
+
userUnitProbe: { command: 'systemd-run', args: ['--user', '--quiet', '--wait', '--collect', '/bin/true'] },
|
|
33
|
+
// F1 on WSL: one no-op Windows command through interop.
|
|
34
|
+
interopProbe: { command: 'cmd.exe', args: ['/c', 'exit', '0'] },
|
|
35
|
+
// F2 on WSL: the Windows process table, timed.
|
|
36
|
+
windowsTasks: { command: 'tasklist.exe', args: ['/NH', '/FO', 'CSV'] },
|
|
27
37
|
};
|
|
38
|
+
const defaultExec = (command, args, options, callback) => execFile(command, args, options, (err, stdout) => callback(err, String(stdout)));
|
|
39
|
+
/**
|
|
40
|
+
* A child stuck in the kernel (uninterruptible sleep) ignores every signal, so
|
|
41
|
+
* execFile's own timeout never fires its callback. This guard settles the call
|
|
42
|
+
* anyway, a short grace after the timeout, as `timedOut` with code `no-exit`.
|
|
43
|
+
*/
|
|
44
|
+
export const PROBE_EXIT_GRACE_MS = 500;
|
|
45
|
+
function runCall(name, timeoutMs, tmuxPath, runChild = defaultExec, outstanding) {
|
|
46
|
+
const call = READ_ONLY_CALLS[name];
|
|
47
|
+
if (!call)
|
|
48
|
+
return Promise.reject(new Error(`not a read-only call: ${String(name)}`));
|
|
49
|
+
// A child of this probe that never exited is still out there. Starting another
|
|
50
|
+
// would pile up stuck children on a wedged machine, so the stuck one IS the answer.
|
|
51
|
+
if (outstanding?.has(name))
|
|
52
|
+
return Promise.resolve({ ok: false, stdout: null, ms: 0, timedOut: true, code: 'previous-still-running' });
|
|
53
|
+
const command = name === 'tmuxSessions' && tmuxPath ? tmuxPath : call.command;
|
|
54
|
+
const started = Date.now();
|
|
55
|
+
return new Promise((resolve) => {
|
|
56
|
+
let settled = false;
|
|
57
|
+
const finish = (r) => {
|
|
58
|
+
if (settled)
|
|
59
|
+
return;
|
|
60
|
+
settled = true;
|
|
61
|
+
clearTimeout(guard);
|
|
62
|
+
resolve(r);
|
|
63
|
+
};
|
|
64
|
+
const guard = setTimeout(() => {
|
|
65
|
+
outstanding?.add(name);
|
|
66
|
+
finish({ ok: false, stdout: null, ms: Date.now() - started, timedOut: true, code: 'no-exit' });
|
|
67
|
+
}, timeoutMs + PROBE_EXIT_GRACE_MS);
|
|
68
|
+
guard.unref?.();
|
|
69
|
+
try {
|
|
70
|
+
runChild(command, [...call.args], { timeout: timeoutMs, killSignal: 'SIGKILL', maxBuffer: 4 * 1024 * 1024, env: { ...process.env, LC_ALL: 'C' } }, (err, stdout) => {
|
|
71
|
+
outstanding?.delete(name);
|
|
72
|
+
const ms = Date.now() - started;
|
|
73
|
+
if (!err) {
|
|
74
|
+
finish({ ok: true, stdout, ms, timedOut: false, code: null });
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const e = err;
|
|
78
|
+
finish({ ok: false, stdout: null, ms, timedOut: e.killed === true, code: e.code ?? null });
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
// A spawn that throws synchronously (EAGAIN on some platforms) is a completed failure, not a hang.
|
|
83
|
+
finish({ ok: false, stdout: null, ms: Date.now() - started, timedOut: false, code: err?.code ?? 'spawn-error' });
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
28
87
|
/** `tmuxPath` replaces only the tmux executable, so a configured install is found. */
|
|
29
88
|
export function makeReadOnlyRunner(tmuxPath) {
|
|
30
|
-
return (name) => {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
return Promise.reject(new Error(`not a read-only call: ${String(name)}`));
|
|
34
|
-
const command = name === 'tmuxSessions' && tmuxPath ? tmuxPath : call.command;
|
|
35
|
-
return new Promise((resolve) => {
|
|
36
|
-
execFile(command, [...call.args], { timeout: 3000, maxBuffer: 4 * 1024 * 1024, env: { ...process.env, LC_ALL: 'C' } }, (err, stdout) => resolve(err ? null : stdout));
|
|
37
|
-
});
|
|
89
|
+
return async (name) => {
|
|
90
|
+
const r = await runCall(name, 3000, tmuxPath);
|
|
91
|
+
return r.ok ? r.stdout : null;
|
|
38
92
|
};
|
|
39
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* The wedge sampler's runner: same table, its own timeout, the outcome kept, and a
|
|
96
|
+
* result guaranteed within the timeout plus a short grace even if the child never exits.
|
|
97
|
+
* At most one stuck child per probe name.
|
|
98
|
+
*/
|
|
99
|
+
export function makeProbeRunner(runChild = defaultExec) {
|
|
100
|
+
const outstanding = new Set();
|
|
101
|
+
return (name, timeoutMs) => runCall(name, timeoutMs, undefined, runChild, outstanding);
|
|
102
|
+
}
|
|
40
103
|
export function parseBootTime(sysctlOutput) {
|
|
41
104
|
const match = /sec\s*=\s*(\d+)/.exec(sysctlOutput);
|
|
42
105
|
return match ? Number(match[1]) * 1000 : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readings.js","sourceRoot":"","sources":["../../../src/monitoring/machineMaintenance/readings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"readings.js","sourceRoot":"","sources":["../../../src/monitoring/machineMaintenance/readings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wedge evidence families (docs/specs/machine-self-maintenance.md, Part E), read
|
|
3
|
+
* from probe results. Pure: the probes run elsewhere.
|
|
4
|
+
*
|
|
5
|
+
* A family that cannot be read on a platform is `unknown`, never `negative`: a
|
|
6
|
+
* negative resets the window, and an unread source must not clear real evidence.
|
|
7
|
+
* A probe that timed out is a completed result of its family.
|
|
8
|
+
*
|
|
9
|
+
* | Family | macOS | Linux | Windows + WSL |
|
|
10
|
+
* | F1 GUI path | canary app (not shipped) + capture (not wired): unknown | `systemd-run --user` no-op | `cmd.exe /c exit` through interop |
|
|
11
|
+
* | F2 process table | `ps` timed, fork failure, uninterruptible count rising | same | same plus `tasklist.exe` timed |
|
|
12
|
+
* | F3 stuck dialog | not covered in this build | not applicable | not covered |
|
|
13
|
+
* | F4 agent symptoms | impaired verdict or event-loop lag while CPU idle >= 30%; spawn failures | same | same |
|
|
14
|
+
*/
|
|
15
|
+
import type { ProbeResult } from './readings.js';
|
|
16
|
+
import type { FamilyResult } from './wedgeWindow.js';
|
|
17
|
+
export type WedgePlatform = 'darwin' | 'linux' | 'wsl' | 'other';
|
|
18
|
+
export interface FamilyReading {
|
|
19
|
+
result: FamilyResult;
|
|
20
|
+
/** A short fixed reason. Never window titles, dialog text or command output. */
|
|
21
|
+
reason: string;
|
|
22
|
+
/** Measured parts, numbers and booleans only. */
|
|
23
|
+
detail?: Record<string, number | boolean | string | null>;
|
|
24
|
+
}
|
|
25
|
+
/** The uninterruptible-sleep state letter: `U` on macOS, `D` on Linux. */
|
|
26
|
+
export declare function uninterruptibleCount(psStat: string, platform: WedgePlatform): number;
|
|
27
|
+
/** Strictly rising over the last three readings. */
|
|
28
|
+
export declare function risingOverThree(counts: number[]): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* F2. `priorCounts` are earlier uninterruptible counts this boot, oldest first; the
|
|
31
|
+
* caller appends the returned count after this reading.
|
|
32
|
+
*/
|
|
33
|
+
export declare function readF2(input: {
|
|
34
|
+
platform: WedgePlatform;
|
|
35
|
+
ps: ProbeResult;
|
|
36
|
+
priorCounts: number[];
|
|
37
|
+
/** WSL only: the Windows process table, timed. */
|
|
38
|
+
tasklist?: ProbeResult | null;
|
|
39
|
+
}): {
|
|
40
|
+
reading: FamilyReading;
|
|
41
|
+
count: number | null;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* F1. `passedSinceBoot` is whether this same probe has passed since boot; until it
|
|
45
|
+
* has, a failure is `ineligible` (a machine where the probe never works is not wedged).
|
|
46
|
+
* `lockState` is the honest lock reading; locked or no console session makes F1
|
|
47
|
+
* ineligible on macOS.
|
|
48
|
+
*/
|
|
49
|
+
export declare function readF1(input: {
|
|
50
|
+
platform: WedgePlatform;
|
|
51
|
+
probe: ProbeResult | null;
|
|
52
|
+
passedSinceBoot: boolean;
|
|
53
|
+
lockState?: string | null;
|
|
54
|
+
}): {
|
|
55
|
+
reading: FamilyReading;
|
|
56
|
+
passed: boolean;
|
|
57
|
+
};
|
|
58
|
+
export interface LoadReading {
|
|
59
|
+
verdict: string;
|
|
60
|
+
cpuIdlePct: number | null;
|
|
61
|
+
eventLoopLagP99Ms: number | null;
|
|
62
|
+
sampleAgeMs: number;
|
|
63
|
+
}
|
|
64
|
+
export declare const F4_MIN_IDLE_PCT = 30;
|
|
65
|
+
export declare const F4_LAG_MS = 1000;
|
|
66
|
+
export declare const F4_SPAWN_FAILURES = 2;
|
|
67
|
+
export declare const F4_REPORT_MAX_AGE_MS = 60000;
|
|
68
|
+
/** F4. A stale or missing load report is unknown, unless spawn failures alone are positive. */
|
|
69
|
+
export declare function readF4(input: {
|
|
70
|
+
load: LoadReading | null;
|
|
71
|
+
spawnSystemFailures30m: number | null;
|
|
72
|
+
}): FamilyReading;
|
|
73
|
+
//# sourceMappingURL=wedgeEvidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wedgeEvidence.d.ts","sourceRoot":"","sources":["../../../src/monitoring/machineMaintenance/wedgeEvidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;CAC3D;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAKpF;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAIzD;AAID;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,EAAE,EAAE,WAAW,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC/B,GAAG;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA0BnD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAc9C;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,SAAS,OAAO,CAAC;AAC9B,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAE3C,+FAA+F;AAC/F,wBAAgB,MAAM,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,aAAa,CAWhH"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wedge evidence families (docs/specs/machine-self-maintenance.md, Part E), read
|
|
3
|
+
* from probe results. Pure: the probes run elsewhere.
|
|
4
|
+
*
|
|
5
|
+
* A family that cannot be read on a platform is `unknown`, never `negative`: a
|
|
6
|
+
* negative resets the window, and an unread source must not clear real evidence.
|
|
7
|
+
* A probe that timed out is a completed result of its family.
|
|
8
|
+
*
|
|
9
|
+
* | Family | macOS | Linux | Windows + WSL |
|
|
10
|
+
* | F1 GUI path | canary app (not shipped) + capture (not wired): unknown | `systemd-run --user` no-op | `cmd.exe /c exit` through interop |
|
|
11
|
+
* | F2 process table | `ps` timed, fork failure, uninterruptible count rising | same | same plus `tasklist.exe` timed |
|
|
12
|
+
* | F3 stuck dialog | not covered in this build | not applicable | not covered |
|
|
13
|
+
* | F4 agent symptoms | impaired verdict or event-loop lag while CPU idle >= 30%; spawn failures | same | same |
|
|
14
|
+
*/
|
|
15
|
+
/** The uninterruptible-sleep state letter: `U` on macOS, `D` on Linux. */
|
|
16
|
+
export function uninterruptibleCount(psStat, platform) {
|
|
17
|
+
const letter = platform === 'darwin' ? 'U' : 'D';
|
|
18
|
+
let n = 0;
|
|
19
|
+
for (const line of psStat.split('\n'))
|
|
20
|
+
if (line.trim().startsWith(letter))
|
|
21
|
+
n += 1;
|
|
22
|
+
return n;
|
|
23
|
+
}
|
|
24
|
+
/** Strictly rising over the last three readings. */
|
|
25
|
+
export function risingOverThree(counts) {
|
|
26
|
+
if (counts.length < 3)
|
|
27
|
+
return false;
|
|
28
|
+
const [a, b, c] = counts.slice(-3);
|
|
29
|
+
return a < b && b < c;
|
|
30
|
+
}
|
|
31
|
+
const FORK_FAILURE_CODES = new Set(['EAGAIN', 'ENOMEM']);
|
|
32
|
+
/**
|
|
33
|
+
* F2. `priorCounts` are earlier uninterruptible counts this boot, oldest first; the
|
|
34
|
+
* caller appends the returned count after this reading.
|
|
35
|
+
*/
|
|
36
|
+
export function readF2(input) {
|
|
37
|
+
const { ps, platform } = input;
|
|
38
|
+
if (ps.timedOut)
|
|
39
|
+
return { reading: { result: 'positive', reason: 'ps-timed-out', detail: { psMs: ps.ms } }, count: null };
|
|
40
|
+
if (!ps.ok) {
|
|
41
|
+
if (typeof ps.code === 'string' && FORK_FAILURE_CODES.has(ps.code)) {
|
|
42
|
+
return { reading: { result: 'positive', reason: 'fork-failure', detail: { code: ps.code } }, count: null };
|
|
43
|
+
}
|
|
44
|
+
return { reading: { result: 'unknown', reason: 'ps-unreadable', detail: { code: ps.code === null ? null : String(ps.code) } }, count: null };
|
|
45
|
+
}
|
|
46
|
+
const count = uninterruptibleCount(ps.stdout ?? '', platform);
|
|
47
|
+
const counts = [...input.priorCounts, count];
|
|
48
|
+
if (risingOverThree(counts)) {
|
|
49
|
+
return { reading: { result: 'positive', reason: 'uninterruptible-rising', detail: { uninterruptible: count, psMs: ps.ms } }, count };
|
|
50
|
+
}
|
|
51
|
+
if (platform === 'wsl' && input.tasklist?.timedOut) {
|
|
52
|
+
return { reading: { result: 'positive', reason: 'tasklist-timed-out', detail: { tasklistMs: input.tasklist.ms } }, count };
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
reading: {
|
|
56
|
+
result: 'negative',
|
|
57
|
+
reason: 'process-table-answers',
|
|
58
|
+
// The kernel-zone reading (data.kalloc.1024) is not wired in this build; its absence is named, not counted.
|
|
59
|
+
detail: { uninterruptible: count, psMs: ps.ms, kernelZoneRead: false, tasklistMs: input.tasklist?.ok ? input.tasklist.ms : null },
|
|
60
|
+
},
|
|
61
|
+
count,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* F1. `passedSinceBoot` is whether this same probe has passed since boot; until it
|
|
66
|
+
* has, a failure is `ineligible` (a machine where the probe never works is not wedged).
|
|
67
|
+
* `lockState` is the honest lock reading; locked or no console session makes F1
|
|
68
|
+
* ineligible on macOS.
|
|
69
|
+
*/
|
|
70
|
+
export function readF1(input) {
|
|
71
|
+
const { platform, probe } = input;
|
|
72
|
+
if (platform === 'darwin') {
|
|
73
|
+
// The spec's canary is a shipped, signed no-UI app, and the capture half needs the
|
|
74
|
+
// desktop helper. Neither is wired in this build, so F1 is unread on macOS.
|
|
75
|
+
const ineligible = input.lockState === 'locked';
|
|
76
|
+
return { reading: { result: ineligible ? 'ineligible' : 'unknown', reason: ineligible ? 'screen-locked' : 'canary-not-shipped' }, passed: false };
|
|
77
|
+
}
|
|
78
|
+
if (platform === 'other' || !probe)
|
|
79
|
+
return { reading: { result: 'unknown', reason: 'no-probe-on-platform' }, passed: false };
|
|
80
|
+
if (probe.ok)
|
|
81
|
+
return { reading: { result: 'negative', reason: 'probe-passed', detail: { probeMs: probe.ms } }, passed: true };
|
|
82
|
+
if (probe.code === 'ENOENT')
|
|
83
|
+
return { reading: { result: 'unknown', reason: 'probe-missing' }, passed: false };
|
|
84
|
+
const reason = probe.timedOut ? 'probe-timed-out' : 'probe-failed';
|
|
85
|
+
if (!input.passedSinceBoot)
|
|
86
|
+
return { reading: { result: 'ineligible', reason: `${reason}-never-passed-this-boot`, detail: { probeMs: probe.ms } }, passed: false };
|
|
87
|
+
return { reading: { result: 'positive', reason, detail: { probeMs: probe.ms, code: probe.code === null ? null : String(probe.code) } }, passed: false };
|
|
88
|
+
}
|
|
89
|
+
export const F4_MIN_IDLE_PCT = 30;
|
|
90
|
+
export const F4_LAG_MS = 1000;
|
|
91
|
+
export const F4_SPAWN_FAILURES = 2;
|
|
92
|
+
export const F4_REPORT_MAX_AGE_MS = 60_000;
|
|
93
|
+
/** F4. A stale or missing load report is unknown, unless spawn failures alone are positive. */
|
|
94
|
+
export function readF4(input) {
|
|
95
|
+
const spawn = input.spawnSystemFailures30m;
|
|
96
|
+
if (spawn !== null && spawn >= F4_SPAWN_FAILURES)
|
|
97
|
+
return { result: 'positive', reason: 'spawn-failures', detail: { spawnFailures30m: spawn } };
|
|
98
|
+
const load = input.load;
|
|
99
|
+
if (!load || load.sampleAgeMs > F4_REPORT_MAX_AGE_MS)
|
|
100
|
+
return { result: 'unknown', reason: load ? 'load-report-stale' : 'no-load-report' };
|
|
101
|
+
if (load.cpuIdlePct === null)
|
|
102
|
+
return { result: 'unknown', reason: 'cpu-idle-unread' };
|
|
103
|
+
const idle = load.cpuIdlePct >= F4_MIN_IDLE_PCT;
|
|
104
|
+
const detail = { verdict: load.verdict, cpuIdlePct: load.cpuIdlePct, lagP99Ms: load.eventLoopLagP99Ms, spawnFailures30m: spawn };
|
|
105
|
+
if (idle && load.verdict === 'impaired')
|
|
106
|
+
return { result: 'positive', reason: 'impaired-while-idle', detail };
|
|
107
|
+
if (idle && load.eventLoopLagP99Ms !== null && load.eventLoopLagP99Ms >= F4_LAG_MS)
|
|
108
|
+
return { result: 'positive', reason: 'lag-while-idle', detail };
|
|
109
|
+
return { result: 'negative', reason: idle ? 'agent-healthy' : 'cpu-busy-not-wedged', detail };
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=wedgeEvidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wedgeEvidence.js","sourceRoot":"","sources":["../../../src/monitoring/machineMaintenance/wedgeEvidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wedge candidate window rules (docs/specs/machine-self-maintenance.md, Part E).
|
|
3
|
+
*
|
|
4
|
+
* Pure: observations in, window state out. No I/O and no clock of its own.
|
|
5
|
+
*
|
|
6
|
+
* A candidate is one continuous 20-minute evidence window with at least 3
|
|
7
|
+
* observations in which the same two families are positive at every observation.
|
|
8
|
+
* A negative observation of either family resets the window. A missing sample
|
|
9
|
+
* (the family unknown or ineligible) neither counts as positive nor resets, but a
|
|
10
|
+
* gap over 6 minutes between observations restarts the window, so a stalled
|
|
11
|
+
* monitor or a maintainer takeover cannot bridge it. The judge needs both families
|
|
12
|
+
* observed positive within the last 6 minutes.
|
|
13
|
+
*
|
|
14
|
+
* One family positive for 2 hours forms no candidate; it brings the scheduled
|
|
15
|
+
* restart forward (`forcedDueAt`). Uptime under 6 hours marks a candidate
|
|
16
|
+
* `recently-restarted`, which caps its outcome at a notice.
|
|
17
|
+
*
|
|
18
|
+
* F3 (stuck dialog) never forms a candidate: it needs a ladder to exist first.
|
|
19
|
+
*/
|
|
20
|
+
export declare const WEDGE_WINDOW_MS: number;
|
|
21
|
+
export declare const WEDGE_MIN_OBSERVATIONS = 3;
|
|
22
|
+
export declare const WEDGE_MAX_GAP_MS: number;
|
|
23
|
+
export declare const WEDGE_FRESH_MS: number;
|
|
24
|
+
export declare const WEDGE_SINGLE_FAMILY_MS: number;
|
|
25
|
+
export declare const WEDGE_RECENT_BOOT_MS: number;
|
|
26
|
+
export declare const WEDGE_SAMPLE_IDLE_MS: number;
|
|
27
|
+
export declare const WEDGE_SAMPLE_POSITIVE_MS: number;
|
|
28
|
+
/** The families that can form a candidate. F3 informs the judge only. */
|
|
29
|
+
export declare const CANDIDATE_FAMILIES: readonly ['F1', 'F2', 'F4'];
|
|
30
|
+
export type CandidateFamily = typeof CANDIDATE_FAMILIES[number];
|
|
31
|
+
export type FamilyId = CandidateFamily | 'F3';
|
|
32
|
+
/**
|
|
33
|
+
* One family's reading at one sample. `unknown`: it could not be read here (a
|
|
34
|
+
* platform without the probe, an unreadable source). `ineligible`: read, but the
|
|
35
|
+
* spec says it must not count yet (F1 before its probe has passed this boot).
|
|
36
|
+
* Neither is negative.
|
|
37
|
+
*/
|
|
38
|
+
export type FamilyResult = 'positive' | 'negative' | 'unknown' | 'ineligible' | 'not-covered';
|
|
39
|
+
export interface Sample {
|
|
40
|
+
at: number;
|
|
41
|
+
results: Record<CandidateFamily, FamilyResult>;
|
|
42
|
+
}
|
|
43
|
+
export interface RunState {
|
|
44
|
+
startAt: number;
|
|
45
|
+
lastObsAt: number;
|
|
46
|
+
observations: number;
|
|
47
|
+
}
|
|
48
|
+
export interface WindowState {
|
|
49
|
+
/** Keyed by pair, e.g. `F1+F2`. */
|
|
50
|
+
pairs: Record<string, RunState>;
|
|
51
|
+
/** One run per family, for the single-family rule. */
|
|
52
|
+
singles: Partial<Record<CandidateFamily, RunState>>;
|
|
53
|
+
}
|
|
54
|
+
export declare function emptyWindow(): WindowState;
|
|
55
|
+
export declare const PAIRS: ReadonlyArray<[CandidateFamily, CandidateFamily]>;
|
|
56
|
+
export declare const pairKey: (a: CandidateFamily, b: CandidateFamily) => string;
|
|
57
|
+
/** Folds one sample into the window. Returns a new state; the input is not changed. */
|
|
58
|
+
export declare function observe(state: WindowState, sample: Sample): WindowState;
|
|
59
|
+
/** A window that has met the candidate rule. */
|
|
60
|
+
export declare function isCandidateRun(run: RunState | undefined): boolean;
|
|
61
|
+
/** Both families of this run were observed positive recently enough for the judge. */
|
|
62
|
+
export declare function isFresh(run: RunState, now: number): boolean;
|
|
63
|
+
export interface Candidate {
|
|
64
|
+
pair: string;
|
|
65
|
+
startAt: number;
|
|
66
|
+
lastObsAt: number;
|
|
67
|
+
observations: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The candidate, if any pair qualifies. With more than one, the longest-running wins,
|
|
71
|
+
* ties to the first pair in `PAIRS`, so the same evidence always names the same pair.
|
|
72
|
+
*/
|
|
73
|
+
export declare function currentCandidate(state: WindowState): Candidate | null;
|
|
74
|
+
/** A family positive for the single-family span, when no candidate is formed. */
|
|
75
|
+
export declare function singleFamilyRun(state: WindowState): {
|
|
76
|
+
family: CandidateFamily;
|
|
77
|
+
run: RunState;
|
|
78
|
+
} | null;
|
|
79
|
+
/** Under 6 hours of uptime: a restart that did not help is not repeated. Unknown boot time is unknown. */
|
|
80
|
+
export declare function recentlyRestarted(now: number, lastBootAt: number | null): boolean | null;
|
|
81
|
+
/** Sample every 10 minutes, and every 2 once any family is positive. */
|
|
82
|
+
export declare function nextSampleDelay(sample: Sample | null): number;
|
|
83
|
+
export type JudgeAction = 'leave' | 'gentle' | 'restart-next-window' | 'restart-now';
|
|
84
|
+
export declare const JUDGE_ACTIONS: ReadonlyArray<JudgeAction>;
|
|
85
|
+
/**
|
|
86
|
+
* The ladder rungs a proposal would run if the feature were live. Rung 6 runs only if
|
|
87
|
+
* the machine is still up 8 minutes after rung 5, so it is listed as conditional.
|
|
88
|
+
* Recorded only: nothing in this build runs any rung.
|
|
89
|
+
*/
|
|
90
|
+
export declare function rungsFor(action: JudgeAction | null, cappedAtNotice: boolean): {
|
|
91
|
+
rungs: number[];
|
|
92
|
+
conditional: number[];
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=wedgeWindow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wedgeWindow.d.ts","sourceRoot":"","sources":["../../../src/monitoring/machineMaintenance/wedgeWindow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wedge candidate window rules (docs/specs/machine-self-maintenance.md, Part E).
|
|
3
|
+
*
|
|
4
|
+
* Pure: observations in, window state out. No I/O and no clock of its own.
|
|
5
|
+
*
|
|
6
|
+
* A candidate is one continuous 20-minute evidence window with at least 3
|
|
7
|
+
* observations in which the same two families are positive at every observation.
|
|
8
|
+
* A negative observation of either family resets the window. A missing sample
|
|
9
|
+
* (the family unknown or ineligible) neither counts as positive nor resets, but a
|
|
10
|
+
* gap over 6 minutes between observations restarts the window, so a stalled
|
|
11
|
+
* monitor or a maintainer takeover cannot bridge it. The judge needs both families
|
|
12
|
+
* observed positive within the last 6 minutes.
|
|
13
|
+
*
|
|
14
|
+
* One family positive for 2 hours forms no candidate; it brings the scheduled
|
|
15
|
+
* restart forward (`forcedDueAt`). Uptime under 6 hours marks a candidate
|
|
16
|
+
* `recently-restarted`, which caps its outcome at a notice.
|
|
17
|
+
*
|
|
18
|
+
* F3 (stuck dialog) never forms a candidate: it needs a ladder to exist first.
|
|
19
|
+
*/
|
|
20
|
+
const MIN = 60_000;
|
|
21
|
+
export const WEDGE_WINDOW_MS = 20 * MIN;
|
|
22
|
+
export const WEDGE_MIN_OBSERVATIONS = 3;
|
|
23
|
+
export const WEDGE_MAX_GAP_MS = 6 * MIN;
|
|
24
|
+
export const WEDGE_FRESH_MS = 6 * MIN;
|
|
25
|
+
export const WEDGE_SINGLE_FAMILY_MS = 2 * 60 * MIN;
|
|
26
|
+
export const WEDGE_RECENT_BOOT_MS = 6 * 60 * MIN;
|
|
27
|
+
export const WEDGE_SAMPLE_IDLE_MS = 10 * MIN;
|
|
28
|
+
export const WEDGE_SAMPLE_POSITIVE_MS = 2 * MIN;
|
|
29
|
+
/** The families that can form a candidate. F3 informs the judge only. */
|
|
30
|
+
export const CANDIDATE_FAMILIES = ['F1', 'F2', 'F4'];
|
|
31
|
+
export function emptyWindow() {
|
|
32
|
+
return { pairs: {}, singles: {} };
|
|
33
|
+
}
|
|
34
|
+
export const PAIRS = [['F1', 'F2'], ['F1', 'F4'], ['F2', 'F4']];
|
|
35
|
+
export const pairKey = (a, b) => `${a}+${b}`;
|
|
36
|
+
function advance(run, at) {
|
|
37
|
+
if (!run || at - run.lastObsAt > WEDGE_MAX_GAP_MS)
|
|
38
|
+
return { startAt: at, lastObsAt: at, observations: 1 };
|
|
39
|
+
return { startAt: run.startAt, lastObsAt: at, observations: run.observations + 1 };
|
|
40
|
+
}
|
|
41
|
+
/** Folds one sample into the window. Returns a new state; the input is not changed. */
|
|
42
|
+
export function observe(state, sample) {
|
|
43
|
+
const next = { pairs: { ...state.pairs }, singles: { ...state.singles } };
|
|
44
|
+
for (const [a, b] of PAIRS) {
|
|
45
|
+
const key = pairKey(a, b);
|
|
46
|
+
const ra = sample.results[a];
|
|
47
|
+
const rb = sample.results[b];
|
|
48
|
+
if (ra === 'negative' || rb === 'negative')
|
|
49
|
+
delete next.pairs[key];
|
|
50
|
+
else if (ra === 'positive' && rb === 'positive')
|
|
51
|
+
next.pairs[key] = advance(next.pairs[key], sample.at);
|
|
52
|
+
// Otherwise a missing sample for this pair: no count, no reset. The gap rule applies at the next observation.
|
|
53
|
+
}
|
|
54
|
+
for (const f of CANDIDATE_FAMILIES) {
|
|
55
|
+
const r = sample.results[f];
|
|
56
|
+
if (r === 'negative')
|
|
57
|
+
delete next.singles[f];
|
|
58
|
+
else if (r === 'positive')
|
|
59
|
+
next.singles[f] = advance(next.singles[f], sample.at);
|
|
60
|
+
}
|
|
61
|
+
return next;
|
|
62
|
+
}
|
|
63
|
+
/** A window that has met the candidate rule. */
|
|
64
|
+
export function isCandidateRun(run) {
|
|
65
|
+
return !!run && run.observations >= WEDGE_MIN_OBSERVATIONS && run.lastObsAt - run.startAt >= WEDGE_WINDOW_MS;
|
|
66
|
+
}
|
|
67
|
+
/** Both families of this run were observed positive recently enough for the judge. */
|
|
68
|
+
export function isFresh(run, now) {
|
|
69
|
+
return now - run.lastObsAt <= WEDGE_FRESH_MS;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The candidate, if any pair qualifies. With more than one, the longest-running wins,
|
|
73
|
+
* ties to the first pair in `PAIRS`, so the same evidence always names the same pair.
|
|
74
|
+
*/
|
|
75
|
+
export function currentCandidate(state) {
|
|
76
|
+
let best = null;
|
|
77
|
+
for (const [a, b] of PAIRS) {
|
|
78
|
+
const key = pairKey(a, b);
|
|
79
|
+
const run = state.pairs[key];
|
|
80
|
+
if (!isCandidateRun(run))
|
|
81
|
+
continue;
|
|
82
|
+
if (!best || run.startAt < best.startAt)
|
|
83
|
+
best = { pair: key, ...run };
|
|
84
|
+
}
|
|
85
|
+
return best;
|
|
86
|
+
}
|
|
87
|
+
/** A family positive for the single-family span, when no candidate is formed. */
|
|
88
|
+
export function singleFamilyRun(state) {
|
|
89
|
+
for (const f of CANDIDATE_FAMILIES) {
|
|
90
|
+
const run = state.singles[f];
|
|
91
|
+
if (run && run.lastObsAt - run.startAt >= WEDGE_SINGLE_FAMILY_MS)
|
|
92
|
+
return { family: f, run };
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
/** Under 6 hours of uptime: a restart that did not help is not repeated. Unknown boot time is unknown. */
|
|
97
|
+
export function recentlyRestarted(now, lastBootAt) {
|
|
98
|
+
if (lastBootAt === null || !Number.isFinite(lastBootAt))
|
|
99
|
+
return null;
|
|
100
|
+
return now - lastBootAt < WEDGE_RECENT_BOOT_MS;
|
|
101
|
+
}
|
|
102
|
+
/** Sample every 10 minutes, and every 2 once any family is positive. */
|
|
103
|
+
export function nextSampleDelay(sample) {
|
|
104
|
+
if (!sample)
|
|
105
|
+
return WEDGE_SAMPLE_IDLE_MS;
|
|
106
|
+
return CANDIDATE_FAMILIES.some((f) => sample.results[f] === 'positive') ? WEDGE_SAMPLE_POSITIVE_MS : WEDGE_SAMPLE_IDLE_MS;
|
|
107
|
+
}
|
|
108
|
+
export const JUDGE_ACTIONS = ['leave', 'gentle', 'restart-next-window', 'restart-now'];
|
|
109
|
+
/**
|
|
110
|
+
* The ladder rungs a proposal would run if the feature were live. Rung 6 runs only if
|
|
111
|
+
* the machine is still up 8 minutes after rung 5, so it is listed as conditional.
|
|
112
|
+
* Recorded only: nothing in this build runs any rung.
|
|
113
|
+
*/
|
|
114
|
+
export function rungsFor(action, cappedAtNotice) {
|
|
115
|
+
if (cappedAtNotice)
|
|
116
|
+
return { rungs: [], conditional: [] };
|
|
117
|
+
switch (action) {
|
|
118
|
+
case 'leave': return { rungs: [], conditional: [] };
|
|
119
|
+
case 'gentle': return { rungs: [1, 2, 3], conditional: [] };
|
|
120
|
+
case 'restart-next-window': return { rungs: [1, 2, 3], conditional: [] };
|
|
121
|
+
case 'restart-now': return { rungs: [1, 2, 3, 4, 5], conditional: [6] };
|
|
122
|
+
// No usable proposal: the deterministic fallback runs the gentle rungs and brings the restart forward.
|
|
123
|
+
default: return { rungs: [1, 2, 3], conditional: [] };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=wedgeWindow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wedgeWindow.js","sourceRoot":"","sources":["../../../src/monitoring/machineMaintenance/wedgeWindow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../../src/monitoring/selfaction/policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIlE,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,yEAAyE;AACzE,eAAO,MAAM,sCAAsC,IAAI,CAAC;AAExD;yEACyE;AACzE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAEhD,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,oEAAoE;AACpE,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAE7C,2DAA2D;AAC3D,eAAO,MAAM,4BAA4B,QAAc,CAAC;AAExD,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC;uDACuD;AACvD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,0BAA0B,QAAc,CAAC;AAEtD,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,4EAA4E;AAC5E,eAAO,MAAM,cAAc,KAAK,CAAC;AAMjC,4EAA4E;AAC5E,eAAO,MAAM,6BAA6B,EAAE,WAAW,CAAC,MAAM,CAK5D,CAAC;AAEH;oEACoE;AACpE,eAAO,MAAM,6BAA6B,EAAE,WAAW,CAAC,MAAM,CAM5D,CAAC;AAcH,eAAO,MAAM,yBAAyB,EAAE,SAAS,gBAAgB,
|
|
1
|
+
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../../src/monitoring/selfaction/policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIlE,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,yEAAyE;AACzE,eAAO,MAAM,sCAAsC,IAAI,CAAC;AAExD;yEACyE;AACzE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAEhD,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,oEAAoE;AACpE,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAE7C,2DAA2D;AAC3D,eAAO,MAAM,4BAA4B,QAAc,CAAC;AAExD,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC;uDACuD;AACvD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,0BAA0B,QAAc,CAAC;AAEtD,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,4EAA4E;AAC5E,eAAO,MAAM,cAAc,KAAK,CAAC;AAMjC,4EAA4E;AAC5E,eAAO,MAAM,6BAA6B,EAAE,WAAW,CAAC,MAAM,CAK5D,CAAC;AAEH;oEACoE;AACpE,eAAO,MAAM,6BAA6B,EAAE,WAAW,CAAC,MAAM,CAM5D,CAAC;AAcH,eAAO,MAAM,yBAAyB,EAAE,SAAS,gBAAgB,EAyNhE,CAAC;AAEF;4DAC4D;AAC5D,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,SAAgB,GAAG,gBAAgB,CAanG;AAED;;;2BAG2B;AAC3B,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAOrE;AAeD,MAAM,MAAM,qBAAqB,GAAG,OAAO,CACzC,IAAI,CACF,gBAAgB,EACd,uBAAuB,GACvB,mBAAmB,GACnB,UAAU,GACV,eAAe,GACf,iBAAiB,GACjB,YAAY,CACf,CACF,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,gBAAgB;IAC/B,uFAAuF;IACvF,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxC,6EAA6E;IAC7E,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;IAClD,8EAA8E;IAC9E,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,6EAA6E;IAC7E,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,OAAO,EACtB,MAAM,GAAE,MAAM,MAAuC,GACpD,gBAAgB,CAiGlB;AAED;yEACyE;AACzE,wBAAgB,iBAAiB,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMlF"}
|
|
@@ -201,6 +201,21 @@ export const GOVERNOR_DEFAULT_POLICIES = [
|
|
|
201
201
|
rateBucket: { ratePerWindow: 12, windowMs: 24 * 60 * 60_000, refill: 'window' },
|
|
202
202
|
...COMMON,
|
|
203
203
|
},
|
|
204
|
+
{
|
|
205
|
+
// Wedge dry-run operator notice (machine-self-maintenance Part E, rung 7). Off by
|
|
206
|
+
// default (its own flag). One per machine per 24 h, three in all; the WedgeMonitor
|
|
207
|
+
// upstream also sends at most one per candidate episode.
|
|
208
|
+
controllerId: 'machine-wedge-notice',
|
|
209
|
+
actionVerb: 'wedge-notify',
|
|
210
|
+
direction: 'neutral',
|
|
211
|
+
resource: 'hardware-bound',
|
|
212
|
+
failDirection: 'open-coalesce',
|
|
213
|
+
perTargetCountCeiling: 1,
|
|
214
|
+
totalCountCeiling: 3,
|
|
215
|
+
windowMs: 24 * 60 * 60_000,
|
|
216
|
+
rateBucket: { ratePerWindow: 3, windowMs: 24 * 60 * 60_000, refill: 'window' },
|
|
217
|
+
...COMMON,
|
|
218
|
+
},
|
|
204
219
|
{
|
|
205
220
|
// Overload shed (trustworthy-machine-load D3): moving existing conversations off a
|
|
206
221
|
// machine that stayed overloaded. Telemetry first: the planner's own breaker
|