Files
VoxelForge/Standalone/Research/OwnerShapeWorld/speed_round/REPORT.md
T
Fr0zkaandClaude Opus 5.5 a3cb26b5c8 standalone: speed round 2 -- far biome colour grid (payload -365 ms), whole view 1.90 s @8w full payload
- Per-vertex biome lookup was the payload cost (~365 ms); far tiles now take the biome palette from a
  per-tile grid. Same channels (palette, slope, border blend, UV) and ceiling/ground sections.
- Opt-in --max-clip-level=8: 6,498 -> 2,226 tiles, stream 0.876 -> 0.428 s, 1.451 s process wall.
  Kept opt-in: six fixed views cannot prove every distant thin stratum survives.
- W1/W8 hashes equal across 11 outputs; routes 5642/5642; five captures pixel-identical, passage
  382 px differ (max delta 16).
- Rejected with measurements: LOD6 empty-block proof (-21% samples, no wall gain), far supertiles
  (no complete groups exist).
Remaining long pole: shape compile 0.854 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
2026-10-04 15:21:19 +02:00

31 KiB
Raw Blame History

Shape world speed round — final half-load verification

Round 3 update — measured payload path and current result

This update supersedes the earlier headline timings, hash values, and capture references below. The sections that follow retain the previous-round context. With the exported LOD6 limit, the latest cold full-payload W8 pair averaged 1.917 s. The best tested opt-in LOD8 far-shell pair averaged 1.451 s, still 0.451 s above the under-one-second goal. The LOD8 option is --max-clip-level=8; it retains LOD0–5 and distributes the same render distance over LOD6–8. Cache hits were zero in every run.

Exported LOD6 cold W8 run Process wall Shape stage Full-detail stream Full clipmap stream LOD6 complete Cache hits
A 1.915 s 0.874 s 0.216 s 0.870 s 0.869 s 0
B 1.919 s 0.839 s 0.217 s 0.881 s 0.867 s 0
Mean 1.917 s 0.856 s 0.217 s 0.876 s 0.868 s 0

Both runs generated the same full workload: 6,498 clipmap tiles, including 4,770 LOD6 tiles; 32.717 M LOD6 density samples; 1,834,816 LOD6 vertices; 235.49 MiB full-payload allocation. The process wall includes startup and world setup. Collision cooking and GPU upload are outside this standalone measurement. The earlier 1.823 s pair on the same source is in A and B; the latest repeat logs are A and B. The change still reduces the original 2.155 s process-wall mean, but the target remains unmet by about 0.9 s on the latest pair.

Opt-in LOD8 far-shell candidate

Cold W8 run with --max-clip-level=8 Process wall Shape stage Full-detail stream Full clipmap stream LOD8 complete Cache hits
A 1.442 s 0.853 s 0.250 s 0.429 s 0.426 s 0
B 1.459 s 0.854 s 0.223 s 0.426 s 0.423 s 0
Mean 1.451 s 0.854 s 0.237 s 0.428 s 0.425 s 0

This candidate generated 2,226 tiles instead of 6,498: 96 each at LOD6 and LOD7, plus 306 at LOD8. LOD6–8 together used 3.415 M density samples versus 32.717 M for the exported LOD6 shell. Full-payload allocation fell from 235.49 MiB to 92.81 MiB. Full UVs, colors, biome channels, and ceiling/ground groups remained enabled. Against the latest exported-LOD6 pair, process wall improved by 0.466 s and clipmap stream wall by 0.449 s. The process still misses the one-second target.

Payload profile and retained change

Controlled skip runs isolate the payload costs. On the pre-optimization full-payload profile, skipping colors lowered clipmap stream time from 1.119 s to 0.754 s (about 365 ms and 2.93 worker-seconds saved). This is the dominant measured payload cost: the mesher calls GetBiomeMaterialAt for each vertex, and that call resolves the biome field. Skipping UVs alone measured 1.132 s versus 1.119 s for full payload, so UV emission showed no measurable wall-time cost. Skipping material groups measured 0.943 s against a 1.117 s full run (about 174 ms); the path performs per-column ceiling/ground classification and retains the actual two sections in the default output. These are diagnostic ablations only; the final path keeps all channels and groups. The measurements are in full payload, UV skip, color skip, and group skip.

