feat(nuxt-cloudflare): E2E off the pull request, mode: e2e, audit warns on PRs - #175
Merged
Merged
Conversation
…s on PRs - vars.CI_E2E_IN_CI == 'false' skips e2e-plan, e2e and e2e-quarantine on any event; Required treats the skip as success. Unset or other values change nothing. - mode: e2e input for a caller workflow named E2E (push to main, nightly, workflow_dispatch): build -> e2e-plan -> e2e plus a Required verdict, ignores the var. - pnpm audit warns on pull_request/pull_request_target, fails elsewhere. - red-main-self and the listener template also act on schedule runs. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… Required proof The proof key does not include the variable, so a proof minted while it was false could be reused by a push after the variable was removed, turning main green without E2E. The mint condition reads the raw run-e2e input again. Also: README case-insensitivity note, accurate proof-key comment. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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.
What
Fast CI + ship program, lane E2E-CALLABLE. Logan (2026-09-29): E2E skips on PRs, runs after each merge (newest wins) plus nightly, one org switch;
pnpm auditwarns on PRs and blocks on main + nightly.vars.CI_E2E_IN_CI == 'false'skipsE2E plan,E2EandE2E quarantineon every event;Requiredreads the skip as success (a lane that runs anyway still fails it). Unset or any other value changes nothing, so this merge alone changes no behaviour. Build also stops packing the prebuilt app for E2E, and the folded-gate condition follows the switch.mode: e2e(defaultci), for a caller workflow namedE2E: Build -> E2E plan -> E2E (+ quarantine) andRequiredas the verdict; every other lane, the Caller lint and the audit are skipped, the var is ignored, and the plan never path-skips (a newer push cancels the run, so no diff can prove a skip).Requiredis red for an unknown mode,run-e2enot true,journey-smoke-urlset, or any E2E lane failing/cancelled/skipped without the plan's say-so. README section "E2E off the pull request" carries the caller YAML (push main, nightly cron, workflow_dispatch,concurrency: {group: e2e-<repo>, cancel-in-progress: true}) and the listener YAML.pull_request/pull_request_targetturn the failure into::warning::(advisory list kept, step passes); push, schedule, workflow_dispatch still fail.red-main-self.ymland the listener template also act onscheduleruns on the default branch (and listworkflows: ["CI", "E2E"]).Verify (Opus)
One blocker, fixed in d05c9c9: with
CI_E2E_IN_CI=falsea PR minted a Required proof although E2E never ran (the proof key omits the variable, so a rollback or repo override would let the push reuse it and go green without E2E). The mint condition reads the rawrun-e2eagain;test_e2e_mode.pyhas a test (mutation-checked). Also: README notes case-insensitivity, proof-key comment corrected.Judgement call to review
The brief says the var skips E2E "on any event". I did not let it override
e2e-full-paths(acre-oracle style protected-path escalation) orexpected-candidate-sha(release validation): both are explicit promises to run browsers, and the gates behind them fail closed if the lane is silently skipped. Unset/other behaviour is unchanged. If Logan wants the var to win over them too, it is one term in theE2E_ONexpression.Checks run (nice, targeted; no ci-local)
actionlint -no-color -oneline .github/workflows/*.ymlpython3 scripts/lint_callables.pyscripts/test_*.py(30 modules, incl. newtest_e2e_mode.py, extendedtest_dependency_audit.py44 cases,test_red_main_listener.py)test_package_auth_cleanup.pyexpectation, rerun green)ruff check scripts/test_e2e_mode.pytest_e2e_mode.py(var honoured in e2e mode, path-skip in e2e mode, mode in proof key, gate accepting run-e2e false, dropped escalation exception)test_e2e_mode.pyis wired intoci.ymlafter the fast-path contract tests.Canary (cloudflarestat-us, PR #32 pinned to this branch's SHA, unmerged, closed after)
cloudflarestat-us, PR https://github.com/narduk-enterprises/cloudflarestat-us/pull/32 (unmerged, closed after),
ci.ymland a canary-onlye2e.ymlpinned to head d05c9c9. Repo-level variableCI_E2E_IN_CI=false(no org variable).Buildsuccess,E2E plan,E2EandE2E quarantineskipped,Requiredsuccess.mode: e2erun (push, workflowE2E, variable still false and ignored): https://github.com/narduk-enterprises/cloudflarestat-us/actions/runs/36643955699 -- Build, E2E plan, E2E shards 1-3 success, every other lane skipped,Requiredsuccess.E2Erun on the previous canary commit (https://github.com/narduk-enterprises/cloudflarestat-us/actions/runs/36643359129) was cancelled mid-shards by the next push (concurrency groupe2e-<repo>).format:checkcovers.github/workflows, so the stampede2e.ymlmust be Prettier-formatted (single-quoted cron); README caller YAML updated.Rollout
Exact per-app
e2e.ymland listener change are in the README section above. After merge,v2is advanced by hand per the README. No org variable is set by this PR; the orchestrator flipsCI_E2E_IN_CIwhen the per-appE2Ecallers are in.🤖 Generated with Claude Code