Skip to content

Support T3-owned delegation in pstack provider dispatch #253

Closed

Description

@fikaventures

Current scope

Support T3 Code as a third parent harness, next to Claude Code and Codex (Eric, 2026-11-06). Start from PR #254, ported to a branch in this repository with fikaventures as co-author.

Acceptance:

  1. provider-dispatch.md has a T3 parent route: pstack picks each role's model and effort. A lane whose provider T3 offers and has enabled goes through T3's delegate_task; any other lane goes through the existing external runner (Eric, 2026-11-06: "any lane for which there is a delegate provider available and configured should go through that delegate provider, otherwise it should go through the external runners"). A named dropout only when neither route can run it. Nothing is silently substituted.
  2. /setup-pstack works from a T3 session.
  3. AGENTS.md, UPSTREAM.md and .agents/triage-backlog.md name three harnesses, and drop the rule that routes a new tool only as an external provider.
  4. verify-open-pstack can run a live lane from a real T3 session, and the live gate for this PR covers T3, Claude Code and Codex.
  5. Gates pass: bun run test, bun run typecheck, bun run static, claude plugin validate plugins/pstack.

Execution brief

Unit of the 2026-11-06 batch. Design: ~/projects/docs/projects/open-pstack/records/2026-11-06-batch-262/design-253.md. Opens after #268 and its fix-forward #270 merge, because it edits AGENTS.md. This session runs in T3 Code, so T3 live tests run here.


Pstack's provider dispatch currently assumes a standalone Claude Code or Codex parent. In T3 Code, host orchestration instructions require T3 delegation for cross-provider models, requested settings, worktrees and background tasks. The conflicting routes cause sessions to bypass the CLI runner without a shared evidence contract.

Add a T3 route at the existing provider-dispatch boundary. Pstack retains role/model/effort selection and review methods. The parent invokes T3's MCP tools; T3 owns worktree creation, lifecycle and cancellation. Standalone routes and the CLI runner stay intact.

Deliver a small JSON request compiler and result normalizer, host-aware dispatch guidance, and repeatable boundary verification. Separate T3 launch evidence from CLI receipts and provider-served-model proof. Refuse unsupported strict enforcement requirements instead of silently weakening them. Do not add an HTTP bridge, CLI fallback, recursive orchestration, global configuration changes, implicit deadlines or model substitution.

Verification will exercise the helper as a process, then pass its request to the real T3 delegation tool and normalize the actual terminal response. Preserve compiled requests, responses, artifacts and repeatable assertions. Existing standalone behavior receives focused regression checks.

Activity

  1. ericlitman commented on Nov 6, 2026

    @ericlitman
    Owner

    We'll support T3 Code as a third harness. Plan and next steps are on PR #254.

  2. ericlitman commented on Nov 6, 2026

    @ericlitman
    Owner

    PR: #272

  3. added a commit that references this issue on Nov 6, 2026
  4. ericlitman commented on Nov 6, 2026

    @ericlitman
    Owner

    Batch 262 closeout for this issue (full record: https://github.com/mobilyze-llc/docs/blob/main/projects/open-pstack/records/2026-11-06-batch-262/closeout.md):

    #253: Support T3 Code as a third harness

    Original text: fikaventures' request (a JSON request compiler and normalizer, no CLI fallback, no implicit deadlines). Rewritten on 2026-11-06 after Eric's words "let's support t3 as a new harness. We're now running inside of t3 so that makes testign easy." Shipped in PR #272 (merged head 30ba229), fix-forward #274. fikaventures' commit is first (author Aiden Lee), the corrections are co-authored, and PR #254 was closed with a pointer.

    1. T3 route by Eric's rule ("any lane for which there is a delegate provider available and configured should go through that delegate provider, otherwise it should go through the external runners"): done differently in one place. A lane on the runtime's own provider that T3 cannot run falls back to the native subagent, because the runner refuses same-provider lanes; Eric answered "Accept native fallback". Proved live only for the delegate_task route (t3:dispatch, claudeAgent, claude-haiku-5-5); the runner fallback, the Codex runtime under T3 and other providers through T3 were not run, by the live gate's representative-selection rule. Reader correction.
    2. /setup-pstack works from a T3 session: not done for proof. The instructions shipped; no live T3 setup run happened. Owned by Prove /setup-pstack from a T3 Code session #280.
    3. Three harnesses named in AGENTS.md, UPSTREAM.md, .agents/triage-backlog.md: done as written.
    4. A live T3 lane in the verifier, and the PR's gate covers T3, Claude Code and Codex: done as written (t3:dispatch, claude:skill-invocation:poteto-mode, codex:catalog on 30ba229).
    5. Gates pass: done as written.

    Original-text items: the JSON compiler and normalizer were not built (the design made a helper optional; none was needed); "no CLI fallback" was superseded by Eric's rule. On "no implicit deadlines": in the probe, the T3 parent model added timeoutMs: 600000 to a wait-mode delegate_task, which T3 documents as not cancelling the child. Writer lanes in T3: Unfret's critical finding (T3-routed writers bypass the writer-sandbox opt-in) went to Eric, who answered "T3 for everything"; #274 documents it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions