@agentplat/mesh-sim 0.3.0-beta.1 → 0.3.0-beta.4

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 (189) hide show
  1. package/README.md +462 -2
  2. package/dist/collective-closed-loop-action.d.ts +80 -0
  3. package/dist/collective-closed-loop-action.d.ts.map +1 -0
  4. package/dist/collective-closed-loop-action.js +471 -0
  5. package/dist/collective-closed-loop-action.js.map +1 -0
  6. package/dist/collective-closed-loop-contracts.d.ts +75 -0
  7. package/dist/collective-closed-loop-contracts.d.ts.map +1 -0
  8. package/dist/collective-closed-loop-contracts.js +420 -0
  9. package/dist/collective-closed-loop-contracts.js.map +1 -0
  10. package/dist/collective-closed-loop-fault-matrix.d.ts +101 -0
  11. package/dist/collective-closed-loop-fault-matrix.d.ts.map +1 -0
  12. package/dist/collective-closed-loop-fault-matrix.js +253 -0
  13. package/dist/collective-closed-loop-fault-matrix.js.map +1 -0
  14. package/dist/collective-closed-loop-recovery.d.ts +70 -0
  15. package/dist/collective-closed-loop-recovery.d.ts.map +1 -0
  16. package/dist/collective-closed-loop-recovery.js +823 -0
  17. package/dist/collective-closed-loop-recovery.js.map +1 -0
  18. package/dist/collective-closed-loop-reference.d.ts +54 -0
  19. package/dist/collective-closed-loop-reference.d.ts.map +1 -0
  20. package/dist/collective-closed-loop-reference.js +1696 -0
  21. package/dist/collective-closed-loop-reference.js.map +1 -0
  22. package/dist/collective-closed-loop-replanning.d.ts +27 -0
  23. package/dist/collective-closed-loop-replanning.d.ts.map +1 -0
  24. package/dist/collective-closed-loop-replanning.js +151 -0
  25. package/dist/collective-closed-loop-replanning.js.map +1 -0
  26. package/dist/collective-closed-loop-resilience-campaign.d.ts +22 -0
  27. package/dist/collective-closed-loop-resilience-campaign.d.ts.map +1 -0
  28. package/dist/collective-closed-loop-resilience-campaign.js +196 -0
  29. package/dist/collective-closed-loop-resilience-campaign.js.map +1 -0
  30. package/dist/collective-closed-loop-resilience-contracts.d.ts +138 -0
  31. package/dist/collective-closed-loop-resilience-contracts.d.ts.map +1 -0
  32. package/dist/collective-closed-loop-resilience-contracts.js +677 -0
  33. package/dist/collective-closed-loop-resilience-contracts.js.map +1 -0
  34. package/dist/collective-closed-loop-runner.d.ts +133 -0
  35. package/dist/collective-closed-loop-runner.d.ts.map +1 -0
  36. package/dist/collective-closed-loop-runner.js +1429 -0
  37. package/dist/collective-closed-loop-runner.js.map +1 -0
  38. package/dist/collective-closed-loop-runtime.d.ts +95 -0
  39. package/dist/collective-closed-loop-runtime.d.ts.map +1 -0
  40. package/dist/collective-closed-loop-runtime.js +1192 -0
  41. package/dist/collective-closed-loop-runtime.js.map +1 -0
  42. package/dist/collective-effect-provenance.d.ts +5 -0
  43. package/dist/collective-effect-provenance.d.ts.map +1 -0
  44. package/dist/collective-effect-provenance.js +32 -0
  45. package/dist/collective-effect-provenance.js.map +1 -0
  46. package/dist/collective-environment.d.ts +49 -0
  47. package/dist/collective-environment.d.ts.map +1 -0
  48. package/dist/collective-environment.js +907 -0
  49. package/dist/collective-environment.js.map +1 -0
  50. package/dist/collective-evaluation.d.ts +38 -0
  51. package/dist/collective-evaluation.d.ts.map +1 -0
  52. package/dist/collective-evaluation.js +730 -0
  53. package/dist/collective-evaluation.js.map +1 -0
  54. package/dist/collective-progressive-scale-overlay.d.ts +39 -0
  55. package/dist/collective-progressive-scale-overlay.d.ts.map +1 -0
  56. package/dist/collective-progressive-scale-overlay.js +147 -0
  57. package/dist/collective-progressive-scale-overlay.js.map +1 -0
  58. package/dist/collective-progressive-scale.d.ts +202 -0
  59. package/dist/collective-progressive-scale.d.ts.map +1 -0
  60. package/dist/collective-progressive-scale.js +755 -0
  61. package/dist/collective-progressive-scale.js.map +1 -0
  62. package/dist/collective-statistical-campaign-aggregation.d.ts +97 -0
  63. package/dist/collective-statistical-campaign-aggregation.d.ts.map +1 -0
  64. package/dist/collective-statistical-campaign-aggregation.js +446 -0
  65. package/dist/collective-statistical-campaign-aggregation.js.map +1 -0
  66. package/dist/collective-statistical-campaign-artifact-stream.d.ts +66 -0
  67. package/dist/collective-statistical-campaign-artifact-stream.d.ts.map +1 -0
  68. package/dist/collective-statistical-campaign-artifact-stream.js +207 -0
  69. package/dist/collective-statistical-campaign-artifact-stream.js.map +1 -0
  70. package/dist/collective-statistical-campaign-bundle.d.ts +151 -0
  71. package/dist/collective-statistical-campaign-bundle.d.ts.map +1 -0
  72. package/dist/collective-statistical-campaign-bundle.js +885 -0
  73. package/dist/collective-statistical-campaign-bundle.js.map +1 -0
  74. package/dist/collective-statistical-campaign-executor.d.ts +131 -0
  75. package/dist/collective-statistical-campaign-executor.d.ts.map +1 -0
  76. package/dist/collective-statistical-campaign-executor.js +856 -0
  77. package/dist/collective-statistical-campaign-executor.js.map +1 -0
  78. package/dist/collective-statistical-campaign-normative-analysis.d.ts +85 -0
  79. package/dist/collective-statistical-campaign-normative-analysis.d.ts.map +1 -0
  80. package/dist/collective-statistical-campaign-normative-analysis.js +483 -0
  81. package/dist/collective-statistical-campaign-normative-analysis.js.map +1 -0
  82. package/dist/collective-statistical-campaign-normative-operation.d.ts +89 -0
  83. package/dist/collective-statistical-campaign-normative-operation.d.ts.map +1 -0
  84. package/dist/collective-statistical-campaign-normative-operation.js +266 -0
  85. package/dist/collective-statistical-campaign-normative-operation.js.map +1 -0
  86. package/dist/collective-statistical-campaign-normative-registry.d.ts +24 -0
  87. package/dist/collective-statistical-campaign-normative-registry.d.ts.map +1 -0
  88. package/dist/collective-statistical-campaign-normative-registry.js +163 -0
  89. package/dist/collective-statistical-campaign-normative-registry.js.map +1 -0
  90. package/dist/collective-statistical-campaign-registered-adapter.d.ts +16 -0
  91. package/dist/collective-statistical-campaign-registered-adapter.d.ts.map +1 -0
  92. package/dist/collective-statistical-campaign-registered-adapter.js +518 -0
  93. package/dist/collective-statistical-campaign-registered-adapter.js.map +1 -0
  94. package/dist/collective-statistical-campaign-scale.d.ts +85 -0
  95. package/dist/collective-statistical-campaign-scale.d.ts.map +1 -0
  96. package/dist/collective-statistical-campaign-scale.js +349 -0
  97. package/dist/collective-statistical-campaign-scale.js.map +1 -0
  98. package/dist/collective-trace-journal.d.ts +20 -0
  99. package/dist/collective-trace-journal.d.ts.map +1 -0
  100. package/dist/collective-trace-journal.js +105 -0
  101. package/dist/collective-trace-journal.js.map +1 -0
  102. package/dist/index.d.ts +26 -0
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +26 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/multi-domain-environment-contracts.d.ts +122 -0
  107. package/dist/multi-domain-environment-contracts.d.ts.map +1 -0
  108. package/dist/multi-domain-environment-contracts.js +14 -0
  109. package/dist/multi-domain-environment-contracts.js.map +1 -0
  110. package/dist/multi-domain-environment-runtime.d.ts +25 -0
  111. package/dist/multi-domain-environment-runtime.d.ts.map +1 -0
  112. package/dist/multi-domain-environment-runtime.js +493 -0
  113. package/dist/multi-domain-environment-runtime.js.map +1 -0
  114. package/dist/multi-domain-environment-validation.d.ts +33 -0
  115. package/dist/multi-domain-environment-validation.d.ts.map +1 -0
  116. package/dist/multi-domain-environment-validation.js +415 -0
  117. package/dist/multi-domain-environment-validation.js.map +1 -0
  118. package/dist/multi-domain-environment.d.ts +4 -0
  119. package/dist/multi-domain-environment.d.ts.map +1 -0
  120. package/dist/multi-domain-environment.js +4 -0
  121. package/dist/multi-domain-environment.js.map +1 -0
  122. package/dist/reducer-scenario.d.ts.map +1 -1
  123. package/dist/reducer-scenario.js +67 -19
  124. package/dist/reducer-scenario.js.map +1 -1
  125. package/dist/scalable-evaluation-contracts.d.ts +835 -0
  126. package/dist/scalable-evaluation-contracts.d.ts.map +1 -0
  127. package/dist/scalable-evaluation-contracts.js +22 -0
  128. package/dist/scalable-evaluation-contracts.js.map +1 -0
  129. package/dist/scalable-evaluation-durability.d.ts +16 -0
  130. package/dist/scalable-evaluation-durability.d.ts.map +1 -0
  131. package/dist/scalable-evaluation-durability.js +339 -0
  132. package/dist/scalable-evaluation-durability.js.map +1 -0
  133. package/dist/scalable-evaluation-evidence.d.ts +93 -0
  134. package/dist/scalable-evaluation-evidence.d.ts.map +1 -0
  135. package/dist/scalable-evaluation-evidence.js +470 -0
  136. package/dist/scalable-evaluation-evidence.js.map +1 -0
  137. package/dist/scalable-evaluation-reference-integrated.d.ts +87 -0
  138. package/dist/scalable-evaluation-reference-integrated.d.ts.map +1 -0
  139. package/dist/scalable-evaluation-reference-integrated.js +1318 -0
  140. package/dist/scalable-evaluation-reference-integrated.js.map +1 -0
  141. package/dist/scalable-evaluation-runner.d.ts +8 -0
  142. package/dist/scalable-evaluation-runner.d.ts.map +1 -0
  143. package/dist/scalable-evaluation-runner.js +1810 -0
  144. package/dist/scalable-evaluation-runner.js.map +1 -0
  145. package/dist/scalable-evaluation-runtime.d.ts +86 -0
  146. package/dist/scalable-evaluation-runtime.d.ts.map +1 -0
  147. package/dist/scalable-evaluation-runtime.js +1310 -0
  148. package/dist/scalable-evaluation-runtime.js.map +1 -0
  149. package/dist/scalable-evaluation-validation.d.ts +59 -0
  150. package/dist/scalable-evaluation-validation.d.ts.map +1 -0
  151. package/dist/scalable-evaluation-validation.js +377 -0
  152. package/dist/scalable-evaluation-validation.js.map +1 -0
  153. package/dist/scalable-evaluation.d.ts +8 -0
  154. package/dist/scalable-evaluation.d.ts.map +1 -0
  155. package/dist/scalable-evaluation.js +8 -0
  156. package/dist/scalable-evaluation.js.map +1 -0
  157. package/dist/sharded-simulation-contracts.d.ts +240 -0
  158. package/dist/sharded-simulation-contracts.d.ts.map +1 -0
  159. package/dist/sharded-simulation-contracts.js +199 -0
  160. package/dist/sharded-simulation-contracts.js.map +1 -0
  161. package/dist/sharded-simulation-runtime.d.ts +64 -0
  162. package/dist/sharded-simulation-runtime.d.ts.map +1 -0
  163. package/dist/sharded-simulation-runtime.js +755 -0
  164. package/dist/sharded-simulation-runtime.js.map +1 -0
  165. package/dist/sharded-simulation-validation.d.ts +10 -0
  166. package/dist/sharded-simulation-validation.d.ts.map +1 -0
  167. package/dist/sharded-simulation-validation.js +250 -0
  168. package/dist/sharded-simulation-validation.js.map +1 -0
  169. package/dist/sharded-simulation.d.ts +46 -0
  170. package/dist/sharded-simulation.d.ts.map +1 -0
  171. package/dist/sharded-simulation.js +32 -0
  172. package/dist/sharded-simulation.js.map +1 -0
  173. package/dist/verified-benchmark-contracts.d.ts +132 -0
  174. package/dist/verified-benchmark-contracts.d.ts.map +1 -0
  175. package/dist/verified-benchmark-contracts.js +2 -0
  176. package/dist/verified-benchmark-contracts.js.map +1 -0
  177. package/dist/verified-benchmark-runtime.d.ts +20 -0
  178. package/dist/verified-benchmark-runtime.d.ts.map +1 -0
  179. package/dist/verified-benchmark-runtime.js +199 -0
  180. package/dist/verified-benchmark-runtime.js.map +1 -0
  181. package/dist/verified-benchmark-validation.d.ts +64 -0
  182. package/dist/verified-benchmark-validation.d.ts.map +1 -0
  183. package/dist/verified-benchmark-validation.js +481 -0
  184. package/dist/verified-benchmark-validation.js.map +1 -0
  185. package/dist/verified-benchmark.d.ts +4 -0
  186. package/dist/verified-benchmark.d.ts.map +1 -0
  187. package/dist/verified-benchmark.js +4 -0
  188. package/dist/verified-benchmark.js.map +1 -0
  189. package/package.json +18 -4
