- Co-Authored-By
- Claude Opus 5 (1M context) <noreply@anthropic.com>
- Claude-Session
- https://claude.ai/code/session_016o8HwTaqLKEWCHTjsjFtrB
Refuse a push to anything but the forge
Deploy story
What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.
Not deployed through the forge lane
No push, promotion, build, or deploy receipt references this commit (receipts are scanned over a bounded recent window). Changes shipped by full node replacement carry their proof in the release gate receipt instead.
Changed files
-
modified
.githooks/pre-push -
modified
AGENTS.md -
modified
INVARIANTS.md -
modified
docs/operations/release-deployment-fallbacks.md -
added
ops/ci/push-remote-check.sh -
added
test/openagents/push_remote_contract_test.exs
Diff
6 files changed, +160 -0
.githooks/pre-push modified +4
AGENTS.md modified +15
@@ -12,6 +12,21 @@ All text in this repo — docs, README, `AGENTS.md`, commit messages, and agent
| 12 | 12 |
|
| 13 | 13 |
|
| 14 | 14 |
|
| 15 |
|
|
| 16 |
|
|
| 17 |
|
|
| 18 |
|
|
| 19 |
|
|
| 20 |
|
|
| 21 |
|
|
| 22 |
|
|
| 23 |
|
|
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
| 28 |
|
|
| 29 |
|
|
| 15 | 30 |
|
| 16 | 31 |
|
| 17 | 32 |
|
INVARIANTS.md modified +26
@@ -1791,6 +1791,31 @@ Evidence: `OpenAgents.Repositories`, `OpenAgents.Repositories.Provisioner`,
| 1791 | 1791 |
|
| 1792 | 1792 |
|
| 1793 | 1793 |
|
| 1794 |
|
|
| 1795 |
|
|
| 1796 |
|
|
| 1797 |
|
|
| 1798 |
|
|
| 1799 |
|
|
| 1800 |
|
|
| 1801 |
|
|
| 1802 |
|
|
| 1803 |
|
|
| 1804 |
|
|
| 1805 |
|
|
| 1806 |
|
|
| 1807 |
|
|
| 1808 |
|
|
| 1809 |
|
|
| 1810 |
|
|
| 1811 |
|
|
| 1812 |
|
|
| 1813 |
|
|
| 1814 |
|
|
| 1815 |
|
|
| 1816 |
|
|
| 1817 |
|
|
| 1818 |
|
|
| 1794 | 1819 |
|
| 1795 | 1820 |
|
| 1796 | 1821 |
|
@@ -1874,3 +1899,4 @@ contract; the invariant prose above defines the assertion, not the filename.
| 1874 | 1899 |
|
| 1875 | 1900 |
|
| 1876 | 1901 |
|
| 1902 |
|
docs/operations/release-deployment-fallbacks.md modified +3
@@ -28,6 +28,9 @@ Install the repository hook once on each owned development or release machine:
| 28 | 28 |
|
| 29 | 29 |
|
| 30 | 30 |
|
| 31 |
|
|
| 32 |
|
|
| 33 |
|
|
| 31 | 34 |
|
| 32 | 35 |
|
| 33 | 36 |
|
ops/ci/push-remote-check.sh added +52
@@ -0,0 +1,52 @@
| 1 |
|
|
| 2 |
|
|
| 3 |
|
|
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
|
| 8 |
|
|
| 9 |
|
|
| 10 |
|
|
| 11 |
|
|
| 12 |
|
|
| 13 |
|
|
| 14 |
|
|
| 15 |
|
|
| 16 |
|
|
| 17 |
|
|
| 18 |
|
|
| 19 |
|
|
| 20 |
|
|
| 21 |
|
|
| 22 |
|
|
| 23 |
|
|
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
| 28 |
|
|
| 29 |
|
|
| 30 |
|
|
| 31 |
|
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
|
| 43 |
|
|
| 44 |
|
|
| 45 |
|
|
| 46 |
|
|
| 47 |
|
|
| 48 |
|
|
| 49 |
|
|
| 50 |
|
|
| 51 |
|
|
| 52 |
|
test/openagents/push_remote_contract_test.exs added +60
@@ -0,0 +1,60 @@
| 1 |
|
|
| 2 |
|
|
| 3 |
|
|
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
|
| 8 |
|
|
| 9 |
|
|
| 10 |
|
|
| 11 |
|
|
| 12 |
|
|
| 13 |
|
|
| 14 |
|
|
| 15 |
|
|
| 16 |
|
|
| 17 |
|
|
| 18 |
|
|
| 19 |
|
|
| 20 |
|
|
| 21 |
|
|
| 22 |
|
|
| 23 |
|
|
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
| 28 |
|
|
| 29 |
|
|
| 30 |
|
|
| 31 |
|
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
|
| 43 |
|
|
| 44 |
|
|
| 45 |
|
|
| 46 |
|
|
| 47 |
|
|
| 48 |
|
|
| 49 |
|
|
| 50 |
|
|
| 51 |
|
|
| 52 |
|
|
| 53 |
|
|
| 54 |
|
|
| 55 |
|
|
| 56 |
|
|
| 57 |
|
|
| 58 |
|
|
| 59 |
|
|
| 60 |
|