Files
BFM-decomp/phase-ends/current/logs/T8.c2.md
T

3.8 KiB

T8.c2: delever drain + rung R + gte_rt_m comment fix

Setup

  • R22 pre (.run/logs/t8c2_r22_pre.log) 218/218; delever_oracle --snapshot-baseline at 6a2684514 (7428 objs); --calibrate ov_SC04_011 ov_SC03_015 md_SC07_004 main -j 16 OK (146/146, controls OK); restruct --selftest --real 114/114 OK.
  • Driver: .run/T8/batch.sh LABEL [--headers]: calibrate if stale, apply --batch 300 -j 12, require exit 0 + final N/N, R22 to .run/P36/baseline/r22_<label>.log, git add -f ledger/run/apply/batch/calibrate logs, commit_task src include.

Batches (all final N/N identical, R22 218/218 each)

  • t8_tus1 3695293d75: 300 files, 431 bodies, removed 68 / needed 802.
  • t8_tus2 bb84bb1ab5: 295 files, 495 bodies (11 lever-free, 416 residue, 68 NOTHING-USABLE), removed 255 / needed 1591 / refused 145.
  • t8_tus3 ac3a3b5f8a, t8_tus4 586729bb45: 1 file each, src/md_MAIN_003/md_MAIN_003_jr_800D1E18.c, removed 0, refused 2; the only change is the label in two REFUSED asm-data .section markers. A fixed point: --plan keeps listing this file (4 "removable" sites, all REFUSED asm-data), so the plan never reaches "nothing to do". TU plan treated as drained. harness: delever --plan counts REFUSED asm-data sites as removable.
  • t8_hdr1 836575d461: 15 headers, removed 22 / needed 33; --plan --headers afterwards: 0 drawable.
  • Sites removed by kind (ledger, labels t8_*): gte-lever 343, barrier 2 (total 345). Refused: gte-lever 88, instruction 29, launder 32.

Rung R

  • t8_r1 (limit 20): 0 closed, 880 compiles, 14 s.
  • t8_r2 (no limit, cap 60, -j 12): 1424 TU bodies judged (146 LEVER-FREE: R7 142, R6 4), then serial header bodies at ~4 min each (6 done, ~100 left), so I killed it (pid) at ~60 min wall. --restore cleared the in-flight header; src/shared clean. R22 218/218; commit 075d9a2c74. Log .run/P36/delever/recipes_t8_r2.log.
  • Residue not reached: ~95 header bodies.
  • Finding: 139 of the banked edits are pure brace wraps (x; -> { x; }, .run/T8/bracewrap.py) with "0 pin(s) gone". Example: ov_SC03_094_jr_8017BEBC.c func_80183CC4: its t8_r2 row has empty sites (earlier tus9 row: 3 pins + keepalive NEEDED). Bodies that are RESIDUE in the ledger but have no live site get a no-op textual change banked as LEVER-FREE. The census moved only by volatile-needed -6 / asm -4. Expert: decide whether to revert the brace wraps.
  • --propagate: blocked. Recipe rows carry no after_text ("no banked reshape … (its row must carry after_text)"), so no rung-R bank can be propagated. Siblings in TUs were all judged by t8_r2 anyway. harness gap (tools/ is off-limits to me).

Comment fix (b2: commit after r2)

  • .run/T8/comments.py: 55 files. The GTE VARIANT gte_rt_m…gte_rt`` header comment now names gte_rtv0tr_m/gte_rtv0tr (55 lines), and // !FAKE: gte via gte_rt_m … gte_rt names gte_rtv0tr_m … gte_rtv0tr (70 lines). The script asserted that each file calls gte_rtv0tr_m and never gte_rt_m. 0 gte_rt_m left in src/include.

Gates

  • lever_census.py --check -j 16: 3,364 sites, 3,364 marked, 0 UNMARKED, orphans 0, OK.
  • R22 final (.run/P36/baseline/r22_t8_comments.log): 218 passed 0 failed.
  • Census strict before: pins 1868, asm 1409, gte-levers 434, direct GTE 0 (inline 0), volatile-needed 1587, register-needed 50.
  • Census strict after: pins 1868, asm 1405, gte-levers 91, direct GTE 343 (inline 343), volatile-needed 1581, register-needed 50.
  • Finding (important): removing a gte-lever (rung B) strips the extra clobber but leaves the statement as inline __asm__ GTE with no marker (e.g. 800.c "mtc2 $14, $11;" : : "r"(rotp) : "$12","$13","$14" );, plus trailing spaces where the marker was). This undoes T7.1's "direct GTE 0": the 343 removals became 343 inline direct-GTE statements. They need converting to the gte_inline.h macros (gte_consolidate?). Not in scope here.