Repository navigation
Upstream integration cycle: September 24 comprehensive catch-up and orchestration reliability #736
Description
Activity
Initial audit complete: all 18 starting issues and 3 starting PRs have been inspected; acceptance verification and fixes continue. The source inventory enumerates all 481 upstream commits with paths and record references. References are evidence, not final dispositions, and the review cursor remains unchanged.
Priority findings:
- Relay: observed successful Claude plugin relay_delegate calls return legacy JSON job receipts; current bridge requires schemaVersion 1. Read-only live inspection found no relay bindings despite successful delegation calls. Compatibility fix and projection tests underway.
- Claude: failed prompt attachment preparation can strand a running turn. Regression reproduced; independent review additionally found exact-history/model mutation before acceptance and a Stop/preparation race. Fixing all proven paths before declaring readiness. Broader orchestration backlog symptom remains under investigation.
- bug(prime): stock 0.9.5 compiled standalone binary lacks dist/index.js, breaking PrimeAgentDaemonBridge #728: stock compiled Prime CLI lacks the SDK public entry and Pylon-specific native client contract. Patch preserves ACP fallback and accurately classifies the missing-entry limitation. This does not establish native-mode support or background SDK text-generation support. Independent review underway.
- WSL runtime cache: install-timeout, prune, and lock-file follow-ups #150: WSL cache timeout/pruning/recovery fixes in progress.
- feat(providers): add Oh My Pi Early Access support #82: older provider PR has substantive conflicts against current pylon; reconciliation must retain current cancellation and bounded stderr handling. Fresh scoped verification required.
- feat(prime): support abort_and_send_queued capability with fallback to abort #723: capability addition is currently preparatory; product adapter does not invoke the new method. Released daemon support and intended queue entry point require exact assessment.
- feat(contracts,devices,mobile,web): adopt 2026-09-22 upstream resilience and polish batch #731: seven-source batch remains pending; Opus adoption overlaps already-merged feat(models): add Claude Opus 5.5 to model catalog #729 and must be reconciled.
No merges, releases, installations, live-profile writes, or review-cursor advancement performed. Each patch requires separate adversarial review, focused tests, and final-head CI before readiness.
First reviewed PRs are open (not merged):
PR Outcome Verification and limits #737 Classify missing Prime public SDK entry and retain capability-safe ACP fallback Independent review addressed; 35 focused tests passed, 2 skipped; server types/lint passed. Does not enable native stock compiled SDK or solve background text generation; #728 remains open. #738 Correct 15 malformed full source commit IDs in upstream ledger Independent reviewer verified actual commits, matching titles/PRs, unique prefixes, and byte-for-byte unchanged content outside substitutions. Cursor/dispositions unchanged. #740 Prepare Claude prompts before turn admission and fence Stop/retirement during preparation Independent lifecycle review addressed; 176 Claude tests, scoped server types/lint passed. Fixes proven stranded-turn path; broader heavy-orchestration stream latency investigation continues. #741 Bound WSL failed-runtime retry and safely prune scratch under stable install locks Independent review found and fixed active extraction deletion race. 73 focused tests passed, 11 shell executions skipped on macOS; desktop types/lint passed. Stable lock files intentionally retained; live WSL proof outstanding, #150 remains open. CI is running; no merge approval requested yet. Relay investigation also confirmed the installed CLI lacks the bridge's
observecommand, in addition to legacy receipt mismatch; compatibility patch is undergoing independent review. #82 reconciliation has fresh focused tests/types and is under separate adversarial review. #199 external-blocker premise was corrected in an evidence comment; remaining gate is multi-instance publication/hosted validation proof, not open upstream issues.Next implementation wave: provider explicit-refresh cache invalidation, correct PR diff merge-base, GitHub quota reduction, and OpenTelemetry export disable handling. Full upstream disposition reconciliation remains incomplete; enumeration alone is not adoption.
Open PR review, 2026-09-24:
- feat(contracts,devices,mobile,web): adopt 2026-09-22 upstream resilience and polish batch #731: Inspected the auth/WS device update route, local and SSH maintenance, manifest precedence, attachment retry, and relevant contracts. Seven focused test files passed (147 tests). CI is green; no confirmed code blocker. Browser/device runtime evidence awaits explicit approval.
- feat(prime): support abort_and_send_queued capability with fallback to abort #723: Reviewed the negotiated capability check and fallback tests. The runtime API is preparatory: product stop and cancellation still use
abortAndClearQueue. The PR body now states this limit. Its green CI and unit tests cover negotiated, missing-method, fallback, and rejection paths; no end-to-end send-queued product behavior is claimed. - feat(providers): add Oh My Pi Early Access support #82: Old head conflicts with current
pylon. Reconciled in isolated branchfix/omp-reconcile-20260924atfad2d62da4plus MCP scoping fix2ae32b0944. Server, web, mobile typechecks pass; 43 provider server and 157 client/contract focused tests passed before the scoping fix; its 19 OMP adapter tests pass after. Independent adversarial recheck remains open. No merge or release.
Maintainer decisions and landed work:
- Explicit approval received for fix(prime): classify compiled builds without public SDK #737, docs(upstream): correct source commit IDs in review index #738, and fix(server): keep rejected Claude prompts out of running turns #740 after independent review and final-head green CI. Merged commits: fix(prime): classify compiled builds without public SDK #737
1c885ce23e372a8b0142845a29d0208b072ecb07; docs(upstream): correct source commit IDs in review index #73888a688bdf3f35d7e32e70ba3113bc8db24538cff; fix(server): keep rejected Claude prompts out of running turns #740eab374a0161d3f1b2c7b3c40a53cb2d10879b2c7. Only their remote task branches were deleted; local worktrees preserved. - Maintainer explicitly rejected Oh My Pi support and requested a note and closure. feat(providers): add Oh My Pi Early Access support #82 is closed unmerged with that decision recorded. Do not reintroduce it as catch-up work or create a replacement PR.
- Maintainer is going to bed and asked that decisions needing them be recorded while independent work continues. Browser/device approval was conditional on OMP coming from T3; it did not, and was rejected. No broad computer-use permission has been inferred. Remaining merge approvals and applicable UI verification remain pending.
New Claude finding: read-only timing analysis of actual nightly logs showed regular tool_progress heartbeats during long-running tools. Frames lacked task_id but had a parent_tool_use_id associated with a prior task_started; current client projection therefore hid ongoing child progress. Separate mapping fix is under independent review, with lifecycle/unknown-parent/explicit-ID checks. Refined timestamp correlation shows the sampled user message was admitted at 07:10:50 UTC, assistant text was projected from 07:11:16, and the turn completed at 07:21:12. No evidence from that sample proves a logging queue stall or lost message.
Relay compatibility patch has passed independent review, including real installed CLI shapes, receipt backfill, retry attempt attribution, cancellation scope, bounded prior-job lookup and pagination. Final PR/checks follow. Full historical recovery can still take time; missing Relay job files cannot be reconstructed as completed output.
#742 (correct PR diffs) and #743 (explicit provider cache refresh) are open and reviewed. #741 remains under fresh Linux CI following test-fixture lock cleanup corrections. No release or installation performed.
- Explicit approval received for fix(prime): classify compiled builds without public SDK #737, docs(upstream): correct source commit IDs in review index #738, and fix(server): keep rejected Claude prompts out of running turns #740 after independent review and final-head green CI. Merged commits: fix(prime): classify compiled builds without public SDK #737
Progress checkpoint: the actual Claude lost-reply incident was traced to provider session binding overwriting a reserved new admission with the previous provider running status. PR #752 preserves
startingfor that exact reservation and rejects malformed binds; errored/closed sessions fail admission. The strict event admission guards remain intact. Its regression failed on the baseline; 218 focused tests, scoped typecheck/lint and independent adversarial review pass. Final-head CI is pending. The independent reviewer required a real ingestion enqueue/drain test after finding the original synthetic completion had no consumer.This shared server fix applies to all clients, including mobile, but native/device behavior is not yet verified. Delayed buffered prose is being investigated separately from discarded replies. No release or install has occurred.
The three specifically approved PRs #737, #738 and #740 are merged. Oh My Pi #82 is closed unmerged at the maintainer’s request. Further merges remain pending approval. Reviewed PRs #731, #741, #742, #743, #744, #746 and #748 have green checks; #743 still needs combined no-downgrade model-manifest verification with #731. Git safety #751 prevents a stale ref name matching a dirty tracked filename from restoring that file; its independent review and CI are underway.
The source matrix has 239 of 481 exact finalized dispositions at this checkpoint; the remaining sources are still under review, not counted as missing fixes. The cursor remains unchanged. Work continues on coherent usage accounting, Grok background tasks, Relay event handling, buffered delivery and the remaining bounded inventory. Pending product choices and verification requirements will stay recorded here without blocking independent work.
Combined integration verification for #731 and #743, without merging either PR: I applied #743 head
1f7cf3f949onto #731 head0776b0b05ain an isolated scratch worktree. The merge had no conflicts. The resultingModelManifestkeeps the #731 freshness guard after #743's TTL-bypassingforceRefreshpath, so a valid hosted catalog older than the live/bundled manifest is rejected for both normal and forced refresh. The existing tests cover older-hosted retention/reboot and forced refresh with newer hosted data; the combined ModelManifest and ProviderService suites passed 155/155, and the server typecheck passed. No combined branch was pushed. Browser/device verification remains subject to the repository's explicit-approval boundary.Further reviewed fixes are prepared as separate PRs:
- fix(git): prevent stale ref checkout from restoring files #751: prevent stale ref checkout from restoring a same-named dirty tracked file. Independent review and final-head CI pass.
- fix(server): preserve pending turn admission during provider bind #752: preserve exact pending admission while the provider still reports the old turn running. A CI-only test wrapper typing problem was corrected at
dd363c430c; final-head CI is running. Production fix remains independently reviewed. - fix(grok): show monitor and background shell lifecycle #753: Grok background task lifecycle with post-turn polling. Independent review and final-head CI pass; terminal dedup lives for the provider session, and ambiguous active provider-ID reuse fails closed.
- fix(cursor): preserve internal agent errors #754: preserve Cursor internal agent-loop diagnostics instead of masking them as transport errors. Independent review passes; CI running.
- fix(web): expose switch state to screen readers #755: preserve the actual switch checked state for screen readers. Independent review passes; CI running.
- fix(relay): accept delegated thread IDs in activity routes #756: accept long delegated Relay thread IDs, with matching varchar(512) migration. Independent review, 23 focused tests and an isolated PGlite exact-SQL migration/write check pass. Production rollout must apply the migration before the API; nothing was deployed.
- feat(chat): deliver buffered prose at natural boundaries #757: deliver completed paragraphs, code blocks and tight-list items during buffered generation. Independent review and 123 focused ingestion tests pass; CI running. Pylon’s existing list implementation remains; upstream smooth-follow/LegendList changes are explicitly excluded. This reduces delay for emitted prose and does not create prose during tool-only provider phases.
- fix(agents): suppress stale awareness alerts after restart #758: suppress historical Relay completion alerts while allowing newly completed work. Independent adversarial review required ordered lifecycle proof and a pending-admission fence, including a checkpoint-bearing stale completion regression. Focused tests/types/lint pass; CI running.
The #731/#743 combined model-manifest check passed 155 focused tests and scoped typecheck at exact heads
0776b0b05aand1f7cf3f949; forced refresh still cannot downgrade newer model data. #749’s independent review also found and fixed rate-limit fallback fan-out; the final reviewed head is445de7118f, with full CI running.Native #747 build verification remains limited: the tool timed out without an exit status. Patched RNScreens objects and an app binary were emitted, but this is not proof of a successful full build. No owned build process remains and no device was launched.
No additional PRs have been merged, released or installed. The only approved and completed merges remain #737, #738 and #740. The exhaustive source review is split into non-overlapping cohorts, and large optional ports wait for the final dependency/desirability map. The review cursor remains unchanged.
Combined focused verification on a fresh
origin/pylonbase7ed3f711caa36485001538bbe1cb0017b84aa7feapplied these exact open PR heads together, without a combined PR:- Relay bridge #744:
e8674fff2b48fa6a09c512a7de30b0ab8b4cb142 - Claude subagent progress #745:
082ae861de6a92692fd049a7a0d0b9562f9b266e - Exact turn admission #752:
dd363c430c63c38630f3c55cd506d79179000e65 - Paced buffered delivery #757:
6771dc2b637785014749b8e5787497d0297bb06c
The changes applied without conflicts; Git cleanly auto-merged the ingestion test. Focused tests across the Relay bridge, Claude adapter, provider command reactor and ingestion, session-lifecycle decider, and shared subagent runtime passed 479/479. Scoped
t3andwebtypechecks andgit diff --checkpassed. This verifies these patches coexist at their listed heads; it does not replace each PR's final-head CI or browser/device runtime verification.- Relay bridge #744:
Usage merge boundary found while reviewing retention PR #762: source ownership is keyed by
(hostId, provider, resolvedHomePath, volumeId), but summary buckets carry onlyprovider, not source identity.claimSourcescan choose the newest copy of a shared directory, whileownedContributionkeeps an environment's entire provider bucket if it owns any directory for that provider (packages/shared/src/usageMerge.ts).Minimal example: environment A reads Claude homes
{shared: $4, unique-A: $6}and reports one Claude bucket of $10; environment B reads{shared: $4, unique-B: $11}and reports one Claude bucket of $15. Both own a unique source after fingerprint claims, so the current merge includes both full buckets: $25 actual vs $21 expected. Switching the shared source owner to the newestreadAtdoes not solve this mixed-home case. It can also misstate sessions for the shared source.This is a preexisting contract-granularity limitation, not proof that #762's retention work is broken. A compatible fix needs per-source contribution totals (or equivalent attribution) in the usage summary, with an older-client/version fallback. Until then, #762 should claim newest-owner dedup only for summaries whose provider history is wholly duplicated, and this mixed-home case remains open in the catch-up audit.
The first full source matrix covers all 481 frozen-range commits with no duplicate or out-of-range SHA. Independent review is now checking every source group. This is not a completed adoption claim: 96 earlier rows supported only by merged-PR references are explicitly marked unverified until current helper/caller/condition evidence is supplied. Review has already found omitted functional hunks and corrected several false “covered” or cosmetic-only dispositions. The cursor stays unchanged.
The core user-reported fixes (#744 Relay worker visibility, #745 Claude tool progress, #752 admission, #757 paced buffered prose) are independently reviewed, have green final-head CI, and passed a combined isolated verification of 479 focused tests plus server/web typechecks at their exact heads. No additional merge or deployment occurred.
Native concurrency #760 now has stronger CI evidence: the amended macOS job ran all five compiled fixtures with clang and Swift ThreadSanitizer enabled, and all passed. Full app/device verification is still outstanding. Other prepared follow-ups include #759 transfer-report comparison, #761 CSV final empty record, #762 retained usage accounting, #763 bounded desktop quit, #764 mobile deep-link hydration, #765 background model default, #766 SSH device-host handling, #767 preview-host selection, and #768 mobile render recovery. These remain subject to their final-head CI and recorded review evidence; they are not implicitly merge-approved.
Independent review reopened #731 bundled timestamp correctness. Its model content was newer than its timestamp, so the timestamp correction is being verified at a new head with #743. The previous combined test result should not be treated as final readiness for that new head. Intentional aliases and explicit model choices are preserved.
The audit separates confirmed defects, compatible feature candidates, optional refactors, dependencies and actual product decisions. Oh My Pi remains closed and excluded. New findings such as mixed-home usage aggregation, iOS terminal deletion, missing accessible labels and dependency/packaging updates are tracked explicitly rather than hidden by broad adoption claims. Implementation and review continue on authorized independent work.
PR #731 final model-catalog correction: the bundled
updatedAtnow reflects the last Pylon content edit (2026-09-24T07:48:28Z) at head4b2070a0f7. Its former date preceded Pylon's GPT-6 and Opus 5.5 classification edits. The current hosted catalog is undated and remains older under the no-downgrade guard; aliases and stored selections are retained. Independent review passed. Exact combined #731 + #743 focused verification passed 247 tests and t3 typecheck without conflict. Final-head #731 CI is still running; no merge performed.Frozen upstream source dispositions 1–70 of 481
Snapshot: 2026-09-24 09:19 UTC; reviewed Pylon base
7ed3f711caa36485001538bbe1cb0017b84aa7fe. Frozen range:bbedad0278bbf753503184c00e0c09a0eab6679c..e67abcf798f8c4d8458755e3b4dde02c2c1f628b; completed cursor remainsfa1e1715538f6f8ac076761f7821f68479f616ab. Open PRs are pending, not adopted.Review row Upstream index Source Disposition Current behavior / evidence Remaining scope 1 271 bd5dc58c65b87bfd2222e4697c4742b48e639ea4fix(web): client spans reach the trace proxy again (#12332)adopted Merged Pylon PR #693 merge c4e610e; current Pylon apps/web/src/observability/clientTracer.ts + clientTracing.ts mutable delegate and runtime.ts layer None identified in bounded source behavior 2 272 eadeaf228267be215a2e9486f16b876d703dccccfix(bitbucket): preserve rate limits from optional PR reads (#12486)adopted Merged Pylon PR #693 merge c4e610e; current Pylon apps/server/src/sourceControl/BitbucketApi.ts retryAt and pullRequest/BitbucketPullRequestProvider.ts recoverRead None identified in bounded source behavior 3 274 ed6fe339d71863f39a1d5405554a3bac892e55b6fix(build): retain multiple license notices for one package (#12489)adopted Merged Pylon PR #693 merge c4e610e; current Pylon scripts/lib/third-party-licenses.ts generatedNotices decode/flatten and tests None identified in bounded source behavior 4 275 dcdf5e6a013607b42836a270165286181da48296fix(build): parse executable imports without matching source strings (#12488)adopted Merged Pylon PR #693 merge c4e610e; current Pylon scripts/lib/cli-executable-imports.ts TypeScript AST traversal and tests None identified in bounded source behavior 5 278 c03b240265a1d4954536c5c0758ac2b7fa762ba8fix(git): explain fetch failures without exposing remote output (#12485)adopted Merged Pylon PR #693 merge c4e610e; current Pylon apps/server/src/vcs/GitVcsDriverCore.ts fetchFailureDetail and tests None identified in bounded source behavior 6 280 6d68677ff90915c17de06d78bb498d41a1adfe6afix(server): restore secrets when settings persistence fails (#12487)adopted Merged Pylon PR #693 merge c4e610e; current Pylon apps/server/src/serverSettings.ts secret rollback under uninterruptibleMask and tests None identified in bounded source behavior 7 336 ead1dee22916b414906eafdae5f5a1293f16e637fix(web): explain what enabling network access means in its confirmation (#10098)adopted Merged Pylon PR #697 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 8 337 9f0c9f725d4553d34e3c91c13d67ebcc58be5b0ffix(web): reuse current PR status in the sidebar (#12545)adopted Merged Pylon PR #701 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 9 338 6a699f0f2fbd8847d7ec2df8d9245ce8c2eb8707fix(web): stabilize pull request loading layout (#12721)partially_adopted Pylon PR #701 adopted PullRequestCopyableCode and ghost props, but current PullRequestDetailPanel.tsx computes checkoutCommand only from loaded detail and passes null to ghost while loading. Upstream uses handoffSummary or loadingPullRequestCheckoutCommand(reference, repositoryIdentity) to keep checkout affordance/width stable. Adapt loading checkout command fallback with repository identity/handoff context; test loading ghost geometry and eventual detail transition. 10 339 55c24273a025874cdb8a96a25ee0c59eeb4e3051fix(desktop): align preview recording cursors and show input feedback (#12779)adopted Merged Pylon PR #699 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 11 340 7ade2d2c6b37df6f1bc879bfcbf64658b7af2554fix(web): the Run on / Workspace menu closes after a pick (#12685)adopted Merged Pylon PR #697 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 12 341 3cfebf4aa3ce7410806c0ba4cc4d991cc1ce8dbbfix(web): keep portaled menus clickable over Electron drag regions (#12527)adopted Merged Pylon PR #697 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 13 342 5d9e27a596884d30499c7401296916fd729c817ffix(web): render citations in queued messages (#12403)partially_adopted PR #697 UserMessageBody optional renderContextReference persists; queued timeline card absent Queued timeline card belongs to upstream activity-group implementation; review as separate product choice 14 343 2d8f9a8f55d2195ac820c91f0f1e8f66a055f841fix(web): keep the timeline still when the resting composer expands (#12771)inapplicable PR #697 explicitly excluded Tiptap-specific className sync; Pylon uses Lexical composer No Tiptap port 15 344 45e06f48a03354b600782259010ae6222241aff0fix: composer hero reads project name to screen readers (#12397)adopted Merged Pylon PR #697 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 16 345 f6cc6bc7e9cbe1feeb7811ea92d519ad77c76596fix(mobile): respect word wrap in diffs (#12590)adopted Merged Pylon PR #703 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 17 346 adcd90858c3bfece59095465d2f49860ba3dcea9fix(web): allow full contrast in assistant replies (#12405)adopted Merged Pylon PR #697 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 18 347 93349247008517663aa16a3ed145d5b0f3f044fffix(web): pull request chips share the link hover preview (#12719)partially_adopted Independent current proof: ChatMarkdown.tsx:2946 resolves pullRequestPreviewTarget for link URL and :3088 renders PullRequestLinkPreview, shared with link hover behavior. Forgejo host/port behavior excluded because Pylon has no Forgejo provider. Source Forgejo authority/port host handling is excluded because Pylon has no Forgejo provider; supported hosts retain hover preview. 19 348 584450a1f198c8592d28947a0a7a060d28013298fix(web): compact the worktree setup glass popover (#12802)adopted Merged Pylon PR #697 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 20 349 67285e4b8719000eecb9de2a424609ca5c6f0274fix(web): route keyboard submit through the primary worktree action (#12526)adopted Merged Pylon PR #697 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 21 350 c789cd174ae50f50ecb0a34b96a81e00b0f5c823fix(web): skip image inline chip when composer is empty (#12528)adopted Merged Pylon PR #697 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 22 351 f4d979a6c6139ab10aa1013335bd94a313a5b56efix(web): only show notice details when text is clipped (#12760)adopted Merged Pylon PR #697 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 23 352 9f73ca3677faa975be00f0ac55460279671df726fix(devices): recover simulator streams after failures (#12639)partially_adopted PR #699 adds web deviceStream generation/decoder recovery and tests; current web deviceStream.ts retains those paths Upstream source also changed mobile DeviceStreamWebView and shared device stream module; current Pylon has neither mobile device viewer nor shared module. Mobile agent-device feature #12531 remains separate missing scope. 24 353 1ba471a37cd6b0f18820795f4505206f4723a0e3chore(server): bump device tooling versions (#12809)adopted Merged Pylon PR #699 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 25 354 2b178231ebfa597947efb4ec31bf60e0bb9e3128fix: allow more attachments without raising the image payload budget (#12620)adopted Merged Pylon PR #703 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 26 355 051a4057a67ceebc7a36b13678f404b7ee871a46fix(web): device Reconnect starts one stream instead of two (#12808)adopted Merged Pylon PR #699 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 27 356 58f89818e3ada7f680bede396d41ed27eb618203fix(server): tolerate shutting down an iOS simulator that is already off (#12807)adopted Merged Pylon PR #699 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 28 357 411da2a7356dd795b720228e9c834ea9bad0415ffeat(web): use the linked pull request row layout on the pull requests page (#12536)adopted Merged Pylon PR #701 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 29 358 2efb8178d83f4f7c4ccc3ae1165f2a2ded0b2742fix(clients): keep backslashes in copied Codex citations (#12243)adopted Merged Pylon PR #703 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 30 359 f7efb5354a3e6fb5e6b13a658ba57020e2c554adfeat(web): truncate branch names and paths in the middle (#12805)adopted Merged Pylon PR #705 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 31 361 a9ab9049bbbab89fe23dcfb26c3169ef70a0597efeat(web): show the pull request refresh spinning in the detail header (#12833)adopted Merged Pylon PR #705 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 32 362 a4bc7deb992cc3d48dd4a40ee1f84254f190f318fix(web): dismiss composer suggestions with Escape (#12836)adopted Merged Pylon PR #705 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 33 363 a6cb1dd2054c96c5be41980e63594ea51554a552fix(mobile): keep the source worktree when starting a thread on a branch (#12623)adopted Merged Pylon PR #705 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 34 364 6cc7f7006e24283072cc3e0b3ed8ced80c6d71a5fix(web): keep composer controls visible while they fit (#12837)adopted Merged Pylon PR #705 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 35 365 5c5fa5ffb6ab45cadb6f0d873af0242f4f6d2c1cfeat(devices): show installed and running tool versions per host (#12816)adopted Merged Pylon PR #705 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 36 366 3b836f9942143cdcf1ad7f121e78b59476585781feat(devices): show automatic update progress and host retry (#12817)adopted Merged Pylon PR #705 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 37 367 61b25b88d7922a480790066341867f3f8ae42fcbfeat(devices): add read-only update discovery and remote ownership (#12818)adopted Merged Pylon PR #705 explicitly lists this source as integrated; current feature/code retained in Pylon tree Pylon-specific adaptations documented in PR body; no known omitted bounded behavior 38 88 9130d932f4ddb8abab595b7d12553b46a11c7b22feat(web): add composer and PR number shortcuts (#11615)adopted keybinding rules expose composer and PR-number commands through server keybindings and BranchToolbar handlers. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 39 90 112a7088da63ea4fa48fee63dc8f29557c545ed7fix(web): use project monograms for automatic icon fallbacks (#11572)adopted apps/web/src/components/ProjectFavicon.tsx:75-80 routes absent/fallback favicon through ProjectFaviconFallback with project title; :113-114 derives monogram/color via deriveProjectIdentity, with projectIdentity.ts:36 helper and tests. Applies same fallback across project categories; later menu alignment source #99 remains absent. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 40 91 8d7c700c1788c4f42932cd3be541b3c630bd664dfeat(web): clone repositories in the background instead of holding the palette open (#11762)adopted project clone worker and ws RPC preserve background clone state; server tests cover async completion. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 41 92 549d182aaadbf0e1e195d1a8cdc1805200e6751efeat(mobile): clone repositories in the background and gate the draft on the clone (#11774)adopted Current AddProjectScreen starts tracked clone in background when capability supports it (955-994), NewTaskDraftScreen subscribes useProjectClone, gates canStart via cloneBlocksStart (220-238, 1234-1238), and shows ProjectCloneBanner/cancel controls (1453+); older server path still uses blocking clone. Bounded source behavior retained with Pylon adaptations; no live end-to-end claim. 42 93 9d4bb550a6588a462852a7802bc37a3fd62d0a76fix(mobile): scale inline pills with Dynamic Type (#11792)adopted Current iOS T3MarkdownTextShadowNode puts fontSizeMultiplier in chip payload (208-214); T3ContextChipFont reads multiplier (107-109) and shared font drives measurement/image, preserving Dynamic Type scaling. Bounded source behavior retained with Pylon adaptations; no live end-to-end claim. 43 142 96bddf81258090690bfcf4e6a6414aa0dcf1910afix(desktop): paste as text no longer doubles the pasted text (#11958)inapplicable PR #589 reviewed source and explicitly retained Pylon Electron native preview implementation; no source port Native preview architecture differs 44 221 fbc8b960026e408c163ea55db8075bbf1a42d628fix(web): keep thoughts and failed tool calls in one activity row (#12270)deferred_product_decision Pylon does have shared activeWorkRow/LIVE_ACTIVITY_ROW_ID in MessagesTimeline.logic.ts and tests. Current failed-tool case deliberately suppresses work-live and returns a thinking row; upstream keeps failed tool in one activity row. This is a divergent UI behavior, not missing activity-row infrastructure. Trigger: maintainer chooses one-row failed-tool grouping for Pylon; then adapt source behavior and update explicit current failedRows tests, preserving live transient animation boundaries. 45 227 592021f008010ee947c326df0452d093ead8aeb1fix(web): collapse thoughts within tool groups (#12302)deferred PR #668 explicitly says not included; upstream activity-group timeline absent from Pylon Needs independent product/implementation review 46 232 b17cc2ab5d5029f898121798ca19db3288cba616fix(server): bound provider event log records before serialization (#12305)partially_adopted PR #653 explicitly marks partial: bounded provider event log records before serialization Raw ACP frame suppression excluded by Pylon product/diagnostic policy EXC-1 47 242 3fd5d6439d8fd49d173503ecda96500463a39bd2fix(web): keep numbered jumps from stealing browser tabs (#12315)partially_adopted Pylon PR #671 covers folder links/search/diff symlinks; current keybindings.ts and KeybindingsSettings.logic.ts lack source browser/desktop numbered-tab gates. Pylon PR #671 addresses folder links/search/diff symlinks, but current keybindings.ts/KeybindingsSettings.logic.ts lack source isWeb/isDesktop context gates. Numbered browser tab conflict remains to verify; SHA link alone was not adoption proof. Browser numbered-tab navigation conflict remains; source SHA link is partial, not full adoption. 48 299 3bb06ad910389fcfc886bd5156f41dc73f307f80feat(server): export log records over OTLP (#12493)adopted observability config exports log records over OTLP alongside traces/metrics; desktop env bridge forwards configured endpoint/protocol. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 49 301 d99bc5a4d707df2506e60cbb411b8d30022bbf89feat(web): sort pull requests by what is blocked on me (#12508)adopted pullRequestList.logic.ts:1054/1068 defines blocked-on-author/reviewer rankers; :1075/1099 selects ranker by list mode before secondary ordering. No material exclusion found. 50 302 8c3b5bef17a637bf53f297189350359790ef7afbfix(mobile): prefer pull-to-refresh on list screens (#12515)partially_adopted Pylon PR #695 adopted RefreshControl in ArchivedThreadsScreen, FileTreeBrowser and GitOverviewSheet plus alwaysBounceVertical/list handling; current SettingsEnvironmentsRouteScreen remains plain ScrollView without RefreshControl and CloudEnvironmentRows retains explicit refresh button. Source spans nine paths. Assess remaining Settings environments/cloud rows pull-to-refresh UX before final source disposition; do not claim full nine-path adoption. 51 312 82059df1523d070b00ab6f45159115f626a4977efeat(desktop): export main process telemetry over OTLP (#12520)adopted apps/desktop/src/app/DesktopObservability.ts:346 return Option.isNone(raw); apps/desktop/src/app/DesktopObservability.ts:654 return Layer.succeed(Tracer.Tracer, tracer); Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 52 314 a8693eb4ed3a66d72e6b814117e7beeaf0fb5f8bchore(desktop): leave main process metrics export off until a metric exists (#12540)adopted apps/desktop/src/app/DesktopObservability.ts:674 return Layer.mergeAll(loggerLayer, tracerLayer); Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 53 321 b44c1ce5d25ee0d5a5be82e380618a886c19ea96fix(mobile): keep the Android composer placeholder on one line (#12605)adopted Current Android T3ComposerEditorView recomputes hint in onMeasure and uses TextUtils.ellipsize(...TruncateAt.END) (602-629); ComposerPlaceholderTest checks truncation and recovery after width expands (38-57). Bounded source behavior retained with Pylon adaptations; no live end-to-end claim. 54 322 8dd02470b1e7603b8d36a21ae27c510480351f18fix(web): restore providers settings heading (#12552)adopted ProviderSettingsPanel.tsx:202 renders searchableSetting("providers") SettingsSection as the page heading. No material exclusion found. 55 325 dcf8942304cfef382af55c0068cb2f04c86757fcfix(web): keep desktop annotation screenshots under CSP (#12636)adopted previewAnnotation.ts:16 capturePreviewAnnotationScreenshot decodes PNG data URL via dataUrlToFile without fetch; PreviewView.tsx:608 calls it and falls back to comment-only annotation on decode failure. No material exclusion found; Pylon's desktop CSP path retained. 56 326 e36725682bd2935f1bcfdf81660cb569b5f3df29fix(web): keep typed text when a question option is clicked (#12577)adopted ChatView.tsx:9132 calls carryDisplacedCustomAnswerIntoPrompt before option selection and :9134 restores the displaced text into composer draft. No material exclusion found. 57 327 63ff33756c47f127391962458d8388a647e8ed44fix(server): empty Claude homePath shares continuation with ~/.claude (#12624)adopted apps/server/src/provider/Drivers/ClaudeHome.ts:25 if (homePath.length > 0) {; apps/server/src/provider/Drivers/ClaudeHome.ts:30 if (inherited.length > 0) { Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 58 328 52d08a14b9e475371658fabbb12c056c3d3dad67fix(desktop): include SnapShot app text for Flatpak and GTK4 (#12635)adopted apps/desktop/src/snapShot/SnapShotAccessibility.ts:107 return await App.byPid(processId, { timeout: 0 }); apps/desktop/src/snapShot/SnapShotAccessibility.ts:114 const apps = await App.list().catch(() => []); Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 59 329 d6f291303ddc0c9a14f570266a4d9eff6d431593fix(server): surface ACP stderr when cursor-agent exits at session start (#12625)adopted apps/server/src/orchestration/Layers/ProviderCommandReactor.ts:513 return failReason.error.detail;; apps/server/src/orchestration/Layers/ProviderCommandReactor.ts:515 if (isProviderAdapterProcessError(failReason?.error)) { Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 60 330 599c9776eb887d4fff42da7d2daf8aa07ee9a9e2fix(web): align pull request state glyph to top of row (#11268)adopted PullRequestRow.tsx:115 passes mt-0.75 self-start to PullRequestRowGlyph on title line; PullRequestDetailPanel.tsx:1710 uses pl-4 detail alignment. Upstream inline glyph span became Pylon PullRequestRowGlyph component; behavior retained. 61 331 7445aa733ada33e45289e5aa5055f79142556513fix(web): align menu item icons in pull request detail panel (#11263)adopted PullRequestDetailPanel.tsx:1607/1616 and adjacent menu items apply mt-1 self-start to branch/worktree/action icons so wrapped labels align from top. No material exclusion found. 62 335 fa1e1715538f6f8ac076761f7821f68479f616abrefactor(observability): hold OTLP export settings per signal (#12657)adopted server config/CLI observability settings kept per signal, not one global export toggle; bin/config tests cover. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 63 1 c542b781c6c4c766e66dcb764b2142d95600e890fix(desktop): keep the native preview User-Agent so Turnstile passes (#7110)adopted Pylon BrowserSession.ts:179 obtains native Electron partition session and immediately registers permission handlers without getUserAgent/replace/setUserAgent; BrowserSession.test.ts:114-135 asserts effective native User-Agent remains unchanged. This is the exact negative behavior of source #7110, including Turnstile compatibility. No remaining bounded behavior; no live Turnstile login test claimed. 64 2 3486451525ecaf3a8379aa6d08c885c7cc5335e3fix(chat): keep user input outside collapsed work (#11363)adopted apps/mobile/src/lib/threadActivity.ts:279 return entry.activities.some((activity) => activity.workEntry.questionAnswer !== undefined);; apps/mobile/src/lib/threadActivity.ts:1607 if (isStandalone // firstActivityEntry?.turnId !== entry.turnId) { Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 65 3 cfeaca41ae27bdf2c203158d378c87c7308fea2afix(web): preserve preview focus on window return (#11444)adopted apps/web/src/components/ChatView.logic.ts:1457 returns false for focused IFRAME/WEBVIEW as added by source; ChatView.tsx:5954 calls helper on window focus before focusing composer. Test covers both tags. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 66 4 03e135577cbf861c2948981601c070dab038ea11fix(web): complete thread status icons and keep input threads prominent (#11461)adopted apps/web/src/components/Sidebar.logic.ts:808 only recedes working/delegating/monitoring or quiet ready; input/approval/failed stay prominent. Sidebar.tsx:1230 calls it; Sidebar.tsx renders input/approval/monitoring/failed icons. Source input-required override retained via default false. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 67 12 36caf200c2b24c12838570966f5c85786a1fc1f8feat(web): choose the default diff file state (#11484)adopted contracts settings diff default flows to web DiffPanel and PR code tab; clientPersistenceStorage tests reset/retain preference. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 68 14 6cdbf76fa4b0509913046abe6105037ded9e52bbfeat(web): expose each chat message as a heading for screen readers (#11199)adopted apps/web/src/components/chat/MessagesTimeline.tsx:1652 defines MESSAGE_HEADING_LEVEL=3 and passes it at :2064/:3487; ChatMarkdown.tsx:2796 emits nested aria-level for Markdown headings; ProposedPlanCard.tsx:182/:190 passes offset 3. Test covers nested and bare headings. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 69 15 2db675aeffd9cb1e8b5ad76ddd018433b45b02e9fix(usage): respect provider account homes (#11485)adopted UsageService resolves explicit provider account homes; UsageService tests exercise custom homes. Mixed shared+unique accounting remains separate #736. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 70 16 2587c8060c103245b4f970b925977008f2592d1dfeat(web): switch saved environments off instead of removing them (#11478)adopted apps/mobile/src/connection/storage.ts:30 / "set-connection-enabled",; apps/mobile/src/connection/storage.ts:49 Effect.map((document) => document.disabledEnvironmentIds), Bounded source behavior confirmed by current condition witness; no live end-to-end claim. Frozen upstream source dispositions 71–140 of 481
Snapshot: 2026-09-24 09:19 UTC; reviewed Pylon base
7ed3f711caa36485001538bbe1cb0017b84aa7fe. Frozen range:bbedad0278bbf753503184c00e0c09a0eab6679c..e67abcf798f8c4d8458755e3b4dde02c2c1f628b; completed cursor remainsfa1e1715538f6f8ac076761f7821f68479f616ab. Open PRs are pending, not adopted.Review row Upstream index Source Disposition Current behavior / evidence Remaining scope 71 17 5781e2be2b7d079faaf677cc1b39679e9850d833fix(mobile): stop crashing on launch when a thread has a PR stack (#11486)adopted packages/shared/src/threadPullRequests.ts:109-125 copies stack layers before reverse and visible links before sort, avoiding Hermes-missing toReversed/toSorted while preserving order. oxlint-plugin-t3code/index.ts registers ban, vite.config.ts:190 enforces it; focused rule test exists. This is compatibility guard, not broader Hermes API ban from later #151. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 72 18 af0657e3b36d8fc9d2652e83e6e9032272629631fix(mobile): stop alerting that shared content vanished after sending it (#11487)adopted Current NewTaskDraftScreen has consumedIncomingShareIdRef (line 407), includes that receipt in hasImportedIncomingShare (498-502), and sets it immediately after consumeShare (830-832); this prevents the post-send draft-clear frame from raising the unavailable-share alert. Bounded source behavior retained with Pylon adaptations; no live end-to-end claim. 73 19 0e0ddaeedf30698bec131caf040a8e8d7b2e3f37feat(web): add opt-in thread notifications and sounds (#11481)adopted threadNotifications + ThreadNotificationCoordinator route transient completion/input audio via opt-in settings and asset files. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 74 27 d7c71f91d61e68ae35fcc0032847cb42324a8b51feat(web): float the pull request comment composer (#11531)adopted apps/web/src/components/pullRequest/PullRequestCodeTab.tsx:970-1005 positions comment composer floating above bottom-16 and actions button bottom-3 with capability/permission guard; PullRequestDetailPanel.tsx:2838 renders PullRequestCommentComposer. Source also adjusts summary/code tab layout; Pylon floating path preserved. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 75 28 8b3ddf51c59a54411cd02b321cb07f39c927df09fix(mobile): stop crashing on launch before the shell snapshot arrives (#11537)adopted packages/shared/src/projectSettings.ts:68-79 accepts nullable legacy project and checks project==null before reading fields. Mobile selected project may be null before shell snapshot; projectSettings.test.ts:31-39 covers null. Existing web callers remain safe. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 76 31 0a91b9a116117dd5df619fb7c1248cba9cf6f43cfeat(mobile): show startup crashes in Settings → Diagnostics (#11540)adopted Current Stack registers SettingsDiagnostics with diagnostics deep link (202-204); SettingsRouteScreen exposes Diagnostics row (916); route calls Updates.readLogEntriesAsync, parses startup crash records and supports report copy; user install guide documents next-launch access. Bounded source behavior retained with Pylon adaptations; no live end-to-end claim. 77 34 4a39cade982926f607b4606d0f8d92a807f4b0bffix(web): offer recovery from missing pages (#11314)adopted apps/web/src/routes/__root.tsx:109 assigns RootRouteNotFoundView; component provides Pylon-branded missing-page copy and Link to / with replace. Source had T3-branded text; Pylon adaptation is APP_DISPLAY_NAME. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 78 35 e6286839369a29d829aee3c64dd64ce39c626d2ffix(web): retry startup after the server recovers (#11291)adopted apps/web/src/routes/__root.tsx:108 assigns RootRouteErrorView; :357-386 shows error and Retry button calling router.invalidate(), preserving route retry after server recovery. Separate from not-found handling. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 79 37 42b6bcc6f59bd0369377746b0f2ef370c275b624feat(web): add opt-in in-app thread notifications (#11570)adopted ThreadNotificationCoordinator feeds in-app notice state; component and badge tests cover opt-in rendering. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 80 41 dd6ba84dc96f83000388e14b90f6533d5f63315dfix(server): fall back when new worktrees are unavailable (#6208)adopted GitWorkflowService fallback is wired through ws worktree creation; server tests exercise unavailable new worktree path. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 81 42 6e5e986f15b3cbec3588646ddf216f00b4301785feat: badge background thread notifications on desktop and web (#11569)adopted desktop notificationBadge IPC and web ThreadNotificationCoordinator badge test implement background unread badge. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 82 68 73b206f4bf99e7e98ae144a9d9edbf7cb2700fc1feat(web): show each worktree setup step and let users cancel it (#11372)adopted ProjectSetupScriptRunner emits setup steps and cancellation; auth RPC gate and ws entrypoint expose cancel; server tests cover. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 83 76 0dec07d91488e08206ad32f9758a95acd746c424fix(web): keep large image previews from stalling composer typing (#11324)adopted apps/web/src/components/chat/ChatComposer.tsx:5662/:7353 uses memoized ComposerImageThumbnail; component at apps/web/src/components/chat/ComposerImageThumbnail.tsx:6 uses createComposerImageThumbnail asynchronously, with lib/imageCompression.ts:253 cache and size limits. Prevents full image decode during composer rerenders. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 84 77 8ef478eb0a6deeef81c5421dd7bb1c6b8c4d0e7dfix(server): avoid extra round trips for terminal output (#11407)adopted OutputProtocol encodes incremental terminal chunks; ws forwards updates, OutputProtocol test covers read reduction. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 85 78 6f00d3881a197dd33c2cb43c6a11a9e759e56089fix(web): remember panel width for each thread (#11310)adopted apps/web/src/components/ChatView.tsx:10988 passes per-thread widthStorageKey using activeThreadKey; hooks/useResizableWidth.ts:43-100 reads key and commits localStorage only at drag end. Focused test switches storage keys without remount and reloads. Pylon keeps t3code compatibility key intentionally. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 86 80 8b1ea4dd2465f3cf3cfa02d6878beaa1ec22e71afix(desktop): restore Node discovery for WSL providers (#11741)covered PR #613 explicitly says upstream standalone-runtime probe is inapplicable; Pylon staged/mounted Node-based WSL runtimes already resolve and forward version-managed Node PATH; regression tests cover PATH and stdin bootstrap auth No unused self-contained runtime probe added; dependent CLI archive migration remains separate product decision 87 82 955b787e6b9fb8666e84abfa6868671859d72f7efix(server): parse CLI versions with a "v" prefix (#11738)adopted apps/server/src/provider/providerSnapshot.ts:122 const match = output.match(/\bv?(\d+.\d+.\d+)\b/); Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 88 83 05e3bcbc65d43adc70c900f176bec6c095b3b833fix(desktop): keep preview releases out of the nightly update changelog (#11753)adopted apps/desktop/src/updates/releaseNotes.ts:147 ).filter((entry) => resolveDefaultDesktopUpdateChannel(entry.version) === channel);; apps/desktop/src/updates/releaseNotes.ts:139 channel: DesktopUpdateChannel, Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 89 84 ec5ede5e6a1f2f9d564a5834462f47d1b7e5f0ecfix(web): open video attachment thumbnails in the viewer (#11734)adopted apps/web/src/components/chat/MessagesTimeline.tsx:4389 builds attachment video preview and calls ctx.onImageExpand; MediaVideoPlayer.tsx:225 renders Play button for onOpen mode and suppresses inline controls/autoplay. ExpandedImagePreview.ts:127 builds preview, and test covers mapping. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 90 85 494cfac2494095c3f9b24cc16fb73721f84894a4Allow setting T3CODE_OTLP_HEADERS (#11218)adopted DesktopConfig parses T3CODE_OTLP_HEADERS; DesktopBackendConfiguration forwards env to backend, DesktopObservability test covers. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 91 86 47ace94962a714a561d7cfbdbaa4c721ef6b0598fix(web): use consistent PR section toggles (#11763)adopted apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx:233/339/396 uses Collapsible open state and CollapsibleTrigger for description/review/sections; trigger controls chevron and pinned heading behavior; focused test exercises summary toggles. Current code preserves source toggle consistency. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 92 87 33118d9ab263904e4180b3bf2cbf0a36fe0695e2Add T3CODE_OTLP_PROTOCOL to allow protobuf protocol (#11224)adopted DesktopConfig parses T3CODE_OTLP_PROTOCOL and launcher exports it; launcher test asserts http/protobuf default. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 93 94 bcc20249cc0a888430f2006d61c11de176d531cdchore(deps): bump the Clerk stack to current releases (#11764)adopted pnpm-workspace.yaml:23-35 pins Clerk backend 3.17.2, clerk-js 6.31.1, electron 0.0.42, expo 4.6.6, react 6.15.2, shared 4.31.1; :172 points to patches/@clerk__expo@4.6.6.patch, lockfile resolves same versions. Mobile CloudAuthProvider imports @clerk/expo; later 4.6.8 bump #140 is separate. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 94 98 7931227977ca3e6f3354a63467caa634ab79796ffix(server): stop refreshing providers on every config subscription (#11811)adopted ws provider refresh subscription path changed; server regression tests repeated config subscription. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 95 101 014016a62344ab03dbccdb73c3c1861bc4f7e349fix(web): make copy PR link discoverable in keybindings (#11826)adopted apps/web/src/components/settings/KeybindingsSettings.logic.ts:279 labels thread.copyReference Pull Request: Copy Link or Thread ID, and :166 builds searchable rows; test queries pu/pull request/copy link/thread id. packages/shared/src/keybindings.ts:59 binds mod+shift+c; PR route and ChatView consume command. No additional behavior identified after bounded source/current comparison; retain noted Pylon adaptations. 96 105 5ea6439816470288d3f2b6b43635fea41fbbb101feat(web): inline worktree setup rows and async setup scripts (#11832)adopted ProjectSetupScriptRunner async output and setup rows consumed by ChatView, with web/server regressions. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 97 114 5623089aea68ca62811f51321686c259fa4c810ffix(server): disable color probes in worktree setup (#11843)adopted ProjectSetupScriptRunner suppresses color probes for setup command; runner/terminal tests cover. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 98 115 0310cbf9f46ca94e9df0231a3440bca08ac44709fix: keep worktree setup visible after leaving and reopening the thread (#11836)adopted ws setup snapshot retained across thread revisit and ChatView restores it; server and ChatView logic tests cover. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 99 116 b20d29dc438bcabb2c25e85976dc108169bb4c6dfix(desktop): prevent startup from running twice (#11857)adopted apps/desktop/vite.config.ts:47 outExtensions: () => ({ js: ".cjs" }),; apps/desktop/vite.config.ts:44 outDir: "dist-electron", Vite pack splits main.ts into first pack with onSuccess and worker entries into later pack with clean:false, preventing duplicate Electron launch. Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 100 118 2c19283afed1e3b69a9af33360980527aeb37494feat(server): persist the worktree setup send and progress on the thread (#11852)adopted apps/mobile/src/features/threads/ThreadRouteScreen.tsx:1122 return awaitingBootstrapTurn ? { kind: "preparing", preparingWorktree: true } : null;; apps/server/src/orchestration/Layers/ProjectionSnapshotQuery.ts:1748 Effect.map((rows) => rows.map(mapThreadActivityRow)), Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 101 120 5b377e2a047569ff928ccc6b07a900f698332496fix(server): bound Git process bursts to keep connections responsive (#11405)adopted GitVcsDriverCore gitProcesses Semaphore.makeUnsafe(8), runGit withPermits(1) at line 973; test covers bounded subprocess bursts. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 102 128 ae53072af0560c0606202b87b5fdb7e52d48ac5cfix(web): keep the composer ready during background worktree setup (#11883)adopted ChatView.tsx:8362 starts the turn command while :8383 marks promoted draft and opens a fresh composer; :8445 calls restoreFailedBackgroundDraftThread on failure, backed by composerDraftStore.ts:4536. Source startPromise syntax and empty-composer condition are adapted for Pylon queued-input/mixed attachments; background opening and failure recovery remain. 103 131 2a264adc6f6c65f98d4273acaa1af567eca83f2afix(server): explain how to configure a missing Codex executable (#11345)adopted apps/server/src/provider/Layers/CodexProvider.ts:766 (codexSettings.binaryPath === "codex"; apps/server/src/provider/Layers/CodexProvider.ts:765 : Could not start Codex CLI (${codexSettings.binaryPath}). Check Settings → Providers → Co Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 104 138 3efdcc5296f1754e0f3bf7fee5fc2ada510e0438Preserve diff tree order and collapsed folders (#11931)adopted DiffFileTree.tsx:59 computes diffFileTreePositions, :60 holds stable ordering state, :98 supplies sort, and :119-126 reapplies collapsed directories after tree rebuild. No material source exclusion found; ordering and collapse are both retained. 105 139 a5da32750125c3bedb959bf331e5e49e95b95e5dfix(client-runtime): preserve cached turns and older-page loading (#8309)adopted client-runtime threads cache merge/load logic has pagination and sync regressions for older pages. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 106 145 2c16c1d264173d86fc354e9a4c0c78cd42e514b7fix(mobile): block incompatible server connections (#11974)adopted apps/mobile/src/features/connection/EnvironmentConnectionNotice.tsx:20 return "Client not supported";; apps/mobile/src/features/connection/EnvironmentConnectionNotice.tsx:36 return phase === "reconnecting" ? The app will keep retrying automatically. ${error} : error; Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 107 146 f0a0ead946ca3f3f310460a91b7dabb0e3fe4834fix(web): keep PR controls readable in narrow panels (#11962)adopted PullRequestCodeTab.tsx:1093 keeps PullRequestMetaLine shrink-0; PullRequestDetailPanel uses bounded flex/min-width header controls. Source responsive class behavior retained; no backend behavior involved. 108 148 f4600d77dd7c2fa9f10e8f4500882e427fcc7e26fix: reduce GitHub quota use with sharing enabled (#11888)partially_adopted Merged Pylon PR #626 explicitly names this source as integrated; PR code present on origin/pylon PR #626 excludes upstream router hedging/routed-account tests because Pylon has no account router; local credential pinning and quota primitives adopted. 109 152 b12c92f695a6b12116fb2cda40d610bdbe2a9566fix(server): reuse Git index metadata during checkpoint capture (#10792)adopted GitVcsDriver captureCheckpoint reuses Git index metadata path; tests exercise metadata path and fallback. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 110 154 935c55b3778fdeae0e25b250ce2a9fa7e79c0327fix(clients): disable incompatible environments during discovery (#11990)adopted apps/mobile/src/features/cloud/cloudEnvironmentPresentation.ts:24 if (compatibilityError !== null) {; apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx:28 if (!environment.isEnabled && environment.connectionState !== "unsupported") { Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 111 155 8c18b5bb21a5349fbadba8c77456ea34c41b7339fix(antigravity): stop health checks from filling the disk with _MEI folders (#12008)partially_adopted Merged Pylon PR #586 explicitly names this source as integrated; PR code present on origin/pylon PR #586 excludes blanket startup sweep because another driver may own profile files; scoped temp cleanup adopted. 112 157 eed974c122e192de45b54b7dac7ca1a51448c08ffix(server): keep Claude rewind when fork history length changes (#11954)adopted apps/server/src/provider/Layers/ClaudeAdapter.ts:167 if (message.type !== "user" // message.parent_tool_use_id !== null) return false;; apps/server/src/provider/Layers/ClaudeAdapter.ts:169 if (typeof body !== "object" // body === null // !("content" in body)) return false; ClaudeAdapter retains remapClaudeForkTurnBoundaries and calls it during fork rewind, aligning retained conversation message bodies/UUIDs despite metadata length changes. Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 113 164 0f5a1513e09fb41e0d0f86157aff64cc3657975dfix(web): stop the worktree setup card from flashing and shifting (#12015)adopted ChatView setup-card state persists through inline async setup and avoids pending/ready flicker; ChatView logic test covers. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 114 165 c1b2ed6504bbd57440d03c6a5af2736f33be7c65fix(clients): show unsupported environments as neutral rows with their machine icon (#12026)adopted packages/contracts/src/server.ts:882 return config?.settings?.environmentIcon ?? config?.environment.platform.machine ?? "server";; apps/mobile/src/features/connection/CloudEnvironmentRows.tsx:105 const discoveredDescriptors = new Map( Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 115 166 6ee03240bccd9287a8c2246e9547697aa5857998fix(clients): hold the discovered machine icon across relay refreshes (#12030)adopted apps/mobile/src/features/connection/CloudEnvironmentRows.tsx:243 if (props.descriptor !== undefined && props.descriptor !== lastDescriptor) {; apps/web/src/components/settings/ConnectionsSettings.tsx:1492 if (discoveredDescriptor !== undefined && discoveredDescriptor !== lastDescriptor) { Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 116 170 f45c6b4a755905485431872f4a4188de3ed05974fix(web): submit PR comments with Cmd/Ctrl+Enter (#11994)adopted PullRequestCommentComposer.tsx:122 rejects composing/IME keydown, :125 requires Meta/Ctrl+Enter, and :127 blocks repeat before submit("comment"). No material exclusion found. 117 171 e8ca3a82806dff84438d5aba66b693468f7ca426refactor(web): centralize pull request icon state presentation (#11144)adopted pullRequestIcons.tsx exports PullRequestGlyph and PULL_REQUEST_STATE_PRESENTATION; ThreadStatusIndicators.tsx:171/184 reads presentation by state; CommandPalette, LegacySidebar, RightPanelTabs consume glyphs. Pylon composes row glyph/conflict badge in PullRequestRowGlyph rather than every upstream inline icon; shared state mapping retained. 118 178 32e8b2584556c0c55ce0d1d8f72b506cb771d60dfix(web): show private repository media in pull request tabs (#11706)adopted AssetAccess authorization and GitHubMediaFetch proxy private media; PR tab consumes protected assets; tests cover access. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 119 179 aae361c4ef6478e4dcf970d574f3fd38d908e6b9fix(review): show complete counts and load large diffs progressively (#10822)adopted apps/mobile/src/features/review/nativeReviewDiffAdapter.ts:272 if (file.notice) return [createNoticeRow(file.id, "loading", file.notice)];; apps/mobile/src/features/review/nativeReviewDiffAdapter.ts:417 if (cached) return cached; Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 120 180 52ad70ec43b5dcfcdc72ac79c0964da8e4d163dbfix(web): prioritize linked pull requests over automatic diffs (#12142)adopted ChatView.tsx:5001 derives eligibleLink, :5004 defers while PR capability unknown, and :5009 opens linked PR before diff; ChatView.logic.ts computes threshold from file count and changed lines. Source settings copy adapted to Pylon wording; linked-first dispatch condition retained. 121 186 394af73e02238e551db14f44d57f1469dd2942aafix(web): default diff panel to working tree (#12139)adopted ChatView.tsx:2095 explicitDiffOpenRef distinguishes explicit user opens, :2102 selects unstaged scope for automatic diff opens; DiffPanel/store honor that selection. Source settings copy adapted; automatic default is working tree. 122 192 c1738f131d6f0d5c6dfabb3aad46755a25319663fix(server): keep large sparse checkouts on the fast checkpoint path (#12154)adopted GitVcsDriver captureCheckpoint sparse path and VcsProcess fast execution covered by sparse checkout regression. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 123 193 c12ba7581ac00ba2a623ad23283da5d03d34c2d8feat(web): make pull request comments easier to scan (#12150)adopted GitHubPullRequestProvider maps review-comment metadata and PullRequestDetailPanel renders grouped comments; provider/web tests cover. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 124 195 d612d12b8bb278af97b0029f8d48b2403a5f9ee6fix(web): reuse cached GitHub PR details across entry points (#12168)partially_adopted Independent current proof: PullRequestDetailPanel.tsx:510 resolves reference host from project repository identity; :620-632 reads/writes cached detail; useOpenPanelPullRequestUrl.ts:40/60/69 uses same resolved reference and cache. Forgejo host/port behavior excluded because Pylon has no Forgejo provider. Upstream Forgejo host-with-port conditional is excluded because Pylon has no Forgejo provider; GitHub/GitLab/Bitbucket cache behavior is retained. Keep partial designation only if tracking Forgejo parity. 125 197 962bf62921c0ecbc9320f9b071e16b1d41484aadfix(web): show author avatars in pull request previews (#12125)adopted GitHubPullRequestProvider supplies author avatarUrl consumed by PR preview row; provider tests cover avatar mapping. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 126 198 3bee4c286e586c2eb7f8d196a65b4b5ea6a95241fix(server): settle cancelled worktree setup before rollback (#12176)adopted ws canceled setup settlement runs before rollback; server test exercises cleanup order. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 127 199 4abb07eac3d47543b5804e8039633ac8ad7f67d2feat(mobile): port worktree setup progress and agent handoff (#12177)adopted apps/mobile/src/features/threads/ThreadDetailScreen.tsx:505 if (props.worktreeSetup) return null;; apps/mobile/src/features/threads/ThreadRouteScreen.tsx:581 if (!selectedThread) return; Bounded source behavior confirmed by current condition witness; no live end-to-end claim. 128 200 8130a9f13a1ef506f4393423ded21d71f3c9b5e4fix(server): flush checkpoint objects and refs before publishing them (#10944)adopted GitVcsDriver durableWrite uses git core.fsync and applies before write-tree, commit-tree, update-ref at lines 930/996/1014/1031. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 129 202 d42a3bd2ae3e698141b26f6426aa28d8886e1754fix(server): keep ready checkpoints when a later placeholder arrives (#8432)adopted ProjectionPipeline checkpoint readiness guard retains ready state against later placeholder; test covers out-of-order arrival. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 130 203 901db896691da5ab7b7428ef8a5da52883f831ddfix(server): keep VCS waits from blocking turn completion (#11970)adopted ProviderRuntimeIngestion completion path does not await VCS long-tail; decider/ingestion tests cover turn completion. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 131 205 df466c79810046d20c0f3ccc4e51709c5703814efix(web): fall back when pull request avatars fail (#11728)adopted pullRequestPresentation.tsx:430 tracks failedAvatarUrl and :431 substitutes fallback when the current image URL fails. No material exclusion found. 132 208 f17165a76b1a782831eb6a05a4383b27283df15dfix(web): preserve thread reading positions (#12144)partially_adopted Independent current proof: ChatView.tsx:5911 restores atEnd per route; MessagesTimeline.tsx:507 reads remembered position, :511/514 and :941 preserve turn/work-group disclosures through timelineScrollAnchoring.ts store. Upstream spawn-entry/reasoning-message disclosure keys absent; Pylon Agents CTA/turn-workGroups fold model differs. Upstream spawn-entry/reasoning-message disclosure keys are absent because Pylon uses Agents CTA and different fold model; core reading position retained. Consider partial if source-level parity required. 133 210 886c83450797c46ee84ae28fc16c2208cafa965efix(web): folder links from chat open the file tree instead of a broken preview (#10909)adopted FileBrowserPanel.tsx:301 resolves selected entry kind, :305 selects directory path with slash and expands directory handle; chat file-link routing opens browser/tree rather than file preview for folders. No material exclusion found for folder targets. 134 226 4749035bda13b4b6260499caedbc0d69a2f60e6ffix(web): keep composer banners compact and readable (#12166)adopted ComposerBanner.tsx:255 has narrow wrap-actions grid; ComposerBannerStack.tsx:283/285 applies compact truncation and narrow sr-only treatment; notice detail remains in popover. Pylon notice popover is further gated by clipping (source351); no source behavior dropped. 135 233 b4620d595554654c259ec7c0afb3d3d5532959a8fix(server): reject file rewind in shared workspaces (#12306)adopted CheckpointReactor rejects file rewind for shared workspace; ChatView shows unsupported state, with reactor test. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 136 234 67993623afb14c017bb0b959478dc892f9c427dafix(server): capture checkpoints when baseline lookup fails (#12307)adopted CheckpointReactor handles baseline lookup failures and still captures; focused reactor regression. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 137 235 d17f46d7631b178b6834596264f0f44f210d584bfix(server): refresh file search outside checkpoint processing (#12308)adopted CheckpointReactor refreshes file search independently of checkpoint progress; focused reactor regression. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 138 236 fcfd9f911a27ee3b813d64582c53d82dfa2e892bfix(web): keep chat from jumping when the scroll-to-end pill mounts (#12317)adopted ChatView.tsx:1884 stores composer overlay height; :6082 publishScrollToEndClearance updates timeline clearance before scroll-to-end pill layout, preventing anchor jump. No material exclusion found. 139 237 1455cb5c35e50211145073be6ca155d56684f0f4fix(server): checkpoint workspaces with empty nested repositories (#12181)adopted GitVcsDriver checkpoint capture detects empty nested Git repo; focused GitVcsDriver regression. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 140 239 3fd21df62da3191f1abf12a0cd74df6de9ed30a2fix(server): pass Codex image attachments by path to avoid oversized requests (#11050)adopted CodexAdapter.ts:2686–2703 resolves attachment path and returns {type:"localImage",path}; current implementation avoids base64 request inflation. Pylon PR #653 is linked in ledger. Merged Pylon PR #653. Pylon adaptations documented in PR body Frozen upstream source dispositions 141–210 of 481
Snapshot: 2026-09-24 09:19 UTC; reviewed Pylon base
7ed3f711caa36485001538bbe1cb0017b84aa7fe. Frozen range:bbedad0278bbf753503184c00e0c09a0eab6679c..e67abcf798f8c4d8458755e3b4dde02c2c1f628b; completed cursor remainsfa1e1715538f6f8ac076761f7821f68479f616ab. Open PRs are pending, not adopted.Review row Upstream index Source Disposition Current behavior / evidence Remaining scope 141 269 9ea9c3d5d2c444133e3ddff40eecf38737951589fix(web): keep a file-to-symlink type change from crashing the diff view (#11075)adopted diffFileTree.logic.ts:34 merges duplicate path statuses to modified for delete+add type changes; diffRendering.ts:219 includes prior path/current path/type in block identity; tests cover regular-file→symlink. No material exclusion found. 142 279 c557bb10aa7cbb78a50df230d1e8e24af79cb662fix(web): sidebar search matches message content (#11761)adopted Sidebar.logic.ts content match keys and search path include message snippets; CommandPaletteResults.tsx:80 renders ThreadSearchMatchExcerpt for a matching thread. No material exclusion found. 143 283 869347bc26051bba7c3c0274a7dfcae7770d3e3afix(server): retry transient git failures during checkpoint capture (#11665)adopted GitVcsDriver checkpoint calls VcsProcess retry on transient Git failure; driver/process tests cover retries. Current helper/caller/condition and focused regression spot-checked; no live end-to-end proof 144 209 6d1d549441be84f19696ab59ed7e2fbf305280d4fix(diff): collapse files by default (#12190)adopted Merged PR #616 explicitly lists source in six-commit progressive diff series; current diff collapse/default work retained Pylon adaptation and native verification limits in PR #616 145 20 c29976458a7dbbb61c83b3d06ea894869b718607fix(server): open Cursor links in classic IDE mode (#11498)adopted Merged Pylon PR #686 explicitly lists upstream PR #11498 and behavior as integrated Current Pylon tree retains merged behavior; Pylon-specific hardening documented in PR 146 303 de6a230db0bb71d3fa91d8de0ae7067b68253f82fix(acp): accept SDK elicitation requests (#11294)adopted Merged Pylon PR #687 explicitly lists upstream PR #11294 and behavior as integrated Current Pylon tree retains merged behavior; Pylon-specific hardening documented in PR 147 308 cb3d95c17487f3d834a5537f7c3aa0106bc9b5ecfix(server): release oversized pull request diff cache entries (#12523)adopted Merged Pylon PR #687 explicitly lists upstream PR #12523 and behavior as integrated Current Pylon tree retains merged behavior; Pylon-specific hardening documented in PR 148 310 5378f87f99175bded2b9241876319567875aca03fix(preview): recover host registration after request timeouts (#12535)adopted Merged Pylon PR #687 explicitly lists upstream PR #12535 and behavior as integrated Current Pylon tree retains merged behavior; Pylon-specific hardening documented in PR 149 313 efb96939fbb135b9f4de3bff19447200b178b23afix(codex): surface app permission requests as approvable (#7861)adopted Merged Pylon PR #687 explicitly lists upstream PR #7861 and behavior as integrated Current Pylon tree retains merged behavior; Pylon-specific hardening documented in PR 150 318 408ff8ae9bd7eb2e7e90cbfd8b3fcfe63641bf23fix: detect installed editors outside PATH (#12439)adopted Merged Pylon PR #686 explicitly lists upstream PR #12439 and behavior as integrated Current Pylon tree retains merged behavior; Pylon-specific hardening documented in PR 151 319 dfbb11bdd7c3f1a5575cb55d3e3abb12be025727fix(web): show plain text in collapsed thought previews (#12377)deferred Merged Pylon PR #686 explicitly lists upstream PR #12377 and behavior as deferred Depends on separate provider thinking traces review; PR #686 explicitly deferred despite #688 cycle summary listing #12377 152 320 9accc567670da5096e9a694c1adb0d35adb51d9dfix(web): wrap long titles in confirmation dialogs (#12571)adopted Merged Pylon PR #686 explicitly lists upstream PR #12571 and behavior as integrated Current Pylon tree retains merged behavior; Pylon-specific hardening documented in PR 153 332 4a560b4e4ebb37efb7f57805ba79e37f5500bdcafix(web): honor whitespace settings in pull request diffs (#12438)adopted Merged Pylon PR #686 explicitly lists upstream PR #12438 and behavior as integrated Current Pylon tree retains merged behavior; Pylon-specific hardening documented in PR 154 333 0ff87f251dafb32703d5f531e7b248ad0a581ee2fix(web): keep citation comment when popover is dismissed (#10831)adopted Merged Pylon PR #686 explicitly lists upstream PR #10831 and behavior as integrated Current Pylon tree retains merged behavior; Pylon-specific hardening documented in PR 155 334 c14f6015bfe479d313355cb234af1a5c16dbb15ffix(web): keep narrow chat headers readable and aligned (#12453)adopted Merged Pylon PR #686 explicitly lists upstream PR #12453 and behavior as integrated Current Pylon tree retains merged behavior; Pylon-specific hardening documented in PR 156 397 f25a8e4b72c1164f2ab7b1c8481496f168d17f55feat(models): add opus 5.5 without changing existing aliases (#13094)partially_adopted Source #13094 adds Opus 5.5 profile/model, currentModels.claudeAgent entry and updatedAt. Merged Pylon PR #729 has profile/model but origin/pylon currentModels omits claude-opus-5-5; pending PR #731 adds current model and corrected bundle timestamp. GPT-6 current-model classification is merged in #732. Pylon intentionally retains legacy Claude aliases; pending #731 head 4b2070a sets bundled updatedAt to 2026-09-24T07:48:28Z and rejects older hosted catalogs. Verify integrated #731 + #743 before claiming adopted. 157 398 17e34773b148fd7351a44ab39e9616b4073a1fa8Update model manifest with new timestamps and modelspartially_adopted PR #732 covers GPT-6 current-model list; Pylon intentionally retains legacy Claude aliases. Pending #731 corrects bundled updatedAt to 2026-09-24T07:48:28Z, after reconciliation edit; hosted catalog blob 80318721 has no updatedAt and is rejected by dated-bundle gate. Timestamp adaptation pending #731 final review/CI and #743 integrated refresh test; alias omission intentionally rejected. 158 423 f193a6863c494fdfa36a1ef3132e42a7d7b42926fix(server): bypass owned caches on explicit provider refresh (#13109)pending_pr PR #743 independently reviewed; explicit provider refresh bypasses owned caches while background remains cached; CI pending No cursor advancement before merge; combined no-downgrade validation with PR #731 required 159 481 e67abcf798f8c4d8458755e3b4dde02c2c1f628bfeat(observability): honor the OpenTelemetry kill switch (#13355)pending_pr PR #746 independently reviewed; OTLP export kill switch with local diagnostics retained; CI pending No cursor advancement before merge 160 71 0b54e00f9ba9d86b05b462955e84c9944349d55bChange input type from 'full_diff' to 'incremental'skipped_pylon_product_choice Source changes .macroscope/check-run-agents review-bot model/input/label/conclusion policy only; Pylon has its own Macroscope config, so behavior is not categorically inapplicable but requires Pylon CI policy assessment. Optional review policy, no product runtime impact; keep Pylon bot trust/quality thresholds. 161 72 e3792a53f7d7f9ebba37abfca99073f3f1ead2a7Update model and input type in ui-consistency.mdskipped_pylon_product_choice Source changes .macroscope/check-run-agents review-bot model/input/label/conclusion policy only; Pylon has its own Macroscope config, so behavior is not categorically inapplicable but requires Pylon CI policy assessment. Optional review policy, no product runtime impact; keep Pylon bot trust/quality thresholds. 162 97 84192388b3a54ef593d35b64390f99bf6dec6a74Add new GitHub user f-trycuainapplicable Source changes upstream .github/VOUCHED.td contributor allowlist only Contributor trust list is repository-specific; no Pylon code behavior 163 108 e9b055588ab22a060c41abcc37669ae4f44ef8e8Remove labels from effect service conventionsskipped_pylon_product_choice Source changes .macroscope/check-run-agents review-bot model/input/label/conclusion policy only; Pylon has its own Macroscope config, so behavior is not categorically inapplicable but requires Pylon CI policy assessment. Optional review policy, no product runtime impact; keep Pylon bot trust/quality thresholds. 164 109 537dc0fe15242940038c6b964aff861989178c45Remove labels from ui-consistency.mdskipped_pylon_product_choice Source changes .macroscope/check-run-agents review-bot model/input/label/conclusion policy only; Pylon has its own Macroscope config, so behavior is not categorically inapplicable but requires Pylon CI policy assessment. Optional review policy, no product runtime impact; keep Pylon bot trust/quality thresholds. 165 110 970a8730eec2ae7faa89639365c02b03fe53ac4eChange conclusion status from failure to neutralskipped_pylon_product_choice Source changes .macroscope/check-run-agents review-bot model/input/label/conclusion policy only; Pylon has its own Macroscope config, so behavior is not categorically inapplicable but requires Pylon CI policy assessment. Optional review policy, no product runtime impact; keep Pylon bot trust/quality thresholds. 166 111 8b9f6d3d5596f2d9990697ebb1e9b8afa4a1dafdChange conclusion from 'failure' to 'neutral'skipped_pylon_product_choice Source changes .macroscope/check-run-agents review-bot model/input/label/conclusion policy only; Pylon has its own Macroscope config, so behavior is not categorically inapplicable but requires Pylon CI policy assessment. Optional review policy, no product runtime impact; keep Pylon bot trust/quality thresholds. 167 270 ccad9f69aae7465c4ad4ea169d273f61ffac1eb5Use T3 Device panel for mobile testing (#12414)inapplicable Source changes T3-owned agent testing skills; Pylon maintains its own test-pylon-mobile and device protocol instructions Pylon device tooling and skill should evolve under Pylon ownership, not copied as T3 skill names 168 323 7810fb263f5a92b9d438d1eabf408d2ac705e944Add new GitHub user 'yordis' to VOUCHED.td (#12546)inapplicable Source changes upstream .github/VOUCHED.td contributor allowlist only Contributor trust list is repository-specific; no Pylon code behavior 169 324 f9e8f578fa0fb1ea25e458334a28bbb4fe22302dchore: vouch cestercian (#12638)inapplicable Source changes upstream .github/VOUCHED.td contributor allowlist only Contributor trust list is repository-specific; no Pylon code behavior 170 480 9383f4ad71285b9f9a6a9b65f2f961ea2cf4308fchore: add scratchyone to vouched list (#13353)inapplicable Source changes upstream .github/VOUCHED.td contributor allowlist only Contributor trust list is repository-specific; no Pylon code behavior 171 57 06de59b3d67e5be427ce4c7c8d41e91265709aecbuild(server): make the CLI bundle loadable as a Node single-executable (#11316)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 172 58 eb8f6f42a5cad1a5d0bc51eaa16cff13a9c69f45ci(release): build, sign, and publish self-contained CLI archives (#11317)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 173 59 8f90b380f676735f1e3026b5173c45c22d265583feat(server): install preview runtimes from release archives (#11318)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 174 60 13c134c10be163fa5345dd7c39371b6089e352bbfeat(ssh): run preview builds on remotes from the release archive (#11319)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 175 61 c7f23c4668ce3ff2e1b2f63fe51759d1bcc159f8feat(cli): add t3 update for self-contained installs (#11451)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 176 62 af6c138a0de297f94ddef3133e2f47d017b46e94feat(server): manage runtimes as release archives only, never from npm (#11510)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 177 63 07549200dcdc70dce57285276879004024beeaa7feat(desktop): run the WSL backend from the Linux CLI archive (#11511)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 178 64 2c54f2ff17b3ae87bdbe4e072e38bd6f3045eb5bci(release): build CLI archives for five targets, each on its own architecture (#11605)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 179 65 2f7616ef1743de52d24581f7e5724f8f674d9152ci(release): build the JS bundle once and run every platform and architecture in parallel (#11606)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 180 66 91cd91c0872bd52be3b45bea70a9539d1ce6adaafeat(release): publish npx t3 as a launcher over per-platform executable packages (#11607)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 181 67 b70015b6db8ffafd902174f78cb260cc8082fc6efeat(cli): add t3 uninstall for self-contained installs (#11659)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 182 74 d8655ed2fcf5cac3e1742459476b4a392b949367feat(cli): add t3 service restart and make t3 update repoint the service eagerly (#11702)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 183 79 9375c779707fb95c06670db6da87441720b2d2e2fix(release): preserve updates from npm-based services (#11732)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 184 81 ae67c5b8159cb49a68c16f96f7bb64a2e3c6b1c6fix(release): stop npm from pruning the platform packages' shipped node_modules (#11750)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 185 89 f328db30da063a7bce9a9d038fc583d3ff83673achore(server): keep the legacy service entry point to the npm package only (#11770)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 186 147 b84f63bb13f13b1d0ee8537c4d244d6f1efdb987fix(server): block updates under legacy service launchers (#11940)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 187 159 0bf2d6b0109f243add8fb6d727e153e97dd51802chore(release): prepare v0.0.41inapplicable Upstream T3 release version/channel bookkeeping; Pylon has independent product branch, version and release policy No Pylon runtime behavior; upstream version prep/revert superseded 188 160 47ef0177dc18d328e91c64a1641cfe1f37298160Revert "chore(release): prepare v0.0.41"inapplicable Upstream T3 release version/channel bookkeeping; Pylon has independent product branch, version and release policy No Pylon runtime behavior; upstream version prep/revert superseded 189 161 3060cc461458e66842dfb656d979c4acca4dfb20fix(release): restrict stable channels to maininapplicable Upstream T3 release version/channel bookkeeping; Pylon has independent product branch, version and release policy No Pylon runtime behavior; upstream version prep/revert superseded 190 163 fe896e6a90dd2a91e9499c098bb621568a3f341fchore(release): prepare v0.0.42inapplicable Upstream T3 release version/channel bookkeeping; Pylon has independent product branch, version and release policy No Pylon runtime behavior; upstream version prep/revert superseded 191 167 bf55408a5cddbb0f3f7f50d538398e315b5407d0fix(server): resolve Node for standalone helper scripts (#12033)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 192 169 ccf220be205f0e509021dbc8cbda90daa638e20ddocs: make the standalone installer the primary way to get the CLI (#11696)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 193 181 f1b497a5552abf4616a7477b730b78a1274f3db4feat(cli): show installer and update download progress (#12044)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 194 304 bd0b9edac3cf8fe30f8242dd7943a9240810b2c9fix(release): read relay configuration without loading deployment providers (#12518)deferred_product_decision Upstream Alchemy relay release command parsing; Pylon has independent relay deployment pipeline and release ownership Review when adapting Pylon relay deploy workflow; no automatic T3 release-script port 195 306 e74c668d786ffc14f40a9540cd3aede02ba5d62efix(release): strip Alchemy progress before parsing relay state (#12519)deferred_product_decision Upstream Alchemy relay release command parsing; Pylon has independent relay deployment pipeline and release ownership Review when adapting Pylon relay deploy workflow; no automatic T3 release-script port 196 315 803f94e787faef498edecba5dbd07493ac8bc817fix(release): drop placeholder allowBuilds entry that broke desktop builds (#12544)deferred_product_decision Upstream self-contained t3 CLI/archive installer/service/release chain; Pylon currently ships npm-based npx t3 server/service and independent pylon product identity Requires coordinated distribution/runtime/remote/WSL migration choice before porting; archive-only fixes depend on that chain 197 56 683aa87096899aa191e150429415ecc78966f538build(desktop): bundle the main process and stage only its native externals (#11410)deferred_product_decision Upstream desktop main bundle/externals changes build-desktop-artifact and vite config; Pylon has its own packaged artifact smoke and bundling policy Review with coordinated desktop distribution migration; current Pylon helper scripts differ and direct cherry-pick would change packaging 198 119 cc839c42b1adfddd059142bb6d7151719080c4eafeat(web): queue messages sent client-side while the agent is working (#11673)deferred_product_decision Upstream client-side queuedMessageStore and queue/steer follow-up controls differ from Pylon persisted server session input queue and client controls; current tree has no queuedMessageStore Choose whether to introduce client-side queue or adapt specific UX to durable server queue; require cross-client semantics 199 143 719a76ca1dbf5490f1aa33ffb9966301e02be9a9feat(web): choose queue or steer for follow-up messages (#11964)deferred_product_decision Upstream client-side queuedMessageStore and queue/steer follow-up controls differ from Pylon persisted server session input queue and client controls; current tree has no queuedMessageStore Choose whether to introduce client-side queue or adapt specific UX to durable server queue; require cross-client semantics 200 173 f4ef5155fb8aab7776a41fc8ec73d5367f53ba1ffeat(web): add send shortcut and follow-up controls (#12075)deferred_product_decision Upstream client-side queuedMessageStore and queue/steer follow-up controls differ from Pylon persisted server session input queue and client controls; current tree has no queuedMessageStore Choose whether to introduce client-side queue or adapt specific UX to durable server queue; require cross-client semantics 201 368 790be6d755026d61bd13a970dd77176c12ca0425fix(devices): safely reclaim obsolete managed tool versions (#12819)deferred PR #731 final reconciliation 0776b0b removes automatic pruning: install lock ends before helper spawn, so process scan cannot prove older installed version unused Trigger: coherent cross-host install-to-spawn lease; retained installed versions are intentionally not reclaimed 202 23 3138f5716098a331f9a7d4cfc1bcd07118967a83fix(grok): emit task lifecycle for monitors and background shells (#9139)pending_pr Source adds XAiBackgroundTasks.ts and GrokAdapter ToolCallUpdated task lifecycle mapping; current Pylon has no XAiBackgroundTasks and GrokAdapter lacks task.started/progress/completed emissions Implement adapter-owned monitor/shell lifecycle with stopped/late turn fences; focused GrokAdapter and XAiBackgroundTasks tests Reviewed/active Pylon PR #753; verify exact final included behavior before merge. 203 11 8ddd9f7efcdfb6e32b614595242b5986942d37b0fix(desktop): bound backend shutdown wait during quit (#7599)pending_pr Current DesktopApp quit finalizer calls instance.stop() with no timeout; source bounds each backend stop at five seconds and tests multi-backend hung teardown Port to pinned Effect Duration conventions; focused DesktopBackendManager quit finalizer TestClock regression and desktop typecheck Prepared in open Pylon PR #763; not yet adopted on origin/pylon. 204 49 c07575f573dd3a1af4f734297d17f7c951c95f10feat(server): show finished paragraphs and code blocks while the response streams (#11062)pending_pr Current ProviderRuntimeIngestion buffers assistant text until completion or 24k safety flush; source adds finished-paragraph/closed-fence paced delivery, with #11833 tightening list-item handling Open PR #757 ports paced complete paragraphs/fences and tight-list safety; upstream LegendList/list patch is intentionally excluded and remains separately unadopted. Verify exact merged scope, streaming boundaries and legacy token mode. 205 54 1bbca0e78202c8ece73351fccd29f3c99070b82efeat(settings): choose how responses stream, with a warning on legacy token mode (#11678)covered Current Pylon contracts/server/SettingsPanels expose enableLegacyTokenStreaming default off and a confirmation warning when enabled; same user-facing choice and ingestion branch as source #11678 No new port; paragraph streaming sources #11062/#11833 separately missing 206 106 b5b29e7b8b12536a0619fb6df54d20d2b649d6e5fix(server): stream tight list items one at a time in paragraph mode (#11833)pending_pr Current Pylon base still buffers provider text until completion or 24k safety flush. Upstream #11833 tightens list-item delivery within paragraph mode; open PR #757 includes that list safety with paced paragraph/fence delivery. No current-base adoption is claimed. Open PR #757 ports paced complete paragraphs/fences and tight-list safety; upstream LegendList/list patch is intentionally excluded and remains separately unadopted. Verify exact merged scope, streaming boundaries and legacy token mode. 207 95 0f21fcbb6dbabb6d2185a73edf6b865fd64c6019feat(mobile): add a T3 Connect page to the Clerk profile (#11765)deferred_product_decision Upstream changes Clerk mobile profile and headless CLI auth to device grant; Pylon currently uses independent Pylon Connect browser pairing/callback and mobile auth/settings surfaces Requires coordinated Pylon Connect auth migration and cross-client identity decision; do not transplant T3 profile/routes/credentials piecemeal 208 96 dc0869b605f60c2c8afa924035a81c8f98b29385feat(server): use Clerk's device authorization grant for headless connect login (#11794)deferred_product_decision Upstream changes Clerk mobile profile and headless CLI auth to device grant; Pylon currently uses independent Pylon Connect browser pairing/callback and mobile auth/settings surfaces Requires coordinated Pylon Connect auth migration and cross-client identity decision; do not transplant T3 profile/routes/credentials piecemeal 209 104 6dbea7ed0947780694943bd86c4cd22cebbcd8ebchore(mobile): bump app version to 1.2.0inapplicable Upstream T3 mobile version-only bump; Pylon mobile app has independent version/build/update channels Pylon version changes occur in its own release workflow 210 201 88d0c40c8581f8886b8c94496c3e4af105851424chore(mobile): bump app version to 1.2.1inapplicable Upstream T3 mobile version-only bump; Pylon mobile app has independent version/build/update channels Pylon version changes occur in its own release workflow Frozen upstream source dispositions 211–280 of 481
Snapshot: 2026-09-24 09:19 UTC; reviewed Pylon base
7ed3f711caa36485001538bbe1cb0017b84aa7fe. Frozen range:bbedad0278bbf753503184c00e0c09a0eab6679c..e67abcf798f8c4d8458755e3b4dde02c2c1f628b; completed cursor remainsfa1e1715538f6f8ac076761f7821f68479f616ab. Open PRs are pending, not adopted.Review row Upstream index Source Disposition Current behavior / evidence Remaining scope 211 383 76cc9b08f19d89012f16d18f47478c4f7b9b0a6fchore(mobile): bump app version to 1.3.0inapplicable Upstream T3 mobile version-only bump; Pylon mobile app has independent version/build/update channels Pylon version changes occur in its own release workflow 212 466 f5ef0ddb90a8c36584e181b1913e7b8a5df30ffcchore(mobile): bump app version to 1.3.1inapplicable Upstream T3 mobile version-only bump; Pylon mobile app has independent version/build/update channels Pylon version changes occur in its own release workflow 213 263 d547e3b12a1af79e9dd81e422255a12d6ecf70d1chore(deps): upgrade Effect to rc.115 and Alchemy to beta.78 (#12326)actionable_missing Current Pylon pnpm-workspace catalog still pins Effect 4.0.0-rc.112 while upstream source upgrades rc.115/Alchemy beta.78 and syncs matching read-only references Treat as one dependency migration: update package/lock and sync matching .repos references via approved script, adapt pinned Effect APIs, scoped tests/typechecks; do not edit .repos manually 214 264 e3c85ead63c3a69f9be5dbb873b3d87c9b76b43fchore(refs): sync Effect and Alchemy references to rc.115 and beta.78 (#12327)actionable_missing Current Pylon pnpm-workspace catalog still pins Effect 4.0.0-rc.112 while upstream source upgrades rc.115/Alchemy beta.78 and syncs matching read-only references Treat as one dependency migration: update package/lock and sync matching .repos references via approved script, adapt pinned Effect APIs, scoped tests/typechecks; do not edit .repos manually 215 265 74796256868916da550ecbe9b5e37d359a8cb321chore(relay): deploy with the Alchemy CLI and publish client config through an Action (#12401)deferred_product_decision Upstream relay deployment switches to Alchemy CLI and Action-published client config; Pylon has independent relay deployment and client configuration ownership Review Pylon deploy pipeline and external release authorization as one unit; do not port T3 relay release workflow blindly 216 220 d4d5d12e8ba086cfbf79ca3adeb4156b46ead665fix(shared): keep the newest shared usage scan (#10315)pending_pr Pylon PR #762 ports newest shared usage fingerprint owner scan alongside index228; independent review and focused regressions. Pending CI/merge; do not duplicate. Open PR #762. 217 381 80d9c181da41ee3890791c9b65018ce093e7bc9efix(contracts): old message-sent events without turnId no longer stop the server from starting (#12763)pending_pr PR #731 includes ThreadMessageSentPayload decode default null and legacy persisted-event regression; reconciled branch 0776b0b under independent review Current origin/pylon still lacks fix until #731 merge; do not dispatch duplicate 218 478 f1add18ae1560f509405a5eece07f3cfb1cc850ffix(shared): preserve final quoted empty CSV records (#11425)pending_pr Pylon PR #761 commit 0886415 ports exact CSV/TSV/BOM/row-limit rowStart parser fix; independent review PASS and focused tests. Pending CI/merge; do not duplicate. Open PR #761. 219 373 1eeeabb26f654c679efe265cd03edf69c3df3a6ffix(mobile): use a proper pull request icon on iOS (#12855)pending_pr PR #731 explicitly lists upstream #12855 integrated and independently reviewed at reconciliation head 0776b0b Do not duplicate; pending green CI/merge 220 375 1de563c1491c7d82563e4553bf5bf689ce6adbb9feat(devices): offer manual updates in tool version details (#12877)pending_pr PR #731 explicitly lists upstream #12877 integrated and independently reviewed at reconciliation head 0776b0b Do not duplicate; pending green CI/merge 221 377 33cb911ceb89d55b812f486d4e001d0f86d77680fix(mobile): stop iOS autocorrect from rewriting search queries (#12949)pending_pr PR #731 explicitly lists upstream #12949 integrated and independently reviewed at reconciliation head 0776b0b Do not duplicate; pending green CI/merge 222 394 aff9318bf46beaf05cc7155b428d3f0b8711efd2fix(web): retry failed attachment uploads after reconnect (#10338)pending_pr PR #731 explicitly lists upstream #10338 integrated and independently reviewed at reconciliation head 0776b0b Do not duplicate; pending green CI/merge 223 395 da6a85b1365993d0ff2a79698cd82498de247d8afix(web): respect panel motion in composer transitions (#11064)pending_pr Open Pylon PR #750 explicitly integrates source; targeted tests and independent review documented in PR body Do not dispatch duplicate; pending merge/CI 224 396 7c2702d68ae2e10fa9d3a08c996ed47c393dcffdfix(web): read panel animation settings in the composer (#13098)pending_pr Open Pylon PR #750 explicitly integrates source; targeted tests and independent review documented in PR body Do not dispatch duplicate; pending merge/CI 225 434 f22331240ed1a97fae560e314bffb75fe39db8cafix(server): generate PR diffs from branch changes (#13170)pending_pr Open Pylon PR #742 explicitly integrates source; targeted tests and independent review documented in PR body Do not dispatch duplicate; pending merge/CI 226 435 68607c5a99147710b92228e0642f6c0a642e32a6fix(web): preserve nested scroll behavior in chat timeline (#13167)pending_pr Open Pylon PR #750 explicitly integrates source; targeted tests and independent review documented in PR body Do not dispatch duplicate; pending merge/CI 227 449 5975ec78b7eaff654e6183b99f8de7a05591e99dfix(server): background PR checks spend less GitHub quota (#13189)pending_pr Open Pylon PR #749 explicitly integrates source; targeted tests and independent review documented in PR body Do not dispatch duplicate; pending merge/CI 228 450 18de6bb328059703b5d1b0661610076e3c0fa2d4fix(server): background PR sync reads summaries in batches (#13198)pending_pr Open Pylon PR #749 explicitly integrates source; targeted tests and independent review documented in PR body Do not dispatch duplicate; pending merge/CI 229 451 eafb4a9340bd2c2271b7c8fac7eddd55beea3972fix(server): GitHub PR lookups stop probing owner-qualified heads (#13200)pending_pr Open Pylon PR #749 explicitly integrates source; targeted tests and independent review documented in PR body Do not dispatch duplicate; pending merge/CI 230 473 e4eb9977f0b02b29cb2ee361b0c433c685e87615fix(server): stop replaying old agent alerts on restart (#13340)pending_pr sol_prime_bridge AgentAwareness patch worktree relay-old-agent-alerts; no PR yet; independent review found duplicate null tombstone regression and fresh-error test gap Await corrected frozen patch, focused tests, adversarial review and PR; no duplicate dispatch Reviewed/active Pylon PR #758; verify exact final included behavior before merge. 231 267 56a9bf2bd7d3dcdae722a5de84578909dc11aedafix(git): prevent stale branch selections from restoring files (#10574)pending_pr Current GitVcsDriverCore.switchRef checkout passes checkoutArgs without --; stale branch name matching a dirty tracked file can make git checkout restore/discard edits Add -- pathspec separator, preserve remote tracking/detached refs; focused real-Git regression from source and server typecheck Reviewed/active Pylon PR #751; verify exact final included behavior before merge. 232 21 6fd68f5c3e7c81a9650ba36df32f2241912e00bafeat(source-control): support Forgejo and Gitea with fj and tea (#11436)actionable_missing Current Pylon has no Forgejo/Gitea/fj/tea source-control integration; source adds server discovery/CLI/PR provider plus contracts, web/mobile presentation and docs Large coherent provider integration; preserve Pylon auth/environment scopes and projected PR authority; focused discovery/PR sync/client tests and local/remote modes 233 225 03950089ffa5cecf0ce731227f58551f6437495ffeat(web): pull request files can be marked as viewed (#7721)actionable_missing Current Pylon lacks viewedFiles/mark-file-viewed contract, persistence and PR code-tab controls; source adds generic provider API and per-environment viewed state, including Forgejo final-state adapter Large cross-provider feature; port with current GitHub/GitLab/Bitbucket/Azure providers and retain Pylon environment ownership; if Forgejo port follows, include its getFileRevisions adapter 234 214 c4ca1b0f94e56bd93899704f03015d51948a6b4dfeat(settings): add automatic storage cleanup per machine and project (#11598)actionable_missing Current Pylon has no storageCleanup/worktreeCleanup settings, server cleanup service or storage settings route; upstream defaults all retention rules off and adds opt-in per-machine/project controls Large cross-layer opt-in feature; preserve live worktrees/leases and Pylon user data boundaries, inspect all deletion triggers and reversals, focused reactor/persistence/web tests 235 69 1ced38a6647b7f466b535b4b413ca4a74303da8efix(server): skip device hosts that resolve to the local machine (#11698)pending_pr Current Pylon lacks localSshDeviceHost resolution/filtering and selected-environment device-host test flow; upstream fixes self-target SSH aliases and probes across selected environments Reviewed Pylon PR #766 includes server local SSH and adapted web companion source; verify final exact behavior and green CI before merge. 236 70 8984f8103d0836c0b340fe70cd053428d622a8c3fix(web): test device hosts across selected environments (#11699)deferred_dependency Source web/docs device-host settings relies on deviceHostsSettings.logic introduced by index48; current DeviceHostsSettings writes only props.environmentId. Server local SSH behavior is a different source. Revisit with index48 multi-environment settings semantics; current PR #766 may adapt only selected portions, verify exact scope. 237 277 80c1f771b39674ada4d3724610f08fba855fdd49fix(relay): accept delegated thread IDs in activity routes (#12484)pending_pr Current relay router has default 100-char parameter cap and relayAgentActivityRows/relayDeliveryAttempts threadId varchar(191); delegated thread IDs can exceed both; upstream raises router and DB columns to 512 with migration Coherent relay API + schema migration; use Postgres skill, preserve Pylon relay identity and deploy workflow, test >191-char delegated IDs and route limits; no release without approval Reviewed/active Pylon PR #756; verify exact final included behavior before merge. 238 40 9bf349cf6b3988dd01e2d9871b99e1be883aaa41fix(cursor): preserve internal agent errors without transport labels (#11365)pending_pr Current CursorTransportFailure regex treats every RetriableError as transport; source exempts [internal] agent-loop failures so provider diagnostic is preserved Small provider-owned regex/test port; verify ordinary retriable transport errors still map to stable user message Prepared in open Pylon PR #754; not yet adopted on origin/pylon. 239 30 20a8f1de3668e0ff4da236d75258e2184a68d727chore(mobile): enable noUncheckedIndexedAccess and noImplicitOverride (#11538)actionable_missing Current apps/mobile/tsconfig.json has strict:true but lacks noUncheckedIndexedAccess and noImplicitOverride; source enables both and fixes affected mobile code Coherent mobile compile-hardening; adapt to Pylon-native code, run mobile scoped typecheck and affected focused tests; lower priority than behavioral fixes 240 238 5f225395637cb347cfe416c649825a8c7c210014chore(review): keep review bots out of the vendored .repos references (#12333)skipped_pylon_product_choice Source adds review-bot exclusions (.macroscope/ignore.md, .coderabbit.yaml) and vite ignore for read-only .repos. Pylon already ignores .repos in vite lint/test and has Macroscope config but no same review-bot ignore files. Optional review policy: check whether Pylon actually runs Macroscope/CodeRabbit on .repos before adding bot exclusions; no runtime behavior. 241 228 675869d2b0f9e059d5950b80390c0cad1cb1590efix(usage): preserve saved totals after transcript cleanup (#12304)pending_pr Current durable usageScanCache is per-file and UsageService drops totals when transcript file/root disappears; source retains previously saved usage across cleanup, rename and restart without double-counting moved files Independently reviewed Pylon PR #762 preserves saved usage after cleanup; verify final exact behavior and green CI before merge. 242 281 8ebb6112377a110afb956ac01fb44fee68f5709cfix(ci): accept V2 transfer reports without cross-scenario comparisons (#12492)pending_pr Current .github/scripts/thread-transfer-report.cjs only accepts v1 and compares ceilings without comparable fixture guard; source allows v2 and suppresses V1/V2 comparisons Small CI script/test port; validate both v1 and v2 fixtures; no product runtime effect Reviewed/active Pylon PR #759; verify exact final included behavior before merge. 243 477 21e2b7de0062a3c1dca7209ca48b736dd9a36c84fix(web): switches announce their real state to screen readers (#11580)pending_pr Current web Switch passes aria-checked=undefined when not mixed, overriding Base UI computed checked state; source only supplies aria-checked for mixed and tests true/false/mixed static markup Small UI primitive fix plus accessible-state regression and web scoped typecheck Reviewed/active Pylon PR #755; verify exact final included behavior before merge. 244 36 ca2cc1339bbd1904b932c3a92d23a2c0ffe1d267feat(web): add optional compact sidebar rail (#11525)adopted Merged Pylon PR #680 intentionally adopted optional compact sidebar rail/list/row refinements; current Pylon retains compact mode default-off with Pylon adaptations. Upstream later reverted the feature in source index55, but Pylon keeps this independent product behavior. Do not apply upstream revert to Pylon; verify source-specific row behavior in final independent compact-sidebar audit. 245 43 77bca8b2d76a1f42552e5eee7d277fcb1160347afeat(web): add compact thread list mode (#9417)adopted Merged Pylon PR #680 intentionally adopted optional compact sidebar rail/list/row refinements; current Pylon retains compact mode default-off with Pylon adaptations. Upstream later reverted the feature in source index55, but Pylon keeps this independent product behavior. Do not apply upstream revert to Pylon; verify source-specific row behavior in final independent compact-sidebar audit. 246 44 df7ccc8fd01f5d2a1d8ec21bef8f9c59398fe913feat(web): refine compact thread row badges (#11644)adopted Merged Pylon PR #680 intentionally adopted optional compact sidebar rail/list/row refinements; current Pylon retains compact mode default-off with Pylon adaptations. Upstream later reverted the feature in source index55, but Pylon keeps this independent product behavior. Do not apply upstream revert to Pylon; verify source-specific row behavior in final independent compact-sidebar audit. 247 45 7b61099886f3aac139ad43fb73873c73ba7baf4ffeat(web): show the linked pull request in the compact sidebar rail (#11652)adopted Merged Pylon PR #680 intentionally adopted optional compact sidebar rail/list/row refinements; current Pylon retains compact mode default-off with Pylon adaptations. Upstream later reverted the feature in source index55, but Pylon keeps this independent product behavior. Do not apply upstream revert to Pylon; verify source-specific row behavior in final independent compact-sidebar audit. 248 55 d81278aa6b272bb3d3314266c6d17f22504d19d6revert(web): remove the compact sidebar (#11685)skipped_pylon_product_choice Source #11685 removes prior upstream compact sidebar rail/list/settings implementation; Pylon currently retains its independently owned compact sidebar No automatic port of upstream removal; preserving Pylon product choice 249 309 823119350ee29cca434b1295aa5c560f4c9ef98afeat(mobile): view and control agent devices (#12531)actionable_missing Current Pylon mobile has no features/devices route, DeviceStreamWebView, device state, or shared client-runtime device stream module; source adds mobile view/control of agent devices using shared stream runtime Port with omitted mobile/shared portion of earlier 9f73ca3677 recovery and current web device stream; verify iOS/Android local/remote/tunnel, input and background/reduced-motion behavior 250 273 9118b6d3e868db161ca3f330c0a8011527348dcefix(mobile): synchronize native permission registry access (#12482)pending_pr Pylon lockfile still uses expo-modules-core 57.0.14/expo-notifications 57.0.15 without upstream iOS synchronization patches; source patches native permission registry and notification delegate/pending-response races Port as pinned native patch pair with regression fixture scripts; mobile build/typecheck and iOS simulator verification, no physical release without approval Reviewed/active Pylon PR #760; verify exact final included behavior before merge. 251 276 4c61e3d7ecc4d9957c243677d35dd3313a37c067fix(mobile): synchronize native notification delegates (#12483)pending_pr Pylon lockfile still uses expo-modules-core 57.0.14/expo-notifications 57.0.15 without upstream iOS synchronization patches; source patches native permission registry and notification delegate/pending-response races Port as pinned native patch pair with regression fixture scripts; mobile build/typecheck and iOS simulator verification, no physical release without approval Reviewed/active Pylon PR #760; verify exact final included behavior before merge. 252 440 96c4bfa0a27f776f7cd17df7c7115c3de79ee399feat(providers): check remote compatibility ranges (#13130)actionable_missing Current Pylon lacks providerCompatibility.ts and remote compatibility range projection/maintenance/UI; second source restores complete ranges for all harnesses after initial introduction Port two-source final state after #731/#743 manifest integration; preserve Pylon provider identities/maintenance gates, test every harness and local/remote clients 253 471 d4cd7d5c33122473da22ae118c93477ef7e38310fix(providers): restore compatibility ranges for every harness (#13328)actionable_missing Current Pylon lacks providerCompatibility.ts and remote compatibility range projection/maintenance/UI; second source restores complete ranges for all harnesses after initial introduction Port two-source final state after #731/#743 manifest integration; preserve Pylon provider identities/maintenance gates, test every harness and local/remote clients 254 438 ca864a25b14813e390cbcaeb334b97cd61717ce3chore(models): use GPT-6 Luna for text generation (#13115)pending_pr Current DEFAULT_TEXT_GENERATION_MODEL in packages/contracts/src/model.ts remains gpt-5.6-luna despite GPT-6 current-model catalog adoption; source changes helper default to gpt-6-luna Pylon PR #765 prepared and independently reviewed; changes only unset text-generation default to GPT-6 Luna, explicit selections retained. Merge approval is product decision. 255 384 1262d2f3ab2940c1d47ca4f5c4ca42e5c7259765feat(server): let t3.json limit or disable submodule init in new worktrees (#12953)actionable_missing Current Pylon GitVcsDriver always initializes submodules in new worktrees and lacks t3.json/project/server scoped submodule policy; three-source chain adds resolver and controls Port final chain as one cross contracts/shared/server/web/mobile unit, preserve Pylon project settings precedence and worktree setup receipts; tests for disabled/limited submodule init and remote clients 256 385 742173a13250bcba880b700aaead34e1b0810dfffeat(settings): resolve t3.json inside the project settings resolver (#12954)actionable_missing Current Pylon GitVcsDriver always initializes submodules in new worktrees and lacks t3.json/project/server scoped submodule policy; three-source chain adds resolver and controls Port final chain as one cross contracts/shared/server/web/mobile unit, preserve Pylon project settings precedence and worktree setup receipts; tests for disabled/limited submodule init and remote clients 257 386 0141bc2bf5fcf52a563240a6bce4b58050496db5feat(settings): choose how new worktrees initialize submodules (#12955)actionable_missing Current Pylon GitVcsDriver always initializes submodules in new worktrees and lacks t3.json/project/server scoped submodule policy; three-source chain adds resolver and controls Port final chain as one cross contracts/shared/server/web/mobile unit, preserve Pylon project settings precedence and worktree setup receipts; tests for disabled/limited submodule init and remote clients 258 437 e4422eec752e8cce46af2865d8fbd3d5b7468a2afix(desktop): find linuxbrew node for the WSL backend (#7827)pending_pr Pylon PR #769 commit 3069ad2 adds Linuxbrew Node PATH to SSH/WSL remote lookup while preserving Pylon npx/service identity; independent review PASS, 20 SSH tests and scoped lint/typecheck pass. CI pending, not merged/released. Open PR #769. 259 121 a37b85279d71f958482cb8b6fef1886cdb43f364perf(server): speed up worktree fetch and checkout (#11633)actionable_missing Current GitVcsDriverCore worktree add lacks checkout.workers override and fetchRemote always fetches all refs; source uses configured/parallel checkout and targeted branch fetch with safe fallback Performance port after Git safety fix; preserve smudge filters/hooks, progress, remote ref parsing and safe diagnostics; real Git regressions 260 122 9ea892e3b365faff31eed294ac38f70d122656b2fix(client): show thread state changes before remote replies (#11408)actionable_missing Current useThreadActions awaits settlement, pin, snooze, and reorder command results, and Sidebar attemptSettle navigates only after success. Its optimisticDrop is confined to drag/drop. The serial client command scheduler and durable server event queue do not project these lifecycle changes before RPC replies. Upstream wraps commands with a pending Atom overlay, rollback on failure, and receipt snapshot-sequence reconciliation. Useful compatible latency/UX improvement, not a proven data-loss bug. Test delayed remote replies, rejection rollback, concurrent actions, and web/mobile render parity before adoption. 261 194 19ee856ec099dddb94e28a3f933ec7c2575ed5a2fix(server): propagate linked pr changes and settle threads immediately (#12161)actionable_missing Current PullRequestSyncReactor still periodic-sweeps linked PRs; source subscribes to link/domain events and propagates terminal changes for immediate settlement, with client cache tests After PR #749 quota changes, port event-driven path preserving Pylon multi-PR authority and receipt/drain semantics; tests for newly linked merged PR, failed stack read retry and immediate settle 262 137 7235701de052658cd78cb029b0df71af4b8dc21ffix(server): release preview hosts after unanswered requests (#11381)covered Current PreviewAutomationBroker.ts awaitResponse timeout disconnects unanswered host queue and fails with PreviewAutomationTimeoutError; later merged PR #687/#12535 retained this behavior with generation fence Original source #11381 behavior superseded by hardened later implementation; no duplicate port 263 149 87a12b53fdff7e2e0318af3edea54005557cea56fix(usage): refresh limits when the tab opens (#11928)actionable_missing Current web/mobile Usage Limits refreshes providers only on manual action; source refreshes on entering Limits with per-environment cooldown, connection gating and late-environment handling Cross-client usage refresh port; avoid provider model sessions and duplicate StrictMode/remount calls; tests for reconnect, rapid tab return and in-flight new environment 264 135 438465d6b7dd2e50dd38862a0db1252d2d72ecfcfeat: add customizable soft-tint project monograms (#11845)actionable_missing Pylon has generated web monogram fallback but no customizable soft-tint ProjectMonogram/icon override contract; upstream feature and final icon variant/lint guard absent. Hermes Intl.Segmenter crash source depends on that absent schema. Review four-source final chain as optional compatible feature; if porting, use runtime-independent grapheme count and Hermes API lint ban before mobile clients consume contract, preserve Pylon favicon identity 265 150 6f7aaffe26f0e6ae3d47b0ae512b322f890e0f43fix(contracts): avoid Intl.Segmenter in monogram validation (Hermes crash) (#11984)deferred_dependency Pylon has generated web monogram fallback but no customizable soft-tint ProjectMonogram/icon override contract; upstream feature and final icon variant/lint guard absent. Hermes Intl.Segmenter crash source depends on that absent schema. Review four-source final chain as optional compatible feature; if porting, use runtime-independent grapheme count and Hermes API lint ban before mobile clients consume contract, preserve Pylon favicon identity 266 151 37a8ab2b29dfa33b4e20ad709a9860f0da7b7eb2feat(lint): extend Hermes API bans with a configurable API list (#11982)skipped_pylon_product_choice Exact source only renames/extends generic lint ban to Intl.Segmenter plus unsupported array methods; current Pylon has prior array-method lint rule. No icon/monogram implementation is in this diff. Optional preventive lint enhancement, independent of monogram feature; adopt if Pylon changes Hermes API policy, not as a prerequisite. 267 153 7a368fe7c45a45c284f1b064e440a2d696452b07refactor: give project monograms their own icon variant (#11993)actionable_missing Pylon has generated web monogram fallback but no customizable soft-tint ProjectMonogram/icon override contract; upstream feature and final icon variant/lint guard absent. Hermes Intl.Segmenter crash source depends on that absent schema. Review four-source final chain as optional compatible feature; if porting, use runtime-independent grapheme count and Hermes API lint ban before mobile clients consume contract, preserve Pylon favicon identity 268 240 256e630ef7b8372f70f80590e85aada62da821abfeat(web): filter sidebar from thread menu (#8719)actionable_missing threadActionMenu.logic.ts lacks filter-by-project and projectFilter; sidebar filter action from row menu is absent. Add a thread-row action that applies the project sidebar filter; verify it clears/reconciles on project changes. 269 241 9051ed9c3923b7b5fb88d99fe9267380d69baa51feat(web): open diff files from a right-click context menu (#11842)actionable_missing Source adds fileContextMenu.ts and right-click hooks for diff/tree/browser; current shared module absent and current DiffPanel.tsx/ChangedFilesTree.tsx have no equivalent file action menu. FileBrowserPanel only captures native contextmenu pointer. Port the shared file context menu across diff, changed-files tree, and browser; preserve local/remote file actions. 270 243 53510d44ea7b4a44c10c122dd9245194f2f14d09fix(mobile): define Clerk colors in every Uniwind theme (#12344)deferred_dependency Source theme variables --color-clerk-* support custom Clerk profile pages; current Pylon SettingsAuthRouteScreen mounts native UserProfileView and has no custom-profile variable consumers. Only relevant if Pylon adopts custom Clerk profile or source #11765 T3 Connect page; preserve Pylon auth branding/theme. 271 244 8583eac643b8c248bcd835e8de81c7c0d7182ad3refactor(web): reuse searchable picker inputs (#12353)skipped_pylon_product_choice combobox.tsx exists but search inputs remain separately composed in BranchToolbar/DiffPanel/PullRequestCandidatePicker/FontFamilyPicker. No acceptance defect established. Evaluate behavior/visual proof before implementation; source is compatible but no defect established. 272 245 5a39013313a7e6e9d6fbeeb915b8c176ea3dd126fix(web): share touch-visible pull request edit actions (#12370)actionable_missing Source shared PullRequestEditButton.tsx supplies touch-visible edit actions; current file absent and existing review/summary/timeline callsites need touch affordance check. Check touch devices, then expose PR edit controls consistently in review, summary, and timeline callsites. 273 246 05a8c6016a4070b92f5d51e7a79b9c76814947dffix(mobile): share accessible connection trace controls (#12371)actionable_missing Shared accessible ConnectionTraceId.tsx absent; current connection rows/notices maintain separate trace controls. Share a keyboard/screen-reader accessible trace-ID copy control across connection rows and notices. 274 247 a1390ac655927cda10cfab3e4678d456db7b54b8fix(mobile): share settings control row layout (#12356)skipped_pylon_product_choice SettingsSwitchRow.tsx exists; source SettingsControlRow.tsx and SettingsServerControlsRouteScreen.tsx are absent in current Pylon layout. Requires adaptation if desired. Evaluate behavior/visual proof before implementation; source is compatible but no defect established. 275 248 6088c8104cfda0c11eafd1e1f636d47106fee136refactor(web): share diagnostic process actions (#12358)skipped_pylon_product_choice Shared ProcessSignalActions.tsx absent; DiagnosticsSettings and ResourceTelemetryDiagnostics still own actions. Evaluate behavior/visual proof before implementation; source is compatible but no defect established. 276 249 14337401bc801d6239dd10e34997b4481081cf1drefactor(mobile): share Android toolbar search fields (#12359)inapplicable All three upstream MaterialSearchField, MaterialFilesHeader, MaterialThreadListToolbar paths absent in Pylon; current Android toolbar architecture differs, no direct one-file port. Reassess only with toolbar redesign. No current caller; revisit only with Android toolbar redesign. 277 250 4aa841a8d45ccd611a809351db0b693faba6ba13refactor(web): share settings group surfaces (#12360)skipped_pylon_product_choice FoldedSettingsSection.tsx/SettingsGroup.tsx absent; Pylon settings surface still uses existing ProviderSettingsPanel/SettingsPanels. Evaluate behavior/visual proof before implementation; source is compatible but no defect established. 278 251 8eb1f6e74869130b7602e0c6b0ab56b7805c0889refactor(web): reuse inline settings actions (#12362)skipped_pylon_product_choice Current ExpandableText.tsx and SettingInheritance.tsx exist, but source inline settings action reuse is a composition cleanup, no separate behavior proof. Evaluate behavior/visual proof before implementation; source is compatible but no defect established. 279 252 767a5dbd00d0a2050745a2ae2e29050c5282b8c0refactor(mobile): share thread list section controls (#12363)skipped_pylon_product_choice Current HomeScreen/ThreadNavigationSidebar/thread-list-v2-items each render section controls; source consolidates rendering, no user-visible defect established. Evaluate behavior/visual proof before implementation; source is compatible but no defect established. 280 253 18dcc43ace0a7b0d93f2fd61907b2a4e27522936refactor(mobile): share connection form fields (#12364)skipped_pylon_product_choice ConnectionFormField.tsx absent; row/new connection forms remain separate. Evaluate behavior/visual proof before implementation; source is compatible but no defect established. 44 remaining items
Follow-up: #747 merged after exact-head green CI, a successful patched RNScreens iOS 26.3 Simulator build, and isolated Threads-search smoke evidence. Issue #153 remains open because current screens do not reach the latent cache transition itself. Live open PR count is now 11 (10 drafts, one ready: #841). No release/install was performed.
Catch-up checkpoint (2026-09-27): merged #832, #835, #824, and #840 after reconciliation, focused checks, independent adversarial review, final-head CI, and the available isolated UI evidence. #824's root-refresh regression was fixed before merge. #840's iPad build and Return-key setting were verified; the attached device driver could not inject Cmd-K, so live palette invocation was not claimed. No release or physical device installation occurred.
Live Pylon queue: 1 open PR, draft #849 (mobile rollback status freshness). Its documented operation-identity and delayed-action authority gaps are being fixed and re-reviewed before merge. This is the PR count, not an upstream source count.
The frozen
bbedad0278..e67abcf798upstream batch remains 481 classified source commits with zero unreviewed entries in the recorded matrix. The decision cursor remains unchanged until all included partial/pending work has an authorized disposition. Last recorded local T3 heada21b42cec4is 96 source commits beyond the frozen cutoff; this newer range still needs bounded triage. No T3 refetch was done for this checkpoint. Oh My Pi remains excluded and closed.Catch-up checkpoint (2026-09-27): the PR queue against
pylonis now empty. PRs #832, #835, #824, #840, and #849 merged after final-head checks and independent adversarial review. #849's review exposed a session-swap race, which was fixed and re-reviewed before merge. Its isolated iPhone evidence is on the PR; the fixture verifies manual-recovery presentation after reconnect, not a full rollback saga.The frozen T3 source range
bbedad0278bbf753503184c00e0c09a0eab6679c..e67abcf798f8c4d8458755e3b4dde02c2c1f628bcontains 481 commits. The source matrix has no unclassified entries, but classified does not mean adopted or that the cycle is complete. The recorded review cursor remains atbbedad0278bbf753503184c00e0c09a0eab6679cwhile pending/partial dispositions are resolved. The last recorded local T3 refa21b42cec478b093cdc50cc2105b5368ea8b3546has 96 additional commits beyond the frozen cutoff awaiting the next bounded triage. No new upstream fetch was performed for this count. Oh My Pi remains explicitly excluded and its PR closed.17 issues remain open, including this tracking issue and separate design/acceptance work. No release or physical device update was made.
Catch-up checkpoint (2026-09-27): #861 is merged at
69f26bcc65e938ecaaa8e695eefc2c2770c534f5. It fixes the Forgejo PR detail cache for explicit ports while retaining portless SSH/thread references. Independent adversarial review caught the reverse case before merge; focused tests, scoped checks, final-head CI, and isolated before/after browser evidence are attached to #861. The open PR queue remains 0.The 481-source frozen T3 range is still not ready for a reviewed-through cursor advance. All 27 matrix rows labeled pending PR now refer to merged PRs and need reconciliation. Partial rows still require explicit decisions for omitted behavior (notably #11593, #12515, #12719, #12639, #11062, and #13302); several older deferrals need observable revisit triggers. Forgejo exclusions for #12719/#12168 are stale after #798/#861. I am resolving those dispositions rather than claiming a completed cycle. The newer 96 locally recorded T3 commits remain outside the frozen batch; the first bounded slice identified an Antigravity Stop candidate for the next cycle. Oh My Pi remains excluded and closed.
Frozen-source residual audit at Pylon
69f26bcc65e938ecaaa8e695eefc2c2770c534f5(2026-09-27). This supersedes the stale scope notes for these seven sources; it does not advance the review cursor.T3 source Disposition and remaining behavior 24b711b7(#11593)iOS terminal Backspace was adopted in merged #770. The five remaining Forgejo/model-picker/dialog hunks are applicable and assigned to the next bounded implementation unit. Forgejo must expose useful bounded HTTP diagnostics without leaking sensitive responses; the UI changes need isolated interaction evidence. 8c3b5bef(#12515)#695 adopted short-list bounce and file-empty retry. Archive/files/settings still have accessible explicit refresh actions. Defer upstream's removal/migration of those controls until a reported mobile header-clutter or refresh-accessibility problem calls for a coordinated list UX change; retain a non-gesture refresh path. 93349247(#12719)Covered by merged #701 and later #831: PR chips use PullRequestLinkPreviewincontextChipParts.tsx, including Forgejo authority/port handling. The former “no Forgejo provider” exclusion is invalid after #798. Reopen only for a hover/focus or cross-environment preview regression.d612d12b(#12168)Canonical PR detail reuse was adopted in #626; merged #861 covers Forgejo custom-port cache keys. The former “no Forgejo provider” exclusion is invalid. Upstream account-router hooks remain inapplicable unless Pylon adds multi-account routing or a new PR detail entry point bypasses cache. 9f73ca36(#12639)#699 covers web/server simulator recovery and stream generation; Pylon mobile's remote agent-device viewer is a different feature. Exclude the upstream embedded mobile simulator hunk until Pylon adds an embedded simulator stream. c07575f5(#11062)#757 delivers prose/code at natural boundaries; #857 handles tool-boundary flushing. Defer upstream MessagesTimelinesmooth-follow and LegendList DOM-move patch until a scroll-jump or streamed-block flicker reproduces in Pylon, then require web/mobile visual evidence.68fb7f4b(#13302)#817 adopted Pylon-branded per-environment provider status/update controls. Exclude T3 release-index/EAS workflow. Defer mobile server-update targeting until Pylon has its own release lookup and target policy; docs/user/updating.mdcurrently directs server updates to web/desktop.The pending-PR labels in the local 481-row matrix are historical: the referenced Pylon PRs are no longer open. Do not count these labels as remaining GitHub PRs or advance
reviewed-throughbefore the remaining mixed-fix implementation and generic deferral triggers are reconciled.Frozen-cycle deferral trigger refinement (2026-09-27). These are reviewed product boundaries, not hidden pending PRs:
Source Current Pylon decision; observable revisit condition c0ddfb3a81/af2baccd10(#11433/#11474)Retain Pylon's Agents CTA and folded-turn grouping for now. Reassess the upstream expandable in-chat worker row as a coherent pair if a Relay/native subagent run cannot be inspected from the CTA, or maintainers choose inline worker inspection. Verify folded-turn placement and keyboard/mobile behavior together. db6e0531e4(#11367)Defer upstream GitHub multi-account routing. Revisit when Pylon supports two authenticated GitHub identities for the same environment or a concrete operation selects the wrong account; decide credential authority and server/web contract before porting. f26198d799/5e961d3d7f(#11542/#11672)Retain Pylon's connections settings layout. Revisit alongside the GitHub account-routing decision or a reproducible environment-to-account selection failure; then compare the complete settings flow, including mobile and remote environments. 3b75e607eb(#8606)Retain one-use worktree pairing tokens. Revisit only with an explicit repeated-pairing workflow and an approved reusable credential lifetime/revocation design; do not silently change authentication semantics. cba7dd7781(#9194)Retain the local desktop backend. Revisit when Pylon defines a remote-only desktop mode, including startup, offline recovery, and profile ownership. For narrower deferred fixes:
592021f008(collapsed thought grouping) needs a demonstrated lost/duplicated thought in a Pylon folded tool group;d7736e06b6needs a narrow-viewport menu/popover overflow reproduction;e0649ed7d8and53830d4134need measured cross-platform startup/bundle cost;151324b2c0needs a long-list/tick performance profile and a legacy-list policy;5bf43c9f3dneeds a Pylon menu alignment reproduction. Each can then be assigned as a bounded implementation unit. The Relay CTA trigger is especially relevant to the reported orchestration UX and remains an active check, not a claim of parity.Source
24b711b7(#11593) follow-up: Pylon PR #862 is open at0ab82f457ac508ab14cc546d115e00c8ca3b314f, awaiting final-head CI. Independent adversarial review found a response-body privacy leak and lost HTTP status on a failed body stream in its first head; both were fixed and re-reviewed. The final patch gives status-specific Forgejo 409/422 guidance while preserving 401/403/404/429 classification. It deliberately does not display upstream's raw Forgejo rejection body, whose arbitrary text could disclose secrets; the precise rejection reason therefore remains excluded. The separate web model-picker/dialog hunks are being assessed with isolated visual evidence. This source remains partial; #862 does not close the frozen-cycle cursor by itself.Frozen 481-source matrix reconciliation at Pylon
5319f67fd3cdaa2ae6a86a6e75e1c4b09d2402cc(2026-09-27): all 27 rows still labeledpending_pr/pending_pr_partialrefer to merged Pylon PRs. They are source-disposition rows, not 27 open PRs. Final labels below use A = adopted with Pylon adaptation; P = partial with the stated remaining scope. The matrix's historical labels are superseded by this durable issue record;reviewed-throughremains unchanged pending cycle closure.Source(s) Merged PR(s) Final disposition / remaining scope d547e3b12a,e3c85ead63#788 A. Effect/Alchemy prerequisite landed; relay deployment is separate. 6fd68f5c3e#798 A. Forgejo workflow landed; live account proof remains an acceptance limit. 03950089ff#815 P. Viewed marks apply to displayed complete diffs; reopen for a concrete truncated/binary/ambiguous viewer requirement. 823119350e#832 P. Pylon remote mobile stream architecture retained; Android secure-context/WebCodecs need supported-runtime proof. 9118b6d3e8,4c61e3d7ec#760 A. Native patches landed; physical-device proof is separate. ca864a25b1#765 A. 438465d6b7#835 P. Auto hue and generic native icon retained; revisit if custom native icon parity is requested. 6f7aaffe26,7a368fe7c4#835 A. 52e4b44293#771, #774, #788 A. Effect/Alchemy residual resolved; packaged desktop update proof remains separate. 68fb7f4b85#817 P. Mobile server-update targeting is absent by Pylon release policy; revisit after Pylon-owned release lookup and target authorization are defined. Current mobile directs server updates to web/desktop. 6b0a04ade0,5781b5240b#845 P only for upstream sidebar notice presentation; receipt-backed Undo and Mod+Z are implemented and tested. Revisit sidebar presentation on an observed UX problem. 5423ba0fd0#842 P. Composer landed; viewed-file layout/Forgejo summary divergence retained until a concrete UI problem. e33b710d5f#840 A. eff44be433#787 A. 2a47fc905a#794 A, excluding Oh My Pi by explicit product decision. 68c2277f50#844, #846 A. Web/mobile large paste landed; runtime/provider proof is separate. 21d53ca2ee#824 P. Ignored/lazy browse landed; page sorting is not a snapshot. Revisit on large or changing-directory failure. 17f8e2a8ac,564719165e#841 P/A respectively. Observed-only widgets landed; no background quota polling. Revisit Android inexact alarm or dynamic-type behavior on device reproduction. 3be02ae579#830 A. Native picker replaces upstream calendar. 7cafe52bb8#843 P. Manual title CAS landed; automatic first-turn refinement would add a model call and remains a product/cost choice. a62e7d670c#843 P. Structured warning landed; provider-link execute/decode refactor waits for a concrete failure or adoption of its 08abdependency.26b8f985d8#840 P. iPad shortcuts/palette landed; RowPressable/list retirement/link-scheme pieces need a demonstrated gesture/navigation failure or list policy change. Separate mixed source
24b711b7f9(#11593) is not one of the 27: #770 iOS and #862 Forgejo status guidance have merged; #863 web tooltip/dialog is still open at6542a7a084d36d7b3f8bb28ab5c7e2f603300a6f. Raw Forgejo rejection text stays excluded for privacy, and global icon z-index raises require an overlay reproduction.Frozen-source #11593 follow-up (2026-09-27): #862 merged at
5319f67fd3cdaa2ae6a86a6e75e1c4b09d2402ccand #863 merged atdd4e28b4fce7e8e9bbadad780b716339b0eb33af. Both had independent adversarial review and green final-head CI. #863 has isolated before/after browser evidence on the PR; actual Electron pointer interaction was not exercised. Source #11593 now has its iOS terminal fix (#770), safe Forgejo 409/422 status guidance (#862), and model-picker shortcut/dialog no-drag fixes (#863). Exact Forgejo rejection-body text remains excluded for privacy, and the two global icon z-index raises remain deferred until an overlay failure reproduces. This is a deliberate partial adoption, not verbatim source parity.The live open PR queue is again 0. The 481-source frozen-cycle review cursor has not been advanced yet; an independent closure audit is checking all remaining dispositions and triggers. The 96 locally recorded newer T3 commits remain outside this frozen batch.
Additional frozen-source dispositions from the independent cursor audit (2026-09-27). These supersede tentative labels in the original local matrix; they do not yet advance the cursor.
Source Final source decision and observable trigger 5d9e27a596(#12403)Pylon adopted the optional context-reference renderer in #697. The upstream queued timeline card is absent because Pylon does not use that activity-group queue presentation. Defer that card-specific citation rendering until Pylon adopts a queued timeline card or a user can reproduce missing citations in a Pylon queued-message surface. Then reuse UserMessageBodywith Pylon context ownership.dfbb11bdd7(#12377),22539f2a42(#12147)Both remain deferred with the full provider thinking-trace/activity-group decision 052c7ae53e(#11784, DEF-18). Revisit when Pylon resolves orchestration-v2/activity-group timeline adoption; preserve provider event privacy, persisted projection, disclosure ownership, and reduced-motion behavior. Neither isolated preview/grouping patch is a stand-alone port.9051ed9c39(#11842)Adopted with Pylon adaptation in merged #836. Diff headers, changed-files tree, and file browser offer environment-scoped Open/Reveal/Open with; Pylon retains its own editor RPC, capability gates, and browser fallback. No omitted source behavior identified. Isolated browser interaction evidence was not captured before merge; that is an acceptance limit, not an unimplemented source hunk. 9686cd9afe(#12143)Adopted with Pylon theme ownership in merged #837. Web/desktop command palette has theme and appearance choices, color previews, and shortcuts; mobile theme ownership remains separate. No omitted source behavior identified. Live browser/keyboard evidence was not captured before merge; that is an acceptance limit, not an unimplemented source hunk. The Android symbol source
6deac7a924(#12316) is being implemented as a bounded fix; it remains open until its PR is reviewed and merged or an explicit product disposition is recorded. The old Forgejo exclusions and #11593 scope are superseded by the later #736 comments covering #798/#861/#862/#863.Source
6deac7a924(#12316) scope correction: Pylon's earlier #776 coveredarrow.downonly. PR #864 is open at8941490964dfab0fb35166a39dc14e7c50c7777fwith six Android symbol mappings used by current Pylon callers (text.alignleft,mic,circle,exclamationmark.circle,merge,smartphone). Independent review traced the file-menu symbols throughAndroidAnchoredMenuand found no blocking issue; final-head CI is pending. The upstream Agent behavior settings row itself is absent in Pylon, so that row is excluded unless Pylon adopts an Agent behavior settings surface. The broad upstream symbol-type rewrite is unnecessary for current callers. Android device rendering cannot be verified here becausedevice_listreports no Android SDK/emulator; this is an acceptance limit, not proof of native appearance. Keep this source partial until #864 merges and record the settings-row trigger then.PR #864 merged at
f0559dde1fe8fde9badffbb4d8b5ec4b7679b8d0after independent adversarial review and green final-head CI. For source6deac7a924(#12316), Android now maps the six symbols used by current Pylon callers. The upstream Agent behavior settings row is absent in Pylon and remains a deliberate partial-source exclusion; revisit if Pylon adds that settings surface. Android runtime appearance remains unverified because this host has no Android SDK or emulator. The frozen 481-source ledger now has no identified unclassified SHA or unassigned partial behavior; cursor advancement is being recorded in a separate review-index PR, not inferred from this comment alone.Cycle complete. PR #866 merged at
415c6683f3f4156002d44b3ae05375cf11fe0feeafter independent ledger audit and green final-head CI, advancing.agents/upstream-review.mdreviewed-throughtoe67abcf798f8c4d8458755e3b4dde02c2c1f628b. The seven source tables contain all 481 unique SHAs in the frozen range; later comments reconcile merged PRs, partials, deferrals and concrete revisit triggers. The open PR queue againstpylonis zero.This is a review-decision cursor, not an adopted-through marker. Deliberate limits remain recorded here: Oh My Pi rejected/closed, raw Forgejo rejection text excluded for privacy, mobile server-update targeting and automatic title refinement deferred for product decisions, upstream Agent behavior settings absent, and Android icon runtime appearance unverified because this host has no Android SDK/emulator. No release or physical device installation occurred.
The successor cycle #865 owns the newly frozen
e67abcf..ab099178range (127 sources at fetch). Later T3 arrivals are outside that bound.- added a commit that references this issue
on Oct 1, 2026
The maintainer requested a complete bounded catch-up, with GPT-6 Sol low-reasoning agents doing investigation, implementation, and separate adversarial review, under root supervision.
Frozen upstream range:
bbedad0278bbf753503184c00e0c09a0eab6679c..e67abcf798f8c4d8458755e3b4dde02c2c1f628b(481 sources; 146 after the last completed cycle bound). Starting Pylon head:3868597c32d9dfef9ee5ad807360e23008639207.Scope:
Quality gate: isolated worktrees from origin/pylon, focused regression tests and scoped lint/types, separate adversarial review for each change, final-head CI. Preserve Pylon runtime identity, provider ownership, cancellation, persistence, remote access, and live profiles. No broad upstream merge. PRs target pylon; merging requires green checks and developer approval. Releases/installations are separate.
Progress and source dispositions will be recorded here and in linked implementation PRs. The review cursor remains unchanged until every included source has an authorized disposition. This inventory does not equate source count with missing fixes.