Loading
docs(specs): specify the permission verdicts for UI gating
What
Amends S09 with the permission checks ADR-021 defines for UI gating:
- New
### Permission verdictsdesign section: oneBatchCheckitem per surface with the tuple-read rules the point checks use, action sets fixed by resource level (namespace 7, repository 9, list rows included), strict result-cardinality consumption (violations answer503, never a deny), andCache-Control: private. - New endpoint
GET /api/v1/:slug/namespace(slug,created_at): carries the namespace verdicts on pages with no other management call. Gate is the no-permission binding variant — authenticated plus the ADR-020 organization comparison — with the cross-organization caller answered by the unknown-slug404. include_permissions(boolean, followsinclude_referrers) on the namespace details, repository detail, and repository list operations.- The list
200becomes a{"repositories": [...]}envelope on every call; verdicts add keys, the shape never switches. S17's list contract is updated in the same MR so the two specs agree. The monolith client (monolith/S02) migrates in a monolith MR the implementation plan must carry. - Listing section and acceptance criteria reconciled: a namespace role settles visibility only; requested verdicts still evaluate the returned rows. Seven new criteria (21–27) pin the gate, the verdicts, the opt-out, and the fail-closed consumption.
Spec status stays Approved; the merge is the approval signal.
Related to #670 (closed)