instar 1.3.490 → 1.3.491

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 (95) hide show
  1. package/dashboard/index.html +30 -0
  2. package/dist/commands/server.d.ts.map +1 -1
  3. package/dist/commands/server.js +146 -1
  4. package/dist/commands/server.js.map +1 -1
  5. package/dist/core/GuardPostureStore.d.ts +38 -0
  6. package/dist/core/GuardPostureStore.d.ts.map +1 -0
  7. package/dist/core/GuardPostureStore.js +87 -0
  8. package/dist/core/GuardPostureStore.js.map +1 -0
  9. package/dist/core/MachinePoolRegistry.d.ts +16 -0
  10. package/dist/core/MachinePoolRegistry.d.ts.map +1 -1
  11. package/dist/core/MachinePoolRegistry.js +24 -1
  12. package/dist/core/MachinePoolRegistry.js.map +1 -1
  13. package/dist/core/PeerPresencePuller.d.ts +9 -0
  14. package/dist/core/PeerPresencePuller.d.ts.map +1 -1
  15. package/dist/core/PeerPresencePuller.js +1 -1
  16. package/dist/core/PeerPresencePuller.js.map +1 -1
  17. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  18. package/dist/core/PostUpdateMigrator.js +30 -2
  19. package/dist/core/PostUpdateMigrator.js.map +1 -1
  20. package/dist/core/types.d.ts +29 -0
  21. package/dist/core/types.d.ts.map +1 -1
  22. package/dist/core/types.js.map +1 -1
  23. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts +8 -0
  24. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts.map +1 -1
  25. package/dist/monitoring/ActiveWorkSilenceSentinel.js +8 -0
  26. package/dist/monitoring/ActiveWorkSilenceSentinel.js.map +1 -1
  27. package/dist/monitoring/ContextWedgeSentinel.d.ts +8 -0
  28. package/dist/monitoring/ContextWedgeSentinel.d.ts.map +1 -1
  29. package/dist/monitoring/ContextWedgeSentinel.js +8 -0
  30. package/dist/monitoring/ContextWedgeSentinel.js.map +1 -1
  31. package/dist/monitoring/GuardPostureTripwire.d.ts +3 -27
  32. package/dist/monitoring/GuardPostureTripwire.d.ts.map +1 -1
  33. package/dist/monitoring/GuardPostureTripwire.js +8 -76
  34. package/dist/monitoring/GuardPostureTripwire.js.map +1 -1
  35. package/dist/monitoring/GuardRegistry.d.ts +48 -0
  36. package/dist/monitoring/GuardRegistry.d.ts.map +1 -0
  37. package/dist/monitoring/GuardRegistry.js +49 -0
  38. package/dist/monitoring/GuardRegistry.js.map +1 -0
  39. package/dist/monitoring/SessionReaper.d.ts +7 -0
  40. package/dist/monitoring/SessionReaper.d.ts.map +1 -1
  41. package/dist/monitoring/SessionReaper.js +9 -0
  42. package/dist/monitoring/SessionReaper.js.map +1 -1
  43. package/dist/monitoring/SessionWatchdog.d.ts +8 -0
  44. package/dist/monitoring/SessionWatchdog.d.ts.map +1 -1
  45. package/dist/monitoring/SessionWatchdog.js +8 -0
  46. package/dist/monitoring/SessionWatchdog.js.map +1 -1
  47. package/dist/monitoring/SocketDisconnectSentinel.d.ts +8 -0
  48. package/dist/monitoring/SocketDisconnectSentinel.d.ts.map +1 -1
  49. package/dist/monitoring/SocketDisconnectSentinel.js +8 -0
  50. package/dist/monitoring/SocketDisconnectSentinel.js.map +1 -1
  51. package/dist/monitoring/guardManifest.d.ts +67 -0
  52. package/dist/monitoring/guardManifest.d.ts.map +1 -0
  53. package/dist/monitoring/guardManifest.js +536 -0
  54. package/dist/monitoring/guardManifest.js.map +1 -0
  55. package/dist/monitoring/guardPosture.d.ts +77 -0
  56. package/dist/monitoring/guardPosture.d.ts.map +1 -0
  57. package/dist/monitoring/guardPosture.js +198 -0
  58. package/dist/monitoring/guardPosture.js.map +1 -0
  59. package/dist/monitoring/guardPostureView.d.ts +100 -0
  60. package/dist/monitoring/guardPostureView.d.ts.map +1 -0
  61. package/dist/monitoring/guardPostureView.js +294 -0
  62. package/dist/monitoring/guardPostureView.js.map +1 -0
  63. package/dist/monitoring/probes/GuardPostureProbe.d.ts +82 -0
  64. package/dist/monitoring/probes/GuardPostureProbe.d.ts.map +1 -0
  65. package/dist/monitoring/probes/GuardPostureProbe.js +384 -0
  66. package/dist/monitoring/probes/GuardPostureProbe.js.map +1 -0
  67. package/dist/scaffold/templates.d.ts.map +1 -1
  68. package/dist/scaffold/templates.js +9 -0
  69. package/dist/scaffold/templates.js.map +1 -1
  70. package/dist/scheduler/JobScheduler.d.ts +10 -0
  71. package/dist/scheduler/JobScheduler.d.ts.map +1 -1
  72. package/dist/scheduler/JobScheduler.js +12 -0
  73. package/dist/scheduler/JobScheduler.js.map +1 -1
  74. package/dist/server/AgentServer.d.ts +8 -0
  75. package/dist/server/AgentServer.d.ts.map +1 -1
  76. package/dist/server/AgentServer.js +2 -0
  77. package/dist/server/AgentServer.js.map +1 -1
  78. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  79. package/dist/server/CapabilityIndex.js +11 -0
  80. package/dist/server/CapabilityIndex.js.map +1 -1
  81. package/dist/server/peerUrlGuard.d.ts +35 -0
  82. package/dist/server/peerUrlGuard.d.ts.map +1 -0
  83. package/dist/server/peerUrlGuard.js +93 -0
  84. package/dist/server/peerUrlGuard.js.map +1 -0
  85. package/dist/server/routes.d.ts +14 -0
  86. package/dist/server/routes.d.ts.map +1 -1
  87. package/dist/server/routes.js +136 -0
  88. package/dist/server/routes.js.map +1 -1
  89. package/package.json +3 -2
  90. package/scripts/lint-guard-manifest.js +264 -0
  91. package/src/data/builtin-manifest.json +65 -65
  92. package/src/data/state-coherence-registry.json +54 -18
  93. package/src/scaffold/templates.ts +9 -0
  94. package/upgrades/1.3.491.md +37 -0
  95. package/upgrades/side-effects/guard-posture-endpoint.md +101 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * GuardPostureStore — durable last-known guard posture per machine
3
+ * (GUARD-POSTURE-ENDPOINT-SPEC §2.3(c)).
4
+ *
5
+ * The in-memory pool registry is rebuilt from heartbeats, so last-known
6
+ * posture would evaporate on a local server restart — defeating dark-peer
7
+ * honesty in exactly the GAP-001 topology (a week-dark Mini + the laptop's
8
+ * routine update restarts). This store persists each machine's most recent
9
+ * posture block alongside the RECEIVER-side receipt time, reloads at boot,
10
+ * and lets the pool view render "as of <age> ago" for a peer that has been
11
+ * dark for days.
12
+ *
13
+ * Identity rule: callers key records on the REGISTRY's machine identity
14
+ * (the heartbeat ingestion chokepoint already does) — a body-claimed
15
+ * machineId never reaches this store.
16
+ */
17
+ import type { GuardPostureSummary } from './types.js';
18
+ export interface StoredGuardPosture {
19
+ posture: GuardPostureSummary;
20
+ /** Receiver-side receipt epoch-ms (the router's clock at heartbeat arrival). */
21
+ receivedAtMs: number;
22
+ }
23
+ /** Field-wise posture equality EXCLUDING generatedAt (which changes every
24
+ * beat by construction and must not defeat write-on-change). */
25
+ export declare function postureSemanticsEqual(a: GuardPostureSummary, b: GuardPostureSummary): boolean;
26
+ export declare class GuardPostureStore {
27
+ private readonly filePath;
28
+ private machines;
29
+ constructor(stateDir: string);
30
+ private load;
31
+ /** Persist a machine's posture (write-on-change: a SEMANTICALLY unchanged
32
+ * posture refreshes nothing on disk, so the 30s heartbeat loop doesn't
33
+ * churn fs — `generatedAt` is always fresh and deliberately excluded from
34
+ * the comparison; perf review 2026-06-12 finding #2). */
35
+ record(machineId: string, posture: GuardPostureSummary, receivedAtMs: number): void;
36
+ get(machineId: string): StoredGuardPosture | null;
37
+ }
38
+ //# sourceMappingURL=GuardPostureStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuardPostureStore.d.ts","sourceRoot":"","sources":["../../src/core/GuardPostureStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;CACtB;AAQD;iEACiE;AACjE,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAgB7F;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAA0C;gBAE9C,QAAQ,EAAE,MAAM;IAK5B,OAAO,CAAC,IAAI;IAoBZ;;;8DAG0D;IAC1D,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAoBnF,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;CAGlD"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * GuardPostureStore — durable last-known guard posture per machine
3
+ * (GUARD-POSTURE-ENDPOINT-SPEC §2.3(c)).
4
+ *
5
+ * The in-memory pool registry is rebuilt from heartbeats, so last-known
6
+ * posture would evaporate on a local server restart — defeating dark-peer
7
+ * honesty in exactly the GAP-001 topology (a week-dark Mini + the laptop's
8
+ * routine update restarts). This store persists each machine's most recent
9
+ * posture block alongside the RECEIVER-side receipt time, reloads at boot,
10
+ * and lets the pool view render "as of <age> ago" for a peer that has been
11
+ * dark for days.
12
+ *
13
+ * Identity rule: callers key records on the REGISTRY's machine identity
14
+ * (the heartbeat ingestion chokepoint already does) — a body-claimed
15
+ * machineId never reaches this store.
16
+ */
17
+ import fs from 'node:fs';
18
+ import path from 'node:path';
19
+ /** Field-wise posture equality EXCLUDING generatedAt (which changes every
20
+ * beat by construction and must not defeat write-on-change). */
21
+ export function postureSemanticsEqual(a, b) {
22
+ return (a.onConfirmed === b.onConfirmed &&
23
+ a.onUnverified === b.onUnverified &&
24
+ a.onStale === b.onStale &&
25
+ a.onDryRun === b.onDryRun &&
26
+ a.offDeviant === b.offDeviant &&
27
+ a.offRuntimeDivergent === b.offRuntimeDivergent &&
28
+ a.divergedPendingRestart === b.divergedPendingRestart &&
29
+ a.errored === b.errored &&
30
+ a.missing === b.missing &&
31
+ a.offDeviantKeys.length === b.offDeviantKeys.length &&
32
+ a.offDeviantKeys.every((k, i) => k === b.offDeviantKeys[i]) &&
33
+ a.offRuntimeDivergentKeys.length === b.offRuntimeDivergentKeys.length &&
34
+ a.offRuntimeDivergentKeys.every((k, i) => k === b.offRuntimeDivergentKeys[i]));
35
+ }
36
+ export class GuardPostureStore {
37
+ filePath;
38
+ machines = {};
39
+ constructor(stateDir) {
40
+ this.filePath = path.join(stateDir, 'state', 'guard-posture-peers.json');
41
+ this.load();
42
+ }
43
+ load() {
44
+ try {
45
+ const parsed = JSON.parse(fs.readFileSync(this.filePath, 'utf-8'));
46
+ if (parsed && typeof parsed === 'object' && parsed.machines && typeof parsed.machines === 'object') {
47
+ // Retention bound: a peer dark beyond 90 days drops to "unknown"
48
+ // rather than rendering a quarter-year-old posture forever (and the
49
+ // file stays bounded across pool churn).
50
+ const cutoff = Date.now() - 90 * 24 * 60 * 60 * 1000;
51
+ this.machines = Object.fromEntries(Object.entries(parsed.machines).filter(([, v]) => (v?.receivedAtMs ?? 0) >= cutoff));
52
+ }
53
+ }
54
+ catch {
55
+ // @silent-fallback-ok — absent/corrupt store starts empty; the next
56
+ // heartbeat repopulates it. Posture honesty degrades to "unknown",
57
+ // never to invented data.
58
+ this.machines = {};
59
+ }
60
+ }
61
+ /** Persist a machine's posture (write-on-change: a SEMANTICALLY unchanged
62
+ * posture refreshes nothing on disk, so the 30s heartbeat loop doesn't
63
+ * churn fs — `generatedAt` is always fresh and deliberately excluded from
64
+ * the comparison; perf review 2026-06-12 finding #2). */
65
+ record(machineId, posture, receivedAtMs) {
66
+ const prev = this.machines[machineId];
67
+ this.machines[machineId] = { posture, receivedAtMs };
68
+ if (prev && postureSemanticsEqual(prev.posture, posture))
69
+ return;
70
+ try {
71
+ fs.mkdirSync(path.dirname(this.filePath), { recursive: true });
72
+ const tmp = `${this.filePath}.tmp`;
73
+ /* state-registry: guard-posture-peers */
74
+ fs.writeFileSync(tmp, JSON.stringify({ version: 1, machines: this.machines }, null, 2));
75
+ fs.renameSync(tmp, this.filePath);
76
+ }
77
+ catch {
78
+ // @silent-fallback-ok — a failed persist keeps the in-memory copy
79
+ // serving; durability degrades for this beat only and the next changed
80
+ // beat retries.
81
+ }
82
+ }
83
+ get(machineId) {
84
+ return this.machines[machineId] ?? null;
85
+ }
86
+ }
87
+ //# sourceMappingURL=GuardPostureStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuardPostureStore.js","sourceRoot":"","sources":["../../src/core/GuardPostureStore.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,11 @@ export interface HeartbeatObservation {
51
51
  /** The machine's self-reported LLM-account quota state (quota-aware placement,
52
52
  * 2026-06-05). Absent = unknown (older heartbeats) = treated as not blocked. */
