diff --git a/README.md b/README.md index 9e59e3d..e2b43fd 100644 --- a/README.md +++ b/README.md @@ -262,6 +262,12 @@ review correctness. scoped to the submodule — `git rev-parse --show-toplevel` does not walk up to the parent. A warning is printed; invoke from the parent repo if you want parent scope. +- **GNU find on macOS.** The secondary session-id capture uses + `find -newermt "@"` and `-printf`, both GNU extensions. On + macOS (BSD find) the skill's default command does not work; the skill + states the *goal* of the step in SKILL.md and invites the model (or + user) to substitute an equivalent BSD-compatible command. The skill + has not been end-to-end tested on macOS. ## Roadmap diff --git a/SKILL.md b/SKILL.md index bf8053e..f386f55 100644 --- a/SKILL.md +++ b/SKILL.md @@ -384,6 +384,8 @@ cat /tmp/codex-prompt-${REVIEW_ID}.md | timeout 600 codex exec --json \ A single `find` invocation keeps the permission rule simple (`Bash(find ~/.codex/sessions*)`) and the parsing stays in your head — no shell pipeline needed. + **Platform note.** `-newermt "@"` and `-printf` are GNU extensions. On macOS (BSD find) they are unsupported — substitute an equivalent that achieves the same goal: "list rollout files modified since `${CODEX_SESSIONS_BEFORE}`, newest first". For example, `find ~/.codex/sessions -name 'rollout-*.jsonl' -type f` plus `stat -f '%m %N' ` per result, or `ls -t ~/.codex/sessions/*/*/*/rollout-*.jsonl` and filter by a reference file's mtime. The goal is what matters, not the exact flags. + **Parallel-codex caveat:** if you happened to pick a rollout from a parallel codex invocation, Step 7's resume will either succeed against the wrong session (detected later via VERDICT / severity checks) or fail at the stderr/exit-code check and route to the standard fallback (§4.11). Either outcome is recoverable. 4. **Review file sanity.** (Performed again in Step 5, but note upfront.) `/tmp/codex-review-${REVIEW_ID}.md` must exist and contain a line matching `^VERDICT: (APPROVED|REVISE)$`. If not → Step 5 will handle it via retry/abort. diff --git a/docs/DESIGN.md b/docs/DESIGN.md index e8cbe74..e8ef52b 100644 --- a/docs/DESIGN.md +++ b/docs/DESIGN.md @@ -1169,7 +1169,27 @@ If this becomes an issue, the fix is to sanitize / escape before substitution, which requires careful handling of double-quoted `-C` argument and single-quoted `cd` prefix. -### §9.5. No automated tests +### §9.5. GNU find dependency in the filesystem session-id fallback + +The secondary session-id capture (`§4.1b`) uses `find -newermt "@"` +and `-printf`, both GNU extensions. On macOS (BSD `find`) the commands +do not accept these flags. The skill does not detect the platform and +does not translate commands automatically. + +Mitigation today: `SKILL.md` Step 4 check 3 includes a one-paragraph +platform note that states the *goal* of the command ("list rollout +files modified since `CODEX_SESSIONS_BEFORE`, pick newest, extract +UUID from filename") and invites the operator or the lead to substitute +an equivalent BSD-compatible command (`find ... -type f` + `stat -f +'%m %N'`, or `ls -t ... | head -1` against a reference marker file). +This is a "template + understanding" approach: rely on the lead's +adaptability rather than branching the skill for every platform. + +If BSD support ever becomes load-bearing (a macOS-running user base, +a CI on macOS runners), this can be upgraded to a bundled portable +command variant or a platform-detection branch. + +### §9.6. No automated tests `§7. Smoke test protocol` is manual. Automating it would require: