Skip to content

planning: interview web view, deferred review findings #7303

Closed
10 of 10 issues completed
Closed

Description

@kyle-sexton

Deferred findings from the UI, UX and developer-experience review of the /planning:interview web view (plugins/planning/surface/). Fixes from the same review merged in #7280, #7278 and #7301.

Waiting on #7269 (eval-first)

Page work for rules that need a failing eval case first:

  • Show the agent's read-back of each answer on the page; today it goes only to the collapsed Log, and the crux question on a rejected recommendation would land there too.
  • A field for the condition that would flip a recommendation; the basis sits behind "Why" and "Checked against" in collapsed Details.
  • Final confirmation as "confirm, or the numbers to change" instead of one-click Confirm with free-text "Something's off".
  • Reconcile page rule R-D (read-back asks no question) with eval case interview-readback-dictated-answer (expects a confirm). Review recommendation: follow the eval; after it fails on main, keep one shared rule in a context file, cut R-D to a pointer plus page mechanics, and add a one-click "Confirm reading" on the page. The eval runs without Bash, so the page needs its own test.

Partial: terminal permission prompt (UX-3)

The page can't tell that the terminal is waiting on a permission prompt. Since #7280 it says to approve any prompt in the terminal while no watcher has polled yet (listener.idleFor === null). A real fix needs the watcher or session to report a pending prompt.

Script interface (deferred)

  • DX-3: exit codes don't separate refusal, missing prerequisite, server start failure and --diff finding changes (all 1; missing curl is 1 from ensure-running, 2 from watch.sh).
  • DX-4: --dir after the subcommand works on 6 of 23 subcommands, though the help says it may.
  • DX-5: reading the wake payload takes a four-step parsing recipe.
  • DX-6: no JSON output on status, lease, doctor, validate.
  • DX-7: two write paths for the same operations (CLI subcommands that take user text, which the docs forbid, and ops through apply).
  • DX-8: round.sh accepts Python 2; its twin launcher checks for Python 3.
  • DX-9: server output goes to /dev/null, so a failed start reports no cause.
  • DX-10: --open fails silently when no browser resolves.
  • DX-11: stop picks the watcher by the data dir's last path component, which is interview-surface in every topic.
  • DX-13: surface.md restates README sections into agent context.
  • DX-14: help has no examples; apply --help doesn't name the ops.
  • DX-16: test-suite hygiene. DX-15 and DX-17 (file size, unused channel adapter) are informational.

UI polish (deferred)

  • UI-6: note placeholder carries instructions at 4.2:1 contrast.
  • UI-7: input and choice borders below 3:1.
  • UI-8: declared fonts never load (no @font-face; CSP allows same-origin only).
  • UI-9: heavy use of 10–12px uppercase mono labels.
  • UI-10: side-panel tabs have tab roles but no arrow-key behaviour.
  • UI-11: Pin shows on phone where it does nothing; header buttons under 24px.
  • UI-12: summary shows an empty decisions table.
  • UI-13: status pill flashes red "Connecting" on every load.
  • UI-14: plain Enter does nothing on Save-type buttons (deliberate for dictation; decide whether to keep).

Each item came from one reviewer pass; confirm before building.

🤖 Generated with Claude Code

https://claude.ai/code/session_01C8UZGiNHApTFuNQ9zKFKk3