53
53
  quotaState?: MachineCapacity['quotaState'];
54
+ /** Compact guard-posture summary (GUARD-POSTURE-ENDPOINT-SPEC §2.3). The
55
+ * caller keys the observation on the REGISTRY's machine identity — this
56
+ * field is the peer's self-reported DATA, never its identity. Absent =
57
+ * older peer / no posture (renders "unknown"). */
58
+ guardPosture?: MachineCapacity['guardPosture'];
54
59
  }
55
60
  export interface MachinePoolRegistryDeps {
56
61
  /** Returns {machineId, nickname, hardware?, capabilities?} for every known machine. */
@@ -71,6 +76,17 @@ export interface MachinePoolRegistryDeps {
71
76
  /** Fired when a machine is removed from placement for clock skew (Attention item). */
72
77
  onClockQuarantine?: (machineId: string, reason: string) => void;
73
78
  logger?: (msg: string) => void;
79
+ /** Durable last-known guard posture (GUARD-POSTURE-ENDPOINT-SPEC §2.3(c)).
80
+ * When wired, every posture-carrying heartbeat persists, and `assemble`
81
+ * falls back to the stored copy (with its REAL receipt age) for a machine
82
+ * with no live observation — dark-peer honesty across local restarts. */
83
+ postureStore?: {
84
+ record: (machineId: string, posture: NonNullable<MachineCapacity['guardPosture']>, receivedAtMs: number) => void;
85
+ get: (machineId: string) => {
86
+ posture: NonNullable<MachineCapacity['guardPosture']>;
87
+ receivedAtMs: number;
88
+ } | null;
89
+ } | null;
74
90
  }
75
91
  /**
76
92
  * Tracks live per-machine state (router-observed timestamp + clock-skew FSM) and
@@ -1 +1 @@
1
- {"version":3,"file":"MachinePoolRegistry.d.ts","sourceRoot":"","sources":["../../src/core/MachinePoolRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIpF,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,eAAe,CAWvE;AAID,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,2FAA2F;IAC3F,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,GACP,aAAa,CAAC;AAElB,eAAO,MAAM,wBAAwB,EAAE,iBAA0D,CAAC;AAElG;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,OAAO,GACjB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,mBAAmB,CAAA;CAAE,CAyB9D;AAED,wEAAwE;AACxE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE3E;AAID,oEAAoE;AACpE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;qFACiF;IACjF,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,uBAAuB;IACtC,uFAAuF;IACvF,YAAY,EAAE,MAAM,KAAK,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC,CAAC;IACH,4CAA4C;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oEAAoE;IACpE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAA0B;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGrB;gBAEQ,IAAI,EAAE,uBAAuB;IAIzC,OAAO,CAAC,GAAG;IAIX,uFAAuF;IACvF,eAAe,CAAC,GAAG,EAAE,oBAAoB,GAAG,mBAAmB;IAwB/D,0EAA0E;IAC1E,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAInD,uEAAuE;IACvE,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAK/C,sFAAsF;IACtF,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAMtD,qEAAqE;IACrE,aAAa,IAAI,eAAe,EAAE;IAIlC,OAAO,CAAC,QAAQ;CA8BjB"}
1
+ {"version":3,"file":"MachinePoolRegistry.d.ts","sourceRoot":"","sources":["../../src/core/MachinePoolRegistry.ts"],"names":[],"mappings":"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"}
@@ -95,7 +95,17 @@ export class MachinePoolRegistry {
95
95
  }
96
96
  }
97
97
  const { next, sideEffect } = clockSkewTransition(prev?.skew ?? INITIAL_CLOCK_SKEW_STATE, divergent);
98
- this.observed.set(obs.machineId, { routerReceivedAtMs: nowMs, obs, skew: next });
98
+ // Posture handling (GUARD-POSTURE-ENDPOINT-SPEC §2.3): a beat WITH a block
99
+ // stamps a fresh receiver-side receipt time and persists durably; a beat
100
+ // WITHOUT one (older peer / lighter beat) carries the previous block
101
+ // forward UNCHANGED — including its original receipt time, so the
102
+ // rendered age stays honest.
103
+ let posture = prev?.posture;
104
+ if (obs.guardPosture) {
105
+ posture = { block: obs.guardPosture, receivedAtMs: nowMs };
106
+ this.d.postureStore?.record(obs.machineId, obs.guardPosture, nowMs);
107
+ }
108
+ this.observed.set(obs.machineId, { routerReceivedAtMs: nowMs, obs, skew: next, posture });
99
109
  if (sideEffect === 'removed') {
100
110
  this.d.onClockQuarantine?.(obs.machineId, `clock divergence > ${this.d.clockSkewToleranceMs}ms on 2 consecutive heartbeats — removed from placement`);
101
111
  this.d.logger?.(`[pool] machine ${obs.machineId} clock-skew quarantined`);
@@ -145,6 +155,19 @@ export class MachinePoolRegistry {
145
155
  hardware: known.hardware,
146
156
  clockSkewStatus: live?.skew.status ?? 'ok',
147
157
  quotaState: live?.obs.quotaState,
158
+ // Guard posture: live observation first, durable last-known second —
159
+ // a machine with no posture EVER received carries neither field
160
+ // (renders "guards: unknown", never "0 on / 0 off").
161
+ ...(() => {
162
+ const p = live?.posture ?? this.d.postureStore?.get(known.machineId) ?? null;
163
+ if (!p)
164
+ return {};
165
+ const block = 'block' in p ? p.block : p.posture;
166
+ return {
167
+ guardPosture: block,
168
+ guardPostureReceivedAt: new Date(p.receivedAtMs).toISOString(),
169
+ };
170
+ })(),
148
171
  };
149
172
  }
150
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MachinePoolRegistry.js","sourceRoot":"","sources":["../../src/core/MachinePoolRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MachinePoolRegistry.js","sourceRoot":"","sources":["../../src/core/MachinePoolRegistry.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,14 @@ export interface PeerCapacity {
66
66
  blockedUntil?: string;
67
67
  reason?: string;
68
68
  };
69
+ /**
70
+ * The peer's compact guard-posture summary (GUARD-POSTURE-ENDPOINT-SPEC
71
+ * §2.3). Carried in the peer's session-status response (its
72
+ * getCapacity(self) includes it); the A2 lesson above applies verbatim —
73
+ * narrowing it away on receive would blind the pool view to every peer's
74
+ * posture. Absent from old peers = no posture ("guards: unknown").
75
+ */
76
+ guardPosture?: import('./types.js').GuardPostureSummary;
69
77
  }
