diff --git a/README.md b/README.md
index 0d3b9892f29ee8f2ba8bc1cd47adb0c4d9aad7b0..6e857d08c5a77158df7f3126e8849d51d2f7d340 100644
--- a/README.md
+++ b/README.md
@@ -463,3 +463,16 @@
 checkout commands. Read the
 [SSH pull-request checkout architectural decision record](docs/adr/0027-ssh-pull-request-checkout.md)
 for the command, output, permission, and error contracts.
+
+## Milestone 5 gate
+
+Install stock Git and stock OpenSSH. Then, run the collaboration gate:
+
+```text
+./scripts/check-m5
+```
+
+This command tests branch pushes, pull-request revisions, anchored reviews,
+merges, concurrent ref updates, and recovery after an interrupted ref update.
+It also tests the Web workflow, the SSH checkout command, and historical schema
+migration.
diff --git a/scripts/check-m5 b/scripts/check-m5
new file mode 100755
index 0000000000000000000000000000000000000000..3ef8f5246fcfd9b4116b829b26eabe79f5c33632
--- /dev/null
+++ b/scripts/check-m5
@@ -1,0 +1,9 @@
+#!/bin/sh
+set -eu
+
+./scripts/check
+cargo test --locked --release --test git_push_ssh
+cargo test --locked --release --test pull_requests
+cargo test --locked --release --test public_routes runs_the_complete_issue_workflow_without_javascript
+cargo test --locked --release --test serve creates_owned_repositories_with_stable_ssh_command_output
+cargo test --locked --release --test sqlite migrates_each_committed_historical_fixture
