instar 1.3.328 → 1.3.330

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.
@@ -34,6 +34,24 @@ export interface HttpLeaseTransportDeps {
34
34
  fetchImpl?: typeof fetch;
35
35
  /** How recent a successful broadcast counts as "reachable". Default = leaseTtlMs. */
36
36
  reachabilityWindowMs?: number;
37
+ /**
38
+ * Per-request abort timeout (P19 brake: a hung socket must not wedge the
39
+ * caller's fixed-cadence loop — the pull loop's `leasePulling` guard would
40
+ * otherwise stay held forever). Default 30s: the timeout must sit ABOVE the
41
+ * fleet's documented 5–40s receiver-side event-loop-stall envelope's bulk —
42
+ * a slow-but-alive peer must NOT be converted into "no medium", because a
43
+ * failed broadcast feeds the renewal path's self-suspend (second-pass
44
+ * reviewer finding). A truly hung socket never returns, so 30s bounds the
45
+ * wedge exactly as well as a smaller value would. server.ts derives this
46
+ * from leaseTtlMs (min(ttl/2, 30s)).
47
+ */
48
+ requestTimeoutMs?: number;
49
+ /**
50
+ * Coarse-reminder interval for the per-peer failure log gate (P19 brake:
51
+ * per-attempt logging is amplification — a down peer at a 5s cadence wrote
52
+ * ~17k lines/day). Default 360 consecutive failures (~30min at 5s).
53
+ */
54
+ failureLogEveryN?: number;
37
55
  now?: () => number;
38
56
  logger?: (msg: string) => void;
39
57
  }
@@ -44,7 +62,13 @@ export declare class HttpLeaseTransport implements LeaseTransport {
44
62
  private lastBroadcastOkAt;
45
63
  private lastPullOkAt;
46
64
  private readonly windowMs;
65
+ private readonly requestTimeoutMs;
66
+ /** State-change failure logging (first/Nth/recovery) — never per-attempt. */
67
+ private readonly logGate;
47
68
  constructor(deps: HttpLeaseTransportDeps);
69
+ /** Gated failure/recovery logging — emits only on state changes + coarse reminders. */
70
+ private logFailure;
71
+ private logSuccess;
48
72
  private now;
49
73
  private log;
50
74
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"HttpLeaseTransport.d.ts","sourceRoot":"","sources":["../../src/core/HttpLeaseTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,KAAK,EAAE,MAAM,SAAS,EAAE,CAAC;IACzB,kFAAkF;IAClF,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,qFAAqF;IACrF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAyB;IAC3C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,IAAI,EAAE,sBAAsB;IAKxC,OAAO,CAAC,GAAG;IAGX,OAAO,CAAC,GAAG;IAIX;;;;OAIG;IACG,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BrD,QAAQ,IAAI;QAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAIpF,WAAW,IAAI,OAAO;IAStB;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAaxC;;;;;;;;;;;;OAYG;IACG,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IA0B5D;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAKpC"}
1
+ {"version":3,"file":"HttpLeaseTransport.d.ts","sourceRoot":"","sources":["../../src/core/HttpLeaseTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,KAAK,EAAE,MAAM,SAAS,EAAE,CAAC;IACzB,kFAAkF;IAClF,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,qFAAqF;IACrF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAyB;IAC3C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,IAAI,EAAE,sBAAsB;IAOxC,uFAAuF;IACvF,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,GAAG;IAGX,OAAO,CAAC,GAAG;IAIX;;;;OAIG;IACG,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAoCrD,QAAQ,IAAI;QAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAIpF,WAAW,IAAI,OAAO;IAStB;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAaxC;;;;;;;;;;;;OAYG;IACG,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAiC5D;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAKpC"}
@@ -17,6 +17,7 @@
17
17
  * logic is unit-testable without a network.
18
18
  */
19
19
  import { signRequest } from '../server/machineAuth.js';
20
+ import { PeerFailureLogGate } from './PeerFailureLogGate.js';
20
21
  export class HttpLeaseTransport {
21
22
  d;
22
23
  lastObserved = null;
@@ -24,9 +25,25 @@ export class HttpLeaseTransport {
24
25
  lastBroadcastOkAt = 0;
25
26
  lastPullOkAt = 0;
26
27
  windowMs;
28
+ requestTimeoutMs;
29
+ /** State-change failure logging (first/Nth/recovery) — never per-attempt. */
30
+ logGate;
27
31
  constructor(deps) {
28
32
  this.d = deps;
29
33
  this.windowMs = deps.reachabilityWindowMs ?? 60_000;
34
+ this.requestTimeoutMs = deps.requestTimeoutMs ?? 30_000;
35
+ this.logGate = new PeerFailureLogGate(deps.failureLogEveryN ?? 360);
36
+ }
37
+ /** Gated failure/recovery logging — emits only on state changes + coarse reminders. */
38
+ logFailure(key, detail) {
39
+ const line = this.logGate.failed(key, detail);
40
+ if (line)
41
+ this.log(line);
42
+ }
43
+ logSuccess(key) {
44
+ const line = this.logGate.succeeded(key);
45
+ if (line)
46
+ this.log(line);
30
47
  }
31
48
  now() {
32
49
  return (this.d.now ?? Date.now)();
@@ -56,12 +73,19 @@ export class HttpLeaseTransport {
56
73
  method: 'POST',
57
74
  headers: { 'Content-Type': 'application/json', ...headers },
58
75
  body: JSON.stringify(body),
76
+ // P19 brake: a hung socket aborts instead of holding the caller open.
77
+ signal: AbortSignal.timeout(this.requestTimeoutMs),
59
78
  });
60
- if (res && res.ok)
79
+ if (res && res.ok) {
61
80
  anyOk = true;
81
+ this.logSuccess(`broadcast to ${peer.machineId}`);
82
+ }
83
+ else {
84
+ this.logFailure(`broadcast to ${peer.machineId}`, `status ${res?.status}`);
85
+ }
62
86
  }
63
87
  catch (err) {
64
- this.log(`broadcast to ${peer.machineId} failed: ${err instanceof Error ? err.message : String(err)}`);
88
+ this.logFailure(`broadcast to ${peer.machineId}`, err instanceof Error ? err.message : String(err));
65
89
  }
66
90
  }));
