Repository navigation
codex-claude-loop v0.2.0 — the gates now hold
The 0.1.0 tree was handed to Codex (gpt-5.6-sol, xhigh) as an adversarial reviewer, using this harness's own doctrine. Its opening line:
Not release-ready. Both "hard gates" can report approval for state they did not validate, and the one-writer lock can admit two writers.
Both were true. v0.2.0 closes them.
Gates
- a plan approval survived its own plan file being deleted, its digest being absent, or the host having no sha256 tool: an uncomputable digest read as "no mismatch". Now every branch fails closed.
- gate 2 had no consumer, so "two gates you cannot skip" was a claim the code did not make good on.
cl_releasenow consumes it and refuses unless the review approved this tree, compared by base sha plus a hash of HEAD, uncommitted changes, and untracked file content. - a failed autonomous gate left the previous
approvestanding. It is now cleared before each attempt. blocking: truemade the count fail, and the failure defaulted to zero blockers, which became an approval. The verdict shape is validated independently now.
Lock
- two waiters that spotted the same dead pid could both reclaim. Reclamation is a rename, so exactly one wins; release verifies ownership; INT/TERM exit instead of writing on.
Update resistance
- the
--helpmemo assigned inside a subshell, so it never memoized; probes accepted a flag spelling the driver never invokes. Both fixed.
Plus: state keyed by repo path, the approved plan text travels with the implementation prompt, slug validation, a resumable cl_wave, a transactional installer with a marker-checked uninstall, and 33 → 53 assertions against a stub that now enforces the invocation contract.
/plugin marketplace add ozzaii/codex-claude-loop
/plugin install codex-claude-loop@codex-claude-loop