Pull requests from forks
Backend CI runs on one of two engines per pull request, decided by .github/scripts/ci_backend_route.py: GitHub Actions or Depot CI.
Depot CI never runs a fork's code, so the router sends every fork pull request to GitHub Actions.
The required Django Tests Pass check is a GitHub Actions job on every head, fork or not, and nothing about the merge queue changes for a fork.
For in-repository PRs, an unreadable prior routing decision stops CI instead of switching engines.
The Depot relay matches the PR event's named wait check and reads only that Depot workflow's verdict; it never starts GitHub tests after a timeout.
What a fork contributor sees:
- Backend CI runs on GitHub Actions, as it always has, and selects the same tests it selects for any other pull request.
- Depot's optional checks show as skipped. They are not required and nothing waits on them.
- Steps that need a secret skip, on both engines. The same-repo
if:guard that makes that safe is in the CI authoring skill. - Visual Review needs a secret, so a fork pull request gets no Visual Review run. Each Storybook shard instead compares its screenshots with
frontend/snapshots.ymloffline. This fallback accepts only an exact pixel match. It does not know the tolerated hashes or the quarantine of Visual Review, so a flaky story can fail it. A snapshot that differs failsVisual regression tests passuntil a maintainer updates the baseline. Without the check, the merge queue would be the first run to compare the screenshots.
Never push a fork's head to a branch inside this repository to get it a Depot run. An in-repo branch is trusted: every secret-gated step runs, with the fork's code in control of the job. Review the fork PR as it is, and let the merge queue test it on its own branch.











