# Adversarial review brief — memoria design spec, DRAFT 3

You reviewed **draft 2** in a previous session and returned REQUEST
CHANGES with one blocker and six findings, plus twelve verdicts on the
earlier round. Draft 3 claims to answer them. Check whether it did, and
find what is still wrong.

**Under review:** `docs/superpowers/specs/2026-09-03-memoria-design.md`
**Measurements it now cites:** `docs/BENCHMARKS.md`
**Code that now exists:** `internal/memoria/` and `internal/memoriatest/`
— slice 0 is built, so some claims are checkable against an
implementation rather than only against prose.

## Your draft-2 findings

- **B1 BLOCKER** — the ingestion contract contradicts the source apps'
  instance-boundary rules.
- **B2** — S3 cannot perform the grants join it promises (no asker).
- **B3** — `NOT_VISIBLE` conflates denial with stale data.
- **B5** — the FTS measurement and the 150k ceiling cannot both describe
  the stated corpus.
- **B6** — live authorization has no bounded availability design.
- **B7** — the gate suite does not enforce several claimed fixes.
- Plus PARTIALs on findings 1, 3, 5, 6, 9, 11, 12 of the previous round.

For each, state **ANSWERED / PARTIALLY ANSWERED / REWORDED /
UNANSWERED**, with evidence. "Reworded" remains the verdict I most want
you to be willing to give.

Note that draft 3 **concedes B1 rather than answering it** — it records
the blocker as not memoria's to close and says slice 1 is blocked on
agreement. Judge whether that concession is honest or whether it lets the
design proceed on an assumption it should not.

## Verify against, and do not trust the spec's characterisation of

- `/home/paulca/amadan.net/oficina/sheets-core/AGENTS.md`
- `/home/paulca/amadan.net/oficina/sheets-core/PRODUCT.md`
- `/home/paulca/amadan.net/oficina/sheets-core/docs/superpowers/specs/2026-08-30-sheets-design.md`
- `/home/paulca/amadan.net/oficina/home/docs/superpowers/specs/2026-08-30-home-design.md`
- `/home/paulca/amadan.net/oficina/docs/docs/superpowers/specs/2026-08-30-docs-design.md`

Quote binding rules; do not paraphrase them.

## New surface in draft 3 — attack these specifically

1. **Admission is now relayed from siblings** (decision 11, §4.3) via a
   new S7 call, cached per session. Does that actually close the
   membership hole, or move it? A session outlives a revocation by its
   TTL — is that stated honestly and is the TTL bounded anywhere?
2. **S2 is four-valued** with `STALE`, and the decoder is claimed total
   (§4.1). Find a transport or protocol outcome with no defined mapping.
3. **§8.7, numeric questions.** A new S6 call takes enumerated functions
   over cell refs. Does anything let memoria become a formula author by
   another route? Can the slot-resolution scheme produce a confidently
   wrong number, or does it genuinely refuse? Does it introduce a leak
   S1–S3 did not — S6 reveals which cells a person is comparing.
4. **§6.5's availability contract.** 800 ms, concurrent, partial pages
   normal. Is failing closed still guaranteed under every partial case?
5. **§7's numbers are now measured** (`docs/BENCHMARKS.md` gives machine
   and command). Check the arithmetic, and check what the benchmark does
   NOT establish — the file admits a cycled corpus and unmeasured
   bandwidth. Is the ~90–110k ceiling now supported, or merely
   better-sourced?
6. **§7.4's durable tombstone log** and the rule that a snapshot is not
   retired while a restorable backup could reference it. Is there still
   a restore ordering that serves deleted content, or that finds no
   index at all?
7. **The gates (§10), now 21.** For each claimed fix, is there a gate
   that would fail if the fix were reverted? Gate 5 now demands two
   people get different answers — is that enough?
8. **The implementation.** `internal/memoria/` is real code. Does it
   match what the spec says slice 0 does? Are the five gates in
   `internal/memoriatest/gates_test.go` capable of failing? Note that
   one earlier gate passed when the thing it guarded was deleted, and
   was replaced for that reason — look for others of that shape.

## What I do not want

Style feedback. Unverified findings. An over-broad kill.

## Output

Part A: verdicts on the draft-2 findings, with evidence.
Part B: new findings — section, defect, evidence, BLOCKER/MAJOR/MINOR.
Part C: verdict, one paragraph.
Part D: re-review your own new findings; say which you would withdraw.

State your exact model id at the top.
