Six MCP App cards on ONE shared shell with the real SageOx brand lockup (OX logomark + theme-swapped
wordmark PNG), a single ghost Open in SageOx deep-link, and a shared encoding vocabulary: source/actor as a
neutral #slug pill, timestamp right-aligned sans, status as a hollow outline chip, topic as
a filled pill (wip·sage / decision·copper / blocker·danger / done·teal). Density gains come from removing dead vertical space
and redundant ink — not cramming. Light/dark via data-mode (top-right, or press m).
1 · Recording Insights
AI-extracted decisions, actions, and open questions. Owner #slug chip rides the trailing edge of
each decision title row (no inline → arrow); the per-decision context sub-line is kept. Neutral
topic-routing chips ("knows: auth") are who-to-ask-about-X discovery only — no influence / rank
(never-rank-people firewall). Only Decisions is inline; Actions + Open questions sit behind +N more.
-
Adopt event-driven sync over polling for the platform pipeline#danaPolling at 30s was missing late events; outbox dispatcher removes the lag.
-
Ship the auth migration behind a feature flag, default-on in dev#raviHard kill-switch via env; per-user rollout through PostHog.
2 · Decision Ledger
The AI / Human source badge is inlined at the trailing edge of the decision text row (not a solo
line); the owner #slug chip rides the same edge. A per-decision speaker/time grounding line ("dana decided ·
14:02") keeps extracted claims from floating. Provenance row names the source recording.
-
Cut over to session-cookie auth on the BFF, keep Bearer for CLI#danaHumandana decided · 14:02
-
Run a pepper-rotation drift fallback for one release window#raviAIravi proposed · 22:47
-
Wire the kill-switch env var into the api-go config loader#miraDue Fri
3 · Chapter Scrubber
The proportional per-chapter duration bar is kept (length = duration / total — the gold-standard mark); the redundant bar-label is dropped because the range chip already states 0:00–4:10. Node dots are hollow; per-topic-pill inner dots are gone. The fullscreen state is a shared-baseline horizontal Gantt (position = start, length = duration) — it reveals the gaps/overlaps the inline list hides, the only card that earns PiP.
Fullscreen / shared-baseline Gantt — earns PiP
4 · Recordings (picker)
Honestly a recordings picker — captioned as such so the catalog name doesn't oversell. Rows are already dense; padding tightened to ~8px. Status is a hollow outline chip (shape distinguishes it from a filled topic); the relative timestamp sits on the same row (no solo line).
5 · Attention Tray
The heavy 46px kind-rail is collapsed to an inline kind chip on the meta row; row padding is ~7px. The "Sorted by urgency" header keeps the position=priority encoding legible. Topic is a filled pill, status (failed recording) is the hollow outline chip — same vocabulary as everywhere else. Blockers sort first, then decisions, then wip.
-
Auth migration blocked on pepper-rotation drift
Murmur #api-go blocker High importance -
Decided: events over polling for the sync pipeline
Murmur #api-go decision -
Mobile release retro — transcription failed
Recording Failed -
Wiring the kill-switch env var into api-go config
Murmur #api-go wip
6 · Team murmurs
Canonical density fix: each murmur is now 2 lines — row 1 = topic pill + #slug source
(moved up next to the topic) + relative time pushed right; row 2 = the murmur text. The vertical spine and per-item node
dot are dropped (decoration — day-group + relative time already encode order). Day-group headers and the topic-count
tally legend are kept.
-
blocker#api-go
Auth migration blocked on pepper-rotation drift — need a one-release fallback.
-
decision#api-go
Decided: events over polling for the sync pipeline.
-
wip#api-go
Wiring the kill-switch env var into the api-go config loader.
-
decision#platform
Decided to default the new auth flow on in dev.

