Lisp Machine Museum Documentation Examiner
Genera Museum Documentation

CADR-WEB-303 C-M10 private disk overlay reimplementation specification

Status and reconstruction claim

CADR-WEB-303/ABI1.5/protocol-v6/C-M10-PERSIST-v1 is a clean-room format, deterministic reference backend, browser IndexedDB durable store, and guest/controller integration for private CADR disk pages. It provides semantic and representation compatibility with the selected C-M10 format profile: exactly sized canonical records, SHA-256-addressed immutable pages and tree nodes, base-equal removal, generation/head activation, recovery selection, and bounded retention collection. It also supplies a verified canonical overlay interchange, discard, clone, compact, and recover operations. Tests use synthetic overlay writes; controller and process-loss tests independently hash the selected public base image before reading exact requested base pages.

The selected CW3-PERSISTENT/process-loss gate is closed by an external supervisor that sends SIGKILL to the complete Chromium process group at every named durable seam, restarts the same disposable browser profile, and verifies the complete old or new activated generation. This is not physical power removal, storage-device cache-loss evidence, or quota exhaustion. The implementation does not claim historical CADR private-pack compatibility, LMFS transaction compatibility, or public API compatibility. It neither reads nor stores the selected base image, licensed media, a private disk, or a world snapshot. The previously sketched binary CDROVL1 encoding remains unselected; the implemented cadr-m10-overlay-export-v1 is an explicitly modern, canonical-JSON clean-room interchange instead.

Normative language and evidence codes

MUST, MUST NOT, SHOULD, and MAY state this selected reconstruction profile, not unobserved historical behavior.

Code Evidence class Establishes Does not establish
DEC-M10 Reviewed reconstruction decision Profile name, immutable base identity, record sizes, fixed node/head/wrapper fields, transaction order, and gates A historical CADR on-disk format
SRC-M4 Tracked readable source Existing 1024-byte block-service boundary and selected base identity M10 persistence semantics or durable behavior
ROAD-M10 Repository roadmap M10 deliverable and old-or-new-generation persistence objective Exact fields, algorithms, or browser implementation
INF-M10 Explicit clean-room inference Candidate manifest offsets, in-memory object store, reference model, and defensive parser policy That those choices were selected historical or Sol layouts
TEST-M10 Synthetic Node tests Exercised canonical records, transaction seams, recovery, and wrapper integrity paths Real media behavior, browser persistence, or a power-loss campaign
SRC-M10-IDB Tracked readable source Closed IndexedDB schema, copied immutable staging, session/writer fencing, bounded recovery, and the one-transaction head/activation primitive CADR or filesystem behavior
SRC-M10-CTRL Tracked readable source COW planning, real host-request completion order, uncertainty fencing, interchange, discard, clone, compact, and recover operations Historical CADR or LMFS behavior
TEST-M10-IDB Disposable Chromium campaign Chromium IndexedDB behavior under each durable seam's abort, dedicated-worker termination, and page reload; follow-up writers; fallback recovery; activation bounds; schema, handle, durability, foreign-origin/UUID, version-change, active-closure, and compaction checks OS power loss, quota exhaustion, or private media
RUN-M10-KILL External disposable Chromium supervisor Whole-process-group SIGKILL and same-profile restart at all six durable seams plus two outstanding-transaction probes selected exactly an old or new complete generation Physical power removal, device-cache loss, or quota behavior
TODO-RUNTIME-M10 Open oracle The precise unclosed browser/runtime probe Any result before it runs

Profile, compatibility levels, and evidence ledger

The profile binds an immutable base of 269,562,880 bytes, exactly 263,245 logical 1024-byte blocks, with LBAs 0 through 263244, to SHA-256 bb16e46ad81decfe1efe691d36b6aa4ce3fd4ffb82474365de3520989d397cb5. The base is a read-only input callback, never an object in the overlay store.

Level Includes Reserved
L0-format Strict parsers and canonical serializers for CDROVN1, CDROVM1, CDROVH1, and the modern cadr-m10-overlay-export-v1 interchange Historical archive layouts
L1-memory Deterministic in-memory COW map, generations, atomic head/activation, recovery, and bounded collection Worker and browser persistence
L1-wrapper CDRM10W1 binding wrapper around a complete CDRM5WK1 v3 envelope Snapshot restore integration
L2-indexeddb-selection UUID-confined Chromium IndexedDB object staging, active closure, compaction, and head/activation selection Physical power and quota behavior
L3-controller Real radix-tree COW planning, host-request bridge, pre-guest staging, IN_DOUBT fencing, interchange, discard, clone, compact, and recover LMFS atomicity
CW3-PERSISTENT/process-loss Whole Chromium process loss and restart at every durable seam yields old or new complete state Physical power removal and device-cache loss
Subsystem Source/artifact witness Runtime/manual witness Status
Block extent and base identity SRC-M4: cadr-m4-media.mjs No M10 runtime observation selected by DEC-M10
M10 transaction objective ROAD-M10: browser implementation roadmap No durable browser run selected order plus INF-M10 backend
Fixed records DEC-M10 No preserved format artifact inspected normative selected profile
Phase 1 manifest offsets INF-M10 No preserved format artifact inspected frozen for this selected profile
Phase 1 implementation cadr-m10-persistence.mjs and synthetic tests No private-media run L0-format/L1-memory only
Browser durable selection cadr-m10-indexeddb.mjs Chromium 150.0.7871.124 headed-under-Xvfb and headless campaigns on synthetic data, 2026-07-29 L2-indexeddb-selection only
Durable controller and worker bridge cadr-m10-controller.mjs Synthetic controller/bridge test and durable Chromium backend campaign, 2026-07-30 L3-controller
Browser process-loss recovery run-cadr-m10-process-kill-browser.mjs Eight external process-group kills and same-profile restarts, including stage/head transactions with requests outstanding, Chromium 150.0.7871.124, 2026-07-30 CW3-PERSISTENT/process-loss

Architecture and state model

immutable base-page callback ──> full 24-bit radix-256 map ──> page objects
                                      │                         (SHA-256 key)
                                      v
                                node objects (SHA-256 key)
                                      │
                                      v
                         complete manifest ──> head + activation atomically
                                      │
                    active/previous/snapshot/clone/export references ──> GC roots

