Repository navigation
ci: fix main — stale RunCause call sites and Playwright on ubuntu-26.04 - #9418
Conversation
…sites #9227 added a required `RunCause` to `create_workflow_run` and a `may_direct_agents` flag to `ActionSink::send_message`. Two tests that merged around it still used the old signatures, so main stopped compiling its test targets at fc8c802: `attach_rejects_run_from_another_workflow` (#8317) and the agent-DM refusal test in `workflow_sink.rs` (#9371). Pass `RunCause::Schedule` and `true`, matching the neighbouring tests. Co-authored-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Luke Tornquist <[email protected]>
🔐 Codex Security Review
Review SummaryOverall Risk: NONE
FindingsNo concrete security, correctness, or reliability findings were identified. Notes
Generated by Codex Security Review | |
GitHub is rolling `ubuntu-latest` to Ubuntu 26.04. Playwright 1.60 (our lockfile) does not recognize that host, so `playwright install chromium` fails with "Playwright does not support chromium on ubuntu26.04-x64" and the required Desktop E2E Integration check goes red on every PR that lands on a new runner. Playwright 1.61 added ubuntu26.04; bump to the current 1.65 in desktop, web and admin-web. Pin every `ubuntu-latest` job in the CI workflows to `ubuntu-26.04` so the next image change happens in a reviewed diff instead of mid-week. Workflows that do not run on PRs (release, helm, sprig, image builds) are left alone because this PR cannot exercise them. Co-authored-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Luke Tornquist <[email protected]>
The newer Chromium reports Tailwind's items-end as align-items: flow-end and draws the textarea resize grip differently. Accept both alignment spellings and refresh the template-variable autocomplete baseline from the ubuntu-26.04 CI run. Co-authored-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Luke Tornquist <[email protected]>
… action Under the Playwright 1.65 Chromium the first Message click can land while the profile panel is still settling. Playwright's scroll-into-view retry then scrolls the profile body, which conceals the owned-agent action row (aria-hidden + inert), and the click never recovers. Reset the scroll, wait for the row to be revealed and settled, then click. Co-authored-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Luke Tornquist <[email protected]>
wesbillman
left a comment
There was a problem hiding this comment.
🤖 Carl, an automated reviewer, commenting via Wes's GitHub account.
Changes requested. One small lockfile fix, everything else looks right.
What checks out:
- The Rust call-site fixes are correct.
may_direct_agents = trueonly controls which tags get attached, so the agent-DM refusal assertion still tests the ownership rule. c96f0f92reads as a fix for a timing race in the test, not a hidden product regression. It uses a normal click and doesn't bypass the concealment. The existing fade, conceal-at-96px and reveal-at-zero assertions are still there.- After the pin, no
ubuntu-latestis left inci.ymlor_ci-*.yml. The Playwright 1.65 floor of Node 20 or later is below the Node 24 pin. Browser cache keys include the Playwright version.
Before merge:
- Revert the unrelated
wrappyintegrity downgrade (inline). - Get CI green on
c96f0f92. It was still running when this was posted, and the previous head failedprofile.spec.ts:354on all three retries.
Optional: the repo-wide runner pin could be its own PR, separate from the urgent compatibility fix. Not blocking.
The Playwright lockfile regeneration resolved wrappy through a mirror that only served a sha1 integrity. Restore main's sha512 value. Co-authored-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Luke Tornquist <[email protected]>
Integrate main through #9418 to repair workflow test compilation and runner compatibility. Co-authored-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz> Signed-off-by: Wes <[email protected]>
…small * origin/main: perf(acp): reduce observer CPU and lock overhead (#9381) ci: fix main — stale RunCause call sites and Playwright on ubuntu-26.04 (#9418) fix(mobile): keep shortcut taps and the member picker from wedging (#9388) fix(mobile/ios): close notification code blocks only at line-ending fences (#9349) fix(media): run thumbnail regeneration tests in CI and cap rebuild pixels (#9198) fix(mobile): never show emoji shortcodes in reaction pills (#9411) fix(mobile): isolate channel header scroll rebuilds (#9400) Signed-off-by: Ravneet Arora <[email protected]>
Existing mobile identities entering the Builderlab hosted flow now require confirmation before the app reserves the account’s identity slot, binds the identity, or uploads its secret key. Cancelling leaves saved community keys usable and allows another identity to be selected, including after restart. Imported keys remain tentative until approval; paired keys remain safely retained outside the account slot. The confirmation shows the receiving account’s verified email and public key, explains that Builderlab can decrypt the backup and signed-in account users can recover it, and discloses that the app cannot change the linked identity later. **Cancel setup** stops future work without claiming to undo earlier binding or an upload whose acknowledgement was lost. The user can sign out; missing account identification blocks confirmation. Browser-initiated binding uses **Link and continue**, with explicit bind-only wording and no upload. Fresh keys generated in the current hosted attempt use ordinary onboarding without an extra backup prompt. Interrupted attempts without a confirmed backup ask again; approval is deliberately not persisted or carried across retries, cancellation, restart, account changes, or a replaced flow. Confirmed matching backup receipts skip the backup prompt. Cloud recovery and organization-managed backup are separate flows and are not changed here; this PR does not resolve server-side consent or recovery-authorization policy. Updated against main through `ce42853982` (#9418). Integration commit `dfb29fe5e7` includes the landed Hickory security fix and the shared workflow-test/runner repair. The consent implementation is unchanged from Carl’s reviewed `e11025ebed`; the CI merge preserves its configured public consent journeys. Validation at `e11025ebed`: 96 focused tests across eight files passed with public hosted domains configured; Flutter analysis passed. In an isolated source/Git/build copy, removing pre-adoption consent, bypassing the upload gate, and removing stale-confirmation checks each failed the consent journeys; restoring the code passed. Carl’s independent source review found no blockers. Mandatory hooks and hosted mobile CI passed, including both consent journeys in the configured public lane. Integration validation at `dfb29fe5e7`: 99 focused tests passed; one additional fullscreen-onboarding test failed its background community-admission assertion. An isolated clean-main control at `ce42853982` reproduces the same failure with the same expected/actual values. All consent journeys passed. Required commit and push hooks passed, including mobile analysis and the broader default mobile suite. Hosted CI is green at `dfb29fe5e7` ([run 43320753801](https://github.com/block/buzz/actions/runs/43320753801)). Security and the previously failing Rust/workflow gates now pass. The Mobile Checks log confirms both consent journeys executed successfully; that run has no pending checks. Review follow-up `ac9ac9be35`, integrated with main `279a31daac` at current head `1acfd2dff6`, is test-only: the browser journey now restores a saved account key without a receipt, cancels without binding, restarts and requires explicit approval before `/verify`. Both consent journeys passed again after integration using the updated CI settings. Disabling only the production bind gate in an isolated source/Git/build copy now fails the added step; restoring it passes. Mandatory commit/push hooks passed. Hosted CI is green at `1acfd2dff6` ([run 43343333843](https://github.com/block/buzz/actions/runs/43343333843)); no failing or pending checks remain. The Mobile Checks log confirms both consent journeys executed successfully, including the extended browser-binding journey. Carl’s latest review on `dfb29fe5e7` found no production blockers; its recommended test gap is addressed by this follow-up. Native-device and human acceptance have not been recorded here; the author’s ready-for-review setting is preserved. Try it: with two saved self-hosted keys, connect to Builderlab, select A, cancel, restart, then select B. Check the receiving account and key before approval. Repeat with an imported/paired key and a browser bind link; cancel must not reserve or bind the new selection. After an interrupted upload, cancellation must describe that earlier effects may remain. Confirm that ordinary brand-new onboarding has no extra backup step. --------- Signed-off-by: Wes <[email protected]> Co-authored-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
Summary
Two separate CI breaks are hitting every PR right now. Each one blocks a required check, and neither fix can go green on its own, so this PR fixes both.
1. Rust test targets stopped compiling on main at fc8c802. #9227 added a required
RunCauseargument tocreate_workflow_runand amay_direct_agentsflag toActionSink::send_message. Two tests that merged around the same time still used the old signatures:attach_rejects_run_from_another_workflowincrates/buzz-db/src/store/workflow.rs(from buzz-db: pin explicit FK-child cleanup and same-workflow fire links #8317)crates/buzz-relay/src/workflow_sink.rs(from feat(relay): agents cannot write in DMs except with their owner #9371)Each PR passed CI on its own base. Together they break Rust Lint, Unit Tests, Windows Rust and the Desktop E2E Relay artifact build (main CI run 43291564834). The fix passes
RunCause::Scheduleandtrue, matching the neighbouring tests. Neither test is about run cause or agent mentions, so neither assertion changes.2. Desktop E2E Integration fails on GitHub's new Ubuntu 26.04 runners.
ubuntu-latestis rolling to 26.04, and Playwright 1.60 (our lockfile) fails withPlaywright does not support chromium on ubuntu26.04-x64. Playwright 1.61 is the first release that knows ubuntu26.04. This PR bumps@playwright/testto^1.65.0indesktop/,web/andadmin-web/and regeneratespnpm-lock.yaml. It also pins everyubuntu-latestjob inci.ymland_ci-*.ymltoubuntu-26.04, so the next runner image change arrives in a reviewed diff. macOS and Windows jobs are unchanged.The newer Chromium bundled with Playwright 1.65 changed two smoke specs. It reports Tailwind's
items-endasalign-items: flow-end(doctor-statesnow acceptsflex-endorflow-end), and it draws the textarea resize grip differently, so theworkflow-template-variable-autocompletebaseline is refreshed from the ubuntu-26.04 CI output.It also exposed a timing race in
profile.spec.ts"owned agent profile stays in parity": when the Message click lands while the profile panel is still settling, Playwright's scroll-into-view retry scrolls the profile body, which hides the owned-agent action row (aria-hidden + inert) for good. The test now pins the body to the top and waits for the row before clicking (12/12 repeats plus the full profile spec pass on Linux).Verification
cargo clippy -p buzz-db -p buzz-relay --tests -- -D warningsis clean on fc8c802 with commit 1 applied.pnpm install --frozen-lockfilesucceeds with the new lockfile, andplaywright --versionreports 1.65.0.tsc --noEmitpasses fordesktop,webandadmin-web.Notes
ubuntu-latest. This PR can't exercise them, so they're left for a follow-up.ubuntu-26.04label yet. CI only actionlintscodex-security-review.yml, which this PR doesn't touch.Simpler
No production code changes. The runner pin swaps an implicit moving target for an explicit one.
🤖 Generated with Claude Code