# 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.