Repository navigation
Conversation
Make the generated Codex lead recover the correct team session, preserve planner continuity and approvals, and detect runtime permission failures before delegating work. Align the shared Claude/Codex pipeline contract with Codex's protected configuration directories. Runtime state and migration: - Move generated task records, artifacts, provenance, server credentials, session pins and logs from .agents/ to .pipeline/. Keep discoverable skills under .agents/skills/ and Codex configuration under .codex/. - Synchronize scripts, role instructions, flow references and ignore rules. Read legacy provenance for update triage, but refuse normal bootstrap while legacy task state remains to prevent parallel runtime directories. - Document the breaking path change in migration 02 and the changelog. Existing projects require a task-boundary migration that preserves history, customizations and skills; no automatic migration is performed. Exact lead and planner recovery: - Replace latest-session fallback with a dedicated launcher and per-team session pin captured by SessionStart/UserPromptSubmit hooks. Run without the shared daemon so hooks receive the selected team's launch context. - Validate hook inputs and project boundaries, ignore unrelated Codex chats, prevent pin replacement and concurrent leads, and stop on failed resume or missing session capture. Require explicit --fresh for a reset. - Record the planner thread in task state; reuse it for same-task fixes, recover from task records and decision history, and release it on task completion. Preserve recorded workflow approvals across recovery. Configuration and preflight: - Add optional lead/planner model and reasoning flags, defaulting to inherit, with validation and provenance round-tripping. - Install delegate, status-board and karpathy-guidelines supporting skills without overwriting local files. Expand update guards for permissions, hooks, agent tools, MCP and skills while allowing deliberate local drift. - Check required CLIs, feature capabilities, generated files, actual .pipeline write access and authenticated OpenCode connectivity using the same endpoint/password precedence as oc.sh. Replace the raw flow curl check so custom endpoints work consistently. - Keep workflow consent separate from runtime permissions. Preserve hook review/trust requirements and avoid automatic permission broadening. Documentation and validation: - Add the Codex setup/recovery guide, manual live-verification checklist, migration instructions and synchronized generator lessons/references. - Add no-model behavioral coverage for launch/resume isolation, fresh and failure paths, hook validation, locks, preflight failures, settings, legacy migration guards and customization preservation; run it in CI. - Add an opt-in real Codex OS sandbox check demonstrating writable .pipeline state and protected .agents/skills, .codex and .git paths. Validation passed: smoke (25 checks), invariants (113 rule/file pairs), Codex behavior (8 groups), real Codex 0.160.0 sandbox probe, Bash syntax checks and staged diff whitespace checks. ShellCheck was unavailable locally; CI retains its optional check. No live model-driven pipeline or native planner/skill discovery run was performed. The planner's source write boundary remains instructional under classic workspace-write.
Brings in OpenCode lead (leader/planner/commands, team.sh --lead opencode), the standalone dashboard and the optional Herdr plugin, without changing the fork's contract: task records stay in .pipeline/, skills in .agents/skills/, OpenCode roles in .opencode/agents/, Codex launcher/hooks/preflight intact. - Port upstream's new templates, dashboard and Herdr plugin from .agents/ to .pipeline/; dashboard falls back to an unmigrated .agents/ runtime. - team.sh: keep codex-lead.sh for Codex, add upstream's OpenCode branch. - init.sh: refuse bootstrap on legacy worker files, not on directory presence (upstream scaffolds already have .opencode/agents/ for leader/planner). - Replace upstream's root AGENTS.md (a Claude->Codex find/replace copy of CLAUDE.md) with a pointer to CLAUDE.md. - Fix v1 abort endpoint in feature.md; make verify-models.sh generic and fix its temp-file trap; warn when Codex is older than the tested baseline. - Renumber upstream's lessons 29-31 to 33-35. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
CI's ShellCheck step failed (also on codex-lead-parity before the merge) and stopped before the templates loop ran. Fix every finding: - SC1087 in codex-preflight.sh.tmpl: brace the loop variable in the regex. - SC2207 in team-completion.bash.tmpl: intentional word-splitting; mapfile is unavailable in macOS bash 3.2, so disable for the function with a reason. - SC2015 in smoke.sh and codex.sh: split A && B || C into separate checks. - SC2016 in init.sh and tests: literal backticks in single quotes are intentional; annotate each site. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Merge upstream v0.10.0 into the Codex/.pipeline line
Give a Codex lead the mechanics the Claude harness supplies natively, and write down the lead lessons that only lived in a Claude session. - scripts/bg-dispatch.sh (start/wait): detached dispatch plus a bounded, repeatable wait, replacing the Claude-only Monitor watch. - scripts/claude-review.sh: headless `claude -p --agent reviewer` with a read-only tool list, so a non-Claude lead can dispatch a claude/* reviewer. - scripts/oc.sh: --status (v2 /api/session/active) and --interrupt (v2 /api/session/<id>/interrupt). - promote-findings.sh skips directory tags instead of aborting the run. - codex-preflight.sh checks the new wrappers and the Claude reviewer deps. - feature flow: status check, merge record, mid-task model switch, concurrent-writer claims, exact Pass heading, tester-cannot-be-spawned. - Codex feature skill: matching adaptations. - init.sh renders/updates the new scripts and ignores dispatch traces. - smoke: 3 new checks (36 total). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- --tester-model codex/<model> scaffolds .codex/agents/tester.toml, a report-only Codex tester; verify-models.sh skips codex/* like claude/*; codex-preflight.sh requires the tester agent when the manifest names one. - OpenCode lead: claude/* reviewer via scripts/claude-review.sh, waits via bg-dispatch.sh, stops roles with oc.sh --interrupt. - Generated AGENTS.md asks the project to record whether sending review material to Anthropic is authorized. - smoke: codex/* tester scaffold check (37 total). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BREAKING CHANGE: the state file's single "OpenCode session id" is replaced by per-role fields (builder, reviewer, tester) plus "Codex tester thread id". Migration: migrations/04-per-role-sessions.md. - Session policy: each role's first oc.sh call starts its own session and only that role's retry reuses it. A shared task session broke on opencode v2 (a session pins the opening agent's tool set, so the tester could not write results) and fed the reviewer the builder's reasoning. Review and test commands no longer pass the builder's session. - SYSTEM.md, the invariant rule, dev-team-generator references (lesson 21 rewritten), README, oc.sh header and the OpenCode lead follow. - Canonical step 2 creates a T-<id>-<slug> branch (project prefix kept) before any implementer runs. - init.sh --builder-auto ask|on stamps builder_auto; `on` is a standing user decision, `ask` (default) keeps the spec-time question. The flow names builder.md's deny list as the only thing --auto does not approve. - smoke: builder_auto stamping and per-role state fields (38 total). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- claude-review.sh: SC2015, use an explicit if for the argument-count check. - oc.sh --status: SC2086 disabled with a reason; the unquoted id list is the intentional one-argv-per-session split. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
What changed
Brings the Codex lead to near-parity with the Claude lead, adds an OpenCode lead path, and changes the OpenCode session policy. Full detail is in
CHANGELOG.md→ Unreleased.Session and branch model (
[contract], migrationmigrations/04-per-role-sessions.md)T-<id>-<slug>) before an implementer runs.init.sh --builder-auto ask|onrecords a standing decision for the builder's--auto.Codex lead parity
scripts/bg-dispatch.sh(start/wait) runs dispatches detached. Codex has no background-watch tool, so without it dispatches die at the lead's exec timeout.scripts/claude-review.shruns aclaude/*reviewer headlessly with a read-only tool list, for leads that can't spawn Claude subagents.oc.sh --status/--interrupt(v2 endpoints) replace rawopencode apicalls in the flow.testerrole (--tester-model codex/<model>→.codex/agents/tester.toml).codex-preflight.shchecks the new wrappers, the Codex tester, and Claude reviewer prerequisites.oc.sh.Canonical flow additions (all three flow copies)
### Pass Nverdict heading.OpenCode lead
leaderandplanneradapters plus/featureand/toolkit-updatecommands pointing at the canonical flow.Fixes
promote-findings.shskips a directory tag instead of aborting and dropping later findings..pipeline/T-*.{out,err,pid,brief}) are gitignored.Verification
Run locally on this branch:
bash test/smoke.sh: all 38 checks passbash test/invariants.sh: all 135 (rule, file) pairs presentbash test/codex.sh: all behavioral checks pass (CLI doubles, no model calls)python3 test/herdr.py: OKNot done: no live end-to-end pipeline run against a real OpenCode server or a live Codex lead.
docs/CODEX.md→ Verification lists the manual scenarios.Reviewer notes
migrations/04-per-role-sessions.md.oc.sh/bg-dispatch.shcall needs runtime approval.tester.tomlduplicates the tester rules inline and isn't covered bytest/invariants.sh..codex/agents/.🤖 Generated with Claude Code