Push Checkpoints v1.1 Ref to Remote · Entire
Short answer
For v1.1 to mirror v1, nothing is left. PR #1376 is a mechanical refactor — it doesn't add new mirror coverage, it consolidates the coverage that already existed. After it, every v1 (Primary) write/advance/fetch routes through one chokepoint, so the v1.1 mirror tracks v1 everywhere. What's actually "left" is the rollout that moves past mirroring — pushing v1.1, flipping v1.1 to primary, and dropping v1 — which is explicitly out of scope for this PR.
Note: #1376 is still open, not merged.
Why mirror coverage is complete
In v1.1 mode the resolver (committed_refs.go) yields Primary=v1, Read=v1.1, Mirror=v1.1, Push=[v1]. Every place that advances Primary pairs it with a mirror:
- Autonomous flows →
AdvanceCommittedPrimary(sets Primary + best-effort mirror): reconcile (metadata_reconcile.go:118), push rebase (push_common.go:424), cleanup (cleanup.go:337), fetch-fallback and orphan creation inEnsurePrimaryRef(common.go:481,503,559). - Post-write best-effort mirror: condensation (
manual_commit_condensation.go:266), hooks (manual_commit_hooks.go:1160,2818), remote metadata fetch (checkpoint_remote.go:128). - Foreground commands → strict
MirrorCommittedMetadataRef(surfaces errors):attach.go:322,explain.go:936(--generate),doctor.go:456(fix),git_operations.go:475(checkout).
The single documented exception is promoteRemoteTrackingPrimary in resume.go:716, which advances local v1 via SafelyAdvanceLocalRef without mirroring. It's harmless in v1.1 mode because its caller checkRemoteMetadata early-returns first (resume.go:610, gated on ReadBootstrappableFromOrigin(), which is false when Read=v1.1 ≠ Primary=v1). So the un-mirrored path is unreachable when the mirror exists.
What's left (the roadmap beyond mirroring)
From the PR's own "Future rollout" table — each is a resolver-level change, and the first two reverse the mirror direction:
| Phase | Primary | Read | Mirror | Push |
|---|---|---|---|---|
Today ("1.1") |
v1 | v1.1 | v1.1 | [v1] |
| Push v1.1 to remote | v1 | v1.1 | v1.1 | [v1, v1.1] |
| Flip primary to v1.1 | v1.1 | v1.1 | v1 | [v1.1, v1] |
| Drop v1 | v1.1 | v1.1 | — | [v1.1] |
- Push v1.1: add v1.1 to
Push+ a one-line strict re-mirror inPrePush(not present on the branch —Pushis still[v1]viaDefaultV1Refs). - Flip primary:
Primary=v1.1, and v1 becomes the mirror (the relationship inverts). Adds a one-line seed-from-MirrortoEnsurePrimaryRef(today it only bootstraps from origin or an empty orphan — confirmed atcommon.go:455+). - Drop v1: remove the v1 literal and collapse the now-redundant
Readfield.
So the answer to "what is left for v1.1 to mirror v1" is: the mirror itself is done; the remaining milestones are about making v1.1 the source of truth rather than a passive mirror.