fix(permissions): serialize same-entry mutations - #3335
Chris0Jeky wants to merge 10 commits into
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c1fcc1e4dc
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Parent reconciliation required before any further qualification. PR #3330 now ends at Keep this child draft and treat its current non-mergeable state and prior CI as superseded. After #3330's exact final head is green/reviewed, rebuild this child on |
|
Handoff: this child is fully saved at |
5b16566 to
112585b
Compare
Closes #3333.
Stack
Stacked on PR #3330 (
audit/3328-permission-read-ownership). The current merge base is the corrected parent head59debd4cbc0b32cc276e169e410207d06af29159; compare confirms the child is ahead with only its four mutation-ordering files.Summary
Serializes update/revoke work per
{boardId, accessId}while preserving independent-entry concurrency:This preserves one client’s submission order only. It does not solve cross-device concurrency; the backend exposes no revision precondition.
Test-first and review evidence
c43a5ace7f403f773153cf91a7d62e312aab1b9c40cfd0b9fa485166ff55a5d1c7650a35195ebb85c1fcc1e4dce6aa0147c3021774676c583c31e0e601af1833e8a71604c45fd977759d3233bbbe9753664cdceb9e4392abb9c0989ae42d54a69fea0844The original negative control produced four expected failures while the different-access concurrency control passed; all five ordering schedules passed after serialization.
Codex review found that a queued row-1 operation could erase a row-2 failure when transport began. The new deferred Pinia case makes row 2 fail while row 1's successor waits, then asserts row 2's receipt survives both queued start and success. Error receipts now carry the operation token that produced them, and a queued operation can retire only its predecessor's token.
Prior qualification
Initial head
c1fcc1e4dce6aa0147c3021774676c583c31e0e6passed Self-Test35599606698, Extended35599606903, and Required CI35599607010. Those runs predate the review correction and corrected parent.Exact-head CI and repeat independent review are required at
664cdceb9e4392abb9c0989ae42d54a69fea0844. Keep draft and stacked until inspected. After #3330 lands, retarget to currentmain, verify the child-only diff and rerun qualification.Green CI is not merge authorization. No merge, release or deployment qualification is claimed.