Evidence

Proof log

Every claim loot makes is backed by a re-runnable script whose captured output is committed to the repo — the proof is content in the repo the thesis is about. Below is a card per proof over its verbatim run output; each one opens to the whole file, served from this page rather than linked away, so nothing here depends on access you may not have.

Watch a key be refused

Two identities are minted in this tab. A content key is sealed to the first one. Then both try to open it.

Nothing here is a recording and nothing is simulated — this is the same core the CLI runs, compiled to WebAssembly. The keys are different every run, so the hex below changes each time you press the button.

the engine loads when you press this — about 129 KB, once

What this does not show. This page cannot open a sealed object that was not addressed to a key it holds — that is the property, not a limitation of the demo. B's failure is the real error string from the real implementation, not a message this page wrote. Permissioning is key management, and the whole mechanism is those 80 bytes.

loot hosts loot — a sealed path is invisible to a non-keyholder

What this proves: loot's own private design docs live in the same repo as everything else and travel through the same relay — a fresh clone without the key materializes the rest of the tree and cannot see the sealed path, while the keyholder reads it. Visibility is per-content, enforced by key custody.

      (1 sealed path(s) skipped — request a grant to access them)
PASS: the agent's clone does NOT materialize the sealed path (docs/pitch/zk-host.md absent)
PASS: the agent's clone DOES materialize internal content (CONTEXT.md present)
PASS: loot reports sealed path(s) skipped for the agent (it holds the ciphertext, not the key)
PASS: the dev's working tree HAS the sealed path present and readable (docs/pitch/zk-host.md)
ALL CHECKS PASSED -- the sealed path is dev-visible, agent-invisible.
run output — docs/evidence/runs/sealed-path-demo.txt
=== loot sealed-from-agents path demo (section B, ADR 0026) ===

run started (utc): 2026-08-23 16:14:07Z

relay:             https://relay.millerbyte.com

dev repo:          C:\Users\conno\source\repos\loot

sealed path:       docs/pitch/zk-host.md   (.lootattributes: docs/pitch/** restricted=connor)



>>> building loot (release)



>>> agent: clone the live relay as identity 'reviewer' (read-only)

    initialized empty loot repo at C:\Users\conno\AppData\Local\Temp\loot-sealed-path-1787501647\agent, identity = reviewer

    public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAoGy6KHtWcFycWPH6NKJx+kyAAdbQxiBKBwfIo0kTvq reviewer@loot

    tip: share your public key with peers via `loot whoami`

    tip: declare per-file privacy in .lootattributes, e.g. `.env restricted=reviewer`

    quickstart — paste this into a .lootattributes file to control visibility:

    # .lootattributes — control per-path visibility

    # internal    — anyone with repo access can read

    # restricted  — only named identities

    # embargoed   — sealed until unix timestamp

    *.md          internal

    .env          restricted=alice

    RELEASE.md    embargoed=1800000000

    pulled from https://relay.millerbyte.com as reviewer:

      .claude/settings.json    converged

      .claude/skills/afk-loop/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/burn-secret/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/diagnose-bounce/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/diagnose-divergent/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/diagnose-push-rejected/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/diagnose-visibility/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/grant-path/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/land-change/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/loot-runbooks/BINARIES.md relayed (sealed — you lack the key)

      .claude/skills/loot-runbooks/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/maroon-identity/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/mint-agent-identity/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/op-restore/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/review-quarantine/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/rotate-key/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/set-embargo/SKILL.md relayed (sealed — you lack the key)

      .claude/skills/ticket-to-lane/SKILL.md relayed (sealed — you lack the key)

      .gitattributes           relayed (sealed — you lack the key)

      .github/workflows/publish-r2.yml converged

      .github/workflows/release.yml converged

      .github/workflows/site-main.yml converged

      .github/workflows/smoke-install.yml converged

      .github/workflows/sweep-artifacts.yml converged

      .github/workflows/test-main.yml relayed (sealed — you lack the key)

      .gitignore               relayed (sealed — you lack the key)

      .lootattributes          relayed (sealed — you lack the key)

      .lootignore              relayed (sealed — you lack the key)

      .vercelignore            relayed (sealed — you lack the key)

      AGENTS.md                relayed (sealed — you lack the key)

      CONTEXT.md               relayed (sealed — you lack the key)

      Cargo.lock               relayed (sealed — you lack the key)

      Cargo.toml               relayed (sealed — you lack the key)

      LICENSE-APACHE           converged

      LICENSE-MIT              converged

      README.md                relayed (sealed — you lack the key)

      crates/loot-bench/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-bench/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-cli/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-cli/src/bisect.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/blame.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/disclosure.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/doctor.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/draft.rs converged

      crates/loot-cli/src/dup.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/emit.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/error.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/evolog.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/ferry.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/flags.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/git_mirror.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/grep.rs converged

      crates/loot-cli/src/history.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/hunks.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/kv.rs converged

      crates/loot-cli/src/ledger.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/main.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/mergetool.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/pick.rs converged

      crates/loot-cli/src/policy.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/position.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/reconcile.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/render.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/tar.rs converged

      crates/loot-cli/src/textdiff.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/tutorial.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/unlock.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/attest.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/change.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/conflicts.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/custody.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/grants.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/history.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/identity.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/lane.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/mod.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/oplog.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/relay.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/repo.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/store.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/sync.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/verbs/view.rs converged

      crates/loot-cli/src/view.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/workspace/lanes.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/workspace/reconcile.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/workspace/refit.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/workspace/reports.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/workspace/take.rs relayed (sealed — you lack the key)

      crates/loot-cli/src/workspace.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/broken_pipe.rs converged

      crates/loot-cli/tests/cli_smoke.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/custody_lock.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/describe_contention.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/docs_demo.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/emit_snapshot.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/forge_push.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/line_endings.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/runbook_portability.rs converged

      crates/loot-cli/tests/skill_commands.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/sparse_view.rs converged

      crates/loot-cli/tests/sync_resume.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/tutorial.rs relayed (sealed — you lack the key)

      crates/loot-cli/tests/workspace_publish_guard.rs relayed (sealed — you lack the key)

      crates/loot-codec/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-codec/src/attestation.rs converged

      crates/loot-codec/src/bundle_codec.rs relayed (sealed — you lack the key)

      crates/loot-codec/src/change_id.rs relayed (sealed — you lack the key)

      crates/loot-codec/src/envelope.rs converged

      crates/loot-codec/src/format.rs relayed (sealed — you lack the key)

      crates/loot-codec/src/hex.rs converged

      crates/loot-codec/src/key_seal.rs converged

      crates/loot-codec/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-codec/src/purge.rs relayed (sealed — you lack the key)

      crates/loot-codec/src/sealed.rs relayed (sealed — you lack the key)

      crates/loot-codec/src/treepath.rs converged

      crates/loot-core/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-core/examples/patched-client.rs relayed (sealed — you lack the key)

      crates/loot-core/src/attestation.rs converged

      crates/loot-core/src/bridge.rs relayed (sealed — you lack the key)

      crates/loot-core/src/bundle_codec.rs converged

      crates/loot-core/src/buoy.rs relayed (sealed — you lack the key)

      crates/loot-core/src/burn.rs relayed (sealed — you lack the key)

      crates/loot-core/src/converge.rs relayed (sealed — you lack the key)

      crates/loot-core/src/deposits.rs converged

      crates/loot-core/src/engine/change_graph.rs relayed (sealed — you lack the key)

      crates/loot-core/src/engine/custody.rs relayed (sealed — you lack the key)

      crates/loot-core/src/engine/graph_view.rs converged

      crates/loot-core/src/engine/merge.rs relayed (sealed — you lack the key)

      crates/loot-core/src/engine/negotiation.rs relayed (sealed — you lack the key)

      crates/loot-core/src/engine/object_store.rs relayed (sealed — you lack the key)

      crates/loot-core/src/engine/persist_codec.rs relayed (sealed — you lack the key)

      crates/loot-core/src/engine/surface.rs relayed (sealed — you lack the key)

      crates/loot-core/src/engine.rs relayed (sealed — you lack the key)

      crates/loot-core/src/escrow.rs relayed (sealed — you lack the key)

      crates/loot-core/src/format.rs converged

      crates/loot-core/src/hex.rs converged

      crates/loot-core/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-core/src/liveness.rs relayed (sealed — you lack the key)

      crates/loot-core/src/manifest.rs relayed (sealed — you lack the key)

      crates/loot-core/src/oplog.rs relayed (sealed — you lack the key)

      crates/loot-core/src/sealed.rs converged

      crates/loot-core/src/store.rs relayed (sealed — you lack the key)

      crates/loot-core/src/testkit.rs relayed (sealed — you lack the key)

      crates/loot-core/src/verdict.rs relayed (sealed — you lack the key)

      crates/loot-core/tests/merge_corpus.rs converged

      crates/loot-first/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-first/src/forge.rs relayed (sealed — you lack the key)

      crates/loot-first/src/harbor.rs relayed (sealed — you lack the key)

      crates/loot-first/src/hygiene.rs relayed (sealed — you lack the key)

      crates/loot-first/src/ledger.rs converged

      crates/loot-first/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-first/src/main.rs relayed (sealed — you lack the key)

      crates/loot-first/src/orchestrator.rs relayed (sealed — you lack the key)

      crates/loot-first/src/policy.rs relayed (sealed — you lack the key)

      crates/loot-first/tests/doc_links.rs converged

      crates/loot-first/tests/exit_codes.rs relayed (sealed — you lack the key)

      crates/loot-first/tests/line_endings.rs converged

      crates/loot-first/tests/runbook_portability.rs converged

      crates/loot-forge/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-forge/Dockerfile relayed (sealed — you lack the key)

      crates/loot-forge/migrations/0002_grant_inbox.sql converged

      crates/loot-forge/migrations/0003_read_views.sql converged

      crates/loot-forge/migrations/0004_change_authored_at.sql converged

      crates/loot-forge/migrations/0005_published_index.sql converged

      crates/loot-forge/migrations/0006_version_stack.sql converged

      crates/loot-forge/migrations/0007_identity_writer.sql converged

      crates/loot-forge/migrations/0008_retired_key_alias.sql converged

      crates/loot-forge/migrations/0009_owner_read.sql converged

      crates/loot-forge/migrations/0010_tree_entry_by_object_manifest.sql converged

      crates/loot-forge/src/blob.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/conformance.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/error.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/grant.rs converged

      crates/loot-forge/src/inbox.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/ingest.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/main.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/memory.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/model.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/pg/inbox.rs converged

      crates/loot-forge/src/pg/meta.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/pg/migrate.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/pg/mod.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/pg/pool.rs converged

      crates/loot-forge/src/pg/tests.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/pg/tls.rs converged

      crates/loot-forge/src/publish.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/purge.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/s3.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/serve.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/server.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/store.rs relayed (sealed — you lack the key)

      crates/loot-forge/src/sweep.rs relayed (sealed — you lack the key)

      crates/loot-forge/tests/account_tier.rs relayed (sealed — you lack the key)

      crates/loot-forge/tests/http.rs relayed (sealed — you lack the key)

      crates/loot-forge/tests/ingest_and_serve.rs relayed (sealed — you lack the key)

      crates/loot-identity/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-identity/src/bip39-english.txt converged

      crates/loot-identity/src/key_seal.rs relayed (sealed — you lack the key)

      crates/loot-identity/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-identity/src/mnemonic.rs relayed (sealed — you lack the key)

      crates/loot-identity/src/peers.rs relayed (sealed — you lack the key)

      crates/loot-identity/src/seed_seal.rs converged

      crates/loot-net/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-net/src/args.rs relayed (sealed — you lack the key)

      crates/loot-net/src/auth.rs converged

      crates/loot-net/src/forge.rs relayed (sealed — you lack the key)

      crates/loot-net/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-net/src/mailbox.rs relayed (sealed — you lack the key)

      crates/loot-net/src/relay_store.rs relayed (sealed — you lack the key)

      crates/loot-net/src/storage.rs relayed (sealed — you lack the key)

      crates/loot-net/tests/fault_injection.rs relayed (sealed — you lack the key)

      crates/loot-net/tests/relay_maintenance.rs relayed (sealed — you lack the key)

      crates/loot-net/tests/sync_round_trip.rs relayed (sealed — you lack the key)

      crates/loot-perf/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-perf/examples/offer_corpus.rs relayed (sealed — you lack the key)

      crates/loot-perf/src/bin/loot-perf-cli.rs relayed (sealed — you lack the key)

      crates/loot-perf/src/bin/loot-perf-gate.rs relayed (sealed — you lack the key)

      crates/loot-perf/src/cli.rs relayed (sealed — you lack the key)

      crates/loot-perf/src/fixture.rs relayed (sealed — you lack the key)

      crates/loot-perf/src/gate.rs relayed (sealed — you lack the key)

      crates/loot-perf/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-perf/src/load.rs converged

      crates/loot-perf/src/measure.rs relayed (sealed — you lack the key)

      crates/loot-perf/src/pinned.rs relayed (sealed — you lack the key)

      crates/loot-perf/src/record.rs relayed (sealed — you lack the key)

      crates/loot-relay-contract/Cargo.toml converged

      crates/loot-relay-contract/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-relay-contract/tests/fs_backend.rs relayed (sealed — you lack the key)

      crates/loot-relay-contract/tests/the_suite_asks_every_rule.rs converged

      crates/loot-relayd/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-relayd/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-relayd/src/main.rs relayed (sealed — you lack the key)

      crates/loot-relayd/tests/object_store_relay.rs relayed (sealed — you lack the key)

      crates/loot-revset/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-revset/src/error.rs converged

      crates/loot-revset/src/eval.rs relayed (sealed — you lack the key)

      crates/loot-revset/src/lexer.rs converged

      crates/loot-revset/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-revset/src/parser.rs converged

      crates/loot-revset/tests/revset.rs relayed (sealed — you lack the key)

      crates/loot-s3/Cargo.toml converged

      crates/loot-s3/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-wasm/Cargo.toml relayed (sealed — you lack the key)

      crates/loot-wasm/src/lib.rs relayed (sealed — you lack the key)

      crates/loot-wasm/tests/parity.rs relayed (sealed — you lack the key)

      crates/spike-crdt/Cargo.toml relayed (sealed — you lack the key)

      crates/spike-crdt/src/lib.rs relayed (sealed — you lack the key)

      crates/spike-dag/Cargo.toml relayed (sealed — you lack the key)

      crates/spike-dag/src/lib.rs relayed (sealed — you lack the key)

      dist-workspace.toml      relayed (sealed — you lack the key)

      docs/adr/0001-per-content-decrypt-then-merge-convergence.md relayed (sealed — you lack the key)

      docs/adr/0002-encrypted-dag-foundation.md relayed (sealed — you lack the key)

      docs/adr/0003-sealed-content-module-keyring-custody.md relayed (sealed — you lack the key)

      docs/adr/0004-drop-plaintext-dedup-equality-oracle.md relayed (sealed — you lack the key)

      docs/adr/0005-cli-slice-persistence-and-attributes.md relayed (sealed — you lack the key)

      docs/adr/0006-workspace-auto-snapshot.md relayed (sealed — you lack the key)

      docs/adr/0007-embargo-escrow-module.md relayed (sealed — you lack the key)

      docs/adr/0008-grant-log-and-targeted-key-bundles.md relayed (sealed — you lack the key)

      docs/adr/0009-two-level-revocation.md relayed (sealed — you lack the key)

      docs/adr/0010-forward-maroon-implementation.md relayed (sealed — you lack the key)

      docs/adr/0011-relay-stow-append-only.md relayed (sealed — you lack the key)

      docs/adr/0012-per-object-loose-storage.md relayed (sealed — you lack the key)

      docs/adr/0013-named-remotes-and-grant-bundle-delivery.md relayed (sealed — you lack the key)

      docs/adr/0014-identity-keypairs-openssh-ed25519.md relayed (sealed — you lack the key)

      docs/adr/0015-grant-authentication-and-trust.md relayed (sealed — you lack the key)

      docs/adr/0016-identity-portability-and-rotation.md relayed (sealed — you lack the key)

      docs/adr/0017-repostore-loot-layout.md relayed (sealed — you lack the key)

      docs/adr/0018-signed-changes-authored-history.md relayed (sealed — you lack the key)

      docs/adr/0019-format-versioning-and-compatibility.md relayed (sealed — you lack the key)

      docs/adr/0020-compress-public-content.md relayed (sealed — you lack the key)

      docs/adr/0021-object-level-wants-negotiation.md relayed (sealed — you lack the key)

      docs/adr/0022-concurrent-agent-model-docks.md relayed (sealed — you lack the key)

      docs/adr/0023-agent-facing-machine-output.md relayed (sealed — you lack the key)

      docs/adr/0024-resumable-transfer.md relayed (sealed — you lack the key)

      docs/adr/0025-buoy-resolver.md relayed (sealed — you lack the key)

      docs/adr/0026-agent-identity-model.md relayed (sealed — you lack the key)

      docs/adr/0027-hard-embargo-timed-sealed-grants.md relayed (sealed — you lack the key)

      docs/adr/0028-git-interop-bridge.md relayed (sealed — you lack the key)

      docs/adr/0029-stable-change-ids.md relayed (sealed — you lack the key)

      docs/adr/0030-implicit-auto-snapshot-and-verb-surface.md relayed (sealed — you lack the key)

      docs/adr/0031-operation-log-and-undo.md relayed (sealed — you lack the key)

      docs/adr/0032-amend-supersession-and-loot-edit.md relayed (sealed — you lack the key)

      docs/adr/0033-projecting-amended-changes-to-git.md relayed (sealed — you lack the key)

      docs/adr/0034-sealed-lanes-over-a-shared-store.md relayed (sealed — you lack the key)

      docs/adr/0035-lane-lifecycle.md relayed (sealed — you lack the key)

      docs/adr/0036-harbor-serialized-integrator.md relayed (sealed — you lack the key)

      docs/adr/0037-loot-product-site-and-install.md relayed (sealed — you lack the key)

      docs/adr/0038-burn-and-the-mis-seal-gate.md relayed (sealed — you lack the key)

      docs/adr/0039-review-is-a-pure-projection.md relayed (sealed — you lack the key)

      docs/adr/0040-loot-codec-and-the-wasm-core.md converged

      docs/adr/0041-public-multi-tenant-loot-forge.md relayed (sealed — you lack the key)

      docs/adr/0042-sealable-tickets-in-the-repos-own-tree.md converged

      docs/adr/0043-authored-timestamps-as-a-signed-label.md converged

      docs/adr/0044-three-way-content-merge-at-the-converge-seam.md relayed (sealed — you lack the key)

      docs/adr/0045-github-stays-private-and-the-download-path-moves-to-r2.md relayed (sealed — you lack the key)

      docs/adr/0046-forge-backups-are-operator-recovery-and-a-restore-replays-the-revocation-journal.md relayed (sealed — you lack the key)

      docs/adr/0047-the-lanes-hold-position-scoped-custody.md relayed (sealed — you lack the key)

      docs/adr/0048-a-relay-is-measured-not-capped.md relayed (sealed — you lack the key)

      docs/adr/0049-deploy-releases-build-and-publish-off-github.md relayed (sealed — you lack the key)

      docs/adr/0050-a-land-runs-from-a-lane.md relayed (sealed — you lack the key)

      docs/adr/0051-tree-paths-are-stored-with-one-separator.md converged

      docs/adr/0052-a-relay-retires-a-head-never-content.md converged

      docs/adr/0053-the-bridge-learns-landed-main-from-the-checkout.md relayed (sealed — you lack the key)

      docs/adr/0054-an-empty-holder-list-is-unknown-not-nobody.md converged

      docs/adr/0055-a-land-gates-the-tree-it-publishes.md converged

      docs/adr/0056-a-store-knows-which-machine-materialized-it.md relayed (sealed — you lack the key)

      docs/adr/0057-a-push-deposits-this-identitys-own-keys.md relayed (sealed — you lack the key)

      docs/adr/0058-uncaptured-primary-work-leaves-by-explicit-take.md converged

      docs/adr/0059-credentials-arrive-by-file-the-environment-stays-the-dev-path.md relayed (sealed — you lack the key)

      docs/adr/0060-the-public-bucket-carries-binaries-not-source.md relayed (sealed — you lack the key)

      docs/adr/0061-an-afk-run-approves-its-own-review-prs.md converged

      docs/adr/0061-the-forges-door-is-a-custody-list-not-a-capacity-gate.md converged

      docs/adr/0062-an-afk-run-approves-its-own-review-prs.md converged

      docs/adr/0063-lane-merge-is-retired-a-land-is-the-only-fold.md converged

      docs/adr/0063-loot-is-not-on-crates-io-and-its-names-are-held-anyway.md converged

      docs/adr/0064-loot-is-not-on-crates-io-and-its-names-are-held-anyway.md relayed (sealed — you lack the key)

      docs/adr/0065-a-hygiene-check-runs-at-the-moment-that-makes-it-true.md relayed (sealed — you lack the key)

      docs/adr/0066-the-alpha-promises-the-repo-not-the-interface.md relayed (sealed — you lack the key)

      docs/adr/0067-the-install-smoke-gates-staged-bytes-and-detects-published-ones.md relayed (sealed — you lack the key)

      docs/adr/0068-custody-at-rest-is-sealed-to-your-own-key-behind-an-optional-passphrase.md relayed (sealed — you lack the key)

      docs/adr/0069-internal-stays-the-default-tier.md relayed (sealed — you lack the key)

      docs/adr/0070-an-object-store-relay-is-a-second-deployable-the-cli-ships-no-driver.md relayed (sealed — you lack the key)

      docs/adr/0071-the-site-gate-is-a-build-and-a-per-surface-byte-ceiling.md relayed (sealed — you lack the key)

      docs/agents/concurrent.md relayed (sealed — you lack the key)

      docs/agents/identity.md  relayed (sealed — you lack the key)

      docs/agents/issue-tracker.md relayed (sealed — you lack the key)

      docs/agents/workflow.md  relayed (sealed — you lack the key)

      docs/bakeoff/index.html  relayed (sealed — you lack the key)

      docs/benchmarks/level-c-proof.md relayed (sealed — you lack the key)

      docs/benchmarks/series/028826355afe53046bef50b0c1c8c9e4.json converged

      docs/benchmarks/series/046f7b9ecdc1d70f5f5c877e834dc22e.json converged

      docs/benchmarks/series/05cd774bda937b9132f78e2e4caec6a9.json converged

      docs/benchmarks/series/05deb2339e2b0d22f7349c25adda3f9a.json converged

      docs/benchmarks/series/061a50b881bf7575de05894d1fd84a17.json converged

      docs/benchmarks/series/063031023c690cc4b4ac36627e3a6252.json converged

      docs/benchmarks/series/0630f74d5a8214f6272dcf748625922c.json converged

      docs/benchmarks/series/09e4e9b77df1e8fc4f53350faa7dc0a0.json converged

      docs/benchmarks/series/0a0a999ee7cb7125a5dba08780cf0154.json converged

      docs/benchmarks/series/0a0d3e37f6c1906f062baf76e5d0bdb5.json converged

      docs/benchmarks/series/0a4afa36500e4f2c4e4cf1e67a146dee.json converged

      docs/benchmarks/series/0c69c26d6bf8ece417d0e5f2893bde34.json converged

      docs/benchmarks/series/0d9f140dab75dc65ccba8afd7b5c65b0.json converged

      docs/benchmarks/series/0e5b19b49b7a9e8abcb0b3683713a761.json converged

      docs/benchmarks/series/0ed6408ad9ee09599e1d6e28db8b3d73.json converged

      docs/benchmarks/series/11e40e4d65e7a51c05ae9cf74540a331.json converged

      docs/benchmarks/series/12b4a2b80cf38f203528ab2f8fcb7a4e.json converged

      docs/benchmarks/series/12f76e1bc780456f166dc520a1d8c5d8.json converged

      docs/benchmarks/series/13d67aca15d5627aa1c58e3cac7c189b.json converged

      docs/benchmarks/series/150fdfd2c40e075d2f6e05eeb2e9efaf.json converged

      docs/benchmarks/series/15eb5a6a286cd317f6bcfd96244b5052.json converged

      docs/benchmarks/series/15fc913af64af9ee5ee36697324ac209.json converged

      docs/benchmarks/series/16f779bd952e8e300b326cab50a04644.json converged

      docs/benchmarks/series/187ab50109449e31cdbccb676b367120.json converged

      docs/benchmarks/series/19e8f429081483bb09da68b414832dbc.json converged

      docs/benchmarks/series/1bf06c2fc99d2ce59c81ead4ce6c3cdd.json converged

      docs/benchmarks/series/1c7e75bc30f53ac952a7b84da2267fbe.json converged

      docs/benchmarks/series/1caf8f0479e90be97ca47ee8807c1e9a.json converged

      docs/benchmarks/series/1f4f5ebff436d27c3e5e879b04888389.json converged

      docs/benchmarks/series/20cc3e7e913e0e3fb7200009a5ca6044.json converged

      docs/benchmarks/series/2238a37b610a70c0c4a959358dab514e.json converged

      docs/benchmarks/series/226201ea4b7e69ead709d37776748a4c.json converged

      docs/benchmarks/series/237975a79b6fe5c1de263d6191cb0b7e.json converged

      docs/benchmarks/series/239cff6bba46860f6ecab32915d823fc.json converged

      docs/benchmarks/series/23bde6c42588a5176badbf91d029dea1.json converged

      docs/benchmarks/series/28c010bff9a1ff8a3c27d63c7112d9b6.json converged

      docs/benchmarks/series/28ec5090aada67162f07d4c8d3e549c1.json converged

      docs/benchmarks/series/29105c284535b16a4434a441d5a45c19.json converged

      docs/benchmarks/series/2a13476b871c9aa3415c775f9f3df9ad.json converged

      docs/benchmarks/series/2d3f02ceae3c90282d236e2da70b5f23.json relayed (sealed — you lack the key)

      docs/benchmarks/series/2e7113f6990841f96592b68d94ab9b14.json converged

      docs/benchmarks/series/2e9092b38de3d5f317f17fe95ca9a769.json converged

      docs/benchmarks/series/2f6afeafbafe22ebdf59d30d8dd34b42.json converged

      docs/benchmarks/series/308669e881929362f54f576b341d0ff5.json converged

      docs/benchmarks/series/30b86fe93b6b0c047b0194ea5c5aad6b.json converged

      docs/benchmarks/series/314a197ad9d8c644e715da623529f63f.json converged

      docs/benchmarks/series/31aedc3b86c19b1259a4f7318b6a24ec.json converged

      docs/benchmarks/series/3232c95d09276a447505291131e1fefd.json converged

      docs/benchmarks/series/33a0d489d7f2e2942b02a9eee3f56dc8.json converged

      docs/benchmarks/series/382645c7c19c103e52d810a10cd7f290.json converged

      docs/benchmarks/series/39b8b1966801a51dbad161133db6260c.json converged

      docs/benchmarks/series/3d76c7397da07b4c938c3e2077837cd5.json converged

      docs/benchmarks/series/3fc15007f3258b663654678d50f7ffea.json converged

      docs/benchmarks/series/4040bc822da0d978c9b98eff6d68a016.json converged

      docs/benchmarks/series/40c63a46753cfe53a1af155b090ade4d.json converged

      docs/benchmarks/series/418c29ae5cb594de966a7b6fbb13a1cf.json converged

      docs/benchmarks/series/42dea0586072d4410de16e45ffa47c69.json converged

      docs/benchmarks/series/4386d067201c1e75956184e927fceaba.json converged

      docs/benchmarks/series/445e542c803bb956ecbbbf628b937f72.json converged

      docs/benchmarks/series/479076dcfde507e7b74f9957bff09599.json converged

      docs/benchmarks/series/482b98a5eaeca16b63ab554357021a8c.json converged

      docs/benchmarks/series/48a504f4d3ea51cc423657c7c735087d.json converged

      docs/benchmarks/series/49f6a68c35c55158ff751420b8a5a99e.json converged

      docs/benchmarks/series/4a51266a8eacbb818bbc0c22811eeaa5.json converged

      docs/benchmarks/series/4ae36e3ac8b55a8eddf10f005107f16b.json converged

      docs/benchmarks/series/4c32c1e407af4755a59464c726f8ab0f.json converged

      docs/benchmarks/series/4d6d5b819274aea7b833af8fe933751e.json converged

      docs/benchmarks/series/519290b69a6849f04c7fc5402ecf75ff.json converged

      docs/benchmarks/series/51afe3e37a8f0543fd4fc95e97e817c4.json converged

      docs/benchmarks/series/52869b25ee6388b901edd5d9a85c1a60.json converged

      docs/benchmarks/series/53673e5df58804f4da23ee6515f068da.json converged

      docs/benchmarks/series/559ca38a99733ce284d2816e57298aa2.json converged

      docs/benchmarks/series/5a09a5cf0ab34b3d1c46f9a368036eb6.json converged

      docs/benchmarks/series/5a74641c3a26b2e66eccf0fc81462033.json converged

      docs/benchmarks/series/5acd6c2d5010d65d71ba378ca84ca87d.json converged

      docs/benchmarks/series/5c53b6515bdd708cecfa846a714a781e.json converged

      docs/benchmarks/series/5d71b9982451702788b8a4997f5fb23f.json converged

      docs/benchmarks/series/5dab0ef3553db2d049fc02de3dfd46e9.json converged

      docs/benchmarks/series/601f7fae489529fbd78c218163354682.json converged

      docs/benchmarks/series/6042a9bd5eb0b4b32c1671ffc065de7e.json converged

      docs/benchmarks/series/616a3b7459d86c2f8dedd2328a686700.json converged

      docs/benchmarks/series/6203fa4267075e0f83498a598e8c2bd0.json converged

      docs/benchmarks/series/62f2809ec9af2b2c82376c88debef144.json converged

      docs/benchmarks/series/666bd9140d485f9c1706d4c5abf0d6c1.json converged

      docs/benchmarks/series/67c0d70547abbc2640bb69201e1df9ff.json converged

      docs/benchmarks/series/67cbcf09aee8b66111c9e942c3f44eaf.json converged

      docs/benchmarks/series/681642ea872702054990ac41b777dd14.json converged

      docs/benchmarks/series/68bc0ff8c6c4c79125825510de0a14de.json converged

      docs/benchmarks/series/6b16101bca7fe39afa61713c7086a00c.json converged

      docs/benchmarks/series/6b4673bc551d8fbe64556789defb31b0.json converged

      docs/benchmarks/series/6d8c826443187a44739ad4682a232e7a.json converged

      docs/benchmarks/series/735dd300664098092c8479c9820bfbee.json converged

      docs/benchmarks/series/73d793f864728346702b4f766ffe6ecb.json converged

      docs/benchmarks/series/74a4d5cb1abbde542100399ac9e4d609.json converged

      docs/benchmarks/series/751f1485596090235cb3d869be93906c.json converged

      docs/benchmarks/series/7730460d7b4ece4c6e11e49e3dd2928a.json converged

      docs/benchmarks/series/77c04ee442e1861d4091d3cb5ed221b5.json converged

      docs/benchmarks/series/794a8b73e013ebecd6ad5b21a8bbc328.json converged

      docs/benchmarks/series/79ac53bbc01d821cd0dbce2874c804af.json converged

      docs/benchmarks/series/7af080758e50e28ebd39d0a70986a020.json converged

      docs/benchmarks/series/7d787f08b695a8e086fa4a8e11259f6d.json converged

      docs/benchmarks/series/7ed47eda57bb5baf88f8c2408d7d6dab.json converged

      docs/benchmarks/series/7ef26f633466df80cd131cc63082a027.json converged

      docs/benchmarks/series/80091cd23238c47a2d4827ab54778ed4.json converged

      docs/benchmarks/series/809b8bb3cf50b4aabbb36a1fbbdcbe7e.json converged

      docs/benchmarks/series/80e81d847cc2569be709a4e59a98f6af.json converged

      docs/benchmarks/series/80f3dd0ff1a3a03d7e528235c7e6c586.json converged

      docs/benchmarks/series/814d1fcfe650d279c8b2184cd0e5548b.json converged

      docs/benchmarks/series/82982d8206b46ec3d2db6719fa42530a.json converged

      docs/benchmarks/series/82fbb9eb29afcbad962719ce7a1ac672.json converged

      docs/benchmarks/series/8409e44d9d8b2415b09b2c0fc437038f.json converged

      docs/benchmarks/series/841ec5f40b97a0451c0a83d7ee78aa13.json converged

      docs/benchmarks/series/8611c6f2b378c55d5452ebab1984b8ed.json converged

      docs/benchmarks/series/8b8decb06438ea7d8a7d0910ed6adfbe.json converged

      docs/benchmarks/series/8d103ea93de36dfa838bc10a864ce566.json converged

      docs/benchmarks/series/8dd5567ddc93db6b4a6a0765547e2397.json converged

      docs/benchmarks/series/8fbc3f3b8c70db3a1ec7fa14beafe7e6.json converged

      docs/benchmarks/series/9177bc510c951d747829680d02b3b2bc.json converged

      docs/benchmarks/series/926464bd1aab63ba0566fb59b2585e47.json converged

      docs/benchmarks/series/9278bcddee4d9c10a93d2b00866bfec7.json converged

      docs/benchmarks/series/95020bb3489585777a77a4d2692f45af.json converged

      docs/benchmarks/series/956fce0c46ee56dc537af5ef56d781f6.json converged

      docs/benchmarks/series/98631b8e2a13b877ef37869f2ce5c7b0.json converged

      docs/benchmarks/series/986ab45e0492e87b09be5c444154cf27.json converged

      docs/benchmarks/series/990c5cd54f3d07bdc1450bd9e83eccdb.json converged

      docs/benchmarks/series/9b4d823518270ec35967a490ffa568ad.json converged

      docs/benchmarks/series/9d251c9426ed7abecb886ace50d6cb69.json converged

      docs/benchmarks/series/9e2a53e9f680e272ed2d5532fd97b5fc.json converged

      docs/benchmarks/series/9e775525f5d207a00a544841a5eed366.json converged

      docs/benchmarks/series/a0339599164efafb37854728d616ebf7.json converged

      docs/benchmarks/series/a31a0fb8fc301dd662fa745b1320c70f.json converged

      docs/benchmarks/series/a389b7abde0979680eef738f15411395.json converged

      docs/benchmarks/series/a7f1ee0f442da5a8ebf18113e8875bab.json converged

      docs/benchmarks/series/a8bc4435292e16ad497064f5d633fd68.json converged

      docs/benchmarks/series/aafc18d6c879b352f4bd242c0a17a44b.json converged

      docs/benchmarks/series/ab647cde7faa215725418831fdc1dc4d.json converged

      docs/benchmarks/series/ae0a800e9b0718871941c83d92549040.json converged

      docs/benchmarks/series/aea7632cae3cf92b34974c670b109c18.json converged

      docs/benchmarks/series/b13c688922bda6fd11ac756df47af803.json converged

      docs/benchmarks/series/b23ed6218152821e5151257649d8e6e2.json converged

      docs/benchmarks/series/b349edf62b082e3b8c05b2331ae51b96.json converged

      docs/benchmarks/series/b40e3a0f43fa5a15fd510086abe5ae80.json converged

      docs/benchmarks/series/b4862b264b4ec20a771fc729d82c5a79.json converged

      docs/benchmarks/series/b5f2c1da4db10382876c7648a5ae1316.json converged

      docs/benchmarks/series/b733ac785ae9f0c15a924fd9b76b73a0.json converged

      docs/benchmarks/series/b74b292392962bd6218a7fdcc23445bb.json converged

      docs/benchmarks/series/b781c7bfe9431361963754880b750969.json converged

      docs/benchmarks/series/b949ef859c28d21bf445987cd9a53fc1.json converged

      docs/benchmarks/series/bb58ed9a272f218a4bc58ce744f29f32.json converged

      docs/benchmarks/series/bc350acbd3108d5e427ba4778f4e3ecd.json converged

      docs/benchmarks/series/bfe705ec01139b7124f0ee9d39bfc6c8.json converged

      docs/benchmarks/series/bffd8ad24ab792e12bdaca5171446d2d.json converged

      docs/benchmarks/series/c022c440a3b2cce037cb20ef334bed4b.json converged

      docs/benchmarks/series/c1b77fcce90ac884a935f22dd70a1575.json converged

      docs/benchmarks/series/c23d9e2cf01fd9509ff97f125b2e6eb5.json converged

      docs/benchmarks/series/c2b58d0b59e24e6ab307a7df7ea2c2ac.json converged

      docs/benchmarks/series/c5e6e1e0eee3406e68197af87bd662a3.json converged

      docs/benchmarks/series/c64b8806b48153a3596c4f68a57bd2bc.json converged

      docs/benchmarks/series/c81470b1216e6b16666399fcf9a5afba.json converged

      docs/benchmarks/series/c95a07150672624c22988255456bd83a.json converged

      docs/benchmarks/series/cec6b2e92e2042203ae643d1d664c2ab.json converged

      docs/benchmarks/series/cf3501296e9dbb153fc55961c5e766e9.json converged

      docs/benchmarks/series/d1454de7f4c42583ecf43ca7c06bf7b7.json converged

      docs/benchmarks/series/d3f8e434306afbcf48b82b4a6bc04860.json converged

      docs/benchmarks/series/d4317597797136c2d1547794141d8cff.json converged

      docs/benchmarks/series/d89b87f08bfc4f00ea9d7ac47b6fdfca.json converged

      docs/benchmarks/series/d8bb946b35d22e718d8dc568a8985257.json converged

      docs/benchmarks/series/da1d5de4e4a31e665ea1c32e12ef3dcd.json converged

      docs/benchmarks/series/dab1a40bfe89924b00dd9351f92d3690.json converged

      docs/benchmarks/series/daea73f021edf6789cded5975619e60e.json converged

      docs/benchmarks/series/db568618a99475db7fdf4b807094d052.json converged

      docs/benchmarks/series/dba8579287743bf36d6a22c944b63615.json converged

      docs/benchmarks/series/dbf01e6def8ca0401324f3ae9f639d3d.json converged

      docs/benchmarks/series/dc346b361770996dfa97cccff98f222b.json converged

      docs/benchmarks/series/dcda94167b6b854464d2376d5e901e2e.json converged

      docs/benchmarks/series/dd1353ff67c1b35b75db46914d675ad7.json converged

      docs/benchmarks/series/defee3b8c0e68c22bb56b471d83f6612.json converged

      docs/benchmarks/series/df37ba7bc50177eff43217132ce5ff51.json converged

      docs/benchmarks/series/e1882f6e306841ed1354d6e85c461790.json converged

      docs/benchmarks/series/e1fce2c3ab6c67d4f350060d5529b84b.json converged

      docs/benchmarks/series/e2667c08c6b6cf8a2aadd970676a2c36.json converged

      docs/benchmarks/series/e2d1b31b65301fb65b2571785e342129.json converged

      docs/benchmarks/series/e368a411768cf1e607d9fa874492d895.json converged

      docs/benchmarks/series/e41f8f22f5030220a3d1d8198ab884c9.json converged

      docs/benchmarks/series/e52416698095aa9d17ce548a39eff053.json converged

      docs/benchmarks/series/e68506f2016674c600e7b57ddac915ce.json converged

      docs/benchmarks/series/e7dbf240031fa3ae5884770e4d0f8a32.json converged

      docs/benchmarks/series/e8ae3fc1f1fbeaf2b18292caf41e791c.json converged

      docs/benchmarks/series/ea0cf44f25d0d11ebc9b1b17378ec8a0.json converged

      docs/benchmarks/series/eb1f872bdc14d46ff6ecdceb4e6d7ba1.json converged

      docs/benchmarks/series/eb25bdbc91a5aac286aa4059b51d8c61.json converged

      docs/benchmarks/series/eb3e77914c3b04748d7caf29aebc0176.json converged

      docs/benchmarks/series/ec6ee2528c07a7435ec220fa93be7c84.json converged

      docs/benchmarks/series/ecc054b55b42a6844482eeab182823cd.json converged

      docs/benchmarks/series/efa8dbe44c84e15efe93607f982777c6.json converged

      docs/benchmarks/series/f05f344405835841c5cfbedefc34c0f7.json converged

      docs/benchmarks/series/f0b5a1746058da1ecfc8344ccfba4bcc.json converged

      docs/benchmarks/series/f12a6561a72c8c28b4da437e1f9c7398.json converged

      docs/benchmarks/series/f1832117ac15046e07ed4b70dea7fc26.json converged

      docs/benchmarks/series/f27c6f313764d079e7d5bfd2be22bd91.json converged

      docs/benchmarks/series/f3bbea589328d671d46367c47df8af81.json converged

      docs/benchmarks/series/f46a87f01fa3bc1eed2cd1ace3d14a6a.json converged

      docs/benchmarks/series/f778484958b0d985949a873c06971886.json converged

      docs/benchmarks/series/f859444b43b897c2fb56b7e086ed06fa.json converged

      docs/benchmarks/series/f89727757e2465113c27fcc619643bb7.json converged

      docs/benchmarks/series/f8dc012ec6baf483cf31cac7bfb3c738.json converged

      docs/benchmarks/series/fa0fb1042627c07a9712a377223c9bc0.json converged

      docs/benchmarks/series/fa437398e27c69aabd763b6dffb30f0b.json converged

      docs/benchmarks/series/fc5558b1e2122e6289676e2f5d0123bd.json converged

      docs/benchmarks/series/fe1abad66671821e22d9aef8ff6cec7b.json converged

      docs/benchmarks/series/fe231a0c0a9a08e89ee1c7ccd94aa0db.json converged

      docs/benchmarks/series/fe36474a59b2a07f8520100ea744a3cf.json converged

      docs/benchmarks/series/fed72d440c538cee478f94eadd3510e9.json converged

      docs/benchmarks/series.jsonl relayed (sealed — you lack the key)

      docs/dogfood/drive-log.md relayed (sealed — you lack the key)

      docs/evidence/amend-divergence.md relayed (sealed — you lack the key)

      docs/evidence/concurrent-agents.md converged

      docs/evidence/forge-datastores.md relayed (sealed — you lack the key)

      docs/evidence/lane-hold.md relayed (sealed — you lack the key)

      docs/evidence/loot-first.md relayed (sealed — you lack the key)

      docs/evidence/loot-hosts-loot.md relayed (sealed — you lack the key)

      docs/evidence/perf-gate.md relayed (sealed — you lack the key)

      docs/evidence/runs/amend-divergence-demo.txt relayed (sealed — you lack the key)

      docs/evidence/runs/attack-demo.txt relayed (sealed — you lack the key)

      docs/evidence/runs/concurrent-agents-demo.txt converged

      docs/evidence/runs/grant-maroon-demo.txt relayed (sealed — you lack the key)

      docs/evidence/runs/install-prototype-windows.txt converged

      docs/evidence/runs/lane-hold-demo.txt relayed (sealed — you lack the key)

      docs/evidence/runs/sealed-path-demo.txt relayed (sealed — you lack the key)

      docs/evidence/runs/trust-story-demo.txt converged

      docs/evidence/runs/wave-proof-lanes-demo.txt converged

      docs/evidence/scripts/amend-divergence-demo.ps1 relayed (sealed — you lack the key)

      docs/evidence/scripts/attack-demo.ps1 relayed (sealed — you lack the key)

      docs/evidence/scripts/concurrent-agents-demo.ps1 converged

      docs/evidence/scripts/grant-maroon-demo.ps1 relayed (sealed — you lack the key)

      docs/evidence/scripts/lane-hold-demo.ps1 relayed (sealed — you lack the key)

      docs/evidence/scripts/sealed-path-demo.ps1 relayed (sealed — you lack the key)

      docs/evidence/scripts/trust-story-demo.ps1 converged

      docs/evidence/scripts/wave-proof-lanes-demo.ps1 converged

      docs/evidence/wave-proof-lanes.md converged

      docs/lore-comparison.md  relayed (sealed — you lack the key)

      docs/pitch/zk-host.md    relayed (sealed — you lack the key)

      docs/release-day-install-checklist.md converged

      docs/research/deploy-chain-loot-site.md converged

      docs/research/forge-blob-tier.md converged

      docs/research/forge-off-the-vps.md relayed (sealed — you lack the key)

      docs/research/hero-repitch-prototype.md relayed (sealed — you lack the key)

      docs/research/install-prototype-loot.md converged

      docs/research/jj-ergonomics-prototype.md relayed (sealed — you lack the key)

      docs/research/jj-ergonomics.md converged

      docs/research/loot-first-workflow-prototype.md relayed (sealed — you lack the key)

      docs/research/presentational-boundary-audit-millerbyte-frontend.md converged

      docs/research/release-engineering-install-one-liner.md converged

      docs/research/shared-store-nwriter-audit.md converged

      docs/research/ts-sdk-path-scoped-fetching.md converged

      docs/research/ts-sdk-rust-bridging.md converged

      docs/research/windows-installer-integrity.md converged

      docs/second-machine-setup.md relayed (sealed — you lack the key)

      docs/specs/loot-adopt-target.md relayed (sealed — you lack the key)

      docs/specs/loot-forge.md relayed (sealed — you lack the key)

      docs/specs/loot-site.md  relayed (sealed — you lack the key)

      docs/specs/loot-tickets.md converged

      docs/sql/forge-schema.sql relayed (sealed — you lack the key)

      issues/CA1-docks.md      relayed (sealed — you lack the key)

      issues/CA2-dock-merge-harbor.md relayed (sealed — you lack the key)

      issues/CA3-porcelain-machine-output.md relayed (sealed — you lack the key)

      issues/CA4-buoy-resolver.md relayed (sealed — you lack the key)

      issues/GB1-git-interop-bridge.md relayed (sealed — you lack the key)

      issues/README.md         relayed (sealed — you lack the key)

      issues/S1-format-versioning.md relayed (sealed — you lack the key)

      issues/S2-compress-public-content.md relayed (sealed — you lack the key)

      issues/S3-signed-changes.md relayed (sealed — you lack the key)

      issues/S4-attestation-lane.md relayed (sealed — you lack the key)

      issues/S5-wants-negotiation.md relayed (sealed — you lack the key)

      issues/S6-resumable-transfer.md relayed (sealed — you lack the key)

      issues/S7-pluggable-relay-backend-s3.md relayed (sealed — you lack the key)

      issues/S8-sparse-views.md relayed (sealed — you lack the key)

      issues/S9-relay-fault-injection-tests.md relayed (sealed — you lack the key)

      issues/create-agent-issues.sh relayed (sealed — you lack the key)

      issues/create-issues.sh  relayed (sealed — you lack the key)

      rust-toolchain.toml      relayed (sealed — you lack the key)

      sdk/.gitignore           converged

      sdk/README.md            relayed (sealed — you lack the key)

      sdk/package-lock.json    relayed (sealed — you lack the key)

      sdk/package.json         relayed (sealed — you lack the key)

      sdk/scripts/wasm-stamp.mjs converged

      sdk/src/errors.ts        relayed (sealed — you lack the key)

      sdk/src/grants.ts        converged

      sdk/src/hex.ts           converged

      sdk/src/index.ts         relayed (sealed — you lack the key)

      sdk/src/loot-runner.ts   converged

      sdk/src/physical.ts      relayed (sealed — you lack the key)

      sdk/src/relay-transport.ts converged

      sdk/src/repo.ts          relayed (sealed — you lack the key)

      sdk/src/working-overlay.ts relayed (sealed — you lack the key)

      sdk/test/fixtures/gen-relay-fixtures.mjs relayed (sealed — you lack the key)

      sdk/test/fixtures/relay-bundles.json converged

      sdk/test/grants.unit.test.ts converged

      sdk/test/physical.behavior.test.ts relayed (sealed — you lack the key)

      sdk/test/physical.unit.test.ts relayed (sealed — you lack the key)

      sdk/test/private.behavior.test.ts relayed (sealed — you lack the key)

      sdk/test/pull.behavior.test.ts converged

      sdk/test/push-errors.behavior.test.ts converged

      sdk/test/read-contract.ts converged

      sdk/test/read.behavior.test.ts relayed (sealed — you lack the key)

      sdk/test/relay.unit.test.ts relayed (sealed — you lack the key)

      sdk/test/working-overlay.test.ts converged

      sdk/test/write.behavior.test.ts relayed (sealed — you lack the key)

      sdk/tsconfig.json        converged

      site/.gitignore          relayed (sealed — you lack the key)

      site/Dockerfile          converged

      site/budget.json         relayed (sealed — you lack the key)

      site/package-lock.json   relayed (sealed — you lack the key)

      site/package.json        relayed (sealed — you lack the key)

      site/src/components/blob-highlight.tsx converged

      site/src/components/code-block-prism.ts converged

      site/src/components/code-block.tsx converged

      site/src/components/forge.tsx relayed (sealed — you lack the key)

      site/src/components/hero.tsx relayed (sealed — you lack the key)

      site/src/components/private.tsx relayed (sealed — you lack the key)

      site/src/lib/forge.ts    relayed (sealed — you lack the key)

      site/src/lib/hero.ts     converged

      site/src/lib/identity/bytes.ts converged

      site/src/lib/identity/key.ts converged

      site/src/lib/identity/mnemonic.ts converged

      site/src/lib/identity/recoveryFile.ts converged

      site/src/lib/identity/seedblob.ts converged

      site/src/lib/install.ts  relayed (sealed — you lack the key)

      site/src/lib/installerProxy.ts relayed (sealed — you lack the key)

      site/src/lib/private/api.ts converged

      site/src/lib/private/csp.ts converged

      site/src/lib/private/diff.ts converged

      site/src/lib/private/engine.ts converged

      site/src/lib/private/grants.ts converged

      site/src/lib/private/open.ts relayed (sealed — you lack the key)

      site/src/lib/private/session.ts converged

      site/src/lib/private/vault.ts converged

      site/src/react-syntax-highlighter.d.ts relayed (sealed — you lack the key)

      site/src/routeTree.gen.ts relayed (sealed — you lack the key)

      site/src/router.tsx      relayed (sealed — you lack the key)

      site/src/routes/__root.tsx relayed (sealed — you lack the key)

      site/src/routes/account.tsx relayed (sealed — you lack the key)

      site/src/routes/api.identity.me.ts converged

      site/src/routes/api.identity.register.ts converged

      site/src/routes/api.identity.seed.ts converged

      site/src/routes/api.private.blob.ts converged

      site/src/routes/api.private.history.ts converged

      site/src/routes/api.private.me.ts converged

      site/src/routes/api.private.path-history.ts converged

      site/src/routes/api.private.presign.ts converged

      site/src/routes/api.private.repos.ts converged

      site/src/routes/api.private.tree.ts converged

      site/src/routes/docs.tsx relayed (sealed — you lack the key)

      site/src/routes/evidence.tsx relayed (sealed — you lack the key)

      site/src/routes/index.tsx relayed (sealed — you lack the key)

      site/src/routes/install.tsx relayed (sealed — you lack the key)

      site/src/routes/install[.]ps1.ts relayed (sealed — you lack the key)

      site/src/routes/install[.]sh.ts relayed (sealed — you lack the key)

      site/src/routes/k.$owner.$repo.blob.$selector.$.tsx relayed (sealed — you lack the key)

      site/src/routes/k.$owner.$repo.diff.$from.$to.$.tsx relayed (sealed — you lack the key)

      site/src/routes/k.$owner.$repo.history.$.tsx converged

      site/src/routes/k.$owner.$repo.history.index.tsx relayed (sealed — you lack the key)

      site/src/routes/k.$owner.$repo.index.tsx relayed (sealed — you lack the key)

      site/src/routes/k.$owner.$repo.tree.$selector.$.tsx converged

      site/src/routes/k.$owner.index.tsx converged

      site/src/routes/k.$owner.sitemap[.]xml.ts converged

      site/src/routes/k.$owner.tsx converged

      site/src/routes/known-issues.tsx relayed (sealed — you lack the key)

      site/src/routes/license.tsx converged

      site/src/routes/private.$owner.$repo.blob.$selector.$.tsx relayed (sealed — you lack the key)

      site/src/routes/private.$owner.$repo.diff.$from.$to.$.tsx converged

      site/src/routes/private.$owner.$repo.history.$.tsx relayed (sealed — you lack the key)

      site/src/routes/private.$owner.$repo.history.index.tsx converged

      site/src/routes/private.$owner.$repo.tree.$selector.$.tsx converged

      site/src/routes/private.index.tsx converged

      site/src/routes/robots[.]txt.ts converged

      site/src/routes/trust.tsx relayed (sealed — you lack the key)

      site/src/routes/why.tsx  relayed (sealed — you lack the key)

      site/src/server/credentials.ts converged

      site/src/server/forge.ts relayed (sealed — you lack the key)

      site/src/server/identity/clerk.ts relayed (sealed — you lack the key)

      site/src/server/identity/db.ts relayed (sealed — you lack the key)

      site/src/server/identity/http.ts converged

      site/src/server/identity/identity.ts converged

      site/src/server/owner/blobs.ts converged

      site/src/server/owner/db.ts converged

      site/src/server/owner/http.ts converged

      site/src/server/owner/owner.ts converged

      site/src/server/read/blob.ts relayed (sealed — you lack the key)

      site/src/server/read/db.ts relayed (sealed — you lack the key)

      site/src/server/read/index.ts converged

      site/src/server/read/read.ts relayed (sealed — you lack the key)

      site/src/server/read/seal.ts converged

      site/src/server/read/sigv4.ts relayed (sealed — you lack the key)

      site/src/server/read/tree.ts converged

      site/src/server/read/types.ts relayed (sealed — you lack the key)

      site/src/styles.css      relayed (sealed — you lack the key)

      site/src/vite-env.d.ts   relayed (sealed — you lack the key)

      site/test/alias.pg.test.ts converged

      site/test/anonymous-links.test.ts converged

      site/test/code-block.test.ts converged

      site/test/credentials.test.ts converged

      site/test/forge.test.ts  relayed (sealed — you lack the key)

      site/test/helpers.ts     converged

      site/test/hero.test.ts   converged

      site/test/identity.pg.test.ts converged

      site/test/identity.unit.test.ts relayed (sealed — you lack the key)

      site/test/installerProxy.test.ts converged

      site/test/owner.pg.test.ts converged

      site/test/private-csp.test.ts converged

      site/test/private-diff.test.ts converged

      site/test/private-engine.test.ts converged

      site/test/private-grants.test.ts converged

      site/test/private-open.test.ts converged

      site/test/private-presign.test.ts converged

      site/test/read.pg.test.ts relayed (sealed — you lack the key)

      site/test/release-pin.net.test.ts relayed (sealed — you lack the key)

      site/test/seal.test.ts   converged

      site/test/sigv4.test.ts  converged

      site/tools/budget.mjs    relayed (sealed — you lack the key)

      site/tsconfig.app.json   relayed (sealed — you lack the key)

      site/tsconfig.json       relayed (sealed — you lack the key)

      site/tsconfig.node.json  relayed (sealed — you lack the key)

      site/vercel.json         relayed (sealed — you lack the key)

      site/vite.config.ts      relayed (sealed — you lack the key)

      site/vitest.config.ts    converged

      tools/claude-worktree-guard.sh converged

      tools/loot-day.ps1       relayed (sealed — you lack the key)

      tools/loot-first.ps1     converged

      tools/new-agent.ps1      relayed (sealed — you lack the key)

    converged onto one line:

      .claude/settings.json            internal

      .claude/skills/afk-loop/SKILL.md internal

      .claude/skills/burn-secret/SKILL.md internal

      .claude/skills/diagnose-bounce/SKILL.md internal

      .claude/skills/diagnose-divergent/SKILL.md internal

      .claude/skills/diagnose-push-rejected/SKILL.md internal

      .claude/skills/diagnose-visibility/SKILL.md internal

      .claude/skills/grant-path/SKILL.md internal

      .claude/skills/land-change/SKILL.md internal

      .claude/skills/loot-runbooks/BINARIES.md internal

      .claude/skills/loot-runbooks/SKILL.md internal

      .claude/skills/maroon-identity/SKILL.md internal

      .claude/skills/mint-agent-identity/SKILL.md internal

      .claude/skills/op-restore/SKILL.md internal

      .claude/skills/review-quarantine/SKILL.md internal

      .claude/skills/rotate-key/SKILL.md internal

      .claude/skills/set-embargo/SKILL.md internal

      .claude/skills/ticket-to-lane/SKILL.md internal

      .gitattributes                   internal

      .github/workflows/site-main.yml  internal

      .github/workflows/test-main.yml  internal

      .gitignore                       internal

      .lootattributes                  internal

      .lootignore                      internal

      .vercelignore                    internal

      AGENTS.md                        internal

      CONTEXT.md                       internal

      Cargo.lock                       internal

      Cargo.toml                       internal

      LICENSE-APACHE                   published

      LICENSE-MIT                      published

      README.md                        published

      crates/loot-bench/Cargo.toml     internal

      crates/loot-bench/src/lib.rs     internal

      crates/loot-cli/Cargo.toml       internal

      crates/loot-cli/src/bisect.rs    internal

      crates/loot-cli/src/blame.rs     internal

      crates/loot-cli/src/disclosure.rs internal

      crates/loot-cli/src/doctor.rs    internal

      crates/loot-cli/src/draft.rs     internal

      crates/loot-cli/src/dup.rs       internal

      crates/loot-cli/src/emit.rs      internal

      crates/loot-cli/src/error.rs     internal

      crates/loot-cli/src/evolog.rs    internal

      crates/loot-cli/src/ferry.rs     internal

      crates/loot-cli/src/flags.rs     internal

      crates/loot-cli/src/git_mirror.rs internal

      crates/loot-cli/src/grep.rs      internal

      crates/loot-cli/src/history.rs   internal

      crates/loot-cli/src/hunks.rs     internal

      crates/loot-cli/src/kv.rs        internal

      crates/loot-cli/src/ledger.rs    internal

      crates/loot-cli/src/lib.rs       internal

      crates/loot-cli/src/main.rs      internal

      crates/loot-cli/src/mergetool.rs internal

      crates/loot-cli/src/pick.rs      internal

      crates/loot-cli/src/policy.rs    internal

      crates/loot-cli/src/position.rs  internal

      crates/loot-cli/src/reconcile.rs internal

      crates/loot-cli/src/render.rs    internal

      crates/loot-cli/src/tar.rs       internal

      crates/loot-cli/src/textdiff.rs  internal

      crates/loot-cli/src/tutorial.rs  internal

      crates/loot-cli/src/unlock.rs    internal

      crates/loot-cli/src/verbs/attest.rs internal

      crates/loot-cli/src/verbs/change.rs internal

      crates/loot-cli/src/verbs/conflicts.rs internal

      crates/loot-cli/src/verbs/custody.rs internal

      crates/loot-cli/src/verbs/grants.rs internal

      crates/loot-cli/src/verbs/history.rs internal

      crates/loot-cli/src/verbs/identity.rs internal

      crates/loot-cli/src/verbs/lane.rs internal

      crates/loot-cli/src/verbs/mod.rs internal

      crates/loot-cli/src/verbs/oplog.rs internal

      crates/loot-cli/src/verbs/relay.rs internal

      crates/loot-cli/src/verbs/repo.rs internal

      crates/loot-cli/src/verbs/store.rs internal

      crates/loot-cli/src/verbs/sync.rs internal

      crates/loot-cli/src/verbs/view.rs internal

      crates/loot-cli/src/view.rs      internal

      crates/loot-cli/src/workspace/lanes.rs internal

      crates/loot-cli/src/workspace/reconcile.rs internal

      crates/loot-cli/src/workspace/refit.rs internal

      crates/loot-cli/src/workspace/reports.rs internal

      crates/loot-cli/src/workspace/take.rs internal

      crates/loot-cli/src/workspace.rs internal

      crates/loot-cli/tests/broken_pipe.rs internal

      crates/loot-cli/tests/cli_smoke.rs internal

      crates/loot-cli/tests/custody_lock.rs internal

      crates/loot-cli/tests/describe_contention.rs internal

      crates/loot-cli/tests/docs_demo.rs internal

      crates/loot-cli/tests/emit_snapshot.rs internal

      crates/loot-cli/tests/forge_push.rs internal

      crates/loot-cli/tests/skill_commands.rs internal

      crates/loot-cli/tests/sparse_view.rs internal

      crates/loot-cli/tests/sync_resume.rs internal

      crates/loot-cli/tests/tutorial.rs internal

      crates/loot-cli/tests/workspace_publish_guard.rs internal

      crates/loot-codec/Cargo.toml     internal

      crates/loot-codec/src/attestation.rs internal

      crates/loot-codec/src/bundle_codec.rs internal

      crates/loot-codec/src/change_id.rs internal

      crates/loot-codec/src/envelope.rs internal

      crates/loot-codec/src/format.rs  internal

      crates/loot-codec/src/hex.rs     internal

      crates/loot-codec/src/key_seal.rs internal

      crates/loot-codec/src/lib.rs     internal

      crates/loot-codec/src/purge.rs   internal

      crates/loot-codec/src/sealed.rs  internal

      crates/loot-codec/src/treepath.rs internal

      crates/loot-core/Cargo.toml      internal

      crates/loot-core/examples/patched-client.rs internal

      crates/loot-core/src/bridge.rs   internal

      crates/loot-core/src/buoy.rs     internal

      crates/loot-core/src/burn.rs     internal

      crates/loot-core/src/converge.rs internal

      crates/loot-core/src/deposits.rs internal

      crates/loot-core/src/engine/change_graph.rs internal

      crates/loot-core/src/engine/custody.rs internal

      crates/loot-core/src/engine/graph_view.rs internal

      crates/loot-core/src/engine/merge.rs internal

      crates/loot-core/src/engine/negotiation.rs internal

      crates/loot-core/src/engine/object_store.rs internal

      crates/loot-core/src/engine/persist_codec.rs internal

      crates/loot-core/src/engine/surface.rs internal

      crates/loot-core/src/engine.rs   internal

      crates/loot-core/src/escrow.rs   internal

      crates/loot-core/src/lib.rs      internal

      crates/loot-core/src/liveness.rs internal

      crates/loot-core/src/manifest.rs internal

      crates/loot-core/src/oplog.rs    internal

      crates/loot-core/src/store.rs    internal

      crates/loot-core/src/testkit.rs  internal

      crates/loot-core/src/verdict.rs  internal

      crates/loot-core/tests/merge_corpus.rs internal

      crates/loot-first/Cargo.toml     internal

      crates/loot-first/src/forge.rs   internal

      crates/loot-first/src/harbor.rs  internal

      crates/loot-first/src/hygiene.rs internal

      crates/loot-first/src/lib.rs     internal

      crates/loot-first/src/main.rs    internal

      crates/loot-first/src/orchestrator.rs internal

      crates/loot-first/src/policy.rs  internal

      crates/loot-first/tests/doc_links.rs internal

      crates/loot-first/tests/exit_codes.rs internal

      crates/loot-first/tests/line_endings.rs internal

      crates/loot-first/tests/runbook_portability.rs internal

      crates/loot-forge/Cargo.toml     internal

      crates/loot-forge/Dockerfile     internal

      crates/loot-forge/migrations/0002_grant_inbox.sql internal

      crates/loot-forge/migrations/0003_read_views.sql internal

      crates/loot-forge/migrations/0004_change_authored_at.sql internal

      crates/loot-forge/migrations/0005_published_index.sql internal

      crates/loot-forge/migrations/0006_version_stack.sql internal

      crates/loot-forge/migrations/0007_identity_writer.sql internal

      crates/loot-forge/migrations/0008_retired_key_alias.sql internal

      crates/loot-forge/migrations/0009_owner_read.sql internal

      crates/loot-forge/migrations/0010_tree_entry_by_object_manifest.sql internal

      crates/loot-forge/src/blob.rs    internal

      crates/loot-forge/src/conformance.rs internal

      crates/loot-forge/src/error.rs   internal

      crates/loot-forge/src/grant.rs   internal

      crates/loot-forge/src/inbox.rs   internal

      crates/loot-forge/src/ingest.rs  internal

      crates/loot-forge/src/lib.rs     internal

      crates/loot-forge/src/main.rs    internal

      crates/loot-forge/src/memory.rs  internal

      crates/loot-forge/src/model.rs   internal

      crates/loot-forge/src/pg/inbox.rs internal

      crates/loot-forge/src/pg/meta.rs internal

      crates/loot-forge/src/pg/migrate.rs internal

      crates/loot-forge/src/pg/mod.rs  internal

      crates/loot-forge/src/pg/pool.rs internal

      crates/loot-forge/src/pg/tests.rs internal

      crates/loot-forge/src/pg/tls.rs  internal

      crates/loot-forge/src/publish.rs internal

      crates/loot-forge/src/purge.rs   internal

      crates/loot-forge/src/s3.rs      internal

      crates/loot-forge/src/serve.rs   internal

      crates/loot-forge/src/server.rs  internal

      crates/loot-forge/src/store.rs   internal

      crates/loot-forge/src/sweep.rs   internal

      crates/loot-forge/tests/account_tier.rs internal

      crates/loot-forge/tests/http.rs  internal

      crates/loot-forge/tests/ingest_and_serve.rs internal

      crates/loot-identity/Cargo.toml  internal

      crates/loot-identity/src/bip39-english.txt internal

      crates/loot-identity/src/key_seal.rs internal

      crates/loot-identity/src/lib.rs  internal

      crates/loot-identity/src/mnemonic.rs internal

      crates/loot-identity/src/peers.rs internal

      crates/loot-identity/src/seed_seal.rs internal

      crates/loot-net/Cargo.toml       internal

      crates/loot-net/src/args.rs      internal

      crates/loot-net/src/auth.rs      internal

      crates/loot-net/src/forge.rs     internal

      crates/loot-net/src/lib.rs       internal

      crates/loot-net/src/mailbox.rs   internal

      crates/loot-net/src/relay_store.rs internal

      crates/loot-net/src/storage.rs   internal

      crates/loot-net/tests/fault_injection.rs internal

      crates/loot-net/tests/relay_maintenance.rs internal

      crates/loot-net/tests/sync_round_trip.rs internal

      crates/loot-perf/Cargo.toml      internal

      crates/loot-perf/examples/offer_corpus.rs internal

      crates/loot-perf/src/bin/loot-perf-cli.rs internal

      crates/loot-perf/src/bin/loot-perf-gate.rs internal

      crates/loot-perf/src/cli.rs      internal

      crates/loot-perf/src/fixture.rs  internal

      crates/loot-perf/src/gate.rs     internal

      crates/loot-perf/src/lib.rs      internal

      crates/loot-perf/src/load.rs     internal

      crates/loot-perf/src/measure.rs  internal

      crates/loot-perf/src/pinned.rs   internal

      crates/loot-perf/src/record.rs   internal

      crates/loot-relay-contract/Cargo.toml internal

      crates/loot-relay-contract/src/lib.rs internal

      crates/loot-relay-contract/tests/fs_backend.rs internal

      crates/loot-relay-contract/tests/the_suite_asks_every_rule.rs internal

      crates/loot-relayd/Cargo.toml    internal

      crates/loot-relayd/src/lib.rs    internal

      crates/loot-relayd/src/main.rs   internal

      crates/loot-relayd/tests/object_store_relay.rs internal

      crates/loot-revset/Cargo.toml    internal

      crates/loot-revset/src/error.rs  internal

      crates/loot-revset/src/eval.rs   internal

      crates/loot-revset/src/lexer.rs  internal

      crates/loot-revset/src/lib.rs    internal

      crates/loot-revset/src/parser.rs internal

      crates/loot-revset/tests/revset.rs internal

      crates/loot-s3/Cargo.toml        internal

      crates/loot-s3/src/lib.rs        internal

      crates/loot-wasm/Cargo.toml      internal

      crates/loot-wasm/src/lib.rs      internal

      crates/loot-wasm/tests/parity.rs internal

      crates/spike-crdt/Cargo.toml     internal

      crates/spike-crdt/src/lib.rs     internal

      crates/spike-dag/Cargo.toml      internal

      crates/spike-dag/src/lib.rs      internal

      dist-workspace.toml              internal

      docs/adr/0001-per-content-decrypt-then-merge-convergence.md internal

      docs/adr/0002-encrypted-dag-foundation.md internal

      docs/adr/0003-sealed-content-module-keyring-custody.md internal

      docs/adr/0004-drop-plaintext-dedup-equality-oracle.md internal

      docs/adr/0005-cli-slice-persistence-and-attributes.md internal

      docs/adr/0006-workspace-auto-snapshot.md internal

      docs/adr/0007-embargo-escrow-module.md internal

      docs/adr/0008-grant-log-and-targeted-key-bundles.md internal

      docs/adr/0009-two-level-revocation.md internal

      docs/adr/0010-forward-maroon-implementation.md internal

      docs/adr/0011-relay-stow-append-only.md internal

      docs/adr/0012-per-object-loose-storage.md internal

      docs/adr/0013-named-remotes-and-grant-bundle-delivery.md internal

      docs/adr/0014-identity-keypairs-openssh-ed25519.md internal

      docs/adr/0015-grant-authentication-and-trust.md internal

      docs/adr/0016-identity-portability-and-rotation.md internal

      docs/adr/0017-repostore-loot-layout.md internal

      docs/adr/0018-signed-changes-authored-history.md internal

      docs/adr/0019-format-versioning-and-compatibility.md internal

      docs/adr/0020-compress-public-content.md internal

      docs/adr/0021-object-level-wants-negotiation.md internal

      docs/adr/0022-concurrent-agent-model-docks.md internal

      docs/adr/0023-agent-facing-machine-output.md internal

      docs/adr/0024-resumable-transfer.md internal

      docs/adr/0025-buoy-resolver.md   internal

      docs/adr/0026-agent-identity-model.md internal

      docs/adr/0027-hard-embargo-timed-sealed-grants.md internal

      docs/adr/0028-git-interop-bridge.md internal

      docs/adr/0029-stable-change-ids.md internal

      docs/adr/0030-implicit-auto-snapshot-and-verb-surface.md internal

      docs/adr/0031-operation-log-and-undo.md internal

      docs/adr/0032-amend-supersession-and-loot-edit.md internal

      docs/adr/0033-projecting-amended-changes-to-git.md internal

      docs/adr/0034-sealed-lanes-over-a-shared-store.md internal

      docs/adr/0035-lane-lifecycle.md  internal

      docs/adr/0036-harbor-serialized-integrator.md internal

      docs/adr/0037-loot-product-site-and-install.md internal

      docs/adr/0038-burn-and-the-mis-seal-gate.md internal

      docs/adr/0039-review-is-a-pure-projection.md internal

      docs/adr/0040-loot-codec-and-the-wasm-core.md internal

      docs/adr/0041-public-multi-tenant-loot-forge.md internal

      docs/adr/0042-sealable-tickets-in-the-repos-own-tree.md internal

      docs/adr/0043-authored-timestamps-as-a-signed-label.md internal

      docs/adr/0044-three-way-content-merge-at-the-converge-seam.md internal

      docs/adr/0045-github-stays-private-and-the-download-path-moves-to-r2.md internal

      docs/adr/0046-forge-backups-are-operator-recovery-and-a-restore-replays-the-revocation-journal.md internal

      docs/adr/0047-the-lanes-hold-position-scoped-custody.md internal

      docs/adr/0048-a-relay-is-measured-not-capped.md internal

      docs/adr/0049-deploy-releases-build-and-publish-off-github.md internal

      docs/adr/0050-a-land-runs-from-a-lane.md internal

      docs/adr/0051-tree-paths-are-stored-with-one-separator.md internal

      docs/adr/0052-a-relay-retires-a-head-never-content.md internal

      docs/adr/0053-the-bridge-learns-landed-main-from-the-checkout.md internal

      docs/adr/0054-an-empty-holder-list-is-unknown-not-nobody.md internal

      docs/adr/0055-a-land-gates-the-tree-it-publishes.md internal

      docs/adr/0056-a-store-knows-which-machine-materialized-it.md internal

      docs/adr/0057-a-push-deposits-this-identitys-own-keys.md internal

      docs/adr/0058-uncaptured-primary-work-leaves-by-explicit-take.md internal

      docs/adr/0059-credentials-arrive-by-file-the-environment-stays-the-dev-path.md internal

      docs/adr/0060-the-public-bucket-carries-binaries-not-source.md internal

      docs/adr/0061-the-forges-door-is-a-custody-list-not-a-capacity-gate.md internal

      docs/adr/0062-an-afk-run-approves-its-own-review-prs.md internal

      docs/adr/0063-lane-merge-is-retired-a-land-is-the-only-fold.md internal

      docs/adr/0064-loot-is-not-on-crates-io-and-its-names-are-held-anyway.md internal

      docs/adr/0065-a-hygiene-check-runs-at-the-moment-that-makes-it-true.md internal

      docs/adr/0066-the-alpha-promises-the-repo-not-the-interface.md internal

      docs/adr/0067-the-install-smoke-gates-staged-bytes-and-detects-published-ones.md internal

      docs/adr/0068-custody-at-rest-is-sealed-to-your-own-key-behind-an-optional-passphrase.md internal

      docs/adr/0069-internal-stays-the-default-tier.md internal

      docs/adr/0070-an-object-store-relay-is-a-second-deployable-the-cli-ships-no-driver.md internal

      docs/adr/0071-the-site-gate-is-a-build-and-a-per-surface-byte-ceiling.md internal

      docs/agents/concurrent.md        internal

      docs/agents/identity.md          internal

      docs/agents/issue-tracker.md     internal

      docs/agents/workflow.md          internal

      docs/bakeoff/index.html          internal

      docs/benchmarks/level-c-proof.md internal

      docs/benchmarks/series/028826355afe53046bef50b0c1c8c9e4.json internal

      docs/benchmarks/series/046f7b9ecdc1d70f5f5c877e834dc22e.json internal

      docs/benchmarks/series/05cd774bda937b9132f78e2e4caec6a9.json internal

      docs/benchmarks/series/05deb2339e2b0d22f7349c25adda3f9a.json internal

      docs/benchmarks/series/061a50b881bf7575de05894d1fd84a17.json internal

      docs/benchmarks/series/063031023c690cc4b4ac36627e3a6252.json internal

      docs/benchmarks/series/0630f74d5a8214f6272dcf748625922c.json internal

      docs/benchmarks/series/09e4e9b77df1e8fc4f53350faa7dc0a0.json internal

      docs/benchmarks/series/0a0a999ee7cb7125a5dba08780cf0154.json internal

      docs/benchmarks/series/0a0d3e37f6c1906f062baf76e5d0bdb5.json internal

      docs/benchmarks/series/0a4afa36500e4f2c4e4cf1e67a146dee.json internal

      docs/benchmarks/series/0c69c26d6bf8ece417d0e5f2893bde34.json internal

      docs/benchmarks/series/0d9f140dab75dc65ccba8afd7b5c65b0.json internal

      docs/benchmarks/series/0e5b19b49b7a9e8abcb0b3683713a761.json internal

      docs/benchmarks/series/0ed6408ad9ee09599e1d6e28db8b3d73.json internal

      docs/benchmarks/series/11e40e4d65e7a51c05ae9cf74540a331.json internal

      docs/benchmarks/series/12b4a2b80cf38f203528ab2f8fcb7a4e.json internal

      docs/benchmarks/series/12f76e1bc780456f166dc520a1d8c5d8.json internal

      docs/benchmarks/series/13d67aca15d5627aa1c58e3cac7c189b.json internal

      docs/benchmarks/series/150fdfd2c40e075d2f6e05eeb2e9efaf.json internal

      docs/benchmarks/series/15eb5a6a286cd317f6bcfd96244b5052.json internal

      docs/benchmarks/series/15fc913af64af9ee5ee36697324ac209.json internal

      docs/benchmarks/series/16f779bd952e8e300b326cab50a04644.json internal

      docs/benchmarks/series/187ab50109449e31cdbccb676b367120.json internal

      docs/benchmarks/series/19e8f429081483bb09da68b414832dbc.json internal

      docs/benchmarks/series/1bf06c2fc99d2ce59c81ead4ce6c3cdd.json internal

      docs/benchmarks/series/1c7e75bc30f53ac952a7b84da2267fbe.json internal

      docs/benchmarks/series/1caf8f0479e90be97ca47ee8807c1e9a.json internal

      docs/benchmarks/series/1f4f5ebff436d27c3e5e879b04888389.json internal

      docs/benchmarks/series/20cc3e7e913e0e3fb7200009a5ca6044.json internal

      docs/benchmarks/series/2238a37b610a70c0c4a959358dab514e.json internal

      docs/benchmarks/series/226201ea4b7e69ead709d37776748a4c.json internal

      docs/benchmarks/series/237975a79b6fe5c1de263d6191cb0b7e.json internal

      docs/benchmarks/series/239cff6bba46860f6ecab32915d823fc.json internal

      docs/benchmarks/series/23bde6c42588a5176badbf91d029dea1.json internal

      docs/benchmarks/series/28c010bff9a1ff8a3c27d63c7112d9b6.json internal

      docs/benchmarks/series/28ec5090aada67162f07d4c8d3e549c1.json internal

      docs/benchmarks/series/29105c284535b16a4434a441d5a45c19.json internal

      docs/benchmarks/series/2a13476b871c9aa3415c775f9f3df9ad.json internal

      docs/benchmarks/series/2d3f02ceae3c90282d236e2da70b5f23.json internal

      docs/benchmarks/series/2e7113f6990841f96592b68d94ab9b14.json internal

      docs/benchmarks/series/2e9092b38de3d5f317f17fe95ca9a769.json internal

      docs/benchmarks/series/2f6afeafbafe22ebdf59d30d8dd34b42.json internal

      docs/benchmarks/series/308669e881929362f54f576b341d0ff5.json internal

      docs/benchmarks/series/30b86fe93b6b0c047b0194ea5c5aad6b.json internal

      docs/benchmarks/series/314a197ad9d8c644e715da623529f63f.json internal

      docs/benchmarks/series/31aedc3b86c19b1259a4f7318b6a24ec.json internal

      docs/benchmarks/series/3232c95d09276a447505291131e1fefd.json internal

      docs/benchmarks/series/33a0d489d7f2e2942b02a9eee3f56dc8.json internal

      docs/benchmarks/series/382645c7c19c103e52d810a10cd7f290.json internal

      docs/benchmarks/series/39b8b1966801a51dbad161133db6260c.json internal

      docs/benchmarks/series/3d76c7397da07b4c938c3e2077837cd5.json internal

      docs/benchmarks/series/3fc15007f3258b663654678d50f7ffea.json internal

      docs/benchmarks/series/4040bc822da0d978c9b98eff6d68a016.json internal

      docs/benchmarks/series/40c63a46753cfe53a1af155b090ade4d.json internal

      docs/benchmarks/series/418c29ae5cb594de966a7b6fbb13a1cf.json internal

      docs/benchmarks/series/42dea0586072d4410de16e45ffa47c69.json internal

      docs/benchmarks/series/4386d067201c1e75956184e927fceaba.json internal

      docs/benchmarks/series/445e542c803bb956ecbbbf628b937f72.json internal

      docs/benchmarks/series/479076dcfde507e7b74f9957bff09599.json internal

      docs/benchmarks/series/482b98a5eaeca16b63ab554357021a8c.json internal

      docs/benchmarks/series/48a504f4d3ea51cc423657c7c735087d.json internal

      docs/benchmarks/series/49f6a68c35c55158ff751420b8a5a99e.json internal

      docs/benchmarks/series/4a51266a8eacbb818bbc0c22811eeaa5.json internal

      docs/benchmarks/series/4ae36e3ac8b55a8eddf10f005107f16b.json internal

      docs/benchmarks/series/4c32c1e407af4755a59464c726f8ab0f.json internal

      docs/benchmarks/series/4d6d5b819274aea7b833af8fe933751e.json internal

      docs/benchmarks/series/519290b69a6849f04c7fc5402ecf75ff.json internal

      docs/benchmarks/series/51afe3e37a8f0543fd4fc95e97e817c4.json internal

      docs/benchmarks/series/52869b25ee6388b901edd5d9a85c1a60.json internal

      docs/benchmarks/series/53673e5df58804f4da23ee6515f068da.json internal

      docs/benchmarks/series/559ca38a99733ce284d2816e57298aa2.json internal

      docs/benchmarks/series/5a09a5cf0ab34b3d1c46f9a368036eb6.json internal

      docs/benchmarks/series/5a74641c3a26b2e66eccf0fc81462033.json internal

      docs/benchmarks/series/5acd6c2d5010d65d71ba378ca84ca87d.json internal

      docs/benchmarks/series/5c53b6515bdd708cecfa846a714a781e.json internal

      docs/benchmarks/series/5d71b9982451702788b8a4997f5fb23f.json internal

      docs/benchmarks/series/5dab0ef3553db2d049fc02de3dfd46e9.json internal

      docs/benchmarks/series/601f7fae489529fbd78c218163354682.json internal

      docs/benchmarks/series/6042a9bd5eb0b4b32c1671ffc065de7e.json internal

      docs/benchmarks/series/616a3b7459d86c2f8dedd2328a686700.json internal

      docs/benchmarks/series/6203fa4267075e0f83498a598e8c2bd0.json internal

      docs/benchmarks/series/62f2809ec9af2b2c82376c88debef144.json internal

      docs/benchmarks/series/666bd9140d485f9c1706d4c5abf0d6c1.json internal

      docs/benchmarks/series/67c0d70547abbc2640bb69201e1df9ff.json internal

      docs/benchmarks/series/67cbcf09aee8b66111c9e942c3f44eaf.json internal

      docs/benchmarks/series/681642ea872702054990ac41b777dd14.json internal

      docs/benchmarks/series/68bc0ff8c6c4c79125825510de0a14de.json internal

      docs/benchmarks/series/6b16101bca7fe39afa61713c7086a00c.json internal

      docs/benchmarks/series/6b4673bc551d8fbe64556789defb31b0.json internal

      docs/benchmarks/series/6d8c826443187a44739ad4682a232e7a.json internal

      docs/benchmarks/series/735dd300664098092c8479c9820bfbee.json internal

      docs/benchmarks/series/73d793f864728346702b4f766ffe6ecb.json internal

      docs/benchmarks/series/74a4d5cb1abbde542100399ac9e4d609.json internal

      docs/benchmarks/series/751f1485596090235cb3d869be93906c.json internal

      docs/benchmarks/series/7730460d7b4ece4c6e11e49e3dd2928a.json internal

      docs/benchmarks/series/77c04ee442e1861d4091d3cb5ed221b5.json internal

      docs/benchmarks/series/794a8b73e013ebecd6ad5b21a8bbc328.json internal

      docs/benchmarks/series/79ac53bbc01d821cd0dbce2874c804af.json internal

      docs/benchmarks/series/7af080758e50e28ebd39d0a70986a020.json internal

      docs/benchmarks/series/7d787f08b695a8e086fa4a8e11259f6d.json internal

      docs/benchmarks/series/7ed47eda57bb5baf88f8c2408d7d6dab.json internal

      docs/benchmarks/series/7ef26f633466df80cd131cc63082a027.json internal

      docs/benchmarks/series/80091cd23238c47a2d4827ab54778ed4.json internal

      docs/benchmarks/series/809b8bb3cf50b4aabbb36a1fbbdcbe7e.json internal

      docs/benchmarks/series/80e81d847cc2569be709a4e59a98f6af.json internal

      docs/benchmarks/series/80f3dd0ff1a3a03d7e528235c7e6c586.json internal

      docs/benchmarks/series/814d1fcfe650d279c8b2184cd0e5548b.json internal

      docs/benchmarks/series/82982d8206b46ec3d2db6719fa42530a.json internal

      docs/benchmarks/series/82fbb9eb29afcbad962719ce7a1ac672.json internal

      docs/benchmarks/series/8409e44d9d8b2415b09b2c0fc437038f.json internal

      docs/benchmarks/series/841ec5f40b97a0451c0a83d7ee78aa13.json internal

      docs/benchmarks/series/8611c6f2b378c55d5452ebab1984b8ed.json internal

      docs/benchmarks/series/8b8decb06438ea7d8a7d0910ed6adfbe.json internal

      docs/benchmarks/series/8d103ea93de36dfa838bc10a864ce566.json internal

      docs/benchmarks/series/8dd5567ddc93db6b4a6a0765547e2397.json internal

      docs/benchmarks/series/8fbc3f3b8c70db3a1ec7fa14beafe7e6.json internal

      docs/benchmarks/series/9177bc510c951d747829680d02b3b2bc.json internal

      docs/benchmarks/series/926464bd1aab63ba0566fb59b2585e47.json internal

      docs/benchmarks/series/9278bcddee4d9c10a93d2b00866bfec7.json internal

      docs/benchmarks/series/95020bb3489585777a77a4d2692f45af.json internal

      docs/benchmarks/series/956fce0c46ee56dc537af5ef56d781f6.json internal

      docs/benchmarks/series/98631b8e2a13b877ef37869f2ce5c7b0.json internal

      docs/benchmarks/series/986ab45e0492e87b09be5c444154cf27.json internal

      docs/benchmarks/series/990c5cd54f3d07bdc1450bd9e83eccdb.json internal

      docs/benchmarks/series/9b4d823518270ec35967a490ffa568ad.json internal

      docs/benchmarks/series/9d251c9426ed7abecb886ace50d6cb69.json internal

      docs/benchmarks/series/9e2a53e9f680e272ed2d5532fd97b5fc.json internal

      docs/benchmarks/series/9e775525f5d207a00a544841a5eed366.json internal

      docs/benchmarks/series/a0339599164efafb37854728d616ebf7.json internal

      docs/benchmarks/series/a31a0fb8fc301dd662fa745b1320c70f.json internal

      docs/benchmarks/series/a389b7abde0979680eef738f15411395.json internal

      docs/benchmarks/series/a7f1ee0f442da5a8ebf18113e8875bab.json internal

      docs/benchmarks/series/a8bc4435292e16ad497064f5d633fd68.json internal

      docs/benchmarks/series/aafc18d6c879b352f4bd242c0a17a44b.json internal

      docs/benchmarks/series/ab647cde7faa215725418831fdc1dc4d.json internal

      docs/benchmarks/series/ae0a800e9b0718871941c83d92549040.json internal

      docs/benchmarks/series/aea7632cae3cf92b34974c670b109c18.json internal

      docs/benchmarks/series/b13c688922bda6fd11ac756df47af803.json internal

      docs/benchmarks/series/b23ed6218152821e5151257649d8e6e2.json internal

      docs/benchmarks/series/b349edf62b082e3b8c05b2331ae51b96.json internal

      docs/benchmarks/series/b40e3a0f43fa5a15fd510086abe5ae80.json internal

      docs/benchmarks/series/b4862b264b4ec20a771fc729d82c5a79.json internal

      docs/benchmarks/series/b5f2c1da4db10382876c7648a5ae1316.json internal

      docs/benchmarks/series/b733ac785ae9f0c15a924fd9b76b73a0.json internal

      docs/benchmarks/series/b74b292392962bd6218a7fdcc23445bb.json internal

      docs/benchmarks/series/b781c7bfe9431361963754880b750969.json internal

      docs/benchmarks/series/b949ef859c28d21bf445987cd9a53fc1.json internal

      docs/benchmarks/series/bb58ed9a272f218a4bc58ce744f29f32.json internal

      docs/benchmarks/series/bc350acbd3108d5e427ba4778f4e3ecd.json internal

      docs/benchmarks/series/bfe705ec01139b7124f0ee9d39bfc6c8.json internal

      docs/benchmarks/series/bffd8ad24ab792e12bdaca5171446d2d.json internal

      docs/benchmarks/series/c022c440a3b2cce037cb20ef334bed4b.json internal

      docs/benchmarks/series/c1b77fcce90ac884a935f22dd70a1575.json internal

      docs/benchmarks/series/c23d9e2cf01fd9509ff97f125b2e6eb5.json internal

      docs/benchmarks/series/c2b58d0b59e24e6ab307a7df7ea2c2ac.json internal

      docs/benchmarks/series/c5e6e1e0eee3406e68197af87bd662a3.json internal

      docs/benchmarks/series/c64b8806b48153a3596c4f68a57bd2bc.json internal

      docs/benchmarks/series/c81470b1216e6b16666399fcf9a5afba.json internal

      docs/benchmarks/series/c95a07150672624c22988255456bd83a.json internal

      docs/benchmarks/series/cec6b2e92e2042203ae643d1d664c2ab.json internal

      docs/benchmarks/series/cf3501296e9dbb153fc55961c5e766e9.json internal

      docs/benchmarks/series/d1454de7f4c42583ecf43ca7c06bf7b7.json internal

      docs/benchmarks/series/d3f8e434306afbcf48b82b4a6bc04860.json internal

      docs/benchmarks/series/d4317597797136c2d1547794141d8cff.json internal

      docs/benchmarks/series/d89b87f08bfc4f00ea9d7ac47b6fdfca.json internal

      docs/benchmarks/series/d8bb946b35d22e718d8dc568a8985257.json internal

      docs/benchmarks/series/da1d5de4e4a31e665ea1c32e12ef3dcd.json internal

      docs/benchmarks/series/dab1a40bfe89924b00dd9351f92d3690.json internal

      docs/benchmarks/series/daea73f021edf6789cded5975619e60e.json internal

      docs/benchmarks/series/db568618a99475db7fdf4b807094d052.json internal

      docs/benchmarks/series/dba8579287743bf36d6a22c944b63615.json internal

      docs/benchmarks/series/dbf01e6def8ca0401324f3ae9f639d3d.json internal

      docs/benchmarks/series/dc346b361770996dfa97cccff98f222b.json internal

      docs/benchmarks/series/dcda94167b6b854464d2376d5e901e2e.json internal

      docs/benchmarks/series/dd1353ff67c1b35b75db46914d675ad7.json internal

      docs/benchmarks/series/defee3b8c0e68c22bb56b471d83f6612.json internal

      docs/benchmarks/series/df37ba7bc50177eff43217132ce5ff51.json internal

      docs/benchmarks/series/e1882f6e306841ed1354d6e85c461790.json internal

      docs/benchmarks/series/e1fce2c3ab6c67d4f350060d5529b84b.json internal

      docs/benchmarks/series/e2667c08c6b6cf8a2aadd970676a2c36.json internal

      docs/benchmarks/series/e2d1b31b65301fb65b2571785e342129.json internal

      docs/benchmarks/series/e368a411768cf1e607d9fa874492d895.json internal

      docs/benchmarks/series/e41f8f22f5030220a3d1d8198ab884c9.json internal

      docs/benchmarks/series/e52416698095aa9d17ce548a39eff053.json internal

      docs/benchmarks/series/e68506f2016674c600e7b57ddac915ce.json internal

      docs/benchmarks/series/e7dbf240031fa3ae5884770e4d0f8a32.json internal

      docs/benchmarks/series/e8ae3fc1f1fbeaf2b18292caf41e791c.json internal

      docs/benchmarks/series/ea0cf44f25d0d11ebc9b1b17378ec8a0.json internal

      docs/benchmarks/series/eb1f872bdc14d46ff6ecdceb4e6d7ba1.json internal

      docs/benchmarks/series/eb25bdbc91a5aac286aa4059b51d8c61.json internal

      docs/benchmarks/series/eb3e77914c3b04748d7caf29aebc0176.json internal

      docs/benchmarks/series/ec6ee2528c07a7435ec220fa93be7c84.json internal

      docs/benchmarks/series/ecc054b55b42a6844482eeab182823cd.json internal

      docs/benchmarks/series/efa8dbe44c84e15efe93607f982777c6.json internal

      docs/benchmarks/series/f05f344405835841c5cfbedefc34c0f7.json internal

      docs/benchmarks/series/f0b5a1746058da1ecfc8344ccfba4bcc.json internal

      docs/benchmarks/series/f12a6561a72c8c28b4da437e1f9c7398.json internal

      docs/benchmarks/series/f1832117ac15046e07ed4b70dea7fc26.json internal

      docs/benchmarks/series/f27c6f313764d079e7d5bfd2be22bd91.json internal

      docs/benchmarks/series/f3bbea589328d671d46367c47df8af81.json internal

      docs/benchmarks/series/f46a87f01fa3bc1eed2cd1ace3d14a6a.json internal

      docs/benchmarks/series/f778484958b0d985949a873c06971886.json internal

      docs/benchmarks/series/f859444b43b897c2fb56b7e086ed06fa.json internal

      docs/benchmarks/series/f89727757e2465113c27fcc619643bb7.json internal

      docs/benchmarks/series/f8dc012ec6baf483cf31cac7bfb3c738.json internal

      docs/benchmarks/series/fa0fb1042627c07a9712a377223c9bc0.json internal

      docs/benchmarks/series/fa437398e27c69aabd763b6dffb30f0b.json internal

      docs/benchmarks/series/fc5558b1e2122e6289676e2f5d0123bd.json internal

      docs/benchmarks/series/fe1abad66671821e22d9aef8ff6cec7b.json internal

      docs/benchmarks/series/fe231a0c0a9a08e89ee1c7ccd94aa0db.json internal

      docs/benchmarks/series/fe36474a59b2a07f8520100ea744a3cf.json internal

      docs/benchmarks/series/fed72d440c538cee478f94eadd3510e9.json internal

      docs/benchmarks/series.jsonl     internal

      docs/dogfood/drive-log.md        internal

      docs/evidence/amend-divergence.md internal

      docs/evidence/concurrent-agents.md internal

      docs/evidence/forge-datastores.md internal

      docs/evidence/lane-hold.md       internal

      docs/evidence/loot-first.md      internal

      docs/evidence/loot-hosts-loot.md internal

      docs/evidence/perf-gate.md       internal

      docs/evidence/runs/amend-divergence-demo.txt internal

      docs/evidence/runs/attack-demo.txt internal

      docs/evidence/runs/concurrent-agents-demo.txt internal

      docs/evidence/runs/grant-maroon-demo.txt internal

      docs/evidence/runs/install-prototype-windows.txt internal

      docs/evidence/runs/lane-hold-demo.txt internal

      docs/evidence/runs/sealed-path-demo.txt internal

      docs/evidence/runs/trust-story-demo.txt internal

      docs/evidence/runs/wave-proof-lanes-demo.txt internal

      docs/evidence/scripts/amend-divergence-demo.ps1 internal

      docs/evidence/scripts/attack-demo.ps1 internal

      docs/evidence/scripts/concurrent-agents-demo.ps1 internal

      docs/evidence/scripts/grant-maroon-demo.ps1 internal

      docs/evidence/scripts/lane-hold-demo.ps1 internal

      docs/evidence/scripts/sealed-path-demo.ps1 internal

      docs/evidence/scripts/trust-story-demo.ps1 internal

      docs/evidence/scripts/wave-proof-lanes-demo.ps1 internal

      docs/evidence/wave-proof-lanes.md internal

      docs/lore-comparison.md          internal

      docs/release-day-install-checklist.md internal

      docs/research/deploy-chain-loot-site.md internal

      docs/research/forge-blob-tier.md internal

      docs/research/forge-off-the-vps.md internal

      docs/research/hero-repitch-prototype.md internal

      docs/research/install-prototype-loot.md internal

      docs/research/jj-ergonomics-prototype.md internal

      docs/research/jj-ergonomics.md   internal

      docs/research/loot-first-workflow-prototype.md internal

      docs/research/presentational-boundary-audit-millerbyte-frontend.md internal

      docs/research/release-engineering-install-one-liner.md internal

      docs/research/shared-store-nwriter-audit.md internal

      docs/research/ts-sdk-path-scoped-fetching.md internal

      docs/research/ts-sdk-rust-bridging.md internal

      docs/research/windows-installer-integrity.md internal

      docs/second-machine-setup.md     internal

      docs/specs/loot-adopt-target.md  internal

      docs/specs/loot-forge.md         internal

      docs/specs/loot-site.md          internal

      docs/specs/loot-tickets.md       internal

      docs/sql/forge-schema.sql        internal

      issues/CA1-docks.md              internal

      issues/CA2-dock-merge-harbor.md  internal

      issues/CA3-porcelain-machine-output.md internal

      issues/CA4-buoy-resolver.md      internal

      issues/GB1-git-interop-bridge.md internal

      issues/README.md                 internal

      issues/S1-format-versioning.md   internal

      issues/S2-compress-public-content.md internal

      issues/S3-signed-changes.md      internal

      issues/S4-attestation-lane.md    internal

      issues/S5-wants-negotiation.md   internal

      issues/S6-resumable-transfer.md  internal

      issues/S7-pluggable-relay-backend-s3.md internal

      issues/S8-sparse-views.md        internal

      issues/S9-relay-fault-injection-tests.md internal

      issues/create-agent-issues.sh    internal

      issues/create-issues.sh          internal

      rust-toolchain.toml              internal

      sdk/.gitignore                   internal

      sdk/README.md                    internal

      sdk/package-lock.json            internal

      sdk/package.json                 internal

      sdk/scripts/wasm-stamp.mjs       internal

      sdk/src/errors.ts                internal

      sdk/src/grants.ts                internal

      sdk/src/hex.ts                   internal

      sdk/src/index.ts                 internal

      sdk/src/loot-runner.ts           internal

      sdk/src/physical.ts              internal

      sdk/src/relay-transport.ts       internal

      sdk/src/repo.ts                  internal

      sdk/src/working-overlay.ts       internal

      sdk/test/fixtures/gen-relay-fixtures.mjs internal

      sdk/test/fixtures/relay-bundles.json internal

      sdk/test/grants.unit.test.ts     internal

      sdk/test/physical.behavior.test.ts internal

      sdk/test/physical.unit.test.ts   internal

      sdk/test/private.behavior.test.ts internal

      sdk/test/pull.behavior.test.ts   internal

      sdk/test/read-contract.ts        internal

      sdk/test/read.behavior.test.ts   internal

      sdk/test/relay.unit.test.ts      internal

      sdk/test/working-overlay.test.ts internal

      sdk/test/write.behavior.test.ts  internal

      sdk/tsconfig.json                internal

      site/.gitignore                  internal

      site/Dockerfile                  internal

      site/budget.json                 internal

      site/package-lock.json           internal

      site/package.json                internal

      site/src/components/blob-highlight.tsx internal

      site/src/components/code-block-prism.ts internal

      site/src/components/code-block.tsx internal

      site/src/components/forge.tsx    internal

      site/src/components/hero.tsx     internal

      site/src/components/private.tsx  internal

      site/src/lib/forge.ts            internal

      site/src/lib/hero.ts             internal

      site/src/lib/identity/bytes.ts   internal

      site/src/lib/identity/key.ts     internal

      site/src/lib/identity/mnemonic.ts internal

      site/src/lib/identity/recoveryFile.ts internal

      site/src/lib/identity/seedblob.ts internal

      site/src/lib/install.ts          internal

      site/src/lib/installerProxy.ts   internal

      site/src/lib/private/api.ts      internal

      site/src/lib/private/csp.ts      internal

      site/src/lib/private/diff.ts     internal

      site/src/lib/private/engine.ts   internal

      site/src/lib/private/grants.ts   internal

      site/src/lib/private/open.ts     internal

      site/src/lib/private/session.ts  internal

      site/src/lib/private/vault.ts    internal

      site/src/react-syntax-highlighter.d.ts internal

      site/src/routeTree.gen.ts        internal

      site/src/router.tsx              internal

      site/src/routes/__root.tsx       internal

      site/src/routes/account.tsx      internal

      site/src/routes/api.identity.me.ts internal

      site/src/routes/api.identity.register.ts internal

      site/src/routes/api.identity.seed.ts internal

      site/src/routes/api.private.blob.ts internal

      site/src/routes/api.private.history.ts internal

      site/src/routes/api.private.me.ts internal

      site/src/routes/api.private.path-history.ts internal

      site/src/routes/api.private.presign.ts internal

      site/src/routes/api.private.repos.ts internal

      site/src/routes/api.private.tree.ts internal

      site/src/routes/docs.tsx         internal

      site/src/routes/evidence.tsx     internal

      site/src/routes/index.tsx        internal

      site/src/routes/install.tsx      internal

      site/src/routes/install[.]ps1.ts internal

      site/src/routes/install[.]sh.ts  internal

      site/src/routes/k.$owner.$repo.blob.$selector.$.tsx internal

      site/src/routes/k.$owner.$repo.diff.$from.$to.$.tsx internal

      site/src/routes/k.$owner.$repo.history.$.tsx internal

      site/src/routes/k.$owner.$repo.history.index.tsx internal

      site/src/routes/k.$owner.$repo.index.tsx internal

      site/src/routes/k.$owner.$repo.tree.$selector.$.tsx internal

      site/src/routes/k.$owner.index.tsx internal

      site/src/routes/k.$owner.sitemap[.]xml.ts internal

      site/src/routes/k.$owner.tsx     internal

      site/src/routes/known-issues.tsx internal

      site/src/routes/license.tsx      internal

      site/src/routes/private.$owner.$repo.blob.$selector.$.tsx internal

      site/src/routes/private.$owner.$repo.diff.$from.$to.$.tsx internal

      site/src/routes/private.$owner.$repo.history.$.tsx internal

      site/src/routes/private.$owner.$repo.history.index.tsx internal

      site/src/routes/private.$owner.$repo.tree.$selector.$.tsx internal

      site/src/routes/private.index.tsx internal

      site/src/routes/robots[.]txt.ts  internal

      site/src/routes/trust.tsx        internal

      site/src/routes/why.tsx          internal

      site/src/server/credentials.ts   internal

      site/src/server/forge.ts         internal

      site/src/server/identity/clerk.ts internal

      site/src/server/identity/db.ts   internal

      site/src/server/identity/http.ts internal

      site/src/server/identity/identity.ts internal

      site/src/server/owner/blobs.ts   internal

      site/src/server/owner/db.ts      internal

      site/src/server/owner/http.ts    internal

      site/src/server/owner/owner.ts   internal

      site/src/server/read/blob.ts     internal

      site/src/server/read/db.ts       internal

      site/src/server/read/index.ts    internal

      site/src/server/read/read.ts     internal

      site/src/server/read/seal.ts     internal

      site/src/server/read/sigv4.ts    internal

      site/src/server/read/tree.ts     internal

      site/src/server/read/types.ts    internal

      site/src/styles.css              internal

      site/src/vite-env.d.ts           internal

      site/test/alias.pg.test.ts       internal

      site/test/anonymous-links.test.ts internal

      site/test/code-block.test.ts     internal

      site/test/credentials.test.ts    internal

      site/test/forge.test.ts          internal

      site/test/helpers.ts             internal

      site/test/hero.test.ts           internal

      site/test/identity.pg.test.ts    internal

      site/test/identity.unit.test.ts  internal

      site/test/installerProxy.test.ts internal

      site/test/owner.pg.test.ts       internal

      site/test/private-csp.test.ts    internal

      site/test/private-diff.test.ts   internal

      site/test/private-engine.test.ts internal

      site/test/private-grants.test.ts internal

      site/test/private-open.test.ts   internal

      site/test/private-presign.test.ts internal

      site/test/read.pg.test.ts        internal

      site/test/release-pin.net.test.ts internal

      site/test/seal.test.ts           internal

      site/test/sigv4.test.ts          internal

      site/tools/budget.mjs            internal

      site/tsconfig.app.json           internal

      site/tsconfig.json               internal

      site/tsconfig.node.json          internal

      site/vercel.json                 internal

      site/vite.config.ts              internal

      site/vitest.config.ts            internal

      tools/claude-worktree-guard.sh   internal

      tools/loot-day.ps1               internal

      tools/new-agent.ps1              internal

      (1 sealed path(s) skipped — request a grant to access them)

    surfaced d31bf81e as reviewer

    no pending grants at https://relay.millerbyte.com

    cloned https://relay.millerbyte.com → C:\Users\conno\AppData\Local\Temp\loot-sealed-path-1787501647\agent

    run `loot status` to see the working tree



>>> agent: loot surface (materialize what 'reviewer' may see)

      .claude/settings.json            internal

      .claude/skills/afk-loop/SKILL.md internal

      .claude/skills/burn-secret/SKILL.md internal

      .claude/skills/diagnose-bounce/SKILL.md internal

      .claude/skills/diagnose-divergent/SKILL.md internal

      .claude/skills/diagnose-push-rejected/SKILL.md internal

      .claude/skills/diagnose-visibility/SKILL.md internal

      .claude/skills/grant-path/SKILL.md internal

      .claude/skills/land-change/SKILL.md internal

      .claude/skills/loot-runbooks/BINARIES.md internal

      .claude/skills/loot-runbooks/SKILL.md internal

      .claude/skills/maroon-identity/SKILL.md internal

      .claude/skills/mint-agent-identity/SKILL.md internal

      .claude/skills/op-restore/SKILL.md internal

      .claude/skills/review-quarantine/SKILL.md internal

      .claude/skills/rotate-key/SKILL.md internal

      .claude/skills/set-embargo/SKILL.md internal

      .claude/skills/ticket-to-lane/SKILL.md internal

      .gitattributes                   internal

      .github/workflows/site-main.yml  internal

      .github/workflows/test-main.yml  internal

      .gitignore                       internal

      .lootattributes                  internal

      .lootignore                      internal

      .vercelignore                    internal

      AGENTS.md                        internal

      CONTEXT.md                       internal

      Cargo.lock                       internal

      Cargo.toml                       internal

      LICENSE-APACHE                   published

      LICENSE-MIT                      published

      README.md                        published

      crates/loot-bench/Cargo.toml     internal

      crates/loot-bench/src/lib.rs     internal

      crates/loot-cli/Cargo.toml       internal

      crates/loot-cli/src/bisect.rs    internal

      crates/loot-cli/src/blame.rs     internal

      crates/loot-cli/src/disclosure.rs internal

      crates/loot-cli/src/doctor.rs    internal

      crates/loot-cli/src/draft.rs     internal

      crates/loot-cli/src/dup.rs       internal

      crates/loot-cli/src/emit.rs      internal

      crates/loot-cli/src/error.rs     internal

      crates/loot-cli/src/evolog.rs    internal

      crates/loot-cli/src/ferry.rs     internal

      crates/loot-cli/src/flags.rs     internal

      crates/loot-cli/src/git_mirror.rs internal

      crates/loot-cli/src/grep.rs      internal

      crates/loot-cli/src/history.rs   internal

      crates/loot-cli/src/hunks.rs     internal

      crates/loot-cli/src/kv.rs        internal

      crates/loot-cli/src/ledger.rs    internal

      crates/loot-cli/src/lib.rs       internal

      crates/loot-cli/src/main.rs      internal

      crates/loot-cli/src/mergetool.rs internal

      crates/loot-cli/src/pick.rs      internal

      crates/loot-cli/src/policy.rs    internal

      crates/loot-cli/src/position.rs  internal

      crates/loot-cli/src/reconcile.rs internal

      crates/loot-cli/src/render.rs    internal

      crates/loot-cli/src/tar.rs       internal

      crates/loot-cli/src/textdiff.rs  internal

      crates/loot-cli/src/tutorial.rs  internal

      crates/loot-cli/src/unlock.rs    internal

      crates/loot-cli/src/verbs/attest.rs internal

      crates/loot-cli/src/verbs/change.rs internal

      crates/loot-cli/src/verbs/conflicts.rs internal

      crates/loot-cli/src/verbs/custody.rs internal

      crates/loot-cli/src/verbs/grants.rs internal

      crates/loot-cli/src/verbs/history.rs internal

      crates/loot-cli/src/verbs/identity.rs internal

      crates/loot-cli/src/verbs/lane.rs internal

      crates/loot-cli/src/verbs/mod.rs internal

      crates/loot-cli/src/verbs/oplog.rs internal

      crates/loot-cli/src/verbs/relay.rs internal

      crates/loot-cli/src/verbs/repo.rs internal

      crates/loot-cli/src/verbs/store.rs internal

      crates/loot-cli/src/verbs/sync.rs internal

      crates/loot-cli/src/verbs/view.rs internal

      crates/loot-cli/src/view.rs      internal

      crates/loot-cli/src/workspace/lanes.rs internal

      crates/loot-cli/src/workspace/reconcile.rs internal

      crates/loot-cli/src/workspace/refit.rs internal

      crates/loot-cli/src/workspace/reports.rs internal

      crates/loot-cli/src/workspace/take.rs internal

      crates/loot-cli/src/workspace.rs internal

      crates/loot-cli/tests/broken_pipe.rs internal

      crates/loot-cli/tests/cli_smoke.rs internal

      crates/loot-cli/tests/custody_lock.rs internal

      crates/loot-cli/tests/describe_contention.rs internal

      crates/loot-cli/tests/docs_demo.rs internal

      crates/loot-cli/tests/emit_snapshot.rs internal

      crates/loot-cli/tests/forge_push.rs internal

      crates/loot-cli/tests/skill_commands.rs internal

      crates/loot-cli/tests/sparse_view.rs internal

      crates/loot-cli/tests/sync_resume.rs internal

      crates/loot-cli/tests/tutorial.rs internal

      crates/loot-cli/tests/workspace_publish_guard.rs internal

      crates/loot-codec/Cargo.toml     internal

      crates/loot-codec/src/attestation.rs internal

      crates/loot-codec/src/bundle_codec.rs internal

      crates/loot-codec/src/change_id.rs internal

      crates/loot-codec/src/envelope.rs internal

      crates/loot-codec/src/format.rs  internal

      crates/loot-codec/src/hex.rs     internal

      crates/loot-codec/src/key_seal.rs internal

      crates/loot-codec/src/lib.rs     internal

      crates/loot-codec/src/purge.rs   internal

      crates/loot-codec/src/sealed.rs  internal

      crates/loot-codec/src/treepath.rs internal

      crates/loot-core/Cargo.toml      internal

      crates/loot-core/examples/patched-client.rs internal

      crates/loot-core/src/bridge.rs   internal

      crates/loot-core/src/buoy.rs     internal

      crates/loot-core/src/burn.rs     internal

      crates/loot-core/src/converge.rs internal

      crates/loot-core/src/deposits.rs internal

      crates/loot-core/src/engine/change_graph.rs internal

      crates/loot-core/src/engine/custody.rs internal

      crates/loot-core/src/engine/graph_view.rs internal

      crates/loot-core/src/engine/merge.rs internal

      crates/loot-core/src/engine/negotiation.rs internal

      crates/loot-core/src/engine/object_store.rs internal

      crates/loot-core/src/engine/persist_codec.rs internal

      crates/loot-core/src/engine/surface.rs internal

      crates/loot-core/src/engine.rs   internal

      crates/loot-core/src/escrow.rs   internal

      crates/loot-core/src/lib.rs      internal

      crates/loot-core/src/liveness.rs internal

      crates/loot-core/src/manifest.rs internal

      crates/loot-core/src/oplog.rs    internal

      crates/loot-core/src/store.rs    internal

      crates/loot-core/src/testkit.rs  internal

      crates/loot-core/src/verdict.rs  internal

      crates/loot-core/tests/merge_corpus.rs internal

      crates/loot-first/Cargo.toml     internal

      crates/loot-first/src/forge.rs   internal

      crates/loot-first/src/harbor.rs  internal

      crates/loot-first/src/hygiene.rs internal

      crates/loot-first/src/lib.rs     internal

      crates/loot-first/src/main.rs    internal

      crates/loot-first/src/orchestrator.rs internal

      crates/loot-first/src/policy.rs  internal

      crates/loot-first/tests/doc_links.rs internal

      crates/loot-first/tests/exit_codes.rs internal

      crates/loot-first/tests/line_endings.rs internal

      crates/loot-first/tests/runbook_portability.rs internal

      crates/loot-forge/Cargo.toml     internal

      crates/loot-forge/Dockerfile     internal

      crates/loot-forge/migrations/0002_grant_inbox.sql internal

      crates/loot-forge/migrations/0003_read_views.sql internal

      crates/loot-forge/migrations/0004_change_authored_at.sql internal

      crates/loot-forge/migrations/0005_published_index.sql internal

      crates/loot-forge/migrations/0006_version_stack.sql internal

      crates/loot-forge/migrations/0007_identity_writer.sql internal

      crates/loot-forge/migrations/0008_retired_key_alias.sql internal

      crates/loot-forge/migrations/0009_owner_read.sql internal

      crates/loot-forge/migrations/0010_tree_entry_by_object_manifest.sql internal

      crates/loot-forge/src/blob.rs    internal

      crates/loot-forge/src/conformance.rs internal

      crates/loot-forge/src/error.rs   internal

      crates/loot-forge/src/grant.rs   internal

      crates/loot-forge/src/inbox.rs   internal

      crates/loot-forge/src/ingest.rs  internal

      crates/loot-forge/src/lib.rs     internal

      crates/loot-forge/src/main.rs    internal

      crates/loot-forge/src/memory.rs  internal

      crates/loot-forge/src/model.rs   internal

      crates/loot-forge/src/pg/inbox.rs internal

      crates/loot-forge/src/pg/meta.rs internal

      crates/loot-forge/src/pg/migrate.rs internal

      crates/loot-forge/src/pg/mod.rs  internal

      crates/loot-forge/src/pg/pool.rs internal

      crates/loot-forge/src/pg/tests.rs internal

      crates/loot-forge/src/pg/tls.rs  internal

      crates/loot-forge/src/publish.rs internal

      crates/loot-forge/src/purge.rs   internal

      crates/loot-forge/src/s3.rs      internal

      crates/loot-forge/src/serve.rs   internal

      crates/loot-forge/src/server.rs  internal

      crates/loot-forge/src/store.rs   internal

      crates/loot-forge/src/sweep.rs   internal

      crates/loot-forge/tests/account_tier.rs internal

      crates/loot-forge/tests/http.rs  internal

      crates/loot-forge/tests/ingest_and_serve.rs internal

      crates/loot-identity/Cargo.toml  internal

      crates/loot-identity/src/bip39-english.txt internal

      crates/loot-identity/src/key_seal.rs internal

      crates/loot-identity/src/lib.rs  internal

      crates/loot-identity/src/mnemonic.rs internal

      crates/loot-identity/src/peers.rs internal

      crates/loot-identity/src/seed_seal.rs internal

      crates/loot-net/Cargo.toml       internal

      crates/loot-net/src/args.rs      internal

      crates/loot-net/src/auth.rs      internal

      crates/loot-net/src/forge.rs     internal

      crates/loot-net/src/lib.rs       internal

      crates/loot-net/src/mailbox.rs   internal

      crates/loot-net/src/relay_store.rs internal

      crates/loot-net/src/storage.rs   internal

      crates/loot-net/tests/fault_injection.rs internal

      crates/loot-net/tests/relay_maintenance.rs internal

      crates/loot-net/tests/sync_round_trip.rs internal

      crates/loot-perf/Cargo.toml      internal

      crates/loot-perf/examples/offer_corpus.rs internal

      crates/loot-perf/src/bin/loot-perf-cli.rs internal

      crates/loot-perf/src/bin/loot-perf-gate.rs internal

      crates/loot-perf/src/cli.rs      internal

      crates/loot-perf/src/fixture.rs  internal

      crates/loot-perf/src/gate.rs     internal

      crates/loot-perf/src/lib.rs      internal

      crates/loot-perf/src/load.rs     internal

      crates/loot-perf/src/measure.rs  internal

      crates/loot-perf/src/pinned.rs   internal

      crates/loot-perf/src/record.rs   internal

      crates/loot-relay-contract/Cargo.toml internal

      crates/loot-relay-contract/src/lib.rs internal

      crates/loot-relay-contract/tests/fs_backend.rs internal

      crates/loot-relay-contract/tests/the_suite_asks_every_rule.rs internal

      crates/loot-relayd/Cargo.toml    internal

      crates/loot-relayd/src/lib.rs    internal

      crates/loot-relayd/src/main.rs   internal

      crates/loot-relayd/tests/object_store_relay.rs internal

      crates/loot-revset/Cargo.toml    internal

      crates/loot-revset/src/error.rs  internal

      crates/loot-revset/src/eval.rs   internal

      crates/loot-revset/src/lexer.rs  internal

      crates/loot-revset/src/lib.rs    internal

      crates/loot-revset/src/parser.rs internal

      crates/loot-revset/tests/revset.rs internal

      crates/loot-s3/Cargo.toml        internal

      crates/loot-s3/src/lib.rs        internal

      crates/loot-wasm/Cargo.toml      internal

      crates/loot-wasm/src/lib.rs      internal

      crates/loot-wasm/tests/parity.rs internal

      crates/spike-crdt/Cargo.toml     internal

      crates/spike-crdt/src/lib.rs     internal

      crates/spike-dag/Cargo.toml      internal

      crates/spike-dag/src/lib.rs      internal

      dist-workspace.toml              internal

      docs/adr/0001-per-content-decrypt-then-merge-convergence.md internal

      docs/adr/0002-encrypted-dag-foundation.md internal

      docs/adr/0003-sealed-content-module-keyring-custody.md internal

      docs/adr/0004-drop-plaintext-dedup-equality-oracle.md internal

      docs/adr/0005-cli-slice-persistence-and-attributes.md internal

      docs/adr/0006-workspace-auto-snapshot.md internal

      docs/adr/0007-embargo-escrow-module.md internal

      docs/adr/0008-grant-log-and-targeted-key-bundles.md internal

      docs/adr/0009-two-level-revocation.md internal

      docs/adr/0010-forward-maroon-implementation.md internal

      docs/adr/0011-relay-stow-append-only.md internal

      docs/adr/0012-per-object-loose-storage.md internal

      docs/adr/0013-named-remotes-and-grant-bundle-delivery.md internal

      docs/adr/0014-identity-keypairs-openssh-ed25519.md internal

      docs/adr/0015-grant-authentication-and-trust.md internal

      docs/adr/0016-identity-portability-and-rotation.md internal

      docs/adr/0017-repostore-loot-layout.md internal

      docs/adr/0018-signed-changes-authored-history.md internal

      docs/adr/0019-format-versioning-and-compatibility.md internal

      docs/adr/0020-compress-public-content.md internal

      docs/adr/0021-object-level-wants-negotiation.md internal

      docs/adr/0022-concurrent-agent-model-docks.md internal

      docs/adr/0023-agent-facing-machine-output.md internal

      docs/adr/0024-resumable-transfer.md internal

      docs/adr/0025-buoy-resolver.md   internal

      docs/adr/0026-agent-identity-model.md internal

      docs/adr/0027-hard-embargo-timed-sealed-grants.md internal

      docs/adr/0028-git-interop-bridge.md internal

      docs/adr/0029-stable-change-ids.md internal

      docs/adr/0030-implicit-auto-snapshot-and-verb-surface.md internal

      docs/adr/0031-operation-log-and-undo.md internal

      docs/adr/0032-amend-supersession-and-loot-edit.md internal

      docs/adr/0033-projecting-amended-changes-to-git.md internal

      docs/adr/0034-sealed-lanes-over-a-shared-store.md internal

      docs/adr/0035-lane-lifecycle.md  internal

      docs/adr/0036-harbor-serialized-integrator.md internal

      docs/adr/0037-loot-product-site-and-install.md internal

      docs/adr/0038-burn-and-the-mis-seal-gate.md internal

      docs/adr/0039-review-is-a-pure-projection.md internal

      docs/adr/0040-loot-codec-and-the-wasm-core.md internal

      docs/adr/0041-public-multi-tenant-loot-forge.md internal

      docs/adr/0042-sealable-tickets-in-the-repos-own-tree.md internal

      docs/adr/0043-authored-timestamps-as-a-signed-label.md internal

      docs/adr/0044-three-way-content-merge-at-the-converge-seam.md internal

      docs/adr/0045-github-stays-private-and-the-download-path-moves-to-r2.md internal

      docs/adr/0046-forge-backups-are-operator-recovery-and-a-restore-replays-the-revocation-journal.md internal

      docs/adr/0047-the-lanes-hold-position-scoped-custody.md internal

      docs/adr/0048-a-relay-is-measured-not-capped.md internal

      docs/adr/0049-deploy-releases-build-and-publish-off-github.md internal

      docs/adr/0050-a-land-runs-from-a-lane.md internal

      docs/adr/0051-tree-paths-are-stored-with-one-separator.md internal

      docs/adr/0052-a-relay-retires-a-head-never-content.md internal

      docs/adr/0053-the-bridge-learns-landed-main-from-the-checkout.md internal

      docs/adr/0054-an-empty-holder-list-is-unknown-not-nobody.md internal

      docs/adr/0055-a-land-gates-the-tree-it-publishes.md internal

      docs/adr/0056-a-store-knows-which-machine-materialized-it.md internal

      docs/adr/0057-a-push-deposits-this-identitys-own-keys.md internal

      docs/adr/0058-uncaptured-primary-work-leaves-by-explicit-take.md internal

      docs/adr/0059-credentials-arrive-by-file-the-environment-stays-the-dev-path.md internal

      docs/adr/0060-the-public-bucket-carries-binaries-not-source.md internal

      docs/adr/0061-the-forges-door-is-a-custody-list-not-a-capacity-gate.md internal

      docs/adr/0062-an-afk-run-approves-its-own-review-prs.md internal

      docs/adr/0063-lane-merge-is-retired-a-land-is-the-only-fold.md internal

      docs/adr/0064-loot-is-not-on-crates-io-and-its-names-are-held-anyway.md internal

      docs/adr/0065-a-hygiene-check-runs-at-the-moment-that-makes-it-true.md internal

      docs/adr/0066-the-alpha-promises-the-repo-not-the-interface.md internal

      docs/adr/0067-the-install-smoke-gates-staged-bytes-and-detects-published-ones.md internal

      docs/adr/0068-custody-at-rest-is-sealed-to-your-own-key-behind-an-optional-passphrase.md internal

      docs/adr/0069-internal-stays-the-default-tier.md internal

      docs/adr/0070-an-object-store-relay-is-a-second-deployable-the-cli-ships-no-driver.md internal

      docs/adr/0071-the-site-gate-is-a-build-and-a-per-surface-byte-ceiling.md internal

      docs/agents/concurrent.md        internal

      docs/agents/identity.md          internal

      docs/agents/issue-tracker.md     internal

      docs/agents/workflow.md          internal

      docs/bakeoff/index.html          internal

      docs/benchmarks/level-c-proof.md internal

      docs/benchmarks/series/028826355afe53046bef50b0c1c8c9e4.json internal

      docs/benchmarks/series/046f7b9ecdc1d70f5f5c877e834dc22e.json internal

      docs/benchmarks/series/05cd774bda937b9132f78e2e4caec6a9.json internal

      docs/benchmarks/series/05deb2339e2b0d22f7349c25adda3f9a.json internal

      docs/benchmarks/series/061a50b881bf7575de05894d1fd84a17.json internal

      docs/benchmarks/series/063031023c690cc4b4ac36627e3a6252.json internal

      docs/benchmarks/series/0630f74d5a8214f6272dcf748625922c.json internal

      docs/benchmarks/series/09e4e9b77df1e8fc4f53350faa7dc0a0.json internal

      docs/benchmarks/series/0a0a999ee7cb7125a5dba08780cf0154.json internal

      docs/benchmarks/series/0a0d3e37f6c1906f062baf76e5d0bdb5.json internal

      docs/benchmarks/series/0a4afa36500e4f2c4e4cf1e67a146dee.json internal

      docs/benchmarks/series/0c69c26d6bf8ece417d0e5f2893bde34.json internal

      docs/benchmarks/series/0d9f140dab75dc65ccba8afd7b5c65b0.json internal

      docs/benchmarks/series/0e5b19b49b7a9e8abcb0b3683713a761.json internal

      docs/benchmarks/series/0ed6408ad9ee09599e1d6e28db8b3d73.json internal

      docs/benchmarks/series/11e40e4d65e7a51c05ae9cf74540a331.json internal

      docs/benchmarks/series/12b4a2b80cf38f203528ab2f8fcb7a4e.json internal

      docs/benchmarks/series/12f76e1bc780456f166dc520a1d8c5d8.json internal

      docs/benchmarks/series/13d67aca15d5627aa1c58e3cac7c189b.json internal

      docs/benchmarks/series/150fdfd2c40e075d2f6e05eeb2e9efaf.json internal

      docs/benchmarks/series/15eb5a6a286cd317f6bcfd96244b5052.json internal

      docs/benchmarks/series/15fc913af64af9ee5ee36697324ac209.json internal

      docs/benchmarks/series/16f779bd952e8e300b326cab50a04644.json internal

      docs/benchmarks/series/187ab50109449e31cdbccb676b367120.json internal

      docs/benchmarks/series/19e8f429081483bb09da68b414832dbc.json internal

      docs/benchmarks/series/1bf06c2fc99d2ce59c81ead4ce6c3cdd.json internal

      docs/benchmarks/series/1c7e75bc30f53ac952a7b84da2267fbe.json internal

      docs/benchmarks/series/1caf8f0479e90be97ca47ee8807c1e9a.json internal

      docs/benchmarks/series/1f4f5ebff436d27c3e5e879b04888389.json internal

      docs/benchmarks/series/20cc3e7e913e0e3fb7200009a5ca6044.json internal

      docs/benchmarks/series/2238a37b610a70c0c4a959358dab514e.json internal

      docs/benchmarks/series/226201ea4b7e69ead709d37776748a4c.json internal

      docs/benchmarks/series/237975a79b6fe5c1de263d6191cb0b7e.json internal

      docs/benchmarks/series/239cff6bba46860f6ecab32915d823fc.json internal

      docs/benchmarks/series/23bde6c42588a5176badbf91d029dea1.json internal

      docs/benchmarks/series/28c010bff9a1ff8a3c27d63c7112d9b6.json internal

      docs/benchmarks/series/28ec5090aada67162f07d4c8d3e549c1.json internal

      docs/benchmarks/series/29105c284535b16a4434a441d5a45c19.json internal

      docs/benchmarks/series/2a13476b871c9aa3415c775f9f3df9ad.json internal

      docs/benchmarks/series/2d3f02ceae3c90282d236e2da70b5f23.json internal

      docs/benchmarks/series/2e7113f6990841f96592b68d94ab9b14.json internal

      docs/benchmarks/series/2e9092b38de3d5f317f17fe95ca9a769.json internal

      docs/benchmarks/series/2f6afeafbafe22ebdf59d30d8dd34b42.json internal

      docs/benchmarks/series/308669e881929362f54f576b341d0ff5.json internal

      docs/benchmarks/series/30b86fe93b6b0c047b0194ea5c5aad6b.json internal

      docs/benchmarks/series/314a197ad9d8c644e715da623529f63f.json internal

      docs/benchmarks/series/31aedc3b86c19b1259a4f7318b6a24ec.json internal

      docs/benchmarks/series/3232c95d09276a447505291131e1fefd.json internal

      docs/benchmarks/series/33a0d489d7f2e2942b02a9eee3f56dc8.json internal

      docs/benchmarks/series/382645c7c19c103e52d810a10cd7f290.json internal

      docs/benchmarks/series/39b8b1966801a51dbad161133db6260c.json internal

      docs/benchmarks/series/3d76c7397da07b4c938c3e2077837cd5.json internal

      docs/benchmarks/series/3fc15007f3258b663654678d50f7ffea.json internal

      docs/benchmarks/series/4040bc822da0d978c9b98eff6d68a016.json internal

      docs/benchmarks/series/40c63a46753cfe53a1af155b090ade4d.json internal

      docs/benchmarks/series/418c29ae5cb594de966a7b6fbb13a1cf.json internal

      docs/benchmarks/series/42dea0586072d4410de16e45ffa47c69.json internal

      docs/benchmarks/series/4386d067201c1e75956184e927fceaba.json internal

      docs/benchmarks/series/445e542c803bb956ecbbbf628b937f72.json internal

      docs/benchmarks/series/479076dcfde507e7b74f9957bff09599.json internal

      docs/benchmarks/series/482b98a5eaeca16b63ab554357021a8c.json internal

      docs/benchmarks/series/48a504f4d3ea51cc423657c7c735087d.json internal

      docs/benchmarks/series/49f6a68c35c55158ff751420b8a5a99e.json internal

      docs/benchmarks/series/4a51266a8eacbb818bbc0c22811eeaa5.json internal

      docs/benchmarks/series/4ae36e3ac8b55a8eddf10f005107f16b.json internal

      docs/benchmarks/series/4c32c1e407af4755a59464c726f8ab0f.json internal

      docs/benchmarks/series/4d6d5b819274aea7b833af8fe933751e.json internal

      docs/benchmarks/series/519290b69a6849f04c7fc5402ecf75ff.json internal

      docs/benchmarks/series/51afe3e37a8f0543fd4fc95e97e817c4.json internal

      docs/benchmarks/series/52869b25ee6388b901edd5d9a85c1a60.json internal

      docs/benchmarks/series/53673e5df58804f4da23ee6515f068da.json internal

      docs/benchmarks/series/559ca38a99733ce284d2816e57298aa2.json internal

      docs/benchmarks/series/5a09a5cf0ab34b3d1c46f9a368036eb6.json internal

      docs/benchmarks/series/5a74641c3a26b2e66eccf0fc81462033.json internal

      docs/benchmarks/series/5acd6c2d5010d65d71ba378ca84ca87d.json internal

      docs/benchmarks/series/5c53b6515bdd708cecfa846a714a781e.json internal

      docs/benchmarks/series/5d71b9982451702788b8a4997f5fb23f.json internal

      docs/benchmarks/series/5dab0ef3553db2d049fc02de3dfd46e9.json internal

      docs/benchmarks/series/601f7fae489529fbd78c218163354682.json internal

      docs/benchmarks/series/6042a9bd5eb0b4b32c1671ffc065de7e.json internal

      docs/benchmarks/series/616a3b7459d86c2f8dedd2328a686700.json internal

      docs/benchmarks/series/6203fa4267075e0f83498a598e8c2bd0.json internal

      docs/benchmarks/series/62f2809ec9af2b2c82376c88debef144.json internal

      docs/benchmarks/series/666bd9140d485f9c1706d4c5abf0d6c1.json internal

      docs/benchmarks/series/67c0d70547abbc2640bb69201e1df9ff.json internal

      docs/benchmarks/series/67cbcf09aee8b66111c9e942c3f44eaf.json internal

      docs/benchmarks/series/681642ea872702054990ac41b777dd14.json internal

      docs/benchmarks/series/68bc0ff8c6c4c79125825510de0a14de.json internal

      docs/benchmarks/series/6b16101bca7fe39afa61713c7086a00c.json internal

      docs/benchmarks/series/6b4673bc551d8fbe64556789defb31b0.json internal

      docs/benchmarks/series/6d8c826443187a44739ad4682a232e7a.json internal

      docs/benchmarks/series/735dd300664098092c8479c9820bfbee.json internal

      docs/benchmarks/series/73d793f864728346702b4f766ffe6ecb.json internal

      docs/benchmarks/series/74a4d5cb1abbde542100399ac9e4d609.json internal

      docs/benchmarks/series/751f1485596090235cb3d869be93906c.json internal

      docs/benchmarks/series/7730460d7b4ece4c6e11e49e3dd2928a.json internal

      docs/benchmarks/series/77c04ee442e1861d4091d3cb5ed221b5.json internal

      docs/benchmarks/series/794a8b73e013ebecd6ad5b21a8bbc328.json internal

      docs/benchmarks/series/79ac53bbc01d821cd0dbce2874c804af.json internal

      docs/benchmarks/series/7af080758e50e28ebd39d0a70986a020.json internal

      docs/benchmarks/series/7d787f08b695a8e086fa4a8e11259f6d.json internal

      docs/benchmarks/series/7ed47eda57bb5baf88f8c2408d7d6dab.json internal

      docs/benchmarks/series/7ef26f633466df80cd131cc63082a027.json internal

      docs/benchmarks/series/80091cd23238c47a2d4827ab54778ed4.json internal

      docs/benchmarks/series/809b8bb3cf50b4aabbb36a1fbbdcbe7e.json internal

      docs/benchmarks/series/80e81d847cc2569be709a4e59a98f6af.json internal

      docs/benchmarks/series/80f3dd0ff1a3a03d7e528235c7e6c586.json internal

      docs/benchmarks/series/814d1fcfe650d279c8b2184cd0e5548b.json internal

      docs/benchmarks/series/82982d8206b46ec3d2db6719fa42530a.json internal

      docs/benchmarks/series/82fbb9eb29afcbad962719ce7a1ac672.json internal

      docs/benchmarks/series/8409e44d9d8b2415b09b2c0fc437038f.json internal

      docs/benchmarks/series/841ec5f40b97a0451c0a83d7ee78aa13.json internal

      docs/benchmarks/series/8611c6f2b378c55d5452ebab1984b8ed.json internal

      docs/benchmarks/series/8b8decb06438ea7d8a7d0910ed6adfbe.json internal

      docs/benchmarks/series/8d103ea93de36dfa838bc10a864ce566.json internal

      docs/benchmarks/series/8dd5567ddc93db6b4a6a0765547e2397.json internal

      docs/benchmarks/series/8fbc3f3b8c70db3a1ec7fa14beafe7e6.json internal

      docs/benchmarks/series/9177bc510c951d747829680d02b3b2bc.json internal

      docs/benchmarks/series/926464bd1aab63ba0566fb59b2585e47.json internal

      docs/benchmarks/series/9278bcddee4d9c10a93d2b00866bfec7.json internal

      docs/benchmarks/series/95020bb3489585777a77a4d2692f45af.json internal

      docs/benchmarks/series/956fce0c46ee56dc537af5ef56d781f6.json internal

      docs/benchmarks/series/98631b8e2a13b877ef37869f2ce5c7b0.json internal

      docs/benchmarks/series/986ab45e0492e87b09be5c444154cf27.json internal

      docs/benchmarks/series/990c5cd54f3d07bdc1450bd9e83eccdb.json internal

      docs/benchmarks/series/9b4d823518270ec35967a490ffa568ad.json internal

      docs/benchmarks/series/9d251c9426ed7abecb886ace50d6cb69.json internal

      docs/benchmarks/series/9e2a53e9f680e272ed2d5532fd97b5fc.json internal

      docs/benchmarks/series/9e775525f5d207a00a544841a5eed366.json internal

      docs/benchmarks/series/a0339599164efafb37854728d616ebf7.json internal

      docs/benchmarks/series/a31a0fb8fc301dd662fa745b1320c70f.json internal

      docs/benchmarks/series/a389b7abde0979680eef738f15411395.json internal

      docs/benchmarks/series/a7f1ee0f442da5a8ebf18113e8875bab.json internal

      docs/benchmarks/series/a8bc4435292e16ad497064f5d633fd68.json internal

      docs/benchmarks/series/aafc18d6c879b352f4bd242c0a17a44b.json internal

      docs/benchmarks/series/ab647cde7faa215725418831fdc1dc4d.json internal

      docs/benchmarks/series/ae0a800e9b0718871941c83d92549040.json internal

      docs/benchmarks/series/aea7632cae3cf92b34974c670b109c18.json internal

      docs/benchmarks/series/b13c688922bda6fd11ac756df47af803.json internal

      docs/benchmarks/series/b23ed6218152821e5151257649d8e6e2.json internal

      docs/benchmarks/series/b349edf62b082e3b8c05b2331ae51b96.json internal

      docs/benchmarks/series/b40e3a0f43fa5a15fd510086abe5ae80.json internal

      docs/benchmarks/series/b4862b264b4ec20a771fc729d82c5a79.json internal

      docs/benchmarks/series/b5f2c1da4db10382876c7648a5ae1316.json internal

      docs/benchmarks/series/b733ac785ae9f0c15a924fd9b76b73a0.json internal

      docs/benchmarks/series/b74b292392962bd6218a7fdcc23445bb.json internal

      docs/benchmarks/series/b781c7bfe9431361963754880b750969.json internal

      docs/benchmarks/series/b949ef859c28d21bf445987cd9a53fc1.json internal

      docs/benchmarks/series/bb58ed9a272f218a4bc58ce744f29f32.json internal

      docs/benchmarks/series/bc350acbd3108d5e427ba4778f4e3ecd.json internal

      docs/benchmarks/series/bfe705ec01139b7124f0ee9d39bfc6c8.json internal

      docs/benchmarks/series/bffd8ad24ab792e12bdaca5171446d2d.json internal

      docs/benchmarks/series/c022c440a3b2cce037cb20ef334bed4b.json internal

      docs/benchmarks/series/c1b77fcce90ac884a935f22dd70a1575.json internal

      docs/benchmarks/series/c23d9e2cf01fd9509ff97f125b2e6eb5.json internal

      docs/benchmarks/series/c2b58d0b59e24e6ab307a7df7ea2c2ac.json internal

      docs/benchmarks/series/c5e6e1e0eee3406e68197af87bd662a3.json internal

      docs/benchmarks/series/c64b8806b48153a3596c4f68a57bd2bc.json internal

      docs/benchmarks/series/c81470b1216e6b16666399fcf9a5afba.json internal

      docs/benchmarks/series/c95a07150672624c22988255456bd83a.json internal

      docs/benchmarks/series/cec6b2e92e2042203ae643d1d664c2ab.json internal

      docs/benchmarks/series/cf3501296e9dbb153fc55961c5e766e9.json internal

      docs/benchmarks/series/d1454de7f4c42583ecf43ca7c06bf7b7.json internal

      docs/benchmarks/series/d3f8e434306afbcf48b82b4a6bc04860.json internal

      docs/benchmarks/series/d4317597797136c2d1547794141d8cff.json internal

      docs/benchmarks/series/d89b87f08bfc4f00ea9d7ac47b6fdfca.json internal

      docs/benchmarks/series/d8bb946b35d22e718d8dc568a8985257.json internal

      docs/benchmarks/series/da1d5de4e4a31e665ea1c32e12ef3dcd.json internal

      docs/benchmarks/series/dab1a40bfe89924b00dd9351f92d3690.json internal

      docs/benchmarks/series/daea73f021edf6789cded5975619e60e.json internal

      docs/benchmarks/series/db568618a99475db7fdf4b807094d052.json internal

      docs/benchmarks/series/dba8579287743bf36d6a22c944b63615.json internal

      docs/benchmarks/series/dbf01e6def8ca0401324f3ae9f639d3d.json internal

      docs/benchmarks/series/dc346b361770996dfa97cccff98f222b.json internal

      docs/benchmarks/series/dcda94167b6b854464d2376d5e901e2e.json internal

      docs/benchmarks/series/dd1353ff67c1b35b75db46914d675ad7.json internal

      docs/benchmarks/series/defee3b8c0e68c22bb56b471d83f6612.json internal

      docs/benchmarks/series/df37ba7bc50177eff43217132ce5ff51.json internal

      docs/benchmarks/series/e1882f6e306841ed1354d6e85c461790.json internal

      docs/benchmarks/series/e1fce2c3ab6c67d4f350060d5529b84b.json internal

      docs/benchmarks/series/e2667c08c6b6cf8a2aadd970676a2c36.json internal

      docs/benchmarks/series/e2d1b31b65301fb65b2571785e342129.json internal

      docs/benchmarks/series/e368a411768cf1e607d9fa874492d895.json internal

      docs/benchmarks/series/e41f8f22f5030220a3d1d8198ab884c9.json internal

      docs/benchmarks/series/e52416698095aa9d17ce548a39eff053.json internal

      docs/benchmarks/series/e68506f2016674c600e7b57ddac915ce.json internal

      docs/benchmarks/series/e7dbf240031fa3ae5884770e4d0f8a32.json internal

      docs/benchmarks/series/e8ae3fc1f1fbeaf2b18292caf41e791c.json internal

      docs/benchmarks/series/ea0cf44f25d0d11ebc9b1b17378ec8a0.json internal

      docs/benchmarks/series/eb1f872bdc14d46ff6ecdceb4e6d7ba1.json internal

      docs/benchmarks/series/eb25bdbc91a5aac286aa4059b51d8c61.json internal

      docs/benchmarks/series/eb3e77914c3b04748d7caf29aebc0176.json internal

      docs/benchmarks/series/ec6ee2528c07a7435ec220fa93be7c84.json internal

      docs/benchmarks/series/ecc054b55b42a6844482eeab182823cd.json internal

      docs/benchmarks/series/efa8dbe44c84e15efe93607f982777c6.json internal

      docs/benchmarks/series/f05f344405835841c5cfbedefc34c0f7.json internal

      docs/benchmarks/series/f0b5a1746058da1ecfc8344ccfba4bcc.json internal

      docs/benchmarks/series/f12a6561a72c8c28b4da437e1f9c7398.json internal

      docs/benchmarks/series/f1832117ac15046e07ed4b70dea7fc26.json internal

      docs/benchmarks/series/f27c6f313764d079e7d5bfd2be22bd91.json internal

      docs/benchmarks/series/f3bbea589328d671d46367c47df8af81.json internal

      docs/benchmarks/series/f46a87f01fa3bc1eed2cd1ace3d14a6a.json internal

      docs/benchmarks/series/f778484958b0d985949a873c06971886.json internal

      docs/benchmarks/series/f859444b43b897c2fb56b7e086ed06fa.json internal

      docs/benchmarks/series/f89727757e2465113c27fcc619643bb7.json internal

      docs/benchmarks/series/f8dc012ec6baf483cf31cac7bfb3c738.json internal

      docs/benchmarks/series/fa0fb1042627c07a9712a377223c9bc0.json internal

      docs/benchmarks/series/fa437398e27c69aabd763b6dffb30f0b.json internal

      docs/benchmarks/series/fc5558b1e2122e6289676e2f5d0123bd.json internal

      docs/benchmarks/series/fe1abad66671821e22d9aef8ff6cec7b.json internal

      docs/benchmarks/series/fe231a0c0a9a08e89ee1c7ccd94aa0db.json internal

      docs/benchmarks/series/fe36474a59b2a07f8520100ea744a3cf.json internal

      docs/benchmarks/series/fed72d440c538cee478f94eadd3510e9.json internal

      docs/benchmarks/series.jsonl     internal

      docs/dogfood/drive-log.md        internal

      docs/evidence/amend-divergence.md internal

      docs/evidence/concurrent-agents.md internal

      docs/evidence/forge-datastores.md internal

      docs/evidence/lane-hold.md       internal

      docs/evidence/loot-first.md      internal

      docs/evidence/loot-hosts-loot.md internal

      docs/evidence/perf-gate.md       internal

      docs/evidence/runs/amend-divergence-demo.txt internal

      docs/evidence/runs/attack-demo.txt internal

      docs/evidence/runs/concurrent-agents-demo.txt internal

      docs/evidence/runs/grant-maroon-demo.txt internal

      docs/evidence/runs/install-prototype-windows.txt internal

      docs/evidence/runs/lane-hold-demo.txt internal

      docs/evidence/runs/sealed-path-demo.txt internal

      docs/evidence/runs/trust-story-demo.txt internal

      docs/evidence/runs/wave-proof-lanes-demo.txt internal

      docs/evidence/scripts/amend-divergence-demo.ps1 internal

      docs/evidence/scripts/attack-demo.ps1 internal

      docs/evidence/scripts/concurrent-agents-demo.ps1 internal

      docs/evidence/scripts/grant-maroon-demo.ps1 internal

      docs/evidence/scripts/lane-hold-demo.ps1 internal

      docs/evidence/scripts/sealed-path-demo.ps1 internal

      docs/evidence/scripts/trust-story-demo.ps1 internal

      docs/evidence/scripts/wave-proof-lanes-demo.ps1 internal

      docs/evidence/wave-proof-lanes.md internal

      docs/lore-comparison.md          internal

      docs/release-day-install-checklist.md internal

      docs/research/deploy-chain-loot-site.md internal

      docs/research/forge-blob-tier.md internal

      docs/research/forge-off-the-vps.md internal

      docs/research/hero-repitch-prototype.md internal

      docs/research/install-prototype-loot.md internal

      docs/research/jj-ergonomics-prototype.md internal

      docs/research/jj-ergonomics.md   internal

      docs/research/loot-first-workflow-prototype.md internal

      docs/research/presentational-boundary-audit-millerbyte-frontend.md internal

      docs/research/release-engineering-install-one-liner.md internal

      docs/research/shared-store-nwriter-audit.md internal

      docs/research/ts-sdk-path-scoped-fetching.md internal

      docs/research/ts-sdk-rust-bridging.md internal

      docs/research/windows-installer-integrity.md internal

      docs/second-machine-setup.md     internal

      docs/specs/loot-adopt-target.md  internal

      docs/specs/loot-forge.md         internal

      docs/specs/loot-site.md          internal

      docs/specs/loot-tickets.md       internal

      docs/sql/forge-schema.sql        internal

      issues/CA1-docks.md              internal

      issues/CA2-dock-merge-harbor.md  internal

      issues/CA3-porcelain-machine-output.md internal

      issues/CA4-buoy-resolver.md      internal

      issues/GB1-git-interop-bridge.md internal

      issues/README.md                 internal

      issues/S1-format-versioning.md   internal

      issues/S2-compress-public-content.md internal

      issues/S3-signed-changes.md      internal

      issues/S4-attestation-lane.md    internal

      issues/S5-wants-negotiation.md   internal

      issues/S6-resumable-transfer.md  internal

      issues/S7-pluggable-relay-backend-s3.md internal

      issues/S8-sparse-views.md        internal

      issues/S9-relay-fault-injection-tests.md internal

      issues/create-agent-issues.sh    internal

      issues/create-issues.sh          internal

      rust-toolchain.toml              internal

      sdk/.gitignore                   internal

      sdk/README.md                    internal

      sdk/package-lock.json            internal

      sdk/package.json                 internal

      sdk/scripts/wasm-stamp.mjs       internal

      sdk/src/errors.ts                internal

      sdk/src/grants.ts                internal

      sdk/src/hex.ts                   internal

      sdk/src/index.ts                 internal

      sdk/src/loot-runner.ts           internal

      sdk/src/physical.ts              internal

      sdk/src/relay-transport.ts       internal

      sdk/src/repo.ts                  internal

      sdk/src/working-overlay.ts       internal

      sdk/test/fixtures/gen-relay-fixtures.mjs internal

      sdk/test/fixtures/relay-bundles.json internal

      sdk/test/grants.unit.test.ts     internal

      sdk/test/physical.behavior.test.ts internal

      sdk/test/physical.unit.test.ts   internal

      sdk/test/private.behavior.test.ts internal

      sdk/test/pull.behavior.test.ts   internal

      sdk/test/read-contract.ts        internal

      sdk/test/read.behavior.test.ts   internal

      sdk/test/relay.unit.test.ts      internal

      sdk/test/working-overlay.test.ts internal

      sdk/test/write.behavior.test.ts  internal

      sdk/tsconfig.json                internal

      site/.gitignore                  internal

      site/Dockerfile                  internal

      site/budget.json                 internal

      site/package-lock.json           internal

      site/package.json                internal

      site/src/components/blob-highlight.tsx internal

      site/src/components/code-block-prism.ts internal

      site/src/components/code-block.tsx internal

      site/src/components/forge.tsx    internal

      site/src/components/hero.tsx     internal

      site/src/components/private.tsx  internal

      site/src/lib/forge.ts            internal

      site/src/lib/hero.ts             internal

      site/src/lib/identity/bytes.ts   internal

      site/src/lib/identity/key.ts     internal

      site/src/lib/identity/mnemonic.ts internal

      site/src/lib/identity/recoveryFile.ts internal

      site/src/lib/identity/seedblob.ts internal

      site/src/lib/install.ts          internal

      site/src/lib/installerProxy.ts   internal

      site/src/lib/private/api.ts      internal

      site/src/lib/private/csp.ts      internal

      site/src/lib/private/diff.ts     internal

      site/src/lib/private/engine.ts   internal

      site/src/lib/private/grants.ts   internal

      site/src/lib/private/open.ts     internal

      site/src/lib/private/session.ts  internal

      site/src/lib/private/vault.ts    internal

      site/src/react-syntax-highlighter.d.ts internal

      site/src/routeTree.gen.ts        internal

      site/src/router.tsx              internal

      site/src/routes/__root.tsx       internal

      site/src/routes/account.tsx      internal

      site/src/routes/api.identity.me.ts internal

      site/src/routes/api.identity.register.ts internal

      site/src/routes/api.identity.seed.ts internal

      site/src/routes/api.private.blob.ts internal

      site/src/routes/api.private.history.ts internal

      site/src/routes/api.private.me.ts internal

      site/src/routes/api.private.path-history.ts internal

      site/src/routes/api.private.presign.ts internal

      site/src/routes/api.private.repos.ts internal

      site/src/routes/api.private.tree.ts internal

      site/src/routes/docs.tsx         internal

      site/src/routes/evidence.tsx     internal

      site/src/routes/index.tsx        internal

      site/src/routes/install.tsx      internal

      site/src/routes/install[.]ps1.ts internal

      site/src/routes/install[.]sh.ts  internal

      site/src/routes/k.$owner.$repo.blob.$selector.$.tsx internal

      site/src/routes/k.$owner.$repo.diff.$from.$to.$.tsx internal

      site/src/routes/k.$owner.$repo.history.$.tsx internal

      site/src/routes/k.$owner.$repo.history.index.tsx internal

      site/src/routes/k.$owner.$repo.index.tsx internal

      site/src/routes/k.$owner.$repo.tree.$selector.$.tsx internal

      site/src/routes/k.$owner.index.tsx internal

      site/src/routes/k.$owner.sitemap[.]xml.ts internal

      site/src/routes/k.$owner.tsx     internal

      site/src/routes/known-issues.tsx internal

      site/src/routes/license.tsx      internal

      site/src/routes/private.$owner.$repo.blob.$selector.$.tsx internal

      site/src/routes/private.$owner.$repo.diff.$from.$to.$.tsx internal

      site/src/routes/private.$owner.$repo.history.$.tsx internal

      site/src/routes/private.$owner.$repo.history.index.tsx internal

      site/src/routes/private.$owner.$repo.tree.$selector.$.tsx internal

      site/src/routes/private.index.tsx internal

      site/src/routes/robots[.]txt.ts  internal

      site/src/routes/trust.tsx        internal

      site/src/routes/why.tsx          internal

      site/src/server/credentials.ts   internal

      site/src/server/forge.ts         internal

      site/src/server/identity/clerk.ts internal

      site/src/server/identity/db.ts   internal

      site/src/server/identity/http.ts internal

      site/src/server/identity/identity.ts internal

      site/src/server/owner/blobs.ts   internal

      site/src/server/owner/db.ts      internal

      site/src/server/owner/http.ts    internal

      site/src/server/owner/owner.ts   internal

      site/src/server/read/blob.ts     internal

      site/src/server/read/db.ts       internal

      site/src/server/read/index.ts    internal

      site/src/server/read/read.ts     internal

      site/src/server/read/seal.ts     internal

      site/src/server/read/sigv4.ts    internal

      site/src/server/read/tree.ts     internal

      site/src/server/read/types.ts    internal

      site/src/styles.css              internal

      site/src/vite-env.d.ts           internal

      site/test/alias.pg.test.ts       internal

      site/test/anonymous-links.test.ts internal

      site/test/code-block.test.ts     internal

      site/test/credentials.test.ts    internal

      site/test/forge.test.ts          internal

      site/test/helpers.ts             internal

      site/test/hero.test.ts           internal

      site/test/identity.pg.test.ts    internal

      site/test/identity.unit.test.ts  internal

      site/test/installerProxy.test.ts internal

      site/test/owner.pg.test.ts       internal

      site/test/private-csp.test.ts    internal

      site/test/private-diff.test.ts   internal

      site/test/private-engine.test.ts internal

      site/test/private-grants.test.ts internal

      site/test/private-open.test.ts   internal

      site/test/private-presign.test.ts internal

      site/test/read.pg.test.ts        internal

      site/test/release-pin.net.test.ts internal

      site/test/seal.test.ts           internal

      site/test/sigv4.test.ts          internal

      site/tools/budget.mjs            internal

      site/tsconfig.app.json           internal

      site/tsconfig.json               internal

      site/tsconfig.node.json          internal

      site/vercel.json                 internal

      site/vite.config.ts              internal

      site/vitest.config.ts            internal

      tools/claude-worktree-guard.sh   internal

      tools/loot-day.ps1               internal

      tools/new-agent.ps1              internal

      (1 sealed path(s) skipped — request a grant to access them)

    surfaced d31bf81e as reviewer

PASS: the agent's clone does NOT materialize the sealed path (docs/pitch/zk-host.md absent)

PASS: the agent's clone DOES materialize internal content (CONTEXT.md present)

PASS: loot reports sealed path(s) skipped for the agent (it holds the ciphertext, not the key)



>>> dev: loot whoami (the real repo's identity)

    identity: connor

    pubkey:   ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINvz2+YyJofdHNWWRplLv1RRwA/XVIMi2uHJfLevIzbu connor@loot

    share with peers:  loot peer add connor ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINvz2+YyJofdHNWWRplLv1RRwA/XVIMi2uHJfLevIzbu connor@loot

PASS: the dev repo's identity is connor (the grantee of docs/pitch/**)

PASS: the dev's working tree HAS the sealed path present and readable (docs/pitch/zk-host.md)



>>> dev reads the sealed path (first line of docs/pitch/zk-host.md):

    # The host that cannot read your code



================  RESULT  ================

Same ciphertext on the relay; docs/pitch/ is present for the dev (connor

holds the key) and absent for the agent clone (ciphertext only). Visibility

is a property of the content, not the repository.



Honesty (ADR 0026): this is one machine under one OS user. 'Agents cannot

read the sealed path' means key custody PLUS the agent harness's file

sandbox -- an honest-participant posture. A hostile process running as the

dev's OS user could read the dev's keyring off disk; the claim is about

identity-scoped visibility within a cooperating multi-identity repo, which

is exactly what the thesis is about.



ALL CHECKS PASSED -- the sealed path is dev-visible, agent-invisible.

run finished (utc): 2026-08-23 16:36:20Z


evidence doc — docs/evidence/loot-hosts-loot.md
# Evidence: loot hosts loot

The concrete, checkable definition of done for the thesis-proof milestone
(wayfinder map #54, resolved by ticket #60 on 2026-07-09). The thesis —
*visibility and permissions are properties of content and changes, not of the
repository* — is proven when every box below is checked. Demo claims are
**re-runnable scripts** whose captured output is committed beside this doc
(`docs/evidence/scripts/`, outputs in `docs/evidence/runs/`); the daily-driving
leg is a dated log (section A). This doc itself rides the relay: the proof is
content in the repo the thesis is about.

## Prerequisites (must land before evidence counts)

- [x] #61 — `.lootattributes` forward-slash globs fail open to Public on Windows
- [x] #62 — attributes edit silently demotes restricted content to Public
- [x] #64 — `.lootignore` (pilot: one stray `status` sealed 38 MB of `target/`)
- [x] #65 — spurious conflict on content neither side edited
- [x] #66 — `loot gc` regression (merged in #17, gone from the CLI)

#61/#62 gate every sealed-path claim (a fail-open seal is theater); the rest
gate daily driving (per the #56 pilot, a day fighting these is not a day of
evidence).

## A. Daily driving — 5 consecutive working days

A day counts iff **every change to this repo that day is finalized in loot and
pushed to the relay the same day**; git dual-runs as backup only (commits may
batch, but loot is the primary record). Divergence pain is logged per day —
that log is dogfood data, not failure.

Per-day detail lives in [../dogfood/drive-log.md](../dogfood/drive-log.md); the
daily ritual is one command, `tools/loot-day.ps1` (see that log's header).

| Day | Date | Changes pushed | Divergence / friction notes |
|-----|------|----------------|------------------------------|
| 1   | 2026-07-10 | `c670cc2b` embargo CLI (#88) + attack demo (#89) + section-B evidence + maroon fix + drive setup | loot was 3 PRs behind git; caught up in one O(delta) push (14 objects), no conflicts |
| 2   | 2026-07-10 | `a8cafda5` ferry the git bridge (#114-118) + concurrent-agents epic close-out (#126-131) into loot | git-clean day: ferry ingested 4 commits, 0 conflicts, 0 projected back; 146 objects pushed, resumable |
| 3   | 2026-07-11 | ten loot-first lanes, head `yxvnvtox`/`b071df66` (gate #173, arch wave #185-#191, review fixes #192) | inversion day: loot led via `loot-first.ps1`; end-of-day ritual = clean tree, ferry up to date, 0 objects to push (already published at each land) |
| 4+  | 2026-07-11 → | *no longer a discrete count* — loot became the standing daily driver (see note below) | every subsequent working day has finalized through `loot-first` lanes and pushed to the relay; e.g. 2026-07-18 landed #175 (regression test) via a lane → PR #317 → signed commit `3e74dd2` → relay push, `docs/pitch/` sealed throughout |

- [x] **Satisfied in practice — the discrete 5-day count was superseded by
      continuous use.** The bar existed to prove loot could carry real daily
      development; three logged days established the ritual, and loot has been
      the primary record for every working day since (the `loot-first`
      orchestrator replaced the day-1 `loot-day.ps1` helper — #218). By
      2026-07-18 the question "can we drive on this for days" was long answered
      by having done so, so we close the count as met-in-spirit rather than
      manufacture two more dated rows. The streak's *intent* — loot hosts loot,
      daily — is the repo's normal mode of operation.

## B. Agents as distinct identities (ADR 0026)

- [x] First agent identity minted and registered — #86 (`crew` @
      `..\loot-crew\crew` via `tools/new-agent.ps1`; peer registry + relay
      allowlist; clone verified: full public tree present, `docs/pitch/`
      absent)
- [x] **Sealed-path script**: the agent's clone surfaces the repo with
      `docs/pitch/` absent; the dev's surfaces it present. Script
      `scripts/sealed-path-demo.ps1`, output `runs/sealed-path-demo.txt`
      (first run 2026-07-10; re-run 2026-08-23 with a current binary — #1232 —
      because the committed output predated the `public`→`internal` tier
      rename and taught the retired word: a fresh non-dev clone materializes
      741 internal + 3 published paths and skips the sealed path; the dev repo
      (connor) reads `docs/pitch/zk-host.md`). Read-only — no push, no relay
      pollution.
- [x] **Grant/maroon script**: grant a restricted path to the agent → agent
      reads it → maroon the agent → agent's next pull carries the new seal it
      cannot open. Script `scripts/grant-maroon-demo.ps1`, output
      `runs/grant-maroon-demo.txt`. Hermetic against a local `loot serve` (the
      cycle mutates history, so it stays off the shared VPS DAG). The Manifest
      audit trail (grantor/grantee as pubkeys) is printed. NB: fixed a real bug
      en route — `loot maroon` recorded the re-seal change unsigned, so it never
      propagated (ADR 0018: only signed history travels); the CLI now finalizes
      it.
- [x] Honesty statement in the captured output: on one machine under one OS
      user, "agents cannot read" = key custody **plus the agent harness's file
      sandbox** (honest-participant posture, per ADR 0026). Both demos print it;
      grant/maroon also flags that already-decrypted bytes are not forward-secret
      (ADR 0009).

## C. Hard embargo (ADR 0027)

- [x] #14 — engine/wire: timed SealedGrant deposit, relay withholding,
      `FORMAT_MAJOR` bump
- [x] #88 — CLI: push deposits timed grants; `pull-grants` files revealed keys
- [x] **Attack-demo script (#89)**: a holder with an advanced clock, direct
      `.loot/escrow` inspection, and a patched binary **fails** to read the
      embargoed change before `reveal_at`, then reads it after the relay
      releases. Script `scripts/attack-demo.ps1`, captured output
      `runs/attack-demo.txt` (run 2026-07-10 against the live VPS relay; all
      three pre-reveal attacks failed, post-reveal read succeeded). The demo is
      **mailbox-only** — the timed SealedGrant is deposited to the holder's
      pubkey-addressed mailbox (self-draining) and the ciphertext travels as an
      out-of-band bundle file, so nothing is stowed into the relay's shared DAG.
- [x] Honesty statement in the captured output: the claim is
      **holder**-adversary-proof; residual trust is the relay operator
      releasing on time, and in this demo operator = dev (ADR 0027).

## Done

- [x] All boxes above checked; map #54 Destination satisfied (Section A
      closed as proven-in-practice — see its note); milestone
      "loot hosts loot" closed with a link to this doc. Retired 2026-07-18.

Hard embargo — no clock, escrow, or patched binary reads it early

What this proves: an embargoed change stays unreadable until the relay's own clock passes reveal_at. An adversarial holder with an advanced clock, direct .loot inspection, and a binary with every time gate removed all fail — then the read succeeds after release. The key bytes were never on the holder's machine.

PASS: advanced holder clock does not release the key (relay clock gates, not the holder's)
PASS: the holder holds only ciphertext: the plaintext secret and key material are absent from .loot
PASS: a client with the time gate removed still cannot read (no key bytes to bypass)
PASS: the relay withholds the grant from its mailbox until its own clock passes reveal_at
PASS: after reveal_at the relay delivers the key and the holder reads the embargoed change normally
ALL CHECKS PASSED -- embargo is holder-adversary-proof against the live relay.
run output — docs/evidence/runs/attack-demo.txt
=== loot hard-embargo attack demo (#89, ADR 0027) ===
run started (utc): 2026-07-10 15:33:32Z
relay:             https://relay.millerbyte.com
work dir:          C:\Users\conno\AppData\Local\Temp\loot-attack-demo-1783697612
embargo window:    40s

>>> building binaries (loot release + patched-client example)
    loot:           C:\Users\conno\source\repos\loot\target\release\loot.exe
    patched-client: C:\Users\conno\source\repos\loot\target\debug\examples\patched-client.exe

>>> originator: loot init --identity connor
    initialized empty loot repo at ., identity = connor
    public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBoaz1KpZgF2ImIiJeOnefVsqpTsrZltrAHvcB9elKnR connor@loot
    tip: share your public key with peers via `loot whoami`
    tip: declare per-file privacy in .lootattributes, e.g. `.env restricted=connor`

>>> holder:     loot init --identity holder
    initialized empty loot repo at ., identity = holder
    public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJpcRvRsiz7q56jtdVFHjhvP4lEG7PaKCBBr0A+0xWfm holder@loot
    tip: share your public key with peers via `loot whoami`
    tip: declare per-file privacy in .lootattributes, e.g. `.env restricted=holder`

reveal_at (unix):  1783697653   (2026-07-10 15:34:13Z)

>>> originator: seal + finalize the embargoed change
    working change 4ee0e4a5 — "embargoed change"
      .lootattributes          public
      embargoed.md             embargoed@1783697653
    finalized working change; the next `status` starts a fresh one

>>> originator: loot bundle (ciphertext only, no key) -> file
    wrote C:\Users\conno\AppData\Local\Temp\loot-attack-demo-1783697612\cipher.bundle (639 bytes) — copy it to a peer and `loot apply`

>>> originator: peer add holder + grant --relay (timed deposit)
    registered peer 'holder'
    delivered sealed grant for 'holder' via relay https://relay.millerbyte.com
      embargoed.md → holder (sealed, signed, recorded in manifest)
      timed: the relay withholds the key until 1783697653 (hard embargo, ADR 0027)
      recipient runs `loot pull-grants` to receive it

>>> holder: peer add connor + apply the ciphertext bundle
    registered peer 'connor'
    applied C:\Users\conno\AppData\Local\Temp\loot-attack-demo-1783697612\cipher.bundle as holder:
      .lootattributes          converged
      embargoed.md             converged
    run `loot surface` to materialize what you may see

================  PRE-REVEAL ATTACKS (must all fail)  ================

>>> attack 1 (lying clock): LOOT_CLOCK >> reveal_at; loot grants + pull-grants
    no pending grants at https://relay.millerbyte.com
    no pending grants at https://relay.millerbyte.com
      .lootattributes                  public
      (1 sealed path(s) skipped — request a grant to access them)
    surfaced 4ee0e4a5 as holder
PASS: advanced holder clock does not release the key (relay clock gates, not the holder's)

>>> attack 2 (inspection): grep the holder's entire .loot for the plaintext secret
    scanned 14 file(s) under .loot
    the plaintext secret appears in NO file under .loot
    ciphertext objects held: 2 (the holder has the encrypted blob, not the key)
    escrow file: 6 bytes (empty header = no embargoed key staged)
PASS: the holder holds only ciphertext: the plaintext secret and key material are absent from .loot

>>> attack 3 (patched binary): read at now = u64::MAX with every gate removed
    patched client: all time gates removed (flush + read at now = u64::MAX)
    read FAILED even with every gate removed: not authorized to read Oid([219, 93, 109, 20, 10, 2, 131, 185, 13, 2, 155, 101, 243, 43, 107, 119, 130, 179, 40, 254, 198, 25, 250, 47, 62, 108, 139, 55, 115, 151, 84, 70])
    nothing to bypass — the key bytes never arrived on this machine
PASS: a client with the time gate removed still cannot read (no key bytes to bypass)

>>> relay check: loot grants (relay clock still < reveal_at)
    no pending grants at https://relay.millerbyte.com
PASS: the relay withholds the grant from its mailbox until its own clock passes reveal_at

waiting 50s for the relay clock to pass reveal_at...

================  POST-REVEAL READ (must succeed)  ================

>>> holder: loot pull-grants + surface (relay has now released the key)
    applied 1/1 grant(s) from https://relay.millerbyte.com
    run `loot surface` to materialize newly-accessible content
      .lootattributes                  public
      embargoed.md                     embargoed@1783697653
    surfaced 4ee0e4a5 as holder
PASS: after reveal_at the relay delivers the key and the holder reads the embargoed change normally

================  TRUST CLAIM (ADR 0027)  ================
The claim is HOLDER-adversary-proof: no holder -- with an advanced clock, a
patched binary, or direct disk inspection -- can read an embargoed change
before reveal_at, because the key bytes are never on the holder's machine;
they sit at the relay, ECIES-wrapped, until the RELAY's clock releases them.

Residual trust: early release requires the RELAY OPERATOR -- a distinct role
that holds only wrapped blobs it cannot read. In THIS demo the operator is
the dev (operator = holder-of-the-VPS = the same person running loot), stated
openly. Removing even that trust (drand timelock) is the recorded
post-milestone hardening; the holder-adversary claim does not depend on it.

================  RESULT  ================
ALL CHECKS PASSED -- embargo is holder-adversary-proof against the live relay.
run finished (utc): 2026-07-10 15:34:24Z

Concurrent agents converge — no side silently dropped

What this proves: two agents editing the same repo reconcile through docks and the relay's fork-collapse. Disjoint work converges, a same-line edit surfaces as a machine-readable conflict (never a silent loss), and a path one side can't decrypt is relayed as ciphertext rather than merged.

PASS: dock-a's disjoint file converges into the harbor (= row)
PASS: the concurrent same-line edit surfaces as a Conflict (C) -- not silently dropped
PASS: after resolve, no conflicts remain (porcelain is empty)
PASS: agent's apply pulls in dev's concurrent file (fork collapses -- dev's side not dropped)
PASS: the restricted path agent can't open surfaces as RelayedUnmerged (R) -- carried, not merged
ALL CHECKS PASSED -- concurrent convergence proven, both acts.
run output — docs/evidence/runs/concurrent-agents-demo.txt
=== loot concurrent-agents demo (wayfinder map #119) ===

run started (utc): 2026-07-10 23:45:55Z

work dir:          C:\Users\conno\AppData\Local\Temp\loot-concurrent-1783727155



>>> building loot (release)



############################################################

# ACT 1 -- local docks + harbor + conflict + buoy (ADR 0022)

############################################################



>>> init the repo (identity dev) and lay down a base change

    initialized empty loot repo at ., identity = dev

    public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC0cI0PafymKKUFGsfX8QeK7anOU/NcFz+pGlhJ+wX5d dev@loot

    tip: share your public key with peers via `loot whoami`

    tip: declare per-file privacy in .lootattributes, e.g. `.env restricted=dev`



>>> snapshot + finalize the base (both docks fork from here)

    working change 6667d10b — "base"

      shared.txt               public

    finalized working change; the next `status` starts a fresh one



>>> dock-a: fork, edit shared.txt + add a-only.txt

    on dock 'dock-a' — re-materialized its working tree here



>>> dock-a: snapshot + finalize

    working change c153b37c — "dock-a work"

      a-only.txt               public

      shared.txt               public

    finalized working change; the next `status` starts a fresh one



>>> dock-b: fork from base, edit shared.txt differently + add b-only.txt

    on dock 'main' — re-materialized its working tree here

    on dock 'dock-b' — re-materialized its working tree here



>>> dock-b: snapshot + finalize

    working change 2d63b82c — "dock-b work"

      b-only.txt               public

      shared.txt               public

    finalized working change; the next `status` starts a fresh one



>>> harbor: create the integrator dock (forks from base, no work yet)

    on dock 'main' — re-materialized its working tree here

    on dock 'harbor' — re-materialized its working tree here



>>> harbor <- dock-a: loot dock merge dock-a --porcelain

    =	a-only.txt	-	-

    M	shared.txt	-	-

PASS: dock-a's disjoint file converges into the harbor (= row)



>>> harbor <- dock-b: loot dock merge dock-b --porcelain (CONCURRENT same-line edit)

    =	b-only.txt	-	-

    C	shared.txt	7e6f95360315a03e45d18911891cca701950c3eae271334412d531132fcd5a0e	0f43d8dbbb933784441623442582148f16706f36bfeb9f525ba276c3b38d3b41

PASS: the concurrent same-line edit surfaces as a Conflict (C) -- not silently dropped

PASS: dock-b's disjoint file still converges (= row) alongside the conflict



>>> loot conflicts --porcelain (the agent reads what needs resolving)

    C	shared.txt	7e6f95360315a03e45d18911891cca701950c3eae271334412d531132fcd5a0e	0f43d8dbbb933784441623442582148f16706f36bfeb9f525ba276c3b38d3b41

PASS: the conflict is enumerable in porcelain for an agent to act on



>>> loot resolve shared.txt <- reconciled content (keeps both sides' intent)

    resolved shared.txt (new oid: 58dc0944)

    all conflicts resolved — dock tip advanced



>>> loot conflicts --porcelain (expect empty -- resolved)

PASS: after resolve, no conflicts remain (porcelain is empty)

PASS: the integrated harbor tree carries BOTH docks' disjoint work + the resolved file (no side dropped)



>>> finalize the integration as a change

    finalized working change; the next `status` starts a fresh one



>>> loot log (find the finalized integration change)

    4 heads — diverged; run `loot apply` to converge

    head 1 — 29943b7b

      29943b7b  (working change)  [logged by 2d1c2343…]

    head 2 — 7c724bb4

      7c724bb4  (working change)  [logged by 2d1c2343…]

    head 3 — 867694a6

      867694a6  (working change)  [logged by 2d1c2343…]

    head 4 — bcecfa79

      bcecfa79  resolve conflict at shared.txt  [logged by 2d1c2343…]

      efb0e0e2  merge dock 'dock-b' into 'harbor'  [logged by 2d1c2343…]

      c0cc4786  merge dock 'dock-a' into 'harbor'  [logged by 2d1c2343…]

    shared history

      c153b37c  dock-a work  [logged by 2d1c2343…]

      2d63b82c  dock-b work  [logged by 2d1c2343…]

      6667d10b  base  [logged by 2d1c2343…]



>>> loot attest 29943b7b base   (mark it a navigational landmark)

    attested 29943b7b as "base"



>>> loot buoy base   (resolve the landmark -- computed, not a mutable ref)

    buoy (base): 29943b7b — attested by 2d1c2343…

PASS: a buoy resolves the integration change as the 'base' landmark



############################################################

# ACT 2 -- concurrent convergence via the relay (ADR 0001/0026)

############################################################



>>> starting local relay: loot serve --dir <tmp> --addr 127.0.0.1:47463

    relay is up.



>>> dev: init + declare secret.txt restricted

    initialized empty loot repo at ., identity = dev

    public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICJqwNh/KM4ggsTKViHna8/9Mby9ZPQImZdnygUW9tGU dev@loot

    tip: share your public key with peers via `loot whoami`

    tip: declare per-file privacy in .lootattributes, e.g. `.env restricted=dev`



>>> dev: snapshot + finalize + push the initial changes

    remote 'origin' → http://127.0.0.1:47463

    working change dfab285c — "public notes + restricted secret"

      .lootattributes          public

      notes.txt                public

      secret.txt               restricted=dev

    finalized working change; the next `status` starts a fresh one

    pushed 3 new object(s) to http://127.0.0.1:47463 in 1 batch(es) — resumable (re-run to continue if interrupted)

      this published your sealed content to the relay (it still cannot read it)



>>> agent: clone the relay as a DISTINCT identity 'agent'

    initialized empty loot repo at C:\Users\conno\AppData\Local\Temp\loot-concurrent-1783727155\agent, identity = agent

    public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKf2hxRhtC1uiFLjY1lDsgfhqoP1dArVWqx95kMNH7xY agent@loot

    tip: share your public key with peers via `loot whoami`

    tip: declare per-file privacy in .lootattributes, e.g. `.env restricted=agent`

    pulled 3 change(s) from http://127.0.0.1:47463

    cloned http://127.0.0.1:47463 → C:\Users\conno\AppData\Local\Temp\loot-concurrent-1783727155\agent

    run `loot status` to see the working tree

PASS: on clone, agent holds ciphertext but not the restricted path (no key)



>>> dev (concurrent): add dev-feature.txt, touch secret.txt, push

    finalized working change; the next `status` starts a fresh one



>>> dev: snapshot + finalize + push (tip 1)

    working change 6fed0a93 — "dev feature + secret edit"

      .lootattributes          public

      dev-feature.txt          public

      notes.txt                public

      secret.txt               restricted=dev

    finalized working change; the next `status` starts a fresh one

    pushed 2 new object(s) to http://127.0.0.1:47463 in 1 batch(es) — resumable (re-run to continue if interrupted)

      this published your sealed content to the relay (it still cannot read it)



>>> agent (concurrent, before pulling dev): add agent-feature.txt, push

    registered peer 'dev'



>>> agent: snapshot + finalize + push (tip 2 -> relay DAG now forked)

    working change e84bdd21 — "agent feature"

      .lootattributes          public

      agent-feature.txt        public

      notes.txt                public

    finalized working change; the next `status` starts a fresh one

    pushed 1 new object(s) to http://127.0.0.1:47463 in 1 batch(es) — resumable (re-run to continue if interrupted)

      this published your sealed content to the relay (it still cannot read it)



>>> agent: loot pull + apply, read the collapse in porcelain

    =	.lootattributes	-	-

    =	dev-feature.txt	-	-

    =	notes.txt	-	-

    R	secret.txt	-	-

PASS: agent's apply pulls in dev's concurrent file (fork collapses -- dev's side not dropped)

PASS: the restricted path agent can't open surfaces as RelayedUnmerged (R) -- carried, not merged



>>> agent: loot surface (materialize what agent may read)

      .lootattributes                  public

      agent-feature.txt                public

      dev-feature.txt                  public

      notes.txt                        public

      (1 sealed path(s) skipped — request a grant to access them)

    surfaced fc6ef0d2 as agent

PASS: after convergence agent's tree carries BOTH concurrent features -- no side dropped

PASS: the restricted content stays sealed to agent (relay + agent hold only ciphertext)



================  RESULT  ================

Two acts, one thesis: concurrent edits CONVERGE with no side dropped.

  Act 1 (local docks): two docks integrate into the harbor; a genuine

         same-line conflict surfaces (C), resolves, and a buoy landmarks

         the integration -- every step driven by porcelain verdicts.

  Act 2 (relay leg): two DISTINCT identities push concurrently, the

         relay DAG forks, and a pull+apply collapses it -- public work

         converges while a restricted path relays (R) as ciphertext the

         non-keyholder cannot read. The per-path merger/relay split,

         under concurrency (ADR 0001).



Honesty (ADR 0026): one machine, one OS user. 'agent cannot read the

restricted path' is key custody -- the key never reached agent's keyring

or the keyless relay. Docks are the same-identity concurrency unit; the

relay leg is the cross-identity one.



ALL CHECKS PASSED -- concurrent convergence proven, both acts.

run finished (utc): 2026-07-10 23:45:56Z


evidence doc — docs/evidence/concurrent-agents.md
# Evidence: concurrent agents converge

The concrete, checkable proof for the concurrent-agents epic (wayfinder map
#119). The claim:

> **Two agents editing concurrently converge with no side silently dropped** —
> locally through docks + the harbor, and remotely through the relay's
> fork-collapse — and the whole reconciliation loop is **agent-drivable** via
> porcelain verdicts, with buoys marking integration landmarks and loot's
> per-path *merger vs. relay* split (ADR 0001) honored under concurrency.

Like the rest of `docs/evidence/`, the proof is a **re-runnable script** whose
captured output is committed beside it: script
[`scripts/concurrent-agents-demo.ps1`](scripts/concurrent-agents-demo.ps1),
output [`runs/concurrent-agents-demo.txt`](runs/concurrent-agents-demo.txt)
(run 2026-07-10, **all checks passed**). It runs in two acts.

This milestone was **proof + landing**, not construction: CA1–CA4 (docks,
`dock merge`+harbor, porcelain/JSON verdicts, `loot buoy`) were already on
`main`. Running the proof is what earned the last fixes — see *What the run
surfaced* below.

## Act 1 — local docks (same identity, one object store; ADR 0022)

Two docks fork off a base and edit concurrently, then integrate into a `harbor`
dock. Every reconciliation step is read back in **porcelain** — the agent's
driver.

- [x] **Two docks fork from a common base and edit concurrently** —
      `dock-a` and `dock-b` each add a disjoint file and both edit the same
      single-line `shared.txt` differently (run lines 22–39).
- [x] **`loot dock merge --porcelain` integrates into the harbor** —
      merging `dock-a` converges/merges cleanly (`=`/`M` rows, line 46–47).
- [x] **A genuine concurrent conflict surfaces — no side dropped** —
      merging `dock-b` yields `C shared.txt <base> <incoming>` alongside `=
      b-only.txt` (lines 51–52); `loot conflicts --porcelain` re-enumerates it
      for an agent to act on (line 57).
- [x] **`loot resolve` clears it and the integrated tree carries everything** —
      after resolve, `conflicts --porcelain` is empty and all three paths
      (`shared.txt`, `a-only.txt`, `b-only.txt`) are present (lines 61–66).
- [x] **A buoy landmarks the integration** — `loot attest <merge> base` then
      `loot buoy base` resolves the integration change, a *computed* landmark
      over the attestation lane, not a mutable ref (lines 88–93; ADR 0025).

## Act 2 — relay leg (two distinct identities; ADR 0001 / 0026)

A hermetic, local `loot serve` relay (mutating, so off the shared VPS DAG).
`dev` seals a restricted path and publishes; `agent` clones. Both then edit
**concurrently** and push — the relay's append-only DAG forks — and `agent`'s
pull collapses it.

- [x] **On clone, agent holds ciphertext but not the restricted path** —
      `secret.txt` is absent from its surface, no key (line 126).
- [x] **Two identities push concurrently → the relay DAG forks** —
      `dev` pushes `dev-feature.txt` (+ a `secret.txt` edit) and `agent` pushes
      `agent-feature.txt`, each a separate relay tip (lines 128–151).
- [x] **`loot pull --porcelain` collapses the fork — public work converges** —
      agent's pull reports `= dev-feature.txt` and merges dev's side in; after
      `surface`, agent's tree carries **both** concurrent features (lines
      154–168). No side dropped.
- [x] **The restricted path relays, not merges** — the path whose key agent
      does not hold surfaces as `R secret.txt` (RelayedUnmerged) and stays
      sealed: agent and the relay hold only ciphertext (lines 157, 169). This is
      the ADR 0001 per-path *merger vs. relay* split, under concurrency.
- [x] **Honesty statement in the captured output** — one machine, one OS user;
      "agent cannot read the restricted path" is key custody: the key never
      reached agent's keyring or the keyless relay (lines 182–185, ADR 0026).

## What the run surfaced (and fixed)

The read-only acceptance audit (#121) could not catch these; running the proof
did:

- **#128 — `pull`/`apply` never collapsed a concurrent two-writer fork.** Engine
  `apply_sync` ingested a peer's divergent tip as a *sibling head* and classified
  outcomes, but never merged tips — leaving the keyholder on `2 heads — diverged`
  with a working tree showing only its own side. Fixed with
  `Workspace::converge_heads` (the peer-side analogue of `merge_dock`), called by
  `pull` after ingest; `pull` also gained `--porcelain`/`--json`. Without this,
  Act 2 was not achievable at all. Regression test:
  `converge_heads_collapses_a_two_writer_fork_no_side_dropped`.
- **#126 — `loot dock merge` printed prose, not porcelain.** Routed through the
  CA3 verdict serializer so Act 1's central verb is agent-drivable.

## Done

- [x] Both acts pass in a committed, re-runnable script
      ([run](runs/concurrent-agents-demo.txt), 2026-07-10) — the epic's claim
      holds end to end (same-identity docks **and** cross-identity relay).
- [ ] Map #119 Destination satisfied; CONTEXT.md / ADRs reconciled to shipped
      reality (#124); CA2/CA3/CA4 (#50/#51/#52) and the buoys spec map (#71)
      closed under epic-landing (#125), linked to this doc.

Grant then maroon — access is handed out and cut off deliberately

What this proves: a restricted path starts unreadable to a peer; a sealed, signed grant lets them read it; a hard maroon re-seals it so their next pull carries a key they no longer hold. Sharing is a key handoff, and revocation is real.

PASS: before any grant, the agent cannot read the restricted path (secret.txt absent)
    delivered sealed grant for 'agent' via relay
PASS: after the sealed grant, the agent files the key and reads the restricted content
    hard-marooned agent from secret.txt (new oid: 36683014)
PASS: after the hard maroon, the agent's pull carries a seal it cannot open (no key)
run output — docs/evidence/runs/grant-maroon-demo.txt
=== loot grant / maroon lifecycle demo (section B, ADR 0008/0009/0015) ===
run started (utc): 2026-07-10 15:59:12Z
relay:             http://127.0.0.1:47452   (local loot serve -- hermetic; mutating demo)
work dir:          C:\Users\conno\AppData\Local\Temp\loot-grant-maroon-1783699152

>>> building loot (release)

>>> starting local relay: loot serve --dir <tmp> --addr 127.0.0.1:47452
    relay is up.

>>> dev: loot init --identity dev
    initialized empty loot repo at ., identity = dev
    public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMn/Wp5WhJV/sE/7ksjfPYSReO3vvhHbVxkCv47hwefe dev@loot
    tip: share your public key with peers via `loot whoami`
    tip: declare per-file privacy in .lootattributes, e.g. `.env restricted=dev`

>>> dev: seal + finalize + push the restricted change
    remote 'origin' → http://127.0.0.1:47452
    working change 46fc4936 — "add restricted secret"
      .lootattributes          public
      secret.txt               restricted=dev
    finalized working change; the next `status` starts a fresh one
    pushed 2 new object(s) to http://127.0.0.1:47452 in 1 batch(es) — resumable (re-run to continue if interrupted)
      this published your sealed content to the relay (it still cannot read it)

>>> agent: clone the relay as identity 'agent'
    initialized empty loot repo at C:\Users\conno\AppData\Local\Temp\loot-grant-maroon-1783699152\agent, identity = agent
    public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMzKPjUUgJVNk1hsGccqDfdDVdb/053urMs75gSmwauE agent@loot
    tip: share your public key with peers via `loot whoami`
    tip: declare per-file privacy in .lootattributes, e.g. `.env restricted=agent`
    pulled 2 change(s) from http://127.0.0.1:47452
    cloned http://127.0.0.1:47452 → C:\Users\conno\AppData\Local\Temp\loot-grant-maroon-1783699152\agent
    run `loot status` to see the working tree
PASS: before any grant, the agent cannot read the restricted path (secret.txt absent)

>>> dev: peer add agent + grant --relay secret.txt agent
    registered peer 'agent'
    delivered sealed grant for 'agent' via relay http://127.0.0.1:47452
      secret.txt → agent (sealed, signed, recorded in manifest)
      recipient runs `loot pull-grants` to receive it

>>> agent: peer add dev + pull-grants + surface
    registered peer 'dev'
    applied 1/1 grant(s) from http://127.0.0.1:47452
    run `loot surface` to materialize newly-accessible content
      .lootattributes                  public
      secret.txt                       restricted=dev
    surfaced 46fc4936 as agent
PASS: after the sealed grant, the agent files the key and reads the restricted content

>>> dev: loot maroon --hard secret.txt agent (re-seal excluding the agent) + push
    hard-marooned agent from secret.txt (new oid: 36683014)
      purge event recorded — cooperating peers will remove agent's old key on next bundle apply
      agent no longer has future access
      (no remaining grantees — content is now accessible only to you)
    pushed 1 new object(s) to http://127.0.0.1:47452 in 1 batch(es) — resumable (re-run to continue if interrupted)
      this published your sealed content to the relay (it still cannot read it)

>>> agent: drop the old copy, then loot pull + surface (receives the re-seal + purge)
    pulled from http://127.0.0.1:47452 as agent:
      .lootattributes          converged
      secret.txt               relayed (sealed — you lack the key)
    run `loot surface` to materialize what you may see
      .lootattributes                  public
      (1 sealed path(s) skipped — request a grant to access them)
    surfaced f7da8ba3 as agent
PASS: after the hard maroon, the agent's pull carries a seal it cannot open (loot cannot restore secret.txt -- no key)

>>> dev: loot manifest (grant audit trail, grantor/grantee as pubkeys)
    granted_at   grantee          grantor          oid
    ------------------------------------------------------------------------
    1783699153   agent            c9ff5a9e…        129b7c8c
PASS: the Manifest records the grant to the agent (auditable key-handoff trail)

================  RESULT  ================
Access to secret.txt was granted to the agent, exercised, then revoked --
each step per-content, propagated over a keyless relay, and recorded in the
Manifest. Permissions are a property of the content and the grant graph,
not of the repository.

Honesty (ADR 0026): one machine under one OS user. 'The agent cannot read
after maroon' means key custody PLUS the agent harness's file sandbox --
an honest-participant posture. The re-seal denies the NEW content to the
marooned key; the hard-maroon purge additionally drops the old key on
cooperating peers. Forward secrecy for already-read bytes is out of scope
(the agent may have copied what it already decrypted -- ADR 0009).

ALL CHECKS PASSED -- grant, read, maroon, and audit all behaved.
run finished (utc): 2026-07-10 15:59:13Z

Divergence from ordinary work — the ! marker, abandon, and undo

What this proves: two identities amending the same change produce two live versions under one durable handle — rendered with a ! marker, kept flat (no phantom merge), collapsed by loot abandon, and restored by loot undo. Nothing is ever destroyed.

    mzlxpytq!  57a84e20  add feat                                    7bb5b8c4…
    mzlxpytq!  2f370248  add feat                                    agent
PASS: DIVERGENCE: log renders the ! marker on the divergent change_id
PASS: DIVERGENCE STAYS FLAT (#203): no per-path conflict -- converge minted no merge
PASS: DIVERGENCE: two live versions listed under one durable handle (57a84e20, 2f370248)
    abandoned version 57a84e20 — its change id keeps the remaining live version(s)
run output — docs/evidence/runs/amend-divergence-demo.txt
=== loot amend-divergence demo (wayfinder map #169) ===

run started (utc): 2026-07-12 06:25:30Z

work dir:          C:\Users\conno\AppData\Local\Temp\loot-amend-1783837530



>>> building loot (release)



>>> starting local relay: loot serve --dir <tmp> --addr 127.0.0.1:47521

    relay is up.



############################################################

# ACT 1 -- CONTROL: solo amend => clean supersession (ADR 0032)

############################################################



>>> dev: init, write doc.txt = v1, finalize + push

    initialized empty loot repo at ., identity = dev

    public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHu1uMSWeY/yEHLGUcDtF023Ye07qHzBRrDxPOItobN8 dev@loot

    tip: share your public key with peers via `loot whoami`

    tip: declare per-file privacy in .lootattributes, e.g. `.env restricted=dev`

    remote 'origin' → http://127.0.0.1:47521



>>> dev: loot new -m 'write doc' (finalize the base) + push

    finalized working change 7de50c42; started fresh change oryovzky

    pushed 1 new object(s) to http://127.0.0.1:47521 in 1 batch(es) — resumable (re-run to continue if interrupted)

      this published your sealed content to the relay (it still cannot read it)

    [control change_id = knvkmrlm]



>>> agent: clone the relay as a DISTINCT identity 'agent'

    initialized empty loot repo at C:\Users\conno\AppData\Local\Temp\loot-amend-1783837530\agent, identity = agent

    public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEeuznAR6lVeQcU1qzLsAp1kmBApjYOQK0s9RW/U/2ZN agent@loot

    tip: share your public key with peers via `loot whoami`

    tip: declare per-file privacy in .lootattributes, e.g. `.env restricted=agent`

    pulled 1 change(s) from http://127.0.0.1:47521

    cloned http://127.0.0.1:47521 → C:\Users\conno\AppData\Local\Temp\loot-amend-1783837530\agent

    run `loot status` to see the working tree



>>> agent: surface + read doc.txt (has dev's v1)

      doc.txt                          public

    surfaced 7de50c42 as agent

PASS: agent clones dev's base change (doc.txt = v1)



>>> dev: loot edit knvkmrlm (reopen the landed change)

    editing change knvkmrlm — reopened version 7de50c42 as the working change

      finalize (`loot new`) to supersede 7de50c42 with your amended version; `loot undo` walks this back



>>> dev: finalize the amend (loot new) + push

    finalized working change cbadfe5c; started fresh change mzlxpytq

    pushed 1 new object(s) to http://127.0.0.1:47521 in 1 batch(es) — resumable (re-run to continue if interrupted)

      this published your sealed content to the relay (it still cannot read it)



>>> agent: loot pull (expect clean supersession, no divergence)

    pulled from http://127.0.0.1:47521 as agent:

      doc.txt                  merged

    converged onto one line; run `loot surface` to materialize what you may see



>>> agent: loot surface

      doc.txt                          public

    surfaced cbadfe5c as agent



>>> agent: loot log (the control -- no bang marker on the change)

    change     version   message                        vis          author

    knvkmrlm   cbadfe5c  write doc                                   7bb5b8c4…

    usmnmqpk   —         (working change, empty)                     agent

PASS: CONTROL: no divergence marker (!) after a solo amend (clean supersession)

PASS: CONTROL: log does not report a diverged fork

PASS: CONTROL: agent's doc.txt is dev's amended version (replacement)

PASS: CONTROL: no content-merge of the old and new lines (converge dropped the superseded head)



############################################################

# ACT 2 -- DIVERGENCE from concurrent amends (! / abandon / undo)

############################################################



>>> dev: write feat.txt = base, finalize + push

    finalized working change 3f95ff7d; started fresh change zuzrousw

    pushed 1 new object(s) to http://127.0.0.1:47521 in 1 batch(es) — resumable (re-run to continue if interrupted)

      this published your sealed content to the relay (it still cannot read it)

    [divergent change_id = mzlxpytq]



>>> agent: pull the base change (both peers now share it, single version)

    pulled from http://127.0.0.1:47521 as agent:

      doc.txt                  converged

      feat.txt                 converged

    converged onto one line; run `loot surface` to materialize what you may see

      doc.txt                          public

      feat.txt                         public

    surfaced 3f95ff7d as agent

PASS: agent shares the base change (feat.txt present, one version)



>>> dev: loot edit mzlxpytq, feat.txt = dev's take, finalize + push

    editing change mzlxpytq — reopened version 3f95ff7d as the working change

      finalize (`loot new`) to supersede 3f95ff7d with your amended version; `loot undo` walks this back



>>> dev: finalize dev's amend + push (relay tip 1)

    finalized working change 57a84e20; started fresh change yxkrwnln

    pushed 1 new object(s) to http://127.0.0.1:47521 in 1 batch(es) — resumable (re-run to continue if interrupted)

      this published your sealed content to the relay (it still cannot read it)



>>> agent: loot edit mzlxpytq (its own line, from the shared base)

    editing change mzlxpytq — reopened version 3f95ff7d as the working change

      finalize (`loot new`) to supersede 3f95ff7d with your amended version; `loot undo` walks this back



>>> agent: finalize agent's amend + push (relay tip 2 -> two versions of one handle)

    finalized working change 2f370248; started fresh change nrqrlspl

    pushed 1 new object(s) to http://127.0.0.1:47521 in 1 batch(es) — resumable (re-run to continue if interrupted)

      this published your sealed content to the relay (it still cannot read it)



>>> agent: loot pull (dev's amend lands next to agent's -> DIVERGENCE)

    pulled from http://127.0.0.1:47521 as agent:

      doc.txt                  converged

    converged onto one line; run `loot surface` to materialize what you may see



>>> agent: loot log (the ! divergence marker, flat listing)

    change     version   message                        vis          author

    mzlxpytq!  57a84e20  add feat                                    7bb5b8c4…

    mzlxpytq!  2f370248  add feat                                    agent

    knvkmrlm   cbadfe5c  write doc                                   7bb5b8c4…

    nrqrlspl   —         (working change, empty)                     agent



>>> agent: loot status (agrees: the working change's handle is divergent)

    working change nrqrlspl is empty (no changes since the last `new`)



>>> agent: loot conflicts (EMPTY -- converge minted no merge, so no per-path conflict)

    no conflicts

PASS: DIVERGENCE: log renders the ! marker on the divergent change_id

PASS: DIVERGENCE: it is a flat divergent listing, not a 'run apply' fork

PASS: DIVERGENCE STAYS FLAT (#203): no per-path conflict -- converge minted no merge of the co-versions

PASS: DIVERGENCE STAYS FLAT (#203): the working tree is clean on OURS (agent's own amend)

PASS: DIVERGENCE: two live versions listed under one durable handle (57a84e20, 2f370248)



>>> agent: loot abandon 57a84e20 (collapse the divergence -- keep agent's side)

    abandoned version 57a84e20 — its change id keeps the remaining live version(s)

      nothing was deleted; `loot undo` brings it back (see `loot op log`)



>>> agent: loot log (collapsed -- one live version, no bang)

    change     version   message                        vis          author

    mzlxpytq   2f370248  add feat                                    agent

    knvkmrlm   cbadfe5c  write doc                                   7bb5b8c4…

    nrqrlspl   —         (working change, empty)                     agent

PASS: ABANDON: the ! marker is gone -- divergence collapsed to one live version

PASS: ABANDON: the change_id survives with its remaining live version



>>> agent: loot conflicts (still empty -- abandon left a clean tree, nothing to resolve)

    no conflicts

PASS: ABANDON IS THE WHOLE SETTLE (#203): no standing per-path conflict after the collapse

PASS: ABANDON IS THE WHOLE SETTLE (#203): the survivor's tree stands (agent's take, clean)



>>> agent: loot undo (walk the abandon back)

    undid op 8 (abandon) — now at op 7, head 2f370248, 57a84e20



>>> agent: loot log (divergence restored -- the bang is back)

    change     version   message                        vis          author

    mzlxpytq!  57a84e20  add feat                                    7bb5b8c4…

    mzlxpytq!  2f370248  add feat                                    agent

    knvkmrlm   cbadfe5c  write doc                                   7bb5b8c4…

    nrqrlspl   —         (working change, empty)                     agent

PASS: UNDO: the divergence is restored -- the ! marker returns (nothing was destroyed)



================  RESULT  ================

Divergence arises from ORDINARY WORK, no white-box construction:

  Act 1 (control): a solo 'loot edit' amend travels the relay as a clean

         supersession -- the peer sees a replacement, no bang marker, no

         content-merge (converge drops the superseded head). ADR 0032's

         supersession-travels property.

  Act 2 (divergence): two identities each 'loot edit' the SAME change_id

         and finalize different amends; one pull puts both live versions

         in one graph -- FLAT (#203): no converge merge, no per-path

         conflict, tree clean on ours; 'loot log'/'status' render the !

         marker; 'loot abandon' is the whole settle; 'loot undo' restores

         it. Divergence is cross-STORE (two docks in one store cannot

         produce it, #171).



Honesty (ADR 0026): one machine, one OS user; two keyring-separated

identities cooperating over a hermetic local relay.



ALL CHECKS PASSED -- divergence from ordinary work proven, both acts.

run finished (utc): 2026-07-12 06:25:32Z


evidence doc — docs/evidence/amend-divergence.md
# Evidence: divergence arises from ordinary work

The concrete, checkable proof for the amend model (wayfinder map
[#169](https://github.com/Connor-Miller/loot/issues/169), ADR 0032). The claim:

> **A divergent change can arise from ordinary concurrent work, not just a test
> fixture.** Two peers each `loot edit` the *same* durable change over the relay,
> finalize different amends, and sync — one graph then holds two live versions of
> one handle. `loot log`/`status` render the `!` marker, `loot abandon` collapses
> it, and `loot undo` restores it. And the control holds: a *solo* amend travels
> as a clean supersession (no `!`, no content-merge), which is exactly what the
> signed `predecessors` claim (ADR 0032) buys.

Like the rest of `docs/evidence/`, the proof is a **re-runnable script** whose
captured output is committed beside it: script
[`scripts/amend-divergence-demo.ps1`](scripts/amend-divergence-demo.ps1),
output [`runs/amend-divergence-demo.txt`](runs/amend-divergence-demo.txt)
(run 2026-07-12, **all checks passed**). It runs in two acts over a hermetic,
local `loot serve` relay — Act 2 mutates history (push), so it stays off the
shared VPS DAG.

This is the last slice of map #169: the keystone (ADR 0032, `fa0cdc2`) and the
build (`loot edit`, PR #196, `ac92bc1c`) already landed — this run is the
**proof** that the shipped verb produces divergence from real concurrent writers,
**no white-box construction** (no `record_carrying` test fixture).

## Why two identities, not two docks

Divergence is **cross-store** (build finding
[#171](https://github.com/Connor-Miller/loot/issues/171)). Two docks over one
shared store *cannot* self-diverge: the first dock's reopen is visible through
the shared blob, so the second `edit` refuses or chains onto the finalized amend.
Two live versions of one `change_id` arise only when two independent *stores*
each amend it and then sync. So the proof uses two keyring-separated identities
(`dev`, `agent`) over the relay (ADR 0026), not two docks.

## Act 1 — control: a solo amend is a clean supersession (ADR 0032)

`dev` finalizes a base change and pushes; `agent` clones it. `dev` then
`loot edit`s that same change, amends the file, finalizes, pushes — and `agent`'s
pull sees the amended version **replace** the original.

- [x] **`agent` clones `dev`'s base change** — `doc.txt = v1` on clone (run
      lines 36–39).
- [x] **`dev` reopens the landed change with `loot edit`** — the durable handle
      `knvkmrlm` is carried; the working change supersedes version `7de50c42`
      (lines 41–43), finalized + pushed (45–48).
- [x] **`agent`'s pull is a clean supersession — no `!`, no content-merge** —
      after pull + surface, `loot log` shows the single change `knvkmrlm` at the
      amended version `cbadfe5c`, no divergence marker, no "diverged" fork, and
      `doc.txt` is `dev`'s amended line (not a merge of old + new): converge
      dropped the superseded head (lines 50–66). This is ADR 0032's
      supersession-travels property — a solo amend is invisible as divergence.

## Act 2 — divergence: two identities amend the same change (`!` / abandon / undo)

Both peers share a base change `mzlxpytq`. Each `loot edit`s it and finalizes a
**different** amend on its own store — two live versions of one handle — then
pushes. `agent` pulls `dev`'s amend, so one graph holds both.

- [x] **Both peers share the base change** — `agent` pulls it, `feat.txt`
      present, single version (lines 78–86).
- [x] **Concurrent amends → two versions of one handle** — `dev` amends
      `feat.txt` to *dev's take* and pushes (relay tip 1, lines 88–96); `agent`,
      from the same base and *before* pulling `dev`'s amend, amends to *agent's
      take* and pushes (relay tip 2, lines 98–104).
- [x] **One pull puts both live versions in one graph → the `!` marker, FLAT**
      — `agent`'s pull ingests `dev`'s amend; `loot log` renders the durable
      handle `mzlxpytq!` twice, once per live version (`57a84e20`, `2f370248`),
      as a **flat listing** — not a "heads — diverged" fork (whose hint names
      `loot pull`'s converge, #1145) — and
      `loot status` agrees the handle is divergent (lines 106–127). Converge
      minted **no merge** ([#203](https://github.com/Connor-Miller/loot/issues/203)):
      `loot conflicts` reports nothing (lines 121–122) and the working tree is
      clean on `agent`'s own side (line 126).
- [x] **`loot abandon <version-id>` is the whole settle** — abandoning `dev`'s
      version leaves the handle with `agent`'s single live version; the `!` is
      gone, the `change_id` survives, `loot conflicts` is still empty, and the
      survivor's tree stands clean (lines 129–144). Nothing is deleted.
- [x] **`loot undo` restores it — nothing was destroyed** — one undo walks the
      abandon back and the `!` returns with both versions (lines 146–155).

## What the run surfaced

The first run of this proof (2026-07-12, pre-#203) surfaced one behaviour worth
recording — since **resolved**:

- **`abandon` collapsed the handle-level divergence, but not the tree-level
  conflict `converge` created.** Because both amends edited the *same line*,
  the pull's `converge_heads` folded the two divergent versions under one
  signed merge head *and* raised a per-**path** content conflict on `feat.txt`
  that survived `abandon` — the one two-writer event represented twice, by two
  orthogonal mechanisms (per-`change_id` divergence, ADR 0032; per-path
  conflict, ADR 0001), settled by two separate steps. That was the "converge
  content-combination wart" flagged in map #169's Fog. **Resolved by
  [#198](https://github.com/Connor-Miller/loot/issues/198) →
  [#203](https://github.com/Connor-Miller/loot/issues/203)** (amending ADR
  0032): converge merges only genuinely independent heads — two live versions
  of one `change_id` stay flat as live heads, no merge is minted, no per-path
  conflict exists, and `loot abandon` is the whole settle. The committed run
  above is the post-#203 rerun proving it. The signed, travelling resolution
  (one amend naming *both* live versions as predecessors) remains the deferred
  [multi-predecessor path](https://github.com/Connor-Miller/loot/issues/169).

## Done

- [x] Both acts pass in a committed, re-runnable script
      ([run](runs/amend-divergence-demo.txt), rerun 2026-07-12 post-#203) —
      divergence arises from ordinary concurrent work (control + real
      two-identity amend), renders with `!` **flat** (no converge merge, no
      per-path conflict), collapses via `abandon` (the whole settle), restores
      via `undo`, with no white-box construction. Resolves map #169's proof
      ticket [#172](https://github.com/Connor-Miller/loot/issues/172); the
      divergence act doubles as the live proof for
      [#203](https://github.com/Connor-Miller/loot/issues/203).

A working day driven loot-first — git main is a projection

What this proves: loot leads its own development. This very evidence file originated in loot's working tree, was reviewed on GitHub as projected unsigned WIP, and was landed by loot new — with git main projected downstream. No git commit created it.

The destination proof for wayfinder map #148 ("flip the agentic workflow
loot-first, git downstream"). This document IS the day's unit of work: it
originated in loot's working tree, was reviewed on GitHub as a PR built from
projected unfinalized loot WIP, and landed by `loot new` — with git main
projected downstream. If you are reading it on git main, the workflow worked:
no git commit ever created this file.
evidence doc — docs/evidence/loot-first.md
# Evidence: a working day driven loot-first

The destination proof for wayfinder map #148 ("flip the agentic workflow
loot-first, git downstream"), ticket #155. This document **is** the day's unit
of work: it originated in loot's working tree, was reviewed on GitHub as a PR
built from **projected unfinalized loot WIP**, and landed by `loot new` — with
git `main` projected downstream. If you are reading it on git `main`, the
workflow worked: no git commit ever created this file.

## What "loot-first" means here (docs/agents/workflow.md)

- The working change accrues in loot (auto-snapshot); `loot ferry --with-wip`
  projects it to a sealed-free `review/<dock>` branch as **provisional**
  commits — `Loot-Provisional`, no `Loot-Signature` (the missing signature is
  the machine-checkable "not finalized"), still SSHSIG-signed for integrity.
- The PR is a review *view*. Approval → `loot new` (finalize + sign, git-quiet)
  → the next ferry projects the one signed commit onto `main` and reaps the
  provisional lane.
- The orchestrator (`tools/loot-first.ps1`) publishes by **single-ref push
  with an inline URL** — the private mirror never gains a remote — and points
  the PR head at the landed sha so GitHub marks the PR **Merged by
  reachability**: no merge button, no merge commit, loot is the merger.

## The run (2026-07-11)

1. **Catch-up (the #151 residual, working as designed).** GitHub `main` held
   9 commits loot had not ingested (the jj-ergonomics build and this
   milestone's own tooling — the last git-first changes there will ever have
   to be). One plain `loot ferry` ingested all 9 with zero conflicts; `loot
   push` published the catch-up — after redeploying the relay to format v6,
   the first live v6 push (43 objects).
2. **Round 1 caught a real leak — the run's central finding.** The first
   `review` pass (PR #161) put `docs/pitch/` into a **public** PR diff. The
   projection filtered on *readability*, and the dev's own mirror identity
   can read restricted content (ADR 0028's full-readable-tree contract) — so
   "sealed-free by construction" was false exactly for the identity doing
   the publishing, and the same flaw would have hit `main` itself on the
   first land. Contained same-hour (PR closed, branch deleted; the dangling
   diff on GitHub's side is accepted residual, logged on ticket #155).
   **Fix, same day:** publication is now a **public-delta** — the git parent
   tree plus the change's delta restricted to `Visibility::Public` — so
   sealed content never publishes *even when readable*, and published
   history is git-shaped for free (mirror-only paths like `.scratch/` no
   longer spray the diff). Shipped as "Publication is a public-delta, never
   the readable tree" (PR #163, `7ea6ee0`), with tests pinning the exact
   leak class.

   > **Correction (2026-08-08, #645).** This read "loot-only paths like
   > `.scratch/`", which inverts the fact. `.scratch/` is a **mirror-only
   > path** — git carries it, loot has no record of it — and that is precisely
   > why the readable-tree projection sprayed: every path git held and loot
   > did not appeared as a *deletion* in every projected commit. The mechanism
   > reported above was right; the label was backwards. `Visibility::Public`
   > is left as written — correct in July, renamed to `Internal` by ADR 0041.
3. **Take two caught a second (small) one.** The retried `review` (PR #164)
   was sealed-clean but showed mode-only hunks: the public-delta rebuild had
   re-inserted every blob as `100644`, stripping the exec bit from untouched
   scripts. Fixed same-hour ("Publication preserves git filemodes",
   PR #165, `fb7b8c8`) — modes ride through from the git parent, since loot
   deliberately does not track them.
4. **Round 1, take three.** With both fixes live, `review` projected a clean
   one-file diff and opened the fresh PR.
5. **Round 2.** This section updated with the live PR number — the revision
   **appended** a second provisional commit to the same durable change lane,
   so the reviewer sees "changes since your last review" (#150). The run is
   **PR #166**, review lane `f0acc001…` (the durable change id), round-1
   version `d86bdc1b` — this very sentence is what round 2 changed.
6. **Land — which falsified one more design guess.** `loot-first.ps1 land`
   finalized (`loot new`, git-quiet), ferried (the signed projection
   `3851fef7` became `main`, the lane reaped), fast-forward-pushed GitHub
   `main`, collapsed the PR head onto the landed sha, and pushed the relay:
   `landed: change_id=f0acc001… main=3851fef7 pr=#166`. But #150's
   "reachability-merge" prediction was wrong: GitHub **auto-closes** a PR
   whose head is force-pushed to an already-landed commit (zero diff) — it
   never flips to purple Merged. The auto-close *is* the landing signal;
   the tool now attaches the pointer comment (change id → landed sha) as
   the audit trail, and this very amendment landed as the run's second
   loot-first lane.

## Friction found live (dogfood data, not failure)

- **The leak above is the headline**: a live run falsified a design
  assumption two design reviews and a green test suite had all blessed —
  the unit tests only sealed content *from* the identity, never *to* it.
  Same lesson as the concurrent-agents epic: only a real run catches the
  gap between "reviewed" and "true."

- **Self-approval is impossible on GitHub** — you cannot approve your own PR,
  so the uniform "every change lands through a PR" rule (#152) needed a
  self-authored fast path in `land`: author == viewer and no
  `CHANGES_REQUESTED` counts as the approval signal. A second identity (an
  agent reviewer, or the dev reviewing an agent) uses the real
  `reviewDecision == APPROVED` gate.
- **Format-version coupling**: the first loot-first day collided with the
  FORMAT_MAJOR 5→6 bump — the v6 client could not push until the relay was
  redeployed (idempotent `setup:loot`, one command). Worth remembering that a
  format bump means "redeploy the relay the same day."
- **Single-lane v1**: the mirror's `main` tracks the home dock, so this run
  drove the lane in `home` directly. A named-dock lane lands through the
  harbor (`loot dock merge`) before projection — the orchestrator does not
  automate that hop yet; it is the known follow-up.
- **`pwsh` vs `powershell`**: the tooling docs said `pwsh`; this machine has
  only Windows PowerShell 5.1. The scripts run fine under 5.1 (by design,
  ASCII-only) — invoke as `powershell -File` or `& .\tools\loot-first.ps1`.

- **GitHub "Merged" is unreachable for rewritten-oid landings** — the
  falsified #150 guess above. Closed-by-collapse + pointer comment is the
  honest mechanism; a purple badge would require GitHub's own merge
  machinery, which loot rejects by design (git never merges).
- **The landed commit subject was `wip`** — the working change's default
  message became `main`'s commit subject. Run `loot describe -m` before
  `land` (or pass a message through the tool) so the landed subject reads
  like history. Cosmetic, but worth folding into the ritual.

## Findings from the second loot-first day (2026-07-11, the pre-land-gate lane)

The lane that landed this section added the missing **pre-land gate** to
`loot-first.ps1 land` (`cargo test` before finalize — review approves
*projected WIP*, so nothing had yet proven the commit about to land builds;
`-SkipTests` is the break-glass for non-code lands). Driving it surfaced:

- **`status`'s hint is a finalize foot-gun on dirty work.** With edits on
  disk and no working change, `loot status` says "no working change (run
  `loot new` to start one)" — but `new` is capture-*then-finalize*: following
  the hint signed the dirty tree in one stroke (`0729287d`), skipping the
  review lane entirely. The first verb on dirty work should be
  `describe -m` (capture without finalize); the hint should say so. The
  accidental finalize rode to `main` break-glass beneath this lane's
  reviewed commit — content correct, subject the default, unreviewed.
  **Fixed #174 (2026-07-15):** the hint names `describe -m`, and finalize now
  refuses an un-described change outright rather than defaulting its subject —
  the hint was the trigger, but `new`'s willingness to sign a nameless change
  was the foot-gun (ADR 0030 amendment).
- **An oplog younger than the mistake protects nothing.** S4's `undo` exists
  for exactly this, but `.loot/ops` was minted the same day — the accidental
  finalize was **op 1, the floor**, and `undo` refuses to step behind it.
  Expected for a just-shipped feature; recorded so the next reader doesn't
  assume undo covers pre-oplog history.
- **`log`'s live row mislabels the fresh-empty-working state.** After `new`
  plus an empty `describe`, `loot log` rendered the *signed tip* as
  "(working change)" (`wlwzrvry 0729287d`) and hid both the real working
  node (`xsynprqr 53902449`) and the tip's actual message — while
  `status --json` reported the working identity correctly. Display-only,
  but it actively masked the accidental-finalize state while diagnosing it.
- **Lane reap can't survive the amend era (code-read, not live).** The ferry
  reap marks a lane landed when *any signed change* carries the lane's
  `change_id`, scanning the raw graph with no abandonment filter — correct
  today (one signed version per change id), but the moment `loot edit`
  (map #169) makes signed same-`change_id` versions routine, an amended
  change's review lane reaps itself on every pass. Filed ahead of #171.

## Verdict

Every box of the map's destination is exercised by this file's own history:
originated in loot, reviewed as projected unsigned WIP, landed by loot
finalize, git `main` projected downstream, relay pushed the same day — twice
(the evidence lane `f0acc001…`/PR #166 and the reconcile-fix lane that landed
this amendment). loot led; git followed.