Record3 min read0 sections

Early cooperative beta implementation decisions

docs/BETA_DECISIONS.mdSource updated 2026-10-24
Markdown
On this page 0 sections

Date: October 24, 2026. Engine 0.1.0. World darkwind, release lantern-house.1.

These decisions constrain the current test build without replacing the full architecture.

Area Implemented contract Follow-up gate
Coordinates Meters, Y up, initial forward −Z; radians; separate local place frames Imported asset orientation fixtures
Content Versioned typed JSON-compatible world data; authored stable interaction IDs; original primitive kit Compiler IR, prefab graphs, immutable asset manifests, GLB/animation
Fingerprint SHA-256 over engine version, compiler version and world serialization; numeric authoring precision 0.000001 Canonical compiler output and migration corpus
Core Generation-checked handles, validated components, deferred structural barriers, bounded independent change readers Dependency scheduler and broader schema lifecycle
Time/physics 30 Hz fixed simulation in a worker, max five catch-up ticks; Rapier 0.21.0; deterministic replay tested in the pinned Node runtime Cross-platform numerical contract, slopes/platforms, complete controller snapshots
Rendering Owned TypeScript/WGSL WebGPU main-thread renderer; four primitive batches; shadow, HDR forward PBR and postprocessing; bounded single GPU submission in flight OffscreenCanvas worker capability probe, culling, resource graph, asset replacement and device-loss recovery
Authority One elected browser owns shared interactions for the whole small room; local player motion is kinematic Place ownership domains, dynamic shared bodies, trusted host
Coordinator Signed 24-hour admission, exact origin/release/content negotiation, monotonic uint64 epoch/revision strings; six-second host lease Hysteresis/eligibility policy and real shaped-network matrix
Recovery Baseline on reconnect, host re-election, pending-intent resubmission, receipt cache plus durable per-session high-water mark Binary deltas/cursors, compaction fault corpus, recovery-time measurements
Durability Bounded full JSON checkpoint, synchronous fsync + atomic rename + directory fsync before ACK; storage failure closes the room PostgreSQL journal/outbox and crash injection at every commit boundary
Inventory Unique room item owned by a traveler session; 30-second reconnect grace then return to source Accounts, transferable inventory and economy transactions
Travel Prepare destination collision, replace place atomically; keep the same room socket Streaming/preload and place-scoped interest filtering
Limits Eight admitted players, sixteen connections, 64 pending intents, 4096 receipts, 128 admission sessions, 64 KiB ingress packet Measured capacity; current browser evidence is two clients
Trust Authored code and cooperative players are trusted; bounded protocol validation is not authoritative anti-cheat Sandbox and trusted simulation service before public/adversarial use

Full precision runtime geometry remains unchanged by fingerprint serialization; micro-unit rounding prevents platform-specific transcendental math from breaking release negotiation. This is not a claim of bitwise cross-browser physics determinism.

A main-thread renderer is the current explicit placement choice. The simulation worker and room heartbeat remain separate from UI focus. A suspended host loses its lease; an acknowledged successor revision cannot be replaced by a stale epoch. A GPU failure offers a clear reload path rather than claiming automatic device reconstruction.

End of Beta decisions