Conversation
Contributor
Author
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.
Intent
Repair Firstmate's Codex liveness so installed codex-cli 0.147.0 and strict later stable versions use the empirically verified lifecycle hooks, while older, unreadable, prerelease, or unexpected versions conservatively remain unknown. Pair every opened turn with an absolute deadline because API errors and manual interruptions emit no Stop: UserPromptSubmit opens deadline-bound busy, Stop alone proves successful idle, SessionEnd and deadline expiry surface unknown, and a late Stop must not rewrite an expired turn as success. Generate per-launch inline hooks that compose with existing project hooks and do not hand-edit live busy state. Prove fm-crew-state working, successful completion, and missing-terminal/error/interruption behavior against a real Codex worker, plus portable controls; the local enforcing population was 11 lines and all 11 mutations were killed. Do not build the separately filed app-server owning-client subsystem. The unrelated composer structural-edge assertion is confirmed to fail identically on clean base f1a4af4 and is being repaired separately; do not absorb, weaken, or repair it in this change.
What Changed
codex-cliversions starting at 0.147.0 while leaving older, prerelease, unreadable, and noncanonical versions unverified.UserPromptSubmit,Stop, andSessionEndhooks, with deadline-bound busy records that surface missing terminals as unknown and prevent late stops from reporting success.Risk Assessment
✅ Low: Captain, the corrective commit now rejects noncanonical numeric components while preserving canonical 0.147.0 and later stable versions, and the complete durable liveness change has no remaining material source-verifiable concerns.
Testing
After confirming the exact base and target, all three focused portable tests passed and a real Codex CLI 0.147.0 worker proved working-to-done success plus deadline-surfaced API-error and manual-interruption behavior; transcripts were captured, temporary state was removed, and the worktree remained clean.
Evidence: Real Codex liveness E2E transcript
codex-cli 0.147.0 ok - real Codex success moved fm-crew-state from working to done ok - real Codex API error omitted Stop and surfaced on its deadline ok - real Codex interruption omitted Stop and surfaced on its deadlineEvidence: Portable liveness controls transcript
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 1 issue found → auto-fixed ✅
bin/fm-busy-lib.sh:142- Intent requires “unexpected versions conservatively remain unknown,” but this regex accepts non-canonical versions such ascodex-cli 00.147.0andcodex-cli 0.147.00; numeric comparison then enables unverified lifecycle hooks. Require canonical components (0|[1-9][0-9]*) before applying the version floor.🔧 Fix: Reject noncanonical Codex versions
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
pwd -P;git rev-parse HEAD;git rev-parse --verify f1a4af426d7199c1781bc91ccd143b8e1f732d10;git diff --stat/--name-status f1a4af4..b4b78fecodex --versiontests/fm-busy-state.test.shtests/fm-busy-adapter-wiring.test.shtests/fm-crew-state.test.shCODEX_HOME=$PWD/.codex-live-home-gate FM_CODEX_LIVENESS_LIVE_E2E=1 tests/fm-codex-liveness-live-e2e.test.shVerified the isolated Codex home was removed andgit status --shortremained empty✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.