package/README.md CHANGED
@@ -2,6 +2,37 @@
2
2
 
3
3
  Deterministic simulation kernel for AgentPlat Mesh peers.
4
4
 
5
+ ## Scalable provider-neutral evaluation runner
6
+
7
+ `runScalableEvaluationV1()` is the executable counterpart to the scalable
8
+ evaluation contracts. It opens a multi-domain environment, starts a sharded
9
+ session and episode, binds a sparse schedule to both team ports, validates and
10
+ accounts public observations, forwards cross-shard messages, and requests
11
+ fenced effects for declared actions. The runner keeps only bounded accounting
12
+ state, recovery state, and a configured record tail; it never materializes the
13
+ declared 500, 5K, or 100K peer population.
14
+
15
+ Each compared team receives an isolated session and episode with the same
16
+ scenario seed, so effects or targeted perturbations from one side cannot alter
17
+ the other side's state. Environment effect receipts and cross-shard
18
+ acknowledgements are accepted only after exact request/batch binding and digest
19
+ recomputation.
20
+
21
+ The embedding application supplies team implementations. Scheduled
22
+ perturbations require a `ScalableEvaluationPerturbationPortV1` and a recovery
23
+ metric port, plus an evaluator baseline for every affected team/domain pair.
24
+ The simulation provider must return a content-bound injection receipt before
25
+ the runtime records the occurrence; a plan entry alone is never reported as an
26
+ injected fault. Active recovery is sampled on subsequent logical steps until
27
+ its baseline tolerance is actually restored. Declared actions require an
28
+ application-owned `ScalableEvaluationActionAuthorityV1`; the runner does not
29
+ synthesize fencing authority.
30
+
31
+ Runs are local and transport-neutral: this package does not start a service,
32
+ create a campaign, or deploy infrastructure. An `AbortSignal`-compatible
33
+ object returns a `cancelled` result between external calls; budget exhaustion
34
+ prevents the next team step before it can create effects or messages.
35
+
5
36
  The kernel uses the production `reduceMeshPeer` function for local commands and
