Skip to content

Commit afef695

Browse files
audits: branch rewrite plan for the reviewer-confirmed blob purge (HOLD condition 3)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016y33RMV399iYMXFEbAfQCk
1 parent b8b2f9a commit afef695

1 file changed

Lines changed: 75 additions & 0 deletions

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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

Comments
 (0)