Skip to content

chore(v2): merge main into the V2 branch - #14567

Merged
juliusmarminge merged 12 commits into
t3code/codex-turn-mappingfrom
v2/main-sync-1001
Oct 1, 2026
Merged

juliusmarminge merged 12 commits into
t3code/codex-turn-mappingfrom
v2/main-sync-1001

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Merges main (148e6de, 11 commits) into the V2 branch, so V2 stays current with main. A merge commit that resolves the conflicts and adapts two clean merges that were wrong for V2; nothing else.

A refactor PR is stacked on this one: it moves #14527 ("start a new project from just a name") into a service for the project folders T3 creates under its data dir, merged with ScratchWorkspace. Both merge together.

What comes in

Conflicts and how they were resolved

  • provider/Layers/ClaudeAdapter(.test).ts, server.test.ts (V1, deleted on V2): kept deleted.
  • ws.ts: V2's side everywhere. projects.createNew is a stub that fails with "Starting a new project from a name is not available yet.", and the config answer omits newProjectsRoot, so web and mobile hide the feature. The stacked PR implements both.
  • contracts/rpc.ts: both import sets (V2's orchestrationV2, main's ProjectCreateNew*).
  • ProviderRegistry.test.ts: V2's orchestrationAdapter plus feat(web): restart the agent session from cmd+k to load new skills and plugins #14542's invalidateCaches counter.
  • knip.jsonc: V2's script entries plus update-test-shard-weights.ts.

Adapted after merging cleanly:

Follow-up: #14540 is only partly covered by V2

I fed #14540's test frames through ClaudeAdapterV2 in a throwaway probe (not committed).

  • Covered: a subagent's snapshot model is pushed at once as subagent.updated (ClaudeAdapterV2.ts:5516-5535).
  • Not covered: a task_started whose tool_use_id appears only in a subagent's assistant snapshot (main's toolu_nested) gets model: null, and its child thread takes the parent's model. Its parentNodeId is the root turn node, not the owning subagent. V2 records requested models only for Agent tool_use blocks (:5711) and has no owner map for snapshot-only tool calls.

The fix is being ported to ClaudeAdapterV2 as its own PR.

Sharding check (#14025)

  • ci.yml now runs the server in 6 shards on 4-vCPU runners, ordered by WeightedShardSequencer.
  • shardWeights.json lists main's files, 15 of which are V1 tests V2 deleted. The sequencer only looks up weights for files it is given, so stale names are ignored and V2-only files count as fast.
  • I ran the sequencer over V2's 467 server test files for 6 shards: every file is in exactly one shard (53/84/84/81/82/83 files). transferBudgetV2.integration.test.ts lands in one shard, so the single transfer-report artifact still works. Re-recording the weights on V2 would balance the shards better; that is optional.
  • Release workflows, scripts/build-npm-platform-packages.ts, smoke-cli-archive.ts and cli.ts are unchanged on V2 since the last sync, so they are main's versions verbatim, and the preview path (release_channel == 'preview') is untouched.

Verification

  • vp i, then tsc --noEmit exits 0 for apps/server, apps/web, apps/mobile, packages/contracts, packages/client-runtime and packages/shared.
  • Server tests, run in unshare -U --map-current-user -p -f --mount-proc:
    • ProviderRegistry.test.ts, AntigravityProvider.test.ts, NewProject.test.ts, RpcAuthorization.test.ts, weightedShardSequencer.test.ts and scripts/publishOrder.test.ts: 92 passed.
    • OrchestratorReplayFixtures.integration.test.ts, ClaudeReplayFixtures.integration.test.ts and ws.test.ts: 115 passed.
  • Web: KeybindingsSettings.logic.test.ts, ComposerCommandMenu.test.tsx and composerMenuHighlight.test.ts: 34 passed. Shared: path.test.ts: 6 passed.
  • vp lint on the conflicted and adapted files shows no errors. The CommandPalette.tsx warnings were already on V2.
  • vp run knip:check passes.
  • Not run: whole shards or repo-wide checks (CI runs them).

Model: Claude Opus 5.5 (Claude Code)

🤖 Generated with Claude Code


Devin Review

akj and others added 12 commits September 30, 2026 17:54
Co-authored-by: Khai Shern, Toh <khaishern8235@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…14028)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…#14027)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…sh (#14029)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… parent's model (#14540)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d plugins (#14542)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…nup (#14553)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Merges origin/main (148e6de) into t3code/codex-turn-mapping (2330919).
Brings in #10154, #14028, #14025 (side-by-side PR checks and weighted
server shards), #14037, #14027, #14029, #14540, #14542 (restart the agent
session from cmd+k), #14548, #14553 and #14527 (new project from a name).
No new migrations on main.

