wip(assembler): round S5 -- streaming gates + trace; coarse-first order kept opt-in (no win)

Walkable/enclosed/refined gates defined; JSONL trace joins request, worker start,
build/apply and discards. Coarse-first + dynamic near reserve behind
voxel.StreamingCoarseFirst / voxel.StreamingDynamicNearReserve (default 0 =
S4 order): matched runs showed no walkability or full-view win and slower
LOD0/1 refinement. Instruments settled: 3.1 s standalone reproduced (16.7 s was
another generation route); black early captures were clear-only frames.
Hashes equal S4; Core-off, M2, SurfaceWorld/FloatingIslands BuildHost pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-19 04:42:41 +02:00
1 parent 9d3c50ca95
commit c0596c5f24
32 files changed
+1049 -65

No files matched your search

+41
View File
@@ -1435,6 +1435,47 @@ LOD7/8 shell repair is skipped for certified SurfaceWorld tiles, the renderer do
backfaces, and the strips predate S4 in S2/S3. Refining all steep faces would multiply far mesh work;
S4 leaves that cost/quality tradeoff open.
### 8.26 Streaming readiness gates and admission order — World Assembler S5 / M3 Round 9
Do not use “every tile in the current desired clipmap is resident” as a moving-player readiness
gate: the center and desired keys change continuously, so that condition can remain false even when
the player has safe ground and a closed view. Report three independent gates from the first actor
tick: (1) **walkable now** — the support tile and collision-required level-0 tiles in the 3×3 XY
neighborhood have installed collision (or are explicitly collision-not-required); (2) **enclosed
now** — the active view has ground, horizon and the family-appropriate ceiling, with no exposed
coverage hole or unexpected sky; (3) **refined soon** — each target LOD resolves within its stated
time or travel distance after entering range. While moving, report the largest frame/time gap in
enclosure and maximum distance that unresolved work trails the pawn. FloatingIslands has open sky by
design, so its enclosure check excludes a planar roof.
The shared `AVoxelWorld::UpdateChunksAroundPosition` scheduler serves both the Core snapshot path and
Core-off legacy path. It admits the collision-critical 3×3 ring first. The measured S5 order remains
opt-in because it did not beat the legacy order on the gates and the viewer could not confirm screen
presentation: set `voxel.StreamingCoarseFirst=1` to admit coarse desired levels from the maximum LOD
down to `max(2, FullResClipLevels)`, favoring tiles ahead of travel and then nearer tiles within each
LOD; LOD0/1 refinement follows. Default `0` preserves the S4 LOD0-to-LOD8 order.
`voxel.StreamingDynamicNearReserve=1` opts into keeping the authored near-task reserve while the pawn
moves or until the stationary walkable ring is ready; default `0` preserves the previous task budget.
The standalone queue defaults to legacy order; `--coarse-first-stream-order` opts into the S5 tiers
and `--legacy-stream-order` explicitly selects the legacy order.
This order changes only which key starts first. Tile field arithmetic, hashes, `Epoch`, cancellation
checks, `ModsLock`, the four `EQueueMode::Mpsc` result queues and `EndPlay` draining remain unchanged.
The clipmap remains a non-overlapping partition, and `TransitionHold` still performs load-before-
unload reconciliation. No duplicate coarse placeholder is admitted: the current transition rules
do not make a temporary overlapping parent safe at initial spawn without a separate all-descendants
hide/swap gate. A coarse tile completion count alone is not proof of enclosure; verify the actual
view and family-specific ground/ceiling coverage.
`VoxelStartupTrace` records request and worker-start ordinals, LOD, priority, epoch, resident-at-
request, queue wait, build time, result wait, apply time and discarded/cancelled result reasons.
Use `-voxel.StartupTraceUntilEndPlay=1` for a moving trace. Round 9 found similar cold walkable-gate
times, no demonstrated enclosure win, and fewer cancellations at 60 m/s, while that route's center
deltas were invalid. DXGI marked the capture window occluded, so its images are back-buffer evidence
rather than proof of screen presentation. Keep S5 opt-in until an owner-visible run measures the
three gates and closes that gap. Full results and limits are in
`Standalone/Research/WorldAssemblerM3/Round9/REPORT.md`.
## 9. Multiplayer model (listen-server first, dedicated-friendly)
> **Status: transport is DESIGN ONLY — nothing is networked in-tree yet** (no `Replicated`/`HasAuthority`/RPCs; a