FABRIC-3.md §XXXV: bump ratified artemis.img target from 256 MiB to 1 GiB
Build / build-amd64-iso (push) Waiting to run
Build / build-aarch64-iso (push) Waiting to run
Build / build-riscv64-img (push) Waiting to run

Captain Bob asked for extra safety margin over the earlier 256 MiB
recommendation. Updated every reference in §XXXV.2/.4/.6 consistently.
Still decision only -- no image built yet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-17 11:30:34 -04:00
co-authored by Claude Sonnet 5
parent c19b6febc2
commit e4a52c01be
+11 -11
View File
@@ -5341,9 +5341,9 @@ current 30 MiB image is short of one single trial's worth (516 MB / 8 ≈ 64.5 M
than 2x. **This has to be fixed before any writer design matters**, and it is a two-part fix, not than 2x. **This has to be fixed before any writer design matters**, and it is a two-part fix, not
one: one:
1. **Grow `disk/artemis.img` itself.** Recommend resizing to **256 MiB** -- a real SSD/USB drive 1. **Grow `disk/artemis.img` itself.** Recommend resizing to **1 GiB** -- a real SSD/USB drive
on actual bare-metal hardware will dwarf this trivially, so there is no reason to size the dev on actual bare-metal hardware will dwarf this trivially, so there is no reason to size the dev
image tightly; 256 MiB gives comfortable headroom over the summary-only budget computed below image tightly; 1 GiB gives comfortable headroom over the summary-only budget computed below
(§XXXV.4) even before any tick-sampling extension, without gambling on a number that turns out (§XXXV.4) even before any tick-sampling extension, without gambling on a number that turns out
short mid-campaign. **Not done yet -- flagging the concrete risk found while scoping this, short mid-campaign. **Not done yet -- flagging the concrete risk found while scoping this,
not fixing it, per this session's own instruction not to apply unrequested fixes:** growing the not fixing it, per this session's own instruction not to apply unrequested fixes:** growing the
@@ -5356,9 +5356,9 @@ one:
already-minted thumbdrive identities and everything else live on this image already-minted thumbdrive identities and everything else live on this image
(`project_thumbdrive_identities_minted_20260906.md`). Two real options, genuinely open, not (`project_thumbdrive_identities_minted_20260906.md`). Two real options, genuinely open, not
decided here: (a) write a proper migration -- read the fence's live content at the current decided here: (a) write a proper migration -- read the fence's live content at the current
30 MiB geometry, then rewrite it at the correct offsets for the new 256 MiB geometry, before 30 MiB geometry, then rewrite it at the correct offsets for the new 1 GiB geometry, before
ever letting anything else touch the grown file; or (b) accept identity loss and re-mint fresh ever letting anything else touch the grown file; or (b) accept identity loss and re-mint fresh
on a newly-created blank 256 MiB image, since this is presently a dev/QEMU test artifact, not on a newly-created blank 1 GiB image, since this is presently a dev/QEMU test artifact, not
a production one -- Captain Bob's call, not assumed here either way. a production one -- Captain Bob's call, not assumed here either way.
2. **Confirm `disk/artemis.img` is genuinely shared across all three ISAs' sequential QEMU 2. **Confirm `disk/artemis.img` is genuinely shared across all three ISAs' sequential QEMU
invocations** (same `$(ARTDISK)` path referenced identically for the amd64/aarch64/riscv64 invocations** (same `$(ARTDISK)` path referenced identically for the amd64/aarch64/riscv64
@@ -5407,7 +5407,7 @@ base, living in the same top-of-device system-metadata fence Zuse's genesis mark
### XXXV.4 -- What actually gets persisted: trial summaries, not a raw tick mirror ### XXXV.4 -- What actually gets persisted: trial summaries, not a raw tick mirror
Given the 30 MiB (soon 256 MiB) device is 2-3 orders of magnitude smaller than raw per-tick data Given the 30 MiB (soon 1 GiB) device is 2-3 orders of magnitude smaller than raw per-tick data
at any realistic campaign size, raw per-tick mirroring to block storage is ruled out entirely, not at any realistic campaign size, raw per-tick mirroring to block storage is ruled out entirely, not
just decimated: just decimated:
@@ -5416,13 +5416,13 @@ just decimated:
of trial-end aggregate physics reads already available at that point (e.g. final of trial-end aggregate physics reads already available at that point (e.g. final
`fleet_k_q48`/`fleet_conserved`, cumulative `switch_count`). At 18 trials/ISA x 3 ISAs = 54 `fleet_k_q48`/`fleet_conserved`, cumulative `switch_count`). At 18 trials/ISA x 3 ISAs = 54
records total, this is trivially small (well under 1 MiB even generously sized per record) -- records total, this is trivially small (well under 1 MiB even generously sized per record) --
no tuning, no risk of overrunning even the current 30 MiB device, let alone 256 MiB. This alone no tuning, no risk of overrunning even the current 30 MiB device, let alone 1 GiB. This alone
is enough to reconstruct the whole campaign's pass/fail and top-line physics-conservation is enough to reconstruct the whole campaign's pass/fail and top-line physics-conservation
picture with zero dependency on any live serial capture. picture with zero dependency on any live serial capture.
- **v2, optional, explicitly deferred:** decimated sub-trial sampling (e.g. one row every N - **v2, optional, explicitly deferred:** decimated sub-trial sampling (e.g. one row every N
heartbeat ticks instead of every tick) for anyone who wants intra-trial resolution later. Sized heartbeat ticks instead of every tick) for anyone who wants intra-trial resolution later. Sized
against whatever's left of the device budget after v1 and whatever migration/resize path against whatever's left of the device budget after v1 and whatever migration/resize path
(§XXXV.2) is chosen -- rough order of magnitude, at 256 MiB total and reserving generous (§XXXV.2) is chosen -- rough order of magnitude, at 1 GiB total and reserving generous
headroom for existing fence consumers, a decimation factor in the range of several dozen ticks headroom for existing fence consumers, a decimation factor in the range of several dozen ticks
per sample would be needed to fit an 18-trial/ISA x 3-ISA campaign at anything like the per sample would be needed to fit an 18-trial/ISA x 3-ISA campaign at anything like the
§XXXIV.5-measured per-trial tick volume; **not sized precisely here, left for whoever §XXXIV.5-measured per-trial tick volume; **not sized precisely here, left for whoever
@@ -5444,10 +5444,10 @@ leaving more margin against both unknowns landing on the expensive side at once.
available as a documented follow-up top-up pass later if N=2's data looks clean and time allows, available as a documented follow-up top-up pass later if N=2's data looks clean and time allows,
rather than committing to the larger N up front. rather than committing to the larger N up front.
### XXXV.6 -- Drive-resize path RATIFIED: fresh 256 MiB image, full re-mint, no migration ### XXXV.6 -- Drive-resize path RATIFIED: fresh 1 GiB image, full re-mint, no migration
attempted (2026-09-17) attempted (2026-09-17)
Captain Bob resolved §XXXV.2's option (a)-vs-(b) fork directly: **build a brand-new 256 MiB Captain Bob resolved §XXXV.2's option (a)-vs-(b) fork directly: **build a brand-new 1 GiB
`disk/artemis.img` rather than migrate the existing 30 MiB one**, on the reasoning that `disk/artemis.img` rather than migrate the existing 30 MiB one**, on the reasoning that
re-minting will invalidate the existing identities regardless of whether a fence migration is re-minting will invalidate the existing identities regardless of whether a fence migration is
attempted -- i.e. option (a)'s extra complexity (careful top-of-device fence migration to attempted -- i.e. option (a)'s extra complexity (careful top-of-device fence migration to
@@ -5460,7 +5460,7 @@ over even if the bytes were migrated correctly, since the signing material itsel
device it was minted on. device it was minted on.
**Ratified shape:** **Ratified shape:**
- Build a **new, blank 256 MiB `disk/artemis.img`** from scratch -- not a resize of the current - Build a **new, blank 1 GiB `disk/artemis.img`** from scratch -- not a resize of the current
file. No migration code written or needed. file. No migration code written or needed.
- **Zuse re-minted fresh** on the new image (genesis marker, root CA placement, per - **Zuse re-minted fresh** on the new image (genesis marker, root CA placement, per
`docs/03-architecture/word-acl/DESIGN.md`'s Phase 8 design and `docs/03-architecture/word-acl/DESIGN.md`'s Phase 8 design and
@@ -5482,7 +5482,7 @@ device it was minted on.
applies either way. applies either way.
- Disposal of the two stale partial amd64 runs' data (§XXXIV.5's own still-open item) is unrelated - Disposal of the two stale partial amd64 runs' data (§XXXIV.5's own still-open item) is unrelated
to this pivot and remains undecided. to this pivot and remains undecided.
- Whether the old 30 MiB `disk/artemis.img` gets deleted/archived once the new 256 MiB image is - Whether the old 30 MiB `disk/artemis.img` gets deleted/archived once the new 1 GiB image is
confirmed live (§XXXV.6). confirmed live (§XXXV.6).
- **Nothing built yet** -- this section (including §XXXV.6's ratified drive-resize decision) is - **Nothing built yet** -- this section (including §XXXV.6's ratified drive-resize decision) is
design/decision only, no capsule/C code, no new disk image, and no re-mint actually performed design/decision only, no capsule/C code, no new disk image, and no re-mint actually performed