The retained change is in the standalone mesher. It changes only far LOD biome colors at Step >= 64. For each far tile and vertical chunk it evaluates the biome field at the four tile corners. Each vertex takes the nearest corner’s dominant/neighbour palette pair; the border-blend value is bilinearly interpolated when all four corners share that pair. Adjacent tiles use the same shared corner coordinates. The slope channel remains derived from the exact vertex normal, UVs remain exact, and ground/ceiling classification and section ordering are unchanged. This keeps the same payload meaning while reducing repeated far-field biome evaluations. Full clipmap stream time fell from the previous 1.113 s mean to 0.857 s in the earlier clean pair and 0.876 s in the latest repeat; LOD6 completed in 0.853 s and 0.868 s respectively.

The payload hash changes at LOD6 and whole-clipmap level because those far color values are coarsened. Density, geometry, and oriented-topology hashes remain unchanged. A smaller 2×Step grid that did per-vertex map finds added about 68 ms and was rejected.

Exported LOD6 1-worker / 8-worker hash matrix

The rebuilt full-payload executable produced identical hashes at 1 and 8 workers for every output below. Both runs had zero cache hits and all 5,642/5,642 route samples open. The latest exact-binary comparison is W1 versus W8; nine aggregate outputs had zero hash-field mismatches.

Output Density hash Geometry hash Full payload hash Oriented topology hash
Full detail 0xa071e48a996e2828 0x6f270c621d39302f 0x33c7353b2eda16a7 0x1b39c8cc2ffed4b3
Whole clipmap 0x95c3f446cce0eaea 0x5036df929534d3ef 0x8803105199197791 0xb0eec830b29044e1
LOD0 0xc31fc55744c45928 0x7a70def3eb3e11ad 0x5780ec294cd873c5 0xa3126405acc20185
LOD1 0xd74d6563f970d9f9 0xf47463988641b397 0x7740ea61a08d30c7 0xb8a7cace0866efd3
LOD2 0x44f878e3420376a2 0x17de625b9ceda2a9 0x1fe6c3de98251541 0x1c4ab868773fe313
LOD3 0x80713f3f7e379bf9 0xec609008c8248eeb 0x8f9c8b3d627933b4 0x27361f6a30c71959
LOD4 0x726efa9eb9933226 0xdcb8c20437152e74 0xd01d47eeed04fd3a 0x94972f103fa9bcac
LOD5 0x4345a3990bb8b68a 0x8b7d9b5c1a0872a4 0x396b044b5a774097 0x0c5fb1df85d0d38c
LOD6 0xc78f04f08fc84094 0x2eab9309b9493d47 0x110deb41d78b153f 0x4f6059255abed405

The exported-LOD6 captures use the same six fixed cameras as the previous set. Every view is pixel-identical to its reference (1,024,000 pixels, zero changed pixels/channels, maximum channel delta 0): chamber before / after, tunnel before / after, passage before / after, far before / after, floor close-up before / after, and tunnel bend before / after. Shape audits remain green: grid-stair metrics are 0.003 / 0.028 / 0.205 against the 0.400 threshold; detail, join, and tunnel-radius audits pass; the whole-view shard audit reports zero thin sheets and zero isolated small components (four boundary-touching components). Logs: chamber, tunnel, passage, and whole-view shard audit.

