infiquetra/codex
v0.1.5
Portable Codex delegation wrapper. It validates one codex.delegation.v1 envelope, supervises one codex exec, and writes an evidence bundle plus an output-attested bridge receipt. Claude commands and agents live under the com.infiquetra.claude client extension directory.
Changelog
[0.1.5] - 2026-09-22
0.1.5 — imported from infiquetra-claude-plugins@acc99fe7 (upstream 0.1.4); authored here from this commit; no provenance manifest from now on.
Changed
scripts/codex_delegate.pyloadsbridge_receiptandoutput_attestationfromscripts/_bundled/. The upstream file loaded both through onefleet_commons_shimimport. That shape matches none of the single-module rewrite rules, so the import was rewritten by hand.scripts/fleet_commons_shim.pyis not carried.fleet-bundle.jsondeclares both modules.bridge_receiptloadsoutput_attestationas a sibling, and that sibling is the same declared module, so no further Fleet Core module is added.- Claude commands and agents moved under
com.infiquetra.claude/. Their wrapper invocation is${CLAUDE_PLUGIN_ROOT}/scripts/codex_delegate.py. The upstream text usedplugins/codex/scripts/codex_delegate.py, which is the old monorepo path. - The portable skill documents the wrapper flags and states that the script reads no credential variable. The upstream skill told a Claude agent to call the monorepo path.
- The adapter manifest's
repositoryis this repository. The relocated upstream manifest still namedinfiquetra-claude-plugins. - Package version is
0.1.5in the portable manifest, the root Claude manifest, and the adapter manifest.
Tests
- Carried, with the import path pointed at
scripts/codex_delegate.py:test_codex_delegate_contract.py,test_codex_delegate_lifecycle.py,test_codex_delegate_modes.py. - Rewrote
test_codex_plugin.pyfor this layout. The upstream file requiredscripts/fleet_commons_shim.py, version0.1.4, and the old repository URL, and it looked for commands and agents at the package root. - Added
test_delegate_entrypoint.py. It runsscripts/codex_delegate.py --helpwithOPENAI_*andCODEX_*removed from the environment. The repository entrypoint test skips a package that has noPROVENANCE.json. - The live smoke in
test_codex_delegate_lifecycle.pyalso requiresCODEX_DELEGATE_LIVE_SMOKE=1. Authentication of a localcodexbinary is not enough. Unset, the test skips. - No carried codex test was dropped.
- Not carried:
tests/test_check_delegation_proof.py,tests/test_delegation_fleet_monitor.py, andtests/test_delegation_proof_receipt.py. Atacc99fe7those files do not mention codex, andmarketplace/bridge_plugins.jsondeclares agy only. Landing them would add repository-root scripts, which this import does not own.tests/test_agent_preamble_identity.pyis a repository-wide roster check, not this package's.
[0.1.4] - 2026-08-08
Added - house-style presentation contract on the delegation bridge agents (#704)
codex-coderandcodex-revieweragent definitions each gain a "Presentation contract (Infiquetra house style)" section, copied verbatim fromplugins/house-style/references/subagent-presentation-preamble.md, so a relayed codex result follows the same presentation rules as the rest of the fleet.
[0.1.3] - 2026-07-19
Fixed - external CLI children bypass terminal workspace wrappers
- Supervised Codex subprocesses now force
CMUX_AGENT_BYPASS=1in the child environment. This keeps plugin-ownedcodex execruns independent of inherited cmux workspace and status wrappers.
[0.1.2] - 2026-07-10
Changed - explicit model and effort provenance (#559)
- Include model and reasoning effort in human-readable delegation projections and use the canonical
<model>-<effort>identity for receipts when both values are explicit. - Keep direct envelopes backward-compatible when model or effort is omitted; Saga registry dispatch supplies both explicitly.
[0.1.1] - 2026-07-09
Added - output-attested bridge receipts (#388)
plugins/codex/scripts/codex_delegate.py: bridge receipts now includereceipt_emitter,run_id, parsed or byte-derivedexternal_tokens, andoutput_attestation.v1overlast-message.txtso Saga can reject zero-token or unattested Codex output asproof-integrity.
[0.1.0] - 2026-07-06
Added
- Register the
codexplugin with/codex:delegate,codex-coder, andcodex-reviewer. - Add the
codex.delegation.v1envelope schema (rolescoder/reviewer, modesread-only/task, review lenses, evidence levels, status vocabulary) mirroringagy.delegation.v1minus members that do not apply to codex's v1 scope (KTD1). - Add
Envelopedataclass with fail-loud validation (EnvelopeError) atplugins/codex/scripts/codex_delegate.py. - Vendor
plugins/fleet-core/scripts/fleet_commons_shim.pybyte-identically intoplugins/codex/scripts/fleet_commons_shim.py, per the established fleet-commons + vendored-shim distribution mechanism ({#fleet-commons-mechanism-463}); the vendored copy is covered by the existing vendored-copy drift guard (tests/test_fleet_commons_resolution.py). - Add the
bridge_receipt.v1emitter seam (_supervised_receipt, parity withplugins/agy/scripts/agy_delegate.py:1390-1412): a completed run that actually launchedcodexmaps a schema-valid CLIbridge_receipt.v1; launch-failure paths emit no receipt. This movescodex-bridgefromPENDING_EMITTERStoIN_REPO_EMITTERSintests/test_bridge_receipt_drift.py(KTD6). - Add the supervised synchronous
codex execrunner: verified 0.142.5 invocation shape (exec --json -o … -s … -c model_reasoning_effort=…,-monly when a model is set), prompt fed via stdin write-then-close, timeout and no-output watchdogs, cumulative output byte cap (MAX_OUTPUT_BYTES), whole-tree kill (process group, SIGTERM→SIGKILL escalation) with the kill outcome captured — an unreaped tree surfaces as terminalshutdown_incomplete, never as a clean timeout. - Add SIGTERM/SIGINT die-clean handling across the whole bundle span (launch window AND clone
setup / token parse / diff scan / bundle writes): kill the codex tree, write a terminal
result.json, tear down the clone, exit nonzero. - Add the evidence bundle at
.claude/codex/runs/<run-id>/(envelope, prompt, JSONL transcript, last message, command argv, token accounting,result.json— all JSON written atomically via tmp+rename); every attempted run ends with an on-disk terminal status, even on unexpected post-launch exceptions. - Add enforced mode surfaces: reviewer runs
-s read-onlywith a snapshot-relative diff-scan (only NEW dirt flagsout_of_scope_mutation; reversions of pre-existing dirt are surfaced asreverted_paths/reversion_suspectedaudit signals; the scan excludes only.claude/codex/runs, keeping the rest of.claudevisible); coder runs confined to a disposable remote-stripped clone with patch capture, never the live tree. - Add
tests/test_codex_delegate_contract.py,tests/test_codex_delegate_modes.py,tests/test_codex_delegate_lifecycle.py(real-subprocess kill/terminality proofs, live smoke gated oncodex login status), andtests/test_codex_plugin.py.
Notes
- Invoking
codex_delegate.pywithout--validate-only/--dry-runlaunches a live, supervisedcodex execsubprocess by default. - The saga registry/dispatch rewire off
codex:codex-rescueships alongside this release in saga0.73.1(seeplugins/saga/CHANGELOG.md).