Raxx · internal docs

internal · gated

Console Mockup Backlog Triage — 2026-06-05

Triage date: 2026-06-05 UTC Scope: 14 design directories under docs/design/ (plus one single-file sweep doc). Out of scope: docs/design/billing-customer-dashboard-2026-05-11/ — in flight with feature-developer, excluded per operator instruction. Parent epic: #146 (raxx-console operator admin console)


Constraints applied

  1. Queue migration in flight (project_queue_owns_customer_timeline) — any surface reading customer source-of-truth is blocked until Queue cutover (#2444).
  2. Console nav structure locked (project_console_nav_structure) — three top-level items: Security / Status / Issues. One canonical nav design wins.
  3. Console env switcher retired — any mockup showing the dropdown is stale.
  4. FLAG_CONSOLE_FLAG_PROMOTIONS is OFF/console/flags returns 404 on both envs; flag-UI mockups are not operator-reachable today.
  5. Pre-launch CI digest — Console is internal; no per-event notification surfaces.
  6. Hide-don't-gray — no "upgrade to unlock" affordances.
  7. Operator-or-CS daily workflow focus — SHIP-NOW bucket limited to items that genuinely improve operator daily use.

Summary table

Directory Category Effort Notes
console-broken-or-unfinished-sweep-2026-05-13.md SUPERSEDED All blockers/annoyances confirmed fixed or tracked by later work
console-audit/ SUPERSEDED Polishes from PR #1913 shipped; findings tracked on sub-cards
console-build-status-icons/ SUPERSEDED Explicitly superseded by console-tile-build-strip/
console-dashboard-overlay-diagnosis-2026-05-13/ SHIP-NOW 1d Fixes B1–B5; overlay artifacts and mobile focus bug outstanding
console-dashboard-tile-hover-and-detail/ SUPERSEDED P5 drawer shipped (FLAG_CONSOLE_TILE_DRAWER); hover popover already live
console-dashboard-visuals/ SUPERSEDED Visual language fully implemented; sentinel breathing-line, tile sort, alerts drawer all shipped
console-deploy-flow/ SHIP-NOW 2d GH Actions log stream (FLAG_CONSOLE_DEPLOY_LOG_STREAM) is the only outstanding sub-item
console-deploy-modal/ SUPERSEDED Full state machine implemented in _deploy_modal.html (946 lines)
console-favicon/ SUPERSEDED Four favicon variants shipped; base.html already references all four
console-nav-2026-05-09-v2/ SUPERSEDED FLAG_CONSOLE_NAV_V2 exists and is implemented; v2 design merged
console-nav-ia-reorg-2026-05-13/ STALE-DELETE No spec file; single mockup HTML duplicates v2 work; no new content
console-redesign-2026-05-16/ SUPERSEDED Option B chosen; design doc + ADR-0096 filed; console_dashboard_v2 flag + templates shipped
console-status-mobile/ SHIP-NOW 1d Screenshots-only dir; long-press fix (B3/B4 from overlay-diagnosis) is the substantive item
console-tile-build-strip/ SHIP-NOW 2d Spec complete; CSS shipped in build-strip.css but log-stream wiring is pending
console-tile-hover-proposals/ NEEDS-REVISION Direction not chosen; P5 drawer shipped but open Qs unanswered

Per-item detail

console-broken-or-unfinished-sweep-2026-05-13.md — SUPERSEDED

Static sweep of 16 console routes, dated 2026-05-13. Cross-referencing against current code confirms:

No remaining open items. Recommend keeping as historical reference.


console-audit/ — SUPERSEDED

Audit performed 2026-05-12. All 10 polishes shipped in PR #1913. Sub-cards #1914–#1917 filed and confirmed resolved (load skeleton #1915, Intl.NumberFormat billing #1916, admins-online inline confirm #1917). The audit trail itself (audit_viewer.py blueprint, audit/index.html template) is fully implemented behind console_customer_audit_viewer flag. No new work.


console-build-status-icons/ — SUPERSEDED

The design doc itself reads:

"SUPERSEDED — historical reference only. The icon-overlay approach has been replaced by the animated bottom-edge build-strip (issue #1261)."

Retain as historical reference per the doc's own instruction.


console-dashboard-overlay-diagnosis-2026-05-13/ — SHIP-NOW

What it designed: Five specific fixes (B1–B5) to the tile hover overlay artifacts and mobile long-press experience.

Implementation status: - B3 (mobile long-press threshold 500→350ms) and B4 (focus-return bug): both referenced in the _status_grid.html comment and confirmed shipped per the diagnosis doc's "minimum cleanup" guidance. However, console-status-mobile/ is screenshots-only with no spec, suggesting mobile improvements may still be needed. - B1 (shadow bleed reduction) and B2 (remove conflicting inline hover handlers): these are template/CSS changes that can be verified only by runtime inspection. Static read confirms inline onmouseover/onmouseout handlers remain at _status_grid.html lines 446–447. Not yet fixed. - B5 (scroll-into-view on drawer open): p5_drawer.js does not exist as a standalone file in console/app/static/js/ — the P5 drawer JS is inlined in _status_grid.html and the drawer is gated by FLAG_CONSOLE_TILE_DRAWER. Deferred. - Audit UTC hint: console/app/templates/audit/index.html lines 45, 57 still show bare datetime-local inputs with no (UTC) hint below. Same for customers/audit_log.html. Not yet fixed.

What remains: B1 + B2 (shadow/hover), the UTC datetime hint on audit pages. Flag: FLAG_CONSOLE_DASHBOARD_HOME (existing, no new flag needed). B1 migration: none required. Effort: 1 day.


console-dashboard-tile-hover-and-detail/ — SUPERSEDED

Designed the hover popover (.tile-popover) and site detail page. Both are fully implemented — hover popover is live in _status_grid.html and base.html, site detail at _site_detail.html. The P5 drawer design was superceded by the redesign choosing Option B. Retain as reference.


console-dashboard-visuals/ — SUPERSEDED

Sentinel breathing-line, tile sort order (DEGRADED→DOWN→UNKNOWN→HEALTHY), alerts drawer, bottom ticker, and tickRelativeTimes() are all implemented in base.html and _status_grid.html. The visual language from this design is the current production look. No open work.


console-deploy-flow/ — SHIP-NOW

What it designed: Post-dispatch deploy states (Queued/Running/Validating/Done) with live log streaming from GH Actions.

Implementation status: - State machine (Queued, Validating, health-check loop) is fully implemented in _deploy_modal.html (946 lines). All five states (stateQueued, stateInflight, stateValidating, stateDone, stateFreeze) are wired per the design. - Health check loop with 6 attempts / 30s timeout: implemented (lines 1610–1618, 1347+). - 3-stage progress bar (Build/Deploy/Verify): implemented (line 1848). - Outstanding: GH Actions log streaming (FLAG_CONSOLE_DEPLOY_LOG_STREAM). The design calls for server-side log fetching via the GH Actions Jobs API appended to streaming_log. The template has the streaming_log empty-log notice (line 987) and a logs fetch path referenced in the JS (line 1124), but no flag for log stream exists in feature_flags.yaml and the fetch endpoint for GH Actions log content is not yet implemented. This is the only remaining sub-item from this design.

Flag needed: FLAG_CONSOLE_DEPLOY_LOG_STREAM (new). B1 migration: yes — new flag needs B1 migration row. Dependency: GITHUB_API_DISPATCH_TOKEN must have actions:read scope (operator confirmation needed per open question #3 from the design doc). Effort: 2 days (endpoint + flag + migration).


console-deploy-modal/ — SUPERSEDED

Full state machine documented in the design is implemented in _deploy_modal.html (946 lines). All states, type-to-confirm UX, streaming log CSS, error states, rollback guidance, mobile collapse rules, accessibility notes, and transition triggers are present. No remaining work.


console-favicon/ — SUPERSEDED

The design produced favicon.svg. The static directory contains favicon.ico, favicon-32.png, favicon-180.png, and favicon.svg. The base.html template references all four with ?v=2 cache-bust. Fully shipped.


console-nav-2026-05-09-v2/ — SUPERSEDED

FLAG_CONSOLE_NAV_V2 exists in feature_flags.yaml (line 2367, default off). nav-v2.css exists in console/app/static/css/. The nav v2 HTML is implemented in base.html behind the flag. Two open questions from the design (audit route canonical URL, icon tray issues tooltip data source) are resolved by code — the audit blueprint is at /console/audit and the tooltip data comes from server-side Flask context.

Note: v2 nav puts Security under an Ops dropdown. This conflicts with the locked project_console_nav_structure which says Security is a top-level menu item. The FLAG_CONSOLE_NAV_V2 code still shows the legacy v1 nav at line 1181–1213 (Security is top-level there). Verify before enabling v2 nav: does the v2 Ops dropdown restore Security to top-level or keep it nested? This is flagged as an operator open question.


console-nav-ia-reorg-2026-05-13/ — STALE-DELETE

This directory contains only proposed-nav.html (a mockup) and screenshots/. There is no spec, no README, no comparison doc (the comparison.md referenced in the file listing is actually in console-redesign-2026-05-16/). The mockup is an annotated HTML version of the v2 nav. It adds no new content beyond console-nav-2026-05-09-v2/ and predates the confirmed nav structure lock. Safe to delete.


console-redesign-2026-05-16/ — SUPERSEDED

Three redesign options (A/B/C) with a scoring matrix recommending Option C but noting Option B for incident response. Operator chose Option B (2026-05-16, PR #2264). ADR-0096 filed. console_dashboard_v2 flag exists in feature_flags.yaml. Templates _status_tiles_v2.html (273 lines), _surface_panel_v2.html, and CSS/JS assets (dashboard-v2.css, dashboard-v2-panel.js) are all shipped. The dashboard blueprint branches on _dashboard_v2_flag_enabled(). Fully implemented behind flag.


console-status-mobile/ — SHIP-NOW

This directory is screenshots-only (no spec, no README). The screenshots show the mobile long-press sheet behavior. The substantive mobile work is documented in console-dashboard-overlay-diagnosis-2026-05-13/ as issues B3 and B4. Since both directories point at the same underlying fix, this item is consolidated into the overlay-diagnosis SHIP-NOW card rather than filed as a separate card.

Disposition: The mobile improvements are captured under the overlay-diagnosis card. This directory itself contains no independent spec. Recommend keeping as screenshot reference; do not file a separate card.


console-tile-build-strip/ — SHIP-NOW

What it designed: Animated 3–4px bottom-edge gradient strip on .tile-wrapper encoding 7 deploy states. Replaces the icon-overlay approach.

Implementation status: - build-strip.css exists in console/app/static/css/. - _status_grid.html and _status_tiles_v2.html both apply _build_strip_state CSS classes (build-dispatching, build-queued, build-running, build-validating) based on the in-flight deploy status. - The spec's CSS keyframes and state map are implemented in build-strip.css. - Outstanding: The build strip is wired to the deploy state machine but the log-stream integration (same FLAG_CONSOLE_DEPLOY_LOG_STREAM from deploy-flow) is the dependency that completes the full cycle visualization. The strip itself works; the "Done success → fade to neutral hairline" transition on deploy completion needs the terminal state callback from the log-stream endpoint.

Note: The spec has open question #3: "suppress build icon when tile state is DOWN?" The Jinja guard {% if badge != 'DOWN' %} is recommended by the spec; confirm whether this is implemented or left open.

Flag: FLAG_CONSOLE_DEPLOY_LOG_STREAM (same as deploy-flow). Effort: 1 day (terminal-state callback + DOWN-tile guard confirmation). Consolidate with deploy-flow card into a single implementation card.


console-tile-hover-proposals/ — NEEDS-REVISION

What it designed: Five alternative tile hover treatments (P1 inline expand, P2 side rail, P3 glass overlay, P4 card flip, P5 detail drawer). Filed as options for operator selection.

Why it needs revision: 1. P5 (detail drawer) was implemented behind FLAG_CONSOLE_TILE_DRAWER but the subsequent console-redesign-2026-05-16 chose Option B (split view), which removes the P5 drawer entirely (console-dashboard-v2-option-b-2026-05-16.md §1: "No flip, no hover popover, no bottom drawer"). The P5 drawer is now superseded by the v2 split panel for console_dashboard_v2=on operators. 2. The hover proposals were for the v1 grid; the v2 split view has its own hover behavior (click to pin to panel). The proposals do not apply to v2. 3. None of P1–P4 was selected. If the v1 grid is retained long-term (as a fallback while v2 soaks), the operator needs to decide whether to invest in a hover improvement for v1 or declare v1 grid hover "good enough until v2 fully rolls."

Operator decision needed: Should the existing hover popover (v1 grid) receive any investment before v2 fully rolls? If no, this can be closed without revision.


SHIP-NOW cards (phased rollout)

The SHIP-NOW items are three functional areas. One of them (overlay-diagnosis + status-mobile) is a direct template fix; two others (deploy-flow log stream + build-strip terminal state) share the same flag and can be shipped together.

Wave 1 (parallel — no dependencies between them)
  ┌─────────────────────────────────────┐
  │  CARD-A: Overlay artifact fixes     │  1 day
  │  (B1 shadow + B2 inline handlers    │
  │   + audit UTC hint)                 │
  └─────────────────────────────────────┘

Wave 2 (after Wave 1 merges — same flag, one PR)
  ┌─────────────────────────────────────────────────────────────────┐
  │  CARD-B: Deploy log stream + build-strip terminal state         │  2 days
  │  (FLAG_CONSOLE_DEPLOY_LOG_STREAM — new flag + B1 migration      │
  │   + GH Actions Jobs API endpoint + build-strip fade-to-hairline │
  │   + DOWN-tile strip guard)                                      │
  └─────────────────────────────────────────────────────────────────┘

Total SHIP-NOW estimated effort: 3 days

Wave 1 is pure template/CSS — no flag, no migration, no API changes. It can run in parallel with any other active console work. Wave 2 requires the GITHUB_API_DISPATCH_TOKEN scope confirmation (operator action) before feature-dev can start.


SHIP-AFTER-DEPENDENCY items

None in this triage. All items that depend on the Queue cutover (#2444) or RBAC V2 are in the existing issue backlog and not in this design batch.


NEEDS-REVISION items

console-tile-hover-proposals/

The P5 drawer is superseded by dashboard v2's split panel. The hover proposal set was a pre-decision menu; no direction was formally selected. Options:

Recommendation: wait for console_dashboard_v2 to reach GA. If the soak passes, close without action.


SUPERSEDED items (no cards filed)

Directory Shipped in
console-broken-or-unfinished-sweep-2026-05-13.md PRs #1913, #1915–#1917, #1936, #1957–#1958
console-audit/ PR #1913 + sub-cards #1914–#1917
console-build-status-icons/ console-tile-build-strip/ design + build-strip.css
console-dashboard-tile-hover-and-detail/ PR #557, PR #564, FLAG_CONSOLE_TILE_DRAWER
console-dashboard-visuals/ base.html + _status_grid.html
console-deploy-modal/ _deploy_modal.html 946-line implementation
console-favicon/ console/app/static/favicon.* + base.html
console-nav-2026-05-09-v2/ nav-v2.css + base.html FLAG_CONSOLE_NAV_V2
console-redesign-2026-05-16/ ADR-0096, console_dashboard_v2 flag + templates

STALE-DELETE items

console-nav-ia-reorg-2026-05-13/

No spec, no README, no unique content beyond console-nav-2026-05-09-v2/. Contains only a mockup HTML and screenshots. Safe to delete.

Recommended action: git rm -r docs/design/console-nav-ia-reorg-2026-05-13/ in a housekeeping commit.


Open questions (operator decisions required)

  1. Nav v2 Security placement (before enabling FLAG_CONSOLE_NAV_V2): The locked nav structure says Security is top-level. Does the v2 nav template keep Security at top level or nest it under an Ops dropdown? Verify before flag enable.

  2. Deploy log stream token scope: Does GITHUB_API_DISPATCH_TOKEN have actions:read scope? If not, CARD-B cannot land without a token rotation. (Per feedback_credentials_pre_launch_posture, this is a vault-verify task, not a new-mint escalation — check Infisical before filing an operator-action card.)

  3. Console-tile-hover-proposals disposition: Should any v1 hover investment happen before v2 fully rolls? Suggest defer until console_dashboard_v2 exits soak.

  4. Build-strip DOWN-tile guard: Confirm whether the {% if badge != 'DOWN' %} guard for the build icon (recommended by the spec) is currently in the template or still open. This affects CARD-B scope.


Billing-customer-dashboard note

docs/design/billing-customer-dashboard-2026-05-11/ is in flight with feature-developer and was not triaged here per operator instruction.