From aca3d5855a3e21dcc490311ef6f684effebc3e52 Mon Sep 17 00:00:00 2001 From: Daniel Samson <12231216+daniel-samson@users.noreply.github.com> Date: Sun, 9 Aug 2026 23:26:12 +0100 Subject: [PATCH] =?UTF-8?q?volume-manager:=20S1=20close-out=20=E2=80=94=20?= =?UTF-8?q?partition=20fixtures=20in=20the=20root=20aggregate;=20docs=20(S?= =?UTF-8?q?1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add volume-manager to build.zig's root package-test loop, so `zig build test` runs the partition parser's nine host tests and a fixture added there can never be silently skipped. Flip the identity-ladder build status in storage-design-rationale.md: rungs 1 (GPT partition GUID) and 3 (FAT serial + label) are built, joining rung 4; rung 2 (filesystem UUID) waits on a non-FAT engine; the volumes.csv map and the id-derived mount path land with S2. --- build.zig | 1 + .../storage-design-rationale.md | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/build.zig b/build.zig index 28c7786..4e05d0c 100644 --- a/build.zig +++ b/build.zig @@ -442,6 +442,7 @@ pub fn build(b: *std.Build) void { csv_library, xkeyboard_config_library, b.dependency("fat", .{}), + b.dependency("volume-manager", .{}), b.dependency("display", .{}), b.dependency("ps2-bus", .{}), b.dependency("usb-hid", .{}), diff --git a/docs/file-system-development/storage-design-rationale.md b/docs/file-system-development/storage-design-rationale.md index 380204e..a5c2f81 100644 --- a/docs/file-system-development/storage-design-rationale.md +++ b/docs/file-system-development/storage-design-rationale.md @@ -215,16 +215,16 @@ matrix-proven shape; genuinely open. broke whenever a drive changed ports or enumeration order; `UUID=` entries exist because device-path identity failed. danos skips that era: the mount map (`volumes.csv` — configuration, read by the volume manager) keys on - **content identity, never port or discovery order**. Build status: only - rung 4 (MBR signature + partition index) is implemented today; the fuller - rungs and the `volumes.csv` map itself land with the identity ladder, so - today a single volume mounts at the fixed `/volumes/usb` and its recorded - identity is not yet consulted to pick a path. The target ladder the prober - reads off the medium, strongest first: - 1. GPT partition GUID — 128-bit, unique, stable for the volume's life *(planned)*; + **content identity, never port or discovery order**. Build status: rungs 1, + 3, and 4 (GPT partition GUID, FAT serial + label, MBR signature + index) are + implemented (S1); rung 2 waits on a non-FAT engine. The `volumes.csv` map and + the id-derived mount path land with S2, so today a single volume still mounts + at the fixed `/volumes/usb` and its recorded identity is not yet consulted to + pick a path. The ladder the prober reads off the medium, strongest first: + 1. GPT partition GUID — 128-bit, unique, stable for the volume's life — **built (S1)**; 2. filesystem UUID (ext-family and most modern formats, in the superblock) *(planned)*; 3. FAT volume serial + label — 32 bits, weak (dd-cloned sticks share it) - but what real sticks carry *(planned)*; + but what real sticks carry — **built (S1)**; 4. MBR disk signature + partition index — **built**; a bare FAT with no table takes index 0 over the whole device; 5. nothing — an anonymous volume: generated mount name, no persistence *(planned)*.