|
Download docs/research/QVM_CONTACT_HEALTH_BATCH.md from nmarshall/urt-rs: direct link, hf CLI and curl.
- Browser
- Download file 7 kB
-
https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/QVM_CONTACT_HEALTH_BATCH.md
- Command line
-
hf download hf://nmarshall/urt-rs/docs/research/QVM_CONTACT_HEALTH_BATCH.md
-
curl -L -o QVM_CONTACT_HEALTH_BATCH.md https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/QVM_CONTACT_HEALTH_BATCH.md
7 kB
| # Complete contact and health prefixes: RE-714–723 | |
| Ten separately checked tasks extend the [damage-factor batch](QVM_DAMAGE_FACTOR_BATCH.md). Complete292545 now uses cached original-model hit/miss contexts through its actual recovered factor, event and feedback children. Two bounded211239 stages recover entry gates and knockback selection; actual health/death effects and playable Rust/Bevy/Solari behavior remain open. | |
| | Task | Completed scope | Evidence | | |
| | --- | --- | --- | | |
| | RE-714 | Ordinary contact composed with complete factor and scalar publication | [Factor handoff](QVM_CONTACT_FACTOR.md) | | |
| | RE-715 | Special weapon4 scalar and actual equipment classification | [Special contact](QVM_CONTACT_SPECIAL.md) | | |
| | RE-716 | Event eligibility and conditional announcement ABI | [Announcement gates](QVM_CONTACT_ANNOUNCEMENT.md) | | |
| | RE-717 | Actual event constructor, normal codec, IDs and lethality prediction | [Event header](QVM_CONTACT_EVENT_HEADER.md) | | |
| | RE-718 | Encoded scalar, exact point and normalized separation | [Event payload](QVM_CONTACT_EVENT_VALUE.md) | | |
| | RE-719 | Forward/muzzle payload and actual feedback sum/time ledger | [Feedback](QVM_CONTACT_FEEDBACK.md) | | |
| | RE-720 | Complete impact-only branch, event selection and zero returns | [Impact branch](QVM_CONTACT_IMPACT.md) | | |
| | RE-721 | Complete292545 on original-model hit/miss contexts | [Complete contact](QVM_CONTACT_COMPLETE.md) | | |
| | RE-722 | Health entry gates and conditional tracking/client markers | [Health gates](QVM_HEALTH_GATES.md) | | |
| | RE-723 | Health direction normalization, knockback selection and later rejection | [Knockback selection](QVM_HEALTH_KNOCKBACK.md) | | |
| ## Findings and validation | |
| Ordinary contact multiplies the complete289594 result by100 in float32, then forces scalar0 when the output location is zero. The special weapon4 path fixes scalar1, reclassifies head/torso through actual inventory and leaves the ordinary accumulator unchanged. Nonzero caller flag and scalar enable the hit event; announcement suppression is independent of event creation. | |
| Actual277695/278138 constructs a temporary event and captures its native link request before the contact header writes IDs, location, part, normal code and predicted lethality. The event constructor stores snapped coordinates. The later contact payload overwrites trajectory base24 with the exact trace point while retaining snapped origin488. Ordinary event204 truncates scalar to integer; weapon4 uses accumulator×100 with upper cap100 and no lower cap. Separation is attacker-minus-target entity position normalized in source float32 order. Forward payload is global forward×500 truncated componentwise; weapon27 copies exact muzzle bytes. The event uses the earlier global forward, before the contact suffix rebuilds the basis from attacker angles. | |
| Feedback executes actual285142. The contact gate suppresses same-team feedback in enabled modes and requires positive encoded value. The helper separately requires an attacker client, enabled mode and signed target ID0–64 inclusive, then adds the integer value and writes the current time in an8-byte ledger entry. Detached ID fixtures test boundaries without asserting live world identity. Impact-only contacts emit event109 for weapon30 or63 otherwise, requiring a nonzero caller flag and clear surface bit32, and always return0. | |
| Complete292545 composes these paths with original context bytes and independently checked full event records, factor arithmetic, request arguments and returns. Original geometry is cached source-produced output; world collision and live frame selection do not execute.211239 remains captured at this caller boundary. | |
| Inside211239, entry gates depend on damageability, mode/method, protection, client flags and several globals whose gameplay names remain unresolved. Accepted prefixes can set a first cross-team tracking flag and client4328. A later recovered slice normalizes the supplied direction in place or sets damage flag4 for null direction. It scans30 original descriptors for knockback, with method-specific integer damage overrides and upper cap200. Entity flag2048 or damage flag4 zeros the scalar. Spectator/team/friendly-fire/protection rejection can occur after direction mutation or scalar selection. No velocity impulse, armor/health subtraction, pain/death callback or final health publication runs in these slices. | |
| The1300-test baseline gains41 checks, ending at1341 passing Python tests. Each new report regenerates byte-identically below2MiB. Event reports retain full initial/final/link records and hash large nested constructor child effects to avoid duplicating records. Source descriptor/format identity, storage/filter setup, documentation links and whitespace checks pass. Original assets, Rust code and the shared VM evaluator are unchanged. Native math/link/reference parity and Linux execution remain open. | |
| ## Remaining limits and next ten tasks | |
| RE-713 is partially advanced: complete contact composition and health prefixes are done, while full health behavior, shared/pellet callers, native parity and Rust/Bevy/Solari integration remain open. RE-724 tracks the next work. | |
| 1. Recover211239 pointer fallbacks and special target-kind callback routing at211437–211509, then compose both health prefixes with the accepted contact request. | |
| 2. Recover attacker hit/team bookkeeping, minimum damage, client damage accumulators, direction/world-origin publication and method-specific flags through212157. | |
| 3. Recover special target checksum/class branches, method filters, random damage selection and callbacks through212478 with explicit randomness/native boundaries. | |
| 4. Recover mode10 lethal interception and method24 override branches through212621. | |
| 5. Recover ordinary health subtraction, protected health floor, client flag/meter effects, attacker/location attribution and health publication through212799. | |
| 6. Recover packed meter caps, pain/death callback requests, health clamp and direction/knockback handoff through the211239 void exit, including actual213009 velocity impulse behavior. | |
| 7. Compose complete211239 with complete292545 and original-model contexts, retaining explicit native/callback boundaries and independent all-state oracles. | |
| 8. Continue shared293732 trace/contact/statistics and successful295018 pellet aggregation using original-model geometry. | |
| 9. Recover native loader18183 ownership/endian/failure and capture original executable/DLL parity for geometry, math, inventory and live animation/clock domains. | |
| 10. Port verified asset/interpolation/geometry contracts into Rust, integrate Bevy/Solari, and validate the first interactive macOS/Linux slice with the remaining map/material/texture/audio/network/lifecycle/packaging work. | |
| Follow-up: [RE-725–734](QVM_HEALTH_RUST_BATCH.md) composes complete finite health/contact flow and ports source213009 into Rust. Concrete callbacks, native parity, shared/pellet callers and playable platforms remain open; RE-735 tracks subsequent work. | |