The ADR-020 record wave: the correction review-003's addressing
conversation decided, landed across the architecture docs.
- decisions/020 (new): the invariant (facade + wire addressable classes
both = registry; never an option, never a default, never
length-implied); the wire speaks keys (tag-prefixed key hex, schema
42/66, bare hex dead); the delivery-form asymmetry (wire put offer
key + len mandatory; the put response echoes the key — amending
ADR-012 §2's field); one derivation-explicit put seam (`put_as`;
`put`, `put_git_object`, `from_git_oid_hex`, `Digest::derive`'s
silent form deleted); reads unchanged by principle; the op set
closed; the D-5 litmus; F-2's process record carried verbatim.
Supersedes ADR-018 §Decision 2/§6 and ADR-012 §2's response field.
- ADR-018: §§2/6 superseded banners kept as wave-13 record; consequences
and deviations items annotated; references corrected.
- ADR-012/014/010: amendment pointers where the shapes they pinned moved
(response field; put offer).
- ops-surface.md (stable -> reviewed): the wire-form section rewritten
around ADR-020; put offer `{namespace, key, len}`, response
`{token, key}`; the unknown-length wire put and the deferred
post-check arm deleted from the record.
- store-api.md (stable -> reviewed): the write path restated around
`put_as(algorithm, len: Option<u64>, stream)` with both arms;
`put_in_batch` takes the algorithm.
- hashing-and-keys.md (stable -> reviewed): family-explicit address
formation only; the length-routed constructors die with their record.
- open-questions.md: OQ-20 opened and resolved by ADR-020 same-day (the
OQ-15 pattern); review-003 register recorded; OQ-15's resolution
marked partially superseded.
- README.md + AGENTS.md: ADR-020 in the catalog; the open-door paragraph
moved from "ADR-020 pending" to "accepted, implementation wave
pending — do not extend or rely on any superseded shape".
Verification: docs-only change (architecture records + AGENTS.md); no
code touched. Self-review pass plus an independent doc-review pass;
the review's critical/warning findings (link depth, the leftover
`put handlers call \`put\`` line, ADR-014/010/018 residue markers, the
repo-side doc ride-alongs named in §Decision 9) all addressed.