upstream: adopt the clean half of the 2026-09-03 T3 batch (65 commits) - #260
Merged
Conversation
(cherry picked from commit 04efa7907e9ec207e2d6af459ce3b2ffd55f6107)
Six repeat contributors remained unvouched. Add their approved accounts to the trust list: - `github:ipanasenko` - `github:nateEc` - `github:maxwellyoung` - `github:tsouth89` - `github:0x4bs3nt` - `github:Adamulek123` This change does not modify runtime or workflow logic. Made by GPT-5.6 Sol in the Codex harness. (cherry picked from commit b21d87243ea637fbb6fb50667e9a8547e1b6c4e8)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit 08aad594f0059d28dd23914f9d37ad4e695fff75)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit 98725df00a729ba226ae8610a3488e5b9168029f)
…weep Upstream's #9129 computed liveness against its own tree. Three helpers it deleted are still called here: `mergeProviderCapacityRefresh` and `ProviderCapacityOverlayBackend` inside ProviderRegistry itself, and `getModelSelectionOptionValue`, which the Prime Agent backend uses to resolve thinking level and service tier. Takes the deletions that are genuinely dead in Pylon --- `mergeProviderSnapshots` and `selectProvidersByKind` --- and restores the rest.
(cherry picked from commit 9a7b1e21e51609266adf657bcab0b43b6bcd445c)
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr> Co-authored-by: Claude Opus 5 <noreply@anthropic.com> (cherry picked from commit ea71a19d4181ce13b0e8f374f45ba9237ee4a9ce)
Takes over #6608 by @x1xhlol. Server: thread.message-sent updates the projection row directly and folds latestUserMessageAt in as a running maximum instead of running refreshThreadShellSummary. Client: thread.activity-appended takes an O(1) append path for in-order, unseen activities on reducer-produced arrays, with a WeakMap id index, and falls back to filter and sort for out-of-order, re-delivered, context-window, and snapshot-loaded cases. Reducer benchmark: 10,000 in-order appends went from 1,180 ms to 70 ms. Change authored by Claude Fable 5.1 running in Claude Code, based on work by @x1xhlol. Co-authored-by: Lucas Valbuena <lucknitelol@proton.me> (cherry picked from commit c2283ce14628127ef1758974ddab4f5b1f89d47a)
…ruma WASM engine (#8360) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> (cherry picked from commit feb3ea7ebf83de2e301adb1f20300b262773ec54)
…aming (#9145) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit 6866fd6b5ccff82333ad4386ce68cdec03531b68)
Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit fc53b273039cf5e0a932582b1fbb56e7223ad4ab)
(cherry picked from commit 5014e5fcdd6e5f4a53d0fea4cbecba733821a854)
…9113) (cherry picked from commit cdbf324aa043b1bc5705159127d2b55f186d1b9b)
…utes (#9058) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Theo Browne <me@t3.gg> (cherry picked from commit 80c708a1fa8986bce0b2d1ba4d35e79d9e4094ba)
…9157) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit c37fd136edf546fd58daeac146548436c1fa38c2)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit 8401f4d85887786fbb773d3fd41b8f07a77624b8)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit f2a914b8588bf3038472c14b129fbc5ddb3a2992)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit fea1af81fdab64a19353224d60b4efa60f929740)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit 9fdafdf114a88bd7309883b4578e74cbe786d04d)
(cherry picked from commit 2ab7973fe06eecf8b0a0d1da8481d926fca1ee1b)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit 941acb4f919bcef337d4d9e1623101bdc30d3616)
(cherry picked from commit a1a2bb1cd9f000f53fbeae752ed5c38f152eadf2)
(cherry picked from commit cde12790d721ab2a90471750fd75d9f5bf13f57d)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit 133db22fae34cfb2e62a806e99d22674b0376f35)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit c15735dd8894f829ce396c922ce4b5a48073f05a)
(cherry picked from commit 43bafd4674841fb8782f5174033b684aa0d83f67)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit 0681d854994ec0ceed0562ae74549ccf8ef2ec41)
(cherry picked from commit f9d1c65d475807f70d29deff71b16a922a61c4c0)
(cherry picked from commit 535c83dea5025e49df12df4a14b4d1dfb7d373ce)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit 827345a07a3d2348abc63e5215e57184024078d8)
(cherry picked from commit 064392ffc7fc58fcc3018fd2ba2df33fbb21f1de)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit 994bd7373cf3a335c204a617604e690ed4c00cba)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit dbc7bfa3f36cc61a3f1a2015e47d71ae9dee5421)
Co-authored-by: Claude Code <noreply@anthropic.com> (cherry picked from commit 355fbd96d5e90b52961ac5f1e035112fc3bad4a9)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit 31eeb443305a4e11c8b20a7c8ff2b3f5e841eb0f)
Co-authored-by: Julius Marminge <julius@mac.lan> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> (cherry picked from commit 66419a1d1b80110c9702edae641bddcc2888fc98)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> (cherry picked from commit 12f1fc427efad4b683835a72bda6f74bebb5d641)
(cherry picked from commit d42254dfb462e4ab23a42d4bef53b1ce00a72396)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> (cherry picked from commit 6a5a18cb1bc9ea878afa1146950439b5d4744110)
(cherry picked from commit 1575ada305b9686b9771df2dca304f391e85a76e)
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.com> (cherry picked from commit 48ba76bc26337f23d1f0991bbac51f996a3333dc)
(cherry picked from commit 9f9359bd8132c425493720080149dcc0d3da9436)
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com> (cherry picked from commit b5f4e8137b3cbd657fbe2b698f9db4e321acbc3d)
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> (cherry picked from commit 5eb4f452ee0fcde7b5bbc93d62de9118b70a33b2)
…122) Co-authored-by: Lars Nieuwenhuis <35393046+lnieuwenhuis@users.noreply.github.com> (cherry picked from commit 18573d60aab1344bf124a044b01445086e910c4c)
(cherry picked from commit 098bf5329727fcd7d973bf842e6b4d50d6e7b924)
… (#9168) (cherry picked from commit 57626eb6eaa436b22260068d23f4e3df5f389cd1)
Three upstream changes applied cleanly but left Pylon-only code behind, because each was written against a tree that does not have these files. - #7272 moved the node:sqlite Effect SQL client into shared and updated its own importers. Pylon's migrations 043/044/047/048/049 and the Prime Agent recovery ledger test still pointed at the deleted relative module. - #9210 landed and returns `snapshotForCwd`, but the commit that declares it on `ProviderInstance` (#8778) is still parked, so the field is declared here to match upstream verbatim. - #8909's new provider-session directory mock predates Pylon's `removeExact`, which Prime Agent admission recovery added.
Both applied cleanly but depend on commits still parked in this batch: #9306 uses `citationThreadRef` from #9146 (inline citations), and #9279 uses `browserProfiles`/`onAddBrowserInProfile` from #7254 (preview browser profiles). Re-land each with its parent rather than carry a branch that does not compile.
#9258 landed and calls `isAbsolutePath`, which upstream exports from mobile's `filePath.ts`; Pylon still kept it module-private. #9129 deleted `THREAD_STATUS_NEUTRAL_ICON` along with its own assertion. Pylon carried a "retains upstream neutral icon metadata" guard over the same constant, and nothing else referenced it, so the guard outlived its premise.
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 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.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
Upstream removed `yaml` from scripts/package.json because nothing there used it. Pylon's prime-artifact-graduation workflow test parses workflow YAML.
Upstream's #8824 tests bind the fake desktop socket under `~/.t3`, which is upstream's default runtime home. Pylon defaults to `~/.pylon-code`, so the CLI looked where nothing was listening and found no desktop. Uses RUNTIME_HOME_DIR_NAME so the two cannot drift apart again.
Pylon's session-scoped auto-compact test interrupted the runtime-event fiber immediately after the second turn closed, so it raced the second `thread.token-usage.updated`. #9128 added a per-send skill scan, which shifted timing enough to lose that race every run. Waits for both snapshots instead.
Adversarial review of the batch-1 resolutions caught two defects in my own work. #9128 has three hunks in mobile's composer command menu. I took two and dropped the third: provider slash commands must only be offered when the trigger opens the message, because a provider expands `/foo` only in that position and otherwise receives it as literal text. `rangeStart` is the line start, so a `/foo` typed on any later line was still offering provider commands on mobile. Web already gates this through `slashCommandItemsForPromptPosition`, so the two clients had silently diverged. Also adds `0x4bs3nt` and `Adamulek123`, two of the six contributors #9131 vouched. Resolving that conflict with `checkout --ours` discarded every name that existed only on upstream's side; I had misread the merged file's context lines as Pylon-side content and only re-added four.
Second adversarial pass caught my restore being too broad. #9129 deleted exactly one symbol here, `DesktopPreviewRecordingFrameSchema`, and it has no consumers. I restored the whole surrounding block on the strength of the neighbouring `DesktopPreviewRecordingSource` schema, which upstream never touched and which apps/desktop does use. The `DesktopPreviewRecordingFrame` interface stays: it is live in the preload, the pip preload, and the preview Manager. Only the unused codec goes, and with it a piece of dead public API, since contracts re-exports ./ipc.ts wholesale.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Upstream moved 151 commits since Pylon's cursor at
beae2147a. The maintainerchose to adopt everything except T3 marketing content, so this is pass one of
two: every commit that applies cleanly, landed in upstream order.
What is here
65 upstream commits, plus 4 Pylon-side commits that reconnect the fork.
The interesting part is that "applies cleanly" is not the same as "is correct
for Pylon". Three upstream changes produced no conflict markers and still broke
the build, because each was written against a tree that does not contain
Pylon's files:
#7272moved thenode:sqliteEffect SQL client into shared and updated itsown importers, leaving Pylon's migrations 043/044/047/048/049 and the Prime
Agent recovery ledger test pointing at a deleted module.
#9210landed and returnssnapshotForCwd, but the commit that declares iton
ProviderInstance(#8778) is still parked.#8909's new provider-session directory mock predates Pylon'sremoveExact,which Prime Agent admission recovery added.
#9258callsisAbsolutePath, which upstream exports from mobile'sfilePath.tsand Pylon kept module-private.#9129("delete dead code") needed the most care. It computed liveness againstupstream's tree, and several helpers it deletes are still called here —
resolveProviderHomePathhas 13 production callers, four of them Prime Agent;getModelSelectionOptionValueresolves Prime Agent thinking level and servicetier;
mergeProviderCapacityRefreshis used insideProviderRegistryitself;and the desktop preview recording schemas are live across the preview stack.
The deletions that are genuinely dead here were taken; the rest are restored in
a separate commit so the carve-out is reviewable on its own.
Two commits that had already landed clean,
#9306and#9279, are revertedhere: both depend on parents still parked (
#9146citations,#7254browserprofiles), and a branch that does not compile is not worth carrying.
Not here
#9385(marketing landing-page quotes) is skipped — every quote names T3 Code.#8808+#9284are skipped as a pair. Upstream added context compaction andreverted it the same day, so adopting both yields a byte-identical tree.
renumbers,
#9348Antigravity, and the vite-plus 0.3.0 bump.Verification
typecheckclean across web, mobile, desktop, server, contracts,client-runtime and shared.
suites, 24 across the touched mobile suites. One run of the server batch
showed two failures in
ProviderRegistry.test.tsthat did not reproduce onre-run or in isolation (57/57); recorded as a flake, not a fix.
vp runandvp test runexit 0 while reporting failures, sothese were read from output rather than exit status.
The ledger cursor is deliberately not advanced — that happens once pass two
resolves the parked commits and every candidate has a decision.
Made with Opus 5 in Claude Code.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.