Fix extract_doe_region.py SLOT_FMT drift; regenerate report with real data
FABRIC-3.md §XXXV.15. §XXXV.12 added an explicit _align_pad field to doe_trial_slot_t to fix a struct-alignment bug, but never updated the Python extractor's SLOT_FMT/SLOT_CRC_SPAN to match -- every field after isa was read from the wrong byte offset, so slot_crc read wrong bytes entirely and every legitimate record (including the real, live campaign's own first two clean trials) was flagged as CRC-corrupt. Fixed; SLOT_SIZE assertion tightened from <= to == to catch this drift immediately next time. Regenerated multiuser_doe_report.pdf against the real campaign's actual first two trials: run=0 (cfg=0, nw=2, uniform, fail=0) and run=1 (cfg=5, nw=8, heterogeneous, fail=0), both fleet_conserved=1 at exactly Q48.16 1.0. Real report, real data, first time this has happened for this campaign. disk/artemis.img itself and the live campaign's log directory are deliberately left uncommitted -- still being written by the running campaign. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BWpNjdwPtFLuVLaAq44L9K
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
553ca9163d
commit
9aebbb224b
+14
@@ -5855,3 +5855,17 @@ That is the natural mechanism a real fix would hook, not something to build from
|
||||
with the workflow") -- find and log these live, keep the campaign running, don't stop to fix
|
||||
each one as found. Real feature, real gap, deliberately deferred.
|
||||
|
||||
### XXXV.15 -- Extractor bug: SLOT_FMT never updated after §XXXV.12's alignment fix
|
||||
|
||||
Found checking the real, live campaign's first two trials against the console log. Both slots
|
||||
read back as "CRC mismatch" in `extract_doe_region.py` even though the kernel-side write path
|
||||
was correct and the console log showed clean trials. Root cause: §XXXV.12's struct-alignment fix
|
||||
added an explicit `_align_pad` `uint32_t` field to `doe_trial_slot_t` (`doe_region.h`), but
|
||||
`extract_doe_region.py`'s `SLOT_FMT`/`SLOT_CRC_SPAN` were never updated to match -- every field
|
||||
after `isa` was being read from the wrong byte offset, so `slot_crc` itself was read from the
|
||||
wrong bytes entirely. Fixed (`SLOT_FMT = "<QQIIIIIII8sIQ"`, `assert SLOT_SIZE == DOE_SLOT_SIZE`
|
||||
tightened from `<=` to catch exactly this kind of drift next time). Re-extracted the real
|
||||
campaign's first two trials correctly: `run=0 cfg=0 rep=14 nw=2 mode=uniform fail=0`,
|
||||
`run=1 cfg=5 rep=8 nw=8 mode=heterogeneous fail=0`, both `fleet_conserved=1`,
|
||||
`fleet_k_q48=65536` (exactly Q48.16 1.0) -- clean so far.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user