ADR-0124: The Birth Path Completes Without Borrowing Content Clothes¶
- Status: accepted (2026-08-24 night — his insight: "it is a bit strange that I have to staff myself as sysadm to another role just to be able to initialize the project, thereby breaking the content vs admin boundary"; ruling "a) sounds best" on open decision 30)
- Date: 2026-08-24
- Deciders: Nicolas Burri
- Refines: ADR-0048 §3 (its unconditional
ORGANIZE_DOCUMENTSgate on folder creation is re-drawn for empty scopes — the forward declaration was missing until 2026-09-04) - Relates to: ADR-0012 (admin ≠ content — the boundary this stops institutionally breaching), ADR-0122 + open decision 25 (the one-party birth this completes), V106 (the empty-vs-working bright-line pattern reused here), the 2026-08-24 exploratory walk (finding 26's structural quartet — three of its four gaps close here), ADR-0108 §3 (anti-enumeration, honored by the offer-transparency wording).
Context¶
The wizard's folder-skeleton step required ORGANIZE_DOCUMENTS — a content permission — so a
content-blind operator was TOLD to self-staff into Quality Manager for the birth: real content
reach into a customer project, trail residue included, recommended by our own UI. The remedy
institutionalized exactly the breach ADR-0012 exists to prevent. His diagnosis: the boundary was
drawn on the wrong feature of the act. What ORGANIZE_DOCUMENTS controls is reorganizing a LIVE
tree — mis-filing existing controlled records. At birth the project is EMPTY: the skeleton is
scaffolding, not records.
The same walk found the birth path's other content-borrowings: the staffing bridge opens only for preset-named slots (a hand-added role cannot be self-staffed, so a virgin catalog has no in-run staffing path at all); the wizard's re-entry list is VIEW-gated (a project born by a content-blind admin is unreachable by the wizard forever); and the project offer silently truncates with no sentence saying it is filtered.
Decision¶
- While a scope holds ZERO documents, folder creation is a SETTING-UP act, gated like the
rest of setup:
ACTIVATE_CATALOG_ENTRIESeffective in the scope (the open-decision-25 family — the folder skeleton was the last setting-up act still content-gated). The moment the first document exists, the tree is live andORGANIZE_DOCUMENTSgoverns exactly as today. The empty-scope condition is a BRIGHT STRUCTURAL LINE in the V106 tripwire pattern — checked in the same transaction as the write, never a UI judgment. Audit anchors on the scope (the ADR-0122 §4 rule: gate and trail travel together).
Citation correction (2026-09-04, ADR-coherence review §2.5). Decision 1's "the ADR-0122 §4 rule: gate and trail travel together" cites a section that does not state it: ADR-0122 §4 decides the
CREATE_PROJECTsplit and places the gate at the target organization's anchor scope. The rule itself is real and is what this ADR follows; its ADR half is §4's gate sentence, its trail half lives in the realization (the V-migrations). 2. The wizard stops recommending self-staffing across the boundary. With decision 1 the folder step simply plans for any caller who may set the project up; the self-staff-into-QM advice disappears from the birth path. Self-staffing remains available as what it always was — a deliberate act with content consequences — never a required workaround. 3. The staffing bridge accepts hand-added roles (finding 26e):staffingOfferedkeys on the activation list, not on preset slot names. A virgin catalog's operator who mints a role can staff it in the same run. 4. Wizard re-entry uses the governable union (finding 26f): the project list a caller may re-enter for setup is VIEW-scopes ∪ governable-scopes — themayHoldAsContextrule from the blind-governance work, applied to the one surface it missed. A project you may configure is a project you may return to. 5. The offer says when it filters (finding 26g): whenever the wizard's project list shows fewer scopes than the caller's provisioning read returns, one sentence names the rule ("N further projects are not shown: their setup is complete" or whatever the true filter is) — without disclosing anything the caller cannot already read.
Consequences¶
- The one-party arc closes end to end: an org or project administrator — and the content-blind operator — births a COMPLETE project (types, roles, key rules, folders) without ever holding a content permission. Exploration finding (h) shrinks to its true remainder: a VIRGIN catalog still needs the operator to mint roles first, which is correct — the catalog is installation-level by design (ADR-0121).
FolderService's gate gains the empty-scope branch with the count check inside the write transaction; a concurrent first-document race resolves by the transaction order, never by the UI's stale belief.- The wizard's folder hand-off messaging simplifies: with decision 1, most of finding 23/25's carefully-honest sentences stop rendering at birth at all — the best fix for a message is a design that no longer needs it.
- Realization: one wave (backend gate + wizard), with rulings 22 (collab for tree-less drafts) and 13 (arrival-resume verification) riding alongside as their own lanes, and the six permanent fullstack tests landing once the wizard files settle.