verification on linux, 2026-11-10 main: fa2f4ff2a2 (github/main) pr: 72fb98cfd39e16e21a0ed9dc343559c05821efb3 setup: vp i in each checkout; one background dev server at a time. main ports: server 16733, web 8693; stopped before starting pr. pr ports: server 13773, web 5733; isolated .t3 state copied from main after stopping it. playwright 1.60.0, /usr/bin/google-chrome, real web client. project /home/user/maintenance-project and thread created through the app. operational launcher forwards to a real npm Codex CLI and supplies the VM's proxy environment. observed through Settings > Providers: main, launcher 0.164.0: no Maintenance binary path; updater manual-only. pr, maintenance ~/maintenance-cli/bin/codex: Update now offered npm --prefix /home/user/maintenance-cli. clicked Update now: selected installation 0.164.0 -> 0.167.0; launcher setting unchanged. pr, current launcher 0.167.0 + selected Bun 0.164.0: Update now still offered. clicked Update now: selected Bun installation 0.164.0 -> 0.167.0. pr, older launcher 0.164.0 + current maintenance 0.167.0: no update action. pr, missing explicit maintenance path: no update action; launcher still available. pr, cleared maintenance path: original manual-only launcher update restored; blank persisted after reload. Claude, npm maintenance path: clicked Update now, selected installation 2.1.321 -> 2.1.322; launcher setting unchanged. real Codex gpt-6.1-sol turns through the web composer: main: MAIN_LAUNCHER_OK pr resumed thread: PR_LAUNCHER_OK $ pwd /home/user/maintenance-project $ /home/user/maintenance-cli/bin/codex --version codex-cli 0.167.0 observed before and after Bun update: default npm Codex: 0.164.0 -> 0.164.0 sha256(default npm Codex package.json): a7dec242d54cde5569fb242ddc632cf12be875b274f09116ac8a33d921547114 sha256(default Bun global package.json), unchanged: 8437d66935e24fc245819aae6479d41609774995dd9dcf1b63cebc132cf94a8d blacksmith: vp run check:changed 7da0ef0e1f874caca679bab15a309b9542aecc44 pass: format, lint, both knip passes, graphql, typecheck 36 packages, 189 tests in 5 files. remote snapshot history required fetching the PR head with --deepen=1 before check:changed. no source changes.