mirror of
https://github.com/lukaszraczylo/claude-adam.git
synced 2026-07-06 03:37:48 +00:00
fix(v0.6.4): rollback removes the proposal's ab-tracking entry
adam-rollback.mjs's docstring always claimed it "removes the ab-tracking entry (so it doesn't re-trigger)", but executeRollback() never did. Consequence: a rolled-back proposal kept being re-detected as `regressed` on every subsequent /reflect, which triggered endless `not_found` rollback attempts (the applied file is already gone) and noisy ## Regressions sections. executeRollback now deletes the matching ab-tracking.jsonl row by proposal_id after the move, preserving all unrelated rows. Surfaced by running ADAM's own /reflect loop a second time (two zombie regressions: 2026-05-16-002 and 2026-05-22-001). Tests: 138 -> 140 (rollback purges the entry by id; an unrelated entry is preserved).
This commit is contained in:
@@ -2109,6 +2109,45 @@ else
|
||||
fi
|
||||
rm -f "$ROOT/.update-check.json"
|
||||
|
||||
# --- Test 118: rollback removes the proposal's ab-tracking entry (stops re-flagging) ---
|
||||
echo "Test 118: rollback purges ab-tracking entry by proposal_id"
|
||||
reset_state
|
||||
rm -f "$ROOT/proposals/"*rollback* "$ROOT/active-nudges.json"
|
||||
cat > "$ROOT/applied/2026-05-20T00-00-00Z-rb-ab-001.md" <<'EOF'
|
||||
---
|
||||
id: rb-ab-001
|
||||
type: memory
|
||||
target: ~/.claude/projects/-Users-nvm/memory/x.md
|
||||
confidence: 5
|
||||
blast_radius: low
|
||||
status: applied
|
||||
source_entries:
|
||||
- "2026-05-18T10:00:00Z"
|
||||
---
|
||||
# Why
|
||||
test
|
||||
# Rollback
|
||||
```bash
|
||||
rm -f x
|
||||
```
|
||||
EOF
|
||||
cat > "$ROOT/ab-tracking.jsonl" <<'EOF'
|
||||
{"applied_at":1,"proposal_id":"rb-ab-001","proposal_type":"memory","target_skill":"x","proposal_fingerprint":"f1","originating_signals":[{"type":"correction","count":3}],"pre_window_days":7}
|
||||
{"applied_at":2,"proposal_id":"keep-me-002","proposal_type":"memory","target_skill":"y","proposal_fingerprint":"f2","originating_signals":[{"type":"correction","count":3}],"pre_window_days":7}
|
||||
EOF
|
||||
ROLLBACK_RUN --proposal-id rb-ab-001 --home "$TMP_HOME/.claude" >/dev/null 2>&1 || true
|
||||
if grep -q '"proposal_id":"rb-ab-001"' "$ROOT/ab-tracking.jsonl"; then
|
||||
echo " FAIL: rolled-back proposal still in ab-tracking.jsonl"; FAIL=$((FAIL+1))
|
||||
else
|
||||
echo " PASS: rolled-back proposal removed from ab-tracking.jsonl"; PASS=$((PASS+1))
|
||||
fi
|
||||
if grep -q '"proposal_id":"keep-me-002"' "$ROOT/ab-tracking.jsonl"; then
|
||||
echo " PASS: unrelated ab-tracking entry preserved"; PASS=$((PASS+1))
|
||||
else
|
||||
echo " FAIL: rollback clobbered an unrelated ab-tracking entry"; FAIL=$((FAIL+1))
|
||||
fi
|
||||
rm -f "$ROOT/proposals/"*rb-ab-001* "$ROOT/applied/"*rb-ab-001* "$ROOT/ab-tracking.jsonl" "$ROOT/active-nudges.json"
|
||||
|
||||
echo
|
||||
echo "Results: $PASS passed, $FAIL failed"
|
||||
[ "$FAIL" = "0" ]
|
||||
|
||||
Reference in New Issue
Block a user