Skip to content

fix(review-pipeline,stage-commit-push,codex-contract-test-review): commit before editing - #220

Merged
ultimatile merged 2 commits into
mainfrom
fix/208-phase0-commit
Sep 7, 2026
Merged

ultimatile merged 2 commits into
mainfrom
fix/208-phase0-commit

Conversation

@ultimatile

Copy link
Copy Markdown
Owner

Summary

review-pipeline's Phase 0 and Phase 0.5 edited files and re-ran their gate without ever committing. Under reimre the content those loops edit is the whole implementation: implement hands 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

  • Phase 0 commits at entry and after each fix has been re-audited, so the next fix never overwrites the previous one.
  • Phase 0.5 commits at entry, and its fix loop now runs the shared substeps every other fix loop runs — check for a recurring topic, fix, audit, commit, re-review, preserve the topics for the next check, re-triage — rather than an inline copy of them. That is where its own commit comes from, and it also gains the topic-preservation and re-triage steps its inline copy omitted.
  • Phase 3 commits the contract tests before the review step that revises them.
  • Phase 0.5 no longer opens by declaring that it runs after the done-check loop. A run entering at Phase 0.5 has not run that loop, and land-via-integration-branch runs 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.
  • The shared substeps name neither the phases that run them nor Phase 2's two departures from them, which are the re-review command Phase 2 substitutes and its triage of new comments only. Phase 2 already states both at its own step.
  • Phase 1 measures the state /codex-review needs as committed, which is what that skill's base mode resolves a merge base against.
  • stage-commit-push no longer claims it is used only inside review-fix loops, which its own entry-position call sites contradict.

Impact

  • stage-commit-push gains 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.
  • The rule that no commit may be made on the repository's default branch is stated over every /stage-commit-push, so the new call sites inherit it with no new text.
  • The rule closing the pipeline on a halted done-check already bound Phase 0 and Phase 0.5 with "do not fix, do not commit, do not re-review". That prohibition was vacuous there and is now load-bearing.
  • Inserting steps renumbered the steps after them within two phases. land-via-integration-branch, reimre, and README.md name 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-check ran six times over the change, applying quality-list and authoritative-text-rules through fresh-context auditors each time. Every concern it raised is either resolved in this branch's second commit or carried in Notes.
  • /code-review high through the headless lane returned no findings.
  • codex exec review against the branch's merge base with main returned no actionable regression.
  • pre-commit run reports mdformat passing on every touched file; the repository's ruff hooks have no files to check in this diff.

Notes

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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 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-pipeline Phase 0 and Phase 0.5 to run /stage-commit-push at 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, tweak codex-contract-test-review wording, 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.

@ultimatile
ultimatile merged commit fc07e68 into main Sep 7, 2026
1 check passed
@ultimatile
ultimatile deleted the fix/208-phase0-commit branch September 7, 2026 05:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

review-pipeline: Phase 0 and 0.5 fix loops do not commit

2 participants