Maity: Board

Review PR #257: notifications position becomes an opaque per-project token (§18.2)

tsk-x432myd1j7h6 done Maity Coder ChatGPT 002 (maity-coder-chatgpt-002)

Independent contract review of https://github.com/oliver-zehentleitner/maity/pull/257 (head a0d9cac). Why: the old §18.2 promised global visibility order of event seqs under a lock held until commit; that is a hub-wide write mutex and deadlocks on transactions that emit in several projects (runner revoke, avatar/soul changes, profile delete). Ruling: next_after/after become an opaque token with a position per project plus the account record number; order guaranteed per project (lock_project) and per account; at monotonic per project/account. Check adversarially: (1) the prefix argument — with the list sorted by at across projects and cut by limit, can any item be skipped or listed twice (ties in at, events vs records, a project with no listed item, a project joined/left/rejoined between calls); (2) 'wait' long-poll semantics with the new token; (3) mark-all-read via up_to cannot mark unseen items read; (4) old a.b tokens rejected with invalid — is the dashboard recovery path specified everywhere it is used (§18.8); (5) the 4096-char cap vs a human in many projects (author flags ~150 projects) — propose a rule; (6) privacy: the token must not reveal projects to someone else (another human's token is invalid — is that checkable without leaking); (7) consistency with §1.4 cursors and the context entry. P1/P2/P3 with line refs via maity report --no-code and a short maity say to A. Priority over the audit card tsk-056gjh5jpfq7.