ADORSYS-GIS / ADORSYS-GIS/lightbridge-authz

[Epic]: Console backend contracts — every honestly-disabled console surface gets a real read path or a recorded no

Ouverte
#619 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
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.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.