# QVM clock, main timer routing and selected contact-mode composition This batch completes bounded RE-497–499 / F-232–234 by connecting source clock-prefix instructions, the main path's real timer helper and the selected contact-capable movement chain. It builds on [contact caller composition](QVM_CONTACT_CALLERS.md) and [timer/main routing recovery](QVM_TIMERS_DISPATCH.md). Other main callees, alternative modes and native responses remain supplied or omitted as specified below. Reproduce with `python3 scripts/analyze_qvm_main_contact.py`; validate with `python3 scripts/test_qvm_main_contact.py`. The [machine report](qvm-main-contact.json) retains verified source identity, clock/timer outputs, main call order, selected child reports and final recorded state. No original executable, full QVM, native collision, physics or rendering executes. ## MAINCONTACT-001 — Clock into actual main timer state (RE-497) Forty-eight fixtures vary requested time1000/1016/1201 against old time1000, movement timer0/16/17/201, flags2208/2212 and prepared clear/contact slide patterns. Clock instructions53723–53788 run directly against the same seeded memory subsequently used by the main slices. They preserve source origin[100,200,300] and velocity[10,20,30] in the actual snapshot globals; this bridge does not substitute the vector seeds used in an older isolated clock fixture. The source stores requested time directly, clamps elapsed time to1–200, writes PS elapsed and computes fractional time with binary32 conversion/multiplication by coefficient word981668463. Thus equal requested/old time produces elapsed1, while requested1201 produces elapsed200 and stored time1201. Integer elapsed feeds timer53048; its binary32 fraction feeds the reached movement children and gravity tail. The elapsed interval is not inferred independently for each child. At the actual main CALL54272 boundary the timer body evaluates against live flags and movement/leg/torso timers, preserving the main frame. Movement expiry clears192; zero movement timer does not clear it. Leg/torso countdown outputs remain live through the selected mode. Intervening instructions between the clock prefix and main entry54244 are omitted, so this establishes a selected producer/consumer connection rather than full helper53418 execution. ## MAINCONTACT-002 — Source selection and timer-expiry controls (RE-498) The source main routing reads the flags produced by that evaluated timer. Of48 fixtures,36 select41768 and execute the recovered contact-mode chain. Six select43626 and six select55465 after expiry; those alternative callees record requests with omitted effects. Their prepared contact patterns are not run, and no41768 side effects are attached to them. At exact elapsed16/movement timer16, expiry suppresses41768. With the otherwise corresponding timer17, one remaining tick preserves128 and selects41768. Supplied flag4 survives expiry and selects55465; without it the supplied walk/level/state combination selects43626. Timer0 preserves the existing128 bit. Tests require these route counts and equality boundaries as well as the exact main request order/arguments and saved first content level. Content level0, walk1, type0, state220=0 and initial impact0 remain seeded inputs. Requests to content/posture/ground/action/query helpers, alternative modes and suffix helpers retain omitted effects; query returns0. This batch does not establish those inputs from environment geometry, actions or native state. ## MAINCONTACT-003 — Actual selected chain and return to main (RE-499) At reached CALL54380, helper41768 receives the actual aged flags/timer and clock-derived timestep in shared PS/frame/touch/impact memory. Its prefix,60091 wrapper,59710 step and both57714 slide children evaluate as previously recovered. The caller-composition helper now accepts optional initial/result memory while preserving its original default report byte-for-byte. Across the36 selected fixtures,54 slide child invocations execute:36 first attempts plus18 raised-step attempts. Clear first attempts bypass step. Contact first attempts evaluate the raised child and supplied down/overlap policy. Requested1016 prepares overlap-startsolid failure; the other requested-time groups prepare clear overlap. Wrapper fallback/height recording and mode gravity/flag/timer behavior consume their actual child outputs. Native roots and ordered slide/down/overlap traces/interpolated positions remain supplied. The evaluated mode state returns to the original main frame, which continues the source suffix request sequence through instruction54472. Tests compare the final recorded snapshot, timers and time against the actual child chain and independent arithmetic. Suffix native/callee effects remain omitted; unchanged recorded state across those requests is a property of this bounded model, not a claim that the real callees have no effects. ## Validation and remaining tasks Eight tests verify all48 clock/timer/selection cases, exact expiry,54 independent slide-child predictions, step/wrapper results, clock-fraction gravity tail, shared-state handoffs, main call order, saved level, source provenance and explicit omitted effects. The clock/timer/routing and motion formulas are independent of the shared instruction evaluator; prior child formulas are reused with actual entry snapshots. Reproducibility/full-suite/storage/link/whitespace results are recorded in the ledger. Main coverage is54244–54472 plus the separate clock prefix, not complete53418. Earlier dispatch/scheduler, intervening environment/view/basis/action helpers, alternative modes, suffix/native effects, legal normal/state/record domains and collision-derived traces remain open. RE-496 retains its broader scope. RE-500 tracks those missing producers/callees and native trace/BSP collision, impact reset/consumers, complete main/scheduler shared state and macOS/Linux Rust/Bevy/Solari gameplay. Other game/assets/rendering/protocol milestones remain open. Follow-up: [main environment producer composition](QVM_MAIN_ENVIRONMENT.md) completes bounded RE-501–503, evaluating pre/post content and ground bodies at actual main boundaries and carrying derived normals/state into selected motion. This report retains its original seeded-environment scope; native/full main/runtime work remains open under RE-500/504.