|
Download docs/research/QVM_GEOMETRY_TRACE_BATCH.md from nmarshall/urt-rs: direct link, hf CLI and curl.
- Browser
- Download file 7.26 kB
-
https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/QVM_GEOMETRY_TRACE_BATCH.md
- Command line
-
hf download hf://nmarshall/urt-rs/docs/research/QVM_GEOMETRY_TRACE_BATCH.md
-
curl -L -o QVM_GEOMETRY_TRACE_BATCH.md https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/QVM_GEOMETRY_TRACE_BATCH.md
7.26 kB
| # Source model geometry through rewound trace: RE-681–690 | |
| Ten separately checked tasks extend the [model/resource batch](QVM_MODEL_RESOURCE_BATCH.md). Packed model data now drive complete leaf, hierarchy and model-hit source paths. The rewound trace reaches cleanup and returns using those geometric model outcomes. Native broadphase candidates remain supplied, and original asset/runtime parity remains open. | |
| | Task | Recovered scope | Evidence | | |
| | --- | --- | --- | | |
| | RE-681 | Signed packed frame vertices, interpolation and world triangles | [Leaf vertices](QVM_LEAF_VERTICES.md) | | |
| | RE-682 | Determinant epsilon, barycentrics and ray parameter | [Ray/triangle candidates](QVM_RAY_TRIANGLE.md) | | |
| | RE-683 | Exact source normal, normalized edges and point | [Hit geometry](QVM_HIT_GEOMETRY.md) | | |
| | RE-684 | File-backed perfect-hash classifier with actual string children | [Surface categories](QVM_SURFACE_CATEGORY.md) | | |
| | RE-685 | Nearest/farthest context and ten-record append limit | [Hit publication](QVM_LEAF_HIT_PUBLISH.md) | | |
| | RE-686 | Complete leaf loops with source-produced geometric records | [Complete leaf](QVM_COMPLETE_LEAF.md) | | |
| | RE-687 | Recursive hierarchy with actual leaf geometry | [Geometric hierarchy](QVM_GEOMETRIC_HIERARCHY.md) | | |
| | RE-688 | Complete model helper through pose, geometry, sorting and trace output | [Complete model hit](QVM_COMPLETE_MODEL_HIT.md) | | |
| | RE-689 | Complete multi-part model hits and priority ordering | [Multi-part hits](QVM_MODEL_MULTI_HITS.md) | | |
| | RE-690 | Rewound trace through geometric model returns and cleanup | [Geometric rewound trace](QVM_GEOMETRIC_REWOUND_TRACE.md) | | |
| ## Findings for the rewrite | |
| Leaf23092 addresses eight-byte vertices by frame, vertex count and triangle index. It sign-extends xyz16, interpolates B+(A−B)×fraction and scales1/64 before applying the prepared ancestry basis/origin. The last two vertex bytes are not read in this position slice. Independent fixtures cover signed extrema, reversed/equal frames, permutations and extrapolation. Model surface/frame ownership and live bounds still require original asset evidence. | |
| The triangle test rejects an open determinant epsilon interval and out-of-triangle barycentrics. It accepts either winding and triangle-edge equality. It does not reject negative ray parameters or impose a segment endpoint limit here. Normal construction uses cross(a−b,b−c), then normalizes that cross product and both edges. Point construction uses a+(unit(a−b)×u+unit(b−c)×v), which differs from a conventional ray intersection point. The recovered source words are preserved without silently substituting expected geometry or claiming intended design. | |
| Classifier21493 recognizes fourteen exact case-sensitive names/categories1..14 using actual21458 hashing, file-backed association/entry tables and actual36306 packed comparison. It checks lengths6..8. A miss returns pointer zero; the later consumer reads word4, whose initialized value is34089888. That raw-data path is distinct from a valid zero-category entry, and live mutation/unknown-name semantics remain unresolved. The bounded evaluator gains independently tested unsigned GTU support. | |
| Publication first updates strict nearest/farthest point, normal and part index, independent of category or record capacity. Nonzero categories append [category,point.xyz,parameter] while count<10. Normal belongs to the context header, not each record. Each leaf initializes its own distance bounds, while record count carries across leaves. Sorting preserves equal-key order until the separate torso3 priority swap over a leading arm5/6; that swap can break numeric distance order without changing nearest context vectors. | |
| Complete23092,25341 and144766 now execute over explicit packed model fixtures. Actual pose, child transforms, geometry, classification and sorting produce model hit/miss results; no model-hit response is supplied. Star/nested multi-part fixtures exercise categories1/3/5/6. Complete291641 composes these outcomes with actual rewind/restore selectors: a geometric hit cleans up and returns1; a geometric miss retries a supplied native world candidate, cleans up and returns0. Whole tracked entity records restore with the previously documented animation-byte truncation. | |
| The complete leaf run exposed a bounded evaluator inconsistency: STORE4 updated word memory but could leave stale active byte memory that later BLOCK_COPY read. STORE4 now synchronizes those bytes. A dedicated regression checks word-to-byte-to-copy coherence. Relevant earlier history/rewind/pose/model reports regenerated unchanged after the fix, as did the existing pending-model and captured-leaf reports after optional resolver extensions. | |
| ## Validation and limits | |
| The1177-test baseline gains41 checks, ending at1218 passing tests. Every new report regenerates byte-identically and stays below2MiB. Independent signed-byte, float32 geometry, exact dictionary, whole-context, pose, sorting, rewind and entity-restoration oracles verify bounded source behavior. Storage/filter, documentation-link and whitespace checks pass. No assets or Rust runtime change. | |
| Packed model tables, surface geometry, acyclic hierarchies, player histories, clocks and legal input domains remain explicit fixtures. Native finite math/zero fill are models; native trace candidates are supplied and link/unlink requests are captured. The geometric model outcome is source-derived, but no original executable/full VM, original model-buffer import, native world collision, contact/damage, live server tick, networking/rendering or macOS/Linux Rust/Bevy/Solari gameplay runs here. RE-680 is substantially advanced but remains open for original asset/geometry parity and downstream damage/runtime work. RE-691 tracks the next tasks. | |
| ## Next ten concrete tasks | |
| 1. Connect original model assets to recovered surface/frame/tag layouts, documenting ownership, bounds, material/surface names and coordinate conventions. | |
| 2. Validate recovered point, fourth-row and unknown-name behavior against original executable/native/DLL traces; preserve observed parity rather than assuming intended formulas. | |
| 3. Expand full model geometry to original frame/animation transitions, overlapping surfaces, capacity exhaustion and live target/skeleton bindings. | |
| 4. Recover contact292545 with actual geometric model outputs and exact caller pointer/flag contracts. | |
| 5. Recover reached damage211239 health/armor/team/location rules, events and side effects through independent source contracts and original reference checks. | |
| 6. Continue shared handler293732 through actual trace/contact/bookkeeping; validate source-produced target/location statistics. | |
| 7. Continue295018 through successful pellet aggregation, four-target/fifteen-slot bookkeeping and contact conditions. | |
| 8. Recover penetration/retry/event64 paths, boundary cleanup and direction encoding, retaining explicit native collision contracts. | |
| 9. Continue grenade223156 completion, heap16934 ownership/coalescing and actual history reset/append scheduling with original references. | |
| 10. Implement a verified Rust gameplay slice and continue all macOS/Linux Bevy/Solari assets/maps/models/shaders/audio/network/runtime goals; this research batch does not complete the game. | |