oficina / memoria Public

🤖 spec: the AHEAD table row still said two shapes

§4.1's value table read "Two shapes, one value — the sibling's log stops
short of this revision, or the sibling has no row for this item
whatsoever", four sections above the rule that says the no-row case is
NOT_VISIBLE and why. The table is the thing an implementer reads first, so
it was the more dangerous of the two copies. One shape now, with the
reason and the date it changed.

Found by the suite session reading this branch at the ref — and it nearly
reported the opposite: its first pass grepped for a rule that spans two
lines, got zero matches, and came within one message of saying nothing had
been fixed. That is a rider on "cite the ref, not the claim" and it is in
§1.10: a false negative from a correct ref is worse than not checking,
because it arrives with the authority of having looked. A count of zero is
a claim like any other.

One residue left and it is not fixable from here: main's S2 row still
requires AHEAD for a no-row item, so an implementer following memoria
today still builds the oracle. It closes when this branch merges.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Paul Campbell pushed by paul@keymail.dev a6ec4b94b3c61e1ea770cc63b9871703301e0704 parent 45d070f
1 file changed, +9 −1
  • docs/superpowers/specs/2026-09-03-memoria-design.md +9 −1
diff --git a/docs/superpowers/specs/2026-09-03-memoria-design.md b/docs/superpowers/specs/2026-09-03-memoria-design.md
index 800bfa0..1e97590 100644
--- a/docs/superpowers/specs/2026-09-03-memoria-design.md
+++ b/docs/superpowers/specs/2026-09-03-memoria-design.md
@@ -586,6 +586,14 @@ memoria merge made on something the suite implied. **When you tell another
repository a fact about this one, give the commit it is true at. When one
tells you, check it before you rule on it.**
+**And a rider the suite session earned the hard way an hour later: citing
+the ref is not enough if you read it with a tool that sees one line at a
+time.** Its check of this fix grepped for a rule that spans two lines, got
+zero matches, and came within one message of reporting that nothing had
+been fixed. A false negative from a correct ref is worse than not checking,
+because it arrives with the authority of having looked. Read the
+surrounding lines; a count of zero is a claim like any other.
+
**One finding was wrong, and how it was wrong is worth as much.** The
review could not resolve `6797bbf` or `4aea8f4` and said §13's blocker was
therefore not shown closed. The hashes are correct — they are
@@ -1023,7 +1031,7 @@ names as the worst available.**
| `VISIBLE` | this person may read this revision | render it |
| `NOT_VISIBLE` | this person may not read it | omit it silently — correct, and the only value that may be silent |
| `STALE` | the item exists and is readable, but the sibling has moved past this revision | **withhold loudly and refetch.** Not a denial |
-| `AHEAD` | the sibling does not have this revision at all: memoria holds history the sibling does not. **Two shapes, one value** — the sibling's log stops short of this revision, or the sibling has no row for this item whatsoever | **withhold loudly and re-announce.** Not a denial, and not a reason to delete |
+| `AHEAD` | **the sibling's log stops short of this revision, for an item it still admits.** memoria holds history the sibling does not. **One shape, not two:** an item the sibling has no row for at all is `NOT_VISIBLE`, because `AHEAD` there would tell a caller which ids exist (§4.1 below, suite gate 3). This row read "two shapes, one value" until 2026-09-06 and contradicted the rule four sections down | **withhold loudly and re-announce.** Not a denial, and not a reason to delete |
| `UNKNOWN` | the sibling did not answer usefully | withhold loudly |
**`STALE` is here because draft 2 did not have it**, and mapped a stale