superpowers-systematic-debugging restated debug's core (hypothesis before fix) across 296 lines, with a fix-implementation phase that belongs to tdd and a rationalization table that mostly repeats debug's own Anti-Patterns. Two things in it were not restatement, and both are now in debug: instrument every component boundary before hypothesising when a bug spans components, and treat three failed fixes as evidence the mechanism was never identified rather than as a reason to try a fourth. Not deleted with it, contrary to the issue: find-polluter.sh and the three technique files (root-cause-tracing, defense-in-depth, condition-based-waiting) are real assets, one of them an actual tool. They move to debug/references/ with a stated load trigger each, because a reference nobody knows when to open is dead weight. The pressure-test transcripts and CREATION-LOG from the upstream fork go; they document obra's process, not ours. Pressure-tested per #19, and the RED phase refuted the issue's premise. Two subagents without the skill got the multi-component scenario and the four-failed- fixes scenario; both already instrumented boundaries unprompted, and the second refused to write a fifth fix on its own initiative. So these sections are not correcting a demonstrated gap in this model — they are insurance for weaker models and for prompts less well-posed than a test scenario. Recorded as such rather than claimed as a fix. The GREEN run applied both sections correctly and then found four defects in them, all fixed here: the boundary rule read as suspending Iron Law 2's 3-5 hypotheses; the trigger said "reduced" when fixes that change nothing are the stronger signal; "stop proposing a fourth" read as licence to return no hypotheses at all; and the references had no load triggers. Its remaining findings are pre-existing and filed as #36. 41 skills. debug 146 -> 188 lines. Closes #14 Bump-Type: minor
64 lines
1.5 KiB
Bash
Executable File
64 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Bisection script to find which test creates unwanted files/state
|
|
# Usage: ./find-polluter.sh <file_or_dir_to_check> <test_pattern>
|
|
# Example: ./find-polluter.sh '.git' 'src/**/*.test.ts'
|
|
|
|
set -e
|
|
|
|
if [ $# -ne 2 ]; then
|
|
echo "Usage: $0 <file_to_check> <test_pattern>"
|
|
echo "Example: $0 '.git' 'src/**/*.test.ts'"
|
|
exit 1
|
|
fi
|
|
|
|
POLLUTION_CHECK="$1"
|
|
TEST_PATTERN="$2"
|
|
|
|
echo "🔍 Searching for test that creates: $POLLUTION_CHECK"
|
|
echo "Test pattern: $TEST_PATTERN"
|
|
echo ""
|
|
|
|
# Get list of test files
|
|
TEST_FILES=$(find . -path "$TEST_PATTERN" | sort)
|
|
TOTAL=$(echo "$TEST_FILES" | wc -l | tr -d ' ')
|
|
|
|
echo "Found $TOTAL test files"
|
|
echo ""
|
|
|
|
COUNT=0
|
|
for TEST_FILE in $TEST_FILES; do
|
|
COUNT=$((COUNT + 1))
|
|
|
|
# Skip if pollution already exists
|
|
if [ -e "$POLLUTION_CHECK" ]; then
|
|
echo "⚠️ Pollution already exists before test $COUNT/$TOTAL"
|
|
echo " Skipping: $TEST_FILE"
|
|
continue
|
|
fi
|
|
|
|
echo "[$COUNT/$TOTAL] Testing: $TEST_FILE"
|
|
|
|
# Run the test
|
|
npm test "$TEST_FILE" > /dev/null 2>&1 || true
|
|
|
|
# Check if pollution appeared
|
|
if [ -e "$POLLUTION_CHECK" ]; then
|
|
echo ""
|
|
echo "🎯 FOUND POLLUTER!"
|
|
echo " Test: $TEST_FILE"
|
|
echo " Created: $POLLUTION_CHECK"
|
|
echo ""
|
|
echo "Pollution details:"
|
|
ls -la "$POLLUTION_CHECK"
|
|
echo ""
|
|
echo "To investigate:"
|
|
echo " npm test $TEST_FILE # Run just this test"
|
|
echo " cat $TEST_FILE # Review test code"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "✅ No polluter found - all tests clean!"
|
|
exit 0
|