[Bug]: A child run started with `t3 thread send` from a shell never notifies the parent

Ouverte Adaptée aux débutants
#33,432 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@juliusmarminge y travaille déjà.

Depuis le 9/11/2026.

  • #33446 par @juliusmarminge — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
74/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
typescript
Domaine
backend

Piste de recherche

Commencez dans apps/server/src/orchestration-v2/Orchestrator.ts, à recordSubagentFollowup, puis lisez les cas et les tests associés dans DelegatedCompletionDelivery.test.ts. L’issue décrit une modification proposée d’une ligne dans une condition et un test qui reproduit l’absence du suivi. Le travail est terminé lorsque le test de régression échoue avant la modification et réussit après, tandis que les envois provenant d’un autre thread restent exclus.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Before submitting
  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.
Area

apps/server

Steps to reproduce
  1. In thread P, call delegate_task to start child C. Let its first run finish.
  2. With P idle, run t3 thread send <C thread id> - from a shell with a short prompt.
  3. Wait for C's new run to finish.
Expected behavior

P gets a completion notice and a new run, as it does for a later run that P sends itself with t3_thread_send.

Actual behavior

P gets no notice and no run until something else wakes it. From T3's state DB (read-only), 2026-10-25 to 2026-11-09 13:44 UTC: 731 completed child runs were started this way, and 420 ended with the parent idle and no parent run within 10 s. Of 433 idle-parent runs that did get a delegated task, 2 had no parent run within 10 s.

Root cause: recordSubagentFollowup (apps/server/src/orchestration-v2/Orchestrator.ts) creates the follow-up task, which carries the notice, when the send is a notification, has createdBy: user, continues a usage-limit stop, or has senderThreadId equal to the parent. t3 thread send signs in as an MCP client with no thread, so its send is createdBy: agent with no senderThreadId and matches none of those. The gate is the same in 0.1.8-nightly.20261109.4399 and main (4f0b74e). #31707 reports the same symptom for remote children.

Proposed fix: count a send with no sender thread like a user send: (command.senderThreadId ?? parentThreadId) !== parentThreadId in that gate. A send from a different thread stays excluded. A patch is ready: one line plus a test in DelegatedCompletionDelivery.test.ts that fails before and passes after. Sending T3CODE_THREAD_ID from the CLI would hit assertLiveCaller, which refuses a thread with no active run, and the parent is idle by then.

Impact

Major degradation or frequent failure

Version or commit

0.1.8-nightly.20261105.4218

Environment

macOS 26.6.1 arm64, Claude provider. Checked with the new unit test and with t3_thread_send through the MCP toolkit with no thread scope against a replayed Codex provider (no follow-up task before, one after). The t3 binary and a live provider were not run.

Langage dominant
TypeScript
Étoiles
24.8k
Forks
6.4k
Merge moyen
13 h 9 min
PR mergées (30 j)
187

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de pingdotgg/t3code

Toutes les issues de pingdotgg/t3code

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.