porcupine-analyzerlisted
Install: claude install-skill jeremiah-masters/skills
# Porcupine Failure Analyzer
## Quick start
```bash
python3 SKILL_DIR/scripts/analyze_porcupine_failure.py path/to/violation.html
```
The script reads the HTML, finds non-linearizable partitions, and prints a
diagnosis to stdout. The first line of each partition section is a one-line
headline naming the contradicting op, the frontier state, and the most
likely culprit — start there.
## How to read the output
A typical diagnostic loop:
1. **Read the headline.** Each partition section opens with:
`DIAGNOSIS: op#K c<id> <description> contradicts frontier state X; most
likely culprit: op#J c<id> <description> (token T, produces_frontier_state)`
This is your starting hypothesis. If the headline matches the failure
you'd expect, you're often done at this step.
2. **Check the frontier state.** What does the model think was in place at
the failure point? Is that what your test should have produced?
3. **Read the blocked candidate's description.** What did it return? Why
does that contradict the frontier state?
4. **Use value-token provenance** to trace where the unexpected value came
from. An `overlap` hit means a concurrent op produced it; a `before` hit
means an older op wrote it and something should have invalidated it. The
row tagged `(..., produces_frontier_state)` is the writer the model
believed left the cache in its current state.
5. **Open the HTML in a browser** for the visual timeline. The analyzer has
already told you the op# to