Skip to content

Latest commit

 

History

History
222 lines (183 loc) · 11.2 KB

CHANGELOG.md

File metadata and controls

222 lines (183 loc) · 11.2 KB

Changelog

All notable changes to codex-delegate (the Claude Code skill at WenyuChiou/codex-delegate). Format: Keep a Changelog. Versioning: SemVer.

This skill ships via the WenyuChiou/ai-research-skills marketplace; see that repo's CHANGELOG for the catalog-side history.

0.1.5 - 2026-10-25

Fixed

  • Separate PowerShell startup/module loading from the deterministic wrapper cases with a once-per-session, model-free probe capped at 60 seconds. The first PowerShell case exceeded its 15-second limit on two hosted Ubuntu runs; subsequent cases passed. Per-case limits and assertions stay unchanged, and probe errors fail rather than skip or retry. No wrapper/runtime change.
  • Add command-double checks for the probe arguments, missing-shell behavior, and propagation of timeout, command and executable errors.

0.1.4 - 2026-10-25

This release collects the manifest 0.1.1–0.1.4 changes already merged through PR #13. The release-record update changes no wrapper behavior or defaults.

Added (manifest 0.1.4)

  • Optional --service-tier / -ServiceTier <value|default> passes -c service_tier="<value>" to codex exec. The env var CODEX_DELEGATE_SERVICE_TIER supplies a default when the flag is absent; the flag wins over the env var, and default (or neither set) passes nothing so ~/.codex/config.toml applies. The value is lowercased and must be one word of letters a-z (else exit 2 before Codex runs); the wrapper keeps no list of valid tiers and does not check tier support. -ServiceTier is declared last (after -Effort) so existing positional PowerShell calls keep their bindings.
  • result.json gains service_tier (immediately after reasoning_effort: the value passed, or default when none was passed).
  • SKILL.md and references/ (model-selection.md, wrapper.md, output-contract.md, runtime-compatibility.md) document the new option. Tests in tests/test_wrappers.py cover pass-through on both wrappers and both copies, plus precedence, invalid-value refusal (canonical copies), combined --effort + --service-tier, and ambient env isolation.

Added (manifest 0.1.3)

  • Optional --effort / -Effort <level|default> passes -c model_reasoning_effort=<level> to codex exec. The env var CODEX_DELEGATE_EFFORT supplies a default when the flag is absent, so delegation can run cheaper than the interactive ~/.codex/config.toml without editing it; the flag wins, and default (or neither set) passes nothing. The value is lowercased and must be one word of letters (else exit 2 before Codex runs); supported levels vary by model, so the wrapper keeps no list and Codex's HTTP 400 for an unsupported one surfaces as status: error. -Effort is declared last so existing positional PowerShell calls keep their bindings.
  • result.json gains reasoning_effort (the value passed, or default).
  • references/model-selection.md no longer recommends gpt-5.4 / gpt-5.5: it explains both knobs, keeps the May A/B table as labelled historical evidence, and shows an effort A/B. Tests cover both wrappers and both copies, including precedence and invalid values.

Fixed (manifest 0.1.3)

  • references/runtime-compatibility.md no longer says -m is always passed.

Changed (manifest 0.1.2)

  • The wrappers no longer hardcode -m gpt-5.5: without --model / -Model they pass no -m, so Codex uses its own configured default model (the hardcoded default returned HTTP 400 on an account without gpt-5.5). model_used, the [MODEL_USED: …] log line and the .done sentinel report codex/default in that case; tests cover both wrappers and both copies.

Changed (manifest 0.1.1)

  • PowerShell Core uses the platform temporary directory and optional Windows codepage command; real Linux pwsh regression execution retains task prompts.
  • Default PowerShell log/result paths use Join-Path; success, hard failure and quota fallback keep their result contracts inside the expected repo/.ai path.

Historical 0.1.1 patch note: the proposed manifest was 0.1.1 while stable remained 0.1.0; that compatibility patch created no tag or release.

  • Bundle canonical Bash/PowerShell wrappers inside the portable skill, with byte-parity tests and an isolated-skill stub execution test.
  • Resolve accepted --brief-file paths before Codex applies -C, preserving caller-first lookup and preventing caller/codex working-root mismatch.
  • Correct marketplace script paths, model-config precedence, and current CLI guidance; record live-host and Windows verification limits.

Fixed

  • scripts/run_codex.sh / scripts/run_codex.ps1: the quota-pattern lists didn't match codex-cli 0.144.x's new wording ("You've hit your usage limit… purchase more credits"), so live quota exhaustion (observed 2026-07-21) was misreported as status="error" instead of status="fallback" and the .fallback_claude sentinel the supervising agent keys on was never written. Both wrappers also now gate the phrase scan on a non-zero exit code, so a successful run whose transcript merely mentions a quota-like phrase can no longer be reclassified as fallback and have its good diff discarded (the PS1 exception path passes -ExitCode 1 — an exception is a failure). Four regression tests (bash + PowerShell, quota-maps-to-fallback + exit-0-stays-success), each proven red against the pre-fix wrappers.

