|
| 1 | +# Branch rewrite plan — 2026-08-01 (fork-only) |
| 2 | + |
| 3 | +Basis: #272 reviewer confirmation (issuecomment-5151107400, 2026-08-01 |
| 4 | +10:53Z): rewrite so the original fixture blobs are never reachable from |
| 5 | +upstream main; force-push OK, nothing depends on current SHAs; stack |
| 6 | +order after #272 lands: #273 → #276 → #278, #281 last; re-review from |
| 7 | +the top. HOLD entry: BACKLOG.md "prepared PR-slice branches" (conditions |
| 8 | +1+2 MET; this plan is condition 3). Executed by the dispatching session |
| 9 | +inline; this file is the resume point if the session dies mid-surgery. |
| 10 | + |
| 11 | +## Dirty→clean fixture mapping (clean counterparts all on fork main) |
| 12 | + |
| 13 | +| dirty (pre-687cbc5) | clean | |
| 14 | +|---|---| |
| 15 | +| flap-s-0d6f38ba-86.json | flap-s-0dc8ac87c43d-86.json | |
| 16 | +| oscillation-s-633915a8-863.json | oscillation-s-4b6a435234bf-863.json | |
| 17 | +| pinned-s-633915a8-26-28.json | pinned-s-4b6a435234bf-26-28.json | |
| 18 | +| reset-move-s-dc3f8071-196-197.json | reset-move-s-97097e027ac0-196-197.json | |
| 19 | +| harvested-append-after-change-s-35d72503-323.jsonl | …-s-628f31b605ed-323.jsonl | |
| 20 | +| harvested-replace-edit-s-0edbd11c-20.jsonl | …-s-157bd37224d7-20.jsonl | |
| 21 | +| harvested-splice-insert-mid-s-0edbd11c-19.jsonl | …-s-157bd37224d7-19.jsonl | |
| 22 | + |
| 23 | +(growth-* dirty names never reached any PR branch.) |
| 24 | + |
| 25 | +## Affected branches (scan 2026-08-01, `git log <b> --not upstream/main |
| 26 | +--diff-filter=A -- <dirty names>`; upstream/main = 23346ac) |
| 27 | + |
| 28 | +- pr/insertion-normalization (#272, worktree pr1): 7 commits; dirty adds |
| 29 | + at 1ca82f0 (pinned) and tip b713b2f (oscillation). Literal name refs at |
| 30 | + those commits: test/insertion-suppression.test.mjs (:281 comment, :291 |
| 31 | + path), test/insertion-merge-suppression.test.mjs (:32 path). |
| 32 | +- pr/retire-messages-cache-breakpoint (#281, worktree pr10): #272's 7 + |
| 33 | + b07c0dc — rebase b07c0dc onto rewritten #272. |
| 34 | +- pr/verification-tools (#276, worktree pr4): 34 commits; dirty adds at |
| 35 | + 8069f75 (three harvested-*.jsonl), c392095 (pinned), e15e48f (flap). |
| 36 | + Origin has up to 53761a3 — force-push required (reviewer-cleared). |
| 37 | +- pr/insertion-join-moves (pr12, never pushed): rewritten-#272 tip + |
| 38 | + merge of rewritten-#276 tip + 7 commits, dirty add at 50ba316 |
| 39 | + (reset-move) fixed during replay. |
| 40 | + |
| 41 | +Clean branches (no rewrite; rebase onto 23346ac only when their turn in |
| 42 | +the stack comes / on demand): #273, #275, #278, #279, #280, #282. |
| 43 | + |
| 44 | +## Method (per branch, in its own worktree) |
| 45 | + |
| 46 | +1. Safety ref first: `git branch backup/<name>-pre-rewrite <tip>` |
| 47 | + (fork-local, never pushed). |
| 48 | +2. `git reset --hard 23346ac`, then cherry-pick the old commit list in |
| 49 | + order. At each dirty-add commit: `git rm` the dirty fixture, copy the |
| 50 | + clean counterpart from fork main (`git checkout main -- <clean |
| 51 | + path>`), update literal name references in the same commit's files, |
| 52 | + `git commit --amend --no-edit`. Later commits touching old names: |
| 53 | + resolve conflicts to the clean names. |
| 54 | +3. Comment rule (HOLD detail): fixture↔capture PAIRINGS ("(capture |
| 55 | + s-XXXX)" beside a fixture name) are dropped in slice copies; BARE |
| 56 | + capture short-forms (measurement provenance) stay — they are already |
| 57 | + public on the pushed slices, consistent precedent. |
| 58 | +4. Verify per branch before any push: |
| 59 | + - `git rev-list --objects <new-tip> --not upstream/main | grep -f |
| 60 | + <dirty-names>` → empty (blob reachability, the reviewer's actual |
| 61 | + criterion), plus full-UUID regex grep over the tip tree. |
| 62 | + - `node tools/slice-preflight.mjs` (absence arm) as on main. |
| 63 | + - Branch suite green in the worktree (targeted `node --test`; the |
| 64 | + proxy-read-dedupe failure on #276 is the known pre-existing red, |
| 65 | + proven at 53761a3). |
| 66 | +5. Push order: force-push #272 → push #276 (force) → push pr12 (`-u`, |
| 67 | + new) + open draft PR (pr-prep-actions.md steps 3-5, comment files in |
| 68 | + docs/audits/pr-prep-2026-07-31/) → force-push #281 → then stack |
| 69 | + rebases #273 → #278 as upstream review proceeds. Comment on #272 |
| 70 | + after the force-push: rewrite done, blobs unreachable, ready for the |
| 71 | + fresh round. |
| 72 | + |
| 73 | +## Status ledger (append as steps complete) |
| 74 | + |
| 75 | +- 2026-08-01: plan written; no branch touched yet. |
0 commit comments