Activity

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

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Large
    Complexity: Medium
    Uncertainty: Knowable
    Flags: none
    Blocked by: none

    Decision recorded. The owner approved applying independently verified recommendations on 2026-10-12.

    • How are the DX and UI polish items handled? → An agent re-verifies each item on main and fixes the confirmed ones in one or two PRs; unconfirmed ones are closed in the PR body
    • Keep plain Enter as a no-op on Save-type buttons (UI-14)? → Keep it
    • What happens to UX-3 (page cannot see a terminal permission prompt)? → Park until the watcher or session can report a pending prompt; keep the fix(planning): interview page answer controls, withheld questions, and apply idempotence #7280 hint

    [quote truncated; the full decision is at the link]

    #7303 (comment)

    This decision settles the open questions. What remains is a bundle of deferred DX and UI polish items. Each needs re-verifying on main, so the work is too large for one change and should be split. The eval-first page items wait on #9794 and #7269, and UX-3 stays parked. Slices #9795, #9796 and #9797 already cover some DX items.

    Automated triage, applied by the lanes App.

  3. added
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 12, 2026
  4. removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 12, 2026
  5. added theissue type on Oct 12, 2026
  6. kyle-sexton commented on Oct 13, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. The owner approved applying independently verified recommendations on 2026-10-12.

    Deferred UI, UX and DX review findings for the /planning:interview web view: eval-first items waiting on #7269, a terminal-prompt detection gap, about a dozen script-interface items and nine UI polish items. The issue says each came from one reviewer pass and must be confirmed before building.

    Verification notes:

    • UI-14 'keep it' rests on judgment about dictation; the issue itself leaves it open.

    Verified by an independent fresh-context check (confirmed, risk low): gh issue view 7303 (open, no owner decision; sections match record); gh issue view 7269: OPEN; gh pr view 7280: MERGED; origin/main plugins/planning/skills/interview/context/surface.md:203 (R-D read-back rule); git log plugins/planning/surface and interview (#7301, #7278, #7280 already cited by the issue); gh pr list: open #7182 covers other issues (#5801 etc.), not the DX/UI items; no PR references 7303

    Admission to an agent lane stays with the work-class rules and owner ratification.

  7. kyle-sexton commented on Oct 13, 2026

    @kyle-sexton
    MemberAuthor

    Owner batch-ratified this admission in an attended session on 2026-10-12: work-class: scoped. Rule: class C1-C3, no trust surface, the independent check confirmed the recorded decision, and no owner step remains.

  8. added
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    priority: lowNice-to-have, cosmetic, or speculative; opportunistic.
    and removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Oct 13, 2026
  9. 7 remaining items

  10. removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 24, 2026
  11. kyle-sexton commented on Oct 24, 2026

    @kyle-sexton
    MemberAuthor

    Released by the owner's HITL session (2026-10-24, C12): it waited only on removed gates (protected paths, attended-only pins, lane limits, sync allowlists). Split into sub-issues; intake triage re-runs on each slice to set its fields, then admission takes it.

    Earlier slices #8013, #8015, #8016, #8017 are closed. New slices:

    Still here, not sliced: the eval-first page items wait on the #9794 results (a rule lands only when its case fails on main); UX-3 stays parked per the 2026-10-12 decision; DX-15/16/17 are informational or too vague to brief.

  12. github-actions commented on Oct 25, 2026

    @github-actions
    Contributor

    The triage sweep dispatched intake triage for this issue (attempt 1 of 2).

  13. melodic-automation-lanes commented on Oct 25, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: Size large: every sub-issue is closed, but it is still open, so an item no sub-issue covers or a sub-issue's close keeps it from closing as a finished split (owner Q93). Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  14. added
    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 31, 2026
  15. kyle-sexton commented on Nov 2, 2026

    @kyle-sexton
    MemberAuthor

    Waiting on #12103. The eval-first gate this issue held for has cleared: #9794 ran all seven cases, and the rules it produced merged (#11187 read-back, #11188 confirm-or-numbers, #11190 flip condition). The page work they unblock is now #12103. Every other slice of this issue is closed (#8013, #8015-#8017, #9795-#9797). Once #12103 merges, the only item left is UX-3: the page cannot see a pending terminal permission prompt. It stays parked by the 2026-10-12 decision until the watcher or session can report a pending prompt, with the #7280 hint kept. When #12103 closes, move UX-3 to its own issue gated on that capability, then close this parent as a finished split. DX-15 and DX-17 are informational, and DX-16 is too vague to brief.

    This was generated by AI.

  16. kyle-sexton commented on Nov 2, 2026

    @kyle-sexton
    MemberAuthor

    Closing as a finished split.

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

    priority: lowNice-to-have, cosmetic, or speculative; opportunistic.status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions