Commit cb5a625a by PLN (Algolia)

check-drift: it told me to delete PLN's set the day before a gig

check-drift flagged 13 uncommitted .tidal files as "the stale-buffer signature"
and its remedy section led with `git checkout -- <file>`. I nearly relayed that.

All 13 were PLN's own work: the ^43/^44 -> ^41 gMask-retirement migration
(37857225 freed ^41 for d1's gate) plus real musical edits — new octersubbus and
squizbus lines, `slow 2 $ ply 2` reworks, gain 1.4->1.6, a sample change from
n "74" to n "25". `git checkout --` would have destroyed a set the night before
the gig, on the advice of a check that was confident and wrong.

The script's own design comment already had the right principle: "drift is not
control numbers changed, it is control numbers moved AWAY FROM THE GRID". Its
per-file test just cannot see direction — it counts CHANGED ^NN lines (>= 4) and
ANDs that with a global grid failure. Both were true here for innocent reasons:
the grid is unaligned because the migration is HALF-APPLIED, and those files are
the half that is done. Volume of change cannot separate a repair from a
regression. Only direction can, and migrate-columns --plan already knows it:
0 pending moves for a file means its edits ARE the alignment.

So: the DRIFT message now names both hypotheses with the one command that
distinguishes them, the grid failure reports migrate-columns' pending count
(20 here) and spells out that UNALIGNED is not REGRESSED, and the destructive
remedy is behind an explicit "look at the diff first" with this incident as the
reason. A gate that recommends data loss on ambiguous evidence is worse than no
gate.

Still exits non-zero, honestly: 9 knobs are genuinely out of column and 20 moves
are genuinely pending. That is a real finding about an incomplete migration, and
completing it is a decision about muscle memory that belongs to the person whose
hands are on the desk — not something to apply the night before a gig.
parent b503502f
......@@ -65,6 +65,12 @@ else
echo " ${RED}DRIFT${OFF} $got knobs out of column, expected at most $EXPECTED."
echo " Knobs have moved back out of their orbit's column."
echo " See which: python3 tools/surface-columns.py --knobs"
pend=$(python3 tools/migrate-columns.py --plan 2>/dev/null | grep -oE '[0-9]+ move\(s\)' | grep -oE '^[0-9]+' || true)
if [ -n "${pend:-}" ] && [ "$pend" -gt 0 ]; then
echo " NB migrate-columns reports $pend pending move(s): the grid is"
echo " UNALIGNED (migration incomplete), which is not the same as"
echo " REGRESSED. Uncommitted edits below are probably the repair."
fi
fail=1
fi
......@@ -79,8 +85,14 @@ else
moved=$(git diff -U0 -- "$f" | grep -cE '^[-+].*"\^[0-9]+"' || true)
if [ "$moved" -ge 4 ] && [ "$grid_ok" -eq 0 ]; then
echo " ${RED}DRIFT${OFF} $f$moved ^NN lines changed AND the grid is broken."
echo " That pair is the stale-buffer signature: a human editing on"
echo " purpose does not renumber four controls at once."
echo " TWO hypotheses fit this, and they have opposite remedies:"
echo " (a) a MIGRATION IN PROGRESS — the grid is unaligned because the"
echo " move is half-applied, and these edits are the repair."
echo " (b) a stale-buffer clobber — Pulsar wrote an old buffer back."
echo " Tell them apart by DIRECTION, not by volume:"
echo " python3 tools/migrate-columns.py --plan $f"
echo " 0 moves => these edits ARE the alignment (hypothesis a, keep them)."
echo " Moves listed that UNDO your edits => clobber (hypothesis b)."
fail=1
elif [ "$moved" -ge 4 ]; then
echo " ${YEL}note${OFF} $f$moved ^NN lines changed, but the grid still holds"
......@@ -98,7 +110,14 @@ if [ "$fail" -eq 0 ]; then
echo "check-drift: ${GRN}OK${OFF} — committed track work is intact."
else
echo "check-drift: ${RED}DRIFT DETECTED${OFF}"
echo " If this is a stale-buffer clobber: CLOSE THE TAB in Pulsar and reopen"
echo " DO NOT reach for git checkout until you have looked at the diff. On
2026-08-21 all 13 flagged files were PLN's own work — the ^43/^44 -> ^41
gMask-retirement migration plus real musical edits (new octersubbus/squizbus
lines, sample and gain changes) — and `git checkout --` would have deleted a
set the day before a gig. Volume of ^NN changes does not distinguish a repair
from a clobber; only direction does, and migrate-columns --plan knows it.
If the diff really is a stale-buffer clobber: CLOSE THE TAB in Pulsar and reopen"
echo " (Window: Reload restores the cached buffer, not the file), then"
echo " git checkout -- <file> # take the committed version back"
echo " or re-run the migration:"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment