Version. 0.1
Date. 2026-07-28
Author. Claude Code on DUNIN7-M4. Operator: Marvin Percival.
Status. Queued-directions candidate. Not commissioned; nothing deleted. Filed for the Operator to schedule or decline.
Provenance. Raised at §3.4 of completion-records/loomworks-graph-hygiene-completion-record-v0_1 (0a73d6e), noticed while deleting CR-2026-154's build branch. Counts below are measured against loomworks-engine main at 355fe7a on 2026-07-28, after git fetch --prune.
The engine repository carries 39 local branches besides main, and 15 on the remote. Thirty-seven of the local ones and all fifteen remote ones are fully merged into main — their commits are already in the mainline and the branch names are just labels left behind. Deleting them removes nothing from history.
Two local branches are not merged, and those are the only ones that need a decision rather than a broom. One is a deliberately parked state that already has its own resolution note in the record. The other is a step-0 findings commit from May that is 371 commits behind.
The work is small and mostly mechanical. It is filed rather than done because deleting branches — even provably merged ones — is the Operator's call, and because the two unmerged branches carry real decisions that should not be swept up with the rest.
| Set | Count | Status |
|---|---|---|
| Local branches besides main | 39 | — |
| — merged into main | 37 | safe to delete; git branch -d will accept them |
| — not merged into main | 2 | need a decision (§3) |
| Remote branches besides main | 15 | — |
| — merged into origin/main | 15 | safe to delete |
| — not merged | 0 | — |
Every unmerged branch is local-only; neither appears on the remote. So the remote side is purely mechanical.
Commands used, all read-only:
git fetch --prune origin
git branch --merged main | grep -v '^\*\| main$'
git branch --no-merged main
git branch -r --merged origin/main | grep -v 'origin/main\|origin/HEAD'
git branch -r --no-merged origin/main
Thirty-seven local plus fifteen remote branch names, every one of them pointing at commits already reachable from main. Oldest by last commit date: source-identification (2026-05-29), fix-three-seam-credential-resolution (2026-05-31), then a cluster from 2026-06-01.
git branch -d (lowercase, the safe form) refuses anything unmerged, so it is its own guard — the 37 will accept, and nothing else could slip through even if the list were miscounted. Remote deletion is git push origin --delete <branch>.
Verification after any sweep should be the same check CR-2026-154's branch deletion used: confirm the tip commit of each deleted branch is still an ancestor of main (git merge-base --is-ancestor <sha> main). Deleting a merged branch removes a pointer, never a commit — but the check makes that visible rather than assumed.
Worth pairing with the sweep: capture the 52 branch names and their tip SHAs to a file first, so the pointers are recoverable from the record even though the commits were never at risk.
cr-2026-153-tools-menu-engine — 3 ahead of main, 21 behind, last commit b0dc30b (2026-07-18), local only.
Do not sweep this one without reading investigations/loomworks-b0dc30b-parked-state-resolution-v0_1. That commit is a deliberately parked working-tree state, committed without inspection at the start of the Stage 1 perimeter build so Stage 1 could branch cleanly off main, and its own message says so. The resolution note is explicitly recommendation only — nothing applied or discarded, and Stage 2's build brief §6.3 required it be resolved separately from the CR-2026-153 salvage decision. So the branch is parked, not abandoned, and its disposal is that decision's tail, not this sweep's.
source-identification-step-0 — 1 ahead of main, 371 behind, last commit c61fc07 (2026-05-29), local only.
A step-0 pre-flight findings commit: baseline, alembic head 0073, a test-DB sequence finding. Its sibling source-identification is merged, and the arc shipped and was tagged source-identification-v0_1. The likely reading is that the findings were consumed into the CR and the branch simply outlived its purpose — but the commit is one of a kind (a findings record that was never filed to the record repository), so the honest options are to file its content if it holds anything not already captured, or delete it as consumed. Confirm before deleting; 371 commits of drift means nobody has looked at it in two months.
Not tidiness for its own sake. Two concrete costs:
git branch output is unreadable at 40 entries, which is how a genuinely unmerged branch hides. Both of the two found here were invisible in the noise until the merged set was filtered out.source-identification-step-0 is a single-copy artefact.
In scope. loomworks-engine branch pointers, local and remote.
Out of scope. Any commit's content. Tags (87 of them, untouched and not part of this). The b0dc30b disposal decision (§3, belongs to the CR-2026-153 salvage tail). The other repositories — loomworks-record, loomworks-ui, loomworks — were not measured; if the sweep is commissioned, measuring them first is cheap and probably worth it.
Not a blocker for anything. Nothing in the graph arc, the Stele line, or the perimeter work depends on this. It is housekeeping with two decisions embedded in it.
DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks — Engine Branch Sweep — Work Item — v0.1 — 2026-07-28