ADORSYS-GIS / ADORSYS-GIS/lightbridge-authz
[Epic]: Console backend contracts — every honestly-disabled console surface gets a real read path or a recorded no
- Langage dominant
- Rust
- Étoiles
- 0
- Forks
- 1
- Merge moyen
- 6 h 42 min
- PR mergées (30 j)
- 246
Description
### Summary
The console (`converse-frontends#368`) ships nav rows and page blocks that are **deliberately disabled-with-reason rather than fabricated**, because there is no backend procedure behind them. Fourteen tickets were filed in this repo from that one driver epic. This is their authz-side home.
### Intent
`#368` lives in another repo, so "how much of the console is still blocked on us" is currently unanswerable from here — it is fourteen unparented tickets with no shared progress signal. This epic makes it one number.
It closes when every disabled console surface either has a real contract in `authz.cstack`, or a recorded permanent "no". **A recorded "no" closes a child as legitimately as an implementation does** — two of these are decision tickets, not build tickets.
### Children
- **Budget/refill reads** — #556 (decided augmentation requests), #557 (consumed/ceiling snapshot), #558 (grant history for reviewers), #559 (requester note), #560 (requester identity), #561 (project dimension on balance), #577 (self-scoped balance reads)
- **Platform reads** — #562 (expose `max_lifetime_days`), #571 (`listRoles`/`listPermissions`), #572 (`listQuotaTiers`), #573 (version/build endpoint)
- **Decisions, not builds** — #594 (is account-level membership a concept at all?), #597 (does any outcome/error signal exist to expose?)
- **Scope** — #602 (unscoped account listing)
### Acceptance Criteria
1. Every child is closed, each by **either** a procedure that exists in `crates/lightbridge-authz-api/schema/authz.cstack` **or** a written decision recorded on the ticket that the surface will not be served.
2. Each shipped procedure has a contract test in this repo asserting an authorized caller receives real values and an unauthorized caller is refused — verified here, not by observing the frontend.
3. A comment on `converse-frontends#368` lists what shipped and what was declined.
### Out of Scope
- **The frontend's consumption of these procedures.** That is `#368`. ⚠️ Deliberately excluded: several children currently carry an AC phrased as *"console follow-up can render real values with no hardcoded nulls"*, which is unverifiable from this repo and is satisfied or broken by edits nobody here sees. This epic's contract is the **backend surface**.
- Frontend work of any kind.
### Technical Context
⚠️ **Judgement call worth revisiting:** #556–#561 and #577 are budget-domain and could instead hang off **#188**. They are here because #188's completion is not blocked by them (it is about the ledger and the policy engine), whereas #368's completion is blocked by all fourteen — and splitting the cluster is what loses the cross-repo signal.
⚠️ **#597's resolution likely lands inside #581's ingest redesign** (whether any outcome signal is captured at all is a store question). Cross-reference rather than re-parent.
⚠️ **#573 should not be gated behind the other thirteen** — it is a read-only diagnostic route and the smallest item here.
### AI Usage Declaration
Cluster identified and epic drafted by Claude Opus 5 during the 2026-09-01 triage sweep; the fourteen tickets' shared origin in `#368` was verified from their bodies. AI output is not truth; the owner verifies the grouping.
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.