diff --git a/plugins/plan-lifecycle/agents/plan-reviewer.md b/plugins/plan-lifecycle/agents/plan-reviewer.md index 7a3ad319..7b9ea575 100644 --- a/plugins/plan-lifecycle/agents/plan-reviewer.md +++ b/plugins/plan-lifecycle/agents/plan-reviewer.md @@ -21,9 +21,11 @@ lifecycle change. A plan-review finding is exactly one of `goal_fit`, `research_gap`, or `security_risk`; nothing else is a finding. A sufficient plan passes. Report a `goal_fit` finding when the plan uses a temporary workaround instead of the root-cause fix, leaves a caller on a replaced path, or keeps an obsolete path, unless Open questions record user approval. +Report a `goal_fit` finding when Acceptance lacks a check that the repository instructions require for the paths in the Steps Files cells. Perform one review invocation and return one verdict. Never demand style, naming, formatting, line counts, more citations, additional probes, mutation -tests, extra acceptance rows, cosmetic work, or restructuring for its own sake. +tests, acceptance rows beyond the checks that repository instructions require, +cosmetic work, or restructuring for its own sake. ## Workflow diff --git a/plugins/plan-lifecycle/skills/productivity/plan-manager/SKILL.md b/plugins/plan-lifecycle/skills/productivity/plan-manager/SKILL.md index 6a1f05ae..64857070 100644 --- a/plugins/plan-lifecycle/skills/productivity/plan-manager/SKILL.md +++ b/plugins/plan-lifecycle/skills/productivity/plan-manager/SKILL.md @@ -5,7 +5,7 @@ user-invocable: true metadata: pattern: tool-wrapper updated: "2026-10-19" - content_hash: "243b9e9f8f3a8755b28f902d400f4e0de2bf40f46d42ea6a4530e44f2ec5d6d8" + content_hash: "bb1ee37a5ff78641994eb70b3c785307086998dd40a97623a9700e47d24837ca" --- # Plan Manager diff --git a/plugins/plan-lifecycle/skills/productivity/plan-manager/references/plan-contract.md b/plugins/plan-lifecycle/skills/productivity/plan-manager/references/plan-contract.md index d48307a2..12b3bd3c 100644 --- a/plugins/plan-lifecycle/skills/productivity/plan-manager/references/plan-contract.md +++ b/plugins/plan-lifecycle/skills/productivity/plan-manager/references/plan-contract.md @@ -67,11 +67,15 @@ Use these table headers: ``` Each Steps row describes one bounded task. `#` is its display number. `Id` is -its durable command identifier. `Files` defines scope. `Depends` is `-` or +its durable command identifier. `Files` defines scope as comma-separated +repository-relative paths; a path can be in backticks. `Depends` is `-` or comma-separated display numbers or ids. The helper resolves ids to display -numbers on write. `Done when` names observable completion, not activity. -Acceptance rows identify a command and its expected result. They cover the goal, -not just individual steps. Use repository-relative paths and portable commands. +numbers on write. Two steps that list the same path need a Depends chain +between them, or one of them must own the shared edit. `Done when` names +observable completion, not activity. Acceptance rows identify a command and its +expected result. They cover the goal, not just individual steps. Acceptance also +holds one row for each check that the repository instructions require for the +paths in Files. Use repository-relative paths and portable commands. | Token | Meaning | |---|---| @@ -115,6 +119,9 @@ may move to any open status. After it starts, only ongoing and blocked are legal targets. Status writes repair phase labels. Blocked requires a single-line reason at the start of Open questions. Leaving blocked removes that line. +`planned` and `ongoing` require a filled Research section. The trimmed section +must not be empty and must not equal `_Not researched yet._`. + An open plan must be ongoing for `step`. Its done and skipped steps are immutable. Other open step transitions are free. A finished plan permits only done or skipped targets for terminal repair. To move a step of a finished plan to another status, reopen the issue first. Other closed plans do not permit step transitions. @@ -150,6 +157,12 @@ Run this review loop for plan review and for code review: without a relevant change. If no answer is available, record the reason and block. A yolo run uses the round ceiling in Yolo runs instead. +A plan pass covers the body that the reviewer read. After `plan=pass`, an edit +that changes Goal, Research, Steps, Acceptance, or Do not touch needs a new +plan-review round before you write code that depends on the change. Edits to +Verification Results or Open questions, and `step` state changes, need no new +round. + Record user-only decisions in Open questions. Do not invent approval. The helper finds review records in comments with these rules. The reviewer @@ -202,7 +215,9 @@ Scratch lives at `git rev-parse --git-path docks-review`, with directory mode 0700. Export writes the body and a `.origin` sidecar containing its sha256 hex plus newline, with sidecar mode 0600. The digest detects staleness; it grants no permission. Edit validates provenance, normalizes the file, applies the freeze, -and refreshes the sidecar before the remote write. Re-export after remote changes. +writes the remote body, and then refreshes the sidecar. A failed remote write +leaves the sidecar unchanged, so the same file stays valid for a retry. +Re-export after remote changes. Keep scratch and machine paths out of durable records. No queue file is tool input. ## Normalization, advice, and refusals @@ -217,9 +232,12 @@ rewrite never drops the row. Once work has started, `edit` also refuses while the current record holds such a row. A duplicate or unknown `##` heading blocks every body write; a retired `## Review` heading is dropped on the next write. An explicit `--mode` on `new` outranks any Mode line inside `--goal`; otherwise the last unfenced, unindented Mode line in Goal is the decision. Advice prints `advice: ` on stdout and exits 0. It covers absolute machine -paths, `_Not researched yet._` after drafting, defaulted Mode, unknown Effect or -Status, an unfinished dependency when a step moves to in-flight or done, and -every non-local Effect as an in-session permission reminder. A machine path +paths, a Research section that holds only `_Not researched yet._` after drafting, +defaulted Mode, unknown Effect or Status, an unfinished dependency when a step +moves to in-flight or done, two steps that share a Files path with no Depends +chain, an `edit` that changes Goal, Research, Steps, Acceptance, or Do not touch +after a trusted plan pass, and every non-local Effect as an in-session +permission reminder. A machine path points into a user or root home, a mount, a named temporary or runtime directory, a Windows drive, or a network share. Its advice is `body contains an absolute machine path: `, once per distinct path. @@ -240,6 +258,7 @@ stale export: was exported from a superseded body; run `plan.mjs export < step state is frozen once work starts: plan # is closed; status applies to open plans illegal plan status transition: -> +status requires a filled Research section illegal step status transition: -> plan # is finished; reopen it before moving step to plan status is ; expected ongoing @@ -258,6 +277,24 @@ blocked status requires --reason as single-line text reserved label namespace: