Skip to content

fix(cross-model): discover the Codex.app-bundled codex CLI and name the peer-CLI requirement - #1395

Merged
tmchow merged 2 commits into
mainfrom
tmchow/debug-github-repo-url
Aug 15, 2026
Merged

fix(cross-model): discover the Codex.app-bundled codex CLI and name the peer-CLI requirement#1395
tmchow merged 2 commits into
mainfrom
tmchow/debug-github-repo-url

Conversation

@tmchow

@tmchow tmchow commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fixes #1272.

On a machine where Codex is installed only as the desktop app, the cross-model pass in ce-code-review (and ce-doc-review, ce-pov, ce-work) silently reported "cross-model pass: not run". Codex.app ships a working codex at Contents/Resources/codex but does not link it onto PATH, and peer discovery was command -v only.

Now, when no codex is on PATH, each worker probes the known Codex.app bundle dirs (~/Applications and /Applications; CROSS_MODEL_CODEX_APP_DIRS overrides) and appends the first hit. Append, never prepend: a PATH-installed CLI stays authoritative. The "no peer reachable" skip line now names the peer CLIs (codex, claude, grok, cursor-agent) and says an API key alone does not enable the pass, so a fresh machine explains itself instead of failing quietly.

Docs (docs/skills/ce-code-review.md, pointer in ce-doc-review.md) now state the peer-CLI prerequisite, the app-bundle discovery, and that Gemini has no standalone target (issue items 1 and 3). Item 2 — a one-time install check — belongs to the installer in src/ and is left for a separate change.

Validation

  • One regression test per worker script: a stub codex inside a Codex.app/Contents/Resources fixture with none on PATH resolves and is invoked. Each fails on main.
  • A precedence test proves the PATH stub is invoked over the bundle stub.
  • Test sandboxes now mask any real Codex.app on the host, so the suite is host-independent.
  • bun run test: 3117 pass. bun run release:validate in sync.
  • Reviewed with ce-code-review including an independent Codex cross-model adversarial pass; all its findings (test hermeticity) were applied before this PR.

Known residuals (advisory)

  • The probe checks -x, not that the bundled binary executes; a broken bundle would fail at invocation with a less tidy message than today's skip.
  • docs/skills/ce-pov.md and ce-work.md do not yet carry the prerequisite note.

Security Disclosure

Shell change in four skill worker scripts: when codex is absent from PATH, the script appends a fixed, well-known app-bundle directory (or an explicit CROSS_MODEL_CODEX_APP_DIRS value) to PATH. Append-only, so an existing PATH binary always wins; the lookup under $HOME follows the same trust model as PATH itself. No secrets, permissions, or converter output changed.

Agent Disclosure

  • Model: Claude Code · claude-fable-5

Compound Engineering

…he peer-CLI requirement

Peer discovery in the four cross-model worker scripts was PATH-only, so a
Codex desktop-app install (Codex.app/Contents/Resources/codex, not linked
onto PATH) was never found and the pass silently reported "not run".

When no codex is on PATH, probe the known Codex.app bundle dirs
(CROSS_MODEL_CODEX_APP_DIRS overrides) and append the first hit, so a
PATH-installed CLI stays authoritative. Make the "no peer reachable" skip
name the peer CLIs and note that an API key alone does not enable the pass.
Document the prerequisite, bundle discovery, and Gemini's lack of a
standalone target. Add one regression test per script plus a
PATH-vs-bundle precedence case; sandboxes mask any real bundle.

Fixes #1272

Claude-Session: https://claude.ai/code/session_01SfcNrQM7jUjYiEPTc92Zw9
@cursor

cursor Bot commented Aug 15, 2026

Copy link
Copy Markdown

PR Summary

Cursor Bugbot is generating a summary for commit 64785ae. Configure here.

@cursor cursor Bot 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.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 64785ae. Configure here.

Comment thread skills/ce-code-review/scripts/cross-model-adversarial-review.sh Outdated
- probe ChatGPT.app bundle dirs as well as Codex.app: the Codex desktop app was merged into ChatGPT.app in July 2026, so fresh desktop-only installs carry the CLI there
- docs name both bundle layouts

Claude-Session: https://claude.ai/code/session_01SfcNrQM7jUjYiEPTc92Zw9
@tmchow
tmchow merged commit 1628f99 into main Aug 15, 2026
5 checks passed
@github-actions github-actions Bot mentioned this pull request Aug 15, 2026
ethras added a commit to ethras/compound-engineering-orca that referenced this pull request Aug 16, 2026
* fix(ce-commit-push-pr): root PR stacks on the parent PR the user named (EveryInc#1365)

* fix(ce-babysit-pr): decode gh output as UTF-8 on Windows (EveryInc#1368)

* fix(ce-prototype): cover decisions settled by seeing, not just driving (EveryInc#1369)

* perf(tests): cut suite wall time by splitting the largest test file (EveryInc#1370)

* fix(tests): stop the cross-model routes test reading the working tree (EveryInc#1371)

* fix(ce-doc-review): ask only where a real choice exists, batch the rest (EveryInc#1373)

* chore(orca): re-pin upstream provenance baseline to 421a337

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ce-doc-review): align Orca ownership wording with Apply routing

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(ce-prototype): add a seeing-mode craft floor and durable storage (EveryInc#1374)

* fix(ce-pov): stop the panel guessing the cross-model host argument (EveryInc#1375)

* chore(cross-model): pin the Grok peer to 4.6 (EveryInc#1376)

* docs(skills): rewrite user skill pages for accuracy and clearer use (EveryInc#1377)

* fix(commit): append known plan unit ids to commit subjects (EveryInc#1379)

* fix(ce-work): stop sandboxed workers committing in linked worktrees (EveryInc#1382)

* fix(ce-doc-review): edit HTML plans in native format (EveryInc#1381)

* fix(ce-code-review): cover adversarial after quota or auth no-review (EveryInc#1380)

* fix(skills): correct a rejected dispatch instead of spending the fallback (EveryInc#1383)

* fix(ce-compound): find Claude sessions started outside the repo root (EveryInc#1378)

* ci(windows-native): retry peer-job-runner smoke on ctypes flake (EveryInc#1384)

* fix(ce-debug): stop asking at the handoff, stop shipping unoffered work (EveryInc#1385)

* docs(solutions): record why skill gates state conditions, not git commands (EveryInc#1386)

* fix(skills): drop the residual-findings record file for real sinks (EveryInc#1387)

* fix(ce-doc-review): run the cross-model pass when CROSS_MODEL_PEERS is unset (EveryInc#1389)

* fix(ce-proof): sync with current Proof v3 contract (EveryInc#1390)

* fix(skill-authoring): make goal-first the default when authoring and reviewing skills (EveryInc#1391)

* fix(cross-model): let reviews run on Fable and pin model/effort from CE config (EveryInc#1392)

* docs(cross-model): point superseded peer benchmarks at the luna/xhigh decision (EveryInc#1393)

* fix(cross-model): discover the Codex.app-bundled codex CLI and name the peer-CLI requirement (EveryInc#1395)

* feat(cross-model): add cross_model_review_mode checkout egress gate (EveryInc#1396)

* fix(ce-compound-refresh): compare knowledge-track learnings against guidance they name (EveryInc#1399)

* docs(solutions): capture the named-guidance contradiction-check learning (EveryInc#1400)

* fix(ce-compound): prefer the repo's own frontmatter vocabulary over the Rails-era enums (EveryInc#1394)

* fix(ce-work): stop asking about branches before starting work (EveryInc#1397)

* fix(review): answer covered cases on skill prose with the condition, not a patch (EveryInc#1401)

* fix(scratch): fall back to $TMPDIR when /tmp cannot host the scratch root (EveryInc#1398)

* feat(ce-skill-work): repo-local skill for authoring, editing, reviewing, and responding to review on skills (EveryInc#1402)

* fix(ce-pov): reject non-final peer positions instead of folding them in (EveryInc#1403)

* feat(manifest): add Agent Plugins v1.0.0 manifest support (EveryInc#1345)

* chore: release main (EveryInc#1354)

* fix(ce-work): run cross-model verification on warm checkouts (EveryInc#1404)

* fix(orca): reconcile upstream skill contracts

* fix(orca): preserve additive Codex session roots

---------

Co-authored-by: Trevin Chow <trevin@trevinchow.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

Cross-model adversarial pass: detect app-bundled peer CLIs (e.g. Codex.app), and surface the requirement at install

1 participant