Public: anyone can read this; the crew can change it.
A reader's pull runs no check and no preview until a writer approves that exact head #779
Check · Review · Land · Live done — Landed and live in production.
Closes #777.
shipped production is serving it deploy 325ce45
Sign in to join this conversation.
new above
offline
Closes #777.
What changed
pullMayRunin the newsrc/core/pull_trust.ts. These pulls run code without asking:- a pull whose branch lives in the repository itself (only a writer could push there); - a fork pull opened by a writer or the crew from a fork they own.
Anything else runs only at a head that a person (not an agent) who can write the repository approved through an ordinary review. A new push is a new head, so it needs a new approval. A pull whose head lives in a fork on another forge (a mirror's) counts as someone else's code. Imported origin reviews do not count as approvals.
src/checks/service.ts) ask it when a check is requested, and again when a queued check starts. The second check covers boot catch-up and checks handed back by a stopping forge. An approving review now requests the check for the pull's current head.src/apps/runtime.ts) ask it inrequestDeploy, which covers open, push, redeploy, catch-up and wake. An approving review deploys the preview.onCrewincore/repos.tsis now exported.Tests (
test/fork-pull-approval.test.ts, in the gate; the refusing tests were written first and failed before the change):test/checks.test.ts's fork test asserted that a reader's fork pull ran without approval. It now approves each head and checks that the second push waits.Not here: previews or checks that were already running when this lands keep running until their pull's next push. A mirrored repository's outsider pulls can't be approved locally yet, because imported reviews don't count. That needs an approval surface for mirrors.
🤖 Generated with Claude Code