Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,314 @@
{
"kind": "planning-execplan/v1",
"title": "Epic candidate-lane promotion guardrail",
"execplan_profile": {
"schema": "execplan-profile/v1",
"task_shape": "bounded",
"required_core": [
"kind",
"title",
"canonical_core",
"goal",
"non_goals",
"active_milestone",
"validation_commands",
"completion_criteria"
],
"optional_sections": [
"intent_continuity",
"intent_interpretation",
"execution_bounds",
"stop_conditions",
"context_budget",
"delegated_judgment",
"post_decomposition_delegation"
],
"projection_rule": "canonical_core is authoritative for intent, scope, next action, proof, continuation, and closeout; legacy fields remain compatibility projections."
},
"canonical_core": {
"requested_outcome": "GitHub #1215",
"hard_constraints": "Keep scope bounded to the promoted TODO item and its stated touched paths.",
"agent_may_decide": "Bounded decomposition, touched-path narrowing, validation tightening, and plan-local residue routing.",
"escalate_when": "A better-looking fix changes the requested outcome, owned surface, time horizon, or meaningful validation story.",
"next_action": "Fill in execution bounds, touched paths, and validation before implementation starts.",
"proof_expectations": [
"uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace"
],
"touched_scope": [
"closeout scope recorded in closure_check and generated_closeout."
],
"completion_criteria": [
"Epic candidate-lane promotion guardrail is implemented, validated, and closed out honestly."
],
"continuation_owner": "none",
"closeout_decision": "archive-and-close"
},
"goal": [
"GitHub #1215"
],
"non_goals": [
"Leave adjacent backlog or follow-on work out of this plan."
],
"machine_readable_contract": {
"intent": {
"outcome": "GitHub #1215",
"constraints": "Keep scope bounded to the promoted TODO item and its stated touched paths.",
"latitude": "Bounded decomposition, touched-path narrowing, validation tightening, and plan-local residue routing.",
"escalation": "Escalate when a better-looking fix changes the requested outcome, owned surface, time horizon, or meaningful validation story.",
"proof": "uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace"
},
"execution": {
"milestone": "epic-promotion-guardrail",
"status": "active",
"next_step": "Fill in execution bounds, touched paths, and validation before implementation starts.",
"proof": "uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace"
},
"scope": {
"touched": [
"closeout scope recorded in closure_check and generated_closeout."
],
"invariants": [
"Preserve the planning contract and keep the work bounded to this plan."
]
}
},
"intent_continuity": {
"larger intended outcome": "GitHub #1215",
"this slice completes the larger intended outcome": "yes",
"continuation surface": "none"
},
"required_continuation": {
"required follow-on for the larger intended outcome": "no",
"owner surface": "none",
"activation trigger": "none"
},
"iterative_follow_through": {
"what this slice enabled": "none yet",
"intentionally deferred": "none",
"discovered implications": "none yet",
"proof achieved now": "yes; planning closeout recorded explicit proof input.",
"validation still needed": "current milestone validation remains pending",
"next likely slice": "continue the current milestone until the completion criteria are met"
},
"intent_interpretation": {
"literal request": "Epic candidate-lane promotion guardrail",
"inferred intended outcome": "GitHub #1215",
"chosen concrete what": "Fill in execution bounds, touched paths, and validation before implementation starts.",
"interpretation distance": "low",
"review guidance": "Confirm the scaffolded plan still matches the promoted item before broad implementation."
},
"execution_bounds": {
"allowed paths": "closeout scope recorded in closure_check and generated_closeout.",
"max changed files": "closed slice; no further writes expected without reopening a fresh plan.",
"required validation commands": "uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace",
"ask-before-refactor threshold": "Ask before broadening beyond the promoted item.",
"stop before touching": "Unrelated backlog, adjacent modules, or canonical contracts not named by this plan."
},
"stop_conditions": {
"stop when": "The work no longer matches the promoted item or its completion criteria.",
"escalate when boundary reached": "A correct fix requires changing the requested outcome or ownership boundary.",
"escalate on scope drift": "Implementation needs files outside the filled execution bounds.",
"escalate on proof failure": "The selected proof cannot demonstrate the completion criteria."
},
"context_budget": {
"live working set": "This execplan, the promoted item, and the narrow files needed for the current implementation step.",
"recoverable later": "Repo background, historical reviews, and deferred backlog unless compact outputs point there.",
"externalize before shift": "Update execution_run, proof_report, finished_run_review, and closeout_distillation before pausing.",
"pre-work config pull": "Use compact config/startup/summary outputs before opening raw planning or routing files.",
"pre-work memory pull": "Route to the narrowest relevant memory only when the task needs durable repo knowledge.",
"tiny resumability note": "Fill in execution bounds, touched paths, and validation before implementation starts.",
"context-shift triggers": "Proof failure, scope drift, interruption, handoff, or closeout."
},
"delegated_judgment": {
"requested outcome": "GitHub #1215",
"hard constraints": "Keep scope bounded to the promoted TODO item and its stated touched paths.",
"agent may decide locally": "Bounded decomposition, touched-path narrowing, validation tightening, and plan-local residue routing.",
"escalate when": "A better-looking fix changes the requested outcome, owned surface, time horizon, or meaningful validation story."
},
"post_decomposition_delegation": {
"status": "recorded",
"decision rule": "After this slice is bounded, decide whether direct work, read-only exploration, implementation handoff, validation handoff, or stronger review improves quality or saves tokens safely.",
"route candidates": "keep-local|delegate-exploration|delegate-implementation|delegate-validation|escalate-review|no-safe-route",
"required evidence": "slice id, route, reason, quality risk, token-saving class, read-first refs, write scope, proof burden, stop conditions, and return contract",
"route chosen": "keep-local",
"route skipped reason": "Single bounded routing change needs local integration across start and implement surfaces; delegation would add handoff overhead without reducing proof burden.",
"decision command": "agentic-planning delegation-decision",
"planning revision observed": "76e1a176029a371b",
"recorded at": "2026-05-29T14:36:51+00:00"
},
"system_intent_alignment": {
"relevant system intent": "Preserve the larger intended outcome separately from this bounded slice.",
"slice shaping bias": "Keep the slice bounded while carrying any larger follow-on through explicit continuation fields.",
"broader-lane validation question": "Did this slice advance the declared larger outcome, or only complete the local task?",
"intent evidence source": ".agentic-workspace/docs/system-intent-contract.md"
},
"references": [
{
"kind": "source",
"target": "GitHub #1215",
"label": "GitHub #1215",
"role": "intake",
"locator": ""
}
],
"active_milestone": {
"id": "epic-promotion-guardrail",
"status": "completed",
"scope": "Keep this execution thread bounded to the promoted TODO item.",
"ready": "ready",
"blocked": "none",
"optional_deps": "none"
},
"immediate_next_action": [
"Fill in execution bounds, touched paths, and validation before implementation starts."
],
"blockers": [
"None."
],
"touched_paths": [
"closeout scope recorded in closure_check and generated_closeout."
],
"invariants": [
"Preserve the planning contract and keep the work bounded to this plan."
],
"validation_commands": [
"uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace"
],
"required_tools": [
"None."
],
"completion_criteria": [
"Epic candidate-lane promotion guardrail is implemented, validated, and closed out honestly."
],
"execution_run": {
"run status": "completed",
"executor": "agentic-planning closeout",
"handoff source": "agentic-planning new-plan",
"what happened": "Implemented Planning candidate pressure and issue-scope evidence in start/implement planning safety. Broad or lane-shaped work with open roadmap/decomposition candidates now blocks for lane promotion or decomposition, while bare issue refs without cached external evidence are marked high-risk unknown instead of silently bounded.",
"scope touched": "Workspace runtime routing and start/implement CLI guardrail tests.",
"changed surfaces": "src/agentic_workspace/workspace_runtime_primitives.py; tests/test_workspace_start_preflight_cli.py; tests/test_workspace_implement_cli.py",
"validations run": "uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace",
"result for continuation": "bounded closeout complete",
"next step": "archive this execplan"
},
"finished_run_review": {
"review status": "complete",
"scope respected": "Scope stayed inside routing projection and tests; existing direct-work paths remain clear unless Planning evidence or issue-scope uncertainty applies.",
"proof status": "passed",
"intent served": "yes",
"config compliance": "used planning closeout command-owned writer",
"misinterpretation risk": "low",
"follow-on decision": "none"
},
"delegation_outcome_feedback": {
"route chosen": "keep-local",
"route skipped reason": "Single bounded routing change needs local integration across start and implement surfaces; delegation would add handoff overhead without reducing proof burden.",
"expected savings": "unknown",
"actual friction": "none recorded",
"proof result": "yes; planning closeout recorded explicit proof input.",
"quality concern": "none recorded",
"decomposition adjustment": "none"
},
"proof_report": {
"validation proof": "uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace",
"proof achieved now": "yes; planning closeout recorded explicit proof input.",
"evidence for \"proof achieved\" state": "uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace"
},
"intent_satisfaction": {
"original intent": "GitHub #1215",
"was original intent fully satisfied?": "yes",
"evidence of intent satisfaction": "uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace",
"unsolved intent passed to": "none"
},
"execution_summary": {
"outcome delivered": "AW now makes epic candidate-lane promotion hard to miss before broad implementation and exposes issue-ref scope uncertainty.",
"validation confirmed": "uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace",
"follow-on routed to": "none",
"post-work posterity capture": "archive closeout distillation",
"knowledge promoted (memory/docs/config)": "none",
"resume from": "archive",
"knowledge promoted (Memory/Docs/Config)": "none"
},
"durable_residue": {
"status": "none",
"learned constraint": "No future-relevant learning was identified beyond the closeout evidence.",
"motivation worth preserving": "Closeout reviewed durable residue and found no live follow-up.",
"canonical owner now": "archive",
"promotion trigger": "none",
"retention after promotion": "retain"
},
"task_intent_promotion": {
"decision": "do-not-promote",
"accepted values": "do-not-promote|memory|subsystem-intent|system-intent|refine-existing-intent|supersede-existing-intent",
"evidence source": "archive-plan --prepare-closeout",
"target scope": "archive",
"proposed durable intent": "Closeout reviewed durable residue and found no live follow-up.",
"confidence": "low",
"needs review": true,
"owner surface": "archive"
},
"closure_check": {
"closeout scope": "slice",
"slice status": "completed",
"larger-intent status": "closed",
"closure decision": "archive-and-close",
"why this decision is honest": "planning closeout accepted a slice claim with intent-status satisfied.",
"evidence carried forward": "uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace",
"reopen trigger": "None unless new evidence shows the closeout was incomplete."
},
"improvement_signal_review": {
"status": "not_checked",
"accepted statuses": "not_checked|signals_routed|signals_fixed|signals_dismissed|no_signal_found",
"guidance": "At closeout, report AW smoothness/helpfulness gaps, better-way signals, unused-feature reflections, and places AW could help more. Route each concrete signal to exactly one owner class unless explicitly split, or mark no_signal_found after checking.",
"source": "operating_posture",
"owner classes": [
"issue",
"Memory",
"Planning",
"docs/checks/contracts",
"direct fix",
"dismissed with reason"
],
"ordinary output cap": 3,
"signals found": [],
"signals fixed": [],
"signals routed": [],
"signals dismissed": [],
"next owner": "agent closeout reflection"
},
"closeout_distillation": {
"buckets": {
"discard": [
{
"summary": "No Memory, docs, or config promotion was needed for local execution detail.",
"owner": "discard",
"source": "execution_summary.knowledge promoted (Memory/Docs/Config)"
}
],
"continuation": [],
"memory": [],
"config_check": [],
"docs": [],
"issue_follow_up": []
}
},
"drift_log": [
"2026-05-29: Scaffolded by agentic-planning new-plan.",
"2026-05-29: Recorded delegation decision route=keep-local."
],
"memory_learning_capture": {
"status": "reviewed",
"memory consult recommended?": "review startup/report memory_consult",
"memory notes read": "not recorded",
"future agents should not rediscover": "no",
"decision": "none",
"target": "none",
"reason": "Derived from durable_residue during closeout preparation."
},
"generated_closeout": {
"status": "generated",
"source": "archive-plan --prepare-closeout",
"authority": "derived adapter; intent_satisfaction, closure_check, proof_report, durable_residue, execution_run, and execution_summary remain authoritative",
"text": "Generated closeout adapter; structured execplan fields are authoritative.\nIntent: GitHub #1215\nIntent satisfied: yes\nArchive decision: archive-and-close\nProof: uv run pytest tests/test_workspace_start_preflight_cli.py tests/test_workspace_implement_cli.py -q; make test-workspace; make lint-workspace\nChanged surfaces: src/agentic_workspace/workspace_runtime_primitives.py; tests/test_workspace_start_preflight_cli.py; tests/test_workspace_implement_cli.py\nDurable residue: none (archive)\nMemory learning: none\nFollow-up: none"
}
}
Loading