carlos / platform Public

AGENTS.md: pushing main to amadan is the last step of landing a change (#377)

Merges happen on origin and nothing moves amadan's main by itself, so
the mirror falls behind silently — on 2026-08-31 it was 86 commits and
three days back, which meant the gate had not run on main once in that
window. Every branch had been green against the base it was cut from;
nothing had checked the merged result.

Written as the last step of landing a change rather than a chore of its
own, and cross-referenced from the PR rule, which is where an agent
about to merge is actually reading. The intended end state is an
auto-mirror the other way — amadan to GitHub, so main moves on the hub
that gates it — and the note says so, so this habit is understood as
standing in for that rather than as the permanent shape.


Claude-Session: https://claude.ai/code/session_01DqT65F1iMwc8NjVG9r8Tr7
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Paul Campbell pushed by paul@keymail.dev 97eb53fbdefdf241fdb347abdb3b3a73da7da5d7 parent 7f7f941
1 file changed, +20 −1
  • AGENTS.md +20 −1

CI passed — run details

diff --git a/AGENTS.md b/AGENTS.md
index ad438174f..aed29f7bf 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -69,7 +69,9 @@ wording that read as a blanket ban and cost a session a round trip). The
rule is about how work REACHES `main`, not about whose hand lands it: the
PR has to exist, so that it can carry the context, the iterations and the
several commits that a single squashed push to `main` would flatten. Once
-it exists and is green, `gh pr merge` is an ordinary step.
+it exists and is green, `gh pr merge` is an ordinary step — followed by
+pushing `main` to `amadan`, which is what gates the merged result (see
+Build & test).
Use the judgement the rest of this file asks for: a PR that is still
collecting review, that is gated on something (`#62`), or whose diff you
@@ -100,6 +102,23 @@ than commit by commit, while the change can still be turned away.
but nothing on GitHub runs a build any more. A branch pushed only to
`origin` has been gated by exactly nothing — push it to `amadan` too,
and read the run, before calling it green.
+- **After a PR lands, push `main` to `amadan` too.** Merging happens on
+ `origin`, and nothing moves amadan's `main` by itself, so the mirror
+ falls behind silently: on 2026-08-31 it was 86 commits and three days
+ back, which meant the gate had not run on `main` once in that window.
+ A fast-forward is the whole job, and it is the last step of landing a
+ change, not a separate chore:
+
+ git fetch origin && git push amadan origin/main:refs/heads/main
+
+ What it buys is the one thing per-branch CI cannot tell you: each
+ branch was green against the base it was cut from, not against what
+ landed beside it. Read that run too — a red `main` is worth knowing
+ about the same day, which is the whole argument for the PR gate one
+ section up. (The intended end state is an auto-mirror the other way,
+ amadan to GitHub, so that `main` moves on the hub that gates it and
+ GitHub follows. Until that exists this push is the habit that stands
+ in for it.)
- `20-cross@5` adds `GOOS=darwin`/`windows`/`linux-arm64` compiles, one
per shard. **The gate is not Linux-only**: `internal/host` is linked
into the CLI, which people run on Macs, so a Linux-only type assumption