Surfaces how each post was handled ON THE EVENT in the UI — no worker-log hunting.
The feed already requests post_type, so ingest_core records {post_id, title, post_type, body_chars} per post with zero extra fetching, threaded through DownloadResult → DownloadEvent.metadata_['post_diagnostics']. The download detail modal gains a Post capture section: totals, an empty-body table (post_type + chars, flagged), an all-posts table, and it's in Copy-all.
This exposes the post_type of the StickySpoodge empty-body posts so the next fetch fix is exact. No migrations. CI green on dev head bcc7266 (run 1106).
After merge: re-pull :latest, re-run Recapture on StickySpoodge, open the event → Post capture → read the 9 empties' post_type.
Surfaces how each post was handled ON THE EVENT in the UI — no worker-log hunting.
The feed already requests `post_type`, so `ingest_core` records `{post_id, title, post_type, body_chars}` per post with zero extra fetching, threaded through `DownloadResult` → `DownloadEvent.metadata_['post_diagnostics']`. The download detail modal gains a **Post capture** section: totals, an empty-body table (post_type + chars, flagged), an all-posts table, and it's in Copy-all.
This exposes the `post_type` of the StickySpoodge empty-body posts so the next fetch fix is exact. No migrations. CI green on dev head `bcc7266` (run 1106).
After merge: re-pull `:latest`, re-run Recapture on StickySpoodge, open the event → Post capture → read the 9 empties' post_type.
Operator can't (and shouldn't have to) hunt worker logs to see why a recapture
left a post body empty. Surface per-post handling ON THE EVENT, in the UI.
The feed already requests post_type (in _FIELDS_POST), so ingest_core builds a
per-post diagnostic {post_id, title, post_type, body_chars} with zero extra
fetching — a 0-char body next to its post_type explains an empty post at a
glance (e.g. polls/embeds whose body the API never returns).
- ingest_core: accumulate post_diagnostics; thread via DownloadResult
- download_service: write to DownloadEvent.metadata_['post_diagnostics']
- DownloadDetailModal: 'Post capture' section — totals + empty-body table
(post_type + chars, flagged) + all-posts table; included in Copy-all
- tests: ingester diag (post_type + body_chars), download_service metadata
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Surfaces how each post was handled ON THE EVENT in the UI — no worker-log hunting.
The feed already requests
post_type, soingest_corerecords{post_id, title, post_type, body_chars}per post with zero extra fetching, threaded throughDownloadResult→DownloadEvent.metadata_['post_diagnostics']. The download detail modal gains a Post capture section: totals, an empty-body table (post_type + chars, flagged), an all-posts table, and it's in Copy-all.This exposes the
post_typeof the StickySpoodge empty-body posts so the next fetch fix is exact. No migrations. CI green on dev headbcc7266(run 1106).After merge: re-pull
:latest, re-run Recapture on StickySpoodge, open the event → Post capture → read the 9 empties' post_type.Operator can't (and shouldn't have to) hunt worker logs to see why a recapture left a post body empty. Surface per-post handling ON THE EVENT, in the UI. The feed already requests post_type (in _FIELDS_POST), so ingest_core builds a per-post diagnostic {post_id, title, post_type, body_chars} with zero extra fetching — a 0-char body next to its post_type explains an empty post at a glance (e.g. polls/embeds whose body the API never returns). - ingest_core: accumulate post_diagnostics; thread via DownloadResult - download_service: write to DownloadEvent.metadata_['post_diagnostics'] - DownloadDetailModal: 'Post capture' section — totals + empty-body table (post_type + chars, flagged) + all-posts table; included in Copy-all - tests: ingester diag (post_type + body_chars), download_service metadata Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>