Define verifier continuation and explicit stop authority - #9
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2230c62c5f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| Include the continuation decision and its evidence in the report. When structured | ||
| JSON is requested, use `recommendedNextAction` and | ||
| `recoverableInCurrentRuntime` alongside `verdict` and `remainingWork`: |
There was a problem hiding this comment.
Propagate continuation fields to the slash-command wrapper
When /moonspec.verify is invoked through the Markdown command projected by bundle/projections/moonmind.yaml:13-15, it follows bundle/commands/markdown/moonspec.verify.md, whose report contract at lines 118-168 contains neither recommendedNextAction nor recoverableInCurrentRuntime. That invocation therefore cannot emit the explicit stop introduced here, leaving consumers to apply their old verdict default and potentially retry the missing dependency. Update the command wrapper or make it delegate to the skill rather than maintaining a second, stale verification contract.
AGENTS.md reference: AGENTS.md:L41-L43
Useful? React with 👍 / 👎.
| An explicit `needs_human` or `blocked` decision for `ADDITIONAL_WORK_NEEDED` or | ||
| `NO_DETERMINATION` stops automatic verifier retry and implementation remediation. | ||
| It does not discard verified progress or authorize publication; the caller's | ||
| existing publication policy governs any draft or checkpoint handoff. The caller | ||
| owns plan-node routing and must honor this stop decision without substituting a | ||
| retry merely because budget remains. Never encode a remediation node, publication |
There was a problem hiding this comment.
Make bundled orchestrators honor explicit stop actions
In bundled moonspec-orchestrate runs, an ADDITIONAL_WORK_NEEDED result with needs_human or blocked still triggers remediation: bundle/presets/moonspec-orchestrate.yaml:102 unconditionally starts another cycle, and bundle/skills/moonspec-orchestrate/SKILL.md:157-160 does the same. Thus the two canonical callers directly contradict this new requirement and can continue implementation despite the verifier's explicit stop; both need to branch on recommendedNextAction before applying their verdict-based defaults.
Useful? React with 👍 / 👎.
| JSON is requested, use `recommendedNextAction` and | ||
| `recoverableInCurrentRuntime` alongside `verdict` and `remainingWork`: | ||
|
|
||
| - `FULLY_IMPLEMENTED` uses `advance`; `BLOCKED` and `FAILED_UNRECOVERABLE` use `blocked`. |
There was a problem hiding this comment.
Remove the undeclared verdict from the pairing table
In structured JSON mode, this line introduces FAILED_UNRECOVERABLE, but the skill's verdict contract at lines 343-350 says to choose exactly one of four verdicts and the report schema at line 416 excludes this value; a repo-wide search also finds no other definition of it. A verifier that treats this pairing as permission can emit a contract-invalid verdict, while one that follows the declared verdict list can never use the pairing, so either remove this value or define it consistently throughout the contract.
Useful? React with 👍 / 👎.
Description
Define the portable verifier's continuation decision so hosts preserve explicit human or blocked stops instead of repeatedly retrying a missing dependency. Specify compatible verdict/action pairs, distinguish current-runtime recoverability from permission to run a separate remediation step, and include the decision in the verification report.
Source dependency for MoonLadderStudios/MoonMind#4104. This keeps the behavior in the canonical bundle consumed by MoonMind's pinned projection.
Testing
python3 tools/validate_bundle.pypassed.python -m pytestin an isolated environment with.[test]installed: 17 passed.MoonMind consumer
python3 tools/sync_moonspec.py --writeand--check: passed.Consumer instruction tests: 11 passed.
Tested locally with
uv run specify --helpRan existing tests with
uv sync && uv run pytestTested with a sample project (if applicable)
The test suite ran with Python in an isolated virtual environment; uv is unavailable on this host.
AI Disclosure
Codex authored and validated this change while addressing verifier feedback on MoonMind PR github#4104.