instar 1.3.370 → 1.3.372
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.map +1 -1
- package/dist/commands/server.js +139 -4
- package/dist/commands/server.js.map +1 -1
- package/dist/core/CommitmentMutation.d.ts +141 -0
- package/dist/core/CommitmentMutation.d.ts.map +1 -0
- package/dist/core/CommitmentMutation.js +326 -0
- package/dist/core/CommitmentMutation.js.map +1 -0
- package/dist/core/MeshRpc.d.ts +12 -0
- package/dist/core/MeshRpc.d.ts.map +1 -1
- package/dist/core/MeshRpc.js +9 -0
- package/dist/core/MeshRpc.js.map +1 -1
- package/dist/core/PoolActivityView.d.ts +87 -0
- package/dist/core/PoolActivityView.d.ts.map +1 -0
- package/dist/core/PoolActivityView.js +146 -0
- package/dist/core/PoolActivityView.js.map +1 -0
- package/dist/server/AgentServer.d.ts +8 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +1 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts +10 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +135 -4
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +47 -47
- package/src/data/state-coherence-registry.json +24 -0
- package/upgrades/1.3.371.md +62 -0
- package/upgrades/1.3.372.md +37 -0
- package/upgrades/side-effects/commitment-mutation-p15b.md +70 -0
- package/upgrades/side-effects/pool-activity-view-p4.md +54 -0
- package/upgrades/side-effects/reflex-placement-fallback.md +57 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CommitmentMutation — P1.5b of multi-machine coherence: owner-routed
|
|
3
|
+
* mutation. "Mark it delivered" works from ANY machine: a non-owner forwards
|
|
4
|
+
* ONE signed `commitment-mutate` to the owner, which applies it through
|
|
5
|
+
* verdict-bearing wrappers around the unchanged CommitmentTracker state
|
|
6
|
+
* machine; an unreachable owner gets a durable pending-mutation that
|
|
7
|
+
* re-issues a FRESH envelope on the owner's return.
|
|
8
|
+
*
|
|
9
|
+
* Spec: docs/specs/COMMITMENTS-COHERENCE-SPEC.md §3.4.
|
|
10
|
+
*
|
|
11
|
+
* Load-bearing rules:
|
|
12
|
+
* - VERDICT-BEARING wrappers (round-1: the tracker's null-on-terminal
|
|
13
|
+
* collapses "already delivered" and "not found" — outcomes the caller
|
|
14
|
+
* must distinguish): applied | idempotent-noop | invalid-transition |
|
|
15
|
+
* not-found.
|
|
16
|
+
* - opKey idempotency, DURABLE ON THE OWNER (the envelope nonce window is
|
|
17
|
+
* only 60s — this window is the replay control; it survives restarts;
|
|
18
|
+
* a replayed/re-fired mutate returns the recorded verdict, applies
|
|
19
|
+
* nothing). Written AFTER the store write; a crash between resolves as
|
|
20
|
+
* idempotent-noop on the re-fire.
|
|
21
|
+
* - The queue stores INTENT, never a signed envelope: at fire time the
|
|
22
|
+
* forwarder re-issues a FRESH signed command, so the owner always
|
|
23
|
+
* evaluates a live, fully-verified envelope (no stale-timestamp paradox;
|
|
24
|
+
* the durable queue is never an unauthenticated apply surface).
|
|
25
|
+
* - Bounds: maxPendingOpsPerCommitment (4) per (origin,id);
|
|
26
|
+
* maxPendingOpsPerOwner (64) — one peer cannot stage an unbounded
|
|
27
|
+
* transition batch.
|
|
28
|
+
* - verifyEnvelope is the SOLE authority for the verb (its RBAC case
|
|
29
|
+
* admits any registered peer by design); the owner's state machine
|
|
30
|
+
* re-validates every transition — mesh adds reach, not authority.
|
|
31
|
+
*/
|
|
32
|
+
import type { CommitmentTracker } from '../monitoring/CommitmentTracker.js';
|
|
33
|
+
export declare const DEFAULT_OPKEY_TTL_DAYS = 7;
|
|
34
|
+
export declare const DEFAULT_MAX_PENDING_PER_COMMITMENT = 4;
|
|
35
|
+
export declare const DEFAULT_MAX_PENDING_PER_OWNER = 64;
|
|
36
|
+
export declare const DEFAULT_PENDING_MUTATION_TTL_DAYS = 7;
|
|
37
|
+
export type CommitmentMutateOp = 'deliver' | 'withdraw' | 'resume' | 'patch-beacon';
|
|
38
|
+
export type MutateVerdict = 'applied' | 'idempotent-noop' | 'invalid-transition' | 'not-found';
|
|
39
|
+
export interface CommitmentMutatePayload {
|
|
40
|
+
/** Composite identity (§3.1) — a bare id NEVER routes across machines. */
|
|
41
|
+
origin: string;
|
|
42
|
+
id: string;
|
|
43
|
+
op: CommitmentMutateOp;
|
|
44
|
+
args?: Record<string, unknown>;
|
|
45
|
+
/** Caller-generated idempotency key (crypto.randomUUID). */
|
|
46
|
+
opKey: string;
|
|
47
|
+
requestedAt: string;
|
|
48
|
+
callerMachineId: string;
|
|
49
|
+
/** The status the caller observed (stale-view annotation, §3.4). */
|
|
50
|
+
observedStatus?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface MutateOutcome {
|
|
53
|
+
verdict: MutateVerdict;
|
|
54
|
+
/** Set when the caller acted on a stale view (observedStatus mismatch). */
|
|
55
|
+
staleObservation?: boolean;
|
|
56
|
+
status?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Apply one op through the UNCHANGED tracker state machine, returning a
|
|
60
|
+
* DISTINCT verdict. The tracker's own methods stay byte-identical — this
|
|
61
|
+
* wrapper only disambiguates outcomes they collapse.
|
|
62
|
+
*/
|
|
63
|
+
export declare function applyOwnerMutation(tracker: CommitmentTracker, payload: CommitmentMutatePayload): Promise<MutateOutcome>;
|
|
64
|
+
/**
|
|
65
|
+
* Bounded durable replay window: applied opKeys persist with their verdict
|
|
66
|
+
* (TTL ≥ the pending-mutation TTL); a replay returns the recorded verdict
|
|
67
|
+
* and applies NOTHING. Single-writer (only the verb handler), atomic
|
|
68
|
+
* temp+rename, corrupt → quarantine + fresh (worst case one idempotent
|
|
69
|
+
* re-apply through the CAS).
|
|
70
|
+
*/
|
|
71
|
+
export declare class OpKeyWindow {
|
|
72
|
+
private readonly file;
|
|
73
|
+
private readonly ttlMs;
|
|
74
|
+
private readonly now;
|
|
75
|
+
private data;
|
|
76
|
+
constructor(config: {
|
|
77
|
+
stateDir: string;
|
|
78
|
+
ttlDays?: number;
|
|
79
|
+
now?: () => Date;
|
|
80
|
+
});
|
|
81
|
+
/** The recorded verdict for a replayed opKey, or null when unseen. */
|
|
82
|
+
check(opKey: string): MutateOutcome | null;
|
|
83
|
+
/** Record an outcome AFTER the store write (§4.5 ordering). */
|
|
84
|
+
record(opKey: string, outcome: MutateOutcome): void;
|
|
85
|
+
private load;
|
|
86
|
+
}
|
|
87
|
+
export interface PendingMutationRecord {
|
|
88
|
+
payload: CommitmentMutatePayload;
|
|
89
|
+
createdAt: string;
|
|
90
|
+
attempts: number;
|
|
91
|
+
lastAttemptAt: string | null;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The P2 PendingPullLedger pattern verbatim: serialized mutate() funnel
|
|
95
|
+
* (single-writer — the six-mutators lesson), corrupt-quarantine (never
|
|
96
|
+
* silently empty), TTL with one honest expiry notice, per-(origin,id) and
|
|
97
|
+
* per-owner enqueue bounds. Stores INTENT only; the re-fire issues a FRESH
|
|
98
|
+
* signed envelope.
|
|
99
|
+
*/
|
|
100
|
+
export declare class PendingMutationLedger {
|
|
101
|
+
private readonly file;
|
|
102
|
+
private readonly ttlMs;
|
|
103
|
+
private readonly maxPerCommitment;
|
|
104
|
+
private readonly maxPerOwner;
|
|
105
|
+
private readonly now;
|
|
106
|
+
private readonly onCorrupt?;
|
|
107
|
+
private readonly onExpired?;
|
|
108
|
+
private readonly logger;
|
|
109
|
+
private queue;
|
|
110
|
+
private records;
|
|
111
|
+
private corruptNotified;
|
|
112
|
+
constructor(config: {
|
|
113
|
+
stateDir: string;
|
|
114
|
+
ttlDays?: number;
|
|
115
|
+
maxPerCommitment?: number;
|
|
116
|
+
maxPerOwner?: number;
|
|
117
|
+
now?: () => Date;
|
|
118
|
+
onCorrupt?: (qPath: string) => void;
|
|
119
|
+
onExpired?: (rec: PendingMutationRecord) => void;
|
|
120
|
+
logger?: (msg: string) => void;
|
|
121
|
+
});
|
|
122
|
+
/**
|
|
123
|
+
* Queue an intent. Idempotent on opKey; refused ('bounded') past the
|
|
124
|
+
* per-(origin,id) or per-owner caps.
|
|
125
|
+
*/
|
|
126
|
+
enqueue(payload: CommitmentMutatePayload): Promise<'queued' | 'duplicate' | 'bounded'>;
|
|
127
|
+
/** Pending intents for a returning owner, oldest-first (drain order). */
|
|
128
|
+
pendingForOwner(origin: string): Promise<PendingMutationRecord[]>;
|
|
129
|
+
/** A resolved intent (any verdict) clears its record. */
|
|
130
|
+
clear(opKey: string): Promise<void>;
|
|
131
|
+
recordAttempt(opKey: string): Promise<void>;
|
|
132
|
+
/** TTL sweep — each expiry surfaced ONCE via onExpired, then removed. */
|
|
133
|
+
sweepExpired(): Promise<PendingMutationRecord[]>;
|
|
134
|
+
/** Composite keys with in-flight intents — the merge layer's join (§3.3). */
|
|
135
|
+
pendingKeys(): Promise<Set<string>>;
|
|
136
|
+
private mutate;
|
|
137
|
+
private read;
|
|
138
|
+
private readUnqueued;
|
|
139
|
+
private persist;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=CommitmentMutation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommitmentMutation.d.ts","sourceRoot":"","sources":["../../src/core/CommitmentMutation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CommitmentMutation — P1.5b of multi-machine coherence: owner-routed
|
|
3
|
+
* mutation. "Mark it delivered" works from ANY machine: a non-owner forwards
|
|
4
|
+
* ONE signed `commitment-mutate` to the owner, which applies it through
|
|
5
|
+
* verdict-bearing wrappers around the unchanged CommitmentTracker state
|
|
6
|
+
* machine; an unreachable owner gets a durable pending-mutation that
|
|
7
|
+
* re-issues a FRESH envelope on the owner's return.
|
|
8
|
+
*
|
|
9
|
+
* Spec: docs/specs/COMMITMENTS-COHERENCE-SPEC.md §3.4.
|
|
10
|
+
*
|
|
11
|
+
* Load-bearing rules:
|
|
12
|
+
* - VERDICT-BEARING wrappers (round-1: the tracker's null-on-terminal
|
|
13
|
+
* collapses "already delivered" and "not found" — outcomes the caller
|
|
14
|
+
* must distinguish): applied | idempotent-noop | invalid-transition |
|
|
15
|
+
* not-found.
|
|
16
|
+
* - opKey idempotency, DURABLE ON THE OWNER (the envelope nonce window is
|
|
17
|
+
* only 60s — this window is the replay control; it survives restarts;
|
|
18
|
+
* a replayed/re-fired mutate returns the recorded verdict, applies
|
|
19
|
+
* nothing). Written AFTER the store write; a crash between resolves as
|
|
20
|
+
* idempotent-noop on the re-fire.
|
|
21
|
+
* - The queue stores INTENT, never a signed envelope: at fire time the
|
|
22
|
+
* forwarder re-issues a FRESH signed command, so the owner always
|
|
23
|
+
* evaluates a live, fully-verified envelope (no stale-timestamp paradox;
|
|
24
|
+
* the durable queue is never an unauthenticated apply surface).
|
|
25
|
+
* - Bounds: maxPendingOpsPerCommitment (4) per (origin,id);
|
|
26
|
+
* maxPendingOpsPerOwner (64) — one peer cannot stage an unbounded
|
|
27
|
+
* transition batch.
|
|
28
|
+
* - verifyEnvelope is the SOLE authority for the verb (its RBAC case
|
|
29
|
+
* admits any registered peer by design); the owner's state machine
|
|
30
|
+
* re-validates every transition — mesh adds reach, not authority.
|
|
31
|
+
*/
|
|
32
|
+
import fs from 'node:fs';
|
|
33
|
+
import path from 'node:path';
|
|
34
|
+
export const DEFAULT_OPKEY_TTL_DAYS = 7;
|
|
35
|
+
export const DEFAULT_MAX_PENDING_PER_COMMITMENT = 4;
|
|
36
|
+
export const DEFAULT_MAX_PENDING_PER_OWNER = 64;
|
|
37
|
+
export const DEFAULT_PENDING_MUTATION_TTL_DAYS = 7;
|
|
38
|
+
// ── Verdict-bearing owner-side apply (§3.4) ─────────────────────────
|
|
39
|
+
const TERMINAL = new Set(['verified', 'violated', 'expired', 'withdrawn', 'delivered']);
|
|
40
|
+
/**
|
|
41
|
+
* Apply one op through the UNCHANGED tracker state machine, returning a
|
|
42
|
+
* DISTINCT verdict. The tracker's own methods stay byte-identical — this
|
|
43
|
+
* wrapper only disambiguates outcomes they collapse.
|
|
44
|
+
*/
|
|
45
|
+
export async function applyOwnerMutation(tracker, payload) {
|
|
46
|
+
const existing = tracker.getAll().find((c) => c.id === payload.id);
|
|
47
|
+
if (!existing)
|
|
48
|
+
return { verdict: 'not-found' };
|
|
49
|
+
const stale = payload.observedStatus !== undefined && payload.observedStatus !== existing.status;
|
|
50
|
+
switch (payload.op) {
|
|
51
|
+
case 'deliver': {
|
|
52
|
+
if (existing.status === 'delivered') {
|
|
53
|
+
return { verdict: 'idempotent-noop', status: existing.status, ...(stale ? { staleObservation: true } : {}) };
|
|
54
|
+
}
|
|
55
|
+
if (TERMINAL.has(existing.status)) {
|
|
56
|
+
return { verdict: 'invalid-transition', status: existing.status, ...(stale ? { staleObservation: true } : {}) };
|
|
57
|
+
}
|
|
58
|
+
const r = tracker.deliver(payload.id, typeof payload.args?.deliveryMessageId === 'string' ? payload.args.deliveryMessageId : undefined);
|
|
59
|
+
return r
|
|
60
|
+
? { verdict: 'applied', status: r.status, ...(stale ? { staleObservation: true } : {}) }
|
|
61
|
+
: { verdict: 'invalid-transition', status: existing.status };
|
|
62
|
+
}
|
|
63
|
+
case 'withdraw': {
|
|
64
|
+
if (existing.status === 'withdrawn') {
|
|
65
|
+
return { verdict: 'idempotent-noop', status: existing.status, ...(stale ? { staleObservation: true } : {}) };
|
|
66
|
+
}
|
|
67
|
+
if (TERMINAL.has(existing.status)) {
|
|
68
|
+
return { verdict: 'invalid-transition', status: existing.status, ...(stale ? { staleObservation: true } : {}) };
|
|
69
|
+
}
|
|
70
|
+
const ok = tracker.withdraw(payload.id, typeof payload.args?.reason === 'string' ? payload.args.reason : 'owner-routed withdraw');
|
|
71
|
+
return ok
|
|
72
|
+
? { verdict: 'applied', status: 'withdrawn', ...(stale ? { staleObservation: true } : {}) }
|
|
73
|
+
: { verdict: 'invalid-transition', status: existing.status };
|
|
74
|
+
}
|
|
75
|
+
case 'resume': {
|
|
76
|
+
if (existing.status === 'pending') {
|
|
77
|
+
return { verdict: 'idempotent-noop', status: existing.status, ...(stale ? { staleObservation: true } : {}) };
|
|
78
|
+
}
|
|
79
|
+
const r = tracker.resume(payload.id);
|
|
80
|
+
return r
|
|
81
|
+
? { verdict: 'applied', status: r.status, ...(stale ? { staleObservation: true } : {}) }
|
|
82
|
+
: { verdict: 'invalid-transition', status: existing.status };
|
|
83
|
+
}
|
|
84
|
+
case 'patch-beacon': {
|
|
85
|
+
const allowed = new Set(['beaconEnabled', 'cadenceMs', 'nextUpdateDueAt', 'softDeadlineAt', 'hardDeadlineAt']);
|
|
86
|
+
const patch = {};
|
|
87
|
+
for (const [k, v] of Object.entries(payload.args ?? {})) {
|
|
88
|
+
if (allowed.has(k))
|
|
89
|
+
patch[k] = v;
|
|
90
|
+
}
|
|
91
|
+
if (!Object.keys(patch).length)
|
|
92
|
+
return { verdict: 'idempotent-noop', status: existing.status };
|
|
93
|
+
const r = await tracker.mutate(payload.id, (c) => ({ ...c, ...patch }));
|
|
94
|
+
return { verdict: 'applied', status: r.status, ...(stale ? { staleObservation: true } : {}) };
|
|
95
|
+
}
|
|
96
|
+
default:
|
|
97
|
+
return { verdict: 'invalid-transition', status: existing.status };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Bounded durable replay window: applied opKeys persist with their verdict
|
|
102
|
+
* (TTL ≥ the pending-mutation TTL); a replay returns the recorded verdict
|
|
103
|
+
* and applies NOTHING. Single-writer (only the verb handler), atomic
|
|
104
|
+
* temp+rename, corrupt → quarantine + fresh (worst case one idempotent
|
|
105
|
+
* re-apply through the CAS).
|
|
106
|
+
*/
|
|
107
|
+
export class OpKeyWindow {
|
|
108
|
+
file;
|
|
109
|
+
ttlMs;
|
|
110
|
+
now;
|
|
111
|
+
data = null;
|
|
112
|
+
constructor(config) {
|
|
113
|
+
this.file = path.join(config.stateDir, 'state', 'coherence-journal', 'commitment-opkeys.json');
|
|
114
|
+
this.ttlMs = (config.ttlDays ?? DEFAULT_OPKEY_TTL_DAYS) * 24 * 60 * 60 * 1000;
|
|
115
|
+
this.now = config.now ?? (() => new Date());
|
|
116
|
+
}
|
|
117
|
+
/** The recorded verdict for a replayed opKey, or null when unseen. */
|
|
118
|
+
check(opKey) {
|
|
119
|
+
const d = this.load();
|
|
120
|
+
const rec = d.seen[opKey];
|
|
121
|
+
if (!rec)
|
|
122
|
+
return null;
|
|
123
|
+
return { verdict: rec.verdict, ...(rec.status ? { status: rec.status } : {}) };
|
|
124
|
+
}
|
|
125
|
+
/** Record an outcome AFTER the store write (§4.5 ordering). */
|
|
126
|
+
record(opKey, outcome) {
|
|
127
|
+
const d = this.load();
|
|
128
|
+
const nowMs = this.now().getTime();
|
|
129
|
+
// TTL sweep inline (bounded by entries; runs on every record).
|
|
130
|
+
for (const [k, v] of Object.entries(d.seen)) {
|
|
131
|
+
if (nowMs - new Date(v.at).getTime() > this.ttlMs)
|
|
132
|
+
delete d.seen[k];
|
|
133
|
+
}
|
|
134
|
+
d.seen[opKey] = { verdict: outcome.verdict, ...(outcome.status ? { status: outcome.status } : {}), at: this.now().toISOString() };
|
|
135
|
+
fs.mkdirSync(path.dirname(this.file), { recursive: true });
|
|
136
|
+
const tmp = `${this.file}.tmp-${process.pid}`;
|
|
137
|
+
fs.writeFileSync(tmp, JSON.stringify(d));
|
|
138
|
+
fs.renameSync(tmp, this.file);
|
|
139
|
+
}
|
|
140
|
+
load() {
|
|
141
|
+
if (this.data)
|
|
142
|
+
return this.data;
|
|
143
|
+
try {
|
|
144
|
+
const parsed = JSON.parse(fs.readFileSync(this.file, 'utf-8'));
|
|
145
|
+
if (parsed?.version === 1 && parsed.seen && typeof parsed.seen === 'object') {
|
|
146
|
+
this.data = parsed;
|
|
147
|
+
return parsed;
|
|
148
|
+
}
|
|
149
|
+
throw new Error('shape');
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
if (e.code !== 'ENOENT') {
|
|
153
|
+
try {
|
|
154
|
+
fs.renameSync(this.file, `${this.file}.corrupt-${this.now().getTime()}`);
|
|
155
|
+
}
|
|
156
|
+
catch { /* @silent-fallback-ok: quarantine rename best-effort; a lost window worst-cases one idempotent re-apply through the CAS (COMMITMENTS-COHERENCE-SPEC §3.4) */
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
this.data = { version: 1, seen: {} };
|
|
160
|
+
return this.data;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The P2 PendingPullLedger pattern verbatim: serialized mutate() funnel
|
|
166
|
+
* (single-writer — the six-mutators lesson), corrupt-quarantine (never
|
|
167
|
+
* silently empty), TTL with one honest expiry notice, per-(origin,id) and
|
|
168
|
+
* per-owner enqueue bounds. Stores INTENT only; the re-fire issues a FRESH
|
|
169
|
+
* signed envelope.
|
|
170
|
+
*/
|
|
171
|
+
export class PendingMutationLedger {
|
|
172
|
+
file;
|
|
173
|
+
ttlMs;
|
|
174
|
+
maxPerCommitment;
|
|
175
|
+
maxPerOwner;
|
|
176
|
+
now;
|
|
177
|
+
onCorrupt;
|
|
178
|
+
onExpired;
|
|
179
|
+
logger;
|
|
180
|
+
queue = Promise.resolve();
|
|
181
|
+
records = null;
|
|
182
|
+
corruptNotified = false;
|
|
183
|
+
constructor(config) {
|
|
184
|
+
this.file = path.join(config.stateDir, 'state', 'commitment-replicas', 'pending-mutations.json');
|
|
185
|
+
this.ttlMs = (config.ttlDays ?? DEFAULT_PENDING_MUTATION_TTL_DAYS) * 24 * 60 * 60 * 1000;
|
|
186
|
+
this.maxPerCommitment = config.maxPerCommitment ?? DEFAULT_MAX_PENDING_PER_COMMITMENT;
|
|
187
|
+
this.maxPerOwner = config.maxPerOwner ?? DEFAULT_MAX_PENDING_PER_OWNER;
|
|
188
|
+
this.now = config.now ?? (() => new Date());
|
|
189
|
+
this.onCorrupt = config.onCorrupt;
|
|
190
|
+
this.onExpired = config.onExpired;
|
|
191
|
+
this.logger = config.logger ?? (() => { });
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Queue an intent. Idempotent on opKey; refused ('bounded') past the
|
|
195
|
+
* per-(origin,id) or per-owner caps.
|
|
196
|
+
*/
|
|
197
|
+
async enqueue(payload) {
|
|
198
|
+
let outcome = 'queued';
|
|
199
|
+
await this.mutate((records) => {
|
|
200
|
+
if (records.some((r) => r.payload.opKey === payload.opKey)) {
|
|
201
|
+
outcome = 'duplicate';
|
|
202
|
+
return records;
|
|
203
|
+
}
|
|
204
|
+
const perCommitment = records.filter((r) => r.payload.origin === payload.origin && r.payload.id === payload.id).length;
|
|
205
|
+
const perOwner = records.filter((r) => r.payload.origin === payload.origin).length;
|
|
206
|
+
if (perCommitment >= this.maxPerCommitment || perOwner >= this.maxPerOwner) {
|
|
207
|
+
outcome = 'bounded';
|
|
208
|
+
return records;
|
|
209
|
+
}
|
|
210
|
+
records.push({ payload, createdAt: this.now().toISOString(), attempts: 0, lastAttemptAt: null });
|
|
211
|
+
return records;
|
|
212
|
+
});
|
|
213
|
+
return outcome;
|
|
214
|
+
}
|
|
215
|
+
/** Pending intents for a returning owner, oldest-first (drain order). */
|
|
216
|
+
async pendingForOwner(origin) {
|
|
217
|
+
const records = await this.read();
|
|
218
|
+
return records
|
|
219
|
+
.filter((r) => r.payload.origin === origin)
|
|
220
|
+
.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
|
221
|
+
}
|
|
222
|
+
/** A resolved intent (any verdict) clears its record. */
|
|
223
|
+
async clear(opKey) {
|
|
224
|
+
await this.mutate((records) => records.filter((r) => r.payload.opKey !== opKey));
|
|
225
|
+
}
|
|
226
|
+
async recordAttempt(opKey) {
|
|
227
|
+
await this.mutate((records) => {
|
|
228
|
+
const r = records.find((x) => x.payload.opKey === opKey);
|
|
229
|
+
if (r) {
|
|
230
|
+
r.attempts += 1;
|
|
231
|
+
r.lastAttemptAt = this.now().toISOString();
|
|
232
|
+
}
|
|
233
|
+
return records;
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
/** TTL sweep — each expiry surfaced ONCE via onExpired, then removed. */
|
|
237
|
+
async sweepExpired() {
|
|
238
|
+
const expired = [];
|
|
239
|
+
await this.mutate((records) => {
|
|
240
|
+
const nowMs = this.now().getTime();
|
|
241
|
+
const kept = [];
|
|
242
|
+
for (const r of records) {
|
|
243
|
+
if (nowMs - new Date(r.createdAt).getTime() > this.ttlMs)
|
|
244
|
+
expired.push(r);
|
|
245
|
+
else
|
|
246
|
+
kept.push(r);
|
|
247
|
+
}
|
|
248
|
+
for (const r of expired) {
|
|
249
|
+
try {
|
|
250
|
+
this.onExpired?.(r);
|
|
251
|
+
}
|
|
252
|
+
catch { /* @silent-fallback-ok: an expiry-notice consumer failure must never block the sweep (COMMITMENTS-COHERENCE-SPEC §4.2) */
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return kept;
|
|
256
|
+
});
|
|
257
|
+
return expired;
|
|
258
|
+
}
|
|
259
|
+
/** Composite keys with in-flight intents — the merge layer's join (§3.3). */
|
|
260
|
+
async pendingKeys() {
|
|
261
|
+
const records = await this.read();
|
|
262
|
+
return new Set(records.map((r) => `${r.payload.origin}::${r.payload.id}`));
|
|
263
|
+
}
|
|
264
|
+
// ── the serialized funnel ──
|
|
265
|
+
mutate(fn) {
|
|
266
|
+
const run = this.queue.then(() => {
|
|
267
|
+
const before = this.readUnqueued();
|
|
268
|
+
const next = fn(before);
|
|
269
|
+
this.persist(next);
|
|
270
|
+
this.records = next;
|
|
271
|
+
return next;
|
|
272
|
+
});
|
|
273
|
+
this.queue = run.catch(() => { });
|
|
274
|
+
return run;
|
|
275
|
+
}
|
|
276
|
+
read() {
|
|
277
|
+
const run = this.queue.then(() => this.readUnqueued());
|
|
278
|
+
this.queue = run.catch(() => { });
|
|
279
|
+
return run;
|
|
280
|
+
}
|
|
281
|
+
readUnqueued() {
|
|
282
|
+
if (this.records)
|
|
283
|
+
return this.records;
|
|
284
|
+
let raw;
|
|
285
|
+
try {
|
|
286
|
+
raw = fs.readFileSync(this.file, 'utf-8');
|
|
287
|
+
}
|
|
288
|
+
catch { /* @silent-fallback-ok: absent ledger = genuinely empty (first boot) — distinct from corrupt, which quarantines below (COMMITMENTS-COHERENCE-SPEC §3.4) */
|
|
289
|
+
this.records = [];
|
|
290
|
+
return this.records;
|
|
291
|
+
}
|
|
292
|
+
try {
|
|
293
|
+
const parsed = JSON.parse(raw);
|
|
294
|
+
if (parsed?.version !== 1 || !Array.isArray(parsed.records))
|
|
295
|
+
throw new Error('shape');
|
|
296
|
+
this.records = parsed.records.filter((r) => r?.payload?.opKey && r.payload.origin && r.payload.id);
|
|
297
|
+
return this.records;
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
const q = `${this.file}.corrupt-${this.now().getTime()}`;
|
|
301
|
+
try {
|
|
302
|
+
fs.renameSync(this.file, q);
|
|
303
|
+
}
|
|
304
|
+
catch { /* @silent-fallback-ok: quarantine rename can lose a race; the notice below still fires once (COMMITMENTS-COHERENCE-SPEC §3.4) */
|
|
305
|
+
}
|
|
306
|
+
this.logger('pending-mutations ledger unreadable — quarantined; queued closes may be lost');
|
|
307
|
+
if (!this.corruptNotified) {
|
|
308
|
+
this.corruptNotified = true;
|
|
309
|
+
try {
|
|
310
|
+
this.onCorrupt?.(q);
|
|
311
|
+
}
|
|
312
|
+
catch { /* @silent-fallback-ok: a corrupt-notice consumer failure must never block ledger recovery (COMMITMENTS-COHERENCE-SPEC §3.4) */
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
this.records = [];
|
|
316
|
+
return this.records;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
persist(records) {
|
|
320
|
+
fs.mkdirSync(path.dirname(this.file), { recursive: true });
|
|
321
|
+
const tmp = `${this.file}.tmp-${process.pid}`;
|
|
322
|
+
fs.writeFileSync(tmp, JSON.stringify({ version: 1, records }, null, 2));
|
|
323
|
+
fs.renameSync(tmp, this.file);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=CommitmentMutation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommitmentMutation.js","sourceRoot":"","sources":["../../src/core/CommitmentMutation.ts"],"names":[],"mappings":"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"}
|
package/dist/core/MeshRpc.d.ts
CHANGED
|
@@ -78,6 +78,18 @@ export type MeshCommand = {
|
|
|
78
78
|
sinceSeq: number;
|
|
79
79
|
incarnation?: string;
|
|
80
80
|
};
|
|
81
|
+
} | {
|
|
82
|
+
type: 'commitment-mutate';
|
|
83
|
+
payload: {
|
|
84
|
+
origin: string;
|
|
85
|
+
id: string;
|
|
86
|
+
op: 'deliver' | 'withdraw' | 'resume' | 'patch-beacon';
|
|
87
|
+
args?: Record<string, unknown>;
|
|
88
|
+
opKey: string;
|
|
89
|
+
requestedAt: string;
|
|
90
|
+
callerMachineId: string;
|
|
91
|
+
observedStatus?: string;
|
|
92
|
+
};
|
|
81
93
|
} | {
|
|
82
94
|
type: 'working-set-pull';
|
|
83
95
|
topic: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeshRpc.d.ts","sourceRoot":"","sources":["../../src/core/MeshRpc.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MeshRpc.d.ts","sourceRoot":"","sources":["../../src/core/MeshRpc.ts"],"names":[],"mappings":"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"}
|
package/dist/core/MeshRpc.js
CHANGED
|
@@ -83,6 +83,15 @@ export function checkCommandRBAC(command, sender, deps) {
|
|
|
83
83
|
return { ok: true, reason: 'ok' };
|
|
84
84
|
return { ok: false, reason: 'release-unauthorized' };
|
|
85
85
|
}
|
|
86
|
+
case 'commitment-mutate':
|
|
87
|
+
// MUTATING verb, deliberately its OWN case (COMMITMENTS-COHERENCE-SPEC
|
|
88
|
+
// §3.4/§5): any registered peer may issue it under the same-operator
|
|
89
|
+
// posture — meaning RBAC adds NO authorization beyond verifyEnvelope,
|
|
90
|
+
// WHICH IS THE INTENDED SOLE AUTHORITY (stated so no reviewer assumes
|
|
91
|
+
// a role check exists). The owner re-validates every transition through
|
|
92
|
+
// the unchanged commitment state machine; replay is fenced by the
|
|
93
|
+
// durable owner-side opKey window.
|
|
94
|
+
return { ok: true, reason: 'ok' };
|
|
86
95
|
case 'capacity-report':
|
|
87
96
|
case 'session-status':
|
|
88
97
|
case 'journal-sync':
|
package/dist/core/MeshRpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeshRpc.js","sourceRoot":"","sources":["../../src/core/MeshRpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"MeshRpc.js","sourceRoot":"","sources":["../../src/core/MeshRpc.ts"],"names":[],"mappings":"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"}
|