A hosted CI run as a second opinion
P2Your machine has state a fresh checkout does not, so one run on a clean machine after each push tells you what the hooks could not.
- do this
- One workflow, triggered by a push to the default branch, that installs from the frozen lockfile and runs the same check command and the same build as the hooks. Nothing waits on it.
- not this
- Building the pull-request pipeline a team needs (a job per check, required statuses, a branch to merge from) for a repository one person pushes to, then waiting on a runner to repeat what the hooks finished a minute ago.
in plain terms
You check your own homework at home, and that is the check that counts. But you check it at your own desk, with your own notes lying open. Now and then it helps to have someone redo the sums from a blank page. If they get a different answer, your desk was helping more than you knew.
why it holds, and what to build it with
The hooks are the gate, and they run on a machine with history: installed packages the lockfile no longer describes, files that exist on disk and were never committed, a local environment file, a warm build cache. A hosted run starts from nothing, so it catches the change that only works where it was written. It runs after the push, it blocks nothing, and a red run means fix forward. Keep it to one workflow that calls the same scripts as the hooks, so there is one definition of passing. If a deploy platform already builds every push from a clean checkout, that build covers much of the same ground, and the hosted run can stay small or wait. The pipeline grows when the team does. Once a second person pushes, split the checks into named jobs, run them on pull requests and make them required, which is technique 1.4. Three workflow details are worth copying at any size: read-only permissions by default, third-party steps pinned to a commit hash, and an install that refuses to change the lockfile.
build it with
- hosted CI runner, triggered by a push to the default branch
- the same check and build scripts the hooks call
- read-only default permissions
- steps pinned to a commit hash
- frozen-lockfile install
- the deploy platform's own clean build
how it shows up when it is missing
A new file is never staged. Every hook passes because the file is on disk, the push goes out, and the first clean checkout fails on a missing import.
07trust
The gate's credibility is a social property
A gate's real output is trust. Once a red check usually means nothing, the signal is gone even though every check still runs. That holds for one person and their agents as much as for a team.