Context
Sub of epic #14805, filed from the re-baseline drift ledger (ledger, item D5). The audit's live render shows the Accounts surface is split-brained: the agent form half is token-bound (inputs, agent-submit-button hierarchy), while the bridge-status block above it renders as raw default text with zero card anatomy — the older-shell class of drift Vega predicted (shells predating the token discipline).
The Problem
The Accounts status block (live capture, dev-server :8083, 2026-07-18):
- A
bridge-pending slab button in the neo default theme (rgb(62, 99, 221) — the same-weight default the epic's hierarchy complaint targets), followed by plain "Fleet Registry bridge required…" text.
- Harness and Servers sections rendered as bare text lists (Codex / Codex Desktop / … / On / Off lines) — no panel surface, no list treatment, no line separators, no ink-tier usage.
- Operations section: "Hooks / Wake subscriptions" + "Not read back yet" lines, same raw default.
The surface's own SCSS (resources/scss/src/apps/agentos/Accounts.scss, 24 lines) covers only the panel min-width, the agent selector, and the definition form — the status block has no rules at all.
The Architectural Reality
- Tokens are all defined (
--fm-panel, --fm-panel-2, --fm-line, --fm-line-soft, ink tiers, --fm-signal); the block needs consumption, not new tokens. Any token delta = a design decision routed through @neo-opus-grace, never silent.
- The button hierarchy precedent is landed at
resources/scss/src/apps/agentos/Viewport.scss:29-61 (quiet --fm-panel-2 base + --fm-signal primary via color-mix) — sibling-lift, no new pattern.
CARD-CONTRACT.md's panel/card treatment and the SSOT's list/row density are the visual targets; TOKENS.md ink tiers (--fm-ink values, --fm-ink-dim labels/meta; --fm-ink-faint is banned — fails contrast, ledger D4).
- The status content itself (bridge state, harness/server lists, operations read-back) is view-model truth — this leaf is presentation-only; no view-code changes beyond cls hooks where missing.
The Fix
- Give the status block the panel treatment:
--fm-panel/--fm-line card surface(s) with the SSOT's radius/padding, or the list-row treatment (--fm-line-soft separators) — pick per the SSOT's panel spec and note the choice in the PR.
- Ink tiers: section headers on
--fm-ink (+ mono eyebrow treatment where the SSOT uses it), values on --fm-ink, meta/degraded states on --fm-ink-dim. No --fm-ink-faint.
- The
bridge-pending slab joins the hierarchy: quiet base unless it is a genuine action; status text that is not an action becomes text, not a button (the affor-dance honesty rule — if it does nothing on click, it is not a button).
- Render-verified before/after captures in the PR (the epic's render gate), dark skin; light-skin spot-check.
Acceptance Criteria
Out of Scope
- The form half (already token-bound) · the D1 fleet-bar hierarchy (ships in the audit PR) · the D2/D3/D4 design rulings (Grace) · view-model/wiring changes.
Related
- Parent epic #14805 · the re-baseline audit #15487 (ledger source) · Accounts.scss · Viewport.scss:29-61 (hierarchy precedent) · TOKENS.md / CARD-CONTRACT.md.
Live latest-open sweep: covered by the #15487 creation sweep (2026-07-18T16:55Z) + this ticket is itself an AC deliverable of #15487's ledger split.
Origin Session ID: 9b748a56-8b84-43bf-a542-ee8dcf437ebf
Retrieval Hint: query_raw_memories("Accounts status block token panel drift agentos design conformance")
Context
Sub of epic #14805, filed from the re-baseline drift ledger (ledger, item D5). The audit's live render shows the Accounts surface is split-brained: the agent form half is token-bound (inputs,
agent-submit-buttonhierarchy), while the bridge-status block above it renders as raw default text with zero card anatomy — the older-shell class of drift Vega predicted (shells predating the token discipline).The Problem
The Accounts status block (live capture, dev-server :8083, 2026-07-18):
bridge-pendingslab button in the neo default theme (rgb(62, 99, 221)— the same-weight default the epic's hierarchy complaint targets), followed by plain "Fleet Registry bridge required…" text.The surface's own SCSS (
resources/scss/src/apps/agentos/Accounts.scss, 24 lines) covers only the panel min-width, the agent selector, and the definition form — the status block has no rules at all.The Architectural Reality
--fm-panel,--fm-panel-2,--fm-line,--fm-line-soft, ink tiers,--fm-signal); the block needs consumption, not new tokens. Any token delta = a design decision routed through @neo-opus-grace, never silent.resources/scss/src/apps/agentos/Viewport.scss:29-61(quiet--fm-panel-2base +--fm-signalprimary viacolor-mix) — sibling-lift, no new pattern.CARD-CONTRACT.md's panel/card treatment and the SSOT's list/row density are the visual targets;TOKENS.mdink tiers (--fm-inkvalues,--fm-ink-dimlabels/meta;--fm-ink-faintis banned — fails contrast, ledger D4).The Fix
--fm-panel/--fm-linecard surface(s) with the SSOT's radius/padding, or the list-row treatment (--fm-line-softseparators) — pick per the SSOT's panel spec and note the choice in the PR.--fm-ink(+ mono eyebrow treatment where the SSOT uses it), values on--fm-ink, meta/degraded states on--fm-ink-dim. No--fm-ink-faint.bridge-pendingslab joins the hierarchy: quiet base unless it is a genuine action; status text that is not an action becomes text, not a button (the affor-dance honesty rule — if it does nothing on click, it is not a button).Acceptance Criteria
--fm-ink-faint; meta on--fm-ink-dim).bridge-pendingelement: hierarchy-consistent (quiet button if actionable, token-bound status text if not).Out of Scope
Related
Live latest-open sweep: covered by the #15487 creation sweep (2026-07-18T16:55Z) + this ticket is itself an AC deliverable of #15487's ledger split.
Origin Session ID: 9b748a56-8b84-43bf-a542-ee8dcf437ebf
Retrieval Hint:
query_raw_memories("Accounts status block token panel drift agentos design conformance")