# TRIGGER / ARENA FIX LIST · owner F
Generated 2026-10-26 02:57 by ZONE-LOOKS from _tools/TRIGGER_AUDIT.md (the method and the HAZARD RULE decision are there). Re-run: `node _tools/trigger_audit.mjs dump --force <page>`, then `node _tools/trigger_audit.mjs analyze`.

Severity:
- **ORPHAN**: the kill system can never pick it. Fix first.
- **ARENA**: it resolves badly on some of the 18 arenas.
- **TAG**: a missing or contradictory tag.
- **BUILD**: an error.

Hazard tags follow the coordinator's ruling (26 Oct): `hazard` = the victim DIES TO that hazard in gameplay. A film that stages the death itself is a needs.kinds film: drop the tag (HAZARD-STAGED).

## APPLIED FOR YOU (26 Oct, data-only, by ZONE-LOOKS while you were paused): 106 kills
Each edit carries a `/* 26 Oct TRIGGER AUDIT */` comment. Re-read your files before editing them; check that the new range bands read right for your kill (they come from the staging distance at t = 0).

- hammer.tent-peg (58k_w_hammer.js): range pointBlank close (staged 0.97 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.skimming-stone (58k_w_hammer.js): hazard liquid dropped (its own staging kills: the victim is alive at t = 0, K.O. at 0.66 s); deep skip (The Deep skips it: DRY GROUND)
- hammer.skipping (58k_w_hammer.js): range close mid (staged 2.36 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.the-hold (58k_w_hammer.js): range close (staged 1.25 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.stuck (58k_w_hammer.js): range pointBlank close (staged 1 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.the-weight (58k_w_hammer.js): range close (staged 1.08 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.high-striker (58k_w_hammer.js): range close (staged 1.53 FH apart at t = 0); deep skip (The Deep skips it: DROP, DRY GROUND)
- hammer.hanger-on (58k_w_hammer.js): range pointBlank close (staged 0.83 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.floorboards (58k_w_hammer.js): range close mid (staged 2.22 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.resonance (58k_w_hammer.js): range pointBlank close (staged 1 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.mole-hill (58k_w_hammer.js): range close (staged 1.53 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.the-backswing (58k_w_hammer.js): range close (staged 1.11 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.cpr (58k_w_hammer.js): range close (staged 1.25 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.tectonic (58k_w_hammer.js): range close mid (staged 2.22 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.the-foundation (58k_w_hammer.js): deep skip (The Deep skips it: DRY GROUND)
- hammer.skin-classic (58k_w_hammer.js): range close (staged 1.25 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.skin-taped (58k_w_hammer.js): deep skip (The Deep skips it: DRY GROUND)
- hammer.skin-camo (58k_w_hammer.js): deep skip (The Deep skips it: DRY GROUND)
- hammer.skin-cartoon (58k_w_hammer.js): range close (staged 1.14 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.skin-ice (58k_w_hammer.js): range close (staged 1.53 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- hammer.skin-neon (58k_w_hammer.js): deep skip (The Deep skips it: DRY GROUND)
- hammer.skin-gold (58k_w_hammer.js): deep skip (The Deep skips it: DRY GROUND)
- hammer.dismasted (58k_w_hammer_deep.js): hazard crush dropped (its own staging kills: the victim is alive at t = 0, K.O. at 3.4 s)
- hammer.mid-echo (58k_w_hammer_mid.js): deep skip (The Deep skips it: DRY GROUND)
- hammer.mid-shockwave (58k_w_hammer_mid.js): deep skip (The Deep skips it: DRY GROUND)
- hammer.mid-wedge (58k_w_hammer_mid.js): deep skip (The Deep skips it: DRY GROUND)
- hammer.mid-plaster-cast (58k_w_hammer_mid.js): deep skip (The Deep skips it: DRY GROUND)
- hammer.mid-stake (58k_w_hammer_mid.js): deep skip (The Deep skips it: DRY GROUND)
- hammer.mid-ketchup (58k_w_hammer_mid.js): deep skip (The Deep skips it: DRY GROUND)
- knife.behind-you (58k_w_knife.js): range close mid (staged 1.67 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.blink (58k_w_knife.js): range close mid (staged 2.08 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.bear-hug (58k_w_knife.js): range pointBlank close (staged 1 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.air-guitar (58k_w_knife.js): range close mid (staged 1.94 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.which-one (58k_w_knife.js): range close mid (staged 2.22 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.crossed-out (58k_w_knife.js): range close mid (staged 2.08 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.vanishing-act (58k_w_knife.js): range close mid (staged 2.22 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.chandelier (58k_w_knife.js): range close (staged 1.06 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.splice (58k_w_knife.js): range close (staged 1.53 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.compass (58k_w_knife.js): range close mid (staged 1.81 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.telefrag (58k_w_knife.js): range close mid (staged 2.36 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.pickpocket (58k_w_knife.js): range close mid (staged 2.08 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.flayed (58k_w_knife.js): range close mid (staged 2.22 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.the-interval (58k_w_knife.js): range close (staged 1.39 FH apart at t = 0)
- knife.broken (58k_w_knife.js): range close (staged 1.28 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.skin-classic (58k_w_knife.js): range close mid (staged 1.67 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.skin-taped (58k_w_knife.js): range close mid (staged 1.94 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.skin-camo (58k_w_knife.js): range close mid (staged 2.22 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.skin-cartoon (58k_w_knife.js): range close mid (staged 2.08 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.skin-ice (58k_w_knife.js): range close mid (staged 1.69 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.skin-neon (58k_w_knife.js): range close mid (staged 1.94 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- knife.skin-gold (58k_w_knife.js): range close mid (staged 2.22 FH apart at t = 0)
- knife.mid-shucked (58k_w_knife_mid.js): deep skip (The Deep skips it: DRY GROUND)
- knife.mid-origami (58k_w_knife_mid.js): deep skip (The Deep skips it: DRY GROUND)
- knife.mid-whetstone (58k_w_knife_mid.js): deep skip (The Deep skips it: DRY GROUND)
- knife.mid-butterflies (58k_w_knife_mid.js): deep skip (The Deep skips it: DRY GROUND)
- knife.mid-right-through (58k_w_knife_mid.js): deep skip (The Deep skips it: DRY GROUND)
- knife.mid-pockets (58k_w_knife_mid.js): deep skip (The Deep skips it: DRY GROUND)
- speedsabre.quiet-draw (58k_w_sabre.js): range mid (staged 3.47 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.waist-line (58k_w_sabre.js): range mid (staged 2.78 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.kneeler (58k_w_sabre.js): range close mid (staged 2.5 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.skull-cap (58k_w_sabre.js): range close mid (staged 1.94 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.ten-thousand-cuts (58k_w_sabre.js): range close mid (staged 1.69 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.heaven-splitter (58k_w_sabre.js): range mid (staged 3.84 FH apart at t = 0); deep adapts (The Deep stages it and it plays underwater there, no errors)
- speedsabre.totem (58k_w_sabre.js): range mid (staged 3.06 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.wall-split (58k_w_sabre.js): range close mid (staged 2.33 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.the-old-cuts (58k_w_sabre.js): range mid (staged 2.92 FH apart at t = 0)
- speedsabre.pinball (58k_w_sabre.js): range close mid (staged 2.64 FH apart at t = 0); deep skip (The Deep skips it: DROP, DRY GROUND)
- speedsabre.the-bright-line (58k_w_sabre.js): range close mid (staged 1.81 FH apart at t = 0); deep skip (The Deep skips it: GAP, DRY GROUND)
- speedsabre.underfoot (58k_w_sabre.js): range mid (staged 3.06 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.hold-this (58k_w_sabre.js): range close mid (staged 2.22 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.last-word (58k_w_sabre.js): range mid (staged 2.92 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.split-hairs (58k_w_sabre.js): range close mid (staged 2.5 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.skin-classic (58k_w_sabre.js): range close mid (staged 2.5 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.skin-taped (58k_w_sabre.js): range close mid (staged 2.22 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.skin-camo (58k_w_sabre.js): range mid (staged 3.33 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.skin-cartoon (58k_w_sabre.js): range close mid (staged 2.22 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.skin-ice (58k_w_sabre.js): range mid (staged 3.61 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.skin-neon (58k_w_sabre.js): range close mid (staged 1.94 FH apart at t = 0); deep skip (The Deep skips it: DRY GROUND)
- speedsabre.skin-gold (58k_w_sabre.js): range mid (staged 2.78 FH apart at t = 0)
- speedsabre.mid-deckchair (58k_w_sabre_mid.js): deep skip (The Deep skips it: DRY GROUND)
- speedsabre.mid-tickled (58k_w_sabre_mid.js): deep skip (The Deep skips it: DRY GROUND)
- speedsabre.mid-chink (58k_w_sabre_mid.js): deep skip (The Deep skips it: DRY GROUND)
- speedsabre.mid-just-a-scratch (58k_w_sabre_mid.js): deep skip (The Deep skips it: DRY GROUND)
- speedsabre.mid-loose-thread (58k_w_sabre_mid.js): deep skip (The Deep skips it: DRY GROUND)
- speedsabre.mid-like-butter (58k_w_sabre_mid.js): deep skip (The Deep skips it: DRY GROUND)
- spear.pinned (58k_w_spear.js): deep skip (The Deep skips it: DRY GROUND)
- spear.forest-of-stakes (58k_w_spear.js): deep skip (The Deep skips it: DRY GROUND)
- spear.fire-drill (58k_w_spear.js): deep skip (The Deep skips it: DRY GROUND)
- spear.tapped (58k_w_spear.js): deep skip (The Deep skips it: DRY GROUND)
- spear.top-of-the-pole (58k_w_spear.js): hazard drop dropped (its own staging kills: the victim stands on the floor at t = 0, K.O. at 7.82 s); deep skip (The Deep skips it: GAP)
- spear.led-by-the-nose (58k_w_spear.js): deep skip (The Deep skips it: DRY GROUND)
- spear.the-narrow-way (58k_w_spear.js): deep skip (The Deep skips it: GAP)
- spear.swept-under-the-rug (58k_w_spear.js): deep skip (The Deep skips it: DRY GROUND)
- spear.three-to-one (58k_w_spear.js): deep skip (The Deep skips it: DRY GROUND)
- spear.maypole (58k_w_spear.js): deep skip (The Deep skips it: DRY GROUND)
- spear.spokes (58k_w_spear.js): deep skip (The Deep skips it: DRY GROUND)
- spear.the-door (58k_w_spear.js): deep skip (The Deep skips it: DRY GROUND)
- spear.fended-off (58k_w_spear_b.js): hazard drown dropped (its own staging kills: the victim is alive at t = 0, K.O. at 7.6 s); deep skip (The Deep skips it: LIQUID)
- spear.the-cue (58k_w_spear_b.js): hazard fall dropped (its own staging kills: the victim stands on the floor at t = 0, K.O. at 3.85 s); deep skip (The Deep skips it: DROP)
- spear.the-bindle (58k_w_spear_b.js): deep skip (The Deep skips it: CONTAINER)
- spear.skin-classic (58k_w_spear_skins.js): deep skip (The Deep skips it: DRY GROUND)
- spear.skin-taped (58k_w_spear_skins.js): hazard drown dropped (its own staging kills: the victim is alive at t = 0, K.O. at 6.1 s); deep skip (The Deep skips it: LIQUID)
- spear.skin-camo (58k_w_spear_skins.js): deep skip (The Deep skips it: DRY GROUND)
- spear.skin-cartoon (58k_w_spear_skins.js): deep skip (The Deep skips it: DRY GROUND)
- spear.skin-ice (58k_w_spear_skins.js): deep skip (The Deep skips it: DRY GROUND)
- spear.skin-neon (58k_w_spear_skins.js): deep skip (The Deep skips it: DRY GROUND)
- [ ] **left for you** knife.the-interval: deep: a death-realm kill (its lead plays on the map, the kill in its realm), so the underwater check doesn't apply: left unset. Tag deep 'adapts' if its lead should play underwater in The Deep, else 'skip'
- [ ] **left for you** knife.skin-gold: deep: a death-realm kill (its lead plays on the map, the kill in its realm), so the underwater check doesn't apply: left unset. Tag deep 'adapts' if its lead should play underwater in The Deep, else 'skip'
- [ ] **left for you** speedsabre.the-old-cuts: deep: a death-realm kill (its lead plays on the map, the kill in its realm), so the underwater check doesn't apply: left unset. Tag deep 'adapts' if its lead should play underwater in The Deep, else 'skip'
- [ ] **left for you** speedsabre.skin-gold: deep: a death-realm kill (its lead plays on the map, the kill in its realm), so the underwater check doesn't apply: left unset. Tag deep 'adapts' if its lead should play underwater in The Deep, else 'skip'

## HAMMER: 17 films · 7 skins · 6 mids · 0 lines
- [ ] **RENDER REAL** hammer.skimming-stone @ kitchen (not its home): XT shows a blood pool only: the victim is out of frame at XT (finalT 10.156). Shot: /Volumes/Workspace/Scratch/trigger_audit/shots/hammer.skimming-stone@kitchen.jpg

## KNIFE: 17 films · 7 skins · 6 mids · 0 lines

## SPEAR: 15 films · 6 skins · 0 mids · 7 lines
- [ ] **ORPHAN HAZARD-DEATH** spear.the-narrow-way (THE NARROW WAY): a hazard film (fall death): that death happens only on BY CN CS RF SL, and it stages on FT: no overlap. Fix: TWO OPTIONS (coordinator ruling): (a) re-stage it as a needs.kinds film (drop the hazard tag, the element into needs.kinds; it then plays on a normal K.O.), OR (b) keep it and wait for a real lethal fall hazard where it stages (the coordinator takes the game side with TF-PORT-SYSTEM).
- [ ] **ARENA OWED-GEO** spear.fended-off (FENDED OFF): OWED on 5 arena(s) that HAVE its kinds but no spot fits: TW(LIQUID) FT(LIQUID) SK(LIQUID) DP(LIQUID) KT(LIQUID). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).
- [ ] **ARENA OWED-GEO** spear.skin-taped (THROWN BACK): OWED on 5 arena(s) that HAVE its kinds but no spot fits: TW(LIQUID) FT(LIQUID) SK(LIQUID) DP(LIQUID) KT(LIQUID). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).
- [ ] **ARENA OWED-GEO** spear.the-bindle (THE BINDLE): OWED on 8 arena(s) that HAVE its kinds but no spot fits: CN(CONTAINER) BS(CONTAINER) TW(CONTAINER) FT(CONTAINER) SK(CONTAINER) RT(CONTAINER) PR(CONTAINER) KT(CONTAINER). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).
- [ ] **ARENA OWED-GEO** spear.the-cue (THE CUE): OWED on 15 arena(s) that HAVE its kinds but no spot fits: BY(DROP) CS(DROP) RF(DROP) SL(DROP) CG(DROP) BS(DROP) TW(DROP) AT(DROP) TM(DROP) FT(DROP) SK(DROP) PB(DROP) PR(DROP) KT(DROP) CL(DROP). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).
- [ ] **ARENA OWED-GEO** spear.the-narrow-way (THE NARROW WAY): OWED on 6 arena(s) that HAVE its kinds but no spot fits: RF(GAP) BS(GAP) PB(GAP) PR(GAP) KT(GAP) CL(GAP). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).
- [ ] **ARENA OWED-GEO** spear.top-of-the-pole (TOP OF THE POLE): OWED on 6 arena(s) that HAVE its kinds but no spot fits: BS(GAP) FT(GAP) PB(GAP) PR(GAP) KT(GAP) CL(GAP). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).
- [ ] **RENDER REAL** spear.fended-off @ pirate (its home): XT shows empty water: the victim sank out of frame (its home) at XT (finalT 12.833). Shot: /Volumes/Workspace/Scratch/trigger_audit/shots/spear.fended-off@pirate.jpg

## SPEEDSABRE: 17 films · 7 skins · 6 mids · 5 lines
- [ ] **ARENA OWED-GEO** speedsabre.heaven-splitter (HEAVEN SPLITTER): OWED on 2 arena(s) that HAVE its kinds but no spot fits: CN(PLATFORM) PB(PLATFORM). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).
- [ ] **ARENA OWED-GEO** speedsabre.hold-this (HOLD THIS): OWED on 1 arena(s) that HAVE its kinds but no spot fits: RF(ROOM). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).
- [ ] **ARENA OWED-GEO** speedsabre.quiet-draw (QUIET DRAW): OWED on 1 arena(s) that HAVE its kinds but no spot fits: RF(ROOM). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).
- [ ] **ARENA OWED-GEO** speedsabre.skin-camo (TRIMMED): OWED on 1 arena(s) that HAVE its kinds but no spot fits: RF(ROOM). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).
- [ ] **ARENA OWED-GEO** speedsabre.skin-ice (CURLING): OWED on 1 arena(s) that HAVE its kinds but no spot fits: RF(ROOM). Fix: a stage58 that finds a spot on these (or accept: the owed fallback is clean).

## Notes (check, not necessarily wrong)
- **DEEP-SKIP-PORT** (5), deep: skip with no ground / drop need (a port note: the game must carry the skip): knife.telefrag, spear.fended-off, spear.the-bindle, spear.skin-taped, speedsabre.wall-split
- **NO-DEEP** (4), no deep tag (The Deep decides from the old needs words); tag deep: adapts / skip / only: knife.the-interval, knife.skin-gold, speedsabre.the-old-cuts, speedsabre.skin-gold

- (26 Oct 03:00, coordinator) HAZARD-DEATH RULING: option (a) for every hazard film whose death never happens where it stages (sniper.the-guide-line, sniper.sling, spear.the-narrow-way): re-stage it as a needs.kinds film. Drop the hazard tag, put the element into needs.kinds, and let the film cause the death itself, so it plays on a normal K.O. on every arena that has the element. No kill waits for a game hazard that does not exist.