The deterministic backend has separately inspectable meta, disks, pages, nodes, manifests, heads, activations, activation_quarantine, refs, and gc_marks stores. This is an INF-M10 test model, not a browser storage schema. It retains only hashes and synthetic bytes supplied by the caller; a base page is read when comparison or an unmapped read needs it and is never copied into those stores. The caller MUST independently establish that its callback exposes the complete, immutable 269,562,880-byte base with the selected whole-image SHA-256 before initialization. The controller requires a separate identity callback and rejects unless it returns the exact hash bound into the durable controls. This prevents an accidentally mismatched base identity, but cannot prove that a dishonest or later-mutated page callback returns those bytes. Checking individual callback pages cannot establish that prerequisite, and this backend does not hash the whole base.

C-M10-IDB-v1 durable-selection adapter

C-M10-IDB-v1 is SRC-M10-IDB: a browser adapter in cadr-m10-indexeddb.mjs, not a second COW planner. SRC-M10-CTRL first constructs and validates the candidate pages, nodes, and complete manifest. The adapter copies those supplied immutable bytes before any asynchronous operation, verifies their content-address keys, then stages only pages, nodes, and manifests. The selected base is never supplied to or retained by this adapter.

Each disk UUID has one derived IndexedDB database name; a handle for one UUID cannot address another UUID's meta, head, activation, or quarantine records. A database contains only the closed records m10-meta, m10-pages, m10-nodes, m10-manifests, m10-heads, m10-activations, m10-quarantine, and m10-refs. Schema 3 upgrades the exact schema-1 and schema-2 database names in place. A schema-1 upgrade requires the complete canonical pre-reference store set, creates only m10-refs, and writes refHighWater: "0". A schema-2 upgrade retains the same stores and high-water only when m10-refs is empty. A nonempty schema-2 reference set aborts the version-change transaction without rewriting controls or references. Schema 2's public IDs contained a kind; translating a live record to the schema-3 key would strand the owner that still holds its old cleanup ID, and this closed schema has no alias or tombstone/reconciliation record with which to preserve idempotent release. This is a selected safety boundary for an unpublished candidate schema, not a claim that a deployed format can be upgraded automatically. Before that rejection, the upgrader validates every schema-2 record, requires every sequence to be at or below the persisted high-water, and rejects a sequence used by more than one kind; malformed or collision-bearing input also aborts. A schema-3 reference has exactly key, diskKey, kind, rootSha256, and canonical decimal creatorSession; a snapshot's creator session is nonzero, while durable clone/export records use zero. Its public ID is exactly lowercase-disk-uuid-hex ":" canonical-positive-decimal-u64; it contains no kind. Kind remains a closed stored record field, so a kind-tagged schema-2 spelling is malformed at the schema-3 public boundary rather than an alternative idempotence key. An absent, malformed, or noncanonical source-schema control or reference record aborts the upgrade. Byte-bearing records contain an ArrayBuffer copy and an exact lowercase hash key; control records reject unknown fields, noncanonical decimal u64s, unexpected UUID bindings, or noncanonical activation keys. Opening requires the exact sorted object-store set and requires every store to have the string key path key, autoIncrement false, and zero indexes. Missing or extra stores, a wrong key path, auto-increment, or any index reject and close the connection. Every adapter read-write transaction requests IndexedDB durability: "strict" and rejects if that transaction option is unavailable. A content-address collision requires byte equality. This is a namespace/immutability safety boundary, not a cross-origin access control replacement; browser same-origin policy separately confines another origin's IDB.

The adapter retains the selected 4096-record activation bound per UUID database. Recovery requests at most 4097 activation records and refuses an over-bound database. At the bound, publication prunes only the oldest unprotected record in that same database; it retains the current head activation and immediate predecessor, and refuses if neither can be safely removed. pinRoot(kind, exactRoot) accepts only a validated complete level-2 overlay root and persists a closed reference record with a disk-bound, kind-independent identifier. Its metadata high-water update and reference insertion are one strict transaction, so a failed insertion rolls both back and a released identifier is never reused. A review snapshot is a transient creator-session reference; clone and export are durable roots. unpinRoot(id) first validates an exact canonical same-disk ID whose sequence is no greater than the persisted high-water. It deletes a present record only in its legal current session, but a missing already-issued ID succeeds idempotently. Thus a completion-response loss after a strict delete cannot strand an otherwise opaque review lease; malformed, kind-tagged, future, and foreign IDs still reject. Durable compact marks the complete selected manifest lineage, every reachable node/page, and every durable reference root while holding the disk's writer lease. Its single sweep transaction rereads the exact writer epoch, pending generation, head bytes, and complete reference set marked earlier; it deletes only unreachable immutable objects if all still match. A concurrent writer, changed head, or changed reference set aborts the sweep. It deliberately does not truncate the selected lineage.

Every reopened durable handle advances the stored session high-water, purges every older-session transient snapshot, and clears the writer lease and any prior session's pending-generation reservation in one metadata-and-reference transaction before recovery. Clone/export roots are not purged. This is safe because publication clears the reservation in the same transaction that writes the new head and activation: a reservation left at reopen is necessarily pre-publication, while a completed publication already has a cleared reservation. Every public adapter operation rechecks that session after its asynchronous storage/hash work. Closing one handle marks only that handle closed; every subsequent operation through it rejects before durable mutation, and it does not close a newer handle's shared IDB connection. A version-change event closes the database and makes later handle use fail as a version-change error. An IndexedDB QuotaExceededError or aborted transaction is surfaced as a failed staging or activation operation; because a transaction contains the head, matching activation, and pending-generation clear together, it cannot report a partial new control pair. The quota branch is source-inspected but not capacity-exhaustion tested.

An overlay map is a three-level radix-256 tree. Its root is level 2, the next level is 1, and leaves are level 0. The index bytes of the 24-bit LBA select levels 2, 1, and 0 respectively. A zero 32-byte digest means absent. An absent mapping reads the immutable base page. The empty overlay nevertheless has one real, canonical level-2 zero-root node. A level-0 digest names an exact 1024-byte content page; upper-level digests name CDROVN1 nodes.

Invariants:

  1. A page key is SHA-256 of exactly its 1024 page bytes. A node key is SHA-256 of all 8232 canonical node bytes. A manifest and head have the distinct trailer hash rules below. Every store reread MUST reverify the key/hash relationship.
  2. No mapping may name an LBA outside the selected base range. A complete map walk MUST also reject an unreachable child prefix, wrong node level, wrong node prefix, a cycle, absent referenced object, or wrong content hash.
  3. A page equal byte-for-byte to its base page MUST be represented by an absent leaf, not a duplicate stored page. Removal prunes empty non-root paths; if the whole map is empty the canonical real zero root is used.
  4. high_water reserves monotonically increasing unsigned-64 generations. Gaps caused by a failed transaction are legal. A writer epoch is a separate monotonically increasing u64; a stale epoch MUST NOT write a head.
  5. Every successful open issues a monotonically increasing per-open session token. A new open invalidates all API objects and leases from the prior session. This fence applies to reads, writer operations, commits, pins, collection, and reopen, not merely to head publication. A read MUST recheck its token after every interleavable await and immediately before returning bytes. A pin MUST recheck after every tree/hash await and remain valid through its synchronous reference publication linearization point. Once the exact owned reference is retained, its ID MAY be delivered even if reopen invalidates the old session before the outer result await resumes; pre-publication invalidation still rejects without a pin.
  6. Root mutation and collection coordination is backend-global, not per disk. Every initialize, reopen, commit, pin, or unpin advances one root epoch and invalidates any collector derived from an older epoch.
  7. Initialization reserves the disk UUID's canonical stored record before its first await in explicit INITIALIZING phase. Reopen rejects that phase even if a head and activation have already been published. A concurrent same-UUID initialization likewise rejects and cannot return a detached handle whose runtime later diverges from the stored record. After recovery, session high-water, and metadata commit succeed, initialization synchronously changes metadata and the exact record to OPEN immediately before returning its handle. Any earlier failure removes the reservation, runtime, head, activations, metadata, and owned references if and only if the reservation is still the same canonical record in INITIALIZING; unreachable content-addressed objects may remain collection candidates.
  8. A process or reload loss while acquiring or holding a review snapshot leaves no retained transient reference after the next successful open: its session transition atomically makes the new session authoritative and purges older snapshots. An explicit clone/export root remains reachable across that transition.

Browser controller and guest completion

cadr-m10-controller.mjs is SRC-M10-CTRL. It acquires the durable writer lease before loading the verified active closure or planning any mutation and retains that lease through planning, staging, guest completion, and publication. It applies strictly ordered 1024-byte writes to the three-level radix tree, compares every changed page with the independently supplied immutable base callback, and produces only changed pages and COW nodes. It asks the durable handle to stage and reread the page/node/manifest closure before invoking the worker's existing host-complete operation. Only after that guest completion succeeds does it ask IndexedDB to publish the new head and matching activation.

If staging or validation fails first, the guest receives failure and the old head remains authoritative. If publication or its reread fails after host-complete advanced the guest, or if its response is lost after the request may have reached the worker, the controller enters IN_DOUBT, closes the durable handle, terminates and replaces the worker through its required callback, and permits no further disk operation until recover reopens and rereads the durable store. The bridge implements the existing block-read and block-write host-request framing; it adds no worker protocol branch and does not duplicate guest disk-controller state.

Snapshot-review authority

claimSnapshotReviewAuthority() is a one-claim controller capability used by the M10 review path. The frozen authority exposes only branded acquire() and revoke() methods. A successful acquire pins the current complete active root, then rereads the same generation, head sequence, manifest hash, and root hash before returning a frozen lease containing that canonical binding and release(). Neither public object contains a durable handle, an adapter method, or a root-reference identifier.

The controller synchronously fences write, export, compact, recover, open, and close while acquisition or a lease is live. Acquisition continuity failure after pin invokes opaque compensating unpin. If that cleanup also fails, no lease has been exposed; the same branded authority enters RECOVERY_REQUIRED, and its next acquire() retries the opaque cleanup through a fresh durable session before it performs a new acquire. A lease-release failure similarly preserves the mutation fence until an explicit release() retry succeeds. Because IndexedDB unpinRoot treats only an exact, already-issued same-disk ID as idempotently released, a transaction which committed but lost its completion response closes on that retry without accepting forged or future identifiers.

An ambiguous guest-completion response is an emergency fence and therefore outranks an already-held review lease. The controller changes to IN_DOUBT, detaches and closes its durable handle, and starts exactly one worker replacement without waiting for a prior release() transport promise. The frozen lease and its opaque pin remain live; its next explicit release() captures its exact release-attempt number, ambiguity epoch, and replacement-flight identity before its first await. A fresh-session retry awaits that captured flight rather than a mutable controller-global flight, reopens only after it succeeds, and rechecks all three captured identities after reopenDisk returns. If another ambiguity superseded the attempt while reopening, the returned stale handle is closed and the retry rejects without installing that handle, unpinning, releasing the lease, or changing IN_DOUBT to CLEAN. The final current retry remains IN_DOUBT through its fresh-session durable unpin and reaches CLEAN only after that unpin and the same fence recheck succeed. If an old-session unpin was already pending, its attempt token is superseded: it cannot later change lease state, and it cannot block a fresh-session retry. This is an inferred safety rule of the selected reconstruction, not a claim about CADR or LMFS. Synthetic bridge tests exercise read, unsupported-operation, and an injected already-permitted write completion response loss under a held lease; they require IN_DOUBT, one replacement, one transmitted completion, retained pin before release, and a reopened session for release. Separate adversarial cases leave the old unpin unresolved indefinitely and gate both a retry reopen and a superseding replacement; they require the stale reopen to close, no unpin before the exact replacement completes, exactly one replacement for the superseding ambiguity, and CLEAN only after the final fresh unpin. That final boundary retires the completed controller-global join marker, so a later ambiguity in the restored clean controller starts its own replacement rather than joining obsolete recovery work.

If a replacement flight fails, its rejected exact flight likewise retains IN_DOUBT and the opaque pin: the affected release cannot reopen or unpin through a failed replacement. A later ambiguity notification may establish one new replacement flight; only an explicit release retry captured against that new flight can continue. This is also an inferred recovery rule and is covered with a synthetic failing replacement.

The disposable Chromium runner binds every CDP call to its single campaign deadline. A CDP socket error or close rejects every pending request, and a silent request rejects when the remaining campaign time expires, so the polling loop cannot wait past its own bound. The runner owns Chromium as a detached process group; its cleanup uses bounded SIGTERM, escalates to SIGKILL, and treats a surviving group as a campaign failure. Unit tests use hostile socket doubles and the process-group supervisor's escalation fixtures; the unchanged eighteen-scenario Chromium campaign remains the browser persistence evidence.

Operation Durable effect
exportOverlay Emits one verified active closure as canonical cadr-m10-overlay-export-v1 bytes
importOverlay Verifies the complete archive and republishes its tree under a local manifest extending the current head
discard Rewrites every mapped LBA to immutable base bytes, producing the canonical empty real root
cloneTo Requires the destination worker-replacement callback, initializes another UUID-confined database, and imports the verified source closure without sharing mutable controls; failure deletes the partial destination or reports aggregate cleanup failure
compact Marks all selected lineage manifests and reachable nodes/pages, then atomically removes only unreachable immutable objects; selected lineage is not truncated
recover Closes the stale handle and accepts only a fresh writable head or read-only bounded fallback from the durable adapter