LOD6 proof experiments and remaining opportunity

  • A conservative whole-tile uniformity proof classified zero of 4,770 LOD6 tiles as uniform and raised stream wall time to 1.169–1.195 s. Rejected; logs: A, B.
  • An 8-cell sub-block proof omitted 21% of LOD6 density samples (32.717 M to 25.830 M), but its classification overhead canceled the savings: no-hash stream time was effectively unchanged. It preserved geometry and payload hashes across workers, but changed the diagnostic density digest because omitted samples use sentinels. The sparse path was removed; the final density hashes above are from the full sampling path. Logs: build, timing A, timing B, hash W1, and hash W8.
  • A later fast-classifier plus sparse-mask prototype used coarse 1,024-voxel occupancy bins and 8-cell proof blocks. Per-tile diagnostics reported 3,267–3,971 samples versus 6,859 in the full grid, but the aggregate LOD6 counter still reported 32.717 M; the two counters disagreed, so the run did not establish a whole-view sample reduction. Three no-hash stream times were 0.872 s, 0.929 s, and 0.892 s, with no repeatable gain over the retained build. It was removed without a hash or capture acceptance. Logs: first build failure, corrected build, timing, diagnostic run, and sample-count diagnostic.
  • A uniform-block proof at Step=256 on the opt-in LOD8 shell left its 2.099 M density-sample count unchanged and measured 0.429 s stream wall versus 0.426–0.429 s without proof. It was removed. Logs: build, run.
  • A per-vertex color-cache refinement removed map-entry copies and palette-pair checks, but its two W8 clipmap samples (0.866 s and 0.860 s) were within timing variation. It was reverted; logs: A and B.
  • Existing LOD6 tiles had no complete 2x2x2 or 4x4x4 groups, so direct coalescing was rejected; see diagnostic run and build. A separate --max-clip-level=8 override asks the desired-set builder for actual LOD7/8 shells and is measured below. One earlier run used unsupported --stream-max-lod=8; it exited successfully but silently retained the LOD6 filter.
  • Explicit surfaces emitted from known far shapes remain open. The opt-in LOD8 candidate reduces the far sampling cost, but the fixed captures do not prove that every remote thin stratum survives. Its LOD8 shell completes in about 0.425 s; the serial shape stage now dominates at about 0.854 s. Reaching under one second requires another roughly 0.45 s reduction or overlap in that shape stage.

The opt-in LOD8 candidate is in StandaloneViewer.cpp. After the final clean build, its W1/W8 hash runs matched all 11 aggregate outputs with zero mismatches; the full-clipmap hashes are density 0x2809003356cf8162, geometry 0x0123c52b74ad7e7c, payload 0xcdef10ebb6b24321, topology 0x1fa3bf7db18a2c8d. Cache hits were zero and the route audit stayed at 5,642/5,642. Logs: W1, W8.

All six fixed captures were rerun with the override. Five match the LOD6 images pixel-for-pixel; passage changes 382/1,024,000 pixels, with maximum channel delta 16 and mean absolute channel delta 0.003917. The change is not visible in side-by-side review. Candidate images: chamber, tunnel, passage, far view, floor close-up, tunnel bend. Numeric comparison: diff log, using compare_capture_pair.py. The six fixed views and existing shape audits pass; the screenshots do not prove every remote thin stratum across the whole world.

Round 3 logs, limits, and failed invocations

Latest exported-LOD6 timing logs: run A, run B. Latest opt-in LOD8 timings: A, B, with runner A and runner B. Final opt-in LOD8 hashes: W1 and W8. The clean build for these outputs is round3_maxlevel8_final_build.log. All workload processes ran BelowNormal with affinity 0xFF00; builds used /MP8. The build succeeded. Its existing setup emitted the French vswhere.exe diagnostic and six C4838 narrowing warnings in VoxelStrateManager.cpp.

The first final-build wrapper could not open its relative log path after Build.ps1 changed into Standalone\Build; it produced no usable build log. I reran the build with an absolute log path and verified exit code 0. An initial C# System.Drawing.Bitmap image-diff helper also failed to resolve its assembly; the capture comparison was completed with Pillow and NumPy. The unsupported --stream-max-lod=8 run completed with exit code 0 but did not exercise the supertile path; the corrected --stream-max-level=8 run confirmed zero groups and exited 0. The first classifier build failed because its new std::unordered_set member lacked the header; the corrected build succeeded, and the prototype was later removed. One classifier benchmark launch was rejected with Win32 267 before a child process started because its working directory was invalid; the corrected launch exited 0. The first capture launched with --max-clip-level=8 exited 0 but the viewer reload reverted to level 6 and generated 6,498 tiles; I fixed runtime override persistence and reran the six captures at 2,226 tiles. The Step=256 proof build succeeded but produced no sample reduction and was reverted. A final build-wrapper setup line attempted to assign PowerShell's reserved $Host variable and emitted assignment errors; Build.ps1 then set its own BelowNormal/0xFF00 limits and the build completed successfully. No final benchmark process failed. No viewer belonging to another process was closed, and no commit, push, or stash was made.

Previous-round result (superseded above)

The whole-view target remains unmet. The cold, uncached, full-payload view generated all 6,498 tiles through LOD6 in 2.135 s and 2.174 s at 8 workers. The mean process-start-to-ready time is 2.155 s. Shape compilation plus full-payload meshing averaged 1.945 s, so the generation path is about 0.945 s over the one-second mark; the process-start headline is 1.155 s over. Hashing was disabled for those timing runs. Collision cooking and the plugin’s GPU upload are not included.

The final source and measurements are in StandaloneShapeWorld.h, StreamingWorld.h, StandaloneViewer.cpp, Build.ps1, and this report. The six current captures are linked below.

Machine rule and headline timings

All builds and benchmark processes in this continuation ran at BelowNormal priority with affinity 0xFF00. Builds use /MP8. The final headline uses 8 workers, full UV/color/group payload, no mesh cache, and two no-hash cold runs. No current 16-worker timing was run after the reset.

Cold whole-view run Process wall Shape stage Full clipmap stream Shape + stream Cache hits
A, 8 workers 2.174 s 0.828 s 1.116 s 1.944 s 0
B, 8 workers 2.135 s 0.836 s 1.110 s 1.946 s 0
Mean 2.155 s 0.832 s 1.113 s 1.945 s 0

The process runner includes executable start and world setup. The stream stage holds the 8-worker pool at 98.9–99.4% busy; LOD6 is the long pole. The full payload allocates 235.49 MiB across the view; the standalone viewer’s geometry copy is 115.67 MiB. The 27-tile LOD0 player neighborhood is CPU-mesh-ready 23 ms after streaming starts. Collision readiness remains unmeasured.

Stage comparison and per-LOD profile

The first column is the earlier speed-round W8 baseline from the stale report. That run used the former full-machine policy and the older viewer payload. The current column uses the restored half-load policy and emits all mesh arrays. These values show where the work moved, but are not an apples-to-apples speedup claim.

Whole-view stage Earlier W8 baseline Current W8 mean Current run range
Local shapes and line bins 57.6 ms 53.8 ms 53.773–53.785 ms
Rock intervals, packed signs, candidate axes and mask merge 132.6 ms 138.3 ms 138.111–138.506 ms
Surface detail band 539.0 ms 589.8 ms 589.734–589.833 ms
Far-parent shapes and spatial bins 194.7 ms 41.9 ms 38.438–45.407 ms
Shape build 932.3 ms 831.7 ms 827.765–835.705 ms
All-LOD full-payload mesh generation 1,064 ms 1,113 ms 1,110–1,116 ms
Shape build + mesh generation 1.996 s 1.945 s 1.944–1.946 s

Per-LOD completion is cumulative from stream start. Each tile count and allocation figure is from the full-payload run.

LOD Tiles Density samples Complete Full payload allocation Viewer geometry copy
0 512 21.952 M 0.137 s 33.60 MiB 16.30 MiB
1 448 19.208 M 0.214 s 20.37 MiB 10.07 MiB
2 320 2.195 M 0.231 s 6.04 MiB 2.96 MiB
3 208 1.427 M 0.244 s 4.23 MiB 2.09 MiB
4 144 0.988 M 0.251 s 2.99 MiB 1.49 MiB
5 96 0.658 M 0.258 s 3.17 MiB 1.57 MiB
6 4,770 32.717 M 1.109 s 165.09 MiB 81.18 MiB

