Runtime

Verification and Hardening Architecture for Deterministic Web-Based Simulation Platforms: A Case Study on Simulation Earth

Report summary

The deployment of deterministic, browser-based simulation platforms into high-stakes environments necessitates an uncompromising separation of state authority, rendering projection, and external augmentation. For the Simulation Earth application hosted on IARPA.org, the technical foundation—comprisi

Status
Research archive item
Category
Runtime
Length
7,492 words
Reading time
35 minutes
Report type
guidance

Key topics

  • Runtime
  • AI
  • Agentic Web
  • Rust
  • Privacy
  • Physics
  • Semantic Systems
  • Research Archive

Research provenance

Archive status
Research archive item
Content identity
sha256:4bf775ed70018eeb7dcdbc442ad5c03ba2cfe3cdeb05230e9e551ca2a99776cc

For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.

This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.

Full report

On this page

The deployment of deterministic, browser-based simulation platforms into high-stakes environments necessitates an uncompromising separation of state authority, rendering projection, and external augmentation. For the Simulation Earth application hosted on IARPA.org, the technical foundation—comprising plain PHP, vanilla JavaScript, static JSON, WebGL, and a Web Worker—presents a rigorous verification challenge. Without reliance on third-party runtime frameworks or centralized database state, the architecture relies exclusively on client-side determinism verified through canonical cryptographic hashing. The primary assurance axiom is that the browser Web Worker is the sole authoritative owner of deterministic state. The main thread, encompassing the WebGL renderer, 2D fallback, and DOM interface, functions strictly as a read-only projection of the Worker's state. Furthermore, the optional-AI component operates as an ephemeral, replaceable explanation layer. It possesses zero mutation authority over the simulation's state, chronology, legal framework, or operational targeting. The verification strategy outlined herein establishes a black-box-compatible testing and release architecture that mathematically proves, rather than merely asserts, the immutability of factual records and the absolute containment of fictional or predictive elements.

Authority Invariants and Trust-Boundary Modeling

The security and integrity of Simulation Earth depend on rigid trust boundaries. Contamination across these boundaries—such as fictional what-if scenarios polluting historical archives, or optional-AI hallucinations mutating authoritative coordinate data—constitutes a critical failure. The system is modeled across four distinct trust domains, characterized by strictly unidirectional state authority.

Trust Boundary and Authority Diagram

========================================================================================== TRUST BOUNDARY AND AUTHORITY DIAGRAM

\[DOMAIN 1: ABSOLUTE TRUTH\] (Immutable / Append-Only)

|-- Factual Statistics |-- Historical Source Playback |-- Read-Only Nuclear Archive | | (Unidirectional Load) v

\[DOMAIN 2: DETERMINISTIC ENGINE\] (Authoritative State Owner) |-- Browser Web Worker |-- State Transition Logic (Play, Step, Rewind, Forward, Jump) |-- PRNG & Deterministic Resolution (48 Synthetic Cells) |-- Canonical Hashing (RFC 8785\) | | (Strict Versioned Message Protocol & Transferable ArrayBuffers) | \+------------------------------------------------------------------+

| | v (Read-Only Projection) ^ (Action Requests)

\[DOMAIN 3: PROJECTION & USER INTERFACE\] (Zero State Authority)

|-- Main Thread (Vanilla JS) |-- WebGL Globe & 2D Canvas Fallback |-- Scenario Command Center & Event Studio |-- Accessibility Shadow DOM (NVDA, JAWS, WebXR) | | (Derived Read-Only Envelope) | v |

\[DOMAIN 4: AUGMENTATION LAYER\] (Untrusted / Replaceable)

|-- Same-Origin PHP JSON Endpoint (No-Store, Rate-Limited) |-- External LLM Provider |-- Returns: Deterministic Fallback or Localized Narrative Text |-- Mutation Capabilities: NONE

The architecture enforces absolute boundary invariants. The Main Thread may only request actions via message passing. The Worker evaluates these requests, advances the deterministic simulation, and returns a new state snapshot. Any state snapshot exported from the Worker must be serializable into Canonical JSON conforming to RFC 8785, which ensures deterministic property sorting and ECMAScript-compatible number serialization1. The Optional-AI PHP endpoint accepts only a derived, read-only envelope of the state. The response from the AI must never be parsed as executable logic or numerical authority, acting strictly as a localized text overlay.

Versioned Worker-Message Protocol Specification

To guarantee that the Main Thread and the Web Worker interact deterministically, the message protocol must be strictly typed, versioned, and resilient to tab suspension, worker restarts, and the structural limitations of the browser's structured clone algorithm3. All communication between the Main Thread and the Web Worker occurs via a unified message envelope. To prevent garbage collection pauses and structural cloning overhead during state synchronization, large numerical arrays representing the 48 synthetic cells and normalized indicators must be passed using Transferable Objects5. The structured clone algorithm natively strips functions, DOM nodes, and getter/setter descriptors3. Therefore, the protocol relies exclusively on serializable primitives.

Protocol Request Schema (v1.0.0)

The incoming message format from the Main Thread to the Worker dictates the boundaries of user and projection interaction.

JSON { "$schema": "http://json-schema.org/draft-07/schema\#", "title": "SimulationEarth\_WorkerRequest", "type": "object", "properties": { "protocol\_version": { "type": "string", "const": "1.0.0" }, "request\_id": { "type": "string", "pattern": "^\[a-fA-F0-9\]{64}$" }, "action": { "type": "string", "enum": \[ "INIT", "PLAY", "PAUSE", "SPEED", "STEP", "REWIND", "FORWARD", "SCENARIO", "JUMP", "RESET", "BRANCH", "INTERVENE", "CONTEXT\_EVENT", "CRISIS\_TRIGGER", "RESPONSE", "SAVE", "EXPORT", "IMPORT" \] }, "payload": { "type": "object" }, "timestamp\_seq": { "type": "integer", "minimum": 0 } }, "required": \["protocol\_version", "request\_id", "action", "timestamp\_seq"\], "additionalProperties": false }

Protocol Response and Error Schemas (v1.0.0)

The Worker responds to every valid request with a state acknowledgment or a designated error. The canonical\_state\_hash serves as the cryptographic proof of the simulation's current temporal posture.

JSON { "$schema": "http://json-schema.org/draft-07/schema\#", "title": "SimulationEarth\_WorkerResponse", "type": "object", "properties": { "request\_id": { "type": "string", "pattern": "^\[a-fA-F0-9\]{64}$" }, "status": { "type": "string", "enum": \["ACK", "STATE\_UPDATED"\] }, "canonical\_state\_hash": { "type": "string", "pattern": "^\[a-f0-9\]{64}$" }, "tick": { "type": "integer", "minimum": 0 }, "payload": { "type": "object" } }, "required": \["request\_id", "status", "canonical\_state\_hash", "tick"\], "additionalProperties": false }

When a protocol violation occurs, the Worker emits a standard error schema, halting progression but maintaining the integrity of the previous state hash.

JSON { "$schema": "http://json-schema.org/draft-07/schema\#", "title": "SimulationEarth\_WorkerError", "type": "object", "properties": { "request\_id": { "type": "string" }, "status": { "type": "string", "const": "ERROR" }, "error\_code": { "type": "string", "enum": \[ "INVALID\_SCHEMA", "UNKNOWN\_ACTION", "BACKPRESSURE\_LIMIT", "OUT\_OF\_ORDER\_SEQ", "UNSERIALIZABLE\_PAYLOAD", "CHRONOLOGY\_VIOLATION" \] }, "message": { "type": "string" }, "canonical\_state\_hash": { "type": "string" } }, "required": \["request\_id", "status", "error\_code", "canonical\_state\_hash"\] }

Concurrency, Idempotence, and Lifecycle Management

The protocol must address native browser behaviors to prevent state corruption. The timestamp\_seq attribute acts as a monotonic clock, ensuring idempotence and duplicate delivery rejection. If the Worker receives an out-of-order or duplicate request\_id, it must discard the message and re-emit the ACK for the highest processed state. Browsers frequently suspend inactive tabs to preserve battery and memory. The Main Thread must ping the Worker via a lightweight status check. If the Worker terminates due to memory pressure or tab suspension, the Main Thread instantiates a new Worker using the last verified canonical\_state\_hash and its corresponding local state blob. Furthermore, if the Main Thread requests state mutations faster than the Worker can compute, the Worker queues operations up to a strict limit, beyond which it rejects requests with a BACKPRESSURE\_LIMIT error to maintain UI responsiveness and prevent heap overflow.

Deterministic Architecture and Cross-Browser Tolerances

Achieving bit-exact determinism across varied JavaScript engines—such as Chrome's V8, Firefox's SpiderMonkey, and Safari's JavaScriptCore—is the most mathematically demanding requirement of the simulation8.

Floating-Point Stability and Seeded Randomness

JavaScript mandates 64-bit floating-point arithmetic following the IEEE 754 standard1. However, transcendental mathematical functions such as Math.sin(), Math.cos(), and Math.pow() are implemented differently across browser engines, leading to micro-divergences in the least significant bits of floating-point outputs10. Over thousands of simulation steps, a difference in the 16th decimal place will avalanche, causing wildly diverging state hashes across different devices. To guarantee cross-browser determinism, the Worker must strictly avoid native transcendentals for any operation that mutates state9. Geographic coordinates, vectors, and numerical indicators for the 48 synthetic cells must be processed using scaled integer arithmetic or a custom deterministic mathematics library relying on lookup tables or Taylor series expansions13. Native Math.random() is inherently non-deterministic and highly engine-dependent15. The Worker must utilize a deterministic pseudo-random number generator (PRNG), such as a 64-bit SplitMix or XorShift algorithm15, initialized with a strict seed contained in the INIT or IMPORT payload17. Furthermore, Object.keys() iteration order is not guaranteed to be identical across all engine versions. The simulation must rely on sorted arrays for iteration, ensuring that event processing occurs in a strictly predictable sequence.

Deterministic Replay and Cross-Browser Comparison Protocol

Verification of the simulation's determinism requires an automated cross-browser replay protocol that eliminates hardware and OS-level variability.

PhaseActionVerification Standard
1\. Seed InjectionInject identical starting state and PRNG seed into Chrome, Firefox, and Safari headless instances.Workers acknowledge INIT success with matching origin hashes.
2\. Fuzz Input ExecutionExecute a predefined sequence of 5,000 messages (Steps, Jumps, Interventions) in a headless environment.Messages must be ingested and processed in exact order without backpressure failure.
3\. Canonical SerializationExtract state, format per RFC 8785 (JSON Canonicalization Scheme)1.Byte-for-byte identical JSON strings produced across all engines.
4\. HashingCompute SHA-256 hash of the canonical JSON string20.Hashes must match exactly across all tested browsers and architectures (e.g., ARM64 vs x86\_64).
5\. Tolerance & RenderingCompare rendered WebGL pixel output via headless screenshots.Acceptable threshold: \< 0.05% pixel variance (accounting for minor GPU anti-aliasing differences). State hashes must have 0.00% variance.

Canonical JSON (RFC 8785\) is mandatory because standard JSON.stringify() produces non-deterministic outputs based on insertion order and varying whitespace rules2. By enforcing lexicographical sorting of keys and precise ECMA-262 number serialization, RFC 8785 guarantees that logically equivalent states yield identical byte arrays for hashing1.

Exhaustive Verification Test Catalog

The architecture requires an implementation-ready testing specification spanning 200 explicitly named tests. These tests are categorized across ten distinct assurance layers to ensure comprehensive coverage of determinism, protocol bounds, security, rendering, and AI containment.

1. Core Determinism & Playback Verification (T001 - T020)

This layer proves that the underlying mathematical engine generates identical outcomes regardless of the execution environment. The tests ensure that locale data, wall-clock time, and hardware architectures cannot leak into the simulation state.

Test IDTest NameObjective / Assertion
T001Det\_CrossBrowser\_HashEquivalenceAsserts SHA-256 state hashes match across V8, SpiderMonkey, and JavaScriptCore after 1000 steps9.
T002Det\_MathSin\_AvoidanceScans worker bundle to assert native Math.sin/Math.cos are not invoked in state mutations11.
T003Det\_PRNG\_SeedInvarianceAsserts the same PRNG seed produces identical event outcomes over 500 ticks.
T004Det\_FloatingPoint\_AvalancheInjects a precision delta into a cell indicator; asserts divergence is mathematically predictable.
T005Det\_Locale\_IndependenceAsserts simulation state ignores Intl.DateTimeFormat and browser locale configurations.
T006Det\_WallClock\_IsolationMocks Date.now() and performance.now() to extreme futures; asserts worker logic remains unaffected.
T007Det\_Iteration\_Order\_ArrayAsserts event resolution processes strictly by array index, independent of object key insertion order21.
T008Det\_Play\_Pause\_EquivalenceAsserts 10 steps executed via PLAY/PAUSE yield identical state to 10 sequential STEP commands.
T009Det\_Speed\_InvarianceAsserts state transitions at 1x speed match exact outcomes at 100x speed for identical tick counts.
T010Det\_Replay\_IdentityAsserts replaying a saved scenario trace produces the exact SHA-256 hash at every historical tick.
T011Det\_Action\_SequencingAsserts identical inputs applied in the exact same tick order produce the same outcome.
T012Det\_Jump\_Forward\_AccuracyAsserts a JUMP command to tick N produces the exact state as N sequential STEP commands.
T013Det\_Rewind\_AccuracyAsserts a REWIND to tick N-10 accurately restores the historical canonical state for that tick.
T014Det\_Event\_Resolution\_TiesAsserts simultaneous crisis events are resolved using the deterministic PRNG, avoiding race conditions.
T015Det\_Object\_Property\_SortAsserts RFC 8785 canonicalization correctly lexicographically sorts all JSON state keys before hashing2.
T016Det\_Float\_SerializationAsserts numbers are serialized strictly per ECMA-262 rules during state hashing1.
T017Det\_State\_Immutability\_MainAsserts the Main Thread attempting to mutate the projected state array does not alter the Worker's authoritative state.
T018Det\_Branch\_Copy\_EquivalenceAsserts creating a BRANCH produces a duplicated state hash matching the origin state hash.
T019Det\_Deep\_Nesting\_HashAsserts the hashing algorithm correctly traverses and deterministically hashes 50-level deep historical context objects2.
T020Det\_ArrayBuffer\_ZeroCopyAsserts the worker successfully transfers ArrayBuffer ownership without mutating internal state tracking5.

2. Chronology & Boundary Constraints (T021 - T040)

Simulation Earth relies on precise chronological logic spanning thousands of years. These tests verify the robustness of date calculations, the handling of calendar anomalies, and the strict segregation between factual historical data and fictional projections.

Test IDTest NameObjective / Assertion
T021Chr\_BCE\_CE\_CrossingAsserts the simulation correctly calculates chronological delta across the 1 BCE to 1 CE boundary (enforcing no year zero).
T022Chr\_LeapYear\_HandlingAsserts correct tick mapping for February 29th across 400-year Gregorian cycle projections.
T023Chr\_Observed\_Through\_CrossAsserts state transitions gracefully from factual historical archive playback into deterministic predictive projection.
T024Chr\_Projection\_AnnouncementAsserts crossing into the predictive future instantly triggers the UI notification boundary warning.
T025Chr\_First\_Intervention\_LockAsserts the very first user intervention irreversibly marks the timeline as a "fictional branch."
T026Chr\_Baseline\_ReturnAsserts a user can discard a fictional branch and return flawlessly to the observed-through baseline.
T027Chr\_Nuclear\_Archive\_EndAsserts the historical nuclear archive data stops at the verified date; subsequent events use simulation logic.
T028Chr\_Unsupported\_DatesAsserts chronological requests prior to the historical origin date return a safe OUT\_OF\_BOUNDS deterministic fallback.
T029Chr\_End\_of\_RegisterAsserts the simulation pauses gracefully upon reaching the maximum defined Unix timestamp bounds.
T030Chr\_Timeline\_ContaminationAsserts fictional events created in Branch A cannot be queried or resolved in the baseline or Branch B.
T031Chr\_Historical\_ImmutabilityAsserts attempts to trigger an INTERVENE action on a historical (factual) date are rejected by the Worker.
T032Chr\_Scenario\_SwitchAsserts switching scenarios immediately clears previous chronology and resets the PRNG and tick counters.
T033Chr\_Event\_LifespanAsserts context events correctly expire and are pruned from the active state upon reaching their chronological end-date.
T034Chr\_Playback\_DirectionAsserts reversing playback speed correctly navigates the append-only history without triggering new PRNG evaluations.
T035Chr\_Leap\_Second\_IgnoreAsserts the simulation standardizes on 86,400-second days, ignoring real-world leap second adjustments to maintain sync.
T036Chr\_Date\_Format\_StrictAsserts inputs using non-ISO 8601 date formats are rejected by the worker validation schema.
T037Chr\_Future\_Factual\_DenialAsserts the system rejects importing a "factual" database containing events stamped in the future.
T038Chr\_Epoch\_RolloverAsserts the 2038 epoch problem is avoided by utilizing 64-bit integer timestamp tracking.
T039Chr\_Tick\_Rate\_StabilityAsserts the internal chronological tick is completely decoupled from rendering framerates (FPS).
T040Chr\_Narrative\_Timeline\_SyncAsserts chronological text logs match the precise exact deterministic tick of the underlying event resolution.

3. Worker Concurrency & Protocol Adherence (T041 - T060)

The Web Worker must operate as an impregnable state machine. These tests validate the JSON schemas, memory management, and the worker's ability to survive chaotic or hostile message passing from the Main Thread.

Test IDTest NameObjective / Assertion
T041Wrk\_Malformed\_MessageAsserts the Worker rejects missing request\_id or timestamp\_seq with a standard schema error.
T042Wrk\_Unknown\_ActionAsserts unknown actions return ERROR: UNKNOWN\_ACTION and maintain the canonical state hash.
T043Wrk\_Backpressure\_RejectAsserts bombarding the Worker with 10,000 STEP requests results in queued limits and backpressure rejections.
T044Wrk\_Duplicate\_DeliveryAsserts sending the exact same request\_id twice results in a cached ACK without double-advancing the state.
T045Wrk\_Out\_Of\_Order\_SeqAsserts receiving timestamp\_seq N+2 before N+1 correctly buffers or rejects to maintain linear progression.
T046Wrk\_Tab\_Suspension\_WakeAsserts a browser tab backgrounding event does not corrupt pending worker queues.
T047Wrk\_Tab\_Restore\_StateAsserts returning to a suspended tab correctly requests a full state synchronization from the active Worker.
T048Wrk\_Crash\_RecoveryAsserts terminating the Worker thread allows the Main Thread to instantiate a new Worker using the last known snapshot.
T049Wrk\_Payload\_Too\_LargeAsserts payloads exceeding the 64 MiB limit are rejected before serialization overhead impacts the UI2.
T050Wrk\_Transferable\_ValidationAsserts buffers transferred to the worker leave a byteLength of 0 in the main thread5.
T051Wrk\_Clone\_Error\_ObjectsAsserts the structured clone algorithm successfully serializes custom error objects across the boundary3.
T052Wrk\_Prototype\_PollutionAsserts the Worker sanitizes \_\_proto\_\_ and constructor keys from all incoming JSON payloads.
T053Wrk\_Idempotent\_PauseAsserts multiple consecutive PAUSE messages do not toggle the state back to PLAY.
T054Wrk\_Cancel\_OperationAsserts a long-running scenario generation can be gracefully cancelled via a CANCEL request ID.
T055Wrk\_Type\_Coercion\_DenialAsserts the JSON schema validation prevents implicit type coercion (e.g., passing string "1" instead of integer 1).
T056Wrk\_Memory\_Leak\_CheckAsserts memory usage remains stable after 1,000,000 message roundtrips (verifying no detached DOM nodes or uncleared arrays).
T057Wrk\_Unparseable\_JSONAsserts raw string inputs that fail JSON.parse are rejected immediately by the endpoint interface.
T058Wrk\_Unserializable\_PayloadAsserts attempting to pass a proxy object or closure throws a structured clone error caught by the test harness7.
T059Wrk\_Message\_Latency\_BoundAsserts the roundtrip for a standard STEP operation completes within 16ms to maintain 60 FPS UI pacing.
T060Wrk\_Schema\_Version\_MismatchAsserts a UI sending protocol version 0.9.0 to a 1.0.0 Worker triggers a hard initialization failure.

4. Save, Export & Migration Integrity (T061 - T080)

State persistence in a browser environment relies on LocalStorage and JSON file exports. These tests guarantee that files cannot inject malicious code, corrupt the state, or bypass chronological constraints upon import.

