Skip to content

planning: keep the question body visible when the note or conflict box grows #5913

Open

Description

@kyle-sexton

Severity: med

Problem

The answer panel is pinned at the bottom of the detail pane with no height limit: main.detail uses grid-template-rows:minmax(0,1fr) auto (index.html:175), and section.answer (index.html:241) has no max-height. grow() lets the note reach 40% of the window (index.html:1164). The max-height:800px rule (index.html:369) caps only .choices and fieldset.decide. With a long note, or with the conflict box open (renderConflict, index.html:1183), the scrollable body (#dscroll) shrinks to a strip, and the banners and recommendation drop off screen. On one audited question it was 142 px tall for 1254 px of content.

Expected

The question body always keeps a usable share of the pane (about half), and the answer panel scrolls within its own limit.

Suggested fix

  • index.html:175: change the rows to something like minmax(45%,1fr) minmax(0,auto), and give section.answer (index.html:241) a max-height with overflow-y:auto.
  • grow() (index.html:1164): cap the note against the answer panel's limit, not the window.
  • fix(planning): interview page visual audit follow-ups to #5569 #5795 lists the base height of the decide bar (374-435 px at 1440x900) as still reproducing; this issue is about unbounded growth.

Acceptance criteria

  • At 1280x800 with a 600-word note, the selected question's recommendation is visible without scrolling the body.
  • The conflict box does not shrink the body below the same minimum.

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 2, 2026
  2. kyle-sexton commented on Oct 4, 2026

    @kyle-sexton
    ContributorAuthor

    This was generated by AI during triage.

    Routing: delegable, agent-ready, work-class: scoped (C3, bug fix), priority: medium (assessed default).

    Verified against current code: confirmed.

    • The detail pane's rows are minmax(0,1fr) auto, so the answer panel takes whatever height it needs and the question body gets the rest, down to zero. Basis: verified, plugins/planning/surface/index.html:175.
    • section.answer has no max-height and no overflow rule. Basis: verified, index.html:241.
    • grow() lets the note reach 40% of the window height, not a share of the answer panel. Basis: verified, index.html:1164.
    • The only height cap is the max-height:800px media query, and it covers just the choices list and the decide fieldset. Basis: verified, index.html:369.

    Where I looked: the detail pane and answer panel styles, grow(), the conflict box renderer, and docs/out-of-scope/ (no match). No existing fix on main.

    Cluster check: none. #5795 (human-gated) covers the decide bar's base height and the choices list's nested scroller; this item covers only unbounded growth from the note and conflict box, and none of #5795's open decisions touches the body/panel split. The work-loop is dispatching #5815, #5908, #5910 and #5911 one at a time because they edit overlapping page code; this item and #5916 should join that serial order.

    Agent Brief

    Type: Bug
    Summary: The question body always keeps a usable share of the detail pane; the answer panel scrolls inside its own height limit when the note or the conflict box grows.

    Current behavior:
    The answer panel is pinned under the question body with no height limit. A long note (the textarea grows to 40% of the window) or an open conflict box pushes the panel up until the question body is a thin strip; the banners and the recommendation are off screen.

    Desired behavior:

    • The question body keeps at least about half of the detail pane's height whatever the answer panel holds.
    • The answer panel has a maximum height and scrolls internally past it; its Save control stays reachable.
    • The note textarea's auto-grow is capped against the answer panel's limit, not the window, and scrolls past it.
    • Short content looks as it does today: no new empty space when the note is short and no conflict is open.
    • Phone width and the short-viewport media query still work.

    Key interfaces:

    • The detail pane's grid rows and the answer panel's height and overflow rules.
    • grow(): its height cap.
    • The conflict box rendered inside the answer panel.

    Acceptance criteria:

    • At 1280x800 with a 600-word note, the selected question's recommendation is visible without scrolling the question body.
    • With the conflict box open, the question body is no shorter than the same minimum.
    • A UI test in the planning surface test suite asserts the body's minimum height with a long note and with the conflict box, and fails on the current layout.
    • The planning surface test suite passes.

    Out of scope:

  3. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 4, 2026
  4. kyle-sexton commented on Oct 4, 2026

    @kyle-sexton
    ContributorAuthor

    This was generated by AI during work-loop.

    Ratify autonomous dispatch of this C3 bug-fix item?

    Classification: work-class: scoped (C3), bug-fix-shaped (confirmed at triage this cycle). Intended dispatch: the work-loop worker lane, through /work-items:work, to a draft PR the lane never merges, serialized with the other interview-page fixes (#5815, #5908, #5910, #5911, #5913, #5916) because they edit overlapping page code. First drain is not complete and no item-level ratification exists, so it is queued here. Ratify through /work-items:attend-queue and it dispatches on a later cycle.

    Lane: work-loop, instance melo-worker-1, cycle 1.

  5. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    and removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Oct 4, 2026
  6. kyle-sexton commented on Oct 11, 2026

    @kyle-sexton
    ContributorAuthor

    Delivered on branch feat/planning-interview-page-batch in draft PR #7182, one commit for this issue (with Closes #5913).

    The question body keeps at least 45% of the detail pane; the answer panel scrolls inside the rest and the note's growth is capped.

    Verified: ui_page phase 8 at 1280x800 with a 600-word note and an open conflict box; it fails on the old layout (body share 0.25 and 0.06). The full surface.test.sh was last run in full before the final page commits; the later commits were checked with the ui_page phases. Its one standing failure (AC34 "user name found") is an environment artifact that also fails on main.

    Left for a human: the PR stays a draft until Kyle flips it to ready, which starts the CI and review lanes.

    The needs-human label was left for Kyle to clear.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions