| index 60f6ccb..5ce68e2 100644 |
| --- a/docs/superpowers/specs/2026-09-03-memoria-design.md |
| +++ b/docs/superpowers/specs/2026-09-03-memoria-design.md |
| @@ -38,7 +38,7 @@ draft they reviewed; all drafts were written by Opus. |
| | 3, §8.4 and decisions 13–14 | Fable | REQUEST CHANGES — 5 MAJOR, 4 MINOR, 1 NIT. All applied. It found §8.4's central argument resting on a misreading of §6.5 and §4.1; §1.8 records what it changed | |
| | 3, gate 17 + live-key verification | Fable | REQUEST CHANGES — 3 MAJOR, 4 MINOR, 3 NIT. All applied. **It mutation-tested gate 17 itself** and found five idioms the gate blessed, including one that served a declared path outside the session gate; §1.9 records what it changed | |
| | 3, suite doctrine adoption (A.4) | Fable | **REQUEST CHANGES — 1 BLOCKER, 9 MAJOR, 3 MINOR, 1 NIT.** All applied. The blocker: §4.1 adopted a custody intersection that was not the doctrine's, could not fail, and left the leak it claimed to close. §1.10 records what it changed | |
| -| slice 1's S2 client, gate 33, gate 21, the merge | — **not yet reviewed** | Owed before this branch merges | |
| +| slice 1's S2 client, gates 33 and 21, the merge | Fable | **REQUEST CHANGES — 8 MAJOR, 4 MINOR.** All applied. It found a conflict marker committed into `.gitignore` (which `make ci` cannot see), an egress exemption paid by a test that did not exist, "one predicate" untrue of production, `S7` reintroduced by the merge into the sections that retire it, and four green mutations in the sibling client — including a silent value that rendered a count. §1.11 records it | |
| |
| §1.2 records what the draft-1 reviews changed, §1.3 what the draft-2 |
| review changed, §1.4 what the review of the built code changed, §1.5 what |
| @@ -610,6 +610,57 @@ claim was unverifiable *as written*, and §13 now says which ref the hashes |
| are on and how they were checked. A citation that only resolves for |
| whoever wrote it is not a citation. |
| |
| +### 1.11 What the merge review changed |
| + |
| +The branch merged eighteen commits of `main` — the Notion connector, |
| +multi-file drop, draft 5 — and was then reviewed as a whole. REQUEST |
| +CHANGES, eight MAJOR. **Every one of them was in something the merge did |
| +not open**, which is §1.10's lesson arriving for the fifth time and the |
| +reason it is now a rule in AGENTS.md rather than an observation. |
| + |
| +**Three were guards that could not have worked.** |
| + |
| +`.gitignore` was committed **with conflict markers in it**, and `make ci` |
| +was green throughout, because git parses the marker lines as harmless |
| +patterns. A broken file that no gate in this repository can read. |
| + |
| +The egress gate's sibling exemption cited |
| +`sibling.TestClientRefusesHostsOutsideTheTeam` as the runtime guard paying |
| +for it. There was no such test. Every test in the package built its own |
| +`&http.Client{}`, so nothing exercised `suite.NewSiblingClient` and a |
| +constructor returning a client with no team check and no redirect refusal |
| +would have stayed green. AGENTS.md's second named failure — a gate naming a |
| +test that is not there — inside the comment claiming the payment. |
| + |
| +And "one predicate" was not true of production: `main.go` passed |
| +`Admits(cfg.Owners)` to `NewAuth` and separately called |
| +`SetOwners(cfg.Owners)`, two closures over two copies of one rule, while |
| +`handlers.go` asserted there was "no second value to disagree with". The |
| +fix is not a gate: `Admits` is deleted and `app.Admit` is a method on the |
| +one list, so there is nothing to build twice. |
| + |
| +**Four more were mutations the author had not thought of**, found in the |
| +sibling client after five author-chosen ones had all gone red. The worst |
| +rendered a *count* for `NOT_VISIBLE` — the one value that must be silent — |
| +telling a reader how many things they may not see. The most instructive |
| +bounded the deadline against itself, so `Deadline = 30s` passed and a page |
| +could hang for half a minute with the suite green. **A test that measures a |
| +constant against itself measures nothing.** |
| + |
| +**And the rest were the merge's own seams.** `S7` came back into §4.3 and |
| +decision 11 from a branch written before ruling 4. §2 contradicted itself |
| +four lines apart. §13 carried two lists arguing — an item truncated |
| +mid-sentence, the same question live in one copy and struck in another, a |
| +header counting four items of which two were dead. Twelve gate citations |
| +pointed at the wrong gates after the renumbering, one sentence naming the |
| +same gate under two numbers. |
| + |
| +**The lesson that is new**, and it is about reviewing rather than writing: |
| +this pass found more than the four before it combined, and it found it by |
| +comparing the merge against *both parents* rather than reading the result. |
| +A merge is the one change where reading the output cannot tell you what is |
| +missing. |
| + |
| --- |
| |
| ## 2. What memoria is |