@agentplat/mesh-sim 0.3.0-alpha.1 → 0.3.0-alpha.3

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/README.md CHANGED
@@ -6,7 +6,7 @@ The kernel uses the production `reduceMeshPeer` function for local commands and
6
6
  the production `processMeshEnvelope` boundary for every remote delivery. There
7
7
  is no simulation-only accepted-message path.
8
8
 
9
- Alpha 1 provides:
9
+ The deterministic kernel provides:
10
10
 
11
11
  - integer logical time and a total-order priority queue;
12
12
  - versioned `xorshift32-v1` random substreams scoped by caller-defined names;
@@ -14,9 +14,80 @@ Alpha 1 provides:
14
14
  - signed message preparation and delivery across configured topology links;
15
15
  - immutable SHA-256 state and chained trace digests;
16
16
  - invariant monitors evaluated after every event;
17
- - restart snapshots containing queue, PRNG and outbound allocator state; and
17
+ - restorable snapshots containing queue, PRNG and outbound allocator state; and
18
18
  - replay comparison reporting the first semantic divergence.
19
19
 
20
+ Alpha 2 adds a closed, bounded fault-plan schema (`schemaVersion: 1`). Faults
21
+ are ordinary serialized simulation events, participate in the configuration
22
+ digest and are retained in the trace. The catalog covers peer crash/resume,
23
+ named-delivery drop/duplicate/delay/reorder, directed partition/heal and
24
+ peer-local wall-clock offsets. They are interpreted only at driver and
25
+ transport boundaries: production reducers contain no fault branches, retries
26
+ and healing are never implicit, and a crash drops later volatile deliveries.
27
+
28
+ `peer.resume` means that the same configured peer instance becomes available
29
+ again with its retained reducer state and outbound allocator. It is not a fresh
30
+ instance restart. A new `instanceId`, reset allocator, key/admission lifecycle,
31
+ or durable-state recovery must be supplied as a new explicit configuration;
32
+ those production readmission and durable-storage policies remain outside Alpha
33
+ 2 and are never inferred by the simulator.
34
+
35
+ ## Coordination reducer scenarios
36
+
37
+ `runMeshReducerScenario()` drives any closed, JSON-serializable event schedule
38
+ through a version-identified reducer adapter. This is the Alpha 2 harness for
39
+ `MeshAllocationRuntimeState`: adapters dispatch directly to the public
40
+ coordination, allocation, execution, timer, and recovery reducers.
41
+
42
+ ```ts
43
+ const trace = await runMeshReducerScenario(config, {
44
+ driverId: 'my-coordination-driver-v1',
45
+ projectionId: 'my-safety-projection-v1',
46
+ reduce({ state, action, logicalTime }) {
47
+ return dispatchToPublicMeshReducer(state, action, logicalTime);
48
+ },
49
+ project(state) {
50
+ return safetyProjection(state);
51
+ },
52
+ });
53
+ ```
54
+
55
+ The configuration digest binds the schema, seed, initial states, topology,
56
+ events, bounds, complete fault plan, driver ID, projection ID, and invariant
57
+ names. Runtime callbacks are handles and are excluded. State, effects, and
58
+ semantic projections are converted to deeply frozen data before invariant
59
+ evaluation and hashing. `replayMeshReducerScenario()` compares chained
60
+ semantic records and reports the first divergent record.
61
+
62
+ The canonical resilience suite covers all nine Alpha 2 cases: partial-view
63
+ capability allocation; an untrusted false claim followed by reallocation;
64
+ lost bid and acceptance deadlines; duplicate/reorder equivalence; checkpointed
65
+ crash recovery; minority partition fencing; no quorum; owner-unavailable
66
+ fencing; and identical replay plus controlled divergence. Every case reports a
67
+ fixed seed, configuration/fault/chain digests, explicit bounds, and serialized
68
+ faults.
69
+
70
+ `snapshot()` now emits strict schema version 2 with the ordered queue, retained
71
+ event IDs, PRNG substreams, fault cursor, current directed topology, peer
72
+ availability, wall-clock offsets, peer states, outbound allocators, metrics,
73
+ records and configuration/fault/trace digests. Restore is explicit:
74
+
75
+ ```ts
76
+ const snapshot = kernel.snapshot();
77
+ const resumed = await restoreMeshSimulationKernel(config, snapshot);
78
+ const trace = await resumed.runUntilIdle();
79
+ ```
80
+
81
+ Restore rejects unknown fields, wrong schemas or configuration/fault digests,
82
+ over-limit queues and records, malformed topology/peer indexes, inconsistent
83
+ metrics and broken trace chains. The original runtime configuration supplies
84
+ cryptographic handles; no key material is serialized.
85
+
86
+ Fault metrics distinguish applied fault events, crash/resume, drops,
87
+ duplicates, delays, reorders, partition/heal operations, clock-offset changes
88
+ and events suppressed by crashes or partitions. Full traces include the
89
+ normalized fault plan and an applied-fault ledger.
90
+
20
91
  Cryptographic handles, private keys and callbacks are runtime dependencies and
21
92
  are excluded from configuration digests, snapshots and traces. Replays within
22
93
  one test or process may reuse the same generated key handles; private material
package/dist/index.d.ts CHANGED
@@ -3,6 +3,53 @@ import type { MeshCryptoPolicy, MeshEnvelopeSigner, MeshEnvelopeVerifier, MeshKe
3
3
  import { type MeshProtocolOptions, type SignedMeshEnvelope } from '@agentplat/mesh-protocol';
4
4
  export type MeshSimulationPrngVersion = 'xorshift32-v1';
5
5
  export type MeshSimulationRecordingMode = 'full' | 'digest' | 'metrics';
6
+ export type MeshSimulationFaultKind = 'peer.crash' | 'peer.resume' | 'message.drop' | 'message.duplicate' | 'message.delay' | 'message.reorder' | 'network.partition' | 'network.heal' | 'clock.offset';
7
+ interface MeshSimulationFaultBase {
8
+ readonly faultId: string;
9
+ readonly logicalTime: MeshLogicalTime;
10
+ readonly priority: number;
11
+ }
12
+ export type MeshSimulationFault = (MeshSimulationFaultBase & {
13
+ readonly kind: 'peer.crash' | 'peer.resume';
14
+ readonly peerId: string;
15
+ }) | (MeshSimulationFaultBase & {
16
+ readonly kind: 'message.drop';
17
+ readonly deliveryEventId: string;
18
+ }) | (MeshSimulationFaultBase & {
19
+ readonly kind: 'message.duplicate';
20
+ readonly deliveryEventId: string;
21
+ readonly copies: number;
22
+ }) | (MeshSimulationFaultBase & {
23
+ readonly kind: 'message.delay';
24
+ readonly deliveryEventId: string;
25
+ readonly delay: MeshLogicalTime;
26
+ }) | (MeshSimulationFaultBase & {
27
+ readonly kind: 'message.reorder';
28
+ readonly deliveryEventId: string;
29
+ readonly newLogicalTime: MeshLogicalTime;
30
+ readonly newPriority: number;
31
+ }) | (MeshSimulationFaultBase & {
32
+ readonly kind: 'network.partition' | 'network.heal';
33
+ readonly links: readonly {
34
+ readonly fromPeerId: string;
35
+ readonly toPeerId: string;
36
+ }[];
37
+ }) | (MeshSimulationFaultBase & {
38
+ readonly kind: 'clock.offset';
39
+ readonly peerId: string;
40
+ readonly offset: number;
41
+ });
42
+ /** Closed, serialized fault schedule interpreted only at driver boundaries. */
43
+ export interface MeshSimulationFaultPlan {
44
+ readonly schemaVersion: 1;
45
+ readonly faults: readonly MeshSimulationFault[];
46
+ }
47
+ export declare const MESH_SIMULATION_FAULT_LIMITS: Readonly<{
48
+ maximumFaults: 4096;
49
+ maximumDuplicateCopies: 16;
50
+ maximumClockOffset: number;
51
+ maximumLinksPerFault: 4096;
52
+ }>;
6
53
  /** Runtime handles are excluded from configuration and trace digests. */
7
54
  export interface MeshSimulationPeer {
8
55
  readonly peerId: string;
@@ -37,6 +84,7 @@ export interface MeshSimulationConfig {
37
84
  readonly peers: readonly MeshSimulationPeer[];
38
85
  readonly links: readonly MeshSimulationLink[];
39
86
  readonly limits: MeshSimulationLimits;
87
+ readonly faultPlan?: MeshSimulationFaultPlan;
40
88
  readonly invariants?: readonly MeshSimulationInvariant[];
41
89
  }
42
90
  export type MeshSimulationAction = {
@@ -47,13 +95,18 @@ export type MeshSimulationAction = {
47
95
  } | {
48
96
  readonly kind: 'message.delivery';
49
97
  readonly envelope: SignedMeshEnvelope;
98
+ } | {
99
+ readonly kind: 'fault.apply';
100
+ readonly fault: MeshSimulationFault;
50
101
  };
51
102
  export interface MeshSimulationEventInput {
52
103
  readonly eventId: string;
53
104
  readonly targetPeerId: string;
54
105
  readonly logicalTime: MeshLogicalTime;
55
106
  readonly priority: number;
56
- readonly action: MeshSimulationAction;
107
+ readonly action: Exclude<MeshSimulationAction, {
108
+ readonly kind: 'fault.apply';
109
+ }>;
57
110
  }
58
111
  export interface MeshSimulationOrder {
59
112
  readonly logicalTime: MeshLogicalTime;
@@ -71,27 +124,78 @@ export interface MeshSimulationRecord {
71
124
  readonly peerId: string;
72
125
  readonly order: MeshSimulationOrder;
73
126
  readonly inputKind: MeshSimulationAction['kind'];
127
+ readonly inputDeliverySourcePeerId?: string;
74
128
  readonly actionDigest: string;
75
129
  readonly accepted?: boolean;
76
130
  readonly rejectionCode?: string;
131
+ readonly faultId?: string;
132
+ readonly faultKind?: MeshSimulationFaultKind;
133
+ readonly faultApplied?: boolean;
77
134
  readonly effectKinds: readonly MeshPeerEffect['kind'][];
135
+ readonly metricsDelta: MeshSimulationMetricsDelta;
136
+ readonly transportOutcome: MeshSimulationTransportOutcome;
78
137
  readonly effectsDigest: string;
79
138
  readonly stateDigest: string;
80
139
  readonly chainDigest: string;
81
140
  }
141
+ export type MeshSimulationMetricsDelta = Readonly<Omit<MeshSimulationMetrics, 'finalLogicalTime'>>;
142
+ export interface MeshSimulationTransportOutcome {
143
+ readonly delivered: number;
144
+ readonly droppedByCrash: number;
145
+ readonly droppedByPartition: number;
146
+ readonly droppedByCrashAndPartition: number;
147
+ readonly droppedByDestinationMissing: number;
148
+ readonly deliveries: readonly MeshSimulationTransportDeliveryOutcome[];
149
+ }
150
+ export interface MeshSimulationTransportDeliveryOutcome {
151
+ readonly eventId: string;
152
+ readonly fromPeerId: string;
153
+ readonly toPeerId: string;
154
+ readonly outcome: 'delivered' | 'crash' | 'partition' | 'crash_partition' | 'destination_missing';
155
+ }
82
156
  export interface MeshSimulationMetrics {
83
157
  readonly processedEvents: number;
84
158
  readonly emittedEffects: number;
85
159
  readonly deliveredMessages: number;
86
160
  readonly rejectedMessages: number;
161
+ readonly faultEvents: number;
162
+ readonly peerCrashes: number;
163
+ readonly peerResumes: number;
164
+ readonly droppedMessages: number;
165
+ readonly duplicatedMessages: number;
166
+ readonly delayedMessages: number;
167
+ readonly reorderedMessages: number;
168
+ readonly partitions: number;
169
+ readonly heals: number;
170
+ readonly clockOffsetChanges: number;
171
+ readonly crashSuppressedEvents: number;
172
+ readonly partitionSuppressedMessages: number;
87
173
  readonly finalLogicalTime: MeshLogicalTime;
88
174
  }
175
+ export interface MeshSimulationFaultRecord {
176
+ readonly faultId: string;
177
+ readonly kind: MeshSimulationFaultKind;
178
+ readonly order: MeshSimulationOrder;
179
+ readonly applied: boolean;
180
+ readonly affectedEventIds: readonly string[];
181
+ readonly affectedLinkIds: readonly string[];
182
+ readonly affectedDeliveries: readonly MeshSimulationAffectedDelivery[];
183
+ }
184
+ export interface MeshSimulationAffectedDelivery {
185
+ readonly eventId: string;
186
+ readonly fromPeerId: string;
187
+ readonly toPeerId: string;
188
+ readonly order: MeshSimulationOrder;
189
+ }
89
190
  export interface MeshSimulationTrace {
90
191
  readonly seed: number;
91
192
  readonly prngVersion: MeshSimulationPrngVersion;
92
193
  readonly configurationDigest: string;
194
+ readonly faultPlanDigest: string;
195
+ readonly faultPlan: MeshSimulationFaultPlan;
93
196
  readonly chainDigest: string;
94
197
  readonly metrics: MeshSimulationMetrics;
198
+ readonly faults: readonly MeshSimulationFaultRecord[];
95
199
  readonly records?: readonly MeshSimulationRecord[];
96
200
  readonly peerStates: Readonly<Record<string, MeshPeerState>>;
97
201
  }
@@ -104,13 +208,23 @@ export interface MeshSimulationInvariant {
104
208
  }): void;
105
209
  }
106
210
  export interface MeshSimulationSnapshot {
107
- readonly schemaVersion: 1;
211
+ readonly schemaVersion: 2;
212
+ readonly configurationDigest: string;
213
+ readonly faultPlanDigest: string;
108
214
  readonly logicalTime: MeshLogicalTime;
109
215
  readonly insertionSequence: number;
216
+ readonly faultCursor: number;
110
217
  readonly peerStates: Readonly<Record<string, MeshPeerState>>;
111
218
  readonly outboundSequences: Readonly<Record<string, number>>;
112
219
  readonly prngStates: Readonly<Record<string, number>>;
220
+ readonly peerAvailability: Readonly<Record<string, boolean>>;
221
+ readonly clockOffsets: Readonly<Record<string, number>>;
222
+ readonly topology: readonly MeshSimulationLink[];
113
223
  readonly queuedEvents: readonly MeshSimulationEvent[];
224
+ readonly eventIds: readonly string[];
225
+ readonly metrics: MeshSimulationMetrics;
226
+ readonly records: readonly MeshSimulationRecord[];
227
+ readonly faults: readonly MeshSimulationFaultRecord[];
114
228
  readonly chainDigest: string;
115
229
  }
116
230
  export interface MeshSimulationReplayResult {
@@ -130,7 +244,10 @@ export interface MeshSimulationKernel {
130
244
  }
131
245
  /** Creates a bounded kernel after hashing its serializable configuration. */
132
246
  export declare function createMeshSimulationKernel(config: MeshSimulationConfig): Promise<MeshSimulationKernel>;
247
+ /** Restores a strict v2 snapshot using the runtime handles from the same config. */
248
+ export declare function restoreMeshSimulationKernel(config: MeshSimulationConfig, snapshot: unknown): Promise<MeshSimulationKernel>;
133
249
  export declare function runMeshSimulation(config: MeshSimulationConfig, events: readonly MeshSimulationEventInput[]): Promise<MeshSimulationTrace>;
134
250
  export declare function replayMeshSimulation(config: MeshSimulationConfig, events: readonly MeshSimulationEventInput[], expected: MeshSimulationTrace): Promise<MeshSimulationReplayResult>;
135
251
  export declare const THREE_PEER_SCENARIO_IDS: readonly ["peer-a", "peer-b", "peer-c"];
252
+ export * from './reducer-scenario.js';
136
253
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}