67
91
  if (anyOk)
@@ -121,12 +145,18 @@ export class HttpLeaseTransport {
121
145
  method: 'POST',
122
146
  headers: { 'Content-Type': 'application/json', ...headers },
123
147
  body: JSON.stringify(body),
148
+ // P19 brake: the pull loop's `leasePulling` guard means a hung socket
149
+ // would wedge ALL future pulls — abort instead.
150
+ signal: AbortSignal.timeout(this.requestTimeoutMs),
124
151
  });
125
- if (!res || !res.ok)
152
+ if (!res || !res.ok) {
153
+ this.logFailure(`pull from ${peer.machineId}`, `status ${res?.status}`);
126
154
  return null;
155
+ }
127
156
  const data = (await res.json().catch(() => null));
128
157
  // A successful response (even one carrying no lease) proves the medium is live.
129
158
  this.lastPullOkAt = this.now();
159
+ this.logSuccess(`pull from ${peer.machineId}`);
130
160
  const lease = data?.lease ?? null;
131
161
  if (lease && typeof lease.epoch === 'number') {
132
162
  this.recordObserved(lease);
@@ -135,7 +165,7 @@ export class HttpLeaseTransport {
135
165
  return null;
136
166
  }
137
167
  catch (err) {
138
- this.log(`pull from ${peer.machineId} failed: ${err instanceof Error ? err.message : String(err)}`);
168
+ this.logFailure(`pull from ${peer.machineId}`, err instanceof Error ? err.message : String(err));
139
169
  return null;
140
170
  }
141
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HttpLeaseTransport.js","sourceRoot":"","sources":["../../src/core/HttpLeaseTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HttpLeaseTransport.js","sourceRoot":"","sources":["../../src/core/HttpLeaseTransport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * PeerFailureLogGate — bounded per-peer failure logging for fixed-cadence mesh
3
+ * loops ("No Unbounded Loops" / P19: per-attempt log lines are amplification —
4
+ * cap them).
5
+ *
6
+ * The lease pull/broadcast loops run at a deliberate fixed cadence (~5s,
7
+ * anti-blinding — an Eternal-Sentinel-adjacent design where backing off the
8
+ * ATTEMPTS is wrong). But logging one line per failed attempt turned a
9
+ * down peer into ~17,000 log lines/day (the 2026-06-05 loop-safety audit,
10
+ * the same flood signature as the reaper incident). This gate converts
11
+ * per-attempt logging into STATE-CHANGE logging:
12
+ *
13
+ * - first failure after success (or ever) → log ("became unreachable")
14
+ * - every Nth consecutive failure → one coarse reminder with the count
15
+ * - first success after failures → log ("recovered after N failures")
16
+ * - steady state (all-success / mid-window) → silence
17
+ *
18
+ * Count-based (no clock) so the bound is exact: F consecutive failures produce
19
+ * ⌈F/N⌉ + 1 lines instead of F. Pure, per-key (peer × operation), bounded state.
20
+ */
21
+ export declare class PeerFailureLogGate {
22
+ private readonly everyN;
23
+ /**
24
+ * Per-key consecutive failure count (0 = healthy). Recovered keys are
25
+ * deleted, so retained state is bounded by currently-failing peer×op pairs.
26
+ * (A peer removed from the registry mid-streak leaves one stale entry —
27
+ * bounded by historical peer count; second-pass reviewer assessed as
28
+ * acceptable.)
29
+ */
30
+ private failures;
31
+ /** @param everyN coarse-reminder interval in consecutive failures. Default 360 (~30min at a 5s cadence). */
32
+ constructor(everyN?: number);
33
+ /**
34
+ * Record a failed attempt for `key`. Returns the line to log, or null when
35
+ * this attempt should be silent (inside the suppression window).
36
+ */
37
+ failed(key: string, detail: string): string | null;
38
+ /**
39
+ * Record a successful attempt. Returns the recovery line when this success
40
+ * ends a failure streak, null in steady healthy state.
41
+ */
42
+ succeeded(key: string): string | null;
43
+ }
44
+ //# sourceMappingURL=PeerFailureLogGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeerFailureLogGate.d.ts","sourceRoot":"","sources":["../../src/core/PeerFailureLogGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAA6B;IAE7C,4GAA4G;gBAChG,MAAM,GAAE,MAAY;IAIhC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQlD;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAMtC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * PeerFailureLogGate — bounded per-peer failure logging for fixed-cadence mesh
3
+ * loops ("No Unbounded Loops" / P19: per-attempt log lines are amplification —
4
+ * cap them).
5
+ *
6
+ * The lease pull/broadcast loops run at a deliberate fixed cadence (~5s,
7
+ * anti-blinding — an Eternal-Sentinel-adjacent design where backing off the
8
+ * ATTEMPTS is wrong). But logging one line per failed attempt turned a
9
+ * down peer into ~17,000 log lines/day (the 2026-06-05 loop-safety audit,
10
+ * the same flood signature as the reaper incident). This gate converts
11
+ * per-attempt logging into STATE-CHANGE logging:
12
+ *
13
+ * - first failure after success (or ever) → log ("became unreachable")
14
+ * - every Nth consecutive failure → one coarse reminder with the count
15
+ * - first success after failures → log ("recovered after N failures")
16
+ * - steady state (all-success / mid-window) → silence
17
+ *
18
+ * Count-based (no clock) so the bound is exact: F consecutive failures produce
19
+ * ⌈F/N⌉ + 1 lines instead of F. Pure, per-key (peer × operation), bounded state.
20
+ */
21
+ export class PeerFailureLogGate {
22
+ everyN;
23
+ /**
24
+ * Per-key consecutive failure count (0 = healthy). Recovered keys are
25
+ * deleted, so retained state is bounded by currently-failing peer×op pairs.
26
+ * (A peer removed from the registry mid-streak leaves one stale entry —
27
+ * bounded by historical peer count; second-pass reviewer assessed as
28
+ * acceptable.)
29
+ */
30
+ failures = new Map();
31
+ /** @param everyN coarse-reminder interval in consecutive failures. Default 360 (~30min at a 5s cadence). */
32
+ constructor(everyN = 360) {
33
+ this.everyN = Math.max(1, everyN);
34
+ }
35
+ /**
36
+ * Record a failed attempt for `key`. Returns the line to log, or null when
37
+ * this attempt should be silent (inside the suppression window).
38
+ */
39
+ failed(key, detail) {
40
+ const n = (this.failures.get(key) ?? 0) + 1;
41
+ this.failures.set(key, n);
42
+ if (n === 1)
43
+ return `${key} became unreachable: ${detail}`;
44
+ if (n % this.everyN === 0)
45
+ return `${key} still unreachable (${n} consecutive failures): ${detail}`;
46
+ return null;
47
+ }
48
+ /**
49
+ * Record a successful attempt. Returns the recovery line when this success
50
+ * ends a failure streak, null in steady healthy state.
51
+ */
52
+ succeeded(key) {
53
+ const n = this.failures.get(key) ?? 0;
54
+ if (n === 0)
55
+ return null;
56
+ this.failures.delete(key);
57
+ return `${key} recovered after ${n} consecutive failures`;
58
+ }
59
+ }
60
+ //# sourceMappingURL=PeerFailureLogGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeerFailureLogGate.js","sourceRoot":"","sources":["../../src/core/PeerFailureLogGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,OAAO,kBAAkB;IACZ,MAAM,CAAS;IAChC;;;;;;OAMG;IACK,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,4GAA4G;IAC5G,YAAY,SAAiB,GAAG;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,GAAW,EAAE,MAAc;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,GAAG,wBAAwB,MAAM,EAAE,CAAC;QAC3D,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,GAAG,uBAAuB,CAAC,2BAA2B,MAAM,EAAE,CAAC;QACpG,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,GAAW;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,GAAG,GAAG,oBAAoB,CAAC,uBAAuB,CAAC;IAC5D,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.328",
3
+ "version": "1.3.330",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-06-06T03:04:21.535Z",
5
- "instarVersion": "1.3.328",
4
+ "generatedAt": "2026-06-06T03:14:51.251Z",
5
+ "instarVersion": "1.3.330",
6
6
  "entryCount": 199,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -778,7 +778,7 @@
778
778
  "type": "cli-command",
779
779
  "domain": "setup",
780
780
  "sourcePath": "src/cli.ts",
781
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
781
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
782
782
  "since": "2025-01-01"
783
783
  },
