feat(cases): pull 25 new cases (463-487) from stats.gart.io; dossiers, sources, trim

- pull_live_cases.py: merges https://stats.gart.io/api/attacks into the export.
  The feed lacks notes/reports/original_date/has_processed_date, so existing
  records keep their fields; changed values are taken from live (record 188:
  victim, violence_torture, weapons, summary) and new records are appended
  with those four fields null. Previous export kept as
  attacks-export-Gart-website-2026-09-09-before.json; raw feed saved as
  attacks-live-api-2026-09-09.json. Export now has 389 records.
- 25 new dossiers built; 93 linked URL slots fetched (77 fetched, 8 blocked,
  4 thin, 4 video/social); 76 blocks auto-trimmed. Wayback retry for the 12
  failed slots hit archive.org rate limits (429) and is left for a later run.
- Sheet row 252 (the Phuket robbery listed in cases-missing-from-database.json)
  approved as the source for new case 476, which is that event.
- Stale dossier for renamed case 188 removed.
- Detention flag check on the new cases: 479 proposed 0->1 (forced entry plus
  assault), 468 null->0 proposed, 483 and 486 confirmed 0; review file and
  corrections JSON updated. Worklist and README carry the procedure.

verify_all.py PASSES (2776 checks, 389 case files).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GZZENdTLzNGsbNy4DyF1yt
This commit is contained in:
StellarCrow
2026-09-09 18:17:12 +02:00
co-authored by Claude Fable 5.1
parent 93cf7ae53a
commit 1387037367
143 changed files with 33765 additions and 920 deletions
+21 -1
View File
@@ -41,7 +41,7 @@ Requirements to run this:
--------------------------------------------------------------------------------
## What this project is
Gart's K&R attack database lists 364 real kidnap/robbery/extortion incidents against
Gart's K&R attack database lists 389 (as of 2026-09-09; 364 in the original bundle) real kidnap/robbery/extortion incidents against
cryptocurrency holders. For each case we merged the structured DB record with any saved news
article, and produce one readable .txt dossier per case. There is no app, no build system, no
tests - just Python scripts that regenerate the .txt files, plus Markdown notes.
@@ -231,6 +231,26 @@ Second pass, same day: Wayback Machine retrieval and automatic trimming.
worklist).
- Case 248: Oslo sources found by web search on 2026-09-05 and filed as extra_1..5 (see the worklist entry). verify_all.py PASSES (2321 checks). Not committed yet; review before pushing.
--------------------------------------------------------------------------------
## 2026-09-09 update: pulling new cases from the live site
The site publishes its cases at https://stats.gart.io/api/attacks (no auth). That feed lacks the
notes, reports, original_date and has_processed_date fields of the original export, so
merge-output/pull_live_cases.py MERGES it into attacks-export-Gart-website.json instead of
replacing it: existing records keep their fields (changed values are taken from live and
listed), new records are appended with the four fields null. The previous export is kept as
attacks-export-Gart-website-<date>-before.json and the raw feed as attacks-live-api-<date>.json.
python pull_live_cases.py (add --dry-run to see the diff only)
python stage_all.py (fetches the new cases' linked URLs)
python wayback_pass.py <new ids>
python auto_trim.py <new ids>
python build_cases.py --all && python verify_all.py
First run: 25 new cases (463-487), one edited record (188). The export now holds 389 records.
Note: build_cases.py writes a new dossier when a victim name changes but does not delete the old
file; remove the stale one or verify_all.py reports one file too many.
--------------------------------------------------------------------------------
## Quick-start checklist for the next AI
1. Read this file and merge-output/sofia-worklist.md.