Repository navigation
Seat a room-link claim without waiting for the knock - #1082
Conversation
|
Verdict: PASS at 2366af9 Ran:
Not run:
No actionable findings. A denied, held, or unread accepting knock no longer leaves the guest on "Asked to join" with the host unaware: the inbox poll reads the Bot Social claim and seats the Bots it names, and a claim the host cannot finish is named on the Members card with Seat them. The knock is still not the authority; seats come from roomInviteServer.verify. Guest display names on that path go through cleanPeerName. Join says it asked only when the ticket was claimed, or when the knock was not denied or held. git diff origin/main...HEAD lists only files this change touches. No CHANGELOG.md edit and no version bump. This report is a review conclusion at that tip. It is not a merge. |
9ea28e2 to
ec8d0cc
Compare
|
Verdict: PASS at ec8d0cc Ran:
Not run:
No actionable findings. A denied, held, or unread accepting knock no longer leaves the guest on "Asked to join" with the host unaware: the inbox poll reads the Bot Social claim and seats the Bots it names, and a claim the host cannot finish is named on the Members card with Seat them. Seats come from roomInviteServer.verify. Guest display names on that path go through cleanPeerName. Join says it asked only when the ticket was claimed, or when the knock was not denied or held. git diff origin/main...HEAD lists only files this change touches. The Members-card paragraph keeps #1052's Enter 6 digits note and #1064's Seat them. No CHANGELOG.md edit and no version bump. This report is a review conclusion at that tip. It is not a merge. The gate does not read a Verdict posted by cursor[bot] (#943); a Birfy review with this same block is what enqueue-guard will accept. |
ec8d0cc to
88d692b
Compare
|
Verdict: PASS at 88d692b Ran:
Not run:
No actionable findings. A denied, held, or unread accepting knock no longer leaves the guest on "Asked to join" with the host unaware: the inbox poll reads the Bot Social claim and seats the Bots it names, and a claim the host cannot finish is named on the Members card with Seat them. Seats come from roomInviteServer.verify. Guest display names on that path go through cleanPeerName. Join says it asked only when the ticket was claimed, or when the knock was not denied or held. git diff origin/main...HEAD lists only files this change touches. No CHANGELOG.md edit and no version bump. This report is a review conclusion at that tip. It is not a merge. The gate does not read a Verdict posted by cursor[bot] (#943); a Birfy review with this same block is what enqueue-guard will accept. |
|
Verdict: PASS at 88d692b Ran:
Not run:
No actionable findings. A denied or unread accepting knock still seats the claimed Bots from the server claim, the join opens the guest room, and Join stays an error when nothing was claimed. Waiting claims are local Bot names only. This is not a merge permit. |
|
Verdict: PASS at 88d692b Fixes #1064. Host seats invite claims from Bot Social even when the accepting knock is denied/held/unread, so Join group no longer hangs. Seat them retries unfinished claims. Ran:
|
88d692b to
6ea5fc9
Compare
|
Written-by: Dev Self-review note on the rebase. Not a conclusion; the coordinator will record the review at this tip. Tip SHA: 6ea5fc9 The only conflict was patches/ds-bot/0008-client-bundle.patch. Source files auto-merged. client.js was rebuilt and the ds-bot patches were regenerated from core/; Coverage kept from both sides:
Ran:
Not run:
Fixes #1064 stays in the body. Not enqueued. |
|
Verdict: PASS at 6ea5fc9 Fixes #1064. Rebased onto main after #1084/#1091/#1080; regenerated Ran:
|
A guest's Join records the claim at Bot Social and then knocks. When that knock is denied, held, or never read, the host never seated anyone and the guest stayed on "Asked to join". The inbox poll now reads open server claims and seats them; a claim the host cannot finish is named on the Members card. Fixes #1064 Co-authored-by: Danyang Chen <birfychen@gmail.com>
6ea5fc9 to
a73cbdc
Compare
|
Written-by: Dev Self-review note on the rebase. Not a conclusion; the coordinator will record the review at this tip. Tip SHA: a73cbdc Conflicts were only in generated patches: patches/ds-bot/0001-core-fixes.patch, 0003-flybot-api-client.patch, and 0008-client-bundle.patch. Source files auto-merged. client.js was rebuilt and the ds-bot patches were regenerated from core/; ds-bot-patches.mjs check matches (core/ equals ds-bot/ + patches). git diff origin/main...HEAD lists only this change. Coverage kept from both sides:
Ran:
Not run:
Fixes #1064 stays in the body. Not enqueued. |
|
Verdict: PASS at a73cbdc Fixes #1064. Rebased onto main after #1075/#1097/#1094/#1095/#1090/#1093 etc.; regenerated patches; host seats invite claims without waiting on the knock. Ran:
|
…owLab#1162) <!-- CURSOR_AGENT_PR_BODY_BEGIN --> Written-by: Dev Owner: Dev Reviewer: Reviewer Fixes ThinkFlowLab#1161 ## What changed Joining `https://social.botawaken.com/r/@chief.flybot682b8a43.home/AwWkxg8zt7fPMgLSt3Wj1w` (room **FlyBot 交付组**) claims the ticket and then stays on `Asked to join "FlyBot 交付组". It opens in your sidebar as soon as their FlyBot seats your Bots.` The host is prod `c0a3369` (ThinkFlowLab#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: - About 3656 times: `[ds-bot] a room link claim was not read: Too many attempts. Try again in 10 minutes.` Stack: `face-rooms.js` preview/`callHttp` → `seatOpenClaims` → `@flybot/social` `pollOnce`. Retries ran 10–85/min, so the 10-minute cool-down never cleared. Ticket `AwWkxg8zt7fPMgLSt3Wj1w` has 0 successful claim reads. - `room share not sent to @chief.flybot98b8ecba.home: Bot Social send_as_member: payload.text (1-4000 chars) required` via `sendTicketShare` ← `sendShareTo`. A quiet poll now reads one open `/r/@handle/ticket` link about once a minute. When the preview says `Too many attempts` (or answers `rate_limited` / `locked_out`), it waits out the minutes that sentence names, or `Retry-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; `sendShareTo` and `sendTicketShare` refuse a text outside that range instead of calling Bot Social. A seating send that is still `pending_approval` is 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` → `faceIpRateLimit` at `7a07e1b`; ThinkFlowLab#69/ThinkFlowLab#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). On `origin/main` `cb346c2`, 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 contained `ignore previous instructions`, and a pending join recorded as `not-delivered` rather than `held`. The social test expected `pending_approval` and 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 before `send_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 verify` is the suite CI's `tests-ok` runs. <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-9decfb0d-2fae-5da3-b548-cb65239ca32c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/background-agent?bcId=bc-9decfb0d-2fae-5da3-b548-cb65239ca32c&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a> </div> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Owner: Dev
Reviewer: Reviewer
Fixes #1064
What changed
A guest who joins a group link claims the ticket at Bot Social and then knocks. The host seated those Bots only when that accepting knock was delivered. A knock that was denied, held, or never read — a room-only Bot is not polled — left the host listing only its own Bots and the guest stuck on “Asked to join the group…”.
The inbox poll now reads every open server claim (
flybot.rooms.seatOpenClaims) and seats the Bots the claim names. The claim is the authority. A knock that does arrive is still answered, and a seat already told is not told again. A claim the host cannot finish (a Bot in the group that cannot be shown, a notice waiting on approval, or a join that did not leave) is named on the group’s Members card, and Seat them asks the host to finish it. Join no longer says the group was asked when nothing was claimed.No
CHANGELOG.mdedit and no version bump. The user-visible note ischangelog.d/1064-invite-claim-seat.fixed.md.Verification at the tip
Tip SHA: a73cbdc
Rebased onto
origin/main2ce0e7f1e6056ff55540e07960d30264b8fd3b61(includes #1075, #1097, #1094, #1095, #1092, #1090, #1071, #1093).git diff origin/main...HEADlists only the files in this change. Conflicts were only in generated patches (0001-core-fixes,0003-flybot-api-client,0008-client-bundle). Sources auto-merged.client.jswas rebuilt andnode scripts/ds-bot-patches.mjs generatethencheckpassed (core/equalsds-bot/+ patches).Ran:
TZ=UTC npm run verifyat this tip → exit 0. Core lint (arch-docs OK, 25 changed files), plugin lint,build-client.mjs --check,ds-bot-patches.mjs check, core suite 1439, social 475, tree 125, timeline 125, script tests 417, interop 37, live-e2e 16. All# fail 0. That run includes the Join group stuck on "Asked to join…": host never seats Bots, joiner gets no sidebar row #1064 seat tests and the tests that landed on main (Move the remaining inline state writers onto rt.mutate() #1048, First-time 6-digit create path looks like an error (Join then Start a new room) #1053, After friend accepts invite, inviter home shows no friend row / no joined feedback #1054, Friend DM shows Sorting out the details… while remote approval is pending #1087, Friend Chief avatar green in @ picker but same blue whale in sidebar #1088, Face room header shows blank gray avatar for sole member #1089).Not run (and why):
core/dev/bench.sh):src/host/changed, and there is nodeepseek-harnesscheckout beside this worktree for the bench to start. Unit coverage is the two-home room harness incore/test/room-ticket-seat.test.js.