docs(adr): record the fork-PR CI trust model (0035) #489

Merged
hexajon merged 1 commit from issue-415-fork-pr-ci-trust-adr into main 2026-09-14 21:07:20 +00:00
Owner

Summary

Records the fork-PR CI decision as ADR 0035.

  • Anyone can read the repository without an account. Only trusted people have an account, and every account is one I created. Self-registration is off, and the one sign-in provider offers no registration.
  • Forking, opening a pull request and starting a workflow all need an account, so no anonymous visitor can run code on the runner. A fork or first-time-contributor approval gate would only repeat that account gate, so I do not turn one on.
  • Runner isolation stays as a second layer: no host docker socket, unprivileged containers, allowlisted volumes, and default-reject egress to private networks. The workflows use plain pull_request, no pull_request_target or workflow_run, and no third-party actions. The socket-privileged smoke job never runs on a pull request.
  • The record names the condition to revisit: if registration ever opens, the approval gate becomes required.

Checked 2026-09-14: the signup page, the sign-in provider, anonymous read of the repo page, and the workflow files. adr check passes.

Closes #415.

Closes #415

## Summary Records the fork-PR CI decision as ADR 0035. - Anyone can read the repository without an account. Only trusted people have an account, and every account is one I created. Self-registration is off, and the one sign-in provider offers no registration. - Forking, opening a pull request and starting a workflow all need an account, so no anonymous visitor can run code on the runner. A fork or first-time-contributor approval gate would only repeat that account gate, so I do not turn one on. - Runner isolation stays as a second layer: no host docker socket, unprivileged containers, allowlisted volumes, and default-reject egress to private networks. The workflows use plain `pull_request`, no `pull_request_target` or `workflow_run`, and no third-party actions. The socket-privileged smoke job never runs on a pull request. - The record names the condition to revisit: if registration ever opens, the approval gate becomes required. Checked 2026-09-14: the signup page, the sign-in provider, anonymous read of the repo page, and the workflow files. `adr check` passes. Closes #415. Closes #415
docs(adr): record the fork-PR CI trust model (0035)
Some checks failed
drift / govulncheck (pull_request) Has been skipped
drift / surface-diff (pull_request) Successful in 1m6s
drift / forgejo-smoke (pull_request) Has been skipped
ci / gate (push) Failing after 17m11s
ci / mcp-conformance (pull_request) Failing after 18m29s
ci / gate (pull_request) Failing after 18m29s
drift / govulncheck (push) Has been skipped
drift / forgejo-smoke (push) Has been skipped
drift / surface-diff (push) Successful in 11s
ci / mcp-conformance (push) Successful in 32s
5a89e5fc95
Closes #415
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sixfold-space/madtea!489
No description provided.