diff --git a/FABRIC-3.md b/FABRIC-3.md
index b4f7c7b..ef8152f 100644
--- a/FABRIC-3.md
+++ b/FABRIC-3.md
@@ -1431,7 +1431,7 @@ graph TD
EXPIRE["✅ EXPIRE reframed: session end
= VM detach via COOL (§B + D.2)"]
RUNCAP["❌ Runtime capsule construction
from thumbdrive content — SCOPED 2026-08-27 (§F.6)"]
- MINT["❌ Ongoing MINT word (Phase 8 + D.3)"]
+ MINT["❌ Ongoing MINT word (Phase 8 + D.3)
SCOPED 2026-08-27 (§F.8) — GPT dropped, single-device confirmed OK"]
PENTAGON["📍 Pentagon: Hera/Hermes/Artemis/
User-VM/Console, K5 (D.2b)"]
MSGSHAPE["✅ Hermes message shape known
(MSG-CELLS, MSG-ALLOC/DELIVER)"]
MSGMIGRATE["❓ Message-bus migration of
attach/verify/bind (D.4)"]
@@ -1514,6 +1514,11 @@ finished). Dashed arrows = softer "gates/informs" relationships.
on-device key while capsules are signed by the offline root CA's snakeoil intermediate.
Neither chain validates the other; a future audit pass should keep this distinction explicit
rather than let "PKI" get treated as one undifferentiated mechanism.
+- **`MINT` closed out the GPT question for the whole arc, not just itself** (§F.8) — GPT was
+ never actually load-bearing anywhere in this design; every node that referenced it
+ (`CERTVERIFY`, `WIREBIND`, `RUNCAP`, `HOTPLUG`) was already treating raw devblock-0 as the
+ working format. Dropping GPT converts all of those from "interim, revisit later" to simply
+ "the design," retroactively.
**Not yet done:** an ordered plan (which node to attack first, given the graph). Per Captain
Bob's own framing, that's the next pass — "start asking and answering questions iteratively
@@ -1757,7 +1762,10 @@ Two things, read directly from the code, changed the shape of this node:
the metadata partition, how `identity_src_devblocks` bounds a variable-length FORTH source);
whether the source is plain FORTH text authored once at mint time or something a user can edit
and have re-read on next attach; the interaction with `CERTVERIFY` (does verification gate
-reading this content, or only gate the resulting birth).
+reading this content, or only gate the resulting birth). **Partially settled by `MINT`'s own
+scoping pass (§F.8, decision 2):** this region's first devblock holds a new
+`user_identity_seed_t` record, and the FORTH source itself occupies the remaining devblocks —
+narrows "the exact read path" question above, though the read-side code is still unwritten.
### F.7 — `CERTVERIFY` (Zuse-signed user-cert verification)
@@ -1806,6 +1814,68 @@ function's design (this pass decided *what* it must extract, not its implementat
shares this exact cert format on the signing side) constructs the DER bytes in the first place
— DER *encoding* has never been needed in this kernel before, only decoding.
+### F.8 — `MINT` (the last piece of the original Tripod vision)
+
+Two real dependencies surfaced while scoping this node that weren't in the §E graph, both
+resolved before any design decision was needed:
+
+1. **GPT.** The earlier-decided drive layout (`project_usb_thumbdrive_gpt_layout`:
+ ~1GB GPT metadata partition + remainder) has no parser or writer anywhere in kernel code.
+ **Dropped entirely, per direct instruction (2026-08-27) — not deferred, decided against.**
+ The raw `homeblocks_sig_t`-at-devblock-0 layout every other node in this arc (`CERTVERIFY`,
+ `WIREBIND`, `RUNCAP`, `HOTPLUG`'s own `sig_start_fblock=0`) already treats as an interim
+ stand-in is now the **permanent** format. The "small metadata region + remainder is user
+ storage" *proportion* from the old GPT design still holds — it's just a plain devblock-count
+ convention within one raw device now (metadata = devblocks `0..N` covering the sig header +
+ cert + identity-source regions; everything past that is the user's own general block-storage
+ pool directly, consistent with `FIRSTTOUCH`'s pool clarification in §F.6). No GPT-parser
+ node needed in the graph at all — this closes that thread rather than deferring it.
+2. **Single-device USB driver.** `xhci_dev_t`'s BOT/MSC state (`device_ctx`, `bulk_in_ring`,
+ `bulk_out_ring`, `bot_data_buf`) are singular fields, not per-slot arrays — only one USB MSC
+ device is usable at a time today. This looked like it might conflict with the vision's
+ "while Zuse is active, mint a second blank thumb" (implying two drives attached at once).
+ **Confirmed no conflict**: Zuse's own identity is system-resident, loaded from Artemis's own
+ top-of-device block-fence at boot (`kernel_main.c:634-687`), never from a removable thumb.
+ `MINT` only ever needs the one target blank drive attached — today's single-device path is
+ sufficient, no driver work needed for this node.
+
+**Decisions made 2026-08-27:**
+
+1. **The minted identity gets a real keypair**, not just a pubkey badge. `virtio_rng` +
+ `ed25519_keygen()` generate a fresh seed/pubkey pair for the new identity, stored on *their*
+ thumbdrive (never system-resident — matches `SSDSCOPE`'s "regular users stay
+ thumbdrive-resident" read). Keeps the door open for a user VM to sign something itself
+ later, per `D.5`'s "identity is common to every VM" direction, without redesigning the cert
+ format again.
+2. **Storage layout** (direct extension of `RUNCAP`'s already-decided `identity_src_offset`/
+ `identity_src_devblocks` region, §F.6 — no further header growth needed): that region's
+ *first* devblock holds a new `user_identity_seed_t` record (`magic`/`version`/`seed[32]`/
+ `pubkey[32]`/`crc` — same shape as `zuse_cert_devblock_t`, a new type rather than reusing
+ that Zuse-specific one, per this project's own "dedicated header per real-shaped feature"
+ convention); the *remaining* devblocks in that region hold the raw FORTH personality/init
+ source `RUNCAP` reads at birth.
+3. **`drive_uuid`**: a fresh, independent 16 random bytes from `virtio_rng` at mint time (not
+ derived from the identity seed — two separate random draws, matching `homeblocks_sig_t`'s
+ own field being logically "which physical drive," not "whose identity").
+4. **Cert construction**: builds the exact `CERTVERIFY` (§F.7) format — `SubjectPublicKeyInfo`
+ = the new pubkey, `serialNumber` = `drive_uuid`, signed with **Zuse's own seed** via
+ `ed25519_sign()` (real signing capability already exists, Phase 8). This is the first
+ confirmed caller that needs DER *encoding*, not just the decoding `x509_ed25519.c` already
+ has — flagged in `F.7` already, restated here since `MINT` is where it's actually needed.
+5. **Header assembly**: `hdr_crc` via the existing `homeblocks_sig_compute_crc()` — no new
+ checksum logic, this function already does exactly what's needed.
+
+**Not yet scoped (deferred within this node):** the default personality/init FORTH content a
+freshly minted identity starts with (shared open question with `RUNCAP`, §F.6: mint-time-fixed
+vs. user-editable); a monotonic-ns source for `minted_time_ns` — checked, and there is no
+working precedent anywhere in this codebase today (`CapsuleDesc.created_ns` is hardcoded to `0`
+at generation time, not a real example to follow); the `S" name" MINT` FORTH word's own
+stack/argument shape; whether `MINT` refuses to overwrite a drive that already reads as a
+recognized home-blocks drive (`HOMEBLOCKS_SIG_OK`), mirroring `WRITE(10)`'s
+refuse-on-non-blank-media posture — reasonable by analogy, not decided here. The hard blocker
+is unchanged and already modeled in the graph: `WRITE(10)` still doesn't exist, so `MINT`
+cannot write anything to real or QEMU-emulated USB media yet regardless of the above.
+
### D.5 — Scope expansion (2026-08-27): identity is common to every VM, not just users
Surfaced while scoping `ACLKEY`, stated directly: *"the whole object is to deliver a