Night-12 field report (Ronin/Conn Man/Oracle, blackhawk-correlated): lock ring lit with the reticle visibly off the mech + no-reg complaints. Root cause: TWO port stand-ins answered where the 1995 card (which cast against the DRAWN geometry) would miss -- the pick's any-object sphere fallback and the caller's whole-mech AABB fallback. The regime that exposes them: a LEVEL boresight over a SHORT mech -- the blackhawk's mesh tops out below eye-ray height, so the ray clears every triangle but pierces the fat cull spheres; the ring lights with the reticle above the mech's head (the operator watched exactly this on the sweep bench). Careful aimed-down fire rides triangles, which is why Oracle's per-panel audit passed on the same build. Fix: MechSegmentPick returns 1=drawn-geometry hit / 0=TRUE MISS / -1=no render tree; the sphere may answer ONLY for a mesh the reader cannot parse (pm==0 -- currently none exist: counters objs/invFail/noTri all clean); the AABB survives ONLY as the pre-tree replicant grace. A readable mesh the ray misses is a MISS -- no lock. Verified (2-node vs bhk1 at 100u, all runs on force-relinked string- verified exes after today's stale-link flake): - LEVEL lock-sweep: 0 locks all run (pre-fix: lock band from 168 sphere answers; picksrc tri=0 sphereFB=168). - DOWN-PITCHED sweep: locks return 100%% tri-sourced (tri=158 sphereFB=0), landing on real parts (rarm/ldleg/rdleg) with honest gaps. - Full zone-walk matrix: tri=18874 sphereFB=0 box=0; victim took 156 hits across 16 zones incl. both side torsos -- combat un-regressed. New instruments (all env-gated): BT_LOCK_SWEEP=<axis> torso pan (the operator-visible lock-envelope bench), [locksweep] transition log, BT_LOCK_ENVELOPE synthetic unit-sweep probe, [picksrc]/[pickbox] source telemetry with objs/invFail/noTri localization counters. Bench: scratchpad/night12/zonewalk_bhk.sh. NOTE for the field: locking is now strictly TIGHTER (ring = reticle truly on the machine). If era testers feel the pods were more forgiving, Draco's "slight lock linger" memory becomes a deliberate investigation (sourced hysteresis), not an accidental sphere halo. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
38 lines
1.5 KiB
Bash
38 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
# #92 check: is the Loki foot un-hittable report (night 7, build 659) already
|
|
# cured by the #124 triangle-pick work? The zone-walk matrix vs a BLACKHAWK target (#131 false-lock forensics):
|
|
# shooter servo-aims every zone (feet included) through the real reticle path,
|
|
# 3 laser pulses each; read A's [walk] FIRE lines vs B's [dmghit] zone= lines.
|
|
# Same rig as scratchpad/night10/zonewalk.sh, target vehicle=loki, ~7 min tail.
|
|
set -x
|
|
. /c/git/bt411/scratchpad/night6/bench_common.sh
|
|
cd /c/git/bt411/content || exit 1
|
|
bt_assert_player_env
|
|
taskkill //F //IM btl4.exe > /dev/null 2>&1
|
|
sleep 2
|
|
rm -f zwb_a.log zwb_b.log
|
|
bt_expert_egg MP.EGG ZWB.EGG
|
|
sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/" ZWB.EGG
|
|
# pilot 1 (node A, shooter) = madcat (proven servo constraints);
|
|
# pilot 2 (node B, target) = LOKI (the #92 chassis)
|
|
python - << 'EOF'
|
|
lines = open('ZWB.EGG').read().splitlines(True)
|
|
n = 0
|
|
for i, l in enumerate(lines):
|
|
if l.startswith('vehicle='):
|
|
n += 1
|
|
lines[i] = 'vehicle=madcat\n' if n == 1 else 'vehicle=bhk1\n'
|
|
open('ZWB.EGG', 'w').writelines(lines)
|
|
print('vehicles set:', n)
|
|
EOF
|
|
|
|
BT_SPIN_SELF=15 BT_DMG_LOG=1 BT_DEATH_LOG=1 BT_MP_LOG=1 \
|
|
bt_launch zwb_b.log ZWB.EGG 0x0C -net 1601
|
|
sleep 2
|
|
BT_ZONE_WALK=6 BT_PICK_LOG=1 BT_GOTO=enemy BT_GOTO_STOP=90 BT_KEY_NOFOCUS=1 \
|
|
BT_DMG_LOG=1 BT_RANGE_LOG=1 BT_MP_LOG=1 \
|
|
bt_launch zwb_a.log ZWB.EGG 0x03 -net 1501
|
|
sleep 5
|
|
python ../tools/btconsole.py ZWB.EGG 127.0.0.1:1501 127.0.0.1:1601 > zwb_relay.log 2>&1 &
|
|
sleep 300 # ~7 min: enough for a full zone walk incl. both feet
|