Conversation
…d DEV-STACK-08 A subagent runs in the parent's own working directory: measured, and confirmed in codex-rs where apply_spawn_agent_runtime_overrides assigns the parent turn's cwd to the child on both spawn paths. The V1 tool description says the opposite, and only the V2 usage hint states the shared directory, so a V1 session is never told. The skills now say it in the bodies that are always read rather than behind a conditional link. Adds pabcd/references/dispatch-surfaces.md as the taxonomy owner, states the routing decision and its authority in loop/SKILL.md, pabcd/SKILL.md and the SessionStart PR affordance, rewrites DISPATCH-ISOLATION-01 so a shared tree forbids concurrent branch-level git work, and adds DEV-STACK-08 for owner-authorized lane-parallel stacks with cross-references from the five rules it qualifies.
…he V2 capability identity delegation.md's two trailing bullets become a detection rule plus labelled V1, V2 and thread-surface sections. spawn_agent is registered by both families and discriminates nothing; followup_task, send_message, interrupt_agent and list_agents are V2-only, send_input, close_agent and resume_agent are V1-only, and wait_agent proves nothing because V2 makes it optional. capabilities.ts declared V2 spawn as a tool called create_task. No such tool exists in either family. It is replaced by followup_task, which is a real V2-only signal, and detectSpawnSurface can now decide from a live tool list while keeping v2 as the no-evidence default and the exact CODEXCLAW_SPAWN_V1 override. Namespaced names are matched the way the spawn hook matches them: concatenated without punctuation, with . and _ accepted defensively. This corrects a declaration, not a behavior: resolveCapabilities is not wired into the spawn hook, where live detection remains isV2SpawnInput and isCollaborationToolName. The leaf-guard blocks injected into every spawned child now say the child shares the parent's working directory and must not run branch-level git commands.
…and widen namespace matching The final pre-push review caught the taxonomy overstating its own thesis: a create_thread task only gets its own checkout with environment: worktree, while environment: local shares the project checkout, and the goal/PABCD state is a codexclaw overlay keyed to the task rather than something create_thread provides. The claim that subagents of different threads cannot collide was false for two local threads on one checkout. Both are corrected wherever they appear, including the always-read bodies. The V2 wait row now records that wait_agent there is timeout-only with no targets argument, the second way V1-shaped code fails silently on V2. exposesTool also matches the multi_agent_v1 namespace. It accepts the double underscore form because this session's own catalog exposes multi_agent_v1__spawn_agent, which the review had ruled out from the hook-facing name alone; the hook-facing and model-facing renderings differ and detection reads the latter. The four role prompts gain the shared-tree sentence, since they are the canonical source and the hook injection is a second line of defence rather than the first.
Separate thread dispatch from subagent dispatch, and add DEV-STACK-08
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b93e0e8a0a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| Push every **non-tip** head with `[skip ci]` in its commit subject so only the | ||
| lane tip runs the expensive suite, and use that tip run as the lane's gate. |
There was a problem hiding this comment.
Keep skip markers out of commits merged to trunk
In a cumulative lane, these non-tip commits become newly reachable from trunk when the tip is merged with --merge, so their [skip ci] messages are part of the trunk push. GitHub documents that a push-triggered workflow is skipped if any commit message in the push contains a skip instruction (Skipping workflow runs). I checked .github/workflows/ci.yml and .github/workflows/packed-install.yml; both rely on push runs for main, meaning this recipe can suppress the post-merge regression run that lines 169–173 require, leaving the subsequent red-build watch with no run to inspect. The strategy needs a non-persistent way to suppress non-tip PR runs or must rewrite/remove these markers before the cumulative history lands.
Useful? React with 👍 / 👎.
Promotes
dev(b93e0e8a) tomain. The range is exactly PR #163 and nothing else —git log origin/main..origin/devis the 15 commits of that one branch.#163 separates the two dispatch surfaces the skills had been collapsing into one word. A subagent (
spawn_agent) runs in the parent's own working directory; a thread (create_thread) gets its own checkout only withenvironment: worktree. It also adds DEV-STACK-08 for owner-authorized lane-parallel stacks, splits the V1/V2 delegation tool schemas behind a detection rule, and replaces a capability declaration naming a tool (create_task) that exists in neither collab family.CI was CLEAN at
8604cbcf, the exact head that merged: ubuntu, macOS and all four Windows shards, plus the packed-install artifact and install jobs on three platforms.