| Artifact ID: | 433c2b11c6de8832b6b45f759244f7039b9fce16c417376e53209bf3fdab1b9b |
|---|---|
| Page Name: | checkin/2dfd42319fc08f68643dbf0c24e8a315269281f47632320f15574ac18fea2391 |
| Date: | 2026-08-29 01:04:05 |
| Original User: | dmestas |
| Mimetype: | text/x-markdown |
Rung 4: premerge
RFC 0009 §premerge, implemented. Nothing enters the DAG.
The helper
quarry-premerge --clone URL --branch-tip H --target-tip H (library: internal/premerge) clones over HTTP, opens the target tip, merges the branch tip into the working tree — zit's merge writes no check-in — and prints the prepared directory; a conflicted pair exits 2 with the files, a verdict rather than an error. It never commits, and it turns autosync off in the prepared checkout: the integration test commits in the tree on purpose and asserts the source ledger is unchanged — which is how we caught autosync pushing a test commit home through the clone's saved remote. Belt (settings) and braces (read-only credentials in production).
Pair-keyed verdicts
A premerge run's subject is pair:<branchTip>:<targetTip> — never a check-in, because the merge the accept later writes will hash differently. ci_run gained a pair column (migration for old stores); check.report accepts pair subjects, so an external CI can run the helper and report on the pair. A moved target changes the pair, so every stale verdict expires by construction — merge-queue freshness without a queue.
Per-branch mode
The protected-branches settings row gained a premerge checkbox (branch_required_checks.mode). In premerge mode the landing's checks panel and the accept gate read pair-keyed runs and pair-subject external checks only — a green tip run does not satisfy a premerge requirement (tested) — and the panel says which tree the checks are about.
Scope honesty
Engine-launched premerge runs (quarry starting them on landing events) arrive with the run-labels rung (dagnats#629); today the pair path is driven by workers/external CI via the helper + check.report. Verdict-tag carry-forward at accept and auto-accept-when-green are the next rung.