Commit 9ce5ed2
[dedup] remove 4 redundant example duplicates; record the rest as open findings
Probe: 16 example pairs where one filename is a strict prefix of another. My
first read called ~13 of them duplicates. That was wrong, and the check that
caught it is the one worth keeping: before deleting anything, ask what each file
is the sole anchor for.
DELETED — 4, cleanly redundant (declare nothing the canonical does not, nothing
anchors them): 2023-04-sentiment-balancer-read-only-reentrancy,
2024-07-li-finance-diamond-facet-exploit, 2024-07-wazirx-230m-exchange-exploit,
2022-02-wormhole-bridge. 659 -> 655.
Three were test_fixtures.positive in a spec — build_specs validates that
fixtures resolve to real examples, so deleting first would have failed the
build. Fixtures repointed to the canonical example, each of which already
carries the required Technique (T9.010, T9.008, T10.007 respectively).
The wormhole file also claimed T10.001 (Validator/Signer Key Compromise) while
its own text reads "primary classification is the signature-verification
bypass" — that is T10.002, which the canonical file correctly carries. No
Guardian key was compromised; the signature was forged through a verification
flaw. A wrong tag, not extra coverage.
NOT DELETED — 7 are technique-lens companions, each the SOLE anchor for
Techniques the canonical lacks: harmony-horizon-economic-incentive-gap holds
T10.007, ankr-abnbc holds T14.003/T14.004, ledger-connect-kit-library holds
T11.006/T4.001, and so on. Deleting them would have silently broken coverage.
One incident legitimately illustrating several Techniques is a defensible
pattern; the open question is that it is currently implicit — Harmony has three
files and nothing marks them as views of one event.
NOT DELETED — 3 pairs are legitimate and not duplication at all:
inverse-finance (two real incidents that April), wintermute vs
wintermute-profanity-cohort ($160M Wintermute vs the ~$3.3M cohort of other
Profanity victims), bybit vs bybit-thorchain-laundering.
Recorded in TAXONOMY-AUDIT as a dated addendum, with two findings that need
adjudication rather than mechanics:
- Companions contradict each other on ATTRIBUTION STRENGTH. Harmony is
inferred-strong in one file and confirmed in two others; Ankr is confirmed
with a named individual in one and pseudonymous in another. Same incident,
same evidence, different label — so the distribution published in STATS.md as
an integrity metric inherits the error.
- Two pairs contradict on the VULNERABILITY CLASS itself. ParaSpace is
reentrancy (T9.005) in one file and cross-contract reinitialization (T9.009)
in the other. Curve/Vyper is T9.005 in one and read-only reentrancy (T9.010)
in the other — and may not even be the same incident, since the second names
Market.xyz. Both need source research; neither touched.
npm run check clean. check_tags exits 0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 8ca526d commit 9ce5ed2
12 files changed
Lines changed: 70 additions & 145 deletions
File tree
- examples
- specs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
253 | 253 | | |
254 | 254 | | |
255 | 255 | | |
256 | | - | |
| 256 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
23 | | - | |
24 | | - | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
46 | | - | |
47 | | - | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
11 | 63 | | |
12 | 64 | | |
13 | 65 | | |
| |||
This file was deleted.
Lines changed: 0 additions & 27 deletions
This file was deleted.
This file was deleted.
0 commit comments