Read a retained conversation archive

Open exported records and exact rule sources without their original host or a signing key. Lace selects current messages and evidence; JavaScript presents the result. No records are uploaded, signed, or fetched.

Open

Use the archive reader on the joinery site, or serve its assembled public directory from a download:

uv run --no-project python -m http.server 8891 --bind 127.0.0.1 --directory ingredients/archive-reader/public

Open http://127.0.0.1:8891/. Serve only that public directory, never records or keys. A source checkout first runs make -C site assets; file:// is unsupported.

  1. Unzip a records-and-rules export and choose its root folder.
  2. Inspect the scope, full configuration, and exact definitions.
  3. Enter the chosen public V.…H3 reader and approve the inputs. The export’s README.txt records its participant; no secret or proof of key control is needed.
  4. Read messages and their Details. The visible toolbar contains Open another folder, Change reader, Interpretation, and Evidence. Actions become available when their inputs are ready and lock during selection. Interpretation and evidence open their sections and move keyboard focus there.

The folder supplies:

Reference qualification maps explicitly to qualified-content.interlang. Sources decode as exact UTF-8 without newline or BOM repair. Transport metadata such as endpoint is preserved for inspection but not interpreted or contacted. Keep the selected files unchanged while reading.

Meaning

Qualified selection defines separate reader and writer grants. One unchanged private memory Lace and one complete list select content plus current evidence. Invalid bytes, hash filenames, unavailable sources, or incomplete operations fail without presenting a partial view as complete.

Dates display declared Unix seconds and IANA timezone metadata, not trusted time. Unknown zones or unrepresentable dates fall back to raw values. Ordering keeps exact integer text. Details retain fields, By, Mark, and hash; text and patches are inert, with control/bidi escapes for display.

Reply references distinguish currently readable, merely retained, and unavailable targets. Links neither fetch nor prove deletion. Withdrawal changes current selection, not the files already supplied. Keep the original archive.

“Current” means over supplied records and approved definitions, not global freshness. A chosen public reader proves no rights elsewhere. Trust this page with plaintext; it stores no application state and needs no account, secret, or host.

Checks

With native tools, the Python binding, Chromium, and staged assets, run from the joinery directory:

PYTHONPATH=../lace/python timeout 55s uv run --script tests/archive_reader.py
PYTHONPATH=../lace/python timeout 55s uv run --script tests/archive_reader.py --case export

One native/Python fixture covers approval, input locking, reference states, inert text, exact source/record boundaries, and incomplete results. The export story opens an actual browser ZIP in a fresh key-free reader after shutting down its host, retaining native-verified reply bytes.