Repository navigation
qa(checklist): records-forms.record-discussion-mentions — @mention recipients gated on read access (the clause #24802 deferred) - #24869
Merged
Conversation
…n recipients on read access The clause deferred until the fix for unreadable-record mention notifications merged: a mentioned user is notified only when they can read the comment's record, by id or email alike, and the author never. automated.ref names the recipient-gate pin and the engine layer it drives; the cross-organization leg needs a walled boot. Claude-Session: https://claude.ai/code/session_01MRkuLGosywLTY6EMcP6fGK Co-authored-by: Claude <noreply@anthropic.com>
The stock boot's sign-up is closed (invite_only), so the step mints the member through admin/create-user; the verify names the inbox row shape and the withheld-recipient log line as measured at 81120ca. Claude-Session: https://claude.ai/code/session_01MRkuLGosywLTY6EMcP6fGK Co-authored-by: Claude <noreply@anthropic.com>
Contributor
Author
席位核对 — ACCEPT (#24864, head
|
This was referenced Oct 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #24864
Clause-②: no — the internal QA ledger and its runner protocol; nothing published
Summary
records-forms.record-discussion-mentionsgoes to revision 5 with the clause #24802 deferred. Under RUNNER rule 2 it had to wait until #24785's fix merged. That fix, #24794, merged ase5b3de06a6.singleleg: a same-organization member whom the record's own sharing excludes. It uses an owner-onlyshowcase_private_noteagainst ashowcase_accountthe member can read. On a walled boot it repeats the note-shaped leg across organizations.packages/plugins/plugin-audit/src/mention-recipient-gate.integration.test.tsand, per RUNNER rule 6, the layer it drives. That layer is the engine: a real kernel, ObjectQL engine and SQLite driver, with plugin-security's read layer played by a middleware and messaging by anemit()recorder. The pin therefore scores the clausepartialat most and names HTTP and the real plugin-security as missing.QA-source: #24783 · records-forms.record-discussion-mentions · acceptance[4]and the gate file.The clause describes the mechanism only; no step-by-step cross-organization reproduction is written anywhere. acceptance[4] is unchanged: it scores whose bell gains a row, while this clause scores which of the mentioned users may.
Verification
Stock showcase at
81120caac8(this branch's base, withe5b3de06a6on it). Build:pnpm build --concurrency=2, 76/76. Boot:objectstack dev --seed-admin,Tenancy: single, fresh DB. The server was stopped by process group afterwards.SELF_REGISTRATION_CLOSED(audience postureinvite_only). The member was minted withPOST /api/v1/auth/admin/create-userand landed in the default organization. It changed its password and signed in again. Its session'sactiveOrganizationIdis the default organization.GET /api/v1/data/showcase_private_note/ID→ 404;GET /api/v1/data/showcase_account/ID→ 200.sys_commentcreates → 201 each: on the note mentioning the member by id; on the note by email; on the account mentioning the member by id and the admin itself.GET /api/v1/notifications): exactly onecollab.mention, for the account comment, withactionUrl/showcase_account/IDandunreadCount1. None for either note comment.collab.mentionat all. Its three rows are seededapproval.requested.[audit] mention notification withheld {"reason":"cannot_read_source","userId":…,"commentId":…}, one per note comment. The email mention resolved to the member's id. The author is dropped without a line.The
singleleg is green on current main, as expected after #24794. The cross-organization leg was not run: it needs a walled boot (knownGaps[2]).Gates
On head
45f8e20b:node scripts/check-platform-checklist.mjs→ exit 0. Output:check-platform-checklist: OK — 16 areas, 328 items (323 active, 1 planned).node scripts/pm/dispatch-gates.mjs --commandsderived 13 commands, each run and each exit 0:node scripts/check-ci-filter-parity.mjs0node scripts/check-closing-keyword-parity.mjs0node scripts/check-closing-keyword-parity.mjs --self-test0node scripts/check-comment-mask-corpus.mjs0pnpm --filter @objectstack/lint run check:doc-formula-expressions0pnpm check:cross-package-test-inputs0pnpm check:doc-authoring0pnpm check:driver-memory-census0pnpm check:gitlink-declared0pnpm check:nul-bytes0pnpm check:platform-checklist0pnpm check:refd-timer-probe0pnpm check:watch-hint-literal0node scripts/pm/dispatch-gates.mjs --ran→ exit 0: 13 derived, 13 run, 0 NOT-MEASURED.Acceptance notes
SELF_REGISTRATION_CLOSED,invite_only), so the new step mints the member throughadmin/create-userinstead. knownGaps[0]'s own wording is the wave anchor's to correct, and is not touched here. It is noted for qa(checklist): 18.0 release sweep anchor at 5b14b7f3 — re-point 5 red-row clauses + the wave's checklist-accuracy findings, fixture gaps and not-run handover (18 records) #24579.type(collab.mention), underdata.notifications[]. The verify text names that shape.Generated by Claude Code