Part of #983.
Context
The per-repo cutover is gated on shadow-parity over the source-tagged audit (computeGateParity/isParityCutoverReady, floor ~0.98, MIN_PARITY_SAMPLE 30, ZERO unsafe disagreements; #1024 added the columns + wiring). The single-writer invariant is OPERATIONAL not code-enforced and freeze:<slug> FAILS OPEN — so it must be verified to have taken before flipping, or both reviewwed[bot] and gittensory[bot] write the same PR (the highest-severity operational risk). Cut over ONE repo at a time on the user's explicit signal: awesome-claude (lowest risk) → gittensory → metagraphed LAST (coordinate its separately-owned preview pipeline). An instant-rollback dry-run is a HARD gate before the first real flip.
Deliverables
Acceptance criteria
- Each repo flips only after parity passes (≥30 paired, ≥ floor, zero unsafe disagreements) AND the freeze is verified to have taken.
- The instant-rollback dry-run passed before the first flip (HARD gate).
- Exactly one App writes per repo at all times; no duplicate/conflicting comments or check-runs during cutover.
Acceptance criteria (blocking)
Notes
Part of #983.
Context
The per-repo cutover is gated on shadow-parity over the source-tagged audit (
computeGateParity/isParityCutoverReady, floor ~0.98, MIN_PARITY_SAMPLE 30, ZERO unsafe disagreements; #1024 added the columns + wiring). The single-writer invariant is OPERATIONAL not code-enforced andfreeze:<slug>FAILS OPEN — so it must be verified to have taken before flipping, or bothreviewwed[bot]and gittensory[bot] write the same PR (the highest-severity operational risk). Cut over ONE repo at a time on the user's explicit signal: awesome-claude (lowest risk) → gittensory → metagraphed LAST (coordinate its separately-owned preview pipeline). An instant-rollback dry-run is a HARD gate before the first real flip.Deliverables
computeGateParity/isParityCutoverReadyover the SHARED source-tagged audit (source=reviewbot vs gittensory); require ≥30 paired, ≥ floor agreement, ZERO unsafe disagreements per repo before its flip.freeze:<slug>reviewbot, then VERIFY the freeze took (it fails open) before flipping gittensory's review flag live — exactly one App writes per repo.Acceptance criteria
Acceptance criteria (blocking)
freeze:<slug>verified taken (not assumed) before each flip.Notes
freeze:<slug>fails OPEN — a failed-open freeze with both Apps writing is the single highest-severity operational risk in the plan. The rollback dry-run is a hard gate, not a sub-bullet.