fix(review-pipeline,stage-commit-push,codex-contract-test-review): commit before editing - #220
Merged
Merged
Conversation
Phase 0 and Phase 0.5 edited files and re-ran their gate without ever committing, so a fix overwrote content that no ref held. Both phases now commit at entry and inside their fix loops, and Phase 3 commits the contract tests before the review step that revises them. Phase 0.5's fix loop references the shared fix-loop substeps instead of inlining them, which is where its commit comes from and which also gives it the topic-preservation and re-triage steps it lacked. The clean-tree arm of stage-commit-push said "stop", readable as ending the invocation or as ending whatever invoked it; it now states the outcome instead. Its description no longer claims it is used only inside review-fix loops.
The audit of the previous commit found enumerations and glosses that restate what another unit owns, and this change resolves each by pointing instead. The root bullet and the halted-audit rule no longer list Phase 0.5 as a done-check site of its own, now that its delta run is reached through the fix-loop substeps. Those substeps no longer name their callers or carry Phase 2's overrides, which Phase 2 already states at its own step. The oscillation-detection bullet points at the substep that holds the check rather than restating where it runs, and Phase 1 no longer restates the routing of the skill it invokes. Phase 0.5 keeps one override: the effort its re-run uses. The gate skill pins effort across a pull request's iterations, and this loop runs before a pull request exists. Phase 1 attributed a push requirement to codex-review's base mode, which resolves a merge base and diffs against it, so committed is the state it needs. Phase 3's push step drops a gloss that read as though it were where the contract tests get committed. The contract-test skill hands back to its caller without naming a step there, and its section heading names what the section does.
There was a problem hiding this comment.
🟢 Approval recommended
The changes are internally consistent across the updated skills and directly address the reported “uncommitted overwrite” failure mode without introducing conflicting instructions in the touched sections.
Pull request overview
This PR tightens the review automation skills to ensure pipeline iterations never overwrite uncommitted work by inserting commit points at phase entry and within fix loops, and by clarifying a few ambiguous handoffs between skills.
Changes:
- Update
review-pipelinePhase 0 and Phase 0.5 to run/stage-commit-pushat entry and within their fix-loop flow so each iteration is preserved as a commit before the next edit cycle. - Adjust Phase 3 sequencing so contract tests are committed before the contract-test review step that may revise them.
- Clarify
stage-commit-push“clean-tree” behavior text, tweakcodex-contract-test-reviewwording, and bump the plugin version.
File summaries
| File | Description |
|---|---|
| skills/stage-commit-push/SKILL.md | Removes “used only in review-fix loops” claim and clarifies the no-op routing outcome (“make no change”). |
| skills/review-pipeline/SKILL.md | Inserts /stage-commit-push at Phase 0 / 0.5 entry and uses shared fix-loop substeps; commits contract tests before contract-test review in Phase 3. |
| skills/codex-contract-test-review/SKILL.md | Clarifies the “clean” handoff wording back to the caller. |
| .claude-plugin/marketplace.json | Bumps metadata.version from 2026.9.2 to 2026.9.3. |
Review details
- Files reviewed: 4/4 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
review-pipeline's Phase 0 and Phase 0.5 edited files and re-ran their gate without ever committing. Underreimrethe content those loops edit is the whole implementation:implementhands off without committing unless commits were explicitly authorized, and the branch's first commit was made by Phase 1. So every fix those two phases made overwrote that implementation in place, with no ref, no commit, and no reflog entry holding it.Both phases now commit at entry and inside their fix loops, and Phase 3 commits its contract tests before the step that revises them.
Closes #208
Changes
land-via-integration-branchruns the pipeline from Phase 0.5 forward.stage-commit-push's clean-tree arm states its outcome — it makes no change — rather than "stop", which read either as ending the invocation or as ending whatever invoked it./codex-reviewneeds as committed, which is what that skill's base mode resolves a merge base against.stage-commit-pushno longer claims it is used only inside review-fix loops, which its own entry-position call sites contradict.Impact
stage-commit-pushgains four call sites. Its clean-tree rewording also resolves the same ambiguity at the two call sites that predate this change, in Phase 1 and Phase 3./stage-commit-push, so the new call sites inherit it with no new text.land-via-integration-branch,reimre, andREADME.mdname the pipeline's phases but never its step numbers, so the renumbering reaches no reference outside the pipeline.Verification
The repository ships Markdown skill bodies and has no test suite, so the gates are the audit chain.
done-checkran six times over the change, applyingquality-listandauthoritative-text-rulesthrough fresh-context auditors each time. Every concern it raised is either resolved in this branch's second commit or carried in Notes./code-review highthrough the headless lane returned no findings.codex exec reviewagainst the branch's merge base withmainreturned no actionable regression.pre-commit runreports mdformat passing on every touched file; the repository's ruff hooks have no files to check in this diff.Notes
code-review-gate's own rule holding effort fixed, and it stays until code-review-gate: the effort rule does not match what effort selects #219 settles that rule's scope: the gate fixes effort "across a PR's iterations", while this loop runs before a pull request exists.implementcarries the same unheld-content gap between its own units, and this change does not reach it.codex-contract-test-reviewand twice more inreview-pipeline, and caller and callee each own a cycle, so the caller's branch either runs a second revision or never fires. codex-contract-test-review: caller and callee each own the revise cycle #218 tracks it.implementemits a conventional commit message that nothing on this path reads, so the new entry commit derives its own instead. stage-commit-push, implement: the commit-message rules have no owner #217 tracks which skill should own the rules for writing one.