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

2.8 KiB

T3.c2 — include graph follows -Iinclude; Unkstruct_80078E78; Blk98 fold; decisions text

STATUS: blocked (try-file proofs crash in restruct.py; real selftest calibration stale). Edits committed (green on selftests, audit, R22).

Changes

  • tools/delever.py includers(): resolve(rel, name) = includer-relative path when it exists, else include/<name>; scan list adds include/*.h (non-recursive). Cache key prefixed I| so pre-change cache entries (includer-relative only) rebuild instead of being reused.
  • include/struct_types.h: hand-written Unkstruct_80078E78 (brief text verbatim) after /* head_types:end */, inside the guard.
  • src/800.c:8: typedef Unkstruct_80078E78 Blk98_80029274; replaces s32 words[38] struct. (p->words at 800.c:7484+ is a different struct.)
  • docs/struct-map-decisions.md: three TODO(T3 expert) bodies replaced verbatim.

Commands

  • restruct.py --selftest → 54/54 OK; type_census.py --selftest → 24/24 OK.
  • scratch .run/P38/T3/hdrs_check.py: headers_of(md_SC07_004.c) contains include/common.h True, include/struct_types.h True.
  • --audit-types (t3c2_audit) → 1182 audited; 26 violations; 0 lines mention struct_types.
  • R22 (t3c2_r22) → extract-all: 217 extracted, 0 failed of 217 (+ main, serial), check-all: 218 passed, 0 failed of 218, exit 0. Blk98 fold byte-identical, no revert.
  • try-file, all 9 TUs (t3c2_try_1..10): no per-file final line; every run raises before printing any body verdict:
    • AttributeError: 'int' object has no attribute 'split' at restruct.py:526 pass_hint (from work_file_S:1027, DIFFERS path): ov_SC06_032_jr_80182890, ov_MAIN_012_jr_8015A3C8, ov_SC03_107_jr_8015A3C8, md_MAIN_036.
    • Refuse: overlapping edits at N at restruct.py:687 compose_text (from cands, work_file_S:1019): ov_SC02_027_jr_8017D898, md_SC07_004 (reproduced serially), md_SC07_003, 800.c, md_MAIN_046.
  • Controls with HEAD's delever.py (pre-change include graph): ov_SC06_032 → same pass_hint AttributeError; ov_SC02_027 → same overlapping-edits Refuse. Both bugs predate change 1 (ov TUs already saw engine_types.h); change 1 only lets md/main TUs reach the same paths.
  • --selftest --real (t3c2_real) → 56/57; FAIL the oracle's calibration is current: calibrated at a8cdd934b, HEAD is 5aaa25154; linked-control OK. No func_801814AC line in the log. --help names no recalibrate flag (harness: gotcha).

For the expert

  • pass_hint: residual["pairs"] entries carry an int at p[2] (or p[1]); the .split() assumes strings.
  • compose_text overlap: edits for one body overlap each other (inserts empty in try on these TUs? not checked); likely two bases' edits on one span, or dedupe missing before cands (drop_overlaps at :665-677 exists but cands passes raw edits).
  • Both are restruct.py, outside this brief's file set: not touched.