| name | plan-review-handoff-verification |
| description | Verify a parked GitHub issue plan-review handoff across live labels, local markers, README rows, canonical review artifacts, and stale plan-body evidence before reporting next action. |
| version | 1.0.0 |
| author | Hermes Agent |
| category | workspace-hub-learned |
| tags | ["github","planning","handoff","governance","verification"] |
| related_skills | ["issue-planning-mode","plan-exit-governance-drift-handoff","plan-review-artifact-authority-and-approval-drift"] |
Plan-review handoff verification
Use this when a user provides or references an exit handoff for a GitHub issue parked in status:plan-review, especially after iterative adversarial review and approval-state drift cleanup.
Workflow
- Load the canonical planning skill (
issue-planning-mode) first.
- Read the handoff file and extract the asserted state surfaces:
- GitHub issue state and
status:* labels
.planning/plan-approved/<issue>.md marker state
docs/plans/README.md row status
- canonical provider review artifact paths and verdicts
- stated clean next action / do-not-do guidance
- Verify the live GitHub state with
gh issue view <issue> --json state,labels,title,url.
- Verify the local approval marker presence/absence.
- Search
docs/plans/README.md for the issue row and confirm the row status and note match the intended parked state.
- Read or scan the canonical
scripts/review/results/*plan-<issue>-<provider>.md artifacts and extract each verdict.
- Read the local plan header and scan the plan body for stale older rerun evidence (for example a review-artifacts line still saying
r11 MAJOR while canonical artifacts now say r16 MINOR).
- Report the operational state and next valid action. Do not implement, approve, recreate approval markers, or rewrite broad plan content unless the user explicitly asks.
Classification rules
- Operational surfaces are, in order: live GitHub status labels, local approval marker,
docs/plans/README.md row, canonical review artifacts.
- If those surfaces align to
status:plan-review with no approval marker and no fresh MAJOR verdicts, classify the issue as parked/exit-clean for user review.
- If the local plan header/body contains stale historical evidence while the operational surfaces are aligned, report it as non-blocking polish/drift. Do not treat it as approval or implementation authority.
- If a stale approval marker or
status:plan-approved label remains after fresh review evidence says the issue is back in review, perform the governance cleanup from issue-planning-mode instead of merely noting it.
Minimal verification command pattern
Use one script to reduce missed surfaces:
from hermes_tools import terminal, search_files, read_file
import os, json, re
issue = 2460
state = terminal(f"gh issue view {issue} --json state,labels,title,url", timeout=60)
marker_exists = os.path.exists(f".planning/plan-approved/{issue}.md")
readme = search_files(str(issue), target="content", path="docs/plans/README.md", output_mode="content")
for provider in ["claude", "codex", "gemini"]:
path = f"scripts/review/results/2026-04-23-plan-{issue}-{provider}.md"
Then separately scan the plan file for stale older strings such as MAJOR, UNAVAILABLE, or older rerun IDs when the latest artifacts have advanced.
Output pattern
State the result as:
- GitHub issue state and live status labels
- Local approval marker state
- README row state
- Provider artifact verdicts
- Local plan file/header state
- Conclusion: exit-clean vs drift found
- Next valid action and prohibited action
Keep the response short and explicit: if parked for user approval, say no implementation should start yet.