oficina / suite Public

Revision 5, because revision 4's text moved under its own citation

The oficina/home activity-pull session was given bf0eeb8 for "revision 4"
while this repository's app amendments carried 210312f for the same
revision, could confirm neither against its clone, and recorded the
discrepancy rather than quietly choosing the newer number. It was right to.

Gate 9 of this document says the revision is bumped by any normative change,
wherever it lives — and two commits after revision 4 changed rules while
leaving the number alone. 574cc84 corrected A.1's ruling number and recorded
memoria's citation baseline. bf0eeb8 added §4.3's call-7 carve-out, scoped
§5.3's epoch exception to the call-8 path, rewrote §6's call-7 row and added
a leak-list item. §4.3 and §5.3 are normative by any reading, so the number
should have moved twice and moved neither time.

This is the same defect as the one open at memoria discussion 1 — a citation
that does not resolve to the text it names — committed by the document that
diagnoses it, one section after the gate that forbids it. The peer session
noted it had no standing to complain about memoria's while its own citation
was in the same state. Neither did this.

So: revision 5 is this commit. The app amendments on oficina/docs,
oficina/sheets and oficina/home cite revision 4 at 210312f, which was true
when each was written and is now exactly one revision behind — inside gate
9's one-revision grace, which exists as a compatibility allowance and not as
evidence a consumer meets current requirements. They stand as they are and
go stale on the next normative change.

A.1's "complete ruling 18's pending change" is retired too. It landed at
2b68301 with the other six places that amendment touched, and the home spec
retired the future tense rather than ticking off a list — a to-do list in a
document whose edits have landed is a trap for the next reader. Also caught
by the peer session, in its own spec rather than in mine.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Paul Campbell pushed by paul@keymail.dev d55fa15c9b88e77f249b1aab2110ee06348083b0 parent bf0eeb8
1 file changed, +31 −2
  • docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md +31 −2
diff --git a/docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md b/docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md
index 57b9d81..440ad3f 100644
--- a/docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md
+++ b/docs/superpowers/specs/2026-09-05-suite-sharing-doctrine.md
@@ -3,7 +3,28 @@
How the apps of the suite share identity, membership and content with
each other, and where the line is that nothing crosses.
-**Status:** design, **revision 4**, 2026-09-05. Drafted by the suite
+**Status:** design, **revision 5**, 2026-09-05.
+
+**Why 5 and not 4, which is this document breaking its own gate 9.** Two
+commits after revision 4 changed rules while leaving the number alone:
+`574cc84` corrected A.1's ruling number and recorded memoria's citation
+baseline, and `bf0eeb8` added §4.3's call-7 carve-out, scoped §5.3's epoch
+exception to the call-8 path, rewrote §6's call-7 row and added a leak-list
+item. Gate 9 says the revision is bumped by **any normative change, wherever
+it lives** — §4.3 and §5.3 are exactly that, and revision 4 was cited
+while its own text moved underneath the citation. Caught by the `oficina/home`
+activity-pull session, which was handed one commit for revision 4 while
+this repository's own app amendments carried another, could confirm
+neither, and wrote the discrepancy down rather than picking the newer
+number quietly.
+
+**What to cite.** Revision 5 is this commit. The app amendments on
+`oficina/docs`, `oficina/sheets` and `oficina/home` cite *revision 4,
+`210312f`*, which was true when each was written and is now exactly one
+revision behind — which gate 9's one-revision grace allows, deliberately, as
+a compatibility allowance and not as evidence they meet current
+requirements. They are correct as they stand and become stale on the next
+normative change. Drafted by the suite
session (Fable 5.1) from a brainstorm with Paul the same day. Every ruling
in §1 attributed to Paul was given in that conversation, in an earlier
spec named in the row, or in the sessions that produced revisions 3 and 4.
@@ -1215,7 +1236,15 @@ is added to §9."*
In §2.2 replace *"Never federates. Data does not cross an instance
boundary."* with *"Never crosses a team. Data does not cross a team
label; a team's instances across apps are one trust domain (suite ruling
-1)."* Complete ruling 18's pending change of *"never renders"* to *"never
+1)."* ~~Complete ruling 18's pending change~~ — **already landed at
+`2b68301`**, along with the other six places that amendment touched. A.1
+said "complete" because it was written before that commit; a to-do list in a
+document whose edits have landed is a trap for the next reader, and the
+home's own spec retired the future tense rather than ticking it off. Kept
+here as a record of what A.1 asked for and where it went, not as work
+outstanding. The original wording follows.
+
+Ruling 18's change of *"never renders"* to *"never
stores"*. Replace *"Never holds an authorization model"* with *"Never
holds a per-item grant. It holds the membership roster (suite ruling 4),
and answers only facts about its own records (ruling 19)."*