The controller-local mutation owner also serializes recover and close. Either operation rejects while planning, commit, import, discard, export, clone source capture, or compaction is active. recover retains that owner across the entire durable reopen, so a new mutation or close also rejects until recovery finishes. close never silently races an operation whose callbacks may still run.

Canonical records

All multi-byte integers are little-endian. A parser MUST reject wrong total size, wrong magic/schema/version, unknown flags, nonzero reserved bytes, overflow, out-of-range resources, and a digest mismatch. The implementation copies input bytes before retaining them so later mutation cannot alter a validated object.

CDROVN1 radix node

CDROVN1 is exactly 8232 bytes: 40 header bytes plus 256 32-byte child digests. There is no room for an in-record digest; the object address is SHA-256 of all 8232 bytes. This follows directly from the selected size and fields (DEC-M10).

Offset Width Field Rule
0 8 magic ASCII CDROVN1 followed by NUL
8 2 schema 1
10 1 level 0, 1, or 2
11 1 flags zero
12 4 header bytes 40
16 4 node bytes 8232
20 4 child count 256
24 8 prefix Canonical for its level
32 8 reserved zero
40 8192 child digests 256 SHA-256 values; all-zero means absent

For level 2 the prefix MUST be zero. For level 1 it MUST have its low 16 bits zero; for level 0 its low 8 bits zero. The child at index i of an upper node has prefix parent-prefix OR (i << (level * 8)). A complete walk applies the base LBA bound at the level-0 child, not merely the nominal 24-bit address space.

CDROVM1 complete manifest

CDROVM1 is 352 bytes: a 320-byte header followed by SHA-256 of bytes 0..319. Only the COMPLETE flag (1) is legal. The fields below are the frozen Phase 1 candidate offset table chosen under INF-M10: the reviewed decision selected all required fields and sizes but did not assign their offsets. Any change requires a new schema or selected profile; an implementation MUST NOT silently reinterpret bytes written under this profile.

Offset Width Candidate field
0 8 CDROVM1 plus NUL
8 4 schema 1
12 4 header bytes 320
16 4 manifest bytes 352
20 4 flags COMPLETE
24 8 generation
32 8 parent generation (lineage only)
40 8 base bytes 269562880
48 8 base blocks 263245
56 4 block bytes 1024
60 4 reserved zero
64 8 overlay entry count
72 4 fanout 256
76 4 depth 3
80 16 disk UUID
96 32 base SHA-256
128 32 profile SHA-256
160 32 artifact-set SHA-256
192 32 parent manifest SHA-256
224 32 root-node SHA-256
256 64 reserved zero
320 32 SHA-256 of header bytes 0..319

Generation zero is the genesis manifest: both parent generation and parent hash are zero. A later generation MUST name an older generation and a nonzero parent manifest. Opening verifies the entire parent generation chain and validates the current manifest's exact reachable map count. The manifest records lineage only; it does not encode a separate delta list. Phase 1 retains that complete ancestry as a collection root. It implements no history compaction or parent-chain truncation. A future compactor must define a separately activated baseline and compatible lineage rule under a new profile before it can discard ancestors.

CDROVH1 active head

CDROVH1 is exactly 296 bytes. Its final 32 bytes are SHA-256 of bytes 0..263. All fields and offsets in this table are DEC-M10.

Offset Width Field
0 8 CDROVH1 plus NUL
8 4 schema 1
12 4 bytes 296
16 4 flags zero
20 4 reserved zero
24 8 head sequence
32 8 writer epoch
40 16 disk UUID
56 8 active generation
64 32 active manifest hash
96 32 active root hash
128 8 previous generation
136 32 previous manifest hash
168 32 previous root hash
200 32 base hash
232 32 profile hash
264 32 SHA-256 of bytes 0..263

The initial head has a real activated generation-zero manifest and head sequence 1. An absent previous record has all-zero previous fields. A later head may name generation zero as its nonzero previous manifest; therefore generation number zero alone does not indicate absence.

CDRM10W1 snapshot binding wrapper

The safe selected wrapper is implemented in cadr-m10-wrapper.mjs. It is a 256-byte header followed by a complete CDRM5WK1 version-3 envelope described in the M5 scheduler specification. Before any asynchronous hash or semantic validation, the wrapper implementation copies the complete supplied wrapper/M5 bytes and validates and emits only that immutable candidate. A validator receives a separate copy and cannot alter the candidate through its argument or a closure over the caller's original buffer. The wrapper parser verifies the inner magic, version, flags, raw length, control witness invariants, and M5 envelope hash. It also structurally validates the selected CDRSNAP1 minor-2 header, fixed profile/artifact hashes, sorted contiguous chunk directory, required chunk set, chunk hashes, and final body hash. It then MUST invoke a supplied worker/core semantic validator and accept only an exact true result. Serialization and parsing fail closed if that validator is absent. Calling the existing worker validator directly is deferred to the integration owner; the Phase 1 module does not duplicate that semantic decoder or claim integration. Directory ordering matches the selected core: the first entry has no predecessor, so optional type 0 with flags zero is legal there; every later type MUST be strictly greater. Required types 1 through 10 remain present exactly once with required flag 1.

Offset Width Field
0 8 CDRM10W1
8 4 version 1
12 4 header bytes 256
16 4 flags: only binding-required bit 0 (1)
20 4 reserved zero
24 8 inner length
32 8 base bytes 269562880
40 4 block bytes 1024
44 4 reserved zero
48 16 disk UUID
64 16 snapshot UUID
80 8 durable generation
88 8 head sequence
96 32 manifest hash
128 32 root hash
160 32 base hash
192 32 profile hash
224 32 SHA-256 of header bytes 0..223 followed by inner bytes
256 N complete CDRM5WK1 v3 inner envelope

cadr-m10-overlay-export-v1 interchange

The implemented interchange is canonical UTF-8 JSON with an outer {body,sha256} envelope. sha256 covers the byte-exact canonical body. The body binds the schema, source disk UUID, selected base/profile/artifact hashes, source generation, entry count, root hash, and sorted unique page and node arrays. Each object carries lowercase content hash and lowercase exact bytes. The parser limits the complete archive to 320 MiB, rejects unknown fields, duplicates, reordering, malformed hex, hash mismatch, wrong node level/prefix, cycles, aliases, missing children, unreachable extra objects, and a tree count different from entry_count. Import never imports source head, activation, session, writer, or generation-control records; it publishes a fresh manifest in the destination UUID namespace.

This is an INF-M10 clean-room browser interchange, not a historical CADR format and not the previously sketched binary archive.

