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
This commit is contained in:
StellarCrow
2026-09-06 19:36:45 +02:00
co-authored by Claude Fable 5.1
parent 499fd61f79
commit 439e83a4cb
588 changed files with 24800 additions and 13190 deletions
+103
View File
@@ -0,0 +1,103 @@
# Detention flag review (DB field `kidnappings`)
Rule: README-START-HERE.md, section "Definitions". The flag is 1 when the attackers had physical control
of the victim at any point (tied, locked in, held at gunpoint through a forced transfer, taken away, fake
arrest); 0 when control was never gained (snatch, break-in of empty premises, foiled or fought-off attempt).
Nothing here is applied to the DB. Every line quotes the record or an article already in the case file.
**Decision 2026-09-06 (database owner):** every 0-to-1 proposal below is ACCEPTED, 301 included after the rule was
clarified: detention used on anyone (guards, staff, a relative) to force submission or execute the
theft counts as 1, whether or not the record's named victim was present. The 1-to-0 proposals and the two CHECK items are still open. Status per case is in
detention-flag-corrections.json; the accepted set is also listed in corrections-approved.md.
Not reviewed one by one: the 219 records already at 1 in the Kidnapping, Home Invasion, Authority Misuse,
Malicious Invitation and Express Kidnapping scenarios, whose own descriptions show the victim held; only the
flag=1 records in Dodged Attack, Costly Fame, Armed Robbery and P2P were read (all 20 listed below or confirmed).
## Flag 0 or null, propose 1 (the victim was held)
- **case 4** (P2P Trade Gone Wrong, USA, February, 2015) — now `0`, propose **1** [LIKELY]: held at gunpoint while forced to transfer: Bitcoin trader robbed of $12,000 at gunpoint forced him to transfer $8,500 worth of bitcoin.
- **case 19** (Kidnapping, USA, November 4, 2017) — now `0`, propose **1** [LIKELY]: the DB's own scenario is Kidnapping (Meza case, friend lured and held); the record text itself only reads "Man robbed of $1.8M of ETH", so confirm the holding from the article before setting
- **case 25** (Costly Fame, Russia, January 14, 2018) — now `0`, propose **1** [CLEAR]: article (CT): Nyashin was tied and beaten while a group of masked assailants stole a safe containing cash and “essential documents.”
- **case 28** (Armed Robbery in Public Space, Canada, January 23, 2018) — now `0`, propose **1** [CLEAR]: article (The Hacker News): 3 armed men bound employees at Bitcoin office before fleeing empty-handed, Ottawa police say
- **case 29** (Home Invasion, UK, January 27, 2018) — now `0`, propose **1** [LIKELY]: article (Business Insider): Armed robbers broke into the family home of a city financier turned Bitcoin trader and forced him to transfer the digital currency at gunpoint, in what is believed to be the first heist of its kind in the UK.
- **case 41** (P2P Trade Gone Wrong, UAE, April 25, 2018) — now `0`, propose **1** [CLEAR]: article (Arabian Business): Once the brothers reached the office, the gang members assaulted the two and tied their hands, locked them inside the room and escaped with the money.
- **case 43** (Kidnapping, China, June 13, 2018) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: Home invasion of Skycoin architect resulted in theft of 18.88 BTC and 6,466 SKY kidnapped at home **Victim:** "Synth"
- **case 46** (Malicious Invitation - SocialEng, USA, September 7, 2018) — now `0`, propose **1** [LIKELY]: article (NY post): A group of young professional men ransacked their pals luxury apartment after a night of drinking and forced him to cough up his cryptocurrency account login information, the Manhattan District Attorneys Office charges in a new complaint.
- **case 63** (Home Invasion, UK, February 10, 2020) — now `0`, propose **1** [CLEAR]: article (BBC): At Carlisle Crown Court, both men admitted two counts of robbery and two counts of false imprisonment.
- **case 64** (Home Invasion, UK, March 18, 2020) — now `0`, propose **1** [LIKELY]: article (BBC): The High Court in Glasgow heard that three men went into a home in Blantyre in Lanarkshire and forced the homeowner to transfer his Bitcoin, a form of digital cash, to D'Alfonso's account.
- **case 82** (P2P Trade Gone Wrong, Germany, March 16, 2021) — now `0`, propose **1** [LIKELY]: article (Stadt Magazin): At that moment, two other men attacked him, grabbed and restrained him, and tore the phone from his hand.
- **case 139** (Kidnapping, Thailand, September 15, 2022) — now `0`, propose **1** [LIKELY]: the DB's own scenario is Kidnapping; the record says the couple were ambushed at a coffee shop and made to transfer $50K before the gang left, which is control under threat for the duration of the transfer
- **case 143** (P2P Trade Gone Wrong, Netherlands, December 3, 2022) — now `0`, propose **1** [LIKELY]: beaten and forced to transfer under control: hey beat him up, hit him in the head with a firearm, and forced him to transfer around 30,000 euros worth of his cryptocurrency **Victim:** Unidentified man
- **case 147** (Armed Robbery in Public Space, Spain, January 14, 2023) — now `0`, propose **1** [CLEAR]: article: the concierge was gagged and had hands and feet tied with zip ties (Mossos d'Esquadra report)
- **case 152** (Home Invasion, Australia, March 9, 2023) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: Gang kidnaps boyfriend of crypto trader's relative, demands $5M ransom while torturing him for 6 days.
- **case 167** (Malicious Invitation - SocialEng, Montenegro, November 10, 2023) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: Executives lured into fake business trip, kidnapped, forced to empty wallets of $12M USDT.
- **case 169** (Kidnapping, UK, November 30, 2023) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: Victim was kidnapped from a friend's house, had bag placed over head, rescued by police after anonymous tip sent.
- **case 171** (Kidnapping, Romania, January 16, 2024) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: Restaurant owner kidnapped, doused in diesel, force fed alcohol, has finger cut off, until he transferred $200K USD in crypto.
- **case 180** (Kidnapping, Malaysia, July 11, 2024) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: 18 people kidnap 2 victims, hold them for $1.2M ransom, get in shootout with police.
- **case 181** (Malicious Invitation - SocialEng, Thailand, July 12, 2024) — now `0`, propose **1** [CLEAR]: article (NationThai, 2): The suspects lured the victim to a party at a Khlong Tan apartment, then tortured and tied him up, taking his valuables before releasing him.
- **case 182** (Malicious Invitation - SocialEng, India, July 22, 2024) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: Gang of 5 kidnaps trader and robs him at knifepoint of $18,000 in USDT faked interest in stock investment advice, lured into car, took usdt **Victim:** 26 y/o Trading Coach
- **case 183** (Kidnapping, Ukraine, July 28, 2024) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: 4 men kidnap foreigner, rob, & murder him for 3 BTC.
- **case 200** (Kidnapping, Ghana, December 19, 2024) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: Businessman lured to meeting, handcuffed, beaten, electrocuted for 15 hours before being rescued by police.
- **case 209** (Kidnapping, France, January 21, 2025) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: Ledger co-founder & wife kidnapped and ransomed, his finger was severed, rescued by GIGN.
- **case 229** (Malicious Invitation - SocialEng, UK, May 9, 2025) — now `0`, propose **1** [LIKELY]: by his own account he was drugged in a fake Uber and driven around before being put out (My London); detention if the account holds
- **case 253** (Kidnapping, Canada, September 5, 2025) — now `0`, propose **1** [CLEAR]: record: victim forced into a van by 5 men, physically assaulted, threatened with a gun, released after a forced transfer
- **case 301** (Armed Robbery in Public Space, Malaysia, May 20, 2022) — now `0`, propose **1** [CLEAR, ACCEPTED]: article (Vibes): the robbers \"tied up the security personnel on duty\". Detention used on the guards to execute the theft; counts under the clarified rule.
- **case 353** (Armed Robbery in Public Space, Russia, July ?, 2022) — now `0`, propose **1** [CLEAR]: article (Bits.Media): The attackers threatened with weapons, handcuffing the guards.
- **case 380** (Home Invasion, Brazil, November, 2024) — now `0`, propose **1** [CLEAR]: record text itself describes the victim being taken or held: **Violence Used:** Two armed suspects held victim hostage for approximately one hour.
- **case 419** (Dodged Attack, France, March 8, 2026) — now `0`, propose **1** [CLEAR]: record: three armed men posing as police forced her into her apartment building and beat her and her husband inside; control was gained before they fled
## Flag 1, propose 0 (no control was gained)
- **case 124** (Dodged Attack, USA, March 30, 2022) — now `1`, propose **0** [CLEAR]: record: attempted home invasion, victim fired at the attackers, who fled; no control gained
- **case 215** (P2P Trade Gone Wrong, South Korea, February 24, 2025) — now `1`, propose **0** [CHECK]: lured to a hotel room and stabbed to death; no source on file shows he was held before the attack; the bulk summary's "victim kidnapped" is template text
- **case 242** (Costly Fame, France, July 7, 2025) — now `1`, propose **0** [CLEAR]: record and Le Parisien: punched about ten times at home, attackers fled when the husband appeared; no restraint
- **case 273** (Costly Fame, UK, November ?, 2018) — now `1`, propose **0** [CLEAR]: record: stabbed and robbed at home; nothing shows he was held
- **case 298** (Armed Robbery in Public Space, UAE, April ?, 2022) — now `1`, propose **0** [CHECK]: nine robbers entered the office and attacked the owner; no source on file says anyone was restrained
- **case 413** (Dodged Attack, USA, February 20, 2026) — now `1`, propose **0** [CLEAR]: SPD blotter: forced entry, assault, strangling; suspect arrested during the struggle; no control gained
- **case 422** (Dodged Attack, USA, December 17, 2025) — now `1`, propose **0** [CLEAR]: record: hit on the back of the head by the driveway, fell; nothing shows he was held
- **case 423** (Dodged Attack, USA, December 22, 2025) — now `1`, propose **0** [CLEAR]: record: pushed inside and aimed a gun, victim pushed back, suspect fled; no control gained
## Null, propose 0
- **case 354** (Home Invasion, UK, January ?, 2023) — now `None`, propose **0** [CLEAR]: null today; first visit of the Salford series: knock, threat, payment; the later incidents (307, 162, 169) carry the detention
- **case 355** (Home Invasion, UK, January ?, 2023) — now `None`, propose **0** [CLEAR]: null today; second visit, knife threat, payment; no restraint
## Flag 0 confirmed as 0 (attempts without control) — no change
- **case 30** (Dodged Attack): four men found with zip ties and duct tape; no attack took place
- **case 67** (Dodged Attack): conspiracy uncovered by the FBI; no source shows the two gained control of him
- **case 72** (Dodged Attack): arrested before the kidnapping
- **case 106** (Authority Misuse): harassment campaign; the gunpoint episode in the article concerns a different person (R.C.)
- **case 184** (Dodged Attack): fought the attackers off
- **case 230** (Dodged Attack): attempt to force her into a van, fought off by her partner and bystanders
- **case 233** (Dodged Attack): plot foiled before contact
- **case 235** (Dodged Attack): plot foiled, ten arrested in balaclavas
- **case 256** (Dodged Attack): intruders caught climbing the fence
- **case 318** (Dodged Attack): surveillance phase only
- **case 374** (Dodged Attack): attempt interrupted by police, victim escaped
- **case 416** (Dodged Attack): forced entry failed, no contact
- **case 417** (Dodged Attack): alarm scared the attackers off
- **case 421** (Dodged Attack): arrested in the courtyard before reaching the victims; the court rejected séquestration for that reason
- **case 426** (Dodged Attack): equipment seized, attackers went to the wrong address
- **case 433** (Dodged Attack): bear spray, no contact
- **case 445** (Dodged Attack): no entry, no abduction
- **case 446** (Dodged Attack): intercepted by gendarmerie before the second attempt
- **case 447** (Dodged Attack): grabbed and dragged toward the car for seconds, freed by neighbours: attempted detention, control not established (judgment call, see rule)
## Flag 1 confirmed as 1 in non-captive scenarios — no change
- **case 53** (P2P Trade Gone Wrong): abducted and tortured
- **case 68** (P2P Trade Gone Wrong): held at gunpoint and forced to transfer at the meeting point
- **case 137** (P2P Trade Gone Wrong): held at gunpoint, tied up
- **case 144** (Armed Robbery in Public Space): kidnapped and robbed
- **case 194** (P2P Trade Gone Wrong): robbed in a hotel room and forced to transfer
- **case 201** (Costly Fame): wife kidnapped by three men
- **case 237** (Costly Fame): forced into a stolen vehicle
- **case 246** (P2P Trade Gone Wrong): handcuffed and blindfolded
- **case 379** (Costly Fame): tied to a chair
- **case 424** (Dodged Attack): bound with zip ties and duct tape (Dodged Attack scenario, detention nonetheless)
- **case 425** (P2P Trade Gone Wrong): subdued with a revolver and forced to transfer
- **case 456** (Costly Fame): forced from his car at gunpoint and driven off
- **case 271** (Home Invasion): LIKELY 1 — the two forced their way in, pistol-whipped one occupant, used a cattle prod on another and chased the renter into a bathroom; no source says anyone was tied, but the occupants were under the attackers' control inside the home (was on the old worklist as "no abduction"; under the detention rule it stays 1)
- **case 293** (Home Invasion): family held at gunpoint (same)