KB: #83 paperwork -- gotcha 33 (a fix wired into a blocked transcription: compiles, reads faithfully, never runs; rules: fixes land in the LIVE path, inert transcriptions get an explicit banner, a doc-header FIXED is a claim not evidence, the bench must fail first). decomp-reference section 5 gains the recovered alarm rule (@004bf5b4 ctor socket-registration into target+0x418, @004a9b5c first-member read, death-path list empty, reset 0/FLT_MAX) + env rows BT_INCOMING_LOG / BT_DESIGNATE. AUDIO_FIDELITY F7 corrected: the July fix was dead code; the true fix + bench numbers recorded, field-verify Friday. Tracker #83 comment 1786.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016bw71WVsccjwW7uKRg4aWD
This commit is contained in:
co-authored by
Claude Fable 5
parent
b00fa39af7
commit
df188e737f
@@ -272,6 +272,19 @@ From the weapon `.SUB` records + the charge-curve `.data` constants (PE-parsed a
|
|||||||
invention" claim was wrong at the fielded level and is retracted.)
|
invention" claim was wrong at the fielded level and is retracted.)
|
||||||
**Every FireWeapon (all classes) requires a LOCKED target**: both sims gate the trigger on
|
**Every FireWeapon (all classes) requires a LOCKED target**: both sims gate the trigger on
|
||||||
*(mech+0x388) != 0 — no lock, no fire [T1].
|
*(mech+0x388) != 0 — no lock, no fire [T1].
|
||||||
|
- **INCOMING-MISSILE ALARM (#83, 2026-08-13) [T1]:** the Missile CTOR tail (@004bf5b4,
|
||||||
|
part_013.c:18426-18431) registers the missile into its target's inbound SOCKET LIST — target
|
||||||
|
= this+0x34c, class-checked as Mech (@0041a1a4 vs 0x50bdb4), Add on target+0x418 (list ctor'd
|
||||||
|
in the mech reset at int-index 0x106, right after the 0x3FC/0x400 attribute init 0/FLT_MAX =
|
||||||
|
DAT_005209d0). The TARGET'S OWN tick (@004a9b5c, file=bt/mech4.cpp, part_013.c:3218-3232)
|
||||||
|
reads the FIRST list member: empty → IncomingLock(+0x3FC)=0 (distance left stale); present →
|
||||||
|
lock=1, DistanceToMissile(+0x400) = |missilePos−mechPos| (entity positions, sqrt of the
|
||||||
|
component squares). The mech DEATH path (part_012.c:14812-14834, states 9/10 branch) walks +
|
||||||
|
empties the list. Consumers: the authored watchers (1→Start/0→Stop looped IncomingAlarm01
|
||||||
|
[1:74] n58; DistanceToMissile scalecfg ctlID=12 Tempo, 100..800→600..10). PORT: the feed
|
||||||
|
rides the BTPushProjectile simulator's salvo-LEAD rounds (mech4.cpp) — the world-entity
|
||||||
|
Missile is a blocked transcription (gotcha 33); mirror leads report on peer nodes (the
|
||||||
|
victim's inbound missiles are always mirrors).
|
||||||
- **Plain Projectile (shell) class 0xBD1 is DEAD CODE in the shipped binary**: 0xbd1 appears
|
- **Plain Projectile (shell) class 0xBD1 is DEAD CODE in the shipped binary**: 0xbd1 appears
|
||||||
exactly once in the whole export (the DefaultData lookup @004c1590); Make @004be384 has zero
|
exactly once in the whole export (the DefaultData lookup @004c1590); Make @004be384 has zero
|
||||||
code callers; the fully-recovered AC fire path spawns nothing. Its flight body @4bddec
|
code callers; the fully-recovered AC fire path spawns nothing. Its flight body @4bddec
|
||||||
@@ -780,6 +793,8 @@ default-ON (`'0'` disables).
|
|||||||
| `BT_AUD_SMOOTH_HZ=<hz>` | footstep AudioControlSmoother intake clock override (default 28, census item 3; `=0` restores per-poll intake) |
|
| `BT_AUD_SMOOTH_HZ=<hz>` | footstep AudioControlSmoother intake clock override (default 28, census item 3; `=0` restores per-poll intake) |
|
||||||
| `BT_AUD_DOPPLER_HZ=<hz>` | doppler velocity-operand sample-and-hold clock override (default 28, census item 4; `=0` restores per-call) |
|
| `BT_AUD_DOPPLER_HZ=<hz>` | doppler velocity-operand sample-and-hold clock override (default 28, census item 4; `=0` restores per-call) |
|
||||||
| `BT_AUD_DOPPLER_LOG` | `[doppler]` receipt (cents/v/d/h/hm2, capped 6000; h=1 fresh / 0 held / -1 legacy) |
|
| `BT_AUD_DOPPLER_LOG` | `[doppler]` receipt (cents/v/d/h/hm2, capped 6000; h=1 fresh / 0 held / -1 legacy) |
|
||||||
|
| `BT_INCOMING_LOG` | `[incoming]` missile-alarm receipt (#83): LOCK/clear edges + ~1Hz held lines with distance (mech4.cpp PerformAndWatch latch) |
|
||||||
|
| `BT_DESIGNATE=enemy` | bench designator (#83 rig): stamps the production target slots (+0x388/+0x37c/+0x38c) with the nearest live mech on frames where the boresight pick found no mech — standoff locks; a real pick still wins |
|
||||||
| `BT_CRIT_PROBE=<zone>` | hammer one own-mech zone every 4s (crit-propagation diag, task #2; mech4.cpp) |
|
| `BT_CRIT_PROBE=<zone>` | hammer one own-mech zone every 4s (crit-propagation diag, task #2; mech4.cpp) |
|
||||||
| `BT_REPL_LOG` | replicant/MP replication log (mech4.cpp) |
|
| `BT_REPL_LOG` | replicant/MP replication log (mech4.cpp) |
|
||||||
| `BT_GOTO="enemy"\|"x z"` / `BT_GOTO_LOG` | self-driving beeline (to the enemy or a map coordinate) + its log |
|
| `BT_GOTO="enemy"\|"x z"` / `BT_GOTO_LOG` | self-driving beeline (to the enemy or a map coordinate) + its log |
|
||||||
|
|||||||
@@ -1087,3 +1087,22 @@ the bench INTERPOLATES -- never print "sustains indefinitely" from a solver row
|
|||||||
never flew (the #173 verdict flipped twice on exactly this). Census of the whole class (11
|
never flew (the #173 verdict flipped twice on exactly this). Census of the whole class (11
|
||||||
rows, 2 HIGH fixed, migration checklist for the shared 28 Hz sim-clock): open-questions.md
|
rows, 2 HIGH fixed, migration checklist for the shared 28 Hz sim-clock): open-questions.md
|
||||||
SSCadence-census + the wf_d875938f journal.
|
SSCadence-census + the wf_d875938f journal.
|
||||||
|
|
||||||
|
## 33. A FIX WIRED INTO A BLOCKED TRANSCRIPTION: code that compiles, reads faithfully, and never runs (#83, 2026-08-13)
|
||||||
|
The port carries two kinds of reconstructed code: LIVE paths (what the game executes) and
|
||||||
|
TRANSCRIPTIONS -- byte-faithful class reconstructions kept for reference or blocked on an
|
||||||
|
engine mismatch. The world-entity `Missile` (missile.cpp) is the archetype: blocked by the
|
||||||
|
2007 engine Entity-base mismatch, it never flies; live missile flight is the BTPushProjectile
|
||||||
|
simulator (mech4.cpp). The July F7 fix (cc2b109) wired the incoming-missile alarm feed into
|
||||||
|
`Missile::MoveAndCollide` -- correct logic, faithful comments, clean build, marked FIXED in
|
||||||
|
the doc header -- and it was DEAD CODE for a month. #83 ("alarm missing entirely") was filed
|
||||||
|
by an era witness two weeks after the "fix" shipped, and the doc's FIXED claim steered this
|
||||||
|
audit wrong for half a session (the F7 body text still described the pre-fix state; the
|
||||||
|
header said fixed; NEITHER was field truth).
|
||||||
|
**Rules:** (1) when a subsystem has a transcription AND a live path, a fix lands in the LIVE
|
||||||
|
path -- grep for what actually executes (receipts in field logs are the arbiter), not what
|
||||||
|
reads correctly. (2) Mark inert transcriptions with an explicit *** TRANSCRIPTION ONLY --
|
||||||
|
THIS NEVER RUNS *** banner naming the live site (missile.cpp now does). (3) A doc header's
|
||||||
|
FIXED is a claim, not evidence -- a fix without a FIELD receipt ([incoming], [seqloop], etc.)
|
||||||
|
is T3 at best. (4) The fix's own bench must fail first: the first #83 bench (solo) produced
|
||||||
|
zero receipts because solo seats never fill -- proving the rig, then the fix, in that order.
|
||||||
|
|||||||
+18
-3
@@ -432,9 +432,24 @@ inbound lock/launch on the player exists; DistanceToMissile = range to nearest i
|
|||||||
the sample himself on the board — `[1:74] IncomingAlarm01 n58` — and confirms it is the
|
the sample himself on the board — `[1:74] IncomingAlarm01 n58` — and confirms it is the
|
||||||
incoming-missile alarm, adding "**it was sped up in the pods**": independent field confirmation
|
incoming-missile alarm, adding "**it was sped up in the pods**": independent field confirmation
|
||||||
of both the sample identity AND the authored DistanceToMissile→tempo acceleration (the 100..800
|
of both the sample identity AND the authored DistanceToMissile→tempo acceleration (the 100..800
|
||||||
→ tempo 600..10 mapping above). Gitea #83 (comments 1781/1783). The reconstruction target is now
|
→ tempo 600..10 mapping above). Gitea #83 (comments 1781/1783).
|
||||||
fully specified except the binary's exact IncomingLock/DistanceToMissile update rule (what sets
|
|
||||||
+0x3FC/+0x400 — seeker-locked-only vs any-inbound, and nearest-missile selection).
|
**TRULY FIXED 2026-08-13 (b00fa39) — the July "fix" was DEAD CODE (gotcha 33).** The cc2b109
|
||||||
|
driver lived in `Missile::MoveAndCollide` — but the world-entity Missile is a blocked
|
||||||
|
transcription that never flies; live flight is the BTPushProjectile simulator (mech4.cpp). So
|
||||||
|
the attributes stayed 0/FLT_MAX in every field build while this file's header said F7 fixed —
|
||||||
|
which is exactly what Oracle reported as #83. Binary update rule recovered [T1]: the missile
|
||||||
|
CTOR registers into the target mech's inbound socket list (`@004bf5b4` tail: this+0x34c
|
||||||
|
class-checked vs 0x50bdb4 → target+0x418 Add); the TARGET'S tick (`@004a9b5c`, bt/mech4.cpp)
|
||||||
|
reads the FIRST list member — lock=1 + dist=|missilePos−mechPos| entity positions, lock=0 on
|
||||||
|
empty; the death path empties the list (and reset writes 0/FLT_MAX — `DAT_005209d0`).
|
||||||
|
Port fix: the feed now rides the push simulator's per-frame update, salvo LEAD only (the
|
||||||
|
port's lead round = the binary's ONE cluster Missile per trigger, so one report per salvo =
|
||||||
|
one registration); replicant mirror leads report identically → the alarm reaches the VICTIM's
|
||||||
|
cockpit in MP, where inbound missiles are always mirrors. Bench (2-node standoff LRM duel):
|
||||||
|
54/55 lock edges per node, dist closing 792→87 over ~2.2s, beeper STARTs at live authored
|
||||||
|
tempo 10 (far) → 435 (close) — on mirrors, i.e. the field case. Receipts: `[incoming]`
|
||||||
|
(BT_INCOMING_LOG) + the always-on looped `[seqloop]`. Field-verify Friday.
|
||||||
|
|
||||||
<a name="f5"></a>
|
<a name="f5"></a>
|
||||||
#### F5. FootStep is a contact LEVEL, not a clip-transition pulse (High, CONFIRMED)
|
#### F5. FootStep is a contact LEVEL, not a clip-transition pulse (High, CONFIRMED)
|
||||||
|
|||||||
Reference in New Issue
Block a user