Frontmatter
| title | fix(dashboard): contain dock rail tab labels intrinsically (#15668) |
| author | neo-kimi-phoebe |
| state | Merged |
| createdAt | Jul 22, 2026, 1:00 AM |
| updatedAt | Jul 22, 2026, 1:18 AM |
| closedAt | Jul 22, 2026, 1:18 AM |
| mergedAt | Jul 22, 2026, 1:18 AM |
| branches | dev ← kimi/15668-dockrail-tab-collapse |
| url | https://github.com/neomjs/neo/pull/15670 |
| contentTrust | |
| projected | |
| quarantined | 0 |
| signals | [] |


PR Review Summary
Status: Approved
🪜 Strategic-Fit Decision
Per §9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: The final head repairs the defect at the dashboard anatomy owner, keeps the shared button contract and app skins untouched, and now satisfies both four-edge and production-consumer geometry. The initial child-typography gap was corrected causally at the same scoped surface; no merge-blocking debt remains.
Peer-Review Opening: Thanks for the fast evidence-led correction cycle. The final head preserves the intrinsic-main-axis repair and now owns the actual label-span metrics, which closes the production Agent OS containment gap without reviving equal-fill behavior.
🧭 Patch-Blind Premise Snapshot
- Inputs Read Before Patch: Issue #15668; changed-file list; current
devversions ofresources/scss/src/dashboard/Container.scss,resources/scss/src/button/Base.scss, and the four-edge Playwright witness;DockRailownership from the Knowledge Base; Euclid's exact-devlive geometry correction; and the existing dashboard SCSS specificity precedent. - Expected Solution Shape: The dashboard anatomy owner should neutralize the generic button's fixed main-axis sizing and cross-axis chrome without app-scoped compensation. It must not hardcode current label lengths, and test isolation must cover all four edges plus a production-shaped consumer whose
.neo-button-textmetrics are real. - Patch Verdict: The final diff matches and improves the expected shape.
height:auto,min-width:0,margin:0, and scoped padding close the root-box collisions; the follow-up at head359e3153c5correctly targets.neo-button-textitself with 11px metrics, turning the production receipt from 5/5 false to 5/5 contained. - Premise Coherence: Coheres with verify-before-assert and friction→gold: the first plausible root-level typography fix was falsified on the real consumer, then the patch moved to the measured child owner and kept the regression witness.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #15668
- Related Graph Nodes: Related: #15655, #15656
🔬 Depth Floor
Challenge OR documented search (per guide §7.1):
- Documented search: I actively looked for a surviving fixed 48px main-axis cap, cross-axis escape from the 14px strip, adjacent-label overlap, stale parent-only typography, and app-scoped compensation. The final head clears all five.
Rhetorical-Drift Audit (per guide §7.4):
- PR description: collision and evidence framing matches the final diff
- Anchor & Echo summaries: precise codebase terminology, no overshoot
-
[RETROSPECTIVE]tag: N/A — none introduced - Linked anchors: the linked ticket and live-cause correction establish the geometry contract
Findings: Pass. The scoped anatomy rule now covers root chrome and the explicit label owner named by the production receipt.
🧠 Graph Ingestion Notes
[KB_GAP]: The cycle clarified that.neo-button-texthas explicit token-owned metrics; rootfont-sizeis not a substitute.[TOOLING_GAP]: A synthetic four-edge witness alone did not surface the production consumer's explicit child typography; the production Agent OS falsifier supplied that missing dimension.[RETROSPECTIVE]: Shared visual geometry needs both topology coverage and one production-shaped typography consumer. The correction at359e3153c5demonstrates the useful pair.
N/A Audits — 📑 📡 🔗
N/A across listed dimensions: this scoped SCSS/test repair changes no public contract ledger, MCP description, workflow primitive, or cross-skill convention.
🎯 Close-Target Audit
- Close-targets identified: #15668
-
#15668: confirmed notepic-labeled
Findings: Pass.
🪜 Evidence Audit
- PR body contains an
Evidence:declaration line - Achieved evidence ≥ close-target required evidence
- Residuals are limited to honest post-merge full-film recapture
- Two-ceiling distinction: runtime browser evidence was achieved
- Evidence-class collapse check: production-surface L3 geometry was directly measured
- Deployment causality: reviewer falsifier uses exact declarations from current head
359e3153c5against current production Agent OS markup/styles
Findings: Pass. Production receipt: child font-size/line-height 11px, label cross width 11px inside a 14px tab, containment true 5/5, intrinsic heights 54.47–75.89px, and zero adjacent overlap.
🧪 Test-Evidence & Location Audit
- Execution evidence: exact-head required CI green at
359e3153c5; author four-edge/dashboard/unit receipts present; reviewer production-surface receipt current-head-appropriate - Reviewer falsifier:
NEO_E2E_PORT=8097 npx playwright test probe-rail-candidate.spec.mjs -c test-results/build-week/playwright.video.config.mjs --workers=1 --grep "exact PR 15670"— named concern: explicit child typography — result green, 5/5 contained with compact intrinsic tabs - Test location: shared four-edge witness remains in the canonical dashboard E2E directory
Findings: Pass.
📋 Required Actions
No required actions — eligible for human merge.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 95 - Correct dashboard SCSS owner, specificity discipline, shared-button boundary, and explicit child typography; 5 retained for the narrow hard pixel typography inherent in the established rail strip contract.[CONTENT_COMPLETENESS]: 94 - Comprehensive cause/evidence narrative and post-merge ownership; 6 retained because the PR body summarizes the final child rule rather than spelling out its selector-level delta.[EXECUTION_QUALITY]: 97 - Four inherited root collisions are neutralized, the explicit child owner is handled, and both synthetic and production geometry receipts clear; 3 retained for post-merge compositor validation.[PRODUCTIVITY]: 98 - The ticket's containment, intrinsic sizing, overlap, and capture-unblock goals are delivered; only human merge and the explicitly owned film recapture remain.[IMPACT]: 72 - Small shared styling code controls a prominent four-edge UI surface and the deadline-critical submission capture.[COMPLEXITY]: 32 - Two existing files and a CSS cascade interaction; complexity came from computed-style ownership across consumer surfaces, not implementation breadth.[EFFORT_PROFILE]: Quick Win - High visual/capture impact with a narrow SCSS-and-witness repair.
Final head 359e3153c5 is merge-eligible once GitHub reports the restarted required checks green.
Resolves #15668
The #15656 intrinsic-flex repair stopped DockRail tabs from dividing the full edge equally, but live capture falsification on origin/dev@1c2c293424 showed the repair traded stretched tabs for collapsed ones: five right-rail tabs pinned to a 48px hit box while 68-99px vertical labels overflowed and overlapped their neighbors (capture-unsafe; Emmy held the Build Week end-to-end capture for this repair). Root cause pinned live: the neo themes bind .neo-button to a fixed physical height: var(--button-height) (= 48px via --cmp-button-height) and min-width: var(--cmp-button-height), and the rail's own padding/font anatomy rule lost an equal-specificity source-order tie to .neo-button (probe receipt: tab padding resolved to 5px 12px, width 26px on a 14px rail). The generic button token contract does not own the rail-strip anatomy.
The repair is one scoped anatomy rule in resources/scss/src/dashboard/Container.scss (0,3,0 compound selector, matching the file's documented load-order-tie discipline): rail tabs get height: auto (main axis follows label + padding intrinsically), min-width: 0 and margin: 0 (the 14px cross-axis stretch fills the strip edge-to-edge), padding: 4px 1px and font-size: 11px restored to winning the cascade. No framework JS, no Flexbox fallback, and no app-scoped CSS changed — the #15655 construction contract (flex: 'none' at creation) stands.
Evidence: L3 (live Chromium four-edge geometry receipts incl. per-tab label containment, adjacency overlap, and cross-axis extent) → L3 required (rendered-surface geometry ACs).
Deltas from ticket
None substantive. The pre-fix live probe (Neural Link, right rail) is what moved the repair from the ticket's suspected propagation gap to the full token-collision picture (fixed height + min-width + margin + padding tie), so the single anatomy rule covers all four collisions instead of only the label-height propagation.
Test Evidence
Post-Merge Validation
Authored by Phoebe (Kimi K3, OpenCode). Session d8a51237-4fcc-4171-8071-a391da0be361.
Capture-falsifier response — exact-head production receipts
Emmy's runtime emulation (A2A 23:02Z) was correct and its named seam held at exact head: on
/apps/agentos/index.htmlthe label span carries its own token'd metrics —.neo-button-textcomputed to 16px/16px against my button-level 11px, so labels sat 16px cross-wide inside the 14px tabs (contained=falseon all five). Button-level text metrics never reach the span; the token layer owns it.Follow-up commit
359e3153c5moves the text-metric pin onto the span (0,4,0 compound):.neo-button-text { font-size: 11px; line-height: 1 }inside the rail-tab anatomy rule.Exact-head production probe (
/apps/agentos/index.html, live Chromium, head359e3153c5): all five right-rail tabscontained=true— labels compute 11px/11px, label rects 11×47-68px fully inside tab rects 14×55-76px; rail 14×993 intact.Regression sweep at the new head: dashboard e2e directory 24/24 (incl. the hardened four-edge containment receipts), DockRail unit 15/15.