Repository navigation
Upstream integration cycle: catch-up through 6c583620 (2026-09-09) #414
Description
Continue the maintainer-approved upstream catch-up using the repository's .agents/skills/review-t3-upstream/SKILL.md and its continuation reference. Claude and Codex share this skill; CLAUDE.md imports AGENTS.md and .claude/skills links to .agents/skills.
The previous cycle's handoff work is complete. The cycle is re-bounded to a fresh upstream head as of 2026-09-09.
Cycle and authorization
- Frozen upstream head:
6c583620ff7ad3235b135af7107c0543467eecfa(2026-09-09), replacing the previous062987b2fb0ef48cc7776d654931bd9f3bcf1f9f. - Review cursor:
beae2147a9487ec47ac992319f2216914b4cb62d, unchanged; keep it until every intervening source has an authorized disposition. - Pylon checked head:
76db4b541e8f805b87787e07dbcfb97efbc03c93. - 153 source candidates remain unclassified in
beae2147a9..6c583620ff: 47 carried over from the previous frozen range, 106 newly arrived after062987b2fb. These are source counts, not counts of missing fixes or exact feature groups. - Compatible catch-up, Pylon-preserving adaptations and green PR merges have standing maintainer approval. No per-commit quota or repeated approval prompts.
- Prior authorization includes integrated browser/iOS verification with isolated fixtures. Do not use live application data or launch real provider turns as test fixtures.
Standing maintainer preference (added 2026-09-09)
When upstream ships a feature Pylon has already implemented independently, do not silently keep Pylon's version. Surface the overlap and discuss it: if upstream's implementation is better, Pylon should be willing to take theirs and remove its own. Preserving Pylon behavior remains the default for adaptations and conflicts; this applies specifically to duplicated features, where the choice is a product call for the maintainer rather than an automatic preservation.
Landed since the previous handoff
Merged: #416 (usage rate refresh and custom model prices), #417 (Codex subscription capacity), #418 (price edit visibility and refresh progress), #419 (automatic clean-branch pull), #420 (prompt recall), #421 (mention text and slash menu), #422 (docs voice), #423 (custom model names and option descriptors), #425 (Antigravity provider, server), #426 (unified loading and refresh feedback), #427 (mobile back swipe, Android selection, terminal paste).
The unfinished usage pricing port from the previous handoff is complete: sources 2b745efe57, 394e8470c8 and 84b99f3fb7 landed in #416 with #418 as a follow-up. Its pylon-usage-prices-0907 worktree no longer holds unfinished work; leave any cleanup to the maintainer.
Also merged, Pylon-original rather than upstream: #428 restored the composer context window indicator, which #402's adoption of upstream #9190 had turned off by default. It retires contextWindowMeterEnabled for contextWindowIndicatorEnabled, because desktop persists a full settings document and a stale explicit false survives a schema default change. Recorded in .agents/durable-facts.jsonl as 2026-09-09-client-settings-default-flip-needs-fresh-key.
Still open: #424 (desktop native notifications for agent attention).
Remaining exceptions and release status
- DEF-16:
19d8ab2ae9fc562ee7b216a0d72903fbfafa9572#9507 remains partially adopted. Native Claudeseven_day_overage_includedlacks an explicit model identifier. Preserve Pylon cached OAuth reads and account-wide pushes. - DEF-7:
33b650a5b#8243 unsigned anonymous macOS preview distribution was intentionally reverted. Earliest revisit 2026-11-01. - WATCH-1 #8097, WATCH-2 #6573 and WATCH-3 #7986 keep their recorded triggers. Their external state was not re-polled during this status refresh; check once during the next cycle.
- Release status is unverified. The last observed Nightly predates the recently merged groups. Do not report the new code as released or installed.
Preserve other unfinished worktrees, Prime worktrees, and unrelated dev servers. Locate exact paths with git worktree list; do not clean by pattern.
Remaining inventory (153 sources)
Each source needs a final disposition. Group by finished behavior and dependencies, including later fixes and reverts.
Carried over from beae2147a9..062987b2fb (47)
194f838e7636f97739c440c7855aed195dbd7f52— chore: audit lint directives and move plugin allowlists into config (#9300)3b2de9da1c8763602e283e8d14b41b5d57a9d0c7— chore: dedupe lightningcss and tailwind node bindings (#9331)f5fbb1bcb0db378c61addd5b49ef2d95bd888168— chore: upgrade vite-plus to 0.3.0 (#9327)6cf0c6ea55d281f65c80502ec1871b0adf472025— feat: display native app and browser icons in work logs (#9093)21b9dda5afb00a33e228a68d2ccc885bba7285dc— fix(web): unify skeleton loading animations on one pulse (#9448)6f405370c8e552da9dcfdd6922e85789fd918340— fix(dev): keep shared dev reloads and hot updates working (#9543)c5ba51d629b3813182cf3e161cc3f23b1e541dc3— feat(providers): add context compaction command (#9293)5989de44a24888dab02854477ea1d0f50ac3a4a6— fix(mobile): keep store screenshots free of system banners and show dictation (#9548)fee2e0ff8168b82ab19f496fcc874c1f3871f522— test(web): fix flaky startup and Tailwind tests (#9558)07891e9569c88457516b44c08c820471762969e8— fix(web): bound disconnected send toasts (#9592)00f8b7c28056188e3c5630160806a0afe51c9010— fix: show idle subagent batches without completion marks (#9616)c3b8825bf476cbce5e061c0f99570cf1f6723b89— fix: preserve tool icons on failed calls (#9606)5f878d2a85807618a4c8571cdef5daa3124672d6— fix(web,mobile): fold context compaction under settled turn folds (#9623)1587f248dd81ed45e214d476451ebf16dbfadb1a— feat(server): measure provider turn token usage (#9132)9eb4d71681dc7d002082db2f8b4bacf7614412f4— fix(mobile): remove provider setup (#9721)2e688a53cf8fc7a9caa9fd5070148bfcd3d5a741— docs: keep internal guides focused on architecture (#9755)9e1fb459a985d13c1d4e57080f49d70dabf3b681— docs: focus user guides on features and workflows (#9756)4f1092cec2ebaa6ed0e49821238dfe6f1add362d— fix(web): keep worktree origin preference visible (#9846)caf4981e32f4fd3c9adb8339b5bec2d95d09b7aa— fix(web): reload saved colors when reopening the theme editor (#9847)bc8584bf8e967ecc1cd215d42bd7a47faf51a862— fix(web): give the browser keybinding notice breathing room (#9964)09aac71563c66a4f65f6fbe701aa9596cb677767— feat(web): first-run welcome wizard with agent setup and project import (#5362)d92dca74eb7b7c6068619752f5b9a55c0e36f352— fix(web): resume imported custom-provider threads (#10184)bfba7781681eaa03eb465ce3d9a4ec07bf952b78— fix(mobile): keep the new-task draft when switching environment (#10247)2c3353578098a9e55e203a72217abe993f97987e— fix(web): keep timestamp tooltip dates in English (#10256)9f40b2f563c662b43887b11ff99c466fe871c1af— feat(settings): add shared project defaults and scoped overrides (#9754)420fd76f60433fe05b8d2c76f4fbde430dc49968— feat(connections): balance new threads across connected machines (#9895)272d6d747ef214f50dbd9d0051120de12ffa3591— feat(markdown): show the GitHub mark for github.com links (#10324)aea9ecbc482a3d2c14d1828cb5eeaaa9294d1320— fix(web): make task row states readable (#10128)82689782eee0f0cf27d5601e1d533381587b64f8— fix(web): explain hosted connection prerequisites (#10129)076d753ae6cb97136b6b4199fb8fc0b379282dba— perf(web): skip checkpoint map rebuilds while streaming (#10118)5fa35d211682ee02e34fba0711838ca431ed003b— refactor(server): let adapters declare context compaction (#10112)36c48a6b7c03c9a9adbc3e55d4d9ae77eae6f816— fix(mobile): keep pending tasks queued when a send fails in flight (#10245)c0bf35466c8aa1862572dfa84b51b6fe30fc82d6— feat(mobile): show new-task drafts alongside pending tasks in the thread list (#10260)8e129a0dfb35ac2c03a7320245b5bfb976f5d3bf— feat(mobile): allow several new-task drafts per project (#10327)98469159dd9e162a9c2f5cc4bbb2fbe89b3c4f67— fix(mobile): slide settled threads out before collapsing (#10345)f729e8fd837e4d6de86781351c3aee5a4ea19ab3— fix(web): make onboarding a shared multi-computer wizard (#10465)95f9b14f873c7b119f0ffb6dbd194c7063293aa2— fix(server): import transcripts with oversized tool records (#10430)efeac144289d0f64bcfe3b9274c616499893be91— fix(web): show load balancing note for a single machine (#10433)ec36176e4f25fac7e3c380f6a4b646116e4ccf3d— fix(web): onboarding wizard now supports light mode (#10432)d6aa179ad2afe0424e1410cbafbb119bbd5f7809— feat(mobile): show when an existing thread has a message waiting in the outbox (#10405)66a24d6c1a008430eebd855cd5640607d5aef38c— feat(mobile): queue a message while its attachment is still uploading (#10404)2d6a3799978659e349faf8ff4297098ffb782ebb— fix(web): only show auto balance errors after failed checks (#10407)c2c4185e175daea86f8fd6336fd8839a81cc616e— fix(web): onboarding installs agents without needing Node or npm (#10402)95d99373b74edfb3bfd092c61a15999a95727423— fix(clients): show feedback results in composer banners (#10398)e1230d6031bc55a21668818d0b585d8887b88579— fix(mobile): keep pending messages in the chat timeline (#10449)5b68b2c8e1e971e4ee6956157a1698646ef52a55— feat(mobile): open the thread screen as soon as a new task is submitted (#10435)7dda0b1c0a95603f1954b81a9fee699be92668f0— feat(mobile): start a new thread on an existing branch (#10359)
New arrivals 062987b2fb..6c583620ff (106)
b919d6389929698ddf223d35d20139f01c8bc899— fix(web): keep composer toolbar controls anchored during transitions (#10478)f57d3832c0219b4f6fbe2e86f824fedd232492c0— fix(web): resize the floating preview from any edge (#10467)71297974c666b0db50a3e3b1a861742f2cdd4d7d— fix(mobile): prevent chat from disappearing when scrolling (#10479)b248f5ad566a8cd3ea2d7d678c1e8aa49c748879— fix(mobile): smooth composer status pill resizing (#10484)c0d4e95c0d921b5960ad04c7f8abec459ee3c59e— fix(mobile): release initial scroll target after dragging (#10483)e32dd42f8ba0daa2d0c6d6d2e474b7af6b3eb7b4— fix(mobile): animate thread lifecycle transitions consistently (#10487)b7175371d9f32f3b759a922cdbf727a3214c99a2— fix(mobile): restore assistant message bottom padding (#10491)dc39615aec702ea6d402168f80b4d1613f4f2e0f— fix(mobile): preserve chat rows when toggling commands (#10492)8b2838e0e8a73d3fa6476940445c372e47b99db4— feat(web): group onboarding project import by repository (#10493)fe07ffe7c0bf1858ba4d1cd1ce0a67b10802a747— fix(web): remove inserted citations on cancel (#10518)357b8d5217cd62826767b6ce6d7c47915f2777d2— fix(mobile): match Working status color to desktop8d7f78121660eb8599d4c5ff40cb4394159abfab— fix(mobile): wait for native thread scroll before reveal (#10486)1d1bf50405ccca8fdb8b57879d9def379e27a550— chore(mobile): bump app version to 1.1.062fbbe08aa854fcbd8044cd971a45a54edafcb98— fix(web): tolerate servers that predate git identity in project import (#10547)72d94087b460e8d3d76572ed59fe935b80eb41a1— fix(web): restore settled PR colors on hover (#10023)9cc9839545c05c998fc97f2323f691043a1a3686— fix(web): keep popup triggers steady when pressed (#10468)0d34579d674920cc47fc5c908494f51ed3895204— fix(web): keep project favicon shape consistent across sizes (#10502)3bf74eb6dce3e1372cfafc2ca84825f4b13bae6a— fix(claude): report usage limits on retried turns (#10549)5b8a69c7b90b751507d0ab762dd77aaa2048408b— refactor(desktop): classify backend exports (#10265)5a853a4b4513467fd1be3d62fe7dc974cea07c3c— refactor(desktop): classify electron exports (#10266)89dd9ab32b4aaba6f34689353cb14fa6549e34fc— refactor(desktop): classify app exports (#10267)e279e402c12b002cedcd8c4ea19476fc33783dac— refactor(desktop): classify preview exports (#10268)b491e41da366beb03c54b585745318553f1239c5— ci(knip): enforce desktop exports (#10269)577b6cc221d411cfed31cba0e6d3861de2640a55— fix(web): remove excess sidebar thread spacing (#10569)c8ec7df12415140c6413372f53e3be4fe2e959f8— fix(web): make settings project scopes searchable and scrollable (#10570)5ec6f77ec0acc6a1fc9e9be5e1126a5199e9efe7— fix(web): usetabular-numswith the ui font for sidebar timer (#10592)12f5604442564d3e8c1cb23135b27b37ab4af1cf— fix(web): correct pending question attachment message (#10599)c0cad74bfaddf153c3adaaf4f78af2be9260c4c1— fix(mobile): restore brand artwork in the Android adaptive icon (#10598)02443335b155e46248f96d80e037603abc742a61— fix(mobile): configure iOS Keychain access group (#3665)dadba6d95d2c4515956a6c7fef184378987e13b7— fix(web): remember Composer Fast mode across new chats (#2981)95834d68aa475a8afe4b2b14eaedffb35b590dab— fix(server): disable executable capabilities in Claude metadata generation (#4169)09e8de9c655ae85410bf6b00446f272a01da81c7— Add stop thread keybinding command (#4308)2c8e95a4b641898322c7312cb67535612606745e— fix(mobile): show the provider account badge on thread rows (#9899)d64335bb5913c21869633a4236d9409911e3da52— fix(codex): name the usage limit and its reset instead of relaying "out of credits" (#10473)ea2983afbbcd5ad6ee2e7db80c2a9270ff4964a9— fix(web): copy selected pull request link from PR page (#10615)d67157a09c28883d7856d03d2b1d3aecdbf1b890— fix(web): keep ref picker steady when opening (#9472)569a8cd2c3303f55fd869687eb31359b5658cc78— fix(web): play pull request videos inline (#10617)8de9169f078fdafedf47d8c299cb8e2c79fda6fb— chore(release): prepare v0.0.40e0e0bcb115fa29a2afc670b817fcb4463b620923— fix(desktop): preserve browser editing shortcuts (#10621)d081ab7abc16a21570d3d96948acb6c1f8d847a4— fix(web): open pull request markdown links in the panel (#10623)892de47f0625183edd111dd36df45b156185bbf2— fix(mobile): fit the Android splash icon to its circular mask (#10620)299404a754f52c02c69634528d8856b3c93b378c— feat(desktop): add cross-platform window capture (#8103)8588d7f63bf57e6285daafe035708cc22a99619c— fix(web): open proactive panels when entering threads (#10610)9fe4d6568b5e4852f6085d3a22dbc5aa3a632408— fix(native): wait for the KDE feedback test listener (#10645)a01b227d6f37d1cfed7a2f47aaace2f72ea76ce3— fix(desktop): resolve local media linked from remote threads (#10619)b7c002f918b94b8ce13c44bddcd29b8443e4af41— fix(web): add bottom padding to project actions header (#10634)15193df9fb915837f7215909a7d741789db0a273— fix(web): update machines together in auto balance (#10596)9e37f0c291974d084a59d7b9f165a1cb056e6043— fix(preview): transfer recordings to the agent environment (#10572)f0bd43eaf9d8b5e3df2b913532bbee74bba58314— Add 'macroscope-review' label to conventions5a18fb95e49ea8352963329f32d5e85cf3125e24— Add 'macroscope-review' label to UI consistency6df0add6e65b7c0040b5774635f794e4ff802ddd— fix(web): navigate markdown images as galleries (#10625)a37c66406830525888465b2eaebf34df2265de86— chore: upgrade to TypeScript 7.0.2 (#10663)6ba15c027a6d411c7f75cc0ca59b601a295c3633— fix: hide email-bearing account labels in usage limits (#10668)50a76cee7c56ac22568e549dc855248967bfb9ab— fix(web): keep scroll-to-end button close to composer (#10543)bd56e920b7309e859d0b1a099d53e816628ea75e— chore(deps): upgrade Effect to rc.112 and Alchemy to beta.76 (#10652)458f5029882d6da3f2279893d6c9fffaf7748b5c— chore(refs): sync Effect reference to rc.112 (#10653)9d345fa957cf22806171c8037432eec8d9ed496d— chore(refs): sync Alchemy reference to beta.76 (#10654)bc4b00666272188027d086361fa5ae01cda53bd2— fix: generate thread titles with the selected model across connections (#10526)b5f7fa0ede2a0d791226e6474c9cc4374dd89cc9— fix(desktop): enable context menus in the browser (#10670)bc88fdf6ae53de3c9362665336d6d9daec7a49e9— fix(desktop): stop generating declarations during bundling (#10679)349ce3014233352e073a5fc1b3f12bd786160913— fix(desktop): restore layout control hit targets (#10673)7220dfe2c949476eaa7d21eccbcd3a0ce0eddb49— feat(chat): attach files to question answers (#9871)991526383f95eefdd66ffd2853136c6dd34ae008— feat(desktop): refresh macOS installer with aurora artwork (#10632)430fbd1ffc98378f6a6a41027ddc6004a79b2e7b— fix(server): give completed turns a full session idle window (#10689)7d9aaf6a7eb22d5e85b0e3b21686cc437fe68576— feat(web): add pull request merge defaults (#8088)1f14d6d10afbcc99ec255b23544ee25c08dea321— fix(usage): keep account columns aligned across limit rows (#10690)11601da846e7d82db63a6f4773e3a02421619b60— fix(web): chat text no longer shows through a 1px gap under composer banners (#10635)6f4cd07b900299629b9f2f9a9336f5c090556a51— refactor(server): classify runtime exports (#10274)0af04f1801ea75119c74fd406ced7da6c9c71721— refactor(server): classify orchestration exports (#10275)161715b1e4fa6d20fe3eb1cb9c91904bf83ca4c1— refactor(server): classify service exports (#10276)77d9ffc822ac4c1f3600dc6c97e92fc94e9e12a3— refactor(server): classify telemetry exports (#10277)060c576f8922703725f0dbdd01443ed88ecc9baa— refactor(server): classify provider exports (#10278)3b6ce931cc225b4b743daaa063e0bc9875555582— refactor(server): classify source control exports (#10279)7cdeb696e699309b827c1d1b613397f9bcd73b3d— refactor(server): classify source control registry API (#10280)1f0a14cf7f1bb1b6167fca475e9b7183bc8ec8af— refactor(server): classify preview toolkit exports (#10281)b28471567cebe20347205059bbbdb3efe1213528— chore(mobile): bump app version to 1.1.17d620506a1fecf07aa2d623e72059d551709ae3a— ci(knip): enforce server exports (#10282)134b7194b125dd4881ff6040f66997b23489b72e— feat(web): add previous/next turn navigation in minimap (#8531)d6dbe8dd67facf4a43030993bebb58cc7e7ac141— fix(web): stop the settings sidebar shifting when switching pages (#10705)83b865fec704b177804aa6b9b695aefea4ccd04a— fix(web): copy terminal selection with Ctrl+Insert (#8541)82451eeb7277b0b7fb5a7cb53156c83f948f32c1— fix(web): show the same project icon in the command palette as everywhere else (#10712)d7a59c63c6a227ac295041660228a4aaa427ead0— fix(web): stop sidebar rows flashing and shifting on click (#10713)eb115063634c416c6362cc407f8572cb0c136ddf— refactor(web): pass the project record to ProjectFavicon so icons cannot drift (#10714)bde39d4d7977ce85d6ea396a983d6b6a25bf7e07— feat(web): accept file drops into sidebar threads (#7892)b5d89038ae72142038dfa8cf69d49b7a607fe98e— feat(web): accept file drops into sidebar threads (#7892)061543e9e5b54ec0048725c37d52fef2962df173— fix(mcp): keep preview snapshots usable by the agent and let it save them (#10501)47eed9face4186635488fba5f2494eddd13f6491— fix(server): stop Windows terminal processes when closing (#10771)579266caa89238611ddb974ffebe9968c6a6e5d5— feat(mobile): use Android wallpaper colors (#10691)4664c572a78231611491f63f677f0e007ebaab03— feat(mobile): add optional Material You layout (#10692)12391bd0d38eef6655b7a9f8945d0cb5febadc2b— feat(web): show project favicon in new-thread project picker (#10790)5d14c0e9686d8bedf47dd93dd3811fd639255c7e— fix(desktop): use official logo in macOS installer (#10819)772ea1473a4a8f8fb0e0a5c9ba6d7a2ef14eac6e— fix(web): honor terminal link browser overrides (#10060)0fe4c99ee6df4cbb7a9064d2d86ece65ecef5eb3— fix(desktop): neutral artwork for stable macOS installer (#10820)5e6cc2b89534a8e01772bf647b79a1f2da2f9664— fix(web): restore text-only draft project title (#10821)3faeee49ac67dfd9534369f1e1c627c0356b75ac— refactor(web): consolidate setup wizards into shared components (#10832)de545c41737aca08359244b7778ab52e55934f17— fix(web): stop the bar under the composer popping in after threads load (#10727)7fbc545ae8c7866ac2b39648120cb2a17250d8b4— fix(web): keep the composer footer still while thread data loads (#10768)20e2e899ecded6b30e12fa23c8f18847c2bf12e1— fix(desktop): defer keyring loading until macOS cookie import (#10667)fdf34c4018352df41aa22fbaa774c25c6c1ff7da— fix(relay): share notification policy and prioritize waiting agents (#10848)3dfc134e6c1e2359400c56ea415e74fecf9d5c12— fix(relay): recheck queued iOS alerts and retain fast completions (#10849)9d6c43f32ed2b4d0f21f1d15b2c671b0c07be991— fix(mobile): respect notification permission when tokens rotate (#10850)3e6f856f2359421958a3aa046f2c393e00f3dc6a— fix(mobile): tolerate native Headers without getSetCookie (#10851)1862686f9e42bf1d77e7f2ad03e24d7b0c7908f1— fix(relay): use current APNs registration routing for queued jobs (#10859)08463e2c401ce87858aaaebcb70ed86fb002fb5f— fix(server): release consumed event replay pages (#10777)2a303535305d7d224a750fdee78c66e2a52ab3ab— feat(mobile): arrange threads with drag handles (#10496)6c583620ff7ad3235b135af7107c0543467eecfa— feat(mobile): add Android agent notifications and ongoing activity (#10416)
Activity
rynfar commentedon Sep 8, 2026
Pricing port resumed and landed as a PR — 2026-09-08
Resumed the unfinished usage pricing work per the handoff. The recorded worktree was intact:
all 32 task files hash-matched
agent-handoffs/t3-upstream/20260908T174425Z/manifest.json, sonothing was replayed or overwritten.
State
origin/pylon(c316b4281a).One conflict, in
apps/server/src/environment/ServerEnvironment.test.ts: feat(threads): persist active order across clients #413'sthreadActiveReorderassertion and this port'susagePriceOverridesassertion landed on thesame line. Kept both.
upstream/2026-09-07-usage-prices, head2f1b3c790406ff1f3126cd397078008a97bf31e7.pylon. All 14 CI checks pass, 3 conditionally skipped.2b745efe,394e8470,84b99f37) are prepared and pushed, notmerged. Do not count them as adopted until feat(usage): refresh rates on demand and edit custom model prices #416 lands.
Verification completed (the gaps the handoff named)
had not covered (
usageAggregation,apps/web/src/state/usage,client-runtime/state/server,turnCosts,usageScanCache,UsageLimitSources).types1/types2logs(the obsolete
RpcSessionmember and the missing table primitive) are genuinely fixed.vp lint <multi-file list>silentlymatched nothing on the first attempt and still exited 0 — the no-op
AGENTS.mdwarns about.Confirmed the linter was live by checking it flags a deliberate violation.
Client verification — fixture correction worth recording
The handoff said to isolate provider homes before opening Usage. The settings path it implied was
wrong: the dev runner passes the base dir explicitly, so
stateDiris<base>/userdata, not<base>/dev. Settings written to.t3/dev/settings.jsonare ignored, and Usage scans the real~/.claudeand~/.codex. Writing to.t3/userdata/settings.jsonand clearingusage-scan-cache.jsonfixes it. No real usage data was captured or uploaded.Verified against synthetic transcripts:
[1m]context variant priced at base tier; custom pricetook an unpriced model from
$0.00to$1.11matching hand-computation; blank cache ratesinherit the input rate; reset / undo / discard all present with the environment selector locked
while edits are staged; negative and non-numeric prices rejected;
server.refreshUsageRatesconfirmed in the server trace; and a second paired client recalculated to
$1.97on its own,live-updating its open editor.
Two new deferred entries — inherited upstream defects, adopted as-is
Both were confirmed by adversarial review and are not porting errors:
UsagePriceOverrides.tsxis byte-identical to upstream84b99f3, and the refresh sequencingmatches upstream #9202's deliberate design. Adopting upstream's finished behaviour rather than
forking, and recording instead:
dialog is open: the row stops rendering while the footer still offers to save it, saving
silently re-creates the override, and a half-filled draft blocks Save with a validation message
that has no on-screen render site.
apps/web/src/components/usage/UsagePriceOverrides.tsx:131.Revisit trigger: an upstream fix touching that file, or a maintainer decision to fork it.
chained onto the rate-refresh RPC, so the spinner returns immediately and rows update ~10s
later. Pylon's pre-adoption code refreshed synchronously, so this is a real behaviour change
for Pylon even though it is upstream's intent.
apps/mobile/src/state/usage.ts:118andapps/web/src/state/usage.ts:113. Revisit trigger: an upstream change to that sequencing, or acomplaint about refresh responsiveness.
Unchanged
Frozen upstream head
062987b2and cursorbeae2147are untouched — the cursor stays put until#416 merges. DEF-16, DEF-7 and WATCH-1/2/3 were not re-checked this cycle and keep their recorded
triggers. Release and install status still unverified; the new code is neither released nor
installed. After #416 merges, 75 source candidates remain in the frozen range.
Next action: maintainer approval to merge #416.
rynfar commentedon Sep 8, 2026
PR #416 merged — 2026-09-08
Merged at
e0037b844027b9d1b9fefe7730f7c7f975ad1b27;pylonnow points there. Remote branchupstream/2026-09-07-usage-pricesdeleted. All 14 checks passed on the merged head2f1b3c790406ff1f3126cd397078008a97bf31e7, 3 conditionally skipped.These three sources are now adopted:
2b745efe57cddc1753d3007d081c64bd20e3ab79(#9202) explicit rate refresh and context-variant pricing394e8470c89927a06575e08c434006b2320f1781(#9774) custom prices and cross-client recalculation84b99f3fb7bbc759fcbb589d031920e76edf4746(#9861) staged price table and selected-environment writesCursor unchanged.
reviewed-throughstays atbeae2147a9487ec47ac992319f2216914b4cb62d: the75 remaining candidates in the frozen
062987b2range still have no authorized disposition, sothe cursor cannot advance regardless of this merge. Merging is not cursor advancement.
DEF-17 and DEF-18 shipped unfixed, by decision. Both are inherited upstream behaviour, not
porting errors, and were adopted rather than forked. They are live in
pylonnow. Their triggersstand as recorded in the previous comment.
Not released, not installed. Release status was not reverified and this code is in neither a
release nor an install. Per the skill, validate one release covering the completed cycle rather
than releasing per PR.
Local cleanup: the isolated dev server started for client verification has been stopped (ports
15406 and 7366 are free). The worktree
/Users/rynfar/repos/pylon-usage-prices-0907is left inplace on the now-deleted branch, along with its
.t3fixture, in case the environment is stillwanted; it can be removed with
git worktree removewhen it is not.rynfar commentedon Sep 8, 2026
DEF-17 and DEF-18 retired — fixed rather than deferred (PR #418)
Correcting the previous comment: both entries were recorded as deferred on the reasoning
that they were upstream's code and fixing them meant forking files upstream still owns.
That was the wrong call. Once the adoption merged, Pylon owns the behaviour, and DEF-17 in
particular could silently re-create an override a user had just removed elsewhere. Both fits
were small and local, so both are fixed in PR #418 instead.
UsagePriceOverridesderived rows only from models present in theselected environments' settings, so a live settings change from another client stranded a
staged draft: invisible row, Save still enabled, silent re-creation on save, and a
validation message with no render site. A draft whose model has left settings now keeps
its row until saved or discarded. The derivation moved into
usagePriceRowsinapps/web/src/components/usage/usagePriceTable.ts, which made it unit-testable.useUsagenow exposes arefreshingflag covering the rate refetchthat precedes the rescan, with an in-flight guard, mirroring the existing
useRefreshLimits. Mobile ORs it into the pull spinner; the web refresh button spins itsicon, gated to the transient state and disabled under reduce-motion. Refetch-then-rescan
ordering is unchanged, and the rescan still runs whether or not the refetch succeeds.
Verification on #418: 43 tests across 5 files, 3 of them new and each confirmed to fail with
its fix reverted.
@t3tools/weband@t3tools/mobiletypecheck clean — wideningUsageViewbroke a
UsagePage.test.tsxmock that the tests themselves did not catch. Lint and formatclean across 9 changed files. No contract, server or migration changes.
Neither entry needs a revisit trigger; do not carry them forward.
Worktree cleanup. The 13 merged, clean upstream worktrees from this cycle and their local
branches have been removed. Preserved:
pylon-astra-0905andpylon-upstream-0903(bothdirty) and the unmerged
pylon-catchup-0905,pylon-keyboard-reference-0907,pylon-mobile-foundation-0907andpylon-settings-foundation-0907.pylon-price-fixes-0908stays until #418 lands.Cursor and frozen head are unchanged:
beae2147through062987b2, 75 candidates stillwithout a disposition.
rynfar commentedon Sep 8, 2026
PR #418 merged — 2026-09-08
Merged at
f24356d943874ef291d5a21abc4612451cf2b683;pylonnow points there and the branch is deleted. All 14 checks passed on984d7fc4d3, 3 conditionally skipped.DEF-17 and DEF-18 are fixed and live. Neither carries a revisit trigger; do not reopen them.
Worktree
pylon-price-fixes-0908and its branch are removed. Remaining worktrees are the two dirty ones (pylon-astra-0905,pylon-upstream-0903) and four unmerged ones (pylon-catchup-0905,pylon-keyboard-reference-0907,pylon-mobile-foundation-0907,pylon-settings-foundation-0907), all deliberately preserved.Cycle state is otherwise unchanged: cursor
beae2147, frozen head062987b2, 75 candidates still without a disposition. Nothing is released or installed.rynfar commentedon Sep 8, 2026
Catch-up resumed — 2026-09-08 (post-#418)
Working the frozen
062987b2range again. Two groups prepared and open:ba3cb07738(#9277) andf6db4206(#9763). Migration renumbered 045 → 058 (Pylon already uses 045 forAuthSessionClientConnection; its lineage runs one ahead since id 36 was retired). The pull was moved inside Pylon'swithRemoteWriteLock, which upstream does not have — the pull writes to the checkout, so it must not race the status refresh. Dropped an unrelated upstream test asserting an exportedgetAutoBootstrapThreadModelSelectionthat Pylon keeps private; it predates #9277 and is not part of this feature. 62 tests, 3 packages typecheck clean, lint/format clean, migration lineage validated.fd773172e7(#9173) and14bf3f6d16(#9644), one unit. Dropped upstream's relocated## Prompt stashheading, which would have duplicated Pylon's existing section with an empty body. 16 tests, web typechecks clean, lint/format clean.That takes the group to 4 of the 75 remaining sources prepared, none merged yet.
Deliberately not taken yet, with reasons
2e688a53/9e1fb459(docs #9755/#9756) — ~6,400 lines rewriting internals and user guides that Pylon has deliberately diverged on, and9e1fb459editsproviders-antigravity.mdfor a provider Pylon has not adopted. Needs a deliberate docs pass, not a mechanical port.1587f248(#9132 provider turn token usage) — 3,865 insertions across every provider adapter plusProviderService. High-conflict against Pylon's adapter divergence; deserves its own dedicated pass.Separate defect found
docs/user/composer.mdsays "T3 Code" in seven places predating this work — visible product copy that should read Pylon. Not folded into #420; it will follow as its own docs change.Cursor
beae2147and frozen head062987b2unchanged. Upstream now has 94 arrivals past the frozen head (was 14 when last observed); they belong to the next cycle.rynfar commentedon Sep 8, 2026
Four PRs merged, and an inventory defect found — 2026-09-08
Merged into
pylon:00eccccccf— automatic pull of clean default branches (ba3cb07738#9277,f6db4206#9763)02bf6f30d4— recall sent prompts with the up arrow (fd773172e7#9173,14bf3f6d16#9644)ab1823b579— preserve mention text, keep slash menu visible (761d4bac1c#10100,120fab18d8#9625)2b62f2272f— user-guide branding: ten "T3 Code" → "Pylon" where the docs describe Pylon's own behaviour (two deliberate coexistence references ininstall.mdkept). Not an upstream source; a defect found during feat(web): recall sent prompts with the up arrow #420.All four went in with 14 checks passing and 3 conditionally skipped.
pylonis now at2b62f2272f.Six upstream sources adopted this pass.
The candidate list is incomplete — do not trust the count
While preparing
f12d39359f(#9561, unify loading and refresh feedback), the cherry-pick failed to build because upstream's newSpinnerimports~/lib/visibleAnimationand uses avisible-animate-spinutility. Neither exists in Pylon. Both come from:ce4712d5b0— fix: restore UX after performance improvements (#9799), 31 files, 1,511 insertionsce4712d5b0is after the cursor and an ancestor of the frozen head, so it is squarely inside this cycle's range — but it does not appear anywhere in this issue's candidate list. So the "78 candidates" figure (now 75, then 69) is not a complete enumeration of the range, and neither is any count derived from it. The list is usable as a work queue, but it must not be reported as the remaining total, and a group must have its dependencies checked against the actual tree before porting rather than assumed from the list.The #9561 cherry-pick was aborted rather than left half-resolved; nothing from it is committed. Adopting it means taking
ce4712d5b0first as a dependency series, roughly 73 files combined.Worth noting for whoever takes it: #9561 supersedes the DEF-18 fix from #418. Upstream moves refresh into a shared
refreshUsageinclient-runtimethat awaits the rescan itself, aborts when an environment disconnects, and invalidates the query on failure — strictly better than the per-clientrefreshingflag #418 added. Take upstream's version and drop ours; do not layer them. Likewise upstream'sSpinner(motion-safe:visible-animate-spinplus a visibility observer) is a better fit for the "nothing repaints at rest" rule than the ad-hocanimate-spin motion-reduce:animate-none#418 used.Still needing a maintainer decision
The Antigravity series (~16 sources) adds Google Antigravity as a Pylon provider. That is a product decision about what Pylon ships, not compatible catch-up, and no porting effort should go into it until it is made.
Cursor
beae2147and frozen head062987b2unchanged. Upstream has 94 arrivals past the frozen head, belonging to the next cycle.rynfar commentedon Sep 9, 2026
Antigravity port — approved, underway, and precisely scoped
Maintainer approved shipping Antigravity on 2026-09-08. Recording the real shape of the work,
because it is not what the candidate list implied.
Do not replay the source commits
06336460c9is 169 files, +21,470/−1,388, and cherry-picking it conflicts in 64 files. Itis not a self-contained provider addition — it refactors shared provider/ACP infrastructure that
Pylon has diverged on. The tractable approach, which the skill explicitly allows, is a manual
port of the final behaviour at the frozen head; that also folds in all 16 follow-up fixes for
free.
Correct file selection is
git show --diff-filter=A <sha>on the source commit, not a searchfor antigravity-named files. My first pass used the name heuristic and silently missed five files
the commit adds under generic names —
ProviderAuthService(service, layer, test) andproviderInstallation(source, test). One unresolved import from those accounted for a 77-errorcluster.
A blind diff application deletes Prime
Diffing Pylon against the frozen head shows
PRIME_AGENT_DRIVER_KINDand itsDEFAULT_MODEL_BY_PROVIDERentry as removals, because Prime is Pylon-only. OnlyAntigravity-specific lines may be taken from any shared file. Prime was verified intact after
every contracts edit in this branch.
Branch:
upstream/2026-09-08-antigravity-serverBased on
upstream/2026-09-08-custom-model-names(PR #423, the prerequisite — Antigravity'ssettings reference
CustomModelSetting). Four WIP commits, pushed.Server typecheck errors: 232 → 137 → 126 → 69 → 26, never touching a pre-existing Pylon file.
Done: 29 new server files;
providerSetup.tsand its index export;ANTIGRAVITY_DEFAULT_MODELand the provider display name; the
AntigravitySettingsschema plusselectcontrol andProviderSettingsFormOption;supportsTextGenerationandsetuponServerProvider; theapproval-option
warning;authandrefreshModelsonProviderInstance.Pylon divergences already reconciled, each of which a mechanical port would have got wrong:
ProviderApprovalOptionlives inbaseSchemas.ts, notorchestration.ts(Pylon #8058).supportsConversationRollbackis required on Pylon presentations, optional upstream.supportsTextGeneration(upstream, resolved per snapshot) is kept alongside Pylon'ssupportsBackgroundTextGeneration(static, per driver). Related but not the same mechanism;folding them would be wrong.
value/allowCustomAnsweralready existed in Pylon from an earlier adoption.The 26 that remain
yauzlis a new runtime dependency (^3.4.0, plus@types/yauzl), used byAntigravityInstallationto unpack the managed runtime. Pylon does not have it. This is thefirst dependency addition in this catch-up and needs a deliberate decision — 5 errors.
ConfigOptionsUpdatedandAvailableCommandsUpdated, and theconfigOptions/availableCommands/approvalOptionsfields. Needs the Antigravity commit's
AcpRuntimeModel/AcpCoreRuntimeEventshunks — ~8errors across
AntigravityDriver.tsandAntigravityAdapter.ts.manifestDefaultModelmissing fromModelManifest— 1 error, one hunk.Then: register the driver in
builtInDrivers/ProviderRegistry/server.ts, run the affectedtests, and verify repo-wide —
Checkrunsknip:checkandvp check, and package-scopedtypechecks miss both.
Client work is a separate PR
45 client/docs integration points remain (10 web settings, 9 web chat, 4 mobile threads, 3 mobile
state, 3 mobile lib, docs, marketing). Antigravity settings default to
enabled: false, so theserver PR landing without the client is a safe intermediate state.
rynfar commentedon Sep 9, 2026
PR #423 merged at
fde6799297499329600b7a8b7c7882f75087f9a8— 14 checks pass, 4 conditionally skipped.pylonis at that commit and the branch is deleted.5a433244d0(#9807) is adopted. The Antigravity prerequisite is satisfied.upstream/2026-09-08-antigravity-serverhas been rebased onto the merged prerequisite and force-pushed; its four WIP commits are intact and it no longer carries #9807's changes as its own. Remaining work is unchanged from the handoff above — theyauzldependency decision, ACP event-model drift,manifestDefaultModel, then driver registration and repo-wide verification.rynfar commentedon Sep 9, 2026
Antigravity adopted — PR #425 merged
Merged at
275de5ef1dbf876de7e7280226b406c814be1873. 14 checks pass, 4 conditionally skipped.17 sources adopted in one PR:
06336460c9(#9348) plus1e051873,2120fbc1,0aae1e2a,ef4cc608,e01c153c,f25e4428,baf67b6e,eb334ca5,8ea52c8f,f8a14b28,2675e3c7,6349a0e6,c8872fd2,ab67795d,912276bc,d487dfbf.Ported as the finished behaviour at the frozen head, not by replaying commits —
06336460c9alone conflicts in 64 of its 169 files because it refactors shared provider/ACP infrastructure. Correct file selection isgit show --diff-filter=A, not a search for antigravity-named files; the name heuristic missed five files the commit adds under generic names, and one unresolved import from those drove a 77-error cluster.yauzl@^3.4.0added for the managed-runtime unpacker. First dependency in this cycle.Pylon divergences reconciled — a mechanical port would have got each of these wrong:
PRIME_AGENT_DRIVER_KINDand itsDEFAULT_MODEL_BY_PROVIDERentry read as removals against upstream. Verified intact after every contracts edit.codexandclaudeAgent, so adding Antigravity made the entire manifest fail validation and silently fall back to defaults.conversationRollbackis a mode union here, not a boolean — registered"unsupported".supportsTextGenerationkept alongsidesupportsBackgroundTextGeneration; different mechanisms.ProviderApprovalOptionlives inbaseSchemas.ts(#8058).agent_thought_chunkalready mapped toContentDeltawith payload-derivedreasoning_text.Three shared ACP runtime gaps fixed, which Grok and OpenCode also benefit from: startup metadata published during session setup was dropped;
session/resumewas unimplemented so agents' resume handlers never fired; and config option changes only updated a ref instead of reaching adapters.Deferred to the client PR:
ProviderAuthServiceLivewiring andANTIGRAVITY_AUTH_METHODSexport, plus the adapter'scompactiondeclaration which needs #10112. 45 client/docs integration points remain; Antigravity defaults toenabled: falseso the server half is safe alone.Count
51 candidates remain in the frozen
062987b2range. Upstream has moved to2a30353530with 105 arrivals past the frozen head, belonging to the next cycle. The 81-item list is still not a complete enumeration —ce4712d5b0was missing from it and is being adopted in #426.[-]Upstream integration cycle: resume approved catch-up through 062987b2[/-][+]Upstream integration cycle: catch-up through 6c583620 (2026-09-09)[/+]rynfar commentedon Sep 9, 2026
Cycle re-bounded to
6c583620ff— note for whoever holds this cycleI refreshed this issue's body on 2026-09-09 while fixing an unrelated composer regression. All prior comments are untouched; only the body was rewritten, because it still described the usage-pricing port as unfinished after that port had merged.
What changed in the body:
062987b2fbto6c583620ff(2026-09-09). Review cursor is unchanged atbeae2147a9.beae2147a9..6c583620ff— 47 carried over from the old frozen range plus 106 new arrivals after062987b2fb. None of the 106 are covered by any merged Pylon PR.In-flight work is not counted as adopted. Open PRs #429, #430, #432 and #433 remain listed as unclassified sources. #430 (manual context compaction) claims three of the listed 47 —
c5ba51d629(#9293),5f878d2a85(#9623) and5fa35d211682(#10112). Do not re-port those; strike them from the inventory when #430 merges.Also merged today, Pylon-original rather than upstream: #428 restored the composer context window indicator that #402's adoption of upstream #9190 had silently defaulted off.
rynfar commentedon Sep 10, 2026
Handoff — live activity motion and skeleton pulse (2026-09-10)
Maintainer is handing upstream work to a different agent after this. No unfinished worktree:
t3code-e7f6ef3ais clean onupstream/2026-09-10-skeleton-pulse, everything below is pushed, and nothing needs recovery from local scratch.Frozen state
6c583620ff7ad3235b135af7107c0543467eecfa. Review cursor unchanged:beae2147a9487ec47ac992319f2216914b4cb62d.390ba78a17cafad18e04eefbe2dfb21484a1834a, which already contains feat(work-log): native app and browser icons, honest failure and idle states #444, fix(web): adopt twenty-two upstream web corrections #446, fix(mobile,desktop): adopt ten upstream client corrections #447, fix(server,relay): adopt eleven upstream corrections #449 and feat(markdown,usage): adopt five remaining upstream corrections #450. The leftover localupstream/2026-09-10-{web,mobile-desktop,server,misc}-fixesrefs are merged, not pending.New standing maintainer preference (2026-09-10)
Theming and styling follow upstream; only the logo and product branding stay Pylon's. Stated directly by the maintainer when choosing #9448. This settles visual divergences in upstream's favour by default and is narrower than the earlier "preserve Pylon styling" reading. Behavior, features and compatibility keep the existing Pylon-first default.
Open: #451 — skeleton pulse (ready)
#451, head
1185177e7431019ac414e1bf253e18484cad81cc. Cherry-pick of21b9dda5afb00a33e228a68d2ccc885bba7285dc(#9448), MERGEABLE against the head above, CI in flight at handoff.Retires
ghost-pulseand the swept gradient band; every loading state uses one stepped opacity pulse. Upstream's new@keyframes skeletonwas byte-identical to Pylon's existingghost-pulse, so the animation count drops rather than changes. Two Pylon resolutions: the detail ghost keeps its!seedgate, and UsagePage keeps Pylon's own fill-in timing sentence. Ledger row is in the PR. Next action: confirm CI, then merge.Open: #445 — obsolete, recommend closing
#445, head
eb471a6d50d18cb13a8bf62630e1fb1c22604aa7, now CONFLICTING. It restoredlive-tool-shine(which #426 had silently paused by adding #9799'sanimation-play-stategate with no observer) and ported #9799'sActivityShimmerOverlay.#444 reached the same destination by a different route and got there first. On
390ba78a17: the overlay exists withref={observeVisibleAnimation},visibleAnimation.tsalready gaineddocument.hasFocus()plus window focus/blur listeners, andlive-tool-shineanddata-animation-activeare gone from the repo entirely. #445's substance is therefore already landed, and rebasing it would re-introduce a utility Pylon just deleted. Only its guard test and onedocs/user/tool-activity.mdline are unique. Awaiting the maintainer's call on closing.Findings worth a decision, not yet acted on
live-tool-shine; upstream still uses it. Upstream'sLiveActivityRowrenders the overlay only foractive && shimmerand passesshimmersolely fromThinkingTimelineRow, keeping the gradient shine for tool labels viaactive={animated && !shimmer}. Pylon's feat(work-log): native app and browser icons, honest failure and idle states #444 gives everyactiverow the marquee overlay and deleted the shine. Under the new styling preference this is a divergence to reconcile — checkapps/web/src/components/chat/MessagesTimeline.tsxaroundLiveActivityRowagainstt3code-upstream/main.docs/user/tool-activity.mdis now stale onpylon. Its last paragraph still says "only the active tool label shines", which no longer describes the overlay-for-every-active-row behavior.visibleAnimation.test.tson fix(web): restore the live activity shimmer and shine #445's branch parses every@utilityinindex.cssthat reads--visible-animation-stateand fails when a file applying it never attaches the observer. It catches both failure modes fix(ui): unify loading and refresh feedback across clients #426 produced — a gated utility with no observer, and a gated utility with no consumer at all — and would still protectlive-activity-focustoday. Verified to fail on the real regression, not just tautologically. Worth lifting into whichever PR touches that area next.Verification completed
UsagePage.test.tsxplus all ofcomponents/pullRequest/),tsgo --noEmitinapps/web, scoped lint and format. Grepped for leftoverghost-pulse/--skeleton-highlightconsumers — none.Remaining scope
Unchanged from the inventory above apart from the sources #444/#446/#447/#449/#450 landed and #9448 in #451. DEF-7, DEF-16 and WATCH-1/2/3 keep their recorded triggers; their external state was not re-polled here. The
work-log tool iconsgroup (#9093 + #9606) that was queued next is already landed by #444 — do not start it.rynfar commentedon Sep 10, 2026
Correction and update — live activity parity (2026-09-10)
Two corrections to my handoff comment above, and one new PR.
Correction 1: the guard test claim was overstated
I wrote that the guard test "catches both failure modes #426 produced" and was "verified to fail on the real regression". That was true on #445's branch, where
MessagesTimeline.tsxhad exactly oneobserveVisibleAnimationusage, so removing the row's ref removed the import too. It is not true against currentpylon: the file now registers the observer inWorkingTimelineRowas well, so a file-level check still passes with the row's ref deleted. I re-ran that negative control today and it did not fail.The version now in #452 states its own granularity in a comment and adds a second, exact guard that does fail on a real mutation.
Correction 2: Pylon was diverged in a way that also broke spinners
The divergence I flagged as "worth a decision" turned out to carry a live regression.
cdde7f3150deleted@utility visible-animate-spinalong withlive-tool-shine, butspinner.tsxandrefresh-icon.tsxstill applymotion-safe:visible-animate-spin, andindex.cssis the only stylesheet in the web app. Tailwind emits nothing for an undefined utility, so every spinner and refresh glyph in Pylon web has been static since that commit. Not theming — simply broken.Open: #452 — live activity parity (supersedes #445)
#452, head
aad0257bfd, branched from390ba78a17. CI in flight at time of writing.Restores upstream's exact arrangement: the overlay is for label-only rows (
active && shimmer, passed only byThinkingTimelineRow),live-tool-shinereturns for tool labels, the observer ref sits on the animated row rather than the overlay, worktree setup and compaction shimmer again, and both CSS utilities are byte-identical to upstream in upstream's order. The live activity components now differ fromt3code-upstream/mainby one retained prop comment.visible-animate-spinrestored.Preserved deliberately, and both are behavior rather than theming: Pylon's
workingStepLabel, and thedocument.hasFocus()gate that AGENTS.md requires and upstream lacks.#445 should be closed as superseded — #452 covers the same area correctly against the current head.
Maintainer direction, restated
The maintainer was explicit today: diverge only for branding, which right now is only the icon, and get back in step with upstream on this kind of visual code. Treat a Pylon-authored visual deviation as a defect to reconcile unless it is branding or a documented AGENTS.md requirement.
rynfar commentedon Sep 11, 2026
Upstream check and lane claims (2026-09-10)
Range
6c583620ff7ad3235b135af7107c0543467eecfa. Review cursor unchanged:beae2147a9487ec47ac992319f2216914b4cb62d.1e1a43d5761cf93d0008527a7d376ba723c55d05.2afa02a280acb0db4868d36409ba9bf7eae286c1: 41 commits past the frozen head. They belong to the next cycle and are not in any lane below.Reconciled inventory
Of the 153 sources listed in the body, 54 have landed (51 by cherry-picked subject, plus
6cf0c6ea55,00f8b7c280andc3b8825bf4ported manually in #444).6f405370c8(#9543) landed and was then reverted inffd5df2d3ebecause its bundledDev tests fail, so it counts as remaining. It is paired withfee2e0ff81(#9558), which edits that same test file.99 sources remain, all assigned below. Re-triage against the head above: 6 apply cleanly, 93 conflict (many in a single file or only in the lockfile).
b5d89038aeis an empty duplicate ofbde39d4d79. Upstream version bumps8de9169f07,1d1bf50405andb28471567care planned skips, because Pylon versions independently.Lanes
Parallel feature lanes are partitioned by surface. Each opens its own PR and does not merge; merges follow an adversarial review. Do not start work on these sources in another session.
mobile-drafts — 19 sources — branch
upstream/2026-09-10-mobile-drafts— in flightc0bf35466c8aa1862572dfa84b51b6fe30fc82d6— feat(mobile): show new-task drafts alongside pending tasks in the thread list (#10260)8e129a0dfb35ac2c03a7320245b5bfb976f5d3bf— feat(mobile): allow several new-task drafts per project (#10327)95d99373b74edfb3bfd092c61a15999a95727423— fix(clients): show feedback results in composer banners (#10398)66a24d6c1a008430eebd855cd5640607d5aef38c— feat(mobile): queue a message while its attachment is still uploading (#10404)d6aa179ad2afe0424e1410cbafbb119bbd5f7809— feat(mobile): show when an existing thread has a message waiting in the outbox (#10405)e1230d6031bc55a21668818d0b585d8887b88579— fix(mobile): keep pending messages in the chat timeline (#10449)5b68b2c8e1e971e4ee6956157a1698646ef52a55— feat(mobile): open the thread screen as soon as a new task is submitted (#10435)7dda0b1c0a95603f1954b81a9fee699be92668f0— feat(mobile): start a new thread on an existing branch (#10359)71297974c666b0db50a3e3b1a861742f2cdd4d7d— fix(mobile): prevent chat from disappearing when scrolling (#10479)b248f5ad566a8cd3ea2d7d678c1e8aa49c748879— fix(mobile): smooth composer status pill resizing (#10484)c0d4e95c0d921b5960ad04c7f8abec459ee3c59e— fix(mobile): release initial scroll target after dragging (#10483)e32dd42f8ba0daa2d0c6d6d2e474b7af6b3eb7b4— fix(mobile): animate thread lifecycle transitions consistently (#10487)b7175371d9f32f3b759a922cdbf727a3214c99a2— fix(mobile): restore assistant message bottom padding (#10491)dc39615aec702ea6d402168f80b4d1613f4f2e0f— fix(mobile): preserve chat rows when toggling commands (#10492)357b8d5217cd62826767b6ce6d7c47915f2777d2— fix(mobile): match Working status color to desktop8d7f78121660eb8599d4c5ff40cb4394159abfab— fix(mobile): wait for native thread scroll before reveal (#10486)2c8e95a4b641898322c7312cb67535612606745e— fix(mobile): show the provider account badge on thread rows (#9899)3e6f856f2359421958a3aa046f2c393e00f3dc6a— fix(mobile): tolerate native Headers without getSetCookie (#10851)2a303535305d7d224a750fdee78c66e2a52ab3ab— feat(mobile): arrange threads with drag handles (#10496)mobile-android — 10 sources — branch
upstream/2026-09-10-mobile-android— in flight9eb4d71681dc7d002082db2f8b4bacf7614412f4— fix(mobile): remove provider setup (#9721)1d1bf50405ccca8fdb8b57879d9def379e27a550— chore(mobile): bump app version to 1.1.0c0cad74bfaddf153c3adaaf4f78af2be9260c4c1— fix(mobile): restore brand artwork in the Android adaptive icon (#10598)02443335b155e46248f96d80e037603abc742a61— fix(mobile): configure iOS Keychain access group (#3665)892de47f0625183edd111dd36df45b156185bbf2— fix(mobile): fit the Android splash icon to its circular mask (#10620)b28471567cebe20347205059bbbdb3efe1213528— chore(mobile): bump app version to 1.1.1579266caa89238611ddb974ffebe9968c6a6e5d5— feat(mobile): use Android wallpaper colors (#10691)4664c572a78231611491f63f677f0e007ebaab03— feat(mobile): add optional Material You layout (#10692)1862686f9e42bf1d77e7f2ad03e24d7b0c7908f1— fix(relay): use current APNs registration routing for queued jobs (#10859)6c583620ff7ad3235b135af7107c0543467eecfa— feat(mobile): add Android agent notifications and ongoing activity (#10416)web-onboarding — 9 sources — branch
upstream/2026-09-10-web-onboarding— in flight09aac71563c66a4f65f6fbe701aa9596cb677767— feat(web): first-run welcome wizard with agent setup and project import (#5362)d92dca74eb7b7c6068619752f5b9a55c0e36f352— fix(web): resume imported custom-provider threads (#10184)82689782eee0f0cf27d5601e1d533381587b64f8— fix(web): explain hosted connection prerequisites (#10129)c2c4185e175daea86f8fd6336fd8839a81cc616e— fix(web): onboarding installs agents without needing Node or npm (#10402)ec36176e4f25fac7e3c380f6a4b646116e4ccf3d— fix(web): onboarding wizard now supports light mode (#10432)95f9b14f873c7b119f0ffb6dbd194c7063293aa2— fix(server): import transcripts with oversized tool records (#10430)f729e8fd837e4d6de86781351c3aee5a4ea19ab3— fix(web): make onboarding a shared multi-computer wizard (#10465)8b2838e0e8a73d3fa6476940445c372e47b99db4— feat(web): group onboarding project import by repository (#10493)62fbbe08aa854fcbd8044cd971a45a54edafcb98— fix(web): tolerate servers that predate git identity in project import (#10547)web-project-defaults — 8 sources — branch
upstream/2026-09-10-web-project-defaults— in flight9f40b2f563c662b43887b11ff99c466fe871c1af— feat(settings): add shared project defaults and scoped overrides (#9754)420fd76f60433fe05b8d2c76f4fbde430dc49968— feat(connections): balance new threads across connected machines (#9895)2d6a3799978659e349faf8ff4297098ffb782ebb— fix(web): only show auto balance errors after failed checks (#10407)efeac144289d0f64bcfe3b9274c616499893be91— fix(web): show load balancing note for a single machine (#10433)c8ec7df12415140c6413372f53e3be4fe2e959f8— fix(web): make settings project scopes searchable and scrollable (#10570)15193df9fb915837f7215909a7d741789db0a273— fix(web): update machines together in auto balance (#10596)7d9aaf6a7eb22d5e85b0e3b21686cc437fe68576— feat(web): add pull request merge defaults (#8088)eb115063634c416c6362cc407f8572cb0c136ddf— refactor(web): pass the project record to ProjectFavicon so icons cannot drift (#10714)web-composer — 12 sources — branch
upstream/2026-09-10-web-composer— in flight (may split out `upstream/2026-09-10-question-attachments`)2c3353578098a9e55e203a72217abe993f97987e— fix(web): keep timestamp tooltip dates in English (#10256)aea9ecbc482a3d2c14d1828cb5eeaaa9294d1320— fix(web): make task row states readable (#10128)076d753ae6cb97136b6b4199fb8fc0b379282dba— perf(web): skip checkpoint map rebuilds while streaming (#10118)b919d6389929698ddf223d35d20139f01c8bc899— fix(web): keep composer toolbar controls anchored during transitions (#10478)dadba6d95d2c4515956a6c7fef184378987e13b7— fix(web): remember Composer Fast mode across new chats (#2981)09e8de9c655ae85410bf6b00446f272a01da81c7— Add stop thread keybinding command (#4308)8588d7f63bf57e6285daafe035708cc22a99619c— fix(web): open proactive panels when entering threads (#10610)50a76cee7c56ac22568e549dc855248967bfb9ab— fix(web): keep scroll-to-end button close to composer (#10543)7220dfe2c949476eaa7d21eccbcd3a0ce0eddb49— feat(chat): attach files to question answers (#9871)134b7194b125dd4881ff6040f66997b23489b72e— feat(web): add previous/next turn navigation in minimap (#8531)de545c41737aca08359244b7778ab52e55934f17— fix(web): stop the bar under the composer popping in after threads load (#10727)7fbc545ae8c7866ac2b39648120cb2a17250d8b4— fix(web): keep the composer footer still while thread data loads (#10768)web-panels — 10 sources — branch
upstream/2026-09-10-web-panels— in flight1587f248dd81ed45e214d476451ebf16dbfadb1a— feat(server): measure provider turn token usage (#9132)d64335bb5913c21869633a4236d9409911e3da52— fix(codex): name the usage limit and its reset instead of relaying "out of credits" (#10473)ea2983afbbcd5ad6ee2e7db80c2a9270ff4964a9— fix(web): copy selected pull request link from PR page (#10615)d081ab7abc16a21570d3d96948acb6c1f8d847a4— fix(web): open pull request markdown links in the panel (#10623)6df0add6e65b7c0040b5774635f794e4ff802ddd— fix(web): navigate markdown images as galleries (#10625)bc4b00666272188027d086361fa5ae01cda53bd2— fix: generate thread titles with the selected model across connections (#10526)1f14d6d10afbcc99ec255b23544ee25c08dea321— fix(usage): keep account columns aligned across limit rows (#10690)bde39d4d7977ce85d6ea396a983d6b6a25bf7e07— feat(web): accept file drops into sidebar threads (#7892)b5d89038ae72142038dfa8cf69d49b7a607fe98e— feat(web): accept file drops into sidebar threads (#7892)772ea1473a4a8f8fb0e0a5c9ba6d7a2ef14eac6e— fix(web): honor terminal link browser overrides (#10060)desktop-capture — 10 sources — branch
upstream/2026-09-10-desktop-capture— in flight (may split out `upstream/2026-09-10-desktop-fixes`)8de9169f078fdafedf47d8c299cb8e2c79fda6fb— chore(release): prepare v0.0.40299404a754f52c02c69634528d8856b3c93b378c— feat(desktop): add cross-platform window capture (#8103)9fe4d6568b5e4852f6085d3a22dbc5aa3a632408— fix(native): wait for the KDE feedback test listener (#10645)a01b227d6f37d1cfed7a2f47aaace2f72ea76ce3— fix(desktop): resolve local media linked from remote threads (#10619)9e37f0c291974d084a59d7b9f165a1cb056e6043— fix(preview): transfer recordings to the agent environment (#10572)b5f7fa0ede2a0d791226e6474c9cc4374dd89cc9— fix(desktop): enable context menus in the browser (#10670)991526383f95eefdd66ffd2853136c6dd34ae008— feat(desktop): refresh macOS installer with aurora artwork (#10632)061543e9e5b54ec0048725c37d52fef2962df173— fix(mcp): keep preview snapshots usable by the agent and let it save them (#10501)5d14c0e9686d8bedf47dd93dd3811fd639255c7e— fix(desktop): use official logo in macOS installer (#10819)0fe4c99ee6df4cbb7a9064d2d86ece65ecef5eb3— fix(desktop): neutral artwork for stable macOS installer (#10820)phase2-wizard-consolidation — 1 sources — branch
—— sequenced: needs web-onboarding and desktop-capture merged3faeee49ac67dfd9534369f1e1c627c0356b75ac— refactor(web): consolidate setup wizards into shared components (#10832)phase2-toolchain — 18 sources — branch
—— sequenced last: Effect rc.112 / knip hunks edit files the feature lanes create194f838e7636f97739c440c7855aed195dbd7f52— chore: audit lint directives and move plugin allowlists into config (#9300)3b2de9da1c8763602e283e8d14b41b5d57a9d0c7— chore: dedupe lightningcss and tailwind node bindings (#9331)f5fbb1bcb0db378c61addd5b49ef2d95bd888168— chore: upgrade vite-plus to 0.3.0 (#9327)6f405370c8e552da9dcfdd6922e85789fd918340— fix(dev): keep shared dev reloads and hot updates working (#9543)fee2e0ff8168b82ab19f496fcc874c1f3871f522— test(web): fix flaky startup and Tailwind tests (#9558)5b8a69c7b90b751507d0ab762dd77aaa2048408b— refactor(desktop): classify backend exports (#10265)5a853a4b4513467fd1be3d62fe7dc974cea07c3c— refactor(desktop): classify electron exports (#10266)89dd9ab32b4aaba6f34689353cb14fa6549e34fc— refactor(desktop): classify app exports (#10267)b491e41da366beb03c54b585745318553f1239c5— ci(knip): enforce desktop exports (#10269)a37c66406830525888465b2eaebf34df2265de86— chore: upgrade to TypeScript 7.0.2 (#10663)bd56e920b7309e859d0b1a099d53e816628ea75e— chore(deps): upgrade Effect to rc.112 and Alchemy to beta.76 (#10652)458f5029882d6da3f2279893d6c9fffaf7748b5c— chore(refs): sync Effect reference to rc.112 (#10653)9d345fa957cf22806171c8037432eec8d9ed496d— chore(refs): sync Alchemy reference to beta.76 (#10654)6f4cd07b900299629b9f2f9a9336f5c090556a51— refactor(server): classify runtime exports (#10274)161715b1e4fa6d20fe3eb1cb9c91904bf83ca4c1— refactor(server): classify service exports (#10276)77d9ffc822ac4c1f3600dc6c97e92fc94e9e12a3— refactor(server): classify telemetry exports (#10277)060c576f8922703725f0dbdd01443ed88ecc9baa— refactor(server): classify provider exports (#10278)7d620506a1fecf07aa2d623e72059d551709ae3a— ci(knip): enforce server exports (#10282)phase2-docs — 2 sources — branch
—— sequenced last: restructures docs the feature lanes edit2e688a53cf8fc7a9caa9fd5070148bfcd3d5a741— docs: keep internal guides focused on architecture (#9755)9e1fb459a985d13c1d4e57080f49d70dabf3b681— docs: focus user guides on features and workflows (#9756)Deferred and watch triggers (checked once this cycle)
7fbc545ae8, a one-line capability entry inClaudeProvider.ts. It adds no model-identifying overage data, so the trigger is unmet.rynfar commentedon Sep 11, 2026
Progress: parallel feature lanes (2026-09-11)
The frozen head and review cursor are unchanged from the 2026-09-10 lane-claims comment above.
Landed (8 of 9 lane PRs, 75 of 78 lane sources)
Each lane got its own CI run and an adversarial review with fixes before landing. Where that was faster, reviewed lane heads landed through integration PRs that ran CI once on the combined code; GitHub marks the lane PRs merged.
Cross-lane fixes applied during integration:
Maintainer decisions taken on 2026-09-10: Electron 44 (drops macOS 12, with an update gate so Monterey stays on its current build) and the Linux desktop entry rename to
com.pylon.code[.nightly|.dev].desktop.In flight
websqlremoval)pylon, then running a final CI pass.t3 appCLI, desktop updates, Antigravity setup, and the web boot error.Remaining after #461
getSetCookiefix.reviewed-throughbeae2147a9that were never ported or recorded. #8626 and #9001 are absorbed into feat(desktop): capture other app windows into the composer #461. The other 18 still need a disposition before the cursor can be trusted:rynfar commentedon Sep 12, 2026
Handoff: remaining work in this cycle (2026-09-11)
Frozen upstream head
6c583620ff7ad3235b135af7107c0543467eecfa; ledger cursor stillbeae2147a9487ec47ac992319f2216914b4cb62d.pylonis at4fa8a964685005c155c8221aeed43c080daeb2af. All nine lane PRs and both early phase-2 PRs (#478 branding, #481 pre-cursor gaps) are merged. Two PRs remain, then the cursor and this issue.Verify everything below against Git and GitHub before acting; this comment is a snapshot.
1. #483 integration-4 — CI green, now conflicts with
pylonc43ea26231ede974dc0499ab69bb83137f841dc4. All checks pass on that head (Test, Test Server 1–3, Check, Rust, Release Smoke, Desktop Prime Packaged Smoke linux/win).9503961c4d) and docs: keep internal guides on architecture and user guides on workflows #482 (50e57bc9c9) unchanged, so merging chore(upstream): land the wizard consolidation and docs restructure together #483 marks both merged.pylonmoved after that CI run: fix(prime): verify current and historical publication policies #484–fix(prime): stop delivered work and preserve recovered answers #495 landed from other sessions (Prime work plus docs: simplify agent instructions and skill routing #494docs: simplify agent instructions and skill routing, which rewroteAGENTS.mddown to 33 lines and moved detail into.agents/references/).mergeStateStatusis nowDIRTY.git merge-treesays the only conflict isAGENTS.md. docs: keep internal guides on architecture and user guides on workflows #482's twoAGENTS.mdhunks edited sections docs: simplify agent instructions and skill routing #494 deleted:app.t3.codes→app.pylon-code.com). The surfaces section is gone;app.t3.codessurvives only indocs/internals/remote.md,docs/internals/t3-connect.mdanddocs/operations/release.md. Confirmapp.pylon-code.comis actually Pylon's hosted origin before re-asserting it anywhere — it came from the docs: keep internal guides on architecture and user guides on workflows #482 lane, not from infra.AGENTS.md:33onpylonnow carries a one-line version; the fuller rules, if still wanted, belong in.agents/references/contributing.md, not back inAGENTS.md.pylon'sAGENTS.mdwhole, then re-home the documentation rules in.agents/references/contributing.mdif they add something docs: simplify agent instructions and skill routing #494 dropped./Users/rynfar/repos/pylon-integration-4-0911(branchupstream/2026-09-11-integration-4). After merging, deleteupstream/2026-09-11-integration-4,upstream/2026-09-11-wizards-docs,upstream/2026-09-11-docs-restructureand their worktrees (pylon-integration-4-0911,pylon-wizards-docs-0911,pylon-docs-restructure-0911).2. #480 toolchain — needs its final rebase, then merge with the relay deploy
The subagent that owned this lane is gone; whoever picks this up owns the rebase.
upstream/2026-09-11-toolchainat1d79d809c2, worktree/Users/rynfar/repos/pylon-toolchain-0911, clean. Scope: vite-plus 0.3.0, TypeScript 7.0.2, Effect4.0.0-rc.112, Alchemy beta.76, knip export gates (18 sources).pylonafter chore(upstream): land the wizard consolidation and docs restructure together #483 lands.git merge-treecurrently predicts conflicts in.agents/upstream-review.md,apps/server/src/auth/EnvironmentAuth.tsandapps/server/src/environment/ServerEnvironment.ts— the last two are chore(upstream): isolate remote session cookies and settle pre-cursor gap sources #481's newexport const make. Tag both@publicfor knip, or make them private if nothing consumes them.vp fmtafter the vite-plus 0.3.0 commit;git grep -lz -w 'TaggedErrorClass' -- apps packages infra scripts oxlint-plugin-t3code | xargs -0 perl -pi -e 's/\bTaggedErrorClass\b/TaggedError/g' && vp fmtinside the Effect rc.112 commit — the Prime commits that landed since add new error classes, so re-running this is required, not optional;vp i, then prove it withvp i --frozen-lockfile.getSetCookiehunk inpatches/effect@4.0.0-rc.112.patchorapps/mobile/src/lib/http-response.test.tsfails.vp run knip:check, affected typechecks and focused tests, then CI.relay_migrationstable conversion..github/workflows/deploy-relay.ymlruns on every push topylon. Watch the "Deploy Pylon Connect relay" run and report the result, including the[RelayNeonProject]update and therelay_migrationsconversion. Never deploy by hand.3. Close the cycle
6c583620ffhas a disposition in.agents/upstream-review.md— including refactor(web): share one setup wizard and finish Antigravity setup from model pickers #479 completing #9348's client remainder and #9647, and chore(upstream): isolate remote session cookies and settle pre-cursor gap sources #481's 18 pre-cursor sources.reviewed-throughto the frozen head in a small ledger PR (it must not move while anything is unclassified).git fetch t3code-upstreaminstead of trusting either number.4. Small follow-up still open
apps/desktop/src/backend/DesktopBackendConfiguration.ts:570points atdocs/architecture/resource-telemetry.md; the file isdocs/internals/resource-telemetry.md.Operating context
com.pylon.code[.nightly|.dev].desktop; chore(deps): upgrade to vite-plus 0.3.0, TypeScript 7 and Effect rc.112 #480 merges with the relay auto-deploy on./tmp/pylon-upstream-0910/:BRIEF.mdandREVIEW-BRIEF.md(lane and review briefs),review-guard.py(mechanical port guard),lanes/*.tsv(per-lane source lists),INTEGRATION-FOLLOWUPS.md(follow-up and merge log),int4-body.md,new-arrivals-41.tsv.rynfar commentedon Sep 12, 2026
Closing audit in progress — source traceability
The frozen range remains
beae2147a9487ec47ac992319f2216914b4cb62d..6c583620ff7ad3235b135af7107c0543467eecfa(797 commits). Git/PR reconciliation found a recoverable disposition record for every source. The cursor is still unchanged while #480 awaits its final CI and merge.#483 merged as
2bb2c523cff94823ef79228b7827d8f520a4bb10after fresh CI passed on2863392ce000a5f81f1bdfa53efa43b43d057e99. #479 and #482 are marked merged. All three requested integration/wizards/docs branches and worktrees have been removed after verifying clean state and merged ancestry. The stale desktop telemetry documentation link is fixed.#480 is rebased onto that Pylon merge and pushed at
a6087ab9e4b0f7459f72b59ca843a5881915bddd. Local verification: 909 tests, 11 affected package typechecks, knip, formatting, scoped lint, regenerated lockfile and frozen install. The newer Prime publication-test export conflict was fixed. Final CI is running. Its approved relay auto-deploy is still pending the merge.The active index omitted links to several intervening merged ports. #425 records the final Antigravity implementation and its 16 follow-ups; #433/#440/#479 complete its contract and client portions, with the explicitly retained mobile/catalog exception in #479. #446, #447, #449 and #450 accidentally listed Pylon port commit SHAs as upstream source SHAs. Their source lists are now corrected: all original port commits are merged ancestors, and source/port changes match; eight patch-ID differences are surrounding-context differences. #449's reverted #9543 is completed by #480 instead.
The following 118 additional sources have explicit provenance in merged Pylon commits. This table makes those records recoverable from the index without relying on temporary lane inventories. Existing source-specific partial/superseded decisions remain authoritative; this is a provenance map, not a claim that every source was adopted verbatim.
118 source-to-merged-port mappings
04efa7907e9ec207e2d6af459ce3b2ffd55f610702076a64903b8b3c7db2d921fca529f5fb0c1a76b21d87243ea637fbb6fb50667e9a8547e1b6c4e8847ba8995c587e3d37a1a147c1bcf2640a5e105908aad594f0059d28dd23914f9d37ad4e695fff75b91dd14fd01fd1838ebbbf89f733dcea0d21129398725df00a729ba226ae8610a3488e5b9168029fce34c733747008b760595a40163134d47b51ac819a7b1e21e51609266adf657bcab0b43b6bcd445c1cd72917e4a71c064bb36fe2b2573d5fe83dc5e6ea71a19d4181ce13b0e8f374f45ba9237ee4a9ce434ba6ea2594b547888e8171a5ba4084a489c53afeb3ea7ebf83de2e301adb1f20300b262773ec547217a80af1300c7177ceb644ceac1ede35a7045cc2283ce14628127ef1758974ddab4f5b1f89d47a2e349a97c6e55029c240441fcd0733d55dd762287e460f429b740180cd72730418262a2df971ba5498a84624a151065621450e9ee36d406d55d90c4f6866fd6b5ccff82333ad4386ce68cdec03531b682a474e4459144a9726c8d568c44f825db958c880fc53b273039cf5e0a932582b1fbb56e7223ad4ab3846feb2c7bd808ce3199980705c2886ae64b2075014e5fcdd6e5f4a53d0fea4cbecba733821a854c3cee8324f9aa3cbb1eede67e6f005e0ae42b1ff8efd4e95fcb08478c9c6e8eee384bfca559f62cc50c258836bb73df99843a92a99b2066ec5d352b40e77fbd3d0d79eec5247e75583a04590a17851332d53d9b9b71713c0013e85fa43a63d405f5d8bfdd0b19b32e01d7abc8829c01353d759fed3d304ed5e243cb2c4fe5b8f318ea58c5e01dece1179c182cdbf324aa043b1bc5705159127d2b55f186d1b9b3ae8a72dbad9b923b27313e669cfe9353f61399c083d4de5b0fd33efa28363546b6ed89e191c5200c1b28f017a341db9b1d7310cded74b6fa705518ea434677eca737771dd64703545c13eb11ba92ce2f870bfd98de9abf0569c15921ed6863c67174dbb80c708a1fa8986bce0b2d1ba4d35e79d9e4094baa761ee50a27ee681c6e5aaaef96fff8c0c0b8fe3b2f25d390a8546e42eb6186115b673a53b8c38dc5af7a209e0ece48e4db7dd73325d96763a01d054c37fd136edf546fd58daeac146548436c1fa38c2df8999cb9387546eb528992d0ce983e55720b9f70e1570bde5b64458449a45989f1b56d6fd6518835e4755d93ffc5dc7a4603e34c574b34bfcbe7c968401f4d85887786fbb773d3fd41b8f07a77624b8dcb75420e9929cc102668180ac41b0004a0a0fdaf2a914b8588bf3038472c14b129fbc5ddb3a2992760d2282e91056058c2c9eee28f184a0d0e07ab0f46a709ee487e1e6e04423fcb7032a26eb10312931df0a3f1c4bcc700475b221184375888ab6f28bd937e30759ceae421bf3cc1b84414de4b67df76c288f0079413a5fa2d5bfa4b9210bf6d2f8c13895fea1af81fdab64a19353224d60b4efa60f929740e8a4b9d8a5c3fb61413989074a258305a7df614447a95332a2b8fe47da9fb0af97fd6f0b542a18ee9720d93157fcf9a440636d8d5c9cf745bd3cdf509fdafdf114a88bd7309883b4578e74cbe786d04dc9559473a9388f98d93437a17f09041f39700c742ab7973fe06eecf8b0a0d1da8481d926fca1ee1b62c433647257397381c80305a5ca4402560fbd81e7deb2aaf4d4d089618dc0c8f393fa0b8b6c77e969c8e640ca350a3f51f650deeed86cefe70fe10a941acb4f919bcef337d4d9e1623101bdc30d36161592795c4e7df42c26618a152af594dce711afada1a2bb1cd9f000f53fbeae752ed5c38f152eadf2b5104c0d255e8ba23d938f08544d30a1529a8626cde12790d721ab2a90471750fd75d9f5bf13f57dcefa8e9b71c0d11963abe3dc81658f03e26007df133db22fae34cfb2e62a806e99d22674b0376f351599a1758b422048a64f8888d7d3f69660686c9dc15735dd8894f829ce396c922ce4b5a48073f05ab6441e63bf4c433e81bd79d814fb25e8ae1e048143bafd4674841fb8782f5174033b684aa0d83f671c41173e3e8d985732755ade91daafe24623d77d082358f9ef6feaadfaafd59a7512da26beb00100fab01c292920d3d9d671249deda67de25c83463e0681d854994ec0ceed0562ae74549ccf8ef2ec41f1397eff6c09232a4884cd913d3014b68f7a3413f9d1c65d475807f70d29deff71b16a922a61c4c05ba1ab6b31b20e515b0dad0d5e073eefff879f51535c83dea5025e49df12df4a14b4d1dfb7d373cea2a85a65505a39f3fda08f83a922c8dea6e08d355392c9bb99c4be1f1c3fd78743df62885fd214dd51d6bfafe144b26bc70288651962e40faf9cf79e827345a07a3d2348abc63e5215e57184024078d8a8d11c40c6dccd28ea5c85d7ac77a853b62dfc98d2042d288eaf7aaf7feda85eb7d1a6f546302c1218c32f5108bf709c9f30a09ec0548b35c9c233754116db9807cb37b49d3db35c7a45301f5e851b018eff40e18f7bccb5f7710969f27d46c1a160bff3a56b0cd7178dfef299aa49b26773a80a34abe20545400e9f6bb7c6ff2b7f5a7b19b8f11a9695bab4a81a52afbb4e03ba82b2743801772151ed8c7d70e3bb6eea6f37b98a3c97c233346c6acbb9f5cb426ff537f03c4df500da7283c0566fe6f8feca709b80befb9b5d8fd84b85d3c43a651f666197179fd79e646ad84c9d5008187eabf479e85619df9de8ca5077da7b171e4bde5333dfc87bd75c62a0ccb9addd6879ffea24da9fc16cb62d7d6072d2c5b2bae3da77de8adb9bd8e2ddbfaf0f4bc248424596a38f14f15cfed48bc7519e8e5eeac03f483f4b11ef3a7e2a1bc9cf18a1aec5c4bc1d36bcddafb57372517e9d5a7efa70f92f91d960a4f50243ba44d805dace4af84d643fd6ef10ac04e9182e06a867107ed3f14f41b894448298a86865c9114e6700245356e7c0a355e9155f01dca17521c98b91ce7d66b0d5a670cd258d8aac43ea57494527b00bf36de3efa6c0ae4e91a7711a90334ff3e6e9649fc014d1ed7e1fbc918e74ace5dbb4fe1ce73b59d06a9ca1be9ed392e0ae6e7c4a75d404f35c305cb620c676d0de746e3bac3722d19b2e2cb736c2e789568eaf151032002c2264d1c9f31e74982c86f3fd60e10b2dbf1d57a66608b918d673eeec7e6c94ea5906b756fcd03c85e32feec3a323aea11682370aa61bea9992392a7a449cca3c7760b689a54b3aa02476a206dbc9950bf6521695403f0fece9664a1b8ffdf081960b9159b808d35a88e74fc91e11070f3270cdb321f91d55596dec5e75f51cbad5fa2ede96f0b6a614518d5b712de3cbd84118327808c403756e8894014a4d813775c74b049136cfb19166b947fe2c228ab1b57726ca842624b713572529109ac49b17c93fb35d34054298274fc92ef7e28a3c8c1a3be622bdbdf90e2f2bd26e22b77ccf781cccdf95afd3c3ac1cb89039b0f075565e1947d290ffe1ceaf9b058ad362c68dc41f9d9d7ecaf5193a6a8d997ebf671a619fdc2d03facff2f2f7bd4b7c2d5e3c387c0beecc5a9b56291f82b9269346053594d8b5dfca736976b3030550f19103c33204a2a882a7a75ffff5d5d028ddaf75917140e5e4355d4386bc5d14d9dad7b6b37cdf6c8282eccf37a8e4032cf627ad6a45f96fca63d42d670837b918081d1fc1ebada553814b4c272de2d10343f238bb403f61a830036ef8a3b640ba3cb0773859334fe9f75016295bb3893c9e6044a66198b81624d12ce2e0e185df541c40b1dba1de064392ffc7fc58fcc3018fd2ba2df33fbb21f1de2ced6925ea9eb05c6b423125e79cd7154fa34521994bd7373cf3a335c204a617604e690ed4c00cba0911991cffa358c6599ea65ecd06a18912a33f814ba39a6f408bdee468df2e3ffdf7d5dc08e7b59d129717ac4b876fa18ee54110824f9c52805743c5dbc7bfa3f36cc61a3f1a2015e47d71ae9dee54211c806bd761aa0f5202c5795d1488c15075e76d79e94603adfac7d8734f9af01e33f67e776daf482d4f33eb90db811cae1568d638c86ed3563cfb3a30ef6cc0b362019f32152470ed96c1aa1b813fb7f6d7ee1775baa84c792244612c310c7ac92f516b9e355fbd96d5e90b52961ac5f1e035112fc3bad4a9d2d174cab1cb534e02d2623e28bc74ac84fd1f389ebbeda5a03fd8fce7be147b65ea396e50721c68eb77ce8efc11f4e54219b6f90911a138563e6c8031eeb443305a4e11c8b20a7c8ff2b3f5e841eb0fe643d9d0443bbb0888969110635f8cc79c8a7f89b9b1b8fdddf9d006fdb820af770063e1f968345bcb10c155ef59632b25039cb4bd2eb046dedc198d66419a1d1b80110c9702edae641bddcc2888fc9816e4acbdfa026ebe7a0bdcdcec67b668bb2e35db12f1fc427efad4b683835a72bda6f74bebb5d64179c452bf5c08c693c2a9baef58f7ab8e68d938895f84efa1ec2fb3cd6f6c54545cc34bb77ac1ddb85b8eee2be391b9c6d8cf674bbc11ae3ac65ef641d42254dfb462e4ab23a42d4bef53b1ce00a723968b8ab286a75a029cc325248eb7bd90c9a163dad16a5a18cb1bc9ea878afa1146950439b5d4744110c83c4c42dc9012b5fe02efce1700d9b8292034e71575ada305b9686b9771df2dca304f391e85a76e3b5302049a2dca40d028c731d407087b415b07cf0bc59bbae391ee45ab3a7cfb2dc703c8b27e57725aefb0a1e8186318f5d6a548cf264c3f7472a5ea48ba76bc26337f23d1f0991bbac51f996a3333dcaaa57b63944878a89fcd7a22e8ff0065ee45813a9f9359bd8132c425493720080149dcc0d3da943695c55a2752fa4e363c8b5e9778135a85fad47d7fb5f4e8137b3cbd657fbe2b698f9db4e321acbc3deb2a04300eba54b811882d5d091ed2534ecd539ad4bd8923ad8cab346a854967015b06d9e5cd77f7d372b9da7513adff5e64b9981e117a182a1dcdb95eb4f452ee0fcde7b5bbc93d62de9118b70a33b2d77e58c47cfce5a75763a0488274388a123fc7c6c89e3e12a41e13e09e0103d08a41d0688a99fb497303426bd0945c2a1a95dac61b34d375be3890c3cf0bb4c3571badbc5aaa8189cd5cbe3563ec73c144b1a9bc7b12f113e2770ec0facd1aef2091f60f18573d60aab1344bf124a044b01445086e910c4ca2b93c48f87f6fb93cc1b7db5bc55a5c759afcda2b745efe57cddc1753d3007d081c64bd20e3ab792f1b3c790406ff1f3126cd397078008a97bf31e7fff33f9e851912363c5b1f3ac65598be35eb5f0dbfe19b5b2e70cfe26dd5c65068d3d25b7c977fa8098bf5329727fcd7d973bf842e6b4d50d6e7b92408353245471864a05ba51b5c83d5420e824638f057626eb6eaa436b22260068d23f4e3df5f389cd101da6f5e3e5ffbb3462e2980334e689ac3a48ccc80b53730d1e821563e5c348fdf4f5fc7616a49f799285084bf4378cd1109c980855bbcfd243b2184d76b24dd15a219666941ab1b4967d8f738adcda04a203cd9806932c5d045acc760558d4ccd5621a0c5ba51d629b3813182cf3e161cc3f23b1e541dc3c4e2064a49f4bd6c4169f59445edd1dec30257ce5f878d2a85807618a4c8571cdef5daa3124672d695c67e4e8aa7f33b11eed759df10965fe482b34009d13de4381925fa2a6dea74eff8185fa301e90599285084bf4378cd1109c980855bbcfd243b218414bf3f6d1644a37029be58429e8f0138e1ceb743334e268bc2aa9cb039d2b54d59b04858afca2e52d5b94100863057fb4629f9ad4a35753d1691792499285084bf4378cd1109c980855bbcfd243b2184120fab18d84f1eb993ecc7fa858a8dd21274707909d5267a7c46e5e9da7c20a79b00e1584d605613f6db4206258b0ef30e8dd8949627acfd209bf33873bd93ee4561faee009921d7e04da11fa4e901fe394e8470c89927a06575e08c434006b2320f17812f1b3c790406ff1f3126cd397078008a97bf31e75a433244d0b827176df8b76a05959cd1a7a98ce295a30f61795768374d7cffcab64c8f00c34108f584b99f3fb7bbc759fcbb589d031920e76edf47462f1b3c790406ff1f3126cd397078008a97bf31e7fd773172e7f26f2d98de3eb572f3317b0ad8d44307f3d18c96bebdef14285630dff2051fda2cabca761d4bac1c238ea7af4dd36b56719ad5e30771c3c162323ac3d2529fad90a897d9b32305e0f62401e2e6ce6a29451e9fac612ab83f7a104b6d6475a348a84d0f36bafb77913d98b5509c56dff27fe0bd7451d17a69ff7585f302933beeae1037d2c708a8a7bf97f5abdabc0bb362d222a194bcbd2db0ff47d0f855bfa91b1d961a17a02ec3e383f9671caba104e3031036f189299a0e2075a08393f329d70b3de63ddb48e2fd23854a0b4a480b32cbf33e6019819a32929558df73193dbcffe04d3c6115d2d81f845fa35d211682ee02e34fba0711838ca431ed003ba6ea646eb000ce5c6c9964bacfee378e09624bc77ac93e300ee17a4ee5e92192264fcfd438805b6f846821017fd423bc38aa5ea0a1ba0d71bbb3709b7112697e8be2d6f231726a91eb565e00ddbeebec94d6ba2a1c72daeeb48523afbac27c0a33c403ecbc3dc2694b5d15613ef610d693d18ebd904b0d563a14944504d444b728414d172aa09c4cfd3b23d8The 18 pre-cursor gap sources are accounted for by merged #481; the two additional pre-cursor Electron sources are recorded in #461. DEF-7, DEF-16 and the watch-list triggers remain unchanged.
rynfar commentedon Sep 12, 2026
Cycle complete
2bb2c523cff94823ef79228b7827d8f520a4bb10, after fresh CI passed on its final conflict-resolution head. refactor(web): share one setup wizard and finish Antigravity setup from model pickers #479 and docs: keep internal guides on architecture and user guides on workflows #482 are merged. The three requested branches/worktrees are deleted. Compact AGENTS.md is retained, the full documentation rules are in the contribution reference, and the desktop telemetry link is fixed.ae27742ce14c112cc0c310e8aa5d780c5ad19205, after adversarial review, 909 focused tests, 11 affected package typechecks, knip/format/lint/frozen-install verification, and fresh CI. Its task branch/worktree are also deleted.applied): 3 planned updates, 16 no-ops, no resource replacements.[RelayNeonProject],[RelayHyperdrive]and[Api]all updated. The successful Neon update executes beta.76’s checked migration path, including in-place conversion of legacyrelay_migrationswith applied history retained; the workflow emits no separate per-table conversion log, and no independent live-schema query was made. No manual deployment.f3402be466efd50bc70e00d7245bb3ed4efe927eafter green CI onfcb1318d9bb1c5714dc2c0bb4771f17c57003b3dand advances the ledger cursor to frozen head6c583620ff7ad3235b135af7107c0543467eecfa. All 797 sources in the prior range have recoverable dispositions; the audit and corrected PR source lists preserve the missing provenance links. Pre-cursor gaps and remaining exclusions/triggers are retained.4a4c6dd2adc350a68ba18bb28b24b5a7e4660dab; 98 sources past the old bound, 571 unique changed paths, zero patch equivalents. All 98 remain for bounded review there.Merged code and the production relay are updated. No desktop/mobile release or device installation was performed in this continuation.