t3x: resolve upstream sync (run 30235353352) - #22
Conversation
Automated review (Claude, on Raj's behalf) — resolver sync PRTL;DR: the rebase and conflict resolution are high quality — I couldn't find anything wrong with the code. All 37 fork patches are intact, the real conflicts were resolved correctly, the resolver's test fixups don't weaken anything, and there's no seam drift. What needs your attention before merging is how to land it and the lack of an independent CI gate — not the resolution.
|
…tton) Closes the review gap on PR #22: the runbook and design spec said "a human merges the PR" but a resolver branch is the fork's series rebased onto new upstream, so main is not its ancestor and GitHub's Merge/Squash/Rebase button reports CONFLICTING and cannot land it. Add a "Landing a sync PR" section to the runbook (force-update main via --force-with-lease, close the PR manually, no branch protection = unguarded, no independent CI on fork PRs so re-gate locally, and rebase the other in-flight worktree branches onto the new main). Point the two "a human merges" references and the design-spec flow at it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Summary
Rebases fork
mainontopingdotgg/t3code@89c5a192f(36 upstream commits,feat(dev): keep worktree dev state isolated on T3 Code dev serversthroughfix(dev): skip browser-blocked ports (#4608)), resolving the conflicts that blocked the daily automated sync.Conflicts resolved
docs/t3x/SEAMS.md(2 hunks): a self-conflict from replaying the fork's own commit history in a different order than originally authored — an earlier-replayed fork commit already carried the fuller table content that a later-replayed (but chronologically earlier) commit was about to reintroduce a narrower version of. Resolved by keeping the fuller/final table content (both rows), matching the doc's state on pre-rebasemain.apps/web/src/components/settings/SettingsPanels.tsx(1 hunk): both upstream (sidebarProjectGroupingMode) and fork (notifyOnNeedsInput) added an entry to the sameuseMemodependency array around the same line. Resolved by keeping both entries.No patches went empty/dropped.
Seam review (docs/t3x/SEAMS.md)
Checked every upstream commit in the merged range that touched a seam file, even where it didn't textually conflict:
apps/server/src/orchestration/decider.ts— touched by202e5609f(thread snoozing). ThehasOpenBlockingRequestfunction thatapps/server/src/t3x/autoResume/guards.tsmirrors is byte-for-byte unchanged (only a new doc comment was added above it). No mirror drift.apps/server/src/http.ts— touched by23b550221(Tailscale dev sharing). TheauthenticateRawRouteWithScopefunction thatapps/server/src/t3x/autoResume/http.tsmirrors is byte-for-byte unchanged. No drift.apps/web/src/routes/_chat.$environmentId.$threadId.tsx— touched by91dfe60a9(thread loading flash fix), which replaced therouteThreadExistsboolean with arenderStateenum. The fork's<AutoResumeOverlay />mount point (sibling of<ChatView>, gated byrenderState !== "ready") still applies correctly — rebased cleanly with no conflict and no behavior change needed.apps/server/src/server.ts(theT3xLayerLive/T3xRoutesLivemount seam) — untouched by this upstream range.One incidental observation, not a seam-review action item: upstream's new notification-coordinator PR added
<NotificationCoordinator />toapps/web/src/routes/__root.tsx, which isn't listed in SEAMS.md — it rebased clean with no fork involvement, so nothing to reconcile, but the doc could note it for completeness in a future pass.New upstream dependency
Upstream added a
packages/tailscaleworkspace package (Tailscale dev-share feature). Requiredvp installto link it —vp run typecheckfailed withCannot find module '@t3tools/tailscale'until then. No fork changes needed here, just a fresh install.Verify fixes (both pre-existing, reproduced identically on pre-rebase
main, not introduced by this rebase)vp run typecheckwas red onapps/serverdue to amultipleEffectProvidewarning (fork-ownedapps/server/src/t3x/autoResume/http.test.ts) — the effect language service fails the check on anywarning-or-above diagnostic, not justerror. Fixed by merging two chainedEffect.providecalls into oneEffect.provide(Layer.merge(...)).vp run lintwas red due to at3code/no-manual-effect-runtime-in-testsviolation (fork-ownedapps/server/src/orchestration/Layers/CrashRecoveryReconciler.test.ts, usingManagedRuntime.make). Fixed with a scopedoxlint-disable-next-line+ justification comment, following the existing precedent inapps/desktop/src/backend/DesktopBackendConfiguration.test.ts, rather than adding the file to the rule'sLEGACY_BASELINEmap — that map lives in an upstream-owned file (oxlint-plugin-t3code/rules/no-manual-effect-runtime-in-tests.ts), and editing it would open a new, undocumented seam.Results
vp run typecheck— green (15/15 packages; only pre-existing informationalsuggestion-level diagnostics remain on unmodified upstream code)vp run lint— green (0 errors; only pre-existing warnings on unmodified files remain)vp run test— green (1705 passed, 7 skipped, 0 failed, across all 14 test tasks)🤖 Generated with Claude Code