6
37
  the production `processMeshEnvelope` boundary for every remote delivery. There
7
38
  is no simulation-only accepted-message path.
@@ -41,8 +72,8 @@ coordination, allocation, execution, timer, and recovery reducers.
41
72
 
42
73
  ```ts
43
74
  const trace = await runMeshReducerScenario(config, {
44
- driverId: 'my-coordination-driver-v1',
45
- projectionId: 'my-safety-projection-v1',
75
+ driverId: "my-coordination-driver-v1",
76
+ projectionId: "my-safety-projection-v1",
46
77
  reduce({ state, action, logicalTime }) {
47
78
  return dispatchToPublicMeshReducer(state, action, logicalTime);
48
79
  },
@@ -92,3 +123,432 @@ Cryptographic handles, private keys and callbacks are runtime dependencies and
92
123
  are excluded from configuration digests, snapshots and traces. Replays within
93
124
  one test or process may reuse the same generated key handles; private material
94
125
  is never serialized.
126
+
127
+ ## Registered collective evaluation
128
+
129
+ The Beta 2 evaluation driver builds the versioned resource-allocation and
130
+ recovery mission at 4–500 agents. The governed runner executes the portable
131
+ authority, Work Contract, budget and permit reducers with local observations;
132
+ the fair centralized runner executes the existing `MultiAgentSession`
133
+ round-robin scheduler over the same recorded decision policy. Both emit the
134
+ same interaction-accounting contract and per-seed digest-bound samples.
135
+
136
+ `runRegisteredCollectiveEvaluationV1` runs every pre-registered seed twice and
137
+ records exact replay. Its fault and adversary schedules are interpreted at
138
+ driver boundaries; production reducers contain no experiment bypass. The
139
+ 500-agent mission remains below 5,000 interactions and records its observed
140
+ directed topology instead of inferring an asymptotic claim.
141
+
142
+ ## Deterministic evaluation environment
143
+
144
+ `createCollectiveDeterministicEnvironmentHarnessV1()` is the reference
145
+ implementation of the separate
146
+ `@agentplat/collective-planning/evaluation` boundary. The harness returns a
147
+ runner-visible `environment`, an evaluator-only `monitor`, and an evaluator-only
148
+ `finalize()` operation. Only the environment port should be passed to a runner.
149
+
150
+ The reference world keeps peer observation queues, authoritative effect state,
151
+ idempotency records, terminal predicates and the hidden canary in closures.
152
+ Observation cursors are exact-idempotent and conflicting reuse is rejected.
153
+ Effects validate the current Work Contract, epoch, authority generation and
154
+ fence atomically. Timeouts before commit never enter the effect ledger;
155
+ timeouts after commit return an indeterminate first receipt and a committed
156
+ receipt on exact retry. Public snapshot handles are backed by evaluator-owned
157
+ opaque state, so another harness with the same registration can restore and
158
+ replay without serializing hidden values.
159
+
160
+ Finalization constructs trace V2, replays its interaction ledger, snapshots the
161
+ independent monitor and creates boundary evidence. An exceeded interaction
162
+ ceiling becomes a terminal mission failure. The historical V1 evaluation
163
+ driver and reports remain unchanged.
164
+
165
+ ## Nominal closed-loop execution
166
+
167
+ The Increment 5 closed-loop surface is an opt-in, nominal-only reference path
168
+ for deterministic experiments with 3 through 100 logical peers. It is not a
169
+ durable runtime or a production orchestration service. Its hard interaction
170
+ limit is 5,000 and its public result contains trace-bound state roots and
171
+ artifacts, not caller-supplied success or safety counters.
172
+
173
+ `runAdaptiveCollectiveClosedLoopV1()` and
174
+ `runCentralizedPlannerClosedLoopV1()` share the same Mesh, governed-action and
175
+ environment boundaries. Both are bound to the registered nominal definition,
176
+ intent, policy, mandate, peer topology and evaluator boundary. The centralized
177
+ mode records every delivered observation as an accounted directive, retains a
178
+ deterministic bounded public subset and calls `decideCentralized()` exactly
179
+ once; it does not execute the peer-local decision loop or receive the
180
+ evaluator's hidden state, monitor, terminal predicate or a free communication
181
+ channel.
182
+
183
+ Before a planning policy runs, the runner requests observations separately for
184
+ each peer. A policy receives only that peer's identity, intent, local
185
+ observations, local planning view and logical time. Proposal decisions must be
186
+ made by that peer and cite only its delivered observation digests. The runner
187
+ does not expose an assignee lookup or allow a proposal or adaptive role to
188
+ authorize an effect.
189
+
190
+ The shared runtime performs real Mesh discovery, capability handling, offer,
191
+ bid selection, award, acceptance and checkpoint transitions. The winning bid
192
+ is selected by the Mesh allocation reducer. A Work Contract is created while
193
+ the accepted assignment is still active, before completion changes the
194
+ execution head.
195
+
196
+ The 50- and 100-peer reference topologies connect the owner to all other peers.
197
+ Every peer receives observations; adaptive mode records one local decision per
198
+ peer, while centralized mode records one directive per peer. Mesh discovers
199
+ the remote peers and respects its existing bounded fanout by offering to and receiving
200
+ bids from at most 32 candidates for one Work item. The result publishes those
201
+ participant sets instead of treating registration alone as participation.
202
+
203
+ The one protected action then traverses Trust eligibility, inference assessment
204
+ and grant issuance, grant-ledger reservation, governed permit issuance and a
205
+ `downstream_atomic` fenced environment effect. Currentness is checked at the
206
+ governed boundary, including the Work Contract's exact Trust and inference
207
+ policy IDs. Authorization time is runner-derived after the signed checkpoint
208
+ and within the mission validity window, and is exposed with the action evidence.
209
+ A signed `work.result` is
210
+ emitted only after the same evaluator returns the exact committed receipt and
211
+ its output digest matches the result digest.
212
+
213
+ `replayAdaptiveCollectiveClosedLoopV1()` and
214
+ `replayCentralizedPlannerClosedLoopV1()` execute fresh inputs twice and require
215
+ the run, trace and boundary-evidence digests to match exactly. Cryptographic
216
+ handles are runtime dependencies: callers may reuse them for a replay, but
217
+ private key material is never included in the serialized definition, trace or
218
+ result.
219
+
220
+ ## Resilient closed-loop reference
221
+
222
+ Increment 6 adds an opt-in resilience wrapper; the nominal runner remains
223
+ nominal-only. `CollectiveClosedLoopResilienceDefinitionV1` binds the nominal
224
+ definition to a strict, digest-bound fault plan and a bounded epoch count.
225
+ Its closed fault vocabulary is capability withdrawal, assignment decline, peer
226
+ crash, peer restart, directed partition and directed heal. Every reported fault
227
+ has a scheduled, injected and observed digest; a declared-only record is
228
+ rejected. A trace-event trigger must resolve to the exact earlier journal event.
229
+
230
+ `runCollectiveClosedLoopCausalReplanningV1()` is a focused planning primitive:
231
+ an accepted successor must cite an explicit trigger observation and the exact
232
+ prior semantic-slot head. It records the causal successor and projects its new
233
+ Work identity through the planning reducer; it does not promise automatic
234
+ replanning for arbitrary runtime failures.
235
+
236
+ `runCollectiveClosedLoopFaultMatrixV1()` is a deterministic test driver over
237
+ the supplied reducer runtime. Its focused conformance coverage processes a
238
+ signed capability withdrawal through the real Mesh discovery reducer and an
239
+ assignment decline plus causal reoffer through the real allocation reducer.
240
+ Crash/resume and partition/heal remain explicit simulator-driver faults, not
241
+ special reducer paths.
242
+
243
+ The resilient runner does not accept an arbitrary callback returning matrix
244
+ evidence. `createCollectiveClosedLoopFaultMatrixPortV1()` snapshots the driver
245
+ input into a private registration and binds it to the exact nominal planning,
246
+ Mesh, Work Contract, checkpoint and assignment state. Execution validates every
247
+ fault's family, logical time, target, directed link and predecessor against the
248
+ public plan.
249
+
250
+ The resilient runner starts from the real nominal Mesh state and executes
251
+ lease expiry/grace, proposal, witness votes, certificate, recovery award,
252
+ replacement acceptance and checkpoint resume through the Mesh reducers. The
253
+ replacement receives a Work Contract from the active epoch-two assignment. An
254
+ epoch-one progress or result is fenced with `execution_authority_invalid`; a
255
+ provenance-bound committed effect receipt is required before the replacement
256
+ can emit the epoch-two `work.result`. The evidence retains the real rejected
257
+ envelope and the action must occur inside the recovered lease's absolute time
258
+ window.
259
+
260
+ `runPairedCollectiveClosedLoopResilienceCampaignV1()` compares construction
261
+ fairness and public-observation digests for adaptive and centralized modes.
262
+ Both sides share the same policy implementation and must match environment,
263
+ monitor and mission-bound matrix inputs; executed scenario, records and driver
264
+ faults are compared again after execution. Exact replay then covers the run,
265
+ trace, evidence and matrix. This is a compact deterministic reference campaign,
266
+ not the 50–500 agent statistical release campaign.
267
+
268
+ `peer.restart` in this reference is the simulator's in-memory `peer.resume`:
269
+ the configured instance resumes with retained reducer state. It is not a fresh
270
+ instance lifecycle, durable restore, production recovery protocol or cloud
271
+ deployment.
272
+
273
+ ## Statistical campaign contracts
274
+
275
+ The package exports deterministic configuration and evidence contracts for the
276
+ 50/100/250/500-agent ladder. `createCollectiveStatisticalCampaignTopologyV1()`
277
+ builds the registered sparse directed topology; scale configuration binds the
278
+ exact interaction ceiling and fault-family row. These functions allocate
279
+ configuration data only and do not execute a scale campaign.
280
+
281
+ `verifyCollectiveStatisticalCampaignBundleV1()` is a side-effect-free verifier
282
+ for a fully supplied in-memory evidence bundle. It requires the canonical
283
+ Collective Planning registration and terminal manifest, the exact four
284
+ adaptive/centralized first/replay slots for every registered cell, closed
285
+ sample/trace/ledger/evidence indexes, trusted source-lock expectations and
286
+ independently recomputed comparison and summary statistics. Replay equality
287
+ covers the stable outcome plus trace, ledger and observation records. A failed
288
+ execution remains present and forces a failed summary.
289
+
290
+ Inputs are snapshotted from data descriptors before validation, paths are
291
+ logical safe-relative names, and unknown/accessor-bearing shapes fail closed.
292
+ Each artifact is capped at 16 MiB and the supplied bundle at 256 MiB before JSON
293
+ decoding. The daily command is deliberately a registration/configuration
294
+ contract smoke; it is not statistical or scale-execution evidence.
295
+
296
+ `runCollectiveStatisticalCampaignShardV1()` executes any deterministic subset
297
+ of the registered cells and writes an immutable execution record before it
298
+ settles the revision-CAS lease state. A restart reads both state and records by
299
+ `runKey`, validates their execution identity and complete artifact content, and
300
+ continues without rerunning committed slots. An expired running slot is
301
+ reconciled from its durable record, or conservatively marked as an indeterminate
302
+ external effect when no record exists. Runner exceptions become terminal failed
303
+ samples, while the remaining slots still execute. The orchestration store is an
304
+ interface; the simulation package does not choose a filesystem, database or
305
+ cloud provider.
306
+
307
+ `aggregateCollectiveStatisticalCampaignV1()` accepts only the exact registered
308
+ closure, rejects duplicate or divergent replay slots, materializes the terminal
309
+ manifest, recomputes paired comparisons and produces bytes accepted by the
310
+ public bundle verifier. It cannot promote a partial shard set.
311
+
312
+ ### Normative analysis and streaming custody
313
+
314
+ The public surface includes a bounded artifact-stream verifier and deterministic
315
+ normative analysis for the registered 240-cell / 960-slot campaign. The stream
316
+ verifier reads one indexed artifact at a time, checks exact closure, byte hash
317
+ and canonical digest, and applies artifact and total-byte limits before a
318
+ visitor receives decoded data. Limits cannot exceed 16,384 artifacts, 16 MiB
319
+ per artifact or 256 MiB total, and empty or unbounded chunk streams fail closed.
320
+ The analyzer consumes evaluator-owned projections and derives its normalized
321
+ rows internally, uses a pre-registered one-sided Wilson acceptance bound plus
322
+ descriptive two-sided intervals, and returns an ineligible or incomplete
323
+ decision whenever closure or evidence is insufficient.
324
+
325
+ `runCollectiveStatisticalCampaignNormativeOperationV1()` executes exactly one
326
+ authorized five-cell shard through a trusted registry resolver. The resolved
327
+ runner implementation and evaluator digests must match the authorized
328
+ descriptor before mutation, direct runner/projector injection is not accepted,
329
+ every projection must retain that evaluator binding, and state/slot/evidence
330
+ identity is derived from the exact plan and stable authenticated authorization
331
+ digest. A caller can
332
+ recompute the namespace with
333
+ `collectiveStatisticalCampaignNormativeExecutionIdV1()`.
334
+
335
+ This is a control-plane capability only: it does not execute the 50–500-agent
336
+ campaign, invoke a provider, or claim that the campaign has passed.
337
+
338
+ ## Progressive scale execution surface
339
+
340
+ `COLLECTIVE_PROGRESSIVE_SCALE_PROFILES_V1` defines three closed industry
341
+ profiles. They progress from 500 participants and 5,000 interactions to 5,000
342
+ participants and 50,000 interactions, then to 100,000 participants and
343
+ 1,000,000 interactions. The profiles also bind the role-coherence horizon,
344
+ benign or Byzantine affected population, recovery-work class and physical,
345
+ social or cyber scenario domains. Existing V1 campaign contracts remain
346
+ unchanged.
347
+
348
+ `createCollectiveProgressiveScalePlanV1()` produces an immutable execution plan
349
+ whose sparse topology is an algorithmic descriptor. A worker derives one
350
+ peer's O(log N) neighbors and affected-population membership on demand; the
351
+ plan never materializes the global peer or edge set. Peer and interaction
352
+ ranges are exact, non-overlapping shards, and the implicit affine permutation
353
+ selects the configured affected population without a global membership list.
354
+
355
+ `runCollectiveProgressiveScaleShardV1()` binds a provider-neutral executor ID
356
+ and version to one exact shard. Results retain interaction, recovery-work,
357
+ mission-success and digest-only event-stream evidence. The aggregate report
358
+ requires an exact shard closure, the registered role-coherence horizon, the
359
+ complete affected population, restored mission success and the profile's
360
+ quadratic, N log N or linear recovery ceiling. These APIs make large-scale
361
+ execution pluggable and bounded; constructing a plan or a conformant-shaped
362
+ report is not evidence that a large campaign was actually executed.
363
+
364
+ `createCollectiveProgressiveScaleOverlayBindingV2()` connects each execution
365
+ tier to the production `@agentplat/mesh/overlay` profile with the same peer,
366
+ interaction and sparse-degree bounds. The additive
367
+ `createCollectiveProgressiveScalePeerRoutingV2()` helper constructs one peer's
368
+ bounded active/reserve view and exact outbound interaction quota without
369
+ materializing the plan's global population or topology. Existing progressive
370
+ scale V1 artifacts and digests are unchanged.
371
+
372
+ ## Sharded simulation and scale interoperability
373
+
374
+ The root package also exports a transport-neutral environment bridge and three
375
+ closed logical-peer profiles: 500/5,000 interactions, 5,000/50,000 and
376
+ 100,000/1,000,000. `createShardedSimulationAssignmentsV1()` partitions peers
377
+ and interactions without materializing a global topology, while
378
+ `shardedSimulationAssignmentForPeerV1()` resolves a peer's shard in constant
379
+ time.
380
+
381
+ Runner-visible ports cover partial observations, fenced effects, cross-shard
382
+ message batches and opaque evaluator-owned checkpoints. Success, recovery and
383
+ role-coherence metrics are available only through the separate evaluator port;
384
+ a runner cannot supply those verdicts. The in-memory bridge is a reference
385
+ composition surface, not a distributed deployment or scale claim.
386
+
387
+ Fault schedules are closed, bounded inputs interpreted at the driver boundary.
388
+ Failures, restarts, partitions, compromised or rogue actors and misleading or
389
+ conflicting observations alter the simulated interaction path and every
390
+ scheduled fault must be observed. External HTTP or gRPC bridges must return
391
+ exact digest-bound envelopes and preserve durable checkpoint anchors.
392
+
393
+ ## Multi-domain environment adapters
394
+
395
+ The root export includes open descriptors and manifests for physical, social,
396
+ cyber and hybrid environments. A manifest binds implementation, schemas,
397
+ scenario, profile, seed, population, topology/transition/visibility/fault
398
+ policies and resource budgets. The reference bridge applies those scenario
399
+ budgets and population bounds before runner-visible operations.
400
+
401
+ `runMultiDomainAdapterConformanceV1()` rejects substitution of the requested
402
+ definition and exercises deterministic observations, undeclared capability and
403
+ stale-fence denial, checkpoint/restore after mutation, out-of-population
404
+ actions and byte bounds. Passing black-box conformance is a contract signal,
405
+ not proof of simulator fidelity or a completed scale run.
406
+
407
+ ## Verified benchmark registry
408
+
409
+ Benchmark suites bind one exact multi-domain scenario, scale profile, seed,
410
+ budget and centralized baseline. Candidate metrics are derived from trace
411
+ facts; callers cannot submit a score. Verification additionally requires a
412
+ trusted evaluator evidence port for candidate and baseline trace provenance.
413
+
414
+ Leaderboards are suite-specific, deterministic and exclude invalid,
415
+ over-budget, duplicate or replayed-trace submissions from ranking. Source,
416
+ artifact and build locks are digest references: deployments remain responsible
417
+ for custody, evaluator independence and environment relevance.
418
+
419
+ ## Scalable evaluation runtime
420
+
421
+ The `./scalable-evaluation` export provides a provider-neutral configuration
422
+ and accounting layer over the existing sharded simulation and multi-domain
423
+ environment contracts. Its `standard-500`, `large-5000`, and
424
+ `frontier-100000` profiles bind 500/5,000, 5,000/50,000, and
425
+ 100,000/1,000,000 agent/interaction envelopes. Message count, message bytes,
426
+ interaction count, and the bounded retained-record tail are explicit budgets;
427
+ creating these values does not allocate agents or start a run.
428
+
429
+ Definitions bind physical, social, or cyber scenario manifests to an explicit
430
+ partial-observation policy and the benign, Byzantine, rogue, or context
431
+ poisoning perturbations selected by the evaluator. Target selectors stay
432
+ private and are represented publicly by cardinality and digest, preventing a
433
+ 100,000-agent profile from materializing a global target list.
434
+
435
+ `InMemoryScalableEvaluationRuntimeV1` accepts strictly sequenced accounting
436
+ records and keeps aggregate counters by team and domain. The full history is
437
+ committed by a chain digest while only the configured tail remains in memory.
438
+ With the closed two-team, three-domain contract, retained state is
439
+ O(teams + domains + perturbations + tail) and is independent of the declared
440
+ agent population.
441
+ Recovery episodes compare provider-measured basis-point samples with a
442
+ pre-perturbation baseline and report the accounted interactions and messages
443
+ needed to return within tolerance. Injection and recovery receipts are signed
444
+ with Ed25519 and bind the exact definition, scenario, environment adapter,
445
+ provider authorization, team, session, episode, perturbation schedule and
446
+ sample identity. `WebCryptoScalableEvaluationEvidenceVerifierV1` captures the
447
+ platform verifier and its authorization/key resolvers at construction; caller
448
+ supplied crypto, structural boolean verifiers and non-canonical signatures are
449
+ rejected. The accounting runtime accepts only receipts branded by that verified
450
+ path, so a provider cannot turn an unsigned metric array into recovery evidence.
451
+
452
+ Both sides of a `team-vs-team` matchup implement the same
453
+ `ScalableEvaluationTeamPortV1`. A centralized controller can occupy either
454
+ side as a replaceable reference without receiving hidden environment state,
455
+ and the comparison output contains signed deltas rather than an inferred
456
+ winner. Environment binding validates the exact multi-domain scenario before
457
+ returning its bridge; it does not start sessions, invoke team callbacks, or
458
+ execute an evaluation campaign.
459
+
460
+ `runScalableEvaluationV1()` routes every team message through the environment
461
+ delivery ingress, including messages whose source and destination currently
462
+ share a shard. Accounting advances only after an exact digest-bound ACK names
463
+ every expected event; there is no local synthetic-delivery shortcut. A message
464
+ also carries a complete bounded `transportEnvelope` and its digest. The batch
465
+ commits that envelope digest, the ACK commits the exact `batchDigest`, and only
466
+ after validating that complete binding does the runner hand the envelope to
467
+ the team's acknowledged-message ingress. A port that emits messages but
468
+ supplies no ingress fails closed.
469
+
470
+ The reference integrated adapter connects genuine
471
+ `@agentplat/collective-host/reference-integrated-stack` instances to the same
472
+ team port. `ReferenceIntegratedScalableEvaluationEgressRuntimeV1` installs a
473
+ real sparse peer plane with a nominal delivery queue, preserving the exact
474
+ recipient indexes chosen by the overlay. The same egress is the stack's
475
+ recovery-aware assignment authority: protected commits stop in an idempotent
476
+ action outbox, and the outer runner is the only component that applies those
477
+ actions to the evaluation environment. Peer binding checks the stack's private
478
+ construction brand and exact plane/authority object identities; callback-shaped
479
+ lookalikes, effect mappers and invented routing targets are not accepted. The
480
+ reserved implementation ID
481
+ `agentplat.reference-integrated-collective-stack.v1` is accepted only from this
482
+ nominal factory path.
483
+
484
+ The delivery capture and action outbox in this reference egress are bounded,
485
+ in-memory state for one evaluation process. They are not a production durable
486
+ transport or protected-effect sink, so this particular port remains suitable
487
+ only for the non-durable runner path. `runScalableEvaluationV1()` also has an
488
+ explicit restart-durable mode: supply both `durableStore` and `runId`, plus
489
+ restart-durable environment, team, perturbation, recovery and action-authority
490
+ ports. The runner rejects a partial declaration or a callback-shaped claim.
491
+ Providers opt in with a module-created
492
+ `ScalableEvaluationRestartDurabilityDeclarationV1`; the declaration identity
493
+ and the exact definition, adapter descriptor, sparse schedule, assignments,
494
+ shard count, baselines and team descriptors are bound into the checkpoint
495
+ configuration digest.
496
+
497
+ `ScalableEvaluationDurableCheckpointStoreV1` is provider-neutral and advances
498
+ one run by revision-and-digest CAS. A checkpoint carries the exact phase,
499
+ logical step/team/cursor, trace predecessor, active recoveries, a bounded
500
+ one-step saga, both environment checkpoints, both team checkpoints and the
501
+ canonical `ScalableEvaluationRuntimeStateV1`. Runtime state is independently
502
+ hash-chained by revision and predecessor and includes the two team states,
503
+ global and per-domain counters, baselines, perturbation observations,
504
+ recoveries, environment bindings and the configured accounting-record ring
505
+ with its physical cursor. Restore validates the definition and adapter binding
506
+ before installing any state.
507
+
508
+ The durable phase journal covers perturbation, observation, team step, each
509
+ action, each message, accounting, recovery and trace advance. Every external
510
+ operation has a stable content-derived operation ID and is reconciled before
511
+ the next phase is committed. Durable environment and team providers must be
512
+ able to restore the last committed checkpoint even if a newer orphan
513
+ checkpoint was created before a process failed, and must return the same
514
+ idempotent receipt when that operation is reconciled. Missing continuity,
515
+ restore or reconciliation fails closed; the runner never assumes process
516
+ memory or repeats an unreceipted effect.
517
+
518
+ The nominal transport envelope contains the exact `MeshSparseDeliveryV2` and
519
+ its authenticated content-addressed collective artifact; no callback rebuilds
520
+ either value. Post-ACK ingress validates their complete binding, stores and
521
+ re-reads the artifact through the genuine destination stack, then admits the
522
+ delivery to a bounded peer inbox. At the next peer step, ingress always calls
523
+ `MeshSparsePeerPlaneRuntimeV1.receive()` first, so routing, expiry, deduplication
524
+ and relay semantics run before `node.receive()` performs protocol and artifact
525
+ admission. Deferred causal predecessors remain queued rather than being
526
+ reported as delivered protocol state.
527
+
528
+ Each peer is owned by exactly one nominal team port, and mission binding checks
529
+ tenant, mesh, mission intent and objective together. A bounded per-step journal
530
+ records `prepared`, `node_mutated`, `output_staged`, `settled` or
531
+ `indeterminate`: exact retries return the staged output, while any mutation
532
+ that cannot be reconciled fails closed and is never executed again. Delivery
533
+ captures are released only after the target ingress receipt is bound to the
534
+ exact batch and ACK; effect captures are released only after the corresponding
535
+ terminal fenced environment request and receipt. This makes pending outbox
536
+ capacity reusable. The pending inbox and admitted-message idempotency window
537
+ are each capped at 65,536 entries, while each peer retains 64 step journals.
538
+ Terminal journals and their settlement records are pruned as the window rolls;
539
+ retries older than that window fail closed instead of re-executing. Egress
540
+ settlement retention is also explicitly bounded by `maximumSettledReceipts`.
541
+ These reference journals and receipts provide exact retry only inside one
542
+ evaluation process. Cross-process recovery uses the opt-in durable runner path
543
+ above and therefore requires implementations of its explicit checkpoint,
544
+ restore and reconciliation ports; the in-memory reference egress does not
545
+ claim those capabilities.
546
+
547
+ Durable state does not expand the declared population. A run remains limited
548
+ to two teams, three accounting domains, at most 16,384 sparse schedule steps,
549
+ 1,024 actions and 1,024 messages (16 MiB total message bytes) per step, and a
550
+ single retained step saga. Public metadata remains capped at 64 KiB, depth 32
551
+ and 16,384 nodes. Runtime record retention is exactly
552
+ `maximumRetainedRecords`; durability declarations may advertise at most 64 MiB
553
+ per checkpoint, and the runner enforces the smallest capacity declared by the
554
+ store, environment bridge and either team port.
@@ -0,0 +1,80 @@
1
+ import { type BudgetReservationV1, type CollectiveAuthorityStateV1, type GovernedActionPermitV1, type WorkContractV1 } from "@agentplat/collective-control";
2
+ import { type GovernedActionDispatchDecisionV1 } from "@agentplat/collective-control/actions";
3
+ import { MemoryCollectiveExecutionRepositoryV1 } from "@agentplat/collective-control/memory";
4
+ import { type ActionBinding, type ActionGrant, type ControlJsonObject } from "@agentplat/inference-control/tools";
5
+ import { type ActionGrantStateV1, type AssessmentRequestV1, type InferenceAssessmentV1, type InferenceControlStateV1 } from "@agentplat/inference-control";
6
+ import { type CollectiveEnvironmentPortV1, type CollectiveProtectedEffectAttemptV1, type CollectiveProtectedEffectReceiptV1 } from "@agentplat/collective-planning/evaluation";
7
+ import type { PlanningDigestV1 } from "@agentplat/collective-planning";
8
+ import { type EvidenceTrustStateV1, type TrustEligibilityDecisionV1, type TrustEligibilityRequestV1 } from "@agentplat/trust";
9
+ /**
10
+ * The current Mesh projection required to cross the governed action boundary.
11
+ * It deliberately contains no proposal, adaptive-role, or assignee lookup.
12
+ */
13
+ export interface CollectiveClosedLoopCurrentMeshV1 {
14
+ readonly meshId: string;
15
+ readonly objectiveId: string;
16
+ readonly objectiveRevision: number;
17
+ readonly workItemId: string;
18
+ readonly workItemRevision: number;
19
+ readonly assignedPeerId: string;
20
+ readonly assignedInstanceId: string;
21
+ readonly assignmentAuthorityId: string;
22
+ readonly assignmentEpoch: number;
23
+ readonly authorityGeneration: number;
24
+ readonly fencingToken: string;
25
+ readonly leaseExpiresAtLogicalMs: number;
26
+ readonly objectiveTerminal: boolean;
27
+ readonly workTerminal: boolean;
28
+ }
29
+ export interface CollectiveClosedLoopEffectMetadataV1 {
30
+ readonly registrationDigest: PlanningDigestV1;
31
+ readonly missionIntentId: string;
32
+ readonly intentRevision: number;
33
+ readonly intentDigest: PlanningDigestV1;
34
+ readonly actionClass: string;
35
+ }
36
+ export interface CollectiveClosedLoopActionInputV1 {
37
+ /** A mandate already accepted by this exact authority state. */
38
+ readonly mandate: Parameters<MemoryCollectiveExecutionRepositoryV1["registerWork"]>[0]["mandate"];
39
+ readonly authorityState: CollectiveAuthorityStateV1;
40
+ /** Must have been derived from a current accepted Mesh assignment. */
41
+ readonly workContract: WorkContractV1;
42
+ readonly mesh: CollectiveClosedLoopCurrentMeshV1;
43
+ readonly environment: CollectiveEnvironmentPortV1;
44
+ readonly effect: CollectiveClosedLoopEffectMetadataV1;
45
+ readonly actionBinding: ActionBinding;
46
+ readonly actionInput: ControlJsonObject;
47
+ readonly trustState: EvidenceTrustStateV1;
48
+ readonly trustRequest: TrustEligibilityRequestV1;
49
+ /** State has a registered policy, current run and negotiated capability. */
50
+ readonly inferenceState: InferenceControlStateV1;
51
+ readonly assessmentRequest: AssessmentRequestV1;
52
+ readonly assessment: InferenceAssessmentV1;
53
+ readonly actionGrant: ActionGrantStateV1;
54
+ readonly logicalTimeMs: number;
55
+ readonly wallTime: string;
56
+ readonly gatewayId: string;
57
+ readonly reservationId: string;
58
+ readonly permitId: string;
59
+ readonly decisionId: string;
60
+ }
61
+ export interface CollectiveClosedLoopActionResultV1 {
62
+ /** Runner-owned wall time used to authorize this exact governed action. */
63
+ readonly authorizedAt: string;
64
+ readonly trustDecision: TrustEligibilityDecisionV1;
65
+ readonly inferenceState: InferenceControlStateV1;
66
+ readonly actionGrant: ActionGrant;
67
+ readonly budgetReservation: BudgetReservationV1;
68
+ readonly actionPermit: GovernedActionPermitV1;
69
+ readonly executionStateDigest: string;
70
+ readonly action: GovernedActionDispatchDecisionV1;
71
+ readonly effectAttempt: CollectiveProtectedEffectAttemptV1 | null;
72
+ readonly receipt: CollectiveProtectedEffectReceiptV1 | null;
73
+ }
74
+ /**
75
+ * Runs one protected action through real Trust, inference, Collective Control
76
+ * and the fenced evaluation sink. It is intentionally a one-shot composition
77
+ * boundary: callers produce observations/results outside this module.
78
+ */
79
+ export declare function runCollectiveClosedLoopActionV1(input: CollectiveClosedLoopActionInputV1): Promise<CollectiveClosedLoopActionResultV1>;
80
+ //# sourceMappingURL=collective-closed-loop-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collective-closed-loop-action.d.ts","sourceRoot":"","sources":["../src/collective-closed-loop-action.ts"],"names":[],"mappings":"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"}