LOD6 emits 1,834,816 vertices and 10,272,252 indices. It accounts for 32.717 million density samples and most of the stream time. The detailed timings are in run A and run B; their process records are A and B.

Required mesh payload and skip verification

I inspected the actual plugin source read-only. FVoxelMeshData contains one UV and one FColor per vertex, including dominant/neighbor biome palette, slope, and border blend channels. BuildTileStreamSet enables TexCoords, Colors, and PolyGroups and copies those values into the game stream. It assigns group 0 to ground and group 1 to sky-cap ceiling; the ceiling uses material slot 1 and does not cast shadows. The mesher’s UV/color emission and cap ordering show why the viewer-only skips cannot be used for game output.

The current default is full payload. In the standalone copy, UV storage is FVector2f, matching the float UV sent to the game stream; this halves the UV staging width from FVector2D and saves about 20.6 MB over 2.58 million vertices. No stable speed gain appeared. FColor is already four-byte packed. The dense per-tile ceiling-column cache preserved hashes but did not improve stream time (1.099 s versus 1.098 s), so it was reverted. The final source retains the original per-column memo and emits ceiling/ground groups. I did not derive UVs or biome colors in a new shader: the game material path currently consumes TexCoord0 and the packed vertex-color channels, and plugin material/source changes were read-only in this task.

The three diagnostic skip variants were independently hash-checked at W8 over full detail, whole clipmap, and LOD0–6. Density hashes and a canonical oriented-triangle topology hash match full output in all nine outputs. The topology digest uses vertex position/normal identities, so it is insensitive to vertex IDs and triangle ordering.

Diagnostic mode Density equal Serialized mesh hash equal Oriented topology equal Full payload hash equal
Skip UV and colors 9/9 9/9 9/9 0/9
Skip material groups 9/9 6/9 9/9 6/9
Skip both 9/9 6/9 9/9 0/9

The group skip reorders index output in three results; the geometric triangles and winding still match. The payload hash changes when UV/color arrays are omitted. These are diagnostic results only: dropping either data path changes the game’s stream contract. Combined skips took 1.533 s and 1.536 s process wall in no-hash runs, about 0.620 s below the full-payload mean, but this is not a valid game-generation result. Hash logs: UV/colors, groups, and both.

Far-bin reserve A/B

The final far-bin reserve is 24 buckets per primitive; the axis-bin path retains 96. I rebuilt the same source with the old 2× far-bin estimate, then restored and rebuilt the final 24× source. All nine full-payload outputs matched exactly across density, mesh, payload, and topology hashes between the two reserve settings. The final 1-worker and 8-worker matrix also matches exactly.

Across two no-hash samples, the 2× build spent about 47.9 ms building far spatial bins; the 24× build averaged about 41.9 ms. Full stream time was effectively unchanged (1.1135 s versus 1.113 s), within run variation. I keep the capacity hint as a small build-stage improvement, not a whole-view speed claim. The old-estimate build and runs are logged in build, hash, timing A, and timing B.

Previous-round determinism matrix (superseded above)

The final executable was rebuilt after restoring the 24× reserve. The 1-worker and 8-worker cold hash runs had zero cache hits and all 5,642/5,642 route samples open. Each of the nine output hashes below matched exactly at both worker counts, including the full payload hash.

Output Density hash Geometry mesh hash Full payload hash Oriented topology hash
Full detail 0xa071e48a996e2828 0x6f270c621d39302f 0x33c7353b2eda16a7 0x1b39c8cc2ffed4b3
Whole clipmap 0x95c3f446cce0eaea 0x5036df929534d3ef 0xb9ed5e975705753b 0xb0eec830b29044e1
LOD0 0xc31fc55744c45928 0x7a70def3eb3e11ad 0x5780ec294cd873c5 0xa3126405acc20185
LOD1 0xd74d6563f970d9f9 0xf47463988641b397 0x7740ea61a08d30c7 0xb8a7cace0866efd3
LOD2 0x44f878e3420376a2 0x17de625b9ceda2a9 0x1fe6c3de98251541 0x1c4ab868773fe313
LOD3 0x80713f3f7e379bf9 0xec609008c8248eeb 0x8f9c8b3d627933b4 0x27361f6a30c71959
LOD4 0x726efa9eb9933226 0xdcb8c20437152e74 0xd01d47eeed04fd3a 0x94972f103fa9bcac
LOD5 0x4345a3990bb8b68a 0x8b7d9b5c1a0872a4 0x396b044b5a774097 0x0c5fb1df85d0d38c
LOD6 0xc78f04f08fc84094 0x2eab9309b9493d47 0xa93aedb363c18aa5 0x4f6059255abed405

These checks establish repeatability on this AVX2 host across 1 and 8 workers. Cross-machine identity was not tested.

What helped and what was rejected

Retained work from the measured speed round:

  • Parallel candidate-mask merging reduced the interval/sign stage by about 14 ms in the predecessor’s 16-worker profile while preserving hashes.
  • A line-local value-noise cache reuses relief noise corners along Z; its 16-worker detail-band sample fell from about 375 ms to 298 ms with exact hashes.
  • A lattice-specific mesher entry point removed repeated coordinate rounding. The predecessor’s 16-worker full-detail stream moved from about 183 ms to 129–141 ms in hash runs.
  • Fusing repeated rock-distance evaluation preserved hashes and lowered one 16-worker hash-run stream sample from 698 ms to 624 ms.
  • Direct far capsules replaced 181,836 distant connector primitives with 16,491 while keeping all routes open and hashes stable across worker counts. They cut far-parent construction by roughly 75 ms in the predecessor’s profile.
  • The compact inline/spill bin list reduced far-bin construction while keeping primitive IDs in ascending query order. A flat open-addressed table and an earlier larger inline layout were rejected because total streaming slowed.
  • The per-worker vertex-map reserve remains a small allocation hint: a 32-tile LOD6 sample moved from 33.513 ms to 33.145 ms, with no stable whole-view gain.
  • The current 24× far-bin capacity hint saves about 6 ms in the measured far-bin stage against 2×, with exact hashes and no measurable full-stream change.

Rejected or not tested:

  • Skipping UV/colors and skipping material groups improved the standalone diagnostic viewer only. They remain off by default because the game consumes those arrays and sections.
  • The dense ceiling-column cache produced no stable stream improvement and was removed.
  • A thread-local last-bin cache, parallel far-bin builder, per-tile field snapshot, and per-worker edge cache did not improve the final total. The first edge-cache version removed 2,477 vertices and was rejected as a geometry change.
  • Early far-tile overlap changed LOD0/1 hashes while far parents were incomplete; the path was removed.
  • The multi-pass Flying Edges-style mesher, AVX2 primitive batches, forward differences, Morton page order, Bernstein bounds, six workers, and explicit coarse far surfaces were not prototyped. The measured workload has 4,770 queued LOD6 tiles and a busy worker pool, so splitting one critical tile is not the current bottleneck.

Research retained for these choices: Abseil Swiss tables, Meta F14, VTK Flying Edges, the LDAV 2015 paper, and Intel’s Intrinsics Guide. In particular, the latter cautions that an intrinsic does not guarantee a faster instruction sequence.

Routes, joins, shape checks, and edit latency

Every final shape build reports 5,642/5,642 passage centerline samples open and retains the native landing floors. The three fixed-view grid-stair checks pass the 0.400 threshold.

Fixed view Grid-stair metric Flat-patch share Largest flat patch Result
Chamber 0.003 5.0% 433 samples Pass
Tunnel 0.028 5.0% 433 samples Pass
Passage 0.205 8.0% 520 samples Pass

The chamber, tunnel, and passage detail checks pass at a 4-voxel supremum with an 8-voxel band. Shared tunnel joins: 280 in chamber/tunnel and 240 in passage; endpoint radius and slope deltas are 0.000000 and 0.00000000. The room-floor, floor-slope, C1 floor-profile, and tunnel-radius audits pass. The whole-view level-zero shard audit covers 512 tiles and finds zero thin sheets, zero isolated small components, and four small boundary-touching components.

The crater benchmark is one transaction containing three brushes (10 m diameter, 24 m from the player): a sphere carve, rounded-box cut, and capsule rim. At 8 workers it remeshed all 14 affected tiles with zero cache hits: 12 LOD0 and 2 LOD1. Remesh time was 14 ms; edit-to-ready was 17 ms. Collision cooking is unavailable in the standalone harness.

Current audit logs: chamber, tunnel, passage, whole-view shard/join audit, and edit transaction.

Previous-round six captures and visual review

All six captures were regenerated from the final full-payload executable at 8 workers and the half-load process limit.

View Fixed camera in metres; yaw/pitch in degrees Current capture
Chamber (-11.75, -123.25, -19.85); 0 / 0 chamber
Tunnel (-11.75, -123.25, -19.85); 90 / 0 tunnel
Passage (-39.19, 6.27, -28.51); 63 / 0 passage
Far view (-11.61244, -118.2212, -19.8452); 0 / 0 far
Passage-floor close-up (-39.19, 6.27, -25.51); 63 / -25 floor close-up
Tunnel bend (-198.97, -99.57, -45.58); 33.59 / 23.17 bend

Five captures are byte-identical to the preceding rebuilt set. The passage view differs in 662 of 1,024,000 pixels, with a maximum channel delta of 97; side-by-side inspection shows the same framing and visible geometry. Against the owner images, the visual gap remains: the chamber still has broad smooth ceiling/floor areas, the tunnel has repeated relief bands, the passage keeps a horizontal shelf and dark opening instead of the owner’s layered profile, and the far view lacks the owner’s larger connected forms. The look is not a match.

The four owner-comparison references remain chamber, tunnel, passage, and far view. The earlier fixed captures are in round 2.

Previous-round build limits and failed invocations

The final build is final_halfload_build.log. It succeeded with /MP8. The build and workload processes ran BelowNormal on affinity 0xFF00. The recurring French vswhere.exe setup diagnostic still appears, followed by a successful compile; six existing C4838 narrowing warnings remain in VoxelStrateManager.cpp.

Failures during this continuation, with corrected work preserved:

  • The first dense ceiling-column cache build used CellsPerAxis before its declaration. That build failed; the declaration was moved before use, the retry built, and the cache was later removed after a no-gain timing result.
  • One audit runner call named StandaloneViewer.exe, which does not exist. RunMachine stopped before launching a child; the corrected executable is VoxelForgeStandalone.exe.
  • The first six-capture wrapper assembled --camera and --capture arguments as separate strings. Each process exited 2 on Invalid --camera value before opening a viewer. The arguments were corrected and all six final captures completed with exit code 0.
  • An earlier wrapper call used a relative Tee-Object path after Build.ps1 changed directories. Its log redirection failed; the build was checked and rerun with an absolute log path.
  • Older exploratory audit and optimization failures from the look round remain documented in round 2 and its retained logs.

No external viewer was closed. No commit, push, or stash was made. All source, report, and capture edits are within Standalone.

Previous-round principal logs

  • Final no-hash full-payload timings: final_full_payload_w8_a/b.stdout.log and final_full_payload_w8_a/b.runner.log.
  • Final restored hash matrix: final_restored_full_hash_w1.stdout.log and final_restored_full_hash_w8.stdout.log.
  • Skip checks: canonical_topology_full_hash_w1/w8.stdout.log and canonical_topology_skip_uv_w8, canonical_topology_skip_groups_w8, canonical_topology_skip_both_w8.stdout.log.
  • Reserve A/B: reserve_ratio_old2_build.log and reserve_ratio_old2_*.stdout.log.
  • Current audits, edit run, and captures are listed above; capture process output is in final_capture_*_w8.stdout.log.
  • Machine runner policy: RunMachine.ps1. Build flags and limits: Build.ps1.