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
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    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

    status: confirmedA maintainer confirmed the item is real and in scope; ready to be worked.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions