Skip to content

Plan integration 1: Centralize reads and activation #8

Closed

Description

@NetDevAutomate

Parent

What to build

Introduce the shared PlanApplication seam through a complete first slice: immutable plan reads and consistent readiness-gated activation from CLI and Web.

Acceptance criteria

  • Plan summaries and details are returned as immutable, serialization-ready views.
  • CLI and Web list, inspect, and activation paths use PlanApplication.
  • Create-and-activate, lifecycle activation, and imported active documents enforce identical readiness rules.
  • Markdown remains authoritative and index refresh remains best-effort and recoverable.
  • Domain failures contain no CLI, HTTP, or MCP types.

Blocked by

  • None (can start immediately).

Definition of Done

  • Existing plan behavior remains backward-compatible outside the readiness bypass being closed.
  • Application-interface and cross-surface activation parity tests pass.
  • Relevant existing CLI and Web plan tests pass.
  • Normative capability specs and public behavior documentation are updated.
  • The working tree contains no temporary artifacts and focused quality checks are green.

Activity

  1. added
    ready-for-agentImplementation-ready specification with settled requirements and test seams
    on Sep 4, 2026
  2. added 3 commits that reference this issue on Sep 17, 2026
  3. NetDevAutomate commented on Sep 18, 2026

    @NetDevAutomate
    OwnerAuthor

    Status: met on the evidence below. Source: docs/architecture/plan-integration/receipts/issue-closeout-draft-2026-09-16.md, re-verified against main at a5b9f903 (2026-09-18). Commit SHAs are those on main — the draft's pre-consolidation SHAs were rewritten and no longer resolve on origin. Evidence legend: T: pytest node id under packages/studyloop/tests/; R: receipt under docs/architecture/plan-integration/; C: commit on main; S: normative spec under openspec/specs/.

    Acceptance criterion Met Evidence
    Plan summaries and details are returned as immutable, serialization-ready views yes T: test_plan_application.py::test_views_are_immutable_and_json_fresh; PlanningBrief deep-freeze (review-1 F2, C: 3d9476d5)
    CLI and Web list, inspect, and activation paths use PlanApplication yes C: 1aed49f2 (web), C: 38f6f41d (cli); T: test_architecture_plan_seam.py (30) — 0 violations over the adapter modules; verify checks rg-plan-application-{cli,web-routes,mcp}
    Create-and-activate, lifecycle activation, and imported active documents enforce identical readiness rules yes T: test_plan_application.py::test_create_transition_replace_refusal_payload_is_identical; T: test_web_plans.py::test_create_refuses_an_active_status_on_an_unready_plan, ::test_markdown_replacement_refuses_an_unready_active_document (the Bug A RED, C: d7f568bf); T: test_plan_surface_parity.py::test_activation_refusal_is_identical_via_cli_and_web; review-1 F1 closed the compound-PATCH door (C: e50106af)
    Markdown remains authoritative and index refresh remains best-effort and recoverable yes T: test_plan_application.py::test_failed_index_refresh_keeps_the_document_and_reindex_recovers_the_row (the refresh raises → the document is saved and readable, the index has no row; reindex() writes it back, bytes untouched); T: test_cli_plan_seam.py::test_reindex_goes_through_the_seam; S: active-learning-decisions "Activation is readiness-gated on every entry path"
    Domain failures contain no CLI, HTTP, or MCP types yes planning/errors.py; T: test_cli_plan_seam.py (_fail_for maps the domain errors), T: test_web_plans_seam.py (status mapping in one place), T: test_mcp_plan_tools.py (_plan_tool_error)

    DoD. Protected suites test_web_plans.py, test_cli_plan.py, test_planning_evaluation.py are byte-identical to their pre-programme base (verify check protected-files-3a4f6b01); normative specs promoted at the archive of plan-application-seam (openspec validate --specs --all: 25 passed on main).

    Verification receipts. R: receipts/verify-69740be5.json — 29 required checks, 29 ok, exit 0 (the Phase-6 receipt); R: receipts/verify-d0251fd1.json — the latest, 31 registered checks, 30 ok; the one red is the sandbox full-suite run whose 44 failing ids are named on the receipt and are the recorded environmental set (R: receipts/full-suite-control-item4-2026-09-18.md). Council code reviews 1–6 all GATE: ACCEPT (R: council/review-1-arbitration-2026-09-15.md … review-6-arbitration-2026-09-18.md). CI on main at a5b9f903: 15/15 jobs green (run 35374196645).

    Landed via #20 (2026-09-17) and #22/#23 (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