You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Plan integration 1: Centralize reads and activation #8
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.
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
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.
Activity
feat(session): cascade picker finalisation + agent-native parity (§1.…
docs(closeout): draft the #7–#15 close-out — every criterion mapped t…
test(plans): a failed index refresh keeps the document; reindex() rec…
docs(closeout): refresh the #7–#15 close-out DRAFT after review 5, th…
NetDevAutomate commentedon Sep 18, 2026
Status: met on the evidence below. Source:
docs/architecture/plan-integration/receipts/issue-closeout-draft-2026-09-16.md, re-verified againstmainata5b9f903(2026-09-18). Commit SHAs are those onmain— the draft's pre-consolidation SHAs were rewritten and no longer resolve on origin. Evidence legend:T:pytest node id underpackages/studyloop/tests/;R:receipt underdocs/architecture/plan-integration/;C:commit onmain;S:normative spec underopenspec/specs/.T: test_plan_application.py::test_views_are_immutable_and_json_fresh;PlanningBriefdeep-freeze (review-1 F2,C: 3d9476d5)C: 1aed49f2(web),C: 38f6f41d(cli);T: test_architecture_plan_seam.py(30) — 0 violations over the adapter modules; verify checksrg-plan-application-{cli,web-routes,mcp}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)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"planning/errors.py;T: test_cli_plan_seam.py(_fail_formaps 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.pyare byte-identical to their pre-programme base (verify checkprotected-files-3a4f6b01); normative specs promoted at the archive ofplan-application-seam(openspec validate --specs --all: 25 passed onmain).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 allGATE: ACCEPT(R: council/review-1-arbitration-2026-09-15.md…review-6-arbitration-2026-09-18.md). CI onmainata5b9f903: 15/15 jobs green (run 35374196645).Landed via #20 (2026-09-17) and #22/#23 (2026-09-18). Closing.
openspec(active-learning-decisions): the nine inherit-shall units — t…