784
784
  "cli:setup": {
@@ -786,7 +786,7 @@
786
786
  "type": "cli-command",
787
787
  "domain": "setup",
788
788
  "sourcePath": "src/cli.ts",
789
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
789
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
790
790
  "since": "2025-01-01"
791
791
  },
792
792
  "cli:add": {
@@ -794,7 +794,7 @@
794
794
  "type": "cli-command",
795
795
  "domain": "setup",
796
796
  "sourcePath": "src/cli.ts",
797
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
797
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
798
798
  "since": "2025-01-01"
799
799
  },
800
800
  "cli:backup": {
@@ -802,7 +802,7 @@
802
802
  "type": "cli-command",
803
803
  "domain": "operations",
804
804
  "sourcePath": "src/cli.ts",
805
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
805
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
806
806
  "since": "2025-01-01"
807
807
  },
808
808
  "cli:git": {
@@ -810,7 +810,7 @@
810
810
  "type": "cli-command",
811
811
  "domain": "coordination",
812
812
  "sourcePath": "src/cli.ts",
813
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
813
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
814
814
  "since": "2025-01-01"
815
815
  },
816
816
  "cli:memory": {
@@ -818,7 +818,7 @@
818
818
  "type": "cli-command",
819
819
  "domain": "memory",
820
820
  "sourcePath": "src/cli.ts",
821
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
821
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
822
822
  "since": "2025-01-01"
823
823
  },
824
824
  "cli:knowledge": {
@@ -826,7 +826,7 @@
826
826
  "type": "cli-command",
827
827
  "domain": "memory",
828
828
  "sourcePath": "src/cli.ts",
829
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
829
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
830
830
  "since": "2025-01-01"
831
831
  },
832
832
  "cli:semantic": {
@@ -834,7 +834,7 @@
834
834
  "type": "cli-command",
835
835
  "domain": "memory",
836
836
  "sourcePath": "src/cli.ts",
837
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
837
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
838
838
  "since": "2025-01-01"
839
839
  },
840
840
  "cli:intent": {
@@ -842,7 +842,7 @@
842
842
  "type": "cli-command",
843
843
  "domain": "intent",
844
844
  "sourcePath": "src/cli.ts",
845
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
845
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
846
846
  "since": "2025-01-01"
847
847
  },
848
848
  "cli:feedback": {
@@ -850,7 +850,7 @@
850
850
  "type": "cli-command",
851
851
  "domain": "feedback",
852
852
  "sourcePath": "src/cli.ts",
853
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
853
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
854
854
  "since": "2025-01-01"
855
855
  },
856
856
  "cli:server": {
@@ -858,7 +858,7 @@
858
858
  "type": "cli-command",
859
859
  "domain": "server",
860
860
  "sourcePath": "src/cli.ts",
861
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
861
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
862
862
  "since": "2025-01-01"
863
863
  },
864
864
  "cli:status": {
@@ -866,7 +866,7 @@
866
866
  "type": "cli-command",
867
867
  "domain": "monitoring",
868
868
  "sourcePath": "src/cli.ts",
869
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
869
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
870
870
  "since": "2025-01-01"
871
871
  },
872
872
  "cli:user": {
@@ -874,7 +874,7 @@
874
874
  "type": "cli-command",
875
875
  "domain": "users",
876
876
  "sourcePath": "src/cli.ts",
877
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
877
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
878
878
  "since": "2025-01-01"
879
879
  },
880
880
  "cli:relationship": {
@@ -882,7 +882,7 @@
882
882
  "type": "cli-command",
883
883
  "domain": "relationships",
884
884
  "sourcePath": "src/cli.ts",
885
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
885
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
886
886
  "since": "2025-01-01"
887
887
  },
888
888
  "cli:job": {
@@ -890,7 +890,7 @@
890
890
  "type": "cli-command",
891
891
  "domain": "scheduling",
892
892
  "sourcePath": "src/cli.ts",
893
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
893
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
894
894
  "since": "2025-01-01"
895
895
  },
896
896
  "cli:lifeline": {
@@ -898,7 +898,7 @@
898
898
  "type": "cli-command",
899
899
  "domain": "communication",
900
900
  "sourcePath": "src/cli.ts",
901
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
901
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
902
902
  "since": "2025-01-01"
903
903
  },
904
904
  "cli:list": {
@@ -906,7 +906,7 @@
906
906
  "type": "cli-command",
907
907
  "domain": "monitoring",
908
908
  "sourcePath": "src/cli.ts",
909
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
909
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
910
910
  "since": "2025-01-01"
911
911
  },
912
912
  "cli:autostart": {
@@ -914,7 +914,7 @@
914
914
  "type": "cli-command",
915
915
  "domain": "operations",
916
916
  "sourcePath": "src/cli.ts",
917
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
917
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
918
918
  "since": "2025-01-01"
919
919
  },
920
920
  "cli:migrate": {
@@ -922,7 +922,7 @@
922
922
  "type": "cli-command",
923
923
  "domain": "updates",
924
924
  "sourcePath": "src/cli.ts",
925
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
925
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
926
926
  "since": "2025-01-01"
927
927
  },
928
928
  "cli:machines": {
@@ -930,7 +930,7 @@
930
930
  "type": "cli-command",
931
931
  "domain": "coordination",
932
932
  "sourcePath": "src/cli.ts",
933
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
933
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
934
934
  "since": "2025-01-01"
935
935
  },
