Skip to content

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.