Repository navigation
Přestavba na upstream T3 Code v0.0.46 #70
Description
Přestavba overlaye Lazuria na nové stabilní vydání upstream T3 Code. Postup a příkazy:
Nové stabilní vydání upstreamu
(do merge #68 platí text v tom PR). Issue je veřejné: žádná jména klientských
Organizací, lidí ani soukromých hostů, jen Environmenty a role.
Upstream v0.0.46 jako stable zatím nevydal (stav 2026-10-14). Issue je otevřené předem,
protože přestavba má známou práci. Inventura níž je proti upstream main jako zástupci
budoucího tagu (upstream vydává stable z některého nedávného nightly svého main); po
vydání v0.0.46 se příkazy etapy 2 spustí znovu proti přesnému tagu. Až v0.0.46 vyjde,
napíše sem watch lazurio-upstream-watch.yml (po merge #68).
Vstupy
- Nová báze:
v0.0.46, zatím nevydaná. Zástupce: upstreammaina01c48f86
(=0.0.46-nightly.20261013.3080, 2026-10-13 21:38 UTC). - Stará báze:
v0.0.45=6c8fed35dded9ff71c5b46807125457acbb76be6;main=
be78113f3f5f5db3bad3a52903b68085aa852f5e(= preview0.0.45-preview.20261013.3). - Zachycení
main: poslední stablev0.0.45-lazurio.8=b64117698(immutable).mainse
od něj liší mimodocs/(31 commitů, 77 souborů: fáze A a B plánu DEV-6646, k tomu docs, release: the procedure for a new upstream stable release, a daily upstream watch and the rebuild's tracking issue #68),
takže před výměnou musí vyjít stable0.0.45-lazurio.9ze špičkymain. - Candidate: branch
lazurio/rebuild-v0.0.46, PR —, head —.
Předpoklady (plán DEV-6646, fáze C)
- Upstream vydal v0.0.46 jako stable.
-
mainje zachycený stable vydáním0.0.45-lazurio.N(chybí0.0.45-lazurio.9). - Rozhodnutí D10, D11, D13 a D14 jsou schválená (Organization Admin, 2026-10-13, níž).
- Workflow vydání ověřuje
upstream_tagproti bázimain(Release workflow accepts an upstream tag older than main's base #69), nebo se
vydání spouští s tagem čteným zlazurio-fork-ci.ymlzdroje, jak teď říká runbook.
Etapy
- 1. Sledování: issue je přiřazené Stewardovi a vstupy jsou vyplněné.
- 2. Inventura a rozhodnutí: tabulka níž je potvrzená proti tagu v0.0.46 a rozhodnutí,
která mění chování nebo kontrakt, mají schválení Organization Admina. - 3. Přestavba candidate: jeden commit na řádek v pořadí Cílového stacku, řádek 5 poslední
(D11), řádek 14 odpadá. - 4. Kontrakt a stráže:
Lazurio Fork CIje zelené na přesném headu PR; posunuté piny
kontraktního testu a změny allowlistu jsou v PR. - 5. Kompatibilita s Lazuriem: každá brána níž má zápis.
- 6. Výměna
main: zachycení je ověřené,mainje vyměněný amobile-android-apk.yml
je vypnutý. - 7. Náhled na canary: preview
0.0.46-preview.YYYYMMDD.1prošlo na canary Environmentu
kontrolami i kontrolou v prohlížeči. - 8. Stable a nasazení: změna Machines (systemd slice agentů) je nasazená, oznámení lidem
(nové spárování, aktualizace desktop a mobilní aplikace) je venku,0.0.46-lazurio.1je
vydané a Update z0.0.45-lazurio.Nje ověřený. - 9. Po vydání: návrhy upstreamu jsou podané, runbook je doplněný a issue se zavírá.
Rozhodnutí po řádcích Overlaye
Stav: návrh z inventury proti upstream main (plán DEV-6646, oddíly 2.2–2.4); potvrdí se proti
tagu v0.0.46. Sloupec „Schválení“ uvádí jen to, co už schválené je.
| # | Řádek | Co upstream změnil v jeho souborech | Rozhodnutí | Zdůvodnění a dopad | Schválení |
|---|---|---|---|---|---|
| 1 | hosted: configurable client session TTL |
SessionStore.ts má dál pevných 30 dní (DEFAULT_SESSION_TTL). Konflikt v cli/config.ts (přesunuté makeDirectory(cwd), pingdotgg#15795), triviální. |
ponechat | Machines nastavují 365d. |
návrh |
| 2 | hosted: serve behind an explicit HTTPS external origin |
pingdotgg#18509 přidává isBrowserOriginAllowed pro požadavky s cookie; konflikt v EnvironmentAuth.ts; server.test.ts upstream smazal. |
zmenšit | Kontrola Originu overlaye odpadne. Zůstává proměnná, Secure cookie __Host- a politika loopbacku; dva testy cookie přejdou do auth/*.test.ts. |
návrh |
| 3 | hosted: explicit environment label |
Upstream čte dál jen PRETTY_HOSTNAME a hostname. Konflikt v ServerEnvironmentLabel.ts a testu (modul HostProcess), triviální. |
ponechat | návrh | |
| 4 | feat: in-app update from the configured release channel |
cliRelease.ts beze změny (pevné pingdotgg/t3code, první vydání kanálu), availableServerUpdate upstream nemá, protokol launcheru zůstává 3, instalační skripty beze změny; „update everything“ (pingdotgg#18053, pingdotgg#18709) míří na npm. Konflikty: importy Effect v cli/update.ts a cloud/pinnedRuntime.ts, připojené testy v ServerEnvironment.test.ts a versionSkew.test.ts, docs/user/updating.md; vše triviální. |
ponechat; nabídnout upstreamu | Návrh upstreamu zatím nemá odkaz. | návrh |
| 5 | release: Lazurio distribution |
Upstream .github/SECURITY.md nezměnil; přibyl workflow mobile-android-apk.yml s hodinovým cronem. |
ponechat, poslední | UPSTREAM_TAG, UPSTREAM_SHA, 0.0.46-lazurio.0 a piny kontraktního testu; regexy švů, které se přesunou (ProviderService.ts, makeRoutesLayer, 60_000, shouldUseRightPanelSheet, podmínka „+“, počet browserAvailable, kontrola ActivityPayloadProjection.ts); brána testů (server.test.ts a OrchestrationEngine.test.ts upstream smazal); allowlist; runbook (záloha a Rollback na statev2.sqlite, nové spárování, protokol 2 u desktopu a mobilu, pozůstatky lazurio.7). |
D11 (Admin) |
| 6 | lazurio: unsent prompt draft by link from the shell |
pingdotgg#18454 přidává odkazy /new?prompt= (text v adrese do 8 000 znaků, projekt podle repo); <ThreadLinkPrompt> stojí v _chat.tsx tam, kde <LazurioPromptDraft /> (1 konflikt). |
ponechat | Obě řádky v _chat.tsx zůstanou. |
D13 (Admin) |
| 7 | feat(web): Lazurio shell slot |
index.html beze změny; AppSidebarLayout.tsx 1 triviální konflikt (pingdotgg#18193). |
ponechat | Šířka značky (pingdotgg#12141) a přesunutý přepínač sidebaru (pingdotgg#18193): kontrola v prohlížeči. | návrh |
| 8 | feat(server): each thread's provider processes get its agent-browser session |
ProviderService.ts upstream smazal (orchestrace v2, pingdotgg#2829). Proces vlákna se spouští přes AgentScope.wrap({command, args, name, threadId, env}) v adaptérech Codex a Claude v2 a v terminálech; agentDeviceEnvironment čte jen Antigravity. |
přestavět | Šev na AgentScope.wrap nebo v adaptérech, s testem pro Codex i Claude; přenesený beze změny by AGENT_BROWSER_SESSION potichu ztratil. agentBrowserSession.test.ts importuje odstraněné moduly. Pin kontraktního testu na ProviderService.ts na naivním sloučení projde falešně (soubor zůstane jako modify/delete). |
návrh |
| 9 | feat(web): the right panel shows the thread's Environment browser tabs |
ChatView.tsx 3 konflikty, shouldUseRightPanelSheet je shouldUsePlanSidebarSheet, browserAvailable zahrnuje serverový prohlížeč; úložiště panelu v14 odebírá druh agents (neznámé druhy migrace pustí); znovuotevření zavřené záložky (pingdotgg#15207); rightPanelStore.ts 6 konfliktů. |
přestavět | Browser, Mod+Shift+J a řádek konceptu by na webu otevřely serverový prohlížeč upstreamu, pokud je overlay nepřesměruje (D10); znovuotevření musí povrchy environment-browser přeskočit. |
D10 (Admin) |
| 10 | feat(server): T3's browser tools drive the Environment browser |
ServerBrowser (pingdotgg#15328) se registruje jako preferovaný host vždy a spouští vlastní chrome-headless-shell (asi 120 MB); broker má preferred, řazení a 660 s pro open, nepřebije živé přiřazení desktopu a důvod chyby předá jen pro server-browser; ARIA strom a playwright-core 1.60.0 má upstream; PreviewToolFailure (pingdotgg#16335); nastavení pro externí prohlížeč přes CDP upstream nemá (jen T3CODE_SERVER_BROWSER_SANDBOX). |
zmenšit a přestavět; nabídnout upstreamu | Odpadne playwright-core (4825051), ARIA strom (81804e8) a kopie engine (ecfbf94); preferovaný host se zúží na přednost před desktopem a 60 s pro open, důvod chyby na patch; engine upstreamu se napojí přes CDP na prohlížeč Environmentu (#43) a upstreamu se navrhne nastavení pro externí prohlížeč. |
D10 (Admin) |
| 11 | feat(server): a thread's Environment browser tabs live in its holder file |
server.ts: layerMakeRoutes (2 konflikty, jeden řádek); importy Effect v threadTabsRoute.ts a testu; hold a release vyžadují preview:operate (pingdotgg#9789). |
ponechat | Rozsahy cesta bere z requiredScopeForRpcMethod; prohlížeče spárované na 0.0.45 ztratí hold a release do nového spárování. |
návrh |
| 12 | feat(server): archiving or deleting a thread lets go of its tabs and stops its agent's daemon |
Události vláken jsou v OrchestratorV2.streamDomainEvents (thread.archived, thread.unarchived, thread.deleted); smazání v upstreamu spouští preview.cleanup, archivace ne; importovaná vlákna v1 si nechávají id. |
přestavět | Adaptér threadLifecycle.ts na v2 (asi 20 řádků), úklid při startu přes getThreadShell; soubory držitelů zůstávají platné. |
návrh |
| 13 | feat(web): "+" and the empty panel open Nová karta |
„+“ se ukazuje vždy, když je panel otevřený; Mod+T (pingdotgg#15686) otevírá nabídku; bod rozšíření pro „+“ upstream nemá. | přestavět; nabídnout upstreamu | Obě cesty potřebují větev overlaye; LazurioNewTab.test.tsx předává odstraněné props Agents. Bod rozšíření „+“ v upstreamu by odstranil největší šev webu. |
návrh |
| 14 | feat(web): reorder right panel tabs by dragging (#17730) |
4107930 je na upstream main (od nightly 20261010.2922). |
odebrat | rightPanelStore.test.ts a routes/_chat.pull-requests.tsx odejdou z allowlistu. |
návrh |
| 15 | feat(lazurio): provide a managed Folder project and native model reconciliation |
OrchestrationEngine.ts, ProviderCommandReactor.ts a jejich testy upstream smazal (v2); projekty už nejsou příkazy orchestrace (ProjectService.bootstrap, RuntimePolicyV2); nové projekty Scratch a jen se jménem (project/ManagedProjectFolders.ts); zápis nastavení přes updateAndPersistSettings. Konflikty: bin.ts (strom příkazů v binCli.ts), cli/config.ts, serverRuntimeStartup.ts (upstream přepsal start v1), serverSettings.ts, ws.ts, VcsProvisioningService.test.ts, DraftHeroHeadline.tsx, Sidebar.tsx, useScratchProject.ts. |
přestavět; zmenšit | Převzetí složky do ProjectService.bootstrap, stráž příkazů na ProjectService, OrchestratorV2.dispatch a dekorátor RuntimePolicyV2; Scratch a projekty jen se jménem skrýt na serveru (šev useScratchProject.ts pak odpadne). t3 lazurio model <JSON> musí vydat sezení s rozsahem cesty (settings:write), jinak 403. Zkontrolovat pingdotgg#18840 a pingdotgg#18334 proti lazurioManagedModelSelection. |
návrh |
| 16 | feat(web): the in-app name T3 Code (Lazurio) |
branding.ts, branding.logic.ts, index.html a manifest.webmanifest beze změny; SidebarChrome.tsx změněný (pingdotgg#12141, pingdotgg#18193), sloučí se čistě a štítek zachová. |
ponechat | Kontrola v prohlížeči: štítek „Lazurio“ v novém řádku značky. | návrh |
| 17 | feat(web): the design system's light look on a Lazurio Environment |
main.tsx beze změny; index.css +181 −49; stráž tokenů v kontraktním testu na naivním sloučení projde; nové tokeny --diffs-search-panel-* se odvozují z tokenů, které mapování nastavuje. |
ponechat | Kontrola v prohlížeči. | návrh |
Brány kompatibility
| Brána | Co se na nové bázi mění | Rozhodnutí a ověření |
|---|---|---|
t3 lazurio capabilities a t3 lazurio model |
Výstupy se nemění. serverUpdateSettings vyžaduje settings:write (pingdotgg#9786; na 0.0.45 orchestration:operate) a CLI dnes vydá sezení s orchestration:operate: model <JSON> by dostal 403 a lazurio chat defaults --apply Platformy by selhal. |
CLI vydá rozsah cesty; cli.test.ts beze změny výstupu; na canary lazurio chat defaults --apply. |
| Kanál aktualizací a protokol launcheru | SERVICE_LAUNCHER_PROTOCOL zůstává 3, cliRelease.ts beze změny. |
Testy řádku 4 a job Launcher install linux-x64; Update z 0.0.45-lazurio.N na canary. |
| Párování a rozsahy sezení | Rozsahy jsou rozdělené (settings:write, providers:manage, environment:maintain v pingdotgg#9786, preview:operate v pingdotgg#9789) a server uložené granty nerozšiřuje. Prohlížeče spárované na 0.0.45 (cookie na 365 dní) ztratí zápis nastavení, tlačítko Update a hold a release záložek, dokud se znovu nespárují. |
Oznámení lidem před stable; na canary starý i nově spárovaný prohlížeč. |
| Databáze | Server založí statev2.sqlite jednou kopií state.sqlite (persistence/initializeV2Database.ts, pingdotgg#2829) a state.sqlite pak nechá být. Návrat na 0.0.45 přistane na stavu z okamžiku aktualizace a další upgrade už statev2.sqlite znovu nezaloží: co vznikne mezitím na 0.0.45, se ztratí. |
Záloha před canary; záloha a Rollback v runbooku na statev2.sqlite (řádek 5). |
| Desktop a mobil (orchestrační protokol) | ORCHESTRATION_PROTOCOL_VERSION = 2 (pingdotgg#2829); server 0.0.45 protokol neuvádí (= 1). Aplikace 0.0.46 se k serverům 0.0.45-lazurio.N nepřipojí a aplikace 0.0.45 dostanou od serveru 0.0.46 HTTP 426. |
Začít hned po vydání v0.0.46 (D14); oznámení; desktop 0.0.46 proti canary. |
| Kontrakt prohlížeče Environmentu | Soubory overlaye se nemění, jen importy Effect (environmentBrowser.test.ts, threadTabsRoute.ts a test). Úkol 703 (převzetí kontraktu z artefaktu Platformy) zatím čeká na Platformu a do přestavby nepatří. |
holders.test.ts s vektory Platformy a kontrola obou kopií browserView.ts beze změny vektorů. |
| Slot shellu a vzhled design systému | index.html a main.tsx beze změny, AppSidebarLayout.tsx triviální konflikt; stráže slotu, barevných rolí, jména i vzhledu v kontraktním testu na naivním sloučení projdou. |
Kontrola v prohlížeči na canary (štítek, šířka značky, přepínač sidebaru, tokeny). |
| Machines a Platforma | Agenti a terminály běží ve vlastních systemd scopes v app-t3code-agents.slice s limity paměti (pingdotgg#17662): Machines je musí povolit. Platforma: větev /.lazurio/browser.json?session= pro lazurio.7 může odejít, až bude lazurio.8 všude. |
Změna Machines před stable; ověření na canary. |
Schválená rozhodnutí (Organization Admin, 2026-10-13)
- D10, serverový prohlížeč 0.0.46: „point upstream's engine at the Environment browser over CDP
(issue 0.0.46 server browser: Google answers chrome-headless-shell with a CAPTCHA; point the engine at the Environment browser #43) and propose an external-browser setting upstream“. - D11, historie při přestavbě: „one commit per runbook row (release notes without retired
features or names)“. - D13, odkazy se zadáním z upstreamu (feat: open T3 Code from a link with a prompt ready to send pingdotgg/t3code#18454): „keep the fork's prompt draft (no text in the URL)“.
- D14, načasování přestavby: „wait for v0.0.46 stable (runbook rule, protocol 2), accepting that it
also waits for lazurio.8 stable and the Platform's F47 rollout; plan the re-pairing notice and
the official apps' update“.
Další známá práce mimo řádky
- Importy Effect: Effect 4.0.2 už nemá
effect/unstable/*a dnes je importuje 12 souborů overlaye
(apps/server/src/cloud/releaseIndex.tsa test, vapps/server/src/lazurio/:cli.tsa test,
environmentBrowser.test.ts,modelRecommendationRoute.tsa test,routeAuth.ts,
threadTabsRoute.tsa test; ve webuLazurioPromptDraft.tsxaManagedFolderWelcome.tsx),
k tomu přejmenovaná API (HostProcess,layerMakeRoutes,layerTest). - Kontraktní test na naivním sloučení upstream
mainsmainforku: 24 z 29 testů projde; selže
stráž spravované složky, švy pravého panelu,makeRoutesLayer, kontrola
ActivityPayloadProjection.ts(ta jen proti staré bázi) a „+“ Nové karty; test sezení
agent-browser projde falešně (viz řádek 8). - Po výměně vypnout
mobile-android-apk.ymla ověřit, že žádný jiný upstream workflow není
aktivní.
Rizika
- Aplikace 0.0.45 a servery 0.0.46 se nespojí (a naopak); prohlížeče spárované na 0.0.45 ztratí
zápis nastavení, Update a hold a release, dokud se znovu nespárují. Lidem to oznámit předem. - Migrace databáze je jednosměrná; před aktualizací zálohovat.
- Dva preferovaní hostitelé náhledu, dokud se neprovede D10.
AGENT_BROWSER_SESSIONse pro Codex a Claude potichu ztratí, když se šev přenese beze změny.- Stráž příkazů spravované složky je přestavba, ne přenos.
- Machines musí povolit systemd scopes agentů v
app-t3code-agents.slice.
Co se změnilo od plánu (2026-10-13)
- Upstream
mainse posunul z511d20c6fnaa01c48f86(45 commitů, pět dalších nightly);
stable pořád není,releases/latestje v0.0.45 a poslední upstream preview je z 2026-10-10. - Odhad konfliktů: dnes 34 souborů (28 obsahových, 6 modify/delete) místo 35. Změnu udělala fáze
A forku, ne upstream (45 nových commitů upstreamu množinu nezměnilo): nekonfliktují už
CommandPalette.tsxa fixturesThreadSettlementReactor.test.ts,ProviderRegistry.test.ts
amanagedProvider.test.ts; nově konfliktujíProviderCommandReactor.test.ts(nový test
stráže, upstream soubor smazal),ws.tsaSidebar.tsx. - Upstream commity od plánu v souborech overlaye:
ws.ts(fix(server): a thread with an event type from a newer build can still resync after a downgrade pingdotgg/t3code#15937, fix(mobile): attachment images no longer re-download on every reconnect pingdotgg/t3code#18824),ChatView.tsx
(feat(chat): show pending context handoff when selecting a model pingdotgg/t3code#18369, fix(web): attach dropped threads to pending answers pingdotgg/t3code#18789),CommandPalette.tsx(fix(web): Cmd+Enter creates the new project while an option is highlighted pingdotgg/t3code#18901),GitActionsControl.tsx(fix(web): Git actions follow the selected thread pingdotgg/t3code#18862)
aroutes/_chat.pull-requests.tsx(fix(web): a numeric q in the pull requests URL no longer crashes the page pingdotgg/t3code#18666, odchází s řádkem 14). K bránám se vztahují fix(server): a thread with an event type from a newer build can still resync after a downgrade pingdotgg/t3code#15937
(vlákno s událostí z novějšího buildu se po downgradu znovu synchronizuje), fix(server): a migration id clash stops startup with a clear error instead of crash-looping pingdotgg/t3code#15925 (kolize id
migrace zastaví start s jasnou chybou), feat(server): rename built-in models from settings pingdotgg/t3code#18840 a fix(web): settings warn when an environment silently drops a setting pingdotgg/t3code#18334 (řádek 15). - Fork:
0.0.45-lazurio.8vyšlo 2026-10-13 (předpoklad plánu splněný), alemainse od něj
posunul, takže je potřeba0.0.45-lazurio.9. Overlay má 17 řádků (přibyly 15, 16 a 17), takže
po odebrání řádku 14 bude mít candidate 16 commitů, ne asi 13. Soubory overlaye s importy
effect/unstable/*jsou dnes 12, ne 9. - Beze změny: protokol 2 a HTTP 426,
statev2.sqlite, rozdělené rozsahy, launcher protokol 3,
pevný repozitář vydání vcliRelease.ts,ServerBrowserjako preferovaný host bez nastavení
pro externí prohlížeč, 660 s proopen,playwright-core1.60.0 v upstreamu,
AgentScope.wrapjako šev procesů vlákna amobile-android-apk.ymljako jediný nový workflow.
Otevřené otázky a blokery
- Upstream v0.0.46 ještě nevyšel.
- Chybí stable
0.0.45-lazurio.9, které zachytímain. - Release workflow accepts an upstream tag older than main's base #69: workflow vydání přijme i starší upstream tag, než na jakém
mainstojí. - Řádek 8: má
AGENT_BROWSER_SESSIONdostat i terminál vlákna (také jde přesAgentScope.wrap)? - D10: přesné místo napojení přes CDP (změna overlaye v
ServerBrowserContexts, nebo nejdřív
návrh upstreamu). - Text oznámení lidem (nové spárování, aktualizace aplikací) a kdo ho pošle.
Activity