Skip to content

Promote dev to main: dispatch-surface taxonomy and DEV-STACK-08 - #164

Merged
lidge-jun merged 15 commits into
mainfrom
dev
Sep 13, 2026
Merged

Promote dev to main: dispatch-surface taxonomy and DEV-STACK-08#164
lidge-jun merged 15 commits into
mainfrom
dev

Conversation

@lidge-jun

Copy link
Copy Markdown
Owner

Promotes dev (b93e0e8a) to main. The range is exactly PR #163 and nothing else — git log origin/main..origin/dev is 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 with environment: 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.

…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
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 13, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-13T03:38:01.602315Z b93e0e8 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 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".

Comment on lines +147 to +148
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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

@lidge-jun
lidge-jun merged commit 2183de2 into main Sep 13, 2026
28 checks passed
@lidge-jun
lidge-jun deleted the dev branch September 13, 2026 03:44
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.

1 participant