Merge dev → main: recapture body-fetch fix + diagnostics (#842) #104

Merged
bvandeusen merged 2 commits from dev into main 2026-06-14 22:31:41 -04:00
Owner

Two commits fixing/diagnosing the empty-body posts the operator hit on StickySpoodge.

3df191e — full-fetch fallback (the fix). 9 body-only/poll/embed/announcement posts (no downloadable gallery media) had empty bodies in FC despite the body existing + being accessible. Patreon's detail endpoint returns content: null for these post types under the sparse fields[post]=content request. fetch_post_detail_content now re-fetches the full post resource once when the sparse request is empty — recovers the body, and logs post_type when even the full resource is empty. Only empty cases pay the extra GET.

b999480 — diagnostics. Per-post body-capture logging that was previously silent: detail-fetch outcome (fetched N / empty-null), per-post body captured/empty, run-summary post-record + relinked counts, phase-3 relink count.

No migrations. CI green on dev head 3df191e (run 1099).

After merge: re-pull :latest, re-run Recapture on StickySpoodge — the 9 empties should fill.

Two commits fixing/diagnosing the empty-body posts the operator hit on StickySpoodge. **`3df191e` — full-fetch fallback (the fix).** 9 body-only/poll/embed/announcement posts (no downloadable gallery media) had empty bodies in FC despite the body existing + being accessible. Patreon's detail endpoint returns `content: null` for these post types under the sparse `fields[post]=content` request. `fetch_post_detail_content` now re-fetches the full post resource once when the sparse request is empty — recovers the body, and logs `post_type` when even the full resource is empty. Only empty cases pay the extra GET. **`b999480` — diagnostics.** Per-post body-capture logging that was previously silent: detail-fetch outcome (fetched N / empty-null), per-post body captured/empty, run-summary post-record + relinked counts, phase-3 relink count. No migrations. CI green on dev head `3df191e` (run 1099). After merge: re-pull `:latest`, re-run **Recapture** on StickySpoodge — the 9 empties should fill.
bvandeusen added 2 commits 2026-06-14 22:31:33 -04:00
feat(ingest): per-post body-capture + recapture diagnostics logging
CI / lint (push) Successful in 3s
CI / frontend-build (push) Successful in 20s
CI / backend-lint-and-test (push) Successful in 33s
CI / integration (push) Successful in 3m30s
b999480db5
Operator-flagged: a recapture 'caught nothing' for a post and there were no
logs explaining why. Three silent spots now log, so a recapture's per-post
outcome is diagnosable (retention bounds the volume):

- patreon_client.fetch_post_detail_content: the 200-OK-but-null-content branch
  was silent — now logs 'fetched N chars' on success AND 'empty/null content
  (tier-gated or no text)' on the empty case (the most common silent miss).
- patreon_downloader.write_post_record: logs each post's FINAL body outcome
  (captured N chars / NO body) read off the memoized attrs after detail-fetch.
- ingest_core summary: appends post-record + relinked counts to the run summary
  (surfaces on the event stdout the operator already reads).
- download_service phase3: logs how many on-disk images got source_filehash
  relinked (N/total) per recapture.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fix(patreon): full-fetch fallback when sparse fieldset returns null content (#842)
CI / lint (push) Successful in 3s
CI / frontend-build (push) Successful in 25s
CI / backend-lint-and-test (push) Successful in 1m0s
CI / integration (push) Successful in 3m27s
3df191e255
Operator-flagged: 9 StickySpoodge posts had empty bodies in FC despite the body
plainly existing + being accessible (creds refresh didn't help). All 9 are
body-only / poll / embed / announcement posts with no downloadable gallery
media — Patreon's detail endpoint returns content:null for these under the
sparse fields[post]=content request even though the body exists.

fetch_post_detail_content now re-fetches the FULL post resource once when the
sparse request comes back empty: recovers the body when the sparse fieldset was
the cause, and logs post_type when even the full resource is empty (body lives
elsewhere). Only the empty cases pay the extra GET; the 126 already-working
posts keep the fast sparse path.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
bvandeusen merged commit ed1e04b831 into main 2026-06-14 22:31:41 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bvandeusen/FabledCurator#104