Skip to content

Release v3.24.1 - #126

Merged
atomantic merged 5 commits into
releasefrom
main
Jul 23, 2026
Merged

Release v3.24.1#126
atomantic merged 5 commits into
releasefrom
main

Conversation

@atomantic

Copy link
Copy Markdown
Owner

Summary

Patch release. No feat: or breaking commits since v3.24.0 — the changes are a behavior hardening in the review loop plus a CI action bump.

Code review — review-only reviewers can no longer quietly rewrite your working tree

A --review-with pass is supposed to report findings and let the orchestrator apply them, but every reviewer was launched with full write access and the "don't touch the tree" contract existed only as a line in the prompt. A reviewer that decided to fix things itself would silently overwrite uncommitted work.

  • codex now runs its review-only pass under --sandbox read-only, making the contract OS-enforced. Verified: read-only review still reads the diff, tracked-file list, commit graph and base tree and returns normal severity-tagged findings, while a write in the repo fails with operation not permitted. lib/enhance-loop.md already used this posture, so the two loops are now consistent. The reviewer-applies path keeps danger-full-access, which it needs.
  • claude / agy / grok have no read-only mode, so they get a backstop: the loop snapshots HEAD, the index, tracked content and untracked files before the review and restores wholesale if the reviewer modified anything, keeping the findings.

Dependencies

Test plan

Known risk: release.yml's setup-node@v7 step (which sets registry-url for the npm publish) has not executed under v7 yet — only ci.yml has. If npm auth regresses, the publish step is where it will show. Watching the release run.

dependabot Bot and others added 5 commits July 19, 2026 15:42
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
A --review-with pass is supposed to report findings and let the orchestrator
apply them, but every reviewer was launched with full write access
(--dangerously-skip-permissions / --sandbox danger-full-access /
bypassPermissions) and the "do not touch the working tree" contract existed only
as a sentence in $LOCAL_PROMPT. A reviewer that decides to fix things itself
silently rewrites the caller's uncommitted work, and the loop never notices: it
computes NEW_COMMITS/UNCOMMITTED, documents that they "should be zero" in
review-only mode, and then never checks them.

codex: the review-only invocation moves to --sandbox read-only, which makes the
contract unbypassable at the OS level. The claim it replaces — that
danger-full-access is required or "codex review produces no usable findings" —
is empirically wrong: `codex --sandbox read-only review --base <ref>` reads the
diff, tracked-file list, commit graph and base tree and returns normal
severity-tagged findings, while a write inside the repo fails with `operation
not permitted`. enhance-loop.md already ran codex read-only for exactly this
reason, so this makes the two loops consistent rather than introducing a new
idea. The reviewer-applies path keeps danger-full-access, which it needs.

claude/agy/grok have no read-only mode, so they get a backstop instead: step 1
snapshots HEAD, the index, tracked content and untracked files (the same four
artifacts enhance-loop.md uses, since a porcelain count alone misses an edit to
an already-dirty tracked file or to a pre-existing untracked file), and the
review-only branch of step 3 compares them, restores wholesale on violation, and
warns. Unlike enhance-loop it KEEPS the findings — a reviewer's product is its
findings list, which stays useful even when it wrongly applied them too, whereas
an enhancer's product is the text it returns.

The prompt line gains the reason rather than more emphasis: edits will be
reverted, so applying a fix saves nothing and destroys in-progress state.
…ons/setup-node-7

chore(deps): bump actions/setup-node from 6 to 7
Enforce the review-only contract instead of only asking for it
@atomantic
atomantic merged commit 070ed15 into release Jul 23, 2026
4 checks passed
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.

1 participant