ADR-0018: Minimal estate viewer now, Backstage plugin later¶
Status: Accepted (interim) — the interim is closed: the Backstage estate plugin shipped against the same read API — 001-walking-skeleton (2026-06) Principles served: III Source: docs/design.md D6 (and risk 5); specs/001-walking-skeleton/research.md D-9
Context¶
The design target for the estate surface is Backstage: estate view, evidence queries, and lifecycle actions as Backstage plugins, so enterprises already running Backstage adopt cheaply. But the walking skeleton needed a visible AI Act triage marker and a queryable estate without standing up Backstage, which would have been disproportionate for the skeleton and pulled Phase 3 work forward.
Decision¶
A stateless evidence/estate read API plus a minimal estate viewer
ship now; the full Backstage estate plugin is deferred to the
lifecycle-and-estate phase. The viewer is a server-side-rendered Go
service (html/template, stdlib only) that renders the app list with the
AI Act triage marker and filter; it calls the evidence/estate API
in-cluster, so the browser never calls the API directly. The read API is
deliberately UI-agnostic so the Backstage plugin later renders the
same contract — this is the mitigation design risk 5 already mandated for
the Backstage dependency.
Alternatives considered¶
- Full Backstage plugin now — rejected: disproportionate scope for the skeleton; explicitly Phase 3 work.
- API only, no UI — rejected: the skeleton required a visible AI Act triage marker, not just a queryable one.
Consequences¶
This is a recorded deviation from the design's timing (D6), not from its
destination: Backstage remains the target estate surface. The interim
viewer stayed cheap to extend — governance depth added read-only cost and
warning/suspended columns from status.costStatus with no new plumbing, because
the viewer renders CR-derived API state. Keeping the API UI-agnostic means
the eventual Backstage plugin is a rendering change, and the viewer's
design tokens are named so Backstage theming can adopt them. Until then,
customers get a minimal standalone view rather than the full portal
experience.