V1 files V2 deleted (kept deleted):
- provider/Layers/ClaudeAdapter(.test).ts: #14540 pushes a subagent's
  snapshot model at once, and gives a task launched from inside a subagent
  (its tool_use seen only in the subagent's assistant snapshot) that
  subagent as owner and its model. V2 covers the first half:
  ClaudeAdapterV2.ts:5516-5535 emits subagent.updated with the snapshot
  model as soon as it arrives. It does not cover the second: V2 records
  requested models only for Agent tool_use blocks (:5711) and keeps no
  owner map for snapshot-only tool calls, so main's nested task_started
  gets model null and the root turn node as parent. Left for a separate
  ClaudeAdapterV2 fix, not ported here.
- server.test.ts: #14527's test for projects.createNew through the V1
  WebSocket path. The stacked project-folders service PR adds service
  tests instead.

Content conflicts:
- ws.ts: V2's side everywhere. #14527's inline createNewProject (folder,
  normalizeDispatchCommand, dispatch) is not brought in.
  projects.createNew is a stub that fails with "Starting a new project from
  a name is not available yet.", and the config answer omits
  newProjectsRoot, so web and mobile do not offer the feature. Main's
  reasoningMessages flag stays dropped, as in the previous sync. #14542's
  fresh flag on providers.refresh merged cleanly.
- contracts/rpc.ts: V2's orchestrationV2 imports plus #14527's
  ProjectCreateNewInput/Result.
- ProviderRegistry.test.ts: V2's orchestrationAdapter field plus #14542's
  invalidateCaches counter.
- knip.jsonc: V2's probe/verify script entries plus #14025's
  update-test-shard-weights.ts, sorted.

Also adapted (merged cleanly but wrong for V2):
- ci.yml: git placed V2's "Install C toolchain for process-tree fixtures"
  step in #14025's new Typecheck job. Moved back to the Test job, where
  V2 runs the ACP process-tree tests that need cc.
- CommandPalette.tsx: #14542's Restart agent session read thread.session,
  which V2's thread shell does not have. It now uses thread.runtime, as
  V2's other stopSession callers do.

NewProject.ts and its test come in as-is from main; nothing calls them yet.
shardWeights.json lists 15 V1 test files V2 deleted. The sequencer treats
recorded names it does not see as absent and unknown files as fast, so the
split still covers every V2 server test file exactly once.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Oct 1, 2026
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire — 4.9 KiB — 6.8 KiB ✅
Codex Thread snapshot wire — 3.7 KiB — 4.9 KiB ✅
Codex Live turn WebSocket wire — 1.1 KiB — 2.0 KiB ✅
Codex Live turn WebSocket decoded — 20.4 KiB — 29.3 KiB ✅
Codex Live turn messages — 1 — 8 ✅
Claude Total thread wire — 4.9 KiB — 6.8 KiB ✅
Claude Thread snapshot wire — 3.7 KiB — 4.9 KiB ✅
Claude Live turn WebSocket wire — 1.2 KiB — 2.0 KiB ✅
Claude Live turn WebSocket decoded — 20.8 KiB — 29.3 KiB ✅
Claude Live turn messages — 2 — 8 ✅

Baseline: unavailable · PR result: bb607b0 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 106.1 KiB
  • Claude decoded thread snapshot: 106.4 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeapp

macroscopeapp Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This is a broad 53-file sync containing new project and session capabilities, provider behavior changes, npm publication changes, and production deployment workflow changes. It also modifies authorization code and adds static-analysis suppression directives, creating a review surface that requires human assessment.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge merged commit bb607b0 into t3code/codex-turn-mapping Oct 1, 2026
30 of 31 checks passed
@juliusmarminge
juliusmarminge deleted the v2/main-sync-1001 branch October 1, 2026 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants