Skip to content

feat(orchestration): run ticket workers as launched threads and follow T3 nightlies - #13

Merged
systemeror12 merged 1 commit into
mainfrom
t3-launched-workers-nightly
Oct 12, 2026
Merged

systemeror12 merged 1 commit into
mainfrom
t3-launched-workers-nightly

Conversation

@systemeror12

Copy link
Copy Markdown
Owner

Summary

swarm-tickets now runs each ticket's worker as a top-level T3 thread bound to
that ticket's worktree. interrogation runs one lead thread per PR, bound to
that PR's worktree, so T3 shows each thread's real branch. The orchestration
skills also follow the T3 Code nightlies of October 11–12, 2026: per-provider
runtime modes, providers turned off per project, automatic continuations after
a server restart, and stopping Claude workflows. pr can start a review guide
when someone asks for one.

Why

Batches swarm-20261009-a and swarm-20261010-a ran their workers as
delegate_task children. Each child inherited the parent's checkout binding,
so T3 labelled every worker with branch dev, whatever worktree it edited.
The nightlies then changed behaviour the skills relied on:

Changes

delegate-subagents

  • New Launched workers section covering:
    • launching with existing_worktree, with a run tag for lost-response recovery;
    • waiting with t3_thread_wait, reading with t3_thread_read;
    • further rounds with t3_thread_send, and cancelling.
  • Phase 2:
    • checks the provider's runtimeModes;
    • treats "is disabled for project" as an unusable target;
    • asks when "Ultra" is ambiguous on Claude, and selects ultracode only when the user names it.
  • Waiting on launched workers:
    • a worker waiting on a permission approval goes to the user;
    • after a restart, the parent waits on the continuation run;
    • "settled" means the newest run is terminal and t3_queue_list is empty;
    • after a send, the parent confirms the round left queued before waiting.
  • Cancelling also stops Claude workflows with t3_workflow_stop. A cancelled task that reports completed is recorded as cancelled.
  • Phase 4: review rounds stay new delegate_task calls. A correction that needs the same child's context can be queued to its childThreadId, falling back to delegate_task when no taskId comes back.

swarm-tickets (SKILL.md, agents/openai.yaml, references/example.md)

  • Workers are launched threads. Phases 1–6 run in one turn, waiting with t3_thread_wait.
  • The ledger records threadId, run tag, and read position.
  • Correction rounds go to the same worker thread.
  • The turn map now covers a restart.
  • pr receives a Review guide: line.
  • Each PR is also linked to its worker thread.
  • A lost worker thread is found by PR number with t3_thread_search.
  • The closing-reference note no longer assumes GitHub.
  • The worked example is rewritten for launched workers.

interrogation

  • A PR in another worktree gets its own lead thread, bound there. Its reviewers run with mode: "wait".
  • A provider the project turned off counts as reduced diversity.
  • Review guides are kept out of the stated intent and out of reviewer prompts. The lead may use a guide's Look closely stops as a coverage check.

implement

  • "As a subagent" now reads "When a parent's brief started you (a delegated task or a launched worker thread)", so a launched worker reports a missing tracker instead of running interactive setup.

pr

  • New step 7, Guide: only on request, call write_pull_request_guides with the PR URL. It records the outcome without waiting and refreshes only a guide that is stale.
  • PRs are linked by URL.
  • The issue reference follows docs/agents/issue-tracker.md.

Before and After

No image attached. The diff changes only skill instructions (Markdown and YAML), with no UI.

Validation

All checks ran on the head commit 266efcd. The repository has no package scripts or CI.

Check Command Result
Whitespace git diff --check origin/main HEAD Pass
Relative links Python script resolving every ](path.md) / .png / .sh / .js link under skills/ Pass: 0 missing
Section anchors grep of #launched-workers, #4-assess-the-result, #harness-notes, #workspaces against the target headings Pass
Stale wording grep -rn "As a subagent" skills Pass: 0 matches
Tool names Every T3 tool named in the skills, checked against the live schemas on server 0.0.46-nightly.20261012.3010 Pass

Not run:

  • YAML parsing of agents/openai.yaml: no YAML parser is installed here.
  • Live T3 runs of any changed workflow: none were launched. Four behaviours are untested:
    • waiting on a thread that is still preparing;
    • finding running Claude workflows in the activity view;
    • the childThreadId follow-up returning a taskId;
    • linking a PR to another thread with threadId.

Risk

  • swarm-tickets now creates one top-level thread per ticket and keeps the parent's turn open until delivery. A run that relied on ending the turn after dispatch behaves differently.
  • A launched worker can't run with broader modes than the parent. A full-access worker from a narrower parent now stops at preflight.
  • The childThreadId correction path rests on the live t3_thread_send description. The orchestrator MCP doc at the same tag says a send "does not reopen a completed task". The fallback to delegate_task covers a send that returns no taskId.

🤖 Generated with Claude Code

Model: Claude Opus 5.5

Swarm workers and per-PR interrogation leads become top-level threads
bound to their worktree, so T3 shows each one's real branch. A delegate
child inherits the parent's checkout and was labelled with its branch.
delegate-subagents gains a Launched workers section for launching,
waiting, reading, further rounds, and cancelling those threads.

It also follows the October 11-12 T3 nightlies: per-provider runtime
modes, providers turned off per project, automatic continuations after
a server restart, and stopping Claude workflows. pr gains an optional
review-guide step, and implement treats a launched worker like a
delegated task.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@systemeror12
systemeror12 merged commit 5158a3c into main Oct 12, 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