Repository navigation
Seat an invite-link claim the host poll could no longer read - #1162
Conversation
A joiner who claims /r/@handle/ticket stays on "Asked to join…" because the host previews every open link on each inbox poll and exhausts Bot Social's invite-preview budget, so seatOpenClaims never sees the claim. A join that does get built can also exceed the 4000-character text limit or stay pending while being recorded as sent. Fixes #1161 Co-authored-by: Danyang Chen <birfychen@gmail.com>
Prod logged "Too many attempts. Try again in 10 minutes." on every inbox poll, so the cool-down never elapsed and the ticket was never read. Pause quiet claim reads for the minutes that sentence names. Keep every seating share inside Bot Social's 1-4000 character text. Fixes #1161 Co-authored-by: Danyang Chen <birfychen@gmail.com>
|
Verdict: PASS at 2801302 Ran:
Not run:
No actionable findings at 2801302. The quiet poll stops the hammer; Seat them still force-reads; join text stays in 1–4000; pending_approval seating is hold and not marked told. Defect tests fail on origin/main. Tier T3. Not merge authority by itself — enqueue follows enqueue-guard. |
|
Verdict: PASS at 2801302 Ran:
Not run:
No actionable findings at 2801302. Quiet poll stops the hammer; Seat them still force-reads; join text stays in 1–4000; pending_approval seating is hold and not marked told. Defect tests fail on origin/main. Tier T3. Author-login PASS attested for tip (Attestation line). |
|
Correction from Reviewer: This corrects the duplicate, it does not revoke anything: #1162 merged at
Bookkeeping: |
Written-by: Dev
Owner: Dev
Reviewer: Reviewer
Fixes #1161
What changed
Joining
https://social.botawaken.com/r/@chief.flybot682b8a43.home/AwWkxg8zt7fPMgLSt3Wj1w(room FlyBot 交付组) claims the ticket and then stays onAsked to join "FlyBot 交付组". It opens in your sidebar as soon as their FlyBot seats your Bots.The host is prodc0a3369(#1082 already seats from the claim). The live ticket was not previewed, claimed, or revoked here.Host logs on prod u-682b8a (last 60 minutes) are the failure:
[ds-bot] a room link claim was not read: Too many attempts. Try again in 10 minutes.Stack:face-rooms.jspreview/callHttp→seatOpenClaims→@flybot/socialpollOnce. Retries ran 10–85/min, so the 10-minute cool-down never cleared. TicketAwWkxg8zt7fPMgLSt3Wj1whas 0 successful claim reads.room share not sent to @chief.flybot98b8ecba.home: Bot Social send_as_member: payload.text (1-4000 chars) requiredviasendTicketShare←sendShareTo.A quiet poll now reads one open
/r/@handle/ticketlink about once a minute. When the preview saysToo many attempts(or answersrate_limited/locked_out), it waits out the minutes that sentence names, orRetry-After, at least one minute and at most 10 minutes, and it does not preview the next link in that call. Seat them and a read of one room still verify at once. A network error is tried again on the next tick.Every room-share text is kept inside 1–4000 characters before
send_as_member: a join drops instruction-override lines and then oldest history, notice, and roster; a line's own text is shortened;sendShareToandsendTicketSharerefuse a text outside that range instead of calling Bot Social. A seating send that is stillpending_approvalis not marked told.Who may be seated is unchanged: the server's claim list is still required, an unsharable room stays
not-addable, and the knock is not authority.Bot Social still counts an authenticated minter's re-read of their own ticket on the anonymous preview budget (
previewLocalRoomInvite→faceIpRateLimitat7a07e1b; #69/#70 kept mints off that budget and left previews on it). A minter exemption on Birfy/bot-social would stop a long-open host from spending the budget in the first place. This change is what lets the cool-down expire and the join leave. No Bot Social change is in this pull request.Verification at the tip
Tip SHA: 2801302
Ran:
TZ=UTC npm run verify(exit 0, Node v22.23.4). Onorigin/maincb346c2, before the fix, the new core tests failed: 30 previews in one burst (the poll must do 1), a join of 4811 characters that still containedignore previous instructions, and a pending join recorded asnot-deliveredrather thanheld. The social test expectedpending_approvaland the send was reported delivered. This tip adds the logged sentence with no error code: 90 polls across 9 minutes call preview once, a poll one millisecond before 10 minutes does not call it again, and the poll at 10 minutes seats the claim and opens the sidebar. A line of 8000 characters and a join with 20 full history lines encode to 1–4000 characters and still parse. A seating send longer than 4000 characters is refused beforesend_as_member.Not run: the smoke bench (
core/dev/bench.sh). The harness checkout beside this tree does not resolve@deepseek-ai/dsh-llm;npm run verifyis the suite CI'stests-okruns.