Deferred binary CDROVL1 archive

CDROVL1 is not implemented. DEC-M10 fixes its 320-byte header, then N * 64 sorted directory entries and payloads, followed by a final hash. A directory entry is (kind u32, flags-zero u32, offset u64, length u64, sha256[32], reserved-zero u64), sorted by kind and hash; the archive contains exactly the reachable closure and has a 320 MiB maximum. Its header offsets and digest binding were not selected, so implementing a codec would falsely invent an interchange format.

TODO-RUNTIME-M10-CDROVL1-HEADER: obtain a reviewed header offset/digest table only if binary CDROVL1 interoperability becomes a separate selected profile, then add strict export/import codecs, malformed archive cases, maximum-size checks, and a closure comparison against the in-memory map.

Lifecycle, transaction, and recovery model

The durable state machine is:

CLEAN --beginWriter(epoch)--> CLEAN/leased
  --validated base comparisons--> private COW objects
  --core completion--> DIRTY + paused working root
  --reserve generation--> complete manifest
  --atomic head + activation--> published generation
  --reread verified head--> CLEAN

post-core pre-activation failure --> SAVE_FAILED + paused candidate working root
corrupt/unavailable current head --reopen--> prior candidate or RECOVERY_REQUIRED
no valid activated candidate --reopen--> refuse to mount

The DIRTY state is a logical pause after the guest/core-completion boundary and before durable publication. If any later pre-activation step fails, the disk remains paused in explicit SAVE_FAILED, retains the candidate as workingRootSha256, and continues to expose the unchanged durable root for reads. It MUST NOT unpause or report the old head as a clean completion. The browser controller strengthens this reference-backend state: after guest completion, uncertain publication terminates and replaces the worker and requires durable reopen; before guest completion, it reports host failure and may release the lease. Explicit discard and recover are implemented maintenance operations.

Commit contract

Preconditions: the disk is writable, the caller owns the current writer epoch, the expected head sequence matches, each write has an exact 1024-byte page, and writes are in strictly increasing LBA order. Duplicate or unordered writes are rejected rather than made order-dependent. A backend accepts only one commit invocation at a time for a disk and rejects another immediately. Reopen is likewise rejected while the commit is active.

Required order:

  1. Validate disk binding, epoch, head sequence, resource limits, write order, and every LBA.
  2. Read each relevant immutable base page and convert byte-equal writes into map removals.
  3. Build changed pages and exactly the affected COW three-node paths privately.
  4. CAS-insert each page/node by hash and reread it with hash verification.
  5. Cross the core-completion seam.
  6. Publish the working root in DIRTY/paused runtime state.
  7. Reserve a new generation from high_water; a later abort may leave this gap.
  8. Build, CAS-insert, and reread a complete manifest.
  9. Recheck the open-session token, writer epoch, expected in-memory head, stored head bytes, and identical current activation. In one non-awaiting logical action, replace heads[disk] and write the identical activation at activations[disk, head-seq].
  10. Reread and verify the active head, manifest, root, and map; only then become CLEAN and report durable success.

The same current-head checks run after validation and again immediately before activation, after the last await or injected callback. The head/activation action is logically atomic in the deterministic backend: no callback or await separates its two map mutations. A production durable backend MUST supply an equivalent all-or-neither transaction. An error before that action leaves the old active head. Pages, nodes, a reserved generation, or a manifest may leak and are later collection candidates; they are not active state. If core completion already succeeded, that error produces the paused SAVE_FAILED state described above. An error at or after publication is uncertain: the caller MUST reread the head. If it names the new validated manifest, the operation reports durable success with recoveredAfterFault; otherwise it reports the original failure.

Immediately before that non-awaiting publication, the backend quarantines malformed records within an already bounded activation log and preflights one free slot. At the 4096-record boundary it preserves every open disk's current activation and immediate predecessor, proves sufficient unprotected candidates exist, then removes the oldest candidates before adding the new activation. It rejects without partial canonical-history pruning if no safe slot exists. Publication therefore cannot produce record 4097 and report a durable head that recovery categorically refuses to scan.

Every named transition has an injectable before-* and after-* seam: validation, base comparison, private build, page CAS, core completion, dirty publication, generation reservation, manifest CAS, head/activation, head reread, and clean publication. TEST-M10 runs a synthetic fault at all of them. This proves only the in-memory transition implementation, not loss behavior of IndexedDB, OPFS, browser termination, or an actual power source.

Browser durable-selection suffix

SRC-M10-IDB implements only the durable suffix of this transaction. Its caller first owns steps 1--8, reserves a generation through the adapter, and supplies a complete candidate manifest plus the immutable closure to stage. The adapter revalidates the candidate's disk/profile/artifact binding, direct parent, reachable node/page closure, entry count, session, writer lease, and expected active head. It then performs this browser-specific order:

  1. before-stage; copy, validate, CAS-stage immutable candidate bytes; then after-stage.
  2. Verify the candidate closure and reread current control state.
  3. before-head-activation; boundedly preflight an activation slot.
  4. In one IndexedDB read-write transaction, recheck the stored old head and its matching activation, then put the next head, identical next activation, and pending-generation clear. The transaction's completion is the publication point.
  5. after-head-activation, before-reread-head, a fresh atomic control snapshot and complete closure verification, then after-reread-head.

The callback ledger is exactly before-stage, after-stage, before-head-activation, after-head-activation, before-reread-head, and after-reread-head. Hooks occur only outside an active IDB transaction. Therefore a callback hook cannot extend a transaction across an arbitrary callback: it observes either the pre-publication pair or the completed transaction. These hooks do not interrupt an outstanding request inside the publication transaction. A rejection before completion leaves the old selected head; a post-completion callback/re-read error performs the normal uncertain-result reread and returns durable success only if that reread names the new head.

TEST-M10-IDB ran a disposable Chromium 150.0.7871.124 origin both headed under Xvfb and headless against all six ledger seams. For each seam it separately injected an exception, terminated the dedicated worker at the parked hook, and reloaded the page; it also mutated the caller's candidate page only after commit had entered. Each restart saw exactly generation/head (0,1) or (1,2) with the original matching map root, never a head without its matching activation or a late-mutated page. After each of the nine pre-publication faults, a fresh reopened writer cleared the abandoned reservation, reserved generation 2, and durably committed head sequence 2. The same campaign retained a nonmutating canonical full-store hash for a second same-origin UUID database, reopened and reread an iframe's foreign-origin database, rejected real missing-store, extra-store, wrong-key-path, auto-increment, and indexed schemas, proved a stale handle's close() did not close the current handle or permit closed-handle metadata mutation, instrumented page-realm read-write transactions to require strict durability, forced fallback recovery from a corrupt current head while quarantining a forged high-sequence activation, and published at the real 4096-record activation boundary. It exported the exact empty active closure and removed staged unreachable page/node objects without changing the active generation. It also forced a same-origin IDB version upgrade to confirm that the old handle was fenced. The HTTP harness served only an exact preloaded fixture allowlist, validated Host, and returned 404 for GET and HEAD probes of repository-private and unrelated paths.

RUN-M10-KILL separately exercises the production controller and IndexedDB adapter inside a dedicated browser Worker. Its guest endpoint is an explicitly synthetic host-request protocol responder, not production cadr-worker.js or a running CADR Wasm machine. In addition to the six parked callback seams, synchronous probes post an out-of-renderer signal and enter Atomics.wait on a SharedArrayBuffer before returning from the IndexedDB transaction scheduler. The first stage request or head-publication metadata request therefore remains outstanding until the external supervisor kills the complete Chromium process group. Repeated campaign runs selected the complete old state at both outstanding-transaction barriers.

Before launching Chromium, the supervisor reads the selected base from a local path, requires exactly 269,562,880 bytes, independently computes the selected whole-image SHA-256, and refuses any mismatch. The isolated controller Worker then uses bounded HTTP Range requests for the actual base pages and obtains the verified identity from the host. The campaign no longer attests the selected hash while serving unrelated zero pages.

RUN-M10-KILL used a separate host process, not page script, to launch Chromium with a disposable persistent profile. At each of the six seams the page parked the durable operation, the host sent SIGKILL to the complete Chromium process group, waited for exit, restarted Chromium on the same profile, and reopened the complete closure. before-stage, after-stage, and before-head-activation selected generation/head (0,1); after-head-activation, before-reread-head, and after-reread-head selected (1,2). No run observed a mixed head/root/activation. The profile was removed after the campaign. This closes browser process loss and restart at the named seams. It does not place the kill inside an unobservable internal IndexedDB request, remove machine or storage power, test device-cache loss, exhaust quota, or use CADR media.

A later interrupted audit exposed a host-harness cleanup defect rather than a disk-format defect: Chromium had been launched as a detached process group, so an exception or abrupt supervisor loss during partial launch could leave that group alive after the evidence-producing command ended. The corrected supervisor owns a browser group from the instant it is spawned, cleans partial launches and every loop body in finally, bounds SIGTERM before escalating to SIGKILL, and uses a Linux PR_SET_PDEATHSIG wrapper tied to the exact Node parent. The wrapper remains the detached group leader while Chromium runs; parent death signals the wrapper, which kills the complete group rather than only Chromium's direct process. Process-tree tests cover parent death, an already-closed leader with a live descendant, a descendant that ignores SIGTERM, a live wrapper's bounded SIGTERM grace and escalation, and a process group that remains after final SIGKILL. The process-tree and static controls are verified. On 2026-07-30, two fresh invocations of scripts/run-cadr-m10-process-kill-browser.mjs against the resident-watchdog revision each produced old, old, old, new, new, new, old, old; after each ordinary completion, a process-table check found no matching Chromium or watchdog process and /tmp contained no cadr-m10-process-kill-* root. An abrupt signal or supervisor death can still leave that inert host directory for explicit cleanup, although the browser group is killed. These host-harness results do not strengthen the process-loss result into a physical-power claim.

Writer fencing and activation recovery

beginWriter issues a new writer epoch only when no lease is active. closeWriter releases it. Reopening first issues a new session token, advances the session high-water, and clears old leases and pending reservations, so every previous API object is stale before recovery awaits. A head records the epoch that published it, but a head sequence remains the optimistic commit comparison value. Exhaustion of any session, writer, generation, or head-sequence u64 fails closed; values never wrap.

Open/reopen uses the following defensive order:

  1. Parse and hash-verify the current head; require the identical activation keyed by its disk UUID and head sequence; then validate its active manifest, lineage, root, and map.
  2. If an intact current head supplies a valid previous binding, try that previous generation without treating a zero generation as absence.
  3. Provided the backend contains no more than 4096 activation records total, quarantine malformed keys and records, then try canonical records for the disk in descending head-sequence order. Each candidate is reread by its exact key before use. Its outer key, UUID namespace, and sequence MUST equal the parsed head's UUID and sequence; a high outer sequence cannot promote lower-sequence head bytes. A key is exactly lowercase-disk-uuid-hex ":" canonical-decimal-u64, with a nonzero sequence. Malformed records do not stop a later valid candidate, but an over-limit activation volume refuses recovery rather than performing an unbounded scan.
  4. If a fallback succeeds, retain the exact validated head and manifest bytes as a private read-only snapshot and expose only that snapshot in RECOVERY_REQUIRED; later active() calls do not return the corrupt current-head store. If none succeeds, refuse the mount. It MUST NOT manufacture an empty overlay.

This makes unactivated manifests deliberately unrecoverable: creation alone is not durable selection evidence.

References, collection, and abort behavior

Every disk's active and previous head manifests are mandatory backend-global GC roots. Callers may add named snapshot, clone, or export root references only after the complete proposed tree verifies. Each disk reserves reference identifiers from its own monotonic bounded u64 high-water; deletion never permits identifier reuse. A schema-3 identifier is exactly the disk UUID plus that unique sequence; unpin verifies the stored record's disk UUID and legal kind before deletion, so one disk cannot remove another disk's root and a caller cannot forge an alternate kind for a missing sequence. Pin publication is a linearization point: session invalidation during the synchronous map mutation rolls back the exact just-published reference and rejects, as does a store mutation that throws after insertion; invalidation after publication does not turn a successfully returned ID into an unreachable leaked root. Marking follows manifests to roots, parent manifests, nodes, and pages. The collector accepts a finite step budget and uses gc_marks; only one invocation may run across the backend at once, and it sweeps pages, nodes, and manifests only after a complete mark. Any root mutation on any disk advances the global root epoch, clears marks, and makes an older collector return invalidated before deletion. If a root mutation is already active, collection returns blocked. An interrupted or invalidated mark/sweep can leak unreachable objects, but MUST NOT delete a live one.

The store does not claim byte-level zeroing of JavaScript garbage-collected copies. This is a test backend and uses synthetic data; any durable implementation needs a separate confidentiality and deletion policy.

Semantic protocol inventory

