Fix extract_doe_region.py SLOT_FMT drift; regenerate report with real data
Build / build-amd64-iso (push) Canceled after 0s
Build / build-aarch64-iso (push) Canceled after 0s
Build / build-riscv64-img (push) Canceled after 0s

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:
Robert Allan James
2026-09-17 23:28:50 -04:00
co-authored by Claude Sonnet 5
parent 553ca9163d
commit 9aebbb224b
15 changed files with 244 additions and 44 deletions
@@ -0,0 +1,68 @@
<?xml version='1.0' encoding='UTF-8' ?>
<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='576.00pt' height='432.00pt' viewBox='0 0 576.00 432.00'>
<g class='svglite'>
<defs>
<style type='text/css'><![CDATA[
.svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
fill: none;
stroke: #000000;
stroke-linecap: round;
stroke-linejoin: round;
stroke-miterlimit: 10.00;
}
.svglite text {
white-space: pre;
}
.svglite g.glyphgroup path {
fill: inherit;
stroke: none;
}
]]></style>
</defs>
<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
<defs>
<clipPath id='cpMC4wMHw1NzYuMDB8MC4wMHw0MzIuMDA='>
<rect x='0.00' y='0.00' width='576.00' height='432.00' />
</clipPath>
</defs>
<g clip-path='url(#cpMC4wMHw1NzYuMDB8MC4wMHw0MzIuMDA=)'>
<rect x='0.00' y='0.000000000000057' width='576.00' height='432.00' style='stroke-width: 1.07; stroke: none; fill: #FFFFFF;' />
</g>
<defs>
<clipPath id='cpMzguNjR8NTcwLjUyfDI0LjI5fDM2MS45Mg=='>
<rect x='38.64' y='24.29' width='531.88' height='337.63' />
</clipPath>
</defs>
<g clip-path='url(#cpMzguNjR8NTcwLjUyfDI0LjI5fDM2MS45Mg==)'>
<polyline points='38.64,361.92 570.52,361.92 ' style='stroke-width: 1.07; stroke: #E5E5E5; stroke-linecap: butt;' />
<polyline points='38.64,277.51 570.52,277.51 ' style='stroke-width: 1.07; stroke: #E5E5E5; stroke-linecap: butt;' />
<polyline points='38.64,193.10 570.52,193.10 ' style='stroke-width: 1.07; stroke: #E5E5E5; stroke-linecap: butt;' />
<polyline points='38.64,108.69 570.52,108.69 ' style='stroke-width: 1.07; stroke: #E5E5E5; stroke-linecap: butt;' />
<polyline points='38.64,24.29 570.52,24.29 ' style='stroke-width: 1.07; stroke: #E5E5E5; stroke-linecap: butt;' />
<polyline points='183.70,361.92 183.70,24.29 ' style='stroke-width: 1.07; stroke: #E5E5E5; stroke-linecap: butt;' />
<polyline points='425.46,361.92 425.46,24.29 ' style='stroke-width: 1.07; stroke: #E5E5E5; stroke-linecap: butt;' />
<rect x='74.91' y='193.10' width='217.59' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #4A90D9; fill-opacity: 0.85;' />
<rect x='316.67' y='193.10' width='217.59' height='0.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #E07B39; fill-opacity: 0.85;' />
<text x='183.70' y='190.75' text-anchor='middle' style='font-size: 8.54px; font-family: "Liberation Sans";' textLength='11.88px' lengthAdjust='spacingAndGlyphs'>0/1</text>
<text x='425.46' y='190.75' text-anchor='middle' style='font-size: 8.54px; font-family: "Liberation Sans";' textLength='11.88px' lengthAdjust='spacingAndGlyphs'>0/1</text>
</g>
<g clip-path='url(#cpMC4wMHw1NzYuMDB8MC4wMHw0MzIuMDA=)'>
<text x='33.71' y='364.95' text-anchor='end' style='font-size: 8.80px;fill: #4D4D4D; font-family: "Liberation Sans";' textLength='15.64px' lengthAdjust='spacingAndGlyphs'>-5%</text>
<text x='33.71' y='280.54' text-anchor='end' style='font-size: 8.80px;fill: #4D4D4D; font-family: "Liberation Sans";' textLength='15.64px' lengthAdjust='spacingAndGlyphs'>-2%</text>
<text x='33.71' y='196.13' text-anchor='end' style='font-size: 8.80px;fill: #4D4D4D; font-family: "Liberation Sans";' textLength='12.72px' lengthAdjust='spacingAndGlyphs'>0%</text>
<text x='33.71' y='111.72' text-anchor='end' style='font-size: 8.80px;fill: #4D4D4D; font-family: "Liberation Sans";' textLength='12.72px' lengthAdjust='spacingAndGlyphs'>3%</text>
<text x='33.71' y='27.31' text-anchor='end' style='font-size: 8.80px;fill: #4D4D4D; font-family: "Liberation Sans";' textLength='12.72px' lengthAdjust='spacingAndGlyphs'>5%</text>
<text x='183.70' y='372.90' text-anchor='middle' style='font-size: 8.80px;fill: #4D4D4D; font-family: "Liberation Sans";' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>2</text>
<text x='425.46' y='372.90' text-anchor='middle' style='font-size: 8.80px;fill: #4D4D4D; font-family: "Liberation Sans";' textLength='4.89px' lengthAdjust='spacingAndGlyphs'>8</text>
<text x='304.58' y='385.04' text-anchor='middle' style='font-size: 11.00px; font-family: "Liberation Sans";' textLength='96.00px' lengthAdjust='spacingAndGlyphs'>Concurrent workers</text>
<text transform='translate(13.05,193.10) rotate(-90)' text-anchor='middle' style='font-size: 11.00px; font-family: "Liberation Sans";' textLength='169.77px' lengthAdjust='spacingAndGlyphs'>Fraction of trials with fail_count &gt; 0</text>
<text x='218.58' y='416.18' style='font-size: 11.00px; font-family: "Liberation Sans";' textLength='27.53px' lengthAdjust='spacingAndGlyphs'>mode</text>
<rect x='252.30' y='404.47' width='15.86' height='15.86' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #4A90D9; fill-opacity: 0.85;' />
<rect x='309.85' y='404.47' width='15.86' height='15.86' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #E07B39; fill-opacity: 0.85;' />
<text x='274.35' y='415.43' style='font-size: 8.80px; font-family: "Liberation Sans";' textLength='29.31px' lengthAdjust='spacingAndGlyphs'>uniform</text>
<text x='331.91' y='415.43' style='font-size: 8.80px; font-family: "Liberation Sans";' textLength='58.67px' lengthAdjust='spacingAndGlyphs'>heterogeneous</text>
<text x='304.58' y='23.35' text-anchor='middle' style='font-size: 9.00px;fill: #666666; font-family: "Liberation Sans";' textLength='26.50px' lengthAdjust='spacingAndGlyphs'>2 trials</text>
<text x='304.58' y='14.98' text-anchor='middle' style='font-size: 12.00px; font-weight: bold; font-family: "Liberation Sans";' textLength='309.09px' lengthAdjust='spacingAndGlyphs'>Trial Fail Rate by Concurrency Level x Workload Mode</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB