docs(autosde): freeze the chat session row's line count - #2512
Conversation
The session list is the dashboard's primary navigation surface and its only real budget is how many sessions fit above the fold. Every stacked line added to a row is paid by every session in the list, and the fields that keep getting proposed for it (project directory, branch, model, workspace) are constant for the life of the session — exactly the information a user does not re-read on every scan. Adds a blocking frontend rule, session-row-fixed-height, that enumerates the five permitted lines (agent/meta, title, one mutually-exclusive status line, source-link chips, tag chips) and gives the escalation order for a new field: inline on the agent/meta line after the agent name, then folded into an existing line as trailing detail, then tooltip or actions menu. Widening the row is explicitly not an alternative — the sidebar width is user-controlled and the list must not scroll horizontally. Scoped to the three surfaces that render a session row: ChatSidebar, SessionFlyout, SessionGridView.
Opus 4.8 Review — ✅ no blocking findingsReviewed Review detailsThe diff is a pure addition of one new blocking rule to No findings. [OPUS-REVIEWED] 93d6518 Verdict parsed from the review's SHA-scoped output markers for commit False positive or not applicable? A repository writer can comment: |
UX Review (Fable 5) — ✅ PASSAdvisory UX-level review of The diff is a single addition to UX-Verdict: PASS No user-facing change ships — a lint rule freezing session-row density, and its escalation ladder (inline → fold → tooltip/menu) is sound UX guidance. [UX-REVIEWED] 93d6518 |
GPT 5.6 Review — ✅ no blocking findingsGPT 5.6 completed its review of This comment is updated in place on each push. Review detailsNo findings. False positive or not applicable? A repository writer can comment: |
Design Review (Fable 5) — ✅ PASSAdvisory design-level review of Design-Verdict: PASS Sound design-freeze rule: encodes a real, recurring density regression at the layer that catches it, and matches the code it describes. Suggestions
[DESIGN-REVIEWED] 93d6518 |
What
Adds a blocking frontend AutoSDE rule,
session-row-fixed-height: a chat session list item has a fixed set of stacked lines, and new per-session metadata may not add another one.Why
The session list is the dashboard's primary navigation surface, and its only real budget is how many sessions fit above the fold. An extra line is paid by every session in the list, forever, so one constant field can be read without hovering — and the fields that keep getting proposed (project directory, branch, model, workspace) do not change for the life of the session, i.e. exactly what a user does not re-read on every scan. The lines that exist are earned: mutually exclusive turn state, or they disappear when empty.
The rule
Permitted lines: agent/meta, title, ONE status line (ternary chain), source-link chips, tag chips.
Escalation order for a new field:
goalLoopDetailpattern);SessionActionsMenu, or the detail/flyout surface.Widening the row is explicitly not an alternative: the sidebar width is user-controlled and the list must not scroll horizontally.
Scoped to
ChatSidebar.tsx,chat/SessionFlyout.tsx,components/SessionGridView.tsx.Verification
YAML parses; 11 rules load, new id present,
blocking: true. Docs-only change — no code touched.