
Understanding the Limits
Displayed source counts and saved rows can have different units and scope. The composition and cause of any gap are not proved.
The exact input `postUrls` takes 1 to 50 known public threads. The `maxCommentsPerPost` takes 1 to 500 per post, with a default of 100 and a current Task preset of 250. A pilot run uses one intended thread with a small cap of 3. You can review the main actor at Reddit Comments Scraper and the task example at Reddit Thread and Replies Export.
Each row uses exact fields: `commentId`, `parentId`, `postId`, `body`, `status`, `unavailableFields`, and `observedAt`. Row status is strictly `ok`, `deleted`, or `removed`, and does not represent partial or failed input states. Unavailable text and placeholders are preserved as-is and are not analyzable words.
The exact OUTPUT summary includes `commentsSaved`, `duplicatesSkipped`, `hiddenBranchesRemaining`, `completionReason`, `status`, `isComplete`, and `inputResults`. Each item in `inputResults` contains `commentsFound`, `commentsSaved`, `status`, and `reason`. The `isComplete` flag is a boolean processing indicator, not a status or full-thread proof.
In our current pilot, three body-present IDs were capped. The `parentId`, `depth`, and `hiddenBranchesRemaining` fields are unknown or null. Overall and per-input status remain partial despite `isComplete` being true. This provides no live parent tree or full coverage proof. Missing branches are unknown, not zero. You must count checked known comment IDs yourself because there is no native unique-comment counter.
The Eight Audit Actions
- Save each target URL, input cap, collection time, dataset, and output. Diagnose per thread rather than only using the whole run row count.
- Check whether the target resolved as a valid public thread. Failed or access limited inputs are unknown collections, not successful zero counts. Confirm one returned post identity matches your requested URL.
- Check the numeric cap and its reported use or stop state. Reaching the cap explains a collection boundary. A larger capped repeat may expose more rows, but it does not guarantee full scope or remove all source bounds.
- Inspect hidden branches remaining and partial or result states. Unexpanded branches are an explicit gap. Zero hidden branches is only one check; it does not prove all historical or removed text was available.
- Count known comment identities separately from row observations and missing ID rows. Review duplicate keys and conflicts. Keep unresolved identities for accounting; do not invent source IDs.
- Inspect deleted, removed, or unavailable text states without counting placeholders as normal written comments. A known comment position with absent body differs from an uncollected unknown branch. Do not add hidden branch count to visible comment count as if the units match.
- Compare any displayed source count only with its stated unit and observation time. A saved or display ratio is not verified recall unless full population and unit are known. Keep source count unknown when not available.
- Decide if the observed sample is accepted, a bounded repeat is justified, or full scope is unsupported. If required scope exceeds the current public contract, report the gap and choose an appropriate authorized source. Do not keep retrying a blocked source or claim deleted text can be recovered.
Fictional Worked Example and Ledger
All threads, counts, and outcomes in this section are fictional examples. They test classification rules.
| Thread ID | Displayed Count | Saved Rows | Cap Reached | Hidden Branches | Status / Diagnosis |
|---|---|---|---|---|---|
| T1 | 40 | 3 | Yes (cap 3) | 2 | Capped and unexpanded public sample |
| T2 | 8 | 8 | No | 0 | Observed positions, 6 text rows, 2 unavailable |
| T3 | Unknown | Unknown | Unknown | Unknown | Unknown collection, not a zero count |
For thread T1, the displayed count is 40, but the saved rows are 3 because the cap of 3 was reached. There are 2 hidden branches remaining, and the input is partial. It is wrong to say 5 comments were collected by adding 3 rows and 2 branches.
For thread T2, the displayed count is 8 and 8 comment identity rows are saved with 0 hidden branches. The thread finished within the observed scope. Of those 8 rows, 6 have body text, 1 is removed, and 1 is deleted. These are 8 observed positions with 6 available text rows, not 8 usable text comments. Those unknown bodies are present positions, not collection failures.
For thread T3, the thread failed, so the count and rows are unknown in the accepted collection ledger. This is an unknown collection, not a zero comment finding.
The accepted rows for T1 and T2 equal 11. Thread T3 does not contribute a guessed zero. The available text count for T1 is not provided, so do not derive a combined text coverage percentage.
A later fictional T1 repeat with a cap of 10 saves 7 known IDs and 1 hidden branch. Preserve both snapshots. If 3 old IDs are among the 7 new IDs, use the union of 7, not 3 plus 7 equals 10 unique comments. It remains partial with 1 branch. The final ledger lists cap state, branch state, text availability, identity state, and next decision per thread. No reconstruction, recovery, or moderation cause analysis is needed.
Sources & further reading
By Chronometrica · Updated
Back to top ↑
