Simple Master Sync
A background job runs every 15 minutes and merges GitHub's master into your local master. It never pushes, never starts an agent and never resolves a clash itself, and when something needs a person it raises one inbox card for that GitHub version. Read its latest results with node scripts/ops/simple-master-sync.mjs --status.
What it is
Your local master is where finished work lands. GitHub's master moves too, from other computers and from edits made on GitHub. This job keeps the two level: when GitHub has something new, it merges it into local master the same way a person would by hand, in about a minute.
It only touches files that GitHub changed. If a merge would change anything else, or the two sides edit the same lines, it stops and writes down why instead of moving master.
Where to find it
It runs by itself on every computer, listed as AMC-simple-master-sync in the app's scheduled jobs. Its results are one line per run in a small log inside the repository's git folder, plus a small memory file beside it (amc-simple-master-sync-state.json). The only screen it has is the inbox card it raises when something needs you.
How it behaves
- Nothing new on GitHub: the run records "up-to-date" and stops.
- GitHub has news and the merge is clean: master moves to a merge of the two.
- You have unsaved edits in the open checkout: a file you edited that GitHub also changed gets GitHub's change merged into your edit, so
git statusshows only your own change. If the two cannot be combined (same lines, a binary file, a very large file, or a file the running app is serving), your file is left exactly as it is, and the run names it in its log line and in one inbox card. Committing such a file as it stands could undo GitHub's change, so combine them by hand first. If GitHub deleted a file you edited, your copy stays as an untracked file. A staged copy that differs from the file on disk is never replaced. - The two sides clash: master is left alone and the clashing file names are recorded once for that GitHub version, with one inbox card. Later runs on the same version record "conflict-unchanged" and raise nothing more. The card goes away by itself once GitHub's version is inside master.
- GitHub's history was rewritten (the last GitHub version this computer accepted is no longer part of GitHub's master): nothing is merged and one inbox card says so, with the exact command to accept the new history after you have checked it was intended.
- Master moved while the job worked: it tries once more, then waits for the next run.
- Something refused the move (a safety check, the land lock, the import check): the run records "refused" with the reason.
- It is the only master sync: the older 15-minute sync, its merge agents and its settings switch are retired, and nothing in the app can arm or start them. The "Safe catch-up" button and the sync-drift card run this job once. The auto-lander waits only when this job has written no row for an hour or its last three runs could not reach GitHub; a clash, a refusal or a switched-off run never holds landings, because resolving a clash needs a land.
To switch it off, set AMC_DISABLE_SIMPLE_MASTER_SYNC=1 or pause the job in the scheduled jobs list.
Related
The older, larger sync system is described on the Master Sync page; it is retired and kept only until a follow-up deletes its code.
Last verified 2026-11-01