Added

  • references/handoff-protocol.md — bidirectional Fable↔Codex rounds via .ai/handoff/NNN_<slug>.to_codex.md / .to_fable.md files (replaces clipboard transport); documents the harness-aware brief rule (do not re-teach discipline to repos carrying the fable-method-harness conditional pointer; Codex live probe 4/4 / 0/2 / 1/1), the codex exec --json exact-usage telemetry pattern, the Codex-app one-fixed-sentence flow with its cwd precondition, and the honest gitignore mechanics (Codex's file-read tool does not honor .gitignore — a future gitignore-honoring CLI needs stdin piping per the F1 lesson). SKILL.md gains a Harness-aware delegation section; output-contract.md gains the usage-telemetry section.

  • references/codex-prompt-blocks.md — composable XML prompt blocks (<verification_loop>, <grounding_rules>, <action_safety>, …), four task recipes, and a prompt anti-pattern table for judgment-sensitive briefs. Adapted from the gpt-5-4-prompting skill in openai/codex-plugin-cc (Apache-2.0); reframed for this skill's single-shot brief-file workflow.

  • tests/test_wrappers.py: regression coverage for files_changed — populated on a git repo (bash + PowerShell) and [] on a non-git repo.

Changed

  • SKILL.md and references/task-template.md now point judgment-sensitive tasks (debugging, write-capable changes, review, research) at the new prompt-blocks reference; mechanical sweeps keep the flat template.
  • references/patterns.md (Pattern 5) and references/review-checklist.md: added an explicit "do not auto-apply fixes from a review run — present findings and ask the user first" rule.
  • references/model-selection.md: documented the spark shorthand (--model gpt-5.3-codex-spark).
  • scripts/run_codex.sh and scripts/run_codex.ps1 now auto-populate the files_changed field of result.json. The wrapper takes a git status --porcelain snapshot before and after the Codex run and diffs them, so files_changed attributes edits to that run only. It degrades to [] when the repo is not a git work tree, git is absent, or nothing changed. The wrapper's own log / sentinel / result.json files are written after the snapshot, so they never leak in.
  • references/output-contract.md: documented which result.json fields the wrapper fills. tests_run and risks are deliberately not auto-filled — the wrapper cannot see tests run inside Codex's sandbox, and risk is a judgment call; both stay Claude's to fill during acceptance.

Fixed

  • references/patterns.md (Pattern 5): the review-mode code block used the deprecated --full-auto flag; replaced with --sandbox workspace-write to match SKILL.md, wrapper.md, and examples.md.
  • scripts/run_codex.ps1: Get-GitStatusSnapshot returned @($null) (a 1-element array holding $null) on a clean repo instead of a true empty array; now filters $null so the snapshot type is consistent. Latent fragility — downstream code absorbed it — fixed for robustness and parity with gemini-delegate-skill.

0.1.0 - 2026-05-15

The initial published version. Captures the skill state at commit 3683671 ("docs(model-selection): flip framing to reflect gpt-5.5 default"), the HEAD on master when this CHANGELOG was first added.

Included

  • SKILL.md — Claude Code skill manifest. Triggers when Claude benefits from delegating token-heavy mechanical work (batch edits, scaffolding, refactors, test generation, plotting scripts) to the Codex CLI.
  • references/ — workflow patterns (gpt-5.5 as default, gpt-5.4 workaround for legacy callers, --full-auto-vs--s workspace-write, stdin-close requirement on codex-cli >= 0.121.0, .fallback_claude quota mechanism, leaf role in the router/leaves multi-AI architecture, 5 paste-ready prompt templates).
  • tests/ — pytest covering the wrapper helpers + cross-platform shell invocation.
  • .github/workflows/test.yml — runs pytest on push + PR (Ubuntu / Windows × Python 3.10 / 3.11 / 3.12 matrix).
  • LICENSE — MIT.
  • .claude-plugin/plugin.json so the root SKILL.md is picked up by the WenyuChiou/ai-research-skills marketplace.

Model selection history

The wrapper default model changed during 0.x development:

  • 2026-05-15 (commit 70e6fdc): default flipped gpt-5.4 → gpt-5.5. The skill documents both: the default for new callers (gpt-5.5), and the -m gpt-5.4 workaround for legacy contexts where the older model is required.
  • PR #1 (merged 2026-05-09): documented the -m gpt-5.4 workaround, the stdin-close requirement, and the .fallback_claude quota mechanism. This is the upstream change that promoted the skill from T2 to T1 in the ai-research-skills catalog.

Known limitations (as of 0.1.0)

  • Tested by one graduate-student researcher; not corpus-scale validated.
  • Codex CLI binary must be installed separately (codex-cli >= 0.121.0); the skill documents the install path but does not install it for you.
  • Delegation is one-directional (Claude → Codex). Routing decisions among multiple Codex sessions are handled by research-hub-multi-ai in the ai-research-skills catalog, not by this skill alone.