936
936
  "cli:whoami": {
@@ -938,7 +938,7 @@
938
938
  "type": "cli-command",
939
939
  "domain": "identity",
940
940
  "sourcePath": "src/cli.ts",
941
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
941
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
942
942
  "since": "2025-01-01"
943
943
  },
944
944
  "cli:pair": {
@@ -946,7 +946,7 @@
946
946
  "type": "cli-command",
947
947
  "domain": "coordination",
948
948
  "sourcePath": "src/cli.ts",
949
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
949
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
950
950
  "since": "2025-01-01"
951
951
  },
952
952
  "cli:join": {
@@ -954,7 +954,7 @@
954
954
  "type": "cli-command",
955
955
  "domain": "coordination",
956
956
  "sourcePath": "src/cli.ts",
957
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
957
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
958
958
  "since": "2025-01-01"
959
959
  },
960
960
  "cli:wakeup": {
@@ -962,7 +962,7 @@
962
962
  "type": "cli-command",
963
963
  "domain": "coordination",
964
964
  "sourcePath": "src/cli.ts",
965
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
965
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
966
966
  "since": "2025-01-01"
967
967
  },
968
968
  "cli:leave": {
@@ -970,7 +970,7 @@
970
970
  "type": "cli-command",
971
971
  "domain": "coordination",
972
972
  "sourcePath": "src/cli.ts",
973
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
973
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
974
974
  "since": "2025-01-01"
975
975
  },
976
976
  "cli:doctor": {
@@ -978,7 +978,7 @@
978
978
  "type": "cli-command",
979
979
  "domain": "monitoring",
980
980
  "sourcePath": "src/cli.ts",
981
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
981
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
982
982
  "since": "2025-01-01"
983
983
  },
984
984
  "cli:review": {
@@ -986,7 +986,7 @@
986
986
  "type": "cli-command",
987
987
  "domain": "monitoring",
988
988
  "sourcePath": "src/cli.ts",
989
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
989
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
990
990
  "since": "2025-01-01"
991
991
  },
992
992
  "cli:nuke": {
@@ -994,7 +994,7 @@
994
994
  "type": "cli-command",
995
995
  "domain": "operations",
996
996
  "sourcePath": "src/cli.ts",
997
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
997
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
998
998
  "since": "2025-01-01"
999
999
  },
1000
1000
  "cli:playbook": {
@@ -1002,7 +1002,7 @@
1002
1002
  "type": "cli-command",
1003
1003
  "domain": "context",
1004
1004
  "sourcePath": "src/cli.ts",
1005
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
1005
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
1006
1006
  "since": "2025-01-01"
1007
1007
  },
1008
1008
  "cli:dev-preflight": {
@@ -1010,7 +1010,7 @@
1010
1010
  "type": "cli-command",
1011
1011
  "domain": "development",
1012
1012
  "sourcePath": "src/cli.ts",
1013
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
1013
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
1014
1014
  "since": "2025-01-01"
1015
1015
  },
1016
1016
  "cli:dev-ci-failures": {
@@ -1018,7 +1018,7 @@
1018
1018
  "type": "cli-command",
1019
1019
  "domain": "development",
1020
1020
  "sourcePath": "src/cli.ts",
1021
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
1021
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
1022
1022
  "since": "2025-01-01"
1023
1023
  },
1024
1024
  "cli:dev-profile-node": {
@@ -1026,7 +1026,7 @@
1026
1026
  "type": "cli-command",
1027
1027
  "domain": "development",
1028
1028
  "sourcePath": "src/cli.ts",
1029
- "contentHash": "e513a3a7f1cae3970a8a34bf51ae622ba47fa8026f85e6d2f3fed4581e9ec8e7",
1029
+ "contentHash": "bfa434d670d4a07e78522422cffe333026479f9c3c4a8afea35d1a1203e4fe29",
1030
1030
  "since": "2025-01-01"
1031
1031
  },
1032
1032
  "template:build-stop-hook.sh": {