Commit Graph
7 Commits
Author SHA1 Message Date
StellarCrowandClaude Fable 5.1 1387037367 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
2026-09-09 18:17:12 +02:00
StellarCrowandClaude Fable 5.1 93cf7ae53a docs(detention): case 67 confirmed foiled, stays 0; description correction on worklist
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GZZENdTLzNGsbNy4DyF1yt
2026-09-07 16:41:18 +02:00
StellarCrowandClaude Fable 5.1 5c721e4038 docs(detention): record owner rulings on 184 and 299 (stay 0)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GZZENdTLzNGsbNy4DyF1yt
2026-09-07 13:42:12 +02:00
StellarCrowandClaude Fable 5.1 e36ceae8d6 docs(definitions): install the paper's Appendix B glossary as the canonical definitions
merge-output/DEFINITIONS.md holds the research paper's (v5 FINAL, February 2026)
Appendix B verbatim: eleven scenario definitions and six violence categories,
plus a mapping from DB labels to glossary names and the owner's clarifications
on the Detention flag from 2026-09-06/07. The README's own paraphrase is
replaced by a pointer so there is one source of truth.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GZZENdTLzNGsbNy4DyF1yt
2026-09-07 06:04:36 +02:00
StellarCrowandClaude Fable 5.1 de707f8751 docs(detention): forced-entry rule; close the ten open flag items
Owner's decisions of 2026-09-07 applied:
- Rule sharpened in README "Definitions": forced entry into the victim's
  space (home, office, hotel room, car) followed by beating or holding them
  there to take what is wanted is detention, however short.
- 354, 355 (null) and 124 set to 0. 242, 273, 413, 422, 423, 215, 298 stay 1;
  the set-to-0 proposals for them are withdrawn under the rule.
- corrections-approved.md, detention-flag-review.md and the corrections JSON
  carry the decisions; the worklist item says no open items remain.
- Summaries 242 and 273 relabelled "Detention" with the forced-entry wording.

verify_all.py PASSES.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GZZENdTLzNGsbNy4DyF1yt
2026-09-07 06:00:54 +02:00
StellarCrowandClaude Fable 5.1 439e83a4cb feat(sources): Wayback pass, automatic trimming, detention rule, ten cases re-sourced
Second and third rounds on the dossier pipeline, reviewed locally before commit.

Retrieval
- wayback_pass.py: retries every BLOCKED/DEAD/THIN/ERROR linked source through
  the Wayback Machine; blocks carry the snapshot date, archive URL and the live
  verdict. 143 slots retried: 93 fetched, 37 no snapshot, 12 script shells, 1 PDF.
- fetch_sources.py: fetch_wayback() helper.
- add_extra_sources.py: files staged extra_* finds (web search, not on the DB
  record) into the store with a provenance note.
- Cases re-sourced by web search: 248 (Oslo: Document.no, Avisa Oslo, NRK; the
  linked Le Parisien piece is case 242 and is marked OFF-CASE), 258 Kharkiv,
  260 Singapore, 358 Bangkok, 365 Las Vegas, 388 Verneuil-sur-Seine, 390 Zoersel,
  430 Homestead. 341 of 364 cases now hold a fetched article; 11, 66 and 399
  have no public text source (podcast, police video, direct victim report).

Trimming
- auto_trim.py: case-anchored furniture cut for UNTRIMMED blocks. Finds the body
  run that mentions the case, merges across subheadings and short furniture
  gaps, drops teasers, share bars, date/URL/caption lines and subscription
  pitches; refuses pages with no record term or almost no body. 302 blocks
  trimmed; 16 left on auto-trim-review.md (7 OFF-CASE suspects). Every cut is
  labelled AUTO-TRIMMED, UNREVIEWED in the dossier; the full extract stays in
  staging/. Decisions with anchors in trim-decisions-auto.json.
- build_cases.py / verify_all.py: banners for auto-trimmed and archived blocks,
  staged-file check extended to Wayback blocks, flag legend under the record.

Detention rule
- README "Definitions": the DB field `kidnappings` is the DETENTION violence
  type (victim, guard, staff or relative held to force submission or execute
  the theft), distinct from the Kidnapping scenario (taken away and held).
- detention-flag-review.md / detention-flag-corrections.json: 40 records
  reviewed with evidence; 30 set-to-1 proposals accepted by the owner on
  2026-09-06 (listed in corrections-approved.md), 10 still open.
- apply_detention_wording.py: "Violence Used" in the 70 reviewed summaries now
  names detention explicitly (62 of 70 labelled), supported by the summary's
  own text; idempotent; supersedes the batch scripts' wording.

Worklist and docs
- sofia-worklist.md: 248 decisions, detention rule item replacing the old
  "no abduction" item, fresh-search section for the textless cases.
- README-START-HERE.md: progress notes, run commands, next steps.
- Bug fixed in passing: Wayback blocks stored in-memory text with carriage
  returns; now stored as read back from disk.

verify_all.py PASSES (2321 checks).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GZZENdTLzNGsbNy4DyF1yt
2026-09-06 19:36:45 +02:00
StellarCrowandClaude Fable 5.1 499fd61f79 feat(sources): fetch linked URLs for the 252 spreadsheet-only cases
Until now only cases 357+ (plus a few older ones) had their linked URLs
fetched; the other 252 dossiers held just the text pasted into the
spreadsheet, often only the lede. This pass fetches every linked URL for
those cases so the full text is on file before link rot takes it.

- stage_all.py: new --include-sheet-cases flag that lifts the skip on
  cases holding spreadsheet articles. Resumable as before.
- staging/: raw extracts and index.json for the 252 cases.
- sourced-articles.json, case-files-manifest.json: 188 new UNTRIMMED
  blocks. 179 cases gained at least one fetched article; 73 got none
  (49 BLOCKED, 18 THIN, 9 DEAD, 4 video/social, 3 ERROR).
- sources/*.txt: rebuilt with build_cases.py --all. Sheet pastes are
  kept; fetched blocks sit beside them under the NOT YET TRIMMED banner.
  Files previously committed with CRLF are now LF.
- wayback-availability.json: Wayback snapshots exist for 73 of the 98
  failed URL slots; input for an archive-fetch pass.
- README-START-HERE.md: progress note and next step.

verify_all.py PASSES (1836 checks).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GZZENdTLzNGsbNy4DyF1yt
2026-09-05 15:02:39 +02:00