Context
ADR 0029 §2.4's projection half (learn/agentos/decisions/0029-harness-docking-design.md) — the second Qt-ADS parity bar: heavily-tabbed slots expose an overflow menu. Unfiled per the ADR §5 table. Filed to the delegatable bar: non-fable implementable.
The Problem
When a tabs node's headers exceed the available extent, hidden tabs are currently unreachable except by resize. Qt-class docking surfaces the remainder through an overflow control.
The Architectural Reality
- Projection affordance, NOT a model change (ADR verbatim): nothing new persists —
items order and activeItemId already capture the state.
- Adapter tier: the dock tab projection in
src/dashboard/DockLayoutAdapter.mjs, implemented against Neo.tab.Container's existing header mechanics.
- Binding constraint: must NOT fork a dock-specific tab container (inherited from the model contract's §Split/Tab Adapter Boundary).
- Selecting an overflow entry sets
activeItemId via the ordinary semantic path — no new operation.
The Fix
One PR: overflow detection on header extent, a dropdown/control listing hidden tabs (title + kind icon per item record), selection routes through the existing active-item path, and the control disappears when everything fits. Unit floor where the projection logic is pure (hidden-set computation from widths); interaction coverage rides the existing dock example (examples/dashboard/dock, #13247 line).
Acceptance Criteria
Out of Scope
Grouped drag (#14770) · auto-hide rails (§2.7/#13280 line) · theming polish beyond the landed token layer.
Related
Parent #13158 · authority ADR 0029 §2.4. Decision Record impact: aligned-with ADR 0029.
Live latest-open sweep: latest 20 at 2026-07-04T13:15Z, no equivalent. A2A in-flight sweep: all-states 30 at 13:15Z, no competing claim.
Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4
Retrieval Hint: "tab overflow hidden tabs projection affordance"
Context
ADR 0029 §2.4's projection half (
learn/agentos/decisions/0029-harness-docking-design.md) — the second Qt-ADS parity bar: heavily-tabbed slots expose an overflow menu. Unfiled per the ADR §5 table. Filed to the delegatable bar: non-fable implementable.The Problem
When a
tabsnode's headers exceed the available extent, hidden tabs are currently unreachable except by resize. Qt-class docking surfaces the remainder through an overflow control.The Architectural Reality
itemsorder andactiveItemIdalready capture the state.src/dashboard/DockLayoutAdapter.mjs, implemented againstNeo.tab.Container's existing header mechanics.activeItemIdvia the ordinary semantic path — no new operation.The Fix
One PR: overflow detection on header extent, a dropdown/control listing hidden tabs (title + kind icon per item record), selection routes through the existing active-item path, and the control disappears when everything fits. Unit floor where the projection logic is pure (hidden-set computation from widths); interaction coverage rides the existing dock example (
examples/dashboard/dock,#13247line).Acceptance Criteria
activeItemIdpath — zero new persisted state, zero new operations (review-checkable).Out of Scope
Grouped drag (
#14770) · auto-hide rails (§2.7/#13280line) · theming polish beyond the landed token layer.Related
Parent
#13158· authority ADR 0029 §2.4. Decision Record impact: aligned-with ADR 0029. Live latest-open sweep: latest 20 at 2026-07-04T13:15Z, no equivalent. A2A in-flight sweep: all-states 30 at 13:15Z, no competing claim. Origin Session ID: fa2a6fd5-7488-4af6-a0d2-3855c86003e4 Retrieval Hint: "tab overflow hidden tabs projection affordance"