fix: stop archived-thread and guild paging when the cursor does not advance - #181
Conversation
…dvance GuildMembers already errors on a stuck cursor. Apply the same guard to UserGuilds and archived thread catalogs. Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
|
🦞👀 Pull request received. I will update this pull request when review starts. |
Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
|
Codex review: needs real behavior proof before merge. Reviewed August 29, 2026, 5:08 AM ET / 09:08 UTC. ClawSweeper reviewWhat this changesThe PR makes Discord guild and archived-thread pagination return an error when a full page repeats its cursor instead of continuing indefinitely. Merge readiness⛔ Blocked until real behavior proof from a real setup is added - 5 items remain Keep open: the cursor guards address a current sync-hang risk, but the archived-thread regression test targets an obsolete client API and the supplied evidence is limited to a stubbed test run. Priority: P2 Review scores
Verification
How this fits togetherDiscrawl's Discord client fetches guild and archived-thread catalogs page by page for sync. Those catalogs feed channel discovery and ultimately determine whether flowchart LR
A[Discord REST pages] --> B[Discrawl Discord client]
B --> C{Cursor advances?}
C -->|yes| D[Guild and thread catalog]
C -->|no| E[Sync returns cursor error]
D --> F[discrawl sync CLI]
E --> F
Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Rebase the guards onto the current archived-thread cursor API, preserve its Do we have a high-confidence way to reproduce the issue? Yes, at source level: a repeated full guild page or Is this the best way to solve the issue? No, not as currently rebased: the cursor guard is the narrow solution, but the archived-thread test must retain current main's Full review comments:
Overall correctness: patch is incorrect AGENTS.md: not found in the target repository. Codex review notes: model internal, reasoning high; reviewed against 4c29bb75ef7f. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (7 earlier review cycles)
|
|
Maintainer triage: LAND recommended using the refreshed, credited implementation on The guard fixes a reproducible repeated-page loop. I ported the archived-thread regression to the current Built-CLI proof used the real Archived-thread failures remain best-effort warnings under the existing catalog policy. |
Merge current main into the contributor branch and apply the validated catalog pagination repair, updated archived-thread regression, sync documentation, and changelog credit. Co-authored-by: Sebastien Tardif <sebtardif@ncf.ca>
|
Maintainer landing verification for The contributor branch now contains the repaired implementation as a new commit, preserving the original commits and adding co-author credit. Its final tree exactly matches the validated The built CLI was linked only to a synthetic loopback Discord REST fixture and exercised the production HTTP client and disposable SQLite stores: Archived-thread errors remain best-effort warnings. These are synthetic HTTP integration results, not evidence of a live Discord incident. |
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: fix: stop archived-thread and guild paging when the cursor does not advance This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
Guild and archived-thread sync can loop indefinitely when Discord repeats a pagination cursor. This stops repeated full guild pages, rejects missing guild cursors, and stops repeated archived-thread pages while preserving the existing best-effort catalog warning policy.
The maintainer update incorporates current main and the validated repair from
triage/181-cursor-guards. The archived-thread regression uses the current cutoff API; sync documentation and the Unreleased changelog describe the behavior. Sebastien Tardif's original commits remain in this branch, with co-author credit on the maintainer repair.Validation uses the built CLI, production Discord HTTP client, and disposable SQLite stores against synthetic loopback REST responses. Repeated guild and archive pages stop after two requests, a missing guild cursor fails after one, and a healthy guild sync succeeds. This is controlled HTTP integration proof; no live Discord incident is claimed. The final-head CI and proof results are recorded in the maintainer landing comment.