Operation Inputs Result Failure/abort semantics
Initialize bound disk UUID, profile/artifact hashes, base-page callback one canonical INITIALIZING reservation, then activated OPEN generation-zero map reopen/concurrent initialize reject until commit; failure rolls back exact initializing owner
Read block in-range LBA mapped page or fresh base callback page stale session after any await, malformed/corrupt stored page reject; no fallback
Begin/close writer current lifecycle and epoch exclusive epoch or released lease stale/concurrent epoch rejects
Commit epoch, expected head sequence, ordered 1024-byte writes unchanged result or durable new generation follows transaction order and uncertain-head reread above
Reopen same independently verified immutable binding plus fresh base callback writable active head or read-only recovered head invalidates all earlier session handles; no valid activation refuses mount
Pin/unpin root snapshot, clone, or export; complete root hash monotonic session-snapshot or durable clone/export GC reference with opaque diskKey:sequence ID stale session, invalid tree, malformed/kind-tagged/future/foreign ID, or cross-disk ownership rejects; exact missing issued IDs are idempotent release
Collect positive finite step budget backend-global incremental mark/sweep report concurrent invocation rejects; mutation blocks or invalidates
Wrap snapshot bound overlay identity, complete CDRM5WK1 v3, and injected semantic validator CDRM10W1 bytes absent validator or structural/semantic/integrity failure rejects
IndexedDB durable selection selected binding, session/writer epoch, reserved complete manifest, immutable closure atomically activated next head plus matching activation closed-schema, stale-session, quota, version-change, bounded-activation, or closure failure rejects; a post-publication fault rereads
Worker disk bridge one existing block-read or block-write host request exact overlay/base read completion or staged-COW write completion pre-guest failure completes with host failure; ambiguous completion response or post-guest publication uncertainty terminates/replaces the worker and requires reopen
Export/import verified active closure or canonical cadr-m10-overlay-export-v1 bounded canonical archive or locally republished tree malformed, foreign binding, incomplete, aliased, cyclic, unreachable-extra, or over-size archive rejects before publication
Discard/clone/compact/recover current durable session and operation-specific destination empty overlay, independently controlled clone, collected unreachable objects, or reopened selected state stale/read-only/conflicting sessions reject; compaction never truncates selected lineage

This is a semantic JavaScript module inventory, not an historical source interface. No CADR Lisp function or historical persistence API is claimed. The worker bridge uses the already selected host-request operations and adds no new worker ABI. The layer treats all 1024-byte pages as opaque. LMFS directory structure, allocation, file update atomicity, and filesystem repair semantics are explicitly deferred; no overlay transaction is evidence of a filesystem-level atomic operation.

Conformance suite and comparison procedure

ID Profile/level Synthetic action Objective pass condition
M10-F01 L0-format Serialize/parse node, manifest, and head; mutate reserved/hash-covered bytes fixed byte sizes, candidate table, and strict rejection hold
M10-F02 L1-memory Write a base-different page, a high LBA page, then restore the first page to base lookup follows full map; base-equal write removes the mapping
M10-F03 L1-memory Close/reopen writer and attempt old epoch stale epoch is fenced
M10-F04 L1-memory Corrupt current head then reopen; corrupt every activation and reopen valid older activation is read-only recovery; no valid activation refuses mount
M10-F05 L1-memory Inject each before/after transaction seam old complete state or reread new complete state, never an in-memory mixed head
M10-F06 L1-memory Pin a snapshot root across a later remove and collect in tiny budgets marked page survives; bounded collection completes
M10-F07 L1-memory Reopen and exercise every prior API handle every stale read, mutation, lease, collection, and reopen rejects
M10-F08 L1-memory Hold one commit at an async barrier; race a second commit, reopen, and collection second commit/reopen reject and collection blocks
M10-F09 L1-memory Interleave disk-A collection with disk-B pin/commit and concurrent collection global epoch invalidates, active mutation blocks, one collector is serialized, disk-B live data survives
M10-F10 L1-memory Insert malformed, oversized, and over-volume activation keys/records malformed records quarantine without hiding a valid candidate; over-limit scan refuses
M10-F11 L0-format/L1-memory Exercise zero/partial bindings, count bounds, invalid pins, and u64 high-water exhaustion canonical validation and every no-wrap boundary fail closed
M10-F12 L1-memory Race two same-UUID initializations, commit through the sole handle, then reopen one initialization rejects; canonical reopen sees the committed head and page
M10-F13 L1-memory Delete/recreate a pin; attempt cross-disk and kind-tagged unpin IDs increase without reuse; foreign ownership and alternate-kind forgery cannot delete or idempotently release
M10-F14 L1-memory Gate old-session base read and root validation across reopen both operations reject after their await and no stale pin is published
M10-F15 L1-memory Gate after genesis head/activation, attempt reopen, remove metadata, release, then retry reopen rejects INITIALIZING; exact owned control records roll back; retry reaches OPEN and reopens
M10-F16 L1-memory Reopen synchronously inside final pin-map publication stale publication rolls back its exact reference and leaves no leaked root
M10-F17 L1-memory Fill activation log with hash-valid same-UUID heads to 4096, commit, and reopen oldest unprotected valid history prunes, size remains bounded, new head recovers
M10-F18 L1-memory Queue reopen after exact pin publication but before the outer result continuation old call returns its retained ID; foreign disk cannot unpin; reopened same disk may release it
M10-I01 L2-indexeddb-selection Abort, terminate the worker, and reload at all six external durable seams reopen selects exactly old or new complete state; every pre-publication case then admits a fresh successful writer
M10-I02 L2-indexeddb-selection Corrupt current head and add a forged higher-sequence activation carrying genesis bytes fallback returns the exact validated read-only snapshot twice; forged record is removed and quarantined
M10-I03 L2-indexeddb-selection Exercise every operation on a closed handle; open databases with missing/extra stores, wrong key path, auto-increment, or an index current handle stays usable; closed handle cannot mutate metadata; every non-exact schema rejects and closes
M10-I04 L2-indexeddb-selection Hash every store of a second UUID without reopening it; reopen/reread a foreign-origin database same-origin foreign UUID is byte-inventory unchanged; foreign origin rereads the same selected state
M10-I05 L2-indexeddb-selection Fill a real database to 4096 canonical activations, publish, and inspect current/new records survive, oldest disposable record prunes, total remains 4096
M10-I06 L2-indexeddb-selection Instrument page-realm transactions and statically require the adapter's single transaction factory every observed read-write transaction requests strict durability; no adapter bypass exists
M10-I07 L2-indexeddb-selection Export active closure, stage unreachable page/node, compact, and reread exact closure is returned; only unreachable objects disappear; active generation is unchanged
M10-I08 L2-indexeddb-selection Race commit and compact in both directions and alter the marked epoch/head before sweep controller admits only one mutation; stale epoch/head sweep rejects before deletion
M10-I09 L2-indexeddb-selection Upgrade public schema-1 plus empty and mixed-reference schema-2 fixtures; include malformed and cross-kind-collision schema-2 keys schema-1 and empty schema-2 controls/closures migrate exactly; any nonempty schema-2 ref set, malformed record, or reused cross-kind sequence aborts atomically with original owner IDs intact
M10-I10 L2-indexeddb-selection Pin a schema-3 snapshot at sequence 1, then send the former schema-2 clone sequence-1 spelling to unpinRoot the kind-tagged spelling rejects before durable mutation; the canonical pin remains present and only the exact diskKey:sequence ID may retry idempotently
M10-C05 L3-controller Cause active closure/session change after review pin, then lose first rollback completion response acquire reports the combined fault; the same branded authority's next acquire clears the opaque pin before returning a fresh lease; no mutation is admitted while recovery is pending
M10-C01 L3-controller COW-write through staged guest completion, then read, discard, import, clone, compact, and recover staging precedes guest completion and activation; every operation preserves binding and expected bytes
M10-C02 L3-controller Fail publication after completion or make an actual Worker-thread protocol fixture consume completion and exit before responding controller enters IN_DOUBT, closes the handle, terminates/replaces the Worker, and recovers only by durable reopen; this does not claim production cadr-worker.js execution
M10-C03 L3-controller Service framed block read/write through the worker bridge completion bytes and durable write order match the existing host-request protocol
M10-C04 L3-controller Hold commit/compact while attempting recover/close, then hold recover while attempting mutation/close every overlapping operation rejects and the surviving owner completes cleanly
M10-C06 L3-controller Lose a read, unsupported, or injected already-permitted write completion while a frozen review lease is held; race invalidation with a release paused before or inside unpin; gate a retry reopen while a superseding ambiguity gates replacement; fail then renew a replacement flight emergency fence is IN_DOUBT, exactly one worker replacement and completion occur per ambiguity, the opaque pin remains until explicit fresh-session release, a never-settling old unpin cannot block that retry, a superseded reopened handle closes without unpinning or making the controller CLEAN, and a failed replacement permits no unpin until a later flight succeeds
M10-H01 host campaign harness Close/error a hostile CDP socket with calls outstanding; leave a call unanswered through the remaining campaign deadline; hold a detached child through SIGTERM every pending CDP caller rejects, silent calls respect the deadline, and cleanup escalates to SIGKILL or reports non-exit
M10-P01 CW3-PERSISTENT/process-loss External host kills complete Chromium process group at each durable seam and while stage/head transactions are outstanding, then restarts same profile pre-publication seams select old complete state; post-publication seams select new complete state; outstanding head transaction selects old or new; none mix
M10-W01 L1-wrapper Wrap a structurally valid synthetic CDRSNAP1 in M5; corrupt outer or inner bytes both binding and inner integrity reject
M10-W02 L1-wrapper Omit or reject the injected validator and wrap arbitrary M5 payload bytes validator omission fails closed and arbitrary bytes never pass structural validation
M10-W03 L1-wrapper Validator mutates its argument and caller-owned M5 during an await emitted wrapper contains the exact pre-validation snapshot and reparses successfully
M10-W04 L1-wrapper Hash a directory with optional type 0 followed by required types 1..10 first type zero is accepted and every subsequent type remains strictly increasing

Run the Phase 1 synthetic checks with:

node tests/test_cadr_m10_persistence.mjs
node tests/test_cadr_m10_wrapper.mjs
node tests/test_cadr_m10_controller.mjs
node tests/test_cadr_m10_indexeddb_static.mjs
node tests/test_cadr_m10_cdp_client.mjs
node tests/test_cadr_process_group_supervisor.mjs
node scripts/run-cadr-m10-indexeddb-browser.mjs
node scripts/run-cadr-m10-process-kill-browser.mjs
xvfb-run -a node scripts/run-cadr-m10-indexeddb-browser.mjs --headed
python3 .agents/skills/write-reimplementation-specs/scripts/audit_spec.py \
  --require-frontmatter docs/mit-cadr/cadr-private-disk-overlay-reimplementation-specification.md

The process-kill command requires the selected public base at the ignored repository-relative default l/usim/disk-sys-303-0.img, or at the path named by CADR_M10_BASE_IMAGE. The supervisor hashes it before Chromium starts and refuses any size or digest mismatch.

M10-P01 closes externally imposed Chromium process loss and same-profile browser-engine restart at every observable durable seam. It also closes two additional probes whose notifications are emitted synchronously while the stage and head transactions have outstanding IDB requests. The exact lower-level instant at which the storage engine makes an outstanding transaction durable remains unobservable; the reopened head-transaction case is therefore allowed to select either complete old or complete new state, never a mixture.

TODO-RUNTIME-M10-PHYSICAL-POWER: on a disposable host and storage device whose cache/power controls are measurable, remove machine or device power at the same operation sequence and verify the reopened closure. M10-P01 does not claim this hardware result.

TODO-RUNTIME-M10-IDB-QUOTA: impose a repeatable, measured storage quota on the disposable origin, exhaust it during immutable staging and control publication, and verify both the typed quota result and the complete reopened selection. The current campaign does not claim that capacity-exhaustion oracle.

Snapshot and rights boundary

CDRM10W1 cryptographically binds an already complete M5 snapshot to a synthetic overlay identity. It does not grant redistribution rights to any inner snapshot, world state, base disk, or application content. Tests construct only synthetic CDRM5WK1 bytes. Any future use with a private disk or licensed payload MUST keep those inputs and raw output in the repository's ignored private/session areas and publish only permitted metadata or separately reviewed evidence. This page contains no screenshot claim and requires none. Runtime writes are synthetic; the process-loss campaign reads only exact pages from the independently verified public selected base and never modifies that file.

Known unknowns and nonclaims

  • The CDROVM1 offset table is the frozen clean-room Phase 1 candidate for this profile, not an observed historical layout. A change requires a new schema/profile.
  • Binary CDROVL1 header offsets/digest grammar are unselected. The implemented canonical-JSON interchange is a distinct modern profile.
  • LMFS transaction semantics, selected-history truncation, quota exhaustion, physical power/device-cache loss, private base-media execution, and direct snapshot-wrapper use by a running worker remain outside the closed claim.
  • The historical CADR private-disk representation, if any, was not inspected and is not being reconstructed by this clean-room profile.
  • C-M10 and CW3-PERSISTENT/process-loss are closed for synthetic opaque disk pages and the selected browser controller. This is not CADR media, LMFS, physical power, or filesystem-level atomicity evidence.

Sources

Try “search window system”, “open genera”, or “help”.