From 4bcc35c1a05e425a27840247963e575070dc1a6c Mon Sep 17 00:00:00 2001 From: DCCONSTRUCTIONS Date: Wed, 26 Aug 2026 15:21:22 +0300 Subject: [PATCH] docs(simulation): record collision publication contract --- docs/20_SIMULATION_WORLD_SURFACE_BRIEF.md | 28 +++++++++++++++++------ 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/docs/20_SIMULATION_WORLD_SURFACE_BRIEF.md b/docs/20_SIMULATION_WORLD_SURFACE_BRIEF.md index 8437655..03dacbc 100644 --- a/docs/20_SIMULATION_WORLD_SURFACE_BRIEF.md +++ b/docs/20_SIMULATION_WORLD_SURFACE_BRIEF.md @@ -57,7 +57,8 @@ Mission Core backend DC Gaussian Pipeline ├─ TUS bundle or archive admission ├─ secure ZIP/RAR/7z normalization - └─ SplatTransform build on Worker 006 + ├─ native Vulkan SplatTransform build on Worker 006 + └─ bounded collision simplification + mandatory Draco publication ``` The browser never receives the Worker token. Mission Core does not embed archive-format behavior @@ -70,10 +71,22 @@ Mission Core pins the direct `playcanvas` package. `PlayCanvasRuntime` owns one camera controls, GSplat asset lifecycle and later physical/debug entities. React owns no per-frame entity state. A new world is data and does not require a new frontend build. -The first Worker 006 provider is CPU-only and therefore does not advertise collision outputs. The -UI disables collision/combined modes and states this explicitly; it does not synthesize a proxy. -The manifest already keeps visual and collision URLs and their independent world transforms so the -GPU collision build can be admitted without changing the project surface. +Worker 006 runs the portable API in its own read-only Docker composition and delegates only the +SplatTransform GPU command through a confined filesystem spool to the pinned native Vulkan runtime +on the RTX 4090. It does not install into or share the Python, CUDA, Triton or computer-vision +environments on the host. + +Collision publication is deliberately two-stage. SplatTransform generates smooth collision and +SVO query data at a scene-type voxel size (`0.2 m` outdoors, `0.1 m` indoors/objects). The isolated +pipeline container then bounds the debug/physics mesh to a default 250,000-triangle target and +always writes `KHR_draco_mesh_compression` before the artifact digest is sealed. Simplification +controls decoded geometry cost; Draco controls transfer and stored bytes and is never treated as a +replacement for a physics mesh budget. The browser loads the result through a pinned local Draco +WASM decoder with no external decoder request. + +Visual and collision layers retain independent X/Y/Z correction settings, while PlayCanvas world, +camera, navigation and future physics stay in the canonical Y-up coordinate system. Quality, both +layer transforms and camera-axis inversion are persisted atomically in each project's metadata. Primary implementation references: @@ -92,8 +105,9 @@ Primary implementation references: - encrypted, linked, traversing, duplicate and over-limit archive entries fail closed; - project status is durable and reflects provider state without fabricated percentages; - ready artifacts are imported digest-bound and served from Mission Core same-origin URLs; +- every published collision GLB is simplified to the configured budget and requires Draco; - edit changes project metadata; delete removes both the Mission Core project and terminal provider job; - a ready project mounts direct PlayCanvas Engine and loads Streamed SOG with preview fallback; -- visual, collision and combined remain distinct runtime modes even when collision is not yet - available on the CPU provider. +- visual, collision and combined remain distinct runtime modes, and collision is loaded lazily; +- viewer quality, layer-axis correction and camera inversion survive navigation and reload.