ci: scope-gate the examples/ag-ui e2e job and make it block merges - #944
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
`examples-ag-ui-e2e` had no `if:` at all. It ran on every push and every pull request — a Playwright suite with a 35-minute timeout, executing on docs-only and website-only PRs. On #932 (three files under apps/website/src) it ran to completion for nothing. It was also absent from `required-pr-checks`, so an ag-ui e2e failure never blocked a merge. Both halves are fixed here deliberately: gating it without requiring it would leave a suite that is skipped often and ignored when it fails. The plumbing was half-built rather than missing. examples/ag-ui/project.json and examples/ag-ui/angular/project.json already carried `scope:examples-ag-ui`, but `examples_ag_ui` was never added to SCOPE_KEYS, so classifyFromAffected read the tag and discarded it — there was no output for the job to gate on. Also tags examples/ag-ui/python, which had no tags at all. That is the backend the e2e job `uv sync`s and drives the Angular app against, so leaving it untagged would have made a python-only change silently skip the suite — buying speed by dropping coverage. examples/chat/python already carries its `scope:examples-chat` tag the same way. Verified against real commits: website-only #932 base..head → false; an ag-ui angular change → true; an isolated python-only change → true, with examples_chat and website both false. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
blove
force-pushed
the
blove/ci-scope-ag-ui-e2e
branch
from
September 2, 2026 01:55
401860a to
4f4f22c
Compare
blove
enabled auto-merge (squash)
September 2, 2026 01:55
blove
force-pushed
the
blove/ci-scope-ag-ui-e2e
branch
from
September 2, 2026 01:55
401860a to
4f4f22c
Compare
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Second waste lever after #939, found by auditing every job's
if:gate.examples-ag-ui-e2ehad noif:at all. It ran on every push and every pull request — a Playwright suite with a 35-minute timeout, executing on docs-only and website-only PRs. On #932 (three files underapps/website/src) it ran to completion for nothing.It was also absent from
required-pr-checks, so an ag-ui e2e failure never blocked a merge. Both halves are fixed here deliberately: gating it without requiring it would leave a suite that is skipped often and ignored when it fails — the worst of both.The plumbing was half-built, not missing
examples/ag-ui/project.jsonandexamples/ag-ui/angular/project.jsonalready carriedscope:examples-ag-ui. Butexamples_ag_uiwas never added toSCOPE_KEYS, soclassifyFromAffectedread the tag and discarded it (SCOPE_KEYS.includes('examples_ag_ui')→ false). There was simply no output for the job to gate on. The removed comment said as much: "No dedicated ci-scope output exists for examples/ag-ui yet."Not buying speed with coverage
examples/ag-ui/python/project.jsonhad no tags at all. That's the backend the e2e jobuv syncs and drives the Angular app against, so scoping the job while leaving the backend untagged would have made a python-only change silently skip the suite. It's tagged here.examples/chat/pythonalready carries itsscope:examples-chattag exactly this way.Verified against real commits
examples_ag_uibase..head)falseexamples/ag-ui/angularchangetruetrue(withexamples_chatandwebsitebothfalse)Tests
Five specs, all confirmed failing first:
The existing
provides one stable required PR check that waits for scoped CI jobsguard also fired on theneedsaddition — that guard doing its job — and its expected list is updated. 137/137node --testafter;nx lint scriptsclean.🤖 Generated with Claude Code