70
78
  /** One stream slice of a journal-sync delta (mirrors MeshRpc's `journal-sync.batch`). */
71
79
  export interface JournalDeltaStream {
@@ -95,6 +103,7 @@ export interface PeerPresencePullerDeps {
95
103
  blockedUntil?: string;
96
104
  reason?: string;
97
105
  };
106
+ guardPosture?: import('./types.js').GuardPostureSummary;
98
107
  }) => void;
99
108
  /** Wall clock — injectable for tests. Defaults to `Date`. */
100
109
  now?: () => Date;
@@ -1 +1 @@
1
- {"version":3,"file":"PeerPresencePuller.d.ts","sourceRoot":"","sources":["../../src/core/PeerPresencePuller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PeerPresencePuller.d.ts","sourceRoot":"","sources":["../../src/core/PeerPresencePuller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,6FAA6F;AAC7F,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,sFAAsF;AACtF,MAAM,WAAW,YAAY;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE;;;;OAIG;IACH,iBAAiB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,YAAY,EAAE,mBAAmB,CAAC;CACzD;AAED,yFAAyF;AACzF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,yGAAyG;IACzG,SAAS,EAAE,MAAM,mBAAmB,EAAE,CAAC;IACvC;;;;OAIG;IACH,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACpF,0GAA0G;IAC1G,eAAe,EAAE,CAAC,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,YAAY,EAAE,mBAAmB,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1O,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,qEAAqE;IACrE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAS7B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CACpB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACxC,2FAA2F;IAC3F,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IAC5E;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjG;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,CACrB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,KACpD,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAED,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAAD,CAAC,EAAE,sBAAsB;IAEtD;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAmCjD;;;;;;;;OAQG;YACW,iBAAiB;CA4ChC"}
@@ -47,7 +47,7 @@ export class PeerPresencePuller {
47
47
  if (!cap)
48
48
  return null;
49
49
  const seen = cap.selfReportedLastSeen ?? (this.d.now?.() ?? new Date()).toISOString();
50
- this.d.recordHeartbeat({ machineId: m.machineId, selfReportedLastSeen: seen, loadAvg: cap.loadAvg, ...(cap.quotaState ? { quotaState: cap.quotaState } : {}) });
50
+ this.d.recordHeartbeat({ machineId: m.machineId, selfReportedLastSeen: seen, loadAvg: cap.loadAvg, ...(cap.quotaState ? { quotaState: cap.quotaState } : {}), ...(cap.guardPosture ? { guardPosture: cap.guardPosture } : {}) });
51
51
  // REPLICATION-GATED journal-delta drive — only when the server wired the
52
52
  // delta deps (i.e. replication.enabled === true). Otherwise a complete
53
53
  // no-op (engine/transport stay dark). Never throws into the puller.
@@ -1 +1 @@
1
- {"version":3,"file":"PeerPresencePuller.js","sourceRoot":"","sources":["../../src/core/PeerPresencePuller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PeerPresencePuller.js","sourceRoot":"","sources":["../../src/core/PeerPresencePuller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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"}
@@ -3846,8 +3846,11 @@ Beyond the one-awake-machine model: with the pool enabled I run conversations ac
3846
3846
  // section predate GET /sessions?scope=pool (every session, every machine, each
3847
3847
  // tagged with its machine — the dashboard cross-machine sessions list). Append
3848
3848
  // the line so deployed agents can answer "what's running across my machines?"
3849
- // from the API. Idempotent via the unique `scope=pool` marker.
3850
- if (content.includes('Multi-Machine Session Pool (active-active') && !content.includes('scope=pool')) {
3849
+ // from the API. Idempotent via the unique `sessions?scope=pool` marker
3850
+ // (route-qualified: other sections legitimately mention `?scope=pool` for
3851
+ // their own routes — e.g. the Guard Posture section's /guards?scope=pool —
3852
+ // so a bare `scope=pool` sniff would falsely block this append).
3853
+ if (content.includes('Multi-Machine Session Pool (active-active') && !content.includes('sessions?scope=pool')) {
3851
3854
  const poolSessions = `
3852
3855
  - **Every session, every machine:** the dashboard sessions list shows ALL sessions across the pool, each tagged with the machine it runs on. API: \`GET /sessions?scope=pool\` → \`{ sessions: [...each with machineId/machineNickname...], pool: { peersOk, failed } }\`. An unreachable peer degrades to a \`failed\` entry — local sessions always answer.
3853
3856
  - **Post-transfer closeout (automatic):** when a topic moves to another machine, the OLD machine's session for it is closed automatically (immediately on an explicit "move", or within ~2 reaper ticks for any other path) — no duplicate sessions doing duplicate work. The close is recorded in the reap-log with reason "topic moved to <machine>"; protected sessions are never auto-closed.
@@ -3982,6 +3985,31 @@ At every server boot the guard posture (every \`monitoring.*\` enabled flag + \`
3982
3985
  else {
3983
3986
  result.skipped.push('CLAUDE.md: Guard-Posture Tripwire section already present');
3984
3987
  }
3988
+ // Guard Posture endpoint (GUARD-POSTURE-ENDPOINT-SPEC §4 Agent Awareness +
3989
+ // §2.5 interim hazard containment). The tripwire section above only covers
3990
+ // boot-time TRANSITIONS; this teaches the steady-state read surface
3991
+ // (GET /guards, ?scope=pool) plus the PATCH /config one-level-deep-merge
3992
+ // hazard (a partial block erases sibling tuning — lived 2026-06-11).
3993
+ // Byte-identical to the generateClaudeMd block (Migration Parity).
3994
+ // Idempotent via content-sniffing on the section heading.
3995
+ if (!content.includes('Guard Posture — which safety systems are genuinely on')) {
3996
+ const section = `
3997
+ ### Guard Posture — which safety systems are genuinely on (\`GET /guards\`)
3998
+
3999
+ Every guard (monitoring sentinels, reapers, the scheduler, …) is graded by what can be VERIFIED, never by what the config wishes: \`on-confirmed\` / \`on-unverified\` / \`on-stale\` / \`on-dry-run\` / \`off\` (\`dark-default\` = ships-dark, quiet vs \`diverged-from-default\` = default-on but currently off — the load-shed signature) / \`diverged-pending-restart\` / \`errored\` / \`missing\` / \`off-runtime-divergent\`. Only the "off that shouldn't be off" and runtime-contradiction classes alert — a ships-dark feature that is off is normal, never noise.
4000
+ - This machine: \`curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/guards\`
4001
+ - Every machine (heartbeat-fresh, or last-known posture with its age for a dark peer): \`curl -H "Authorization: Bearer $AUTH" "http://localhost:${port}/guards?scope=pool"\`
4002
+ - **When to use** (PROACTIVE — this is the trigger): "are my guards on?" / "why didn't the watchdog/reaper fire on machine X?" / a post-incident sweep after ANY load-shed → read \`/guards?scope=pool\` and report the deviant rows instead of guessing from config memory. The Machines dashboard tab shows each machine's last-known posture with its age — even for a peer that is currently dark.
4003
+ - **HAZARD — re-enabling a guard via \`PATCH /config\`**: send the guard's FULL config block (the merge is one-level-deep and a partial block erases sibling tuning); read the current block from the source machine first (\`GET /guards\` shows posture; the config block itself comes from that machine's config).
4004
+ - Three complementary layers, one shared inventory: the Guard-Posture Tripwire covers enabled→disabled transitions at boot (\`logs/guard-posture.jsonl\`); \`/guards\` is the steady-state read; the GuardPostureProbe raises ONE aggregated Attention item when an anomaly persists across consecutive probes.
4005
+ `;
4006
+ content += '\n' + section;
4007
+ patched = true;
4008
+ result.upgraded.push('CLAUDE.md: added Guard Posture (/guards) capability section');
4009
+ }
4010
+ else {
4011
+ result.skipped.push('CLAUDE.md: Guard Posture (/guards) capability section already present');
4012
+ }
3985
4013
  // AgentWorktreeReaper report (RESPONSIBLE-RESOURCE-USAGE — OS resource hygiene).
3986
4014
  // Tells the agent the "which stale worktrees can be reclaimed?" read-surface
3987
4015
  // exists. Without it, an agent asked about worktree disk/sprawl has no grounded