Fix silent disk overwrite of unrecognized Artemis disks
The generic block subsystem (blk_format_or_load_disk) auto-reformatted any disk lacking its own low-level 'STFR' header at attach time, before Artemis's Forth-level BLANK/LithosAnanke/Unrecognized classification ever ran -- so ART-HALT-UNRECOG's "Disk preserved" message was false. Split detection from commit: an unrecognized/blank disk is now left PROVISIONAL (geometry computed in memory only, all writes refused) until explicitly confirmed via the new blk_subsys_confirm_format() / BLK-CONFIRM-FORMAT primitive. Artemis calls it from ART-FORMAT and ART-RESUME, never from ART-HALT-UNRECOG. Verified on amd64/aarch64/riscv64: parity intact (identical dict_hash), normal recognized-disk resume + persist-read unaffected, and a regenerated disk/artemis-unrecognized-test.img (the old copy had itself been silently corrupted by this exact bug) now stays byte-for-byte identical across a halted boot on amd64 and riscv64. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
cc6c8c43f3
commit
148c4aa12c
+28
-28
@@ -1,5 +1,5 @@
|
||||
# Capsule Block Manifest — Auto-generated
|
||||
<!-- Generated by mkcapsule --manifest 2026-08-02T10:46:45Z -->
|
||||
<!-- Generated by mkcapsule --manifest 2026-08-02T15:36:37Z -->
|
||||
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
|
||||
<!-- Hand-written justifications and immutability notes live -->
|
||||
<!-- in MANIFEST.md alongside this auto-generated index. -->
|
||||
@@ -9,7 +9,7 @@
|
||||
| Capsule | Blocks claimed | xxHash64 |
|
||||
|---------|----------------|----------|
|
||||
| `ACL.4th` | 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4015 | `0xd781d22148ff171d` |
|
||||
| `artemis:init.4th` | 4110, 4111, 4112, 4113, 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4851, 4852 | `0x02b065d1cec2ebe2` |
|
||||
| `artemis:init.4th` | 4110, 4111, 4112, 4113, 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4851, 4852 | `0xd622eb8ccb75f29a` |
|
||||
| `common:msg.4th` | 4055 | `0xa99c5bcd3877f80e` |
|
||||
| `doe-campaign.4th` | 4060, 4061, 4062, 4063, 4064, 4065 | `0x3d4549142d91ec20` |
|
||||
| `doe.4th` | 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107 | `0xb6ecf5374e8ee77c` |
|
||||
@@ -127,10 +127,10 @@
|
||||
| 4107 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
| 4108 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
| 4109 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
| 4110 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4111 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4112 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4113 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4110 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4111 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4112 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4113 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4114 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
| 4115 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
| 4116 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
@@ -139,26 +139,26 @@
|
||||
| 4119 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
| 4120 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
| 4121 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
| 4122 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4123 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4124 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4125 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4126 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4127 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4128 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4129 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4130 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4131 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4132 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4133 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4134 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4135 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4136 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4137 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4138 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4139 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4140 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4141 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4122 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4123 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4124 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4125 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4126 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4127 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4128 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4129 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4130 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4131 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4132 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4133 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4134 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4135 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4136 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4137 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4138 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4139 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4140 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4141 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4142 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
| 4143 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
| 4144 | `hermes:init.4th` | `0xbb77f3ac463f507f` | ok |
|
||||
@@ -207,8 +207,8 @@
|
||||
| 4840 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
|
||||
| 4841 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
|
||||
| 4842 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
|
||||
| 4851 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4852 | `artemis:init.4th` | `0x02b065d1cec2ebe2` | ok |
|
||||
| 4851 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
| 4852 | `artemis:init.4th` | `0xd622eb8ccb75f29a` | ok |
|
||||
|
||||
## Conflicts
|
||||
|
||||
|
||||
@@ -142,11 +142,15 @@ Block 4125
|
||||
DROP UPDATE ;
|
||||
Block 4126
|
||||
( Boot sequence -- format/resume/halt words )
|
||||
( BLK-CONFIRM-FORMAT commits the disk container -- only on )
|
||||
( paths that don't halt, so unrecognized disks stay untouched )
|
||||
: ART-FORMAT ( -- )
|
||||
." Artemis: blank disk -- formatting" CR
|
||||
ART-HDR-LBN BLK-CONFIRM-FORMAT
|
||||
ART-HDR-WRITE FLUSH ;
|
||||
: ART-RESUME ( -- )
|
||||
." Artemis: LithosAnanke disk -- resuming" CR ;
|
||||
." Artemis: LithosAnanke disk -- resuming" CR
|
||||
ART-HDR-LBN BLK-CONFIRM-FORMAT ;
|
||||
: ART-HALT-UNRECOG ( -- )
|
||||
." ARTEMIS HALT: unrecognized disk content" CR
|
||||
." Disk preserved. Manual intervention required." CR
|
||||
|
||||
Reference in New Issue
Block a user