Skip to content

Plan integration 7: Add the Web architect journey #14

Closed

Description

@NetDevAutomate

Parent

What to build

Add a Plan with architect journey to the Plans view using the existing live console, while retaining the complete manual form as a fallback.

Acceptance criteria

  • The Plans view exposes a clear Plan with architect action.
  • Successful launch navigates to the existing live console and labels planning purpose correctly.
  • The architect receives interview questions, evidence seeds, existing-plan summaries, and optional brain dump.
  • Refresh and reconnect preserve planning-purpose context.
  • The manual create/edit/checkpoint interface remains fully functional.
  • Exactly one addressed console and WebSocket handle the planning session.

Blocked by

Definition of Done

  • Browser tests cover launch, fallback, conflict, reconnect, cancellation, and structured errors.
  • A representative journey proves that no plan exists before the interview creates one.
  • Accessibility, loading, empty, and failure states follow existing Web conventions.
  • No duplicate terminal, ACP listener, or WebSocket is mounted.
  • Web UI documentation and normative requirements are updated.

Activity

  1. added
    ready-for-agentImplementation-ready specification with settled requirements and test seams
    on Sep 4, 2026
  2. NetDevAutomate commented on Sep 18, 2026

    @NetDevAutomate
    OwnerAuthor

    Status: met. Two rows the draft of 2026-09-16 left open — the brain-dump handoff and the abandon-mid-flight test — were closed by follow-on item 2 (owner decision D-B) and by the owner's abandonment-contract decision of 2026-09-18. Source: docs/architecture/plan-integration/receipts/issue-closeout-draft-2026-09-16.md, re-verified against main at a5b9f903. Legend as on #8; test_web_plan_architect_journey.py is e2e-marked (12 browser tests today).

    Acceptance criterion Met Evidence
    The Plans view exposes a clear Plan with architect action yes T: test_web_plan_architect_journey.py::test_plan_with_architect_action_posts_purpose_planning_and_navigates_to_console (Playwright, real server, fake agent; C: 7ad39941)
    Successful launch navigates to the existing live console and labels planning purpose correctly yes ::test_console_is_labelled_planning_and_label_survives_reconnect; UAT architect_launch label "Planning session — study-plan architect"
    The architect receives interview questions, evidence seeds, existing-plan summaries, and optional brain dump yes ::test_brief_structure_present_not_wording; ::test_brain_dump_reaches_the_architect_persona (browser: the textarea's text is posted as brain_dump, arrives in the persona as ### Learner's brain dump, quoted line by line, never the topic, absent from GET /api/session/state); T: test_session_start_purpose.py::TestBrainDump (contained section, paragraphs kept, clipped with a marker, over-limit 422, focus start ignores it); tests/js/plan-architect-launch.test.js. The manual form's dump is still never decomposed by StudyLoop (docs/study-plans.md, beside the boundary list)
    Refresh and reconnect preserve planning-purpose context yes the visible label after reload: ::test_console_is_labelled_planning_and_label_survives_reconnect; the persisted purpose after reload: UAT architect_launch asserts GET /api/session/state.purpose post-reload
    The manual create/edit/checkpoint interface remains fully functional yes for create and checkpoints; edit is not a Web UI control ::test_manual_new_plan_form_still_works; T: test_web_plans.py (27, protected) for the routes. The Web UI's plan view offers create, activate, milestone checkboxes and preview/record checkpoints; it has no edit-fields control — field revision is the Web API's PATCH (which since 2026-09-17 includes the mission) and the MCP update_study_plan. The checkpoint buttons are covered at the route level, not in a browser
    Exactly one addressed console and WebSocket handle the planning session yes ::test_one_console_one_websocket; tests/js/plan-architect-launch.test.js (one POST, one study-session-start, init() twice still one listener)

    DoD. Browser tests cover launch, fallback, conflict, reconnect, structured errors, abandonment and the pending-launch contract: ::test_abandoning_a_launch_mid_flight_leaves_no_session_and_no_plan ends the session through the console's End control as soon as the 201 lands (no live slot, no plan, no label, one start event, at most one WebSocket), and ::test_leaving_before_the_launch_lands_leaves_a_session_like_any_other (owner decision 2026-09-18, option b) holds the start POST while the learner navigates away, releases it, and proves the session exists, reattaches on return and is released by End — leaving never destroys, End abandons, there is no cancel for a pending launch (S: web-ui, design §2 rewritten with the retraction). The planning click's wait for the picker's options is bounded at 8 s (review-6 F3, C: 97efcc4a). Accessibility: aria-busy, aria-describedby, role="status" aria-live="polite", screen-reader label on the subject input, visible label on the brain-dump textarea (not audited with a screen reader). The one-question-at-a-time protocol is persona-text-verified by owner decision D-B: every journey uses the fake agent, which proves delivery of the brief, not model adherence.

    Landed via #20 (2026-09-17) and #22 (2026-09-18). Closing.

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

    ready-for-agentImplementation-ready specification with settled requirements and test seams

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions