Repository navigation
Replies: 10 comments 1 reply
|
Adding our use case and implementation notes here, per Julius's note on #18373 (closed as a duplicate of this one). Use case. One logical change often spans an application repo, the repo that builds its runtime image, and an infrastructure repo (Ansible here) that deploys it, each with its own branch and PR. Our orchestrator thread lives in a non-git workspace above those repos and hands each piece to a child in a worktree of the right repo. Without this, those children are Implementation notes. We implemented this proposal in our fork today, so these come from building it, not from long use yet:
This fits alongside #16719: |
|
Adding a visibility angle from daily use: one orchestrator thread launches 5–10 workers with The orchestrator's Lineage panel only lists subagents and forks, so none of its launched workers show up there. To answer "which threads did this orchestrator start, and which are still running?" I search the sidebar by a title convention. The data is already recorded. On This proposal would solve it for workers that can become real children. For workers that should stay top-level and interactive, a smaller step could list threads whose first message came from this thread in its Lineage, e.g. a "Launched" group next to the subagent rows. Parentage, wake-up and sidebar placement would stay unchanged. |
|
+1. Without this, the sidebar stops working as an inbox. I use T3 Code as an inbox: each row is a conversation that may need me. The orchestrator thread is the one I talk to. When it needs a worker in its own worktree, the only option today is What this causes in daily use:
Adding @juliusmarminge @t3dotgg I agree that launched threads and delegated tasks are different (from #15031). This proposal keeps that split. It only lets a delegated child run in its own worktree. Could you say if this direction is OK? I can help with the implementation. |
|
Note Drafted by Claude Opus 5.5 (a coordinating agent running in T3 Code) and posted from the account owner's account with their consent. +1, with a use case from daily use on 0.1.2 stable. Layout. A coordinator thread lives in a docs-only repo. For each issue it starts a lead thread. The lead starts engineers (recon, build, verify) in a worktree of the product repo, which is a different T3 project. Each round is a fresh thread on the same checkout, and the verifier runs on a different provider than the builder. Every worker is therefore a What we run instead. A small local service beside T3:
It works, but it re-implements what What this proposal (or the opt-in launch wake we proposed in #15148) would let us delete. Most of that service, provided that:
|
|
Written with Claude Opus 5.5 in T3 Code (manually checked and posted). +1, with one more use case. When a subagent's work fails review, I want a second subagent to fix it. For that I need three things:
Today I can't get all three. What would fix it:
With both, I could drop the wrapper entirely. |
|
Returning to the original cross-project request: could This looks like a smaller, natural precursor to #16719. @juliusmarminge, the review there led to explicitly rejecting local project selection because it would otherwise be silently ignored. Was that simply keeping the PR scoped, or is there a reason to exclude this capability? Could we agree on this increment independently of the sandbox and other additions above? Asking here because this is the existing discussion for that scope. I’d be happy to work on a PR for this scoped increment if the direction is approved. |
|
Another case for The parent thread's checkout was on a long-running branch belonging to other work, and the children had to start from the remote default branch. With
The Seen on 0.1.6-nightly.20261030.3904, macOS (arm64). |
|
Another use case for this proposal: a coordinator in a non-Git workspace needs to delegate a review to a separate registered Git project at an exact commit. In the inspected source, a local delegate_task rejects a different target.projectId, while isolation: "worktree" resolves the base from the parent checkout and cannot resolve HEAD for a non-Git parent. This is a source inspection, not a new runtime reproduction. Could an explicit target-project and commit binding support this case, with isolated worktrees and preserved parent/child completion semantics? Repository/commit mismatches should be rejected and retries should remain idempotent. |
|
+1 for selecting another registered project on the same environment, with one more use case and a detail from testing. Use case. I want both behaviours, chosen per thread. Threads started from outside, such as review threads from What I tested on 0.1.5 (the same check is in the 0.1.6 bundle):
Reading the client bundle (not seen in the UI), a stored So the display side already works across projects for linked environments, and the same-machine case is what's missing. The |
|
Agent-authored engineering report, posted at the account owner’s request. Concrete same-environment provisioning blocker on installed T3 Code 0.1.7: A coordinator lives in a non-Git workspace above multiple registered Git repository projects. A shared/read-only delegate starts correctly and has the expected parentThreadId. Implementation delegates need isolated worktrees in an explicitly selected registered repository, while remaining children of that same original job. Observed supported-tool outcomes:
Is there an already supported operation that binds the child’s worktree to the selected registered repository/commit while preserving the original parentThreadId, completion wake, cancellation and preparation-failure semantics? If not, please treat this as an installed reproducer within this discussion’s existing scope. The needed path is repo-bound child preparation, not a global coordinator-project-root change, a shell-created child worktree, or a substitute top-level thread. Read-only research and the original owner’s exclusive recovery work can continue independently; the implementation streams remain explicitly blocked until supported child provisioning is available. No claim that this report fixes the limitation. Deduplication marker: integration-local-child-binding-20261108 |
Uh oh!
There was an error while loading. Please reload this page.
Problem
An orchestrating thread can't hand work to a nested child that runs somewhere other than its own checkout.
delegate_taskcreates a proper child: it has a parent, wakes the parent on completion, and is hidden from the sidebar. But the child always inherits the parent'sprojectId,branchandworktreePath(makeSubagentChildThreadinpackages/provider-core/src/server/subagentProjection.tsspreads...input.parentThread).t3_thread_launchcan target any project and a new or existing worktree, but always creates a top-level thread (dispatchThreadCreateinapps/server/src/orchestration-v2/Orchestrator.tswritesparentThreadId: null). There's no wake-up, and the thread lands in the sidebar.Our use case: an orchestrator thread in one repo (a notes vault) coordinates implementation work in other repos on the same machine. Each piece of work runs in its own worktree of the target repo and is reviewed before merging. Today every such child becomes a top-level thread, and the orchestrator has to poll for completion.
#16719 adds
target.projectIdfor linked environments, but explicitly refuses a localtarget.projectIdthat names another project.Proposal
Add optional
projectIdandworkspaceStrategytodelegate_task, reusingOrchestrationV2ThreadLaunchWorkspaceStrategy:packages/contracts/src/orchestratorMcp.ts: add both fields to the input.packages/contracts/src/orchestrationV2.ts: add them to thedelegated_task.requestcommand.OrchestratorMcpService.delegateTask: resolve the project withresolveProjectTargetandassertLiveCallerForOtherProject.dispatchDelegatedTaskRequestandmakeSubagentChildThread: overrideprojectId,branchandworktreePathinstead of copying the parent's.ThreadLaunchService's workspace preparation, and defer the agent start until the worktree is ready, as launches already do.The child keeps everything that makes it a child: parent, completion wake-up, hidden from the sidebar, cancellation with the parent task.
Related: #17401 (sidebar filter by who started a thread) covers the other half of this workflow: the orchestrator's top-level launches crowd the sidebar today.
Happy to send a PR if the direction is agreeable.
All reactions