## 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 in `EnsurePrimaryRef` (`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 in `PrePush` (not present on the branch — `Push` is still `[v1]` via `DefaultV1Refs`).
- **Flip primary**: `Primary=v1.1`, and v1 becomes the mirror (the relationship inverts). Adds a one-line seed-from-`Mirror` to `EnsurePrimaryRef` (today it only bootstraps from origin or an empty orphan — confirmed at `common.go:455+`).
- **Drop v1**: remove the v1 literal and collapse the now-redundant `Read` field.

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.