Test IDTest NameObjective / Assertion
T061Sav\_Malformed\_JSONAsserts importing a save file with truncated JSON triggers a validation failure, leaving current state intact.
T062Sav\_Oversized\_FileAsserts save files over 128MB are rejected by the local FileReader before reaching the Worker.
T063Sav\_Deep\_NestingAsserts save files nested deeper than 50 levels trigger a bound-exceeded rejection to prevent stack overflows2.
T064Sav\_Duplicate\_IDsAsserts arrays of entities (synthetic cells, events) with duplicate UUIDs are rejected during import validation.
T065Sav\_Unknown\_FieldsAsserts unknown JSON keys are strictly stripped/ignored to prevent state-pollution during migration.
T066Sav\_Unsafe\_KeysAsserts keys containing executable scripting patterns (e.g., \<script\>) are sanitized.
T067Sav\_Invalid\_RangesAsserts imported numerical indicators falling outside normalized bounds (0.0 to 1.0) are clamped or rejected.
T068Sav\_Forbidden\_NotesAsserts prohibited research prose, private keys, or real targeting parameters in metadata trigger a hard failure.
T069Sav\_Coordinates\_CheckAsserts files containing real-world high-precision coordinates are sanitized to the abstract 48 synthetic cells.
T070Sav\_Provider\_Content\_DenialAsserts imported templates containing pre-baked LLM responses strip the AI content, forcing deterministic regeneration.
T071Sav\_Unsupported\_SchemasAsserts importing a v0.5 save file into a v1.0 system triggers the designated migration chain rather than raw loading.
T072Sav\_Interrupted\_WritesAsserts simulating a crash during a LocalStorage write leaves the previous save slot uncorrupted.
T073Sav\_Migration\_Chain\_FuzzingAsserts sequential migrations (v0.5 \-\> v0.8 \-\> v1.0) yield identical canonical hashes to a direct (v0.5 \-\> v1.0) migration.
T074Sav\_Export\_Import\_IdentityAsserts exporting a state and immediately importing it produces the exact same deterministic state hash.
T075Sav\_Local\_Persistence\_QuotaAsserts hitting the 5MB/10MB browser LocalStorage quota gracefully prompts the user to download the JSON instead.
T076Sav\_Portable\_Template\_HashAsserts sharing a template JSON between two distinct browsers generates the exact same origin hash upon initialization.
T077Sav\_No\_Credentials\_ExportAsserts no user session tokens, JWTs, or local UUIDs are embedded in the exported JSON file.
T078Sav\_Read\_Only\_ArchiveAsserts attempting to overwrite a built-in historical scenario save file fails.
T079Sav\_Schema\_DowngradeAsserts attempting to load a v1.1 save file into a v1.0 system throws an UNSUPPORTED\_FUTURE\_VERSION error.
T080Sav\_Null\_Byte\_InjectionAsserts save files containing null bytes (\\u0000) in string fields are safely sanitized or rejected.

5. Metamorphic & State Equivalence (T081 - T100)

Metamorphic testing proves that functionally equivalent user operations result in mathematically identical state hashes. If two distinct paths logically arrive at the same scenario, their resulting canonical states must match flawlessly.

Test IDTest NameObjective / Assertion
T081Met\_Input\_OrderingAsserts adding Intervention A then Intervention B on the same tick yields identical state to B then A (if commutative).
T082Met\_Pause\_Step\_PlaybackAsserts 100 ticks achieved via PLAY is identical to 100 manual STEP clicks.
T083Met\_Branch\_EquivalenceAsserts a branch left untouched mirrors the baseline timeline exactly at every future tick.
T084Met\_Restart\_EquivalenceAsserts closing the browser, restarting, and loading a save yields the same next-tick state as continuing without restarting.
T085Met\_Narrative\_WordingAsserts changing the descriptive text of a custom event has zero impact on the numerical indicator state hashes.
T086Met\_Zoom\_InvarianceAsserts panning or zooming the WebGL globe UI has zero impact on the Worker's deterministic state.
T087Met\_Export\_Upload\_EquivAsserts uploading a save file via drag-and-drop yields the same state as uploading via the file picker dialog.
T088Met\_Speed\_FluctuationAsserts fluctuating the simulation speed between 1x, 5x, and 10x repeatedly during playback does not alter the final state.
T089Met\_Intervention\_CancelAsserts opening the intervention dialog and canceling leaves the canonical state hash completely unchanged.
T090Met\_Crisis\_Trigger\_OriginAsserts a crisis triggered manually vs. triggered by deterministic indicators resolve identically if at the same tick.
T091Met\_Data\_Format\_ParityAsserts loading data initialized from raw JS objects vs parsed JSON strings result in the exact same state array.
T092Met\_Resolution\_InvarianceAsserts running the simulation on a 4K monitor vs a 720p monitor results in the exact same Worker state.
T093Met\_Offline\_EquivalenceAsserts the simulation produces identical state hashes when the browser's network adapter is disabled.
T094Met\_Context\_LifecycleAsserts an transient event starting on Tick 10 and ending on Tick 20 leaves the state identical to one that never occurred, post-Tick 20\.
T095Met\_Save\_Slot\_EquivalenceAsserts saving to Slot 1 vs Slot 3 produces identical JSON byte outputs.
T096Met\_Locale\_Timezone\_EqAsserts a user in Tokyo (UTC+9) generates the same chronology hashes as a user in New York (UTC-5).
T097Met\_Device\_CPU\_EquivalenceAsserts an ARM64 processor produces the exact same hash as an x86\_64 processor2.
T098Met\_Fallback\_2D\_3DAsserts running the UI in 2D fallback mode issues the exact same worker protocol messages as the WebGL UI.
T099Met\_Scenario\_ResetAsserts clicking RESET restores the exact same origin hash as a fresh page load.
T100Met\_Event\_Studio\_DryRunAsserts designing an event in the Event Studio without committing it produces no changes to the active simulation state.

6. Rendering Correctness, WebGL & Context Loss (T101 - T120)

Because the UI is a read-only projection, rendering anomalies must not crash the underlying simulation. These tests ensure the WebGL globe and 2D fallbacks handle extreme edge cases—such as pole singularities and context loss—gracefully24.

Test IDTest NameObjective / Assertion
T101Rnd\_Transform\_MathAsserts world-space to screen-space matrix transformations accurately plot the 48 synthetic cells on the WebGL globe.
T102Rnd\_North\_Up\_OrientationAsserts the globe strictly enforces a north-up camera constraint during rotation to prevent gimbal lock or disorientation.
T103Rnd\_Drag\_DirectionAsserts click-and-drag mechanics map logically to globe rotation vectors across varied aspect ratios.
T104Rnd\_Antimeridian\_CrossingAsserts polygons and line renderers do not artifact or stretch when crossing the 180-degree longitude line.
T105Rnd\_Pole\_BehaviorAsserts rendering at 90 degrees North/South avoids texture pinching or vertex singularity rendering crashes.
T106Rnd\_Horizon\_VisibilityAsserts UI labels dynamically fade or hide when their associated synthetic cell rotates behind the globe horizon.
T107Rnd\_Label\_AlignmentAsserts text labels accurately anchor to their 3D coordinates without jitter during camera zoom.
T108Rnd\_Marker\_SelectionAsserts raycasting accurately identifies clicked cell markers even at oblique viewing angles.
T109Rnd\_Off\_Screen\_CompassAsserts active crisis events located off-screen display accurate edge-of-screen directional compass indicators.
T110Rnd\_Event\_Visual\_LifecycleAsserts explosion, spread, or pulse animations strictly initialize and terminate synchronized with the Worker's tick data.
T111Rnd\_Reduced\_MotionAsserts checking prefers-reduced-motion instantly disables globe auto-rotation and replaces animations with static visual indicators.
T112Rnd\_Context\_Loss\_RestoreEmulates WebGL context loss (WEBGL\_lose\_context); asserts the renderer gracefully falls back or rebuilds without crashing the tab24.
T113Rnd\_2D\_Fallback\_EquivAsserts the 2D canvas fallback accurately renders all 48 cells and active events when WebGL initialization fails.
T114Rnd\_DPR\_ScalingAsserts rendering on high-DPI (Retina) displays correctly scales the WebGL buffer to prevent blurring.
T115Rnd\_Z\_Fighting\_PreventionAsserts overlay meshes (e.g., event radiuses) utilize logarithmic depth buffers or polygon offset to prevent Z-fighting flicker.
T116Rnd\_Texture\_Memory\_LimitAsserts total WebGL texture memory stays within 50MB, ensuring compatibility with lower-end mobile devices.
T117Rnd\_Camera\_BoundsAsserts the user cannot zoom the camera inside the globe geometry or pan outside the maximum orbital distance.
T118Rnd\_Color\_Blind\_ModesAsserts the rendering pipeline supports dynamic shader swaps to accommodate Protanopia, Deuteranopia, and Tritanopia.
T119Rnd\_Frame\_PacingAsserts the requestAnimationFrame loop handles dropped frames smoothly by interpolating visual state without impacting Worker ticks.
T120Rnd\_Canvas\_ResizeAsserts resizing the browser window dynamically recalculates the projection matrix without squashing the globe aspect ratio.

7. Accessibility (A11y), WebXR & Automated Evidence (T121 - T140)

To meet public inclusion mandates, the visual canvas must be fully translated into an accessible shadow DOM. Furthermore, WebXR immersive sessions must strictly map controllers to the standard UI paradigms without collecting invasive biometric telemetry26.

Test IDTest NameObjective / Assertion
T121Acc\_Keyboard\_FocusAsserts every interactive element in the UI and WebGL overlay is reachable via standard Tab navigation.
T122Acc\_Inert\_LayersAsserts underlying UI elements are marked inert when a modal (e.g., Event Studio) is open, trapping focus.
T123Acc\_Escape\_HierarchyAsserts the Escape key sequentially closes the topmost modal, then dropdowns, then clears selections.
T124Acc\_Live\_AnnouncementsAsserts critical deterministic events (e.g., Crisis Trigger) emit an aria-live="assertive" announcement to screen readers.
T125Acc\_Screen\_Reader\_ReadoutAsserts NVDA, JAWS, VoiceOver, and TalkBack correctly interpret the 48 synthetic cells via hidden DOM shadow elements.
T126Acc\_Reflow\_200Asserts zooming the browser to 200% forces the UI into a mobile-friendly reflow without truncating text or obscuring the canvas.
T127Acc\_Forced\_ColorsAsserts the UI remains legible and high-contrast when Windows High Contrast Mode (Forced Colors) is activated.
T128Acc\_XR\_Session\_InitAsserts requesting an immersive-vr WebXR session successfully transfers the WebGL context to the headset26.
T129Acc\_XR\_Input\_MappingAsserts WebXR controller raycasts map correctly to the standard raycaster used for mouse inputs.
T130Acc\_XR\_Exit\_GracefulAsserts exiting WebXR mode gracefully restores the standard browser DOM/WebGL projection.
T131Acc\_Automated\_vs\_NativeAsserts Playwright/Puppeteer automated accessibility scans match the manual native testing checklist requirements27.
T132Acc\_Label\_ContrastAsserts all UI text maintains a minimum 4.5:1 WCAG contrast ratio against dynamic globe backgrounds.
T133Acc\_Audio\_Mute\_ControlAsserts the application starts muted and respects global volume toggles for all context-event sounds.
T134Acc\_Skip\_To\_ContentAsserts the presence of a functional "Skip to Simulation" hidden link as the first focusable DOM node.
T135Acc\_Semantic\_HTMLAsserts all controls utilize native HTML tags rather than div tags with click handlers.
T136Acc\_XR\_Gaze\_FallbackAsserts the WebXR implementation does not utilize eye/gaze tracking for targeting, ensuring BIPA compliance29.
T137Acc\_XR\_FramerateAsserts the WebXR render loop maintains a strict 72hz+ to prevent simulator sickness, shedding visual complexity if needed.
T138Acc\_Tooltip\_Hover\_FocusAsserts all informational tooltips are triggerable by both mouse hover and keyboard focus.
T139Acc\_Form\_Error\_AnnounceAsserts invalid scenario inputs throw inline ARIA errors immediately upon focus loss.
T140Acc\_ARIA\_Hidden\_CanvasAsserts the purely visual \<canvas\> is hidden from screen readers, relying entirely on the synchronized shadow DOM structure.

8. Security, Privacy & Threat Mitigation (T141 - T160)

Simulation Earth faces distinct threats stemming from its deployment architecture. These tests enforce strict Content Security Policies (CSP), mitigate XSS vectors, and mathematically verify that no Personally Identifiable Information (PII) or Illinois biometric data (BIPA/PIPA) is logged29.

Test IDTest NameObjective / Assertion
T141Sec\_CSP\_StrictAsserts the HTTP Content Security Policy strictly blocks unsafe-inline scripts and restricts connections to same-origin.
T142Sec\_Cross\_Origin\_IsolationAsserts Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy headers are set for SharedArrayBuffer security.
T143Sec\_XSS\_Scenario\_NameAsserts injecting \<script\>alert(1)\</script\> into a custom scenario name is escaped properly during DOM rendering.
T144Sec\_No\_IP\_LoggingAsserts the server telemetry does not record raw client IP addresses, ensuring zero PII collection.
T145Sec\_Local\_Storage\_SanitizeAsserts saving a scenario to LocalStorage uses JSON.stringify safely without executing embedded object getters.
T146Sec\_Rate\_Limiting\_EndpointAsserts the Optional-AI PHP endpoint returns HTTP 429 Too Many Requests if triggered more than 5 times per minute.
T147Sec\_Error\_Fingerprint\_HideAsserts stack traces and detailed error messages are suppressed in production console logs.
T148Sec\_PII\_DenialAsserts the application actively blocks inputs resembling Social Security Numbers, emails, or phone numbers in scenario text30.
T149Sec\_BIPA\_ComplianceAsserts absolutely no biometric data (gaze, facial tracking, microphone, camera) is requested or processed by the browser29.
T150Sec\_PIPA\_ComplianceAsserts the architecture utilizes zero local unencrypted Illinois-resident personal data30.
T151Sec\_Denial\_Of\_Service\_SaveAsserts importing a "zip bomb" style nested JSON payload terminates parsing before freezing the browser.
T152Sec\_Third\_Party\_ScriptsAsserts no third-party tracking, analytics, or social media scripts are loaded in the DOM.
T153Sec\_URL\_Parameter\_SanitizeAsserts shared links containing malformed or excessive GET parameters do not execute arbitrary code.
T154Sec\_Signature\_VerificationAsserts official scenario templates contain a valid cryptographic signature verified against a hardcoded public key.
T155Sec\_Revoked\_Key\_DenialAsserts templates signed by a known-revoked key are rejected during the import validation phase.
T156Sec\_Frame\_BustingAsserts X-Frame-Options: DENY is active, preventing the simulation from being clickjacked in an external iframe.
T157Sec\_No\_Store\_HeadersAsserts the Optional-AI endpoint strictly utilizes Cache-Control: no-store to prevent caching of sensitive state envelopes.
T158Sec\_Prototype\_Pollution\_UIAsserts deeply merging user preferences from LocalStorage does not pollute the global Object.prototype.
T159Sec\_Pathogen\_Exploit\_DenialAsserts text inputs containing keywords related to pathogen design or cyber exploits are sanitized and rejected.
T160Sec\_Targeting\_DenialAsserts the interface rejects coordinates mimicking real-world sensitive military or civilian infrastructure.

9. Optional-AI Containment & Fallback (T161 - T180)

The AI component acts purely as a replaceable explanation layer. These tests prove that adversarial prompt injection, provider drift, or hallucinated logic cannot penetrate the Worker's deterministic state envelope.

Test IDTest NameObjective / Assertion
T161AI\_Envelope\_AllowlistAsserts the PHP endpoint only accepts JSON payloads mapping strictly to the 48 synthetic cells and known event classes.
T162AI\_State\_Mutation\_DenialAsserts the returned AI payload is incapable of altering the authoritative state variables of the Worker.
T163AI\_Prompt\_Injection\_ResistAsserts the PHP proxy wraps user context in a strict system prompt, ignoring "ignore previous instructions" inputs.
T164AI\_Output\_Schema\_ValidAsserts the AI response is strictly validated against a JSON schema; malformed outputs trigger the deterministic fallback.
T165AI\_Refusal\_HandlingAsserts if the LLM provider triggers a safety refusal, the UI gracefully displays standard fallback text without crashing.
T166AI\_Hallucinated\_NumbersAsserts any numeric casualties, probabilities, or coordinates hallucinated by the AI are regex-stripped before rendering.
T167AI\_Invented\_AuthorityAsserts the AI cannot claim legal, operational, targeting, or command authority in its text generation.
T168AI\_Provider\_Alias\_DriftAsserts a change in the provider's underlying model (e.g., GPT-4 to GPT-4-turbo) does not break the JSON extraction logic.
T169AI\_Latency\_TimeoutAsserts the request aborts and triggers the deterministic fallback if the provider takes longer than 3500ms to respond.
T170AI\_Token\_AccountingAsserts the PHP endpoint strictly truncates outbound context envelopes to 500 tokens to prevent cost-exhaustion attacks.
T171AI\_Deterministic\_FallbackAsserts the system seamlessly uses a pre-calculated template string if the optional AI is disabled by the user.
T172AI\_Differential\_No\_AIAsserts playing a scenario with AI disabled yields the exact same deterministic hash as playing with AI enabled.
T173AI\_Differential\_MalformedAsserts injecting corrupt JSON into the mock LLM provider response gracefully yields the fallback without altering hashes.
T174AI\_Chronology\_IsolationAsserts the AI cannot inject events into the past (Historical) or assert facts about the predictive (Fictional) future.
T175AI\_Safety\_Policy\_DriftAsserts the architecture remains stable even if the upstream provider drastically increases its false-positive refusal rate.
T176AI\_Network\_FailureAsserts pulling the ethernet cable during an AI request gracefully times out to the fallback string.
T177AI\_API\_Key\_SecrecyAsserts the LLM provider API key is stored securely in PHP environment variables and never exposed to the browser.
T178AI\_Role\_ConstraintAsserts the AI is explicitly instructed to act only as an observer/analyst, never as a participant or commander.
T179AI\_Endpoint\_AuthAsserts the PHP endpoint rejects requests that lack a valid same-origin CSRF token generated by the server.
T180AI\_JSON\_Escape\_CharsAsserts the AI output handles unicode and escape characters properly without breaking the client-side UI parser.

10. Release Evidence, Integrity & Observability (T181 - T200)

Final deployment onto IARPA.org requires cryptographic proof that the release artifact has not been tampered with. These tests ensure the build pipeline creates identical outputs and strips internal evidence from the public payload.

Test IDTest NameObjective / Assertion
T181Rel\_Reproducible\_ManifestAsserts running the build pipeline twice produces bit-for-bit identical JavaScript bundles.
T182Rel\_File\_Hashes\_ValidAsserts Subresource Integrity (SRI) hashes match the deployed files exactly.
T183Rel\_Permission\_ModesAsserts all deployed files on the static host have strict read-only permissions (644 for files, 755 for directories).
T184Rel\_Archive\_OverlapAsserts the deployment package does not contain redundant, overlapping, or conflicting historical database files.
T185Rel\_Public\_Private\_SepAsserts no private keys, internal CI scripts, or test fixtures are included in the public deployment package.
T186Rel\_Signed\_ArtifactsAsserts the final ZIP artifact is cryptographically signed by the release-assurance lead's key.
T187Rel\_Independent\_VerifyAsserts an independent auditor can use the public manifest to verify the integrity of the live IARPA.org deployment.
T188Rel\_Revocation\_CheckAsserts the application actively checks a static revocations.json file to invalidate compromised scenarios.
T189Rel\_Rollback\_EvidenceAsserts the system can be cleanly rolled back to the previous version via swapping the static directory structure.
T190Rel\_Observability\_CountersAsserts privacy-minimizing counters correctly tally UI fallback events without logging user data.
T191Rel\_Threshold\_AlertingAsserts reaching 100 worker restarts in an hour triggers a passive stability alert in the aggregate dashboard.
T192Rel\_Context\_Loss\_MetricsAsserts WebGL context loss occurrences are tallied to monitor device compatibility issues.
T193Rel\_A11y\_Error\_TelemetryAsserts screen-reader failure loops (if detectable) increment a silent generic counter for triage.
T194Rel\_Live\_Canary\_AuthAsserts the explicitly authorized live-provider canary test passes before the production deployment is flipped.
T195Rel\_DNS\_TLS\_ConfigAsserts the domain is configured with strict DNSSEC, HSTS, and TLS 1.3 only.
T196Rel\_Cache\_BustingAsserts deploying a new version correctly invalidates the browser cache via unique file hashes.
T197Rel\_No\_Fabricated\_EvidenceAsserts test reports are derived directly from CI runners, rejecting any manual/simulated success reports.
T198Rel\_Data\_AdmissionAsserts all bulk historical world-events added in the release are signed and schema-validated.
T199Rel\_Operational\_EnableAsserts the feature-flag configuration strictly enables only verified, stable features for the production environment.
T200Rel\_Artifact\_ScanAsserts a final malware/SAST scan of the built artifact returns zero critical vulnerabilities before signing.

