Skip to content

fix(skills): subagent briefs keep user limits; setup counts incidents - #2044

Merged
tmchow merged 1 commit into
mainfrom
t3/subagent-brief-incident-counting
Nov 9, 2026
Merged

tmchow merged 1 commit into
mainfrom
t3/subagent-brief-incident-counting

Conversation

@tmchow

@tmchow tmchow commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

A subagent brief now has to carry what the child cannot recover on its own: the user's stated limits on its work, a stop rule that says what to hold and what may continue, and a report of anything refused, skipped, or left unverified. Separately, ce-setup now counts distinct pull requests, not repeated bot comments, when it decides a finding keeps getting declined.

After #1974, the dispatching skills said a spawned worker "does not continue the parent conversation", which states a fact but asks for nothing. One recorded Codex ce-code-review brief said exactly that and still dropped a constraint the user had given.

What changed

  • Authoring standard. portable-agent-skill-authoring.md states the three brief conditions once, with a checklist line. Decisions a child exists to judge on its own, such as settled design choices a reviewer should re-derive, stay out of the brief.
  • ce-code-review. The Stage 2 intent summary, which every reviewer and the cross-model peer receive, now carries the user's limits on the review in their own words.
  • ce-work. The worker brief now carries user limits, which win over the plan when the two conflict. It also says what to do when the harness refuses an action or a step can't run here: hold that step, don't reach the same result another way, keep finished edits, and finish the independent parts. The worker reports what did not go as briefed, and a held step keeps the unit open on both the serial and the parallel path.
  • ce-setup. At the evidence step, one condition governs both recurrence judgments: the "declined across several pull requests" gate and the refresh signal "findings under a written rule that the team keeps declining". An incident is a pull request, or a change when no pull request carries it. A partial history is named in the preview and summary.

ce-standards-bar is unchanged. It admits a rule on a single fixed finding, so it doesn't count anything.

Validation

Live A/B evals on Claude and Codex, one trial per cell. Pre is main at d307bdb and post is this branch. The fixtures and rows are added to tests/skill-eval-cell/catalog.ts.

  • ce-work/live-worker-brief-limits (live parallel wave, a user limit that conflicts with the plan, and a docs generator that refuses to run): all 4 cells passed the artifact grade. tests/ledger.test.js was untouched, docs/api.md was not hand-edited, and the docs step came back as a blocker in every cell. In Claude's worker prompts, the user limit and a blocked-step rule were already present before the change (4/4). The "did not go as briefed" report item appeared only after it (0/4 to 4/4). On Codex the brief can't be graded: spawn messages are encrypted, and fork_turns: "all" replays the parent's context into each child, so the outcomes are the only evidence there.
  • ce-code-review/live-user-limit-reaches-reviewers (user asks to leave a staged file out): Claude reviewer prompts carried the limit in both arms (6/6), and no arm on either host produced a reviewer finding on the excluded file. The recorded Codex miss did not reproduce, so this shows no regression and no measured gain.
  • ce-setup/review-recurrence-counts-incidents and ce-setup/refresh-recurrence-counts-incidents: all 8 cells passed in both arms. Four re-posts in one PR counted as one incident, and the partial export was stated. On current models the condition is insurance.
  • A fresh-reader pass found ambiguities in the first draft, all fixed before the post arms ran:
    • the serial path could still commit a unit over a held step
    • "a check fails" could be read as covering expected red tests
    • the brief didn't say whether the plan or a user limit wins
    • "changes" could be read as pushes
  • bun run test --changed-since=45ccf35e4 (4971 pass, 0 fail), typecheck, release:validate, and plugin:validate all pass.

grading-live-delegation-evals-from-host-session-logs.md now records where the eval cells keep Codex rollouts and why forked Codex children can't show what the brief said.

Follow-up: ce-doc-review still uses the bare #1974 sentence. Its reviewers return residual risk through a schema, and it has no observed gap.

Security Disclosure

No security-relevant changes.

Agent Disclosure

  • Model: Claude Code · claude-opus-5-5

…efs, count distinct incidents

State what a subagent brief must carry: the user's stated constraints on
the child's work, a stop condition that says what to hold and what may
continue, and a report of refused, skipped, or unverified steps. Apply it
where briefs had gaps: ce-code-review's intent summary now carries the
user's limits on the review, and ce-work's worker brief carries user
limits (which win over the plan), a scoped blocked-step rule, and a
"did not go as briefed" report that keeps the unit open.

ce-setup now counts distinct incidents (pull requests or changes), not
repeated bot comments, when judging recurrence, and says when the
reachable history is incomplete.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

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

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-09T19:09:52.514510Z 63c33fe 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.

@tmchow
tmchow merged commit ea2832e into main Nov 9, 2026
10 checks passed
@github-actions github-actions Bot mentioned this pull request Nov 9, 2026
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