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
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
ba7529ea50
commit
499fd61f79
@@ -171,6 +171,29 @@ case 1 - about 186 short cases, roughly 19 more batches. Get the exact remaining
|
||||
python ".../merge-output/survey_summaries.py"
|
||||
and take the ids flagged SHORT / unstructured, descending.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
## 2026-09-05 update: linked URLs fetched for the 252 spreadsheet-only cases
|
||||
|
||||
Until this pass, fetching had only run on cases 357+ and a handful of older ones. The other
|
||||
252 cases held only the text pasted into the spreadsheet, which is often just the lede.
|
||||
stage_all.py now takes --include-sheet-cases, which fetches every linked URL for those cases
|
||||
too. Run from merge-output/ with:
|
||||
python stage_all.py --include-sheet-cases
|
||||
It is resumable: anything already in sourced-articles.json is skipped.
|
||||
|
||||
Result of the run (all 252 cases processed):
|
||||
- 179 cases gained at least one fetched article; 73 got nothing (site blocked the request,
|
||||
link dead, page needs JavaScript, or the link is a video/social post).
|
||||
- 296 URL slots tried: 188 FETCHED, 49 BLOCKED, 18 THIN, 9 DEAD, 4 NOT AN ARTICLE, 3 ERROR.
|
||||
- Every fetched block is filed UNTRIMMED (banner in the dossier) and sits beside the sheet
|
||||
paste, which is kept. Trimming is still to do, same as for cases 357+.
|
||||
- verify_all.py PASSES (1836 checks).
|
||||
|
||||
Next step for the 73 cases with no fetched article: wayback-availability.json lists a
|
||||
Wayback Machine snapshot for 73 of the 98 failed URL slots (about 70 cases). fetch_sources.py
|
||||
has no archive path yet; add one that labels the block as an archived snapshot with its
|
||||
timestamp, so provenance stays honest.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
## Quick-start checklist for the next AI
|
||||
1. Read this file and merge-output/sofia-worklist.md.
|
||||
|
||||
Reference in New Issue
Block a user