Privacy Engineering and Threat Model (STRIDE)

Simulation Earth processes sensitive, though fictional, geopolitical data. The threat model utilizes the STRIDE methodology to systematically identify and mitigate risks associated with the deployment architecture. A critical component of this threat model is strict adherence to the Illinois Biometric Information Privacy Act (BIPA) and the Personal Information Protection Act (PIPA)29. Legal precedents surrounding XR applications clearly identify gaze tracking, spatial mapping, and headset telemetry as protected biometric identifiers29. Consequently, the simulation's WebXR implementation must explicitly refuse any hooks that request spatial mapping or eye-tracking data, isolating controller input to pure non-biometric raycasting. Because the application requires no database, it stores no personal data, entirely circumventing PIPA breach reporting liabilities30.

STRIDE Threat CategoryAsset at RiskActor & Entry PointMitigation Strategy & Residual Risk
SpoofingDeployment IntegrityMalicious server impersonating IARPA.org or a signed scenario template.Mitigation: Cryptographic signing of the final artifact and template JSONs; strict DNSSEC and TLS 1.3 configurations.
TamperingDeterministic StateUser manipulating localStorage or save files to rewrite history.Mitigation: Canonical hashing via RFC 87851. Any manipulation invalidates the hash, flagging the timeline as non-canonical.
RepudiationAction LedgersLack of non-repudiation in client-side worker logs.Mitigation: Append-only history ledger validated by the Worker. Actions cannot be undone without rewinding and permanently splitting a branch.
Information DisclosurePrivacy / BIPAXR Telemetry or AI Endpoint logs leaking personal data.Mitigation: Zero biometric data collection29. PHP endpoint uses no-store headers and retains no logs. Residual risk is confined to local machine compromises.
Denial of ServiceApplication Availability"Zip bomb" JSON saves or AI prompt exhaustion.Mitigation: Hard file-size limits (128MB), depth checks on JSON parsing (max 50 layers)2, and strict endpoint rate-limiting (5 requests/minute).
Elevation of PrivilegeSandbox EscapeXSS via scenario names or prototype pollution via templates.Mitigation: Strict CSP blocking unsafe-inline. Data sanitization mapping exclusively to 48 synthetic cells. Worker execution occurs entirely off the main thread.

AI Containment and Fuzzing-Corpus Design

The optional AI operates in a fundamentally untrusted capacity. To ensure it cannot destabilize the system, it is subjected to an exhaustive Fuzzing-Corpus and a strict Admission/Fallback Matrix.

Fuzzing-Corpus Generation Strategy

1. Saves & Templates: Generate 100,000 malformed JSON save files utilizing bit-flipping, deeply nested arrays2, duplicated UUIDs, and boundary-exceeding integers (e.g., overriding a 0.0 to 1.0 normalization to 999.9). Feed these into the headless IMPORT pipeline to ensure the Worker rejects them gracefully without heap exhaustion.

2. Worker Messages: Blast the Web Worker with out-of-order, structurally invalid, and conceptually impossible message sequences (e.g., sending INTERVENE before INIT). The Worker must remain responsive, returning standardized ERROR schemas without stalling the UI.

3. Consequence Envelopes & Provider Responses: Inject adversarial text, null bytes, and excessively large strings into the localized event text fields. Mock the LLM provider to return malformed JSON, infinite streaming loops, sudden connection drops, and inappropriate content. The PHP proxy must consistently trap these errors and return the deterministic fallback. Ensure all fuzzing strictly excludes real targeting instructions, weapon parameters, or cyber exploits, conforming to the non-negotiable safety rules.

Optional-AI Admission, Drift, and Fallback Matrix

ConditionPHP Proxy ActionUI Rendering ResultState Authority Impact
Normal OperationValidates schema, calls LLM, cleans text.Displays AI narrative overlay.None.
Provider Timeout (\>3.5s)Aborts connection, logs generic timeout.Displays pre-calculated template text.None.
Prompt Injection DetectedDrops request, increments security counter.Displays pre-calculated template text.None.
Safety Refusal / DriftCatches 400/403/Refusal string from LLM.Displays pre-calculated template text.None.
Malformed JSON OutputFails parse, drops payload entirely.Displays pre-calculated template text.None.
Hallucinated CoordinatesRegex matches numbers, strips them.Displays sanitized AI text overlay.None.

Production Acceptance and Release Evidence

Prior to deploying to IARPA.org, the release-assurance lead must verify cryptographic and functional integrity. No evidence may be simulated or fabricated. Production-Evidence Checklist:

  • \[ \] Local Automation: 200/200 tests pass in the headless CI pipeline without retry flakiness.
  • \[ \] Browser Automation: Tests pass across Playwright/Puppeteer instances for Chromium, Firefox, and WebKit37.
  • \[ \] Native Device Testing: Manual sign-off on iOS Safari, Android Chrome, and Meta Quest Browser.
  • \[ \] Assistive Technology: Manual verification of screen reader compatibility using NVDA (Windows), JAWS (Windows), VoiceOver (macOS/iOS), and TalkBack (Android).
  • \[ \] Live-Provider Canary: One explicitly authorized integration test against the production LLM endpoint confirms standard connectivity, ensuring the provider has not unexpectedly rotated authentication headers.
  • \[ \] Public-Host Evidence: Staging deployment on a segregated IARPA sub-domain passes all TLS 1.3, DNSSEC, and CSP header validations.
  • \[ \] Signed Artifacts: The final release package is hashed (SHA-256) and signed using the architect's private key, which remains strictly isolated from the build server.

Triage Plan for Regression Pressure Areas

Historical regression points in simulation platforms require strict oversight and predefined rollback criteria.

Risk AreaReproduction EvidenceSeverityOwnershipRollback & Closure Criteria
Chronology DriftTicks misaligning with projected calendar dates.CriticalCore EngineImmediate rollback. Closure requires mathematical proof of tick-to-date invariance.
Save Migrationv1.0 engine failing to parse legacy v0.8 saves.HighAssurance LeadFeature flag disable. Closure requires legacy schemas mapping flawlessly to current RFC 8785 canonical form.
Event VisualizationWebGL particles stalling during Worker heavy load.MediumUI/UXNo rollback. Closure requires decoupling the render loop entirely from Worker blocking calls.
Political-Label AlignmentLabels overlapping or misaligning on globe rotation.LowUI/UXNo rollback. Closure requires horizon culling and Z-index testing pass.
Globe Context-Event SafetyAI text suggesting real-world targets.CriticalSecurityImmediate rollback. Closure requires regex sanitization and strict prompt constraints proven via fuzzing.

Prioritized Backlog

  • SAFE-NOW: Implement canonical JSON hashing (RFC 8785\)2. Isolate Web Worker messaging with strict schemas. Set up Playwright cross-browser harness for testing27.
  • PROTOTYPE: WebXR immersive-vr integration for the 48 synthetic cells, restricted strictly to non-biometric controller raycasting to satisfy BIPA constraints26.
  • REVIEW-REQUIRED: Custom deterministic Mathematics library for Web Worker execution to completely eliminate floating-point drift across V8 and SpiderMonkey engines9.
  • REJECT: Any proposal to store user interaction logs, IP addresses, or AI prompt histories on the PHP server. Any proposal to utilize standard Math.random()15. Any proposal to provide the AI component with exact geographical coordinates or targeting parameters.

This architecture establishes a rigorously verified, fail-closed environment for Simulation Earth. By strictly isolating the Web Worker as the sole deterministic authority and relegating the UI and optional AI to pure read-only projections, the system guarantees that factual records remain unpolluted and that simulations are mathematically reproducible across all platforms. The integration of canonical hashing, stringent privacy-by-design principles, and zero-trust AI containment ensures that the simulation operates securely, without risk of state corruption, biometric data leakage, or narrative hallucination altering objective data.

Works cited

1. RFC 8785 \- JSON Canonicalization Scheme (JCS) \- IETF Datatracker, https://datatracker.ietf.org/doc/rfc8785/

2. json-canon: A Strict RFC 8785 Implementation in Go for Deterministic JSON, https://dev.to/lenny321/json-canon-a-strict-rfc-8785-implementation-in-go-for-deterministic-json-3mfg

3. The structured clone algorithm \- Web APIs | MDN, https://developer.mozilla.org/en-US/docs/Web/API/Web\_Workers\_API/Structured\_clone\_algorithm

4. Deep-copying in JavaScript using structuredClone | Articles \- web.dev, https://web.dev/articles/structured-clone

5. Transferable objects \- Web APIs | MDN, https://developer.mozilla.org/en-US/docs/Web/API/Web\_Workers\_API/Transferable\_objects

6. Transferable objects \- Lightning fast | Blog \- Chrome for Developers, https://developer.chrome.com/blog/transferable-objects-lightning-fast

7. Surviving the Structured Clone algorithm | by Andrea Giammarchi \- Medium, https://webreflection.medium.com/surviving-the-structured-clone-algorithm-130608b69f47

8. Working with Smart Filters \- MultiChain, https://www.multichain.com/developers/smart-filters/

9. multiplayer-guide.md \- NewKrok/nape-js \- GitHub, https://github.com/NewKrok/nape-js/blob/master/docs/guides/multiplayer-guide.md

10. Show HN: A 2D Physics Simulator in JavaScript \- Hacker News, https://news.ycombinator.com/item?id=14865184

11. Determinism \- Rapier.rs, https://rapier.rs/docs/user\_guides/templates\_injected/determinism/

12. Floating point determinism in Unity: Intel vs AMD, https://discussions.unity.com/t/floating-point-determinism-in-unity-intel-vs-amd/813566

13. Electronics, Volume 15, Issue 5 (March-1 2026\) – 232 articles \- MDPI, https://www.mdpi.com/2079-9292/15/5

14. Discovering JavaScript's Hidden Secrets: Understanding Numerical Algorithms., https://dev.to/davidevlops/discovering-javascripts-hidden-secrets-understanding-numerical-algorithms-40a9

15. Webots documentation: Procedural PROTO Nodes, https://www.cyberbotics.com/doc/reference/javascript-procedural-proto?version=omichel:master

16. Algorithms — list of Rust libraries/crates // Lib.rs, https://lib.rs/algorithms

17. Multiplayer Game Programming: Architecting Networked Games, http://sspczundal.com/assets/upload/ck-images/Multiplayer%20Game%20Programming%20Architecting%20Networked%20Games.pdf

18. Insights from Game AI Experts | PDF | Acceleration | Artificial Intelligence \- Scribd, https://www.scribd.com/document/865519580/Game-AI-Uncovered-Volume-Two-Paul-Roberts-Z-Library

19. draft-rundgren-json-canonicalization-scheme-17 \- IETF Datatracker, https://datatracker.ietf.org/doc/draft-rundgren-json-canonicalization-scheme/17/

20. The JSON Canonicalisation Scheme (RFC 8785\) in action and how to secure JSON objects with HMAC \- Connect2id, https://connect2id.com/blog/how-to-secure-json-objects-with-hmac

21. Jackson Tips: sorting JSON using JsonNode \- Medium, https://cowtowncoder.medium.com/jackson-tips-sorting-json-using-jsonnode-ce4476e37aee

22. RFC 8785: JSON Canonicalisation Scheme · nlohmann json · Discussion \#2612 \- GitHub, https://github.com/nlohmann/json/discussions/2612

23. Making browser games more secure with Elm, Part 2 \- Show and Tell, https://discourse.elm-lang.org/t/making-browser-games-more-secure-with-elm-part-2/7764

24. Testing the Invisible: Why Traditional E2E Fails for WebGL | CodeWithMMAK, https://www.codewithmmak.com/blog/testing-the-invisible-why-traditional-e2e-fails-for-webgl

25. Improve handling of webgl context loss · Issue \#120393 · microsoft/vscode \- GitHub, https://github.com/microsoft/vscode/issues/120393

26. WebXR Browser Support in 2026: What Works, What Breaks \- TestMu AI, https://www.testmuai.com/learning-hub/webxr-compatible-browsers/

27. JavaScript and Web Development InfoQ Trends Report 2020, https://www.infoq.com/articles/javascript-web-development-trends-2020/

28. TestMu AI vs Steel.dev: Browser Infrastructure for AI Agents Compared (2026), https://www.testmuai.com/blog/testmuai-vs-steeldev/

29. Extended Reality, Body-Based Data, and Biometric Privacy Regulations: Lessons for Policymakers by Jameson Spivack1 \- AWS, https://fsi9-prod.s3.us-west-1.amazonaws.com/s3fs-public/2024-10/Spivack%20-%20individual%20monograph%20(1).pdf

30. Illinois Privacy Law Compliance: What You Need to Know \- Varonis, https://www.varonis.com/blog/illinois-privacy-law

31. US Illinois Personal Information Protection Act (PIPA) \- SmartSuite, https://www.smartsuite.com/framework/illinois-personal-information-protection-act-815-ilcs-530

32. Personal Information Protection Act (PIPA) \- SSN \- University of Illinois System, https://www.ssn.uillinois.edu/personal\_information\_protection\_act\_pipa

33. What is the Illinois Data Breach Reporting Law? \- Compliancy Group, https://compliancy-group.com/illinois-data-breach-reporting-law/

34. Augmented Reality in E-Commerce and Virtual Shopping Experiences \- IJFMR, https://www.ijfmr.com/papers/2025/4/54346.pdf

35. EXISTING LAW AND EXTENDED REALITY \- AWS, https://fsi9-prod.s3.us-west-1.amazonaws.com/s3fs-public/2024-10/Existing%20Law%20and%20Extended%20Reality%20Volume.pdf

36. BUSINESS TRANSACTIONS (815 ILCS 530/) Personal Information Protection Act. \- Illinois Compiled Statutes, https://www.ilga.gov/Legislation/ILCS/Articles?ActID=2702\&ChapterID=67

37. Npms.io, https://npms.io/search?q=firefox-headless

38. Firefox \- InfoQ, https://www.infoq.com/firefox/

39. rfc8785 \- Hex.pm, https://hex.pm/packages/rfc8785