hammer-upgrade: GC de generaciones huérfanas — 'hammer upgrade prune' (E4 hardening)
Tras un rollback las generaciones más nuevas quedan inalcanzables (no hay redo). prune(state, keep) borra esas huérfanas (la cadena viva = current+ancestros vía parent siempre se conserva); --keep N recorta además la profundidad de rollback. live_chain() expuesto. 2 tests nuevos + paso prune en upgrade-e2e-test.sh (3->1 gens, árbol vivo intacto). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -99,5 +99,14 @@ LINES="$(wc -l < "$JOURNAL/mutations.jsonl")"
|
||||
[ "$LINES" -gt 0 ] || { echo "FALLO: diario vacío" >&2; exit 1; }
|
||||
echo " ok: $LINES eventos en el diario"
|
||||
|
||||
echo "==> prune: tras los dos rollback completos las gens 1 y 2 quedaron huérfanas (current=3)"
|
||||
GENS_ANTES="$(ls "$STATE/generations" | wc -l)"
|
||||
up prune
|
||||
GENS_DESPUES="$(ls "$STATE/generations" | wc -l)"
|
||||
[ "$GENS_ANTES" -gt "$GENS_DESPUES" ] || { echo "FALLO: prune no borró huérfanas ($GENS_ANTES→$GENS_DESPUES)" >&2; exit 1; }
|
||||
echo " ok: prune $GENS_ANTES→$GENS_DESPUES generación(es)"
|
||||
# el árbol vivo (gen 3 = v1) sigue intacto tras el prune.
|
||||
assert "$ROOT/usr/bin/ls" "LS-v1" "post-prune"
|
||||
|
||||
echo
|
||||
echo "✓✓ E4 upgrade E2E VERDE: apply/rollback atómicos + restauración exacta + idempotencia + diario"
|
||||
echo "✓✓ E4 upgrade E2E VERDE: apply/rollback atómicos + restauración exacta + idempotencia + diario + prune"
|
||||
|
||||
Reference in New Issue
Block a user