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 5: Add MCP progression and deletion #12
Let an MCP agent progress milestones, preview or record evidence checkpoints, and explicitly delete a plan without unsafe retry or partial-success behavior.
Acceptance criteria
Register set_study_plan_milestone, evaluate_study_plan, and delete_study_plan.
Milestone changes accept an explicit done value and remain idempotent under retries.
Evaluation distinguishes preview from record and accepts an optional study identifier.
Partial checkpoint writes return explicit warnings and never claim complete recording.
Deletion requires explicit confirmation and retains checkpoint history.
Status: met on the evidence below, with one disclosed limit. Source: docs/architecture/plan-integration/receipts/issue-closeout-draft-2026-09-16.md, re-verified against main at a5b9f903 (2026-09-18). Legend as on #8.
C: b1e11e78; the stdio smoke asserts exactly 32 tools with the nine
Milestone changes accept an explicit done value and remain idempotent under retries
yes
test_mcp_plan_tools.py retry-idempotent pins; UAT mcp_lifecycle sets milestone 0 done over stdio and the document reads - [x] **OVER clause**
Evaluation distinguishes preview from record and accepts an optional study identifier
yes
test_mcp_plan_tools.py: preview writes nothing / record reports both sinks; T: test_plan_journey_combined.py step 4 (preview: both sinks not_requested, document bytes unchanged); UAT mcp_lifecycle (record: both saved, recording_complete). Since 2026-09-18 the same preview path (assess(phase="end", record=False)) is what the now engine's closing review reads (follow-on item 4)
Partial checkpoint writes return explicit warnings and never claim complete recording
yes, in-process
test_mcp_plan_tools.py failed-sink responses (recording_complete: false + warning) — a successful evaluation with incomplete recording, not a refusal. Not exercised over the real stdio transport: the failing sink is a monkeypatched writer the subprocess cannot receive; a wire-level test would need a product-side fault hook, which nobody has authorised. The wire shape is the same to_json_dict() the in-process test pins
Deletion requires explicit confirmation and retains checkpoint history
yes
test_mcp_plan_tools.py; T: test_plan_journey_combined.py (refused without confirmed=True, document present; confirmed delete → Web 404)
DoD.record_plan_learning folded onto _plan_tool_error (not_ready: prefix — an intentional, reported wording change); docs/agent-install.md examples use the retry-safe operations.
Landed via #20 (2026-09-17). Closing with the stdio limit recorded above.
Activity
feat(web): ACP agent_chunk → term.write + turn_end marker (Phase 2 PR-D)
refactor(mcp): record_plan_learning applies RevisePlan(learning_recor…
feat(mcp): six study-plan tools as thin adapters over the seam (T3.7)
docs(spec): mcp-server delta — study-plan discovery and authoring tools
docs(plan-integration): tick T3.6/T3.7 with commits, RED evidence and…
docs(council): brief for code review 3 — Phase 3 (#10 ∥ #11 ∥ #13a) at …
docs(spec): review-3 corrections — browse order, empty plan_id, rende…
test(mcp): RED — get_next_action accepts interleave, validated, forwa…
test(persona): RED — architect persona must name the nine MCP plan to…
feat(persona): architect prefers the nine MCP plan tools, shells out …
docs(council): brief for code review 4 — Phase 4 (#12 three MCP tools…
test(phase4): exact nine-in-registry pin, real in-process inventory t…
docs(closeout): draft the #7–#15 close-out — every criterion mapped t…
docs(closeout): refresh the #7–#15 close-out DRAFT after review 5, th…
NetDevAutomate commentedon Sep 18, 2026
Status: met on the evidence below, with one disclosed limit. Source:
docs/architecture/plan-integration/receipts/issue-closeout-draft-2026-09-16.md, re-verified againstmainata5b9f903(2026-09-18). Legend as on #8.set_study_plan_milestone,evaluate_study_plan,delete_study_planC: b1e11e78; the stdio smoke asserts exactly 32 tools with the ninetest_mcp_plan_tools.pyretry-idempotent pins; UATmcp_lifecyclesets milestone 0 done over stdio and the document reads- [x] **OVER clause**test_mcp_plan_tools.py: preview writes nothing / record reports both sinks;T: test_plan_journey_combined.pystep 4 (preview: both sinksnot_requested, document bytes unchanged); UATmcp_lifecycle(record: bothsaved,recording_complete). Since 2026-09-18 the same preview path (assess(phase="end", record=False)) is what thenowengine's closing review reads (follow-on item 4)test_mcp_plan_tools.pyfailed-sink responses (recording_complete: false+ warning) — a successful evaluation with incomplete recording, not a refusal. Not exercised over the real stdio transport: the failing sink is a monkeypatched writer the subprocess cannot receive; a wire-level test would need a product-side fault hook, which nobody has authorised. The wire shape is the sameto_json_dict()the in-process test pinstest_mcp_plan_tools.py;T: test_plan_journey_combined.py(refused withoutconfirmed=True, document present; confirmed delete → Web 404)DoD.
record_plan_learningfolded onto_plan_tool_error(not_ready:prefix — an intentional, reported wording change);docs/agent-install.mdexamples use the retry-safe operations.Landed via #20 (2026-09-17). Closing with the stdio limit recorded above.