I read this as a full implementation and independent verification task - I’ll inventory retained schemas and bound Task21-26 archives, build the verifier test-first inside `.omo/evidence/task26`, then run one read-only live verification and issue a deterministic receipt only if every archive passes.


The initial inventory confirms the existing candidate verifier authenticates only one hard-coded v4 archive and uses ordinary path reads; it does not meet the requested schema dispatch, duplicate-key, stable-descriptor, or all-binding coverage. I’m now deriving the retained archive graph and exact predecessor schemas before writing the failing fixture tests.


I found the complete retained set: five private rehearsal archives across four schemas (`archive-v1`, `archive-v3`, `archive-v4`, and `supplemental-quarantine-v1`), covering Task21’s original and supplemental archives, two Task22-era v3 archives, and Task25’s candidate-2e-bound v4 archive. I’m starting implementation with immutable synthetic fixtures that exercise each schema plus adversarial duplicate-key, unknown-schema, hash/count, symlink, hard-link, mode, unexpected-member, and binding-chain failures.


The fixture suite is green (13/13), including all four schema contracts and fail-closed adversarial cases. The verifier and inventory are now permission-bound to candidate 2e; I’m sealing the task-owned artifacts, then performing the single live read-only run with before/after archive metadata hashes and no extraction or runtime surface.


The first invocation failed before any archive was opened: the evidence reader incorrectly required the mutable evidence parent itself to be `0500` when reading a `0400` seal (`root directory mode/type drift`). No receipt was created and the live archive snapshot remained untouched. I’m correcting that evidence-parent policy to accept only private `0500/0700` directories while keeping archive roots strictly `0700`, adding the regression fixture, and then resuming the one actual archive traversal.


I read this as final delivery - report the sealed verifier outcome, coverage, artifacts, verification, and cleanup.

**PASS — READY_FOR_PREFLIGHT**

All five retained Task21-26 archives were conclusively verified read-only:

- 4 schemas: v1, v3, v4, supplemental-quarantine-v1
- 5 archives
- 86 scopes total
- 391 files and 82 directories
- Canonical manifest digests, raw manifest/receipt hashes, payload tree digests, member counts, modes, ownership, nlink, and candidate-2e binding chain passed
- Stable `O_NOFOLLOW` descriptor reads passed
- Before/after live archive metadata and byte snapshots were identical
- No extraction, restoration, archive/runtime/profile/service/network/Git action

Artifacts:

| Mode | SHA-256 | Path |
|---|---|---|
| `0500` | `59798c73c4590c2fbc5b43580cd136202a49c3f8856cc8ef942bebce7fa5eb7b` | `.omo/evidence/task26/verify_retained_archives.py` |
| `0400` | `ff3e01c122a14de81aff42905a65c51d61e8e851fb5b3a9e8bf436a91d487638` | `.omo/evidence/task26/test_archive_verifier.py` |
| `0400` | `29db87f2855c4804dbbc69244e68d9fb9f51808f7f7759fb592ed68f5f090185` | `.omo/evidence/task26/retained-archive-schema-inventory.json` |
| `0400` | `a4ae612719b80286def6346a790ce4ea6e5bd58d604feffa59a7b7c64f6157a0` | `.omo/evidence/task26/retained-archive-verifier-permission-seal.json` |
| `0400` | `6fd1bb07777a65abf350be19af69a42719e76a49f7e4ed119c50f9e181660414` | `.omo/evidence/task26/retained-archive-verification-receipt.redacted.json` |

Validation:

- Tests: **14 passed**
- Verifier LSP errors: none
- Test LSP: two static inference findings on the intentional malformed-inventory mutation
- Ruff: one unused `stat` import in the sealed test artifact
- Initial pre-traversal invocation failed on an overly strict evidence-parent mode check; regression added and final live traversal passed
- Temporary snapshots and redirected bytecode cache removed; no task process or temporary live artifact remains


I read this as a focused quality repair and receipt supersession - I’ll correct the typed negative fixture and lint issue, eliminate all artifact-owned LSP findings without suppression, atomically reseal dependent hashes, run the requested validators once, then perform one read-only live traversal with full before/after proof.


The quality repair is complete in source: the malformed-inventory case now uses nested `TypedDict` construction and mutates the typed archive row directly, preserving the negative assertion; the unused import is gone; verifier JSON boundaries and CLI are fully typed without ignores or diagnostic suppression. The prior receipt has been retained under a hash-qualified superseded name, and the new seal atomically binds the repaired verifier, test, unchanged inventory, and prior receipt hash.


I read this as final preflight closure - report the clean validation and superseding artifact hashes.

**PASS — READY_FOR_PREFLIGHT**

- Tests: **14 passed**, single run
- Ruff verifier + tests: **zero findings**
- LSP verifier + tests: **zero errors/warnings**
- Live traversal: all **5 archives / 4 schemas PASS**
- Before/after archive content and metadata: **identical**
- Dependent hash chain: **PASS**
- Modes preserved: verifier `0500`; sealed artifacts `0400`
- No product, profile, runtime, archive, service, network, or Git actions

New hashes:

| Artifact | SHA-256 |
|---|---|
| Verifier | `12b97aa72e2df86719dbb7b80b477237d590aaaea81a9f812f321a1566936528` |
| Tests | `1b92ac7250d1af013204d8074176b971307211eddee91606d4cdd0fcd05efd79` |
| Inventory | `29db87f2855c4804dbbc69244e68d9fb9f51808f7f7759fb592ed68f5f090185` |
| Permission seal | `28ff72fdb7925cbdcd8e7dd7e8c058bcca42cab3377c34078164766197ed6968` |
| Current receipt | `597a37e4912d729b3b5f6022bccff6dc12a73b024128805980f5ab1ade4fb83d` |

The current v2 receipt explicitly supersedes prior receipt:

`6fd1bb07777a65abf350be19af69a42719e76a49f7e4ed119c50f9e181660414`

The prior receipt remains sealed at its hash-qualified superseded path.