# STATE: KILLPAGES-B (parked again 28 Oct ~22:00, load > 40)

## Current job
STYLE 3 sniper REPLACE builds, one at a time. HOLDOVER (key `sniper.rehearsal`, file `58k_w_sniper_s3b.js`, kit `58k_w_xb_kit.js`) is the first one. Both files are registered in 58k_sniper.html and 58k_files.js. No Chrome or renders of mine are running.

## Where HOLDOVER stands
- Built: the prone sniper with the bipod and a real grip, the CMU 19_13 runner, the wall, the drop-arc round, the custom scope overlay, the cut ladder, the hit ladder g0-5, the ramps, slowmoAudio and the grade. Multicam was dropped for this kill.
- motionQA: one FAIL is left:
  `9.42 pop killer: hand B, elbow B, hand F, elbow F jumps up to 13 u (a seam)`.
- ROOT CAUSE (found by the last trace): the killer gun angle `A.w` swings 4 -> 18 -> 39 -> 49 -> 52 between scene 3.82 and ~3.95. In the next sample it snaps to -1.9, so both hands jump. bh stays 1 through the jump, so the bolt hand itself is not the cause. The likely source is `aimAt(t)` after the shot: the post-shot target drifts, possibly to V.center or the falling body, and then switches to the fixed point `[WX + 34, FL - 34]`. Another candidate is the end of a lerp at T.FIRE + 1.2 = 3.75.

## Exact next step
1. In `58k_w_sniper_s3b.js` `aimAt(t)`, make the post-shot aim continuous: blend from the round or wall-top target to the fixed point with `sm()` over 0.3 s or more. No hard switch, and no target that follows the falling body. The w swing to 52 degrees is itself wrong for a prone shooter, so keep w within a few degrees after the shot.
2. `node --check`, then run `bash _tools/render_slot.sh node _tools/motionqa.cjs sniper.rehearsal` until it passes at g0-5.
3. Then finish the gate:
   - full-size beats with a head-occlusion and grip check;
   - mapcount 15/17+;
   - perf p95 at most 16.7 ms;
   - 6 finals;
   - the ledger line (flock58);
   - an MP4 via n1/tools/video.cjs.
4. Send the pack to the coordinator and WAIT for review.

## Queue after HOLDOVER
- Sniper: IN FLIGHT, VISION SLIT, CROSSWIND, BUBBLE TRAIL, THE SPOTTER, QUICKDRAW, BEFORE THE BRASS LANDS, DISMANTLED, SNOWBLIND.
- Bouncer: BANK, THE CORNER, RICOCHET RUN, DEAD ANGLE.

## UPDATE 22:00 (after the resume; read _tools/coord/RESUME_AFTER_SWEEP.md)
- Done: the post-shot aim now holds `S.round.c` (frozen at the shot), not the live head. motionQA still FAILs at 9.42.
- Temporary debug in the rifle `aim:` callback (`A.__tg` / `A.__tt`); remove it before the pack.
- NEW ROOT CAUSE from the per-frame trace (gore 5): the aim TARGET is steady at -2 deg from scene 3.77 onward. But A.w
  (the gunSpring output, XBK gunSpring line ~93) runs away: -2.1 at 3.773, 3.9 at 3.823, 43.2 at 3.901 (~3.9 deg per
  frame), then snaps back to -1.9 at ~3.95 (the spring state resets gw = tg). So the swing is NOT the target. Either something
  injects into the spring/w (p.shud, p.aimAdd, a recoil/shake helper, or a die/calm call on the killer around 3.77),
  or something resets st.
- NEXT: grep around scene 3.75-3.95 (T.FIRE + 1.2 = 3.75 is where the aim lerp ends; BOLT = 3.7 starts the bolt keys)
  for anything that touches A.w / shud / aimAdd / gun state, and check whether perform's `until`/segments re-create
  the spring state. A safe fix if the cause stays hidden: in the perform `gun:` wrap R.gun and, after T.FIRE + 0.3,
  set A.w = the target directly (the prone rifle on its bipod doesn't need a spring), keeping it continuous at the
  hand-over. Then motionQA g5 + g0, and finish the gate as below.
- After HOLDOVER: the FIXABLEs in _tools/coord/verify/bouncer.md (10 kills, fix notes there) and sniper THE GLINT
  (verify/sniper.md: the gold cast beat before ~5.1, the elbow seams, the glint off the head, the XT head pop, trim the tail).
  Report per weapon, one line per kill. No new STYLE 3 kills after HOLDOVER; no REWORK rebuilds.
