mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 23:52:03 -04:00
fd2433b6d2
The first agent of the one-at-a-time T7 loop, on the rank-1 head class (130 copies, two NEEDED pins $2/$3). Six mechanical rung-G runs had been stuck at best 1 on this body; the agent closed it at 0. - the move is not a dial: the iVar3/puVar2 pair that every arm of the if/else chain set is deleted, and each arm gets the whole address expression (puVar4 = &D_80192454 + (((u32)param_2) & 0xffff) * 0x14). Two locals fewer than the levered text — shorter AND byte-identical, which is what this phase is for. - mechanism, read from gcc 2.7.2's own source and confirmed in the .lreg/.greg dumps: scoping the base into the arm makes the block hold THREE local quantities instead of two, and block_alloc's unrolled case 3 (local-alloc.c:1491-1496) falls through into case 2 and applies qty_compare(0,1) a second time, undoing its own exchange — so the $2/$3 assignment flips (density formula local-alloc.c:1578-1596); deleting the cross-block variable also takes it out of global.c, where set_preference (global.c:1535+) had given it a copy preference for $5 through puVar4's argument copy, merged by expand_preferences (global.c:781-825) and overriding first-fit at global.c:1034-1067. - why the engine could not find it: the u16-width move six runs found is a local optimum that IMITATES the fix by manufacturing the third quantity while paying an andi. No generator in the registry deletes a variable, so the search could not leave that basin. That is the toolify target and it follows in its own commit (R16). - verified before banking (--try: score 0, mine 74 ins, target 74 — MATCH), then delever --apply-body: ... IDENTICAL on 1 object(s) (0.11 s) — KEPT, ledgered (rung E, a1) delever --propagate: 129 of 129 sibling(s) banked, 0 refused check-all: 218 passed, 0 failed of 218 lever_census --check: 30,098 pin/asm sites, 30,098 marked !FAKE, 0 UNMARKED — OK audit_public: OK — 0 offenders among 11445 tracked paths - snapshot row 10; the agent's body.c and mechanism.md kept in the pack as the reading behind the generator.
phase-ends/ — the living record
PhaseEnd_Phase[N].md— written at each phase boundary (format defined inPROJECT_CONTEXT.md). Append-only history: build log, deviations, commit message, rules added, changelog. Never deleted.CURRENT_PHASE.md— the in-phase autonomous log: approved phase plan, per-task checkboxes, current task pointer, blockers. Created at phase start, updated after every task, absorbed into the PhaseEnd file and deleted at phase close. This is the crash/compaction recovery point.DIGEST.md— the session-start digest: every phase's synopsis + every rule in full + the corrections to PROJECT_CONTEXT.md; appended at every PhaseEnd (P7).logs/Phase<N>.md— the archived in-phase worklogs (R19): NOT in the load order; consult on demand only.- Sessions read
PROJECT_CONTEXT.md, thenDIGEST.md, then the THREE most recentPhaseEnd_*.mdin numeric order, thenCURRENT_PHASE.md(if present), and replay its 🛑 SESSION CHECKPOINT block verbatim into the chat — every session (R64 candidate, 2026-09-05; ≈100k tokens + the checkpoint).