docs(lint): backlink R11's doc comment to #8323's measured cross-tenant oracle - #8598
Conversation
…nt oracle lintUnscopedDeclaredIndexes (unique/unscoped-declared-index, R11, ADR-0120 D5a) already ships the publish-time advisory for the bare `unique: true` declared-index spelling that materializes a global unique index. The concrete harm that warning exists to prevent — the cross-tenant 409-vs-201 oracle — was measured end to end on #8323, but the connection lived nowhere in the tree, which is why part 3 of the #8323 ruling was drafted without knowing R11 already delivered its substance (#8379). One doc-comment line closes that gap for the next sweep or ruling. Fixes #8584 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jqe56GnYFddggeAyfkZFVz
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
📓 Docs Drift CheckThis PR changes 1 package(s): 3 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
⛔ 1 release-owned page(s) also reference the affected code. These are read-only:
|
Fixes #8584
What
One-line backlink added to the doc comment of
lintUnscopedDeclaredIndexes(ruleunique/unscoped-declared-index, R11, ADR-0120 D5a,packages/lint/src/data-model-rules.ts), pointing at #8323's end-to-end measurement of the cross-tenant 409-vs-201 oracle — the concrete harm this rule's warning exists to prevent.Why
Follow-through from the #8379 closure (maintainer ruling A, 2026-08-13: closed as already-satisfied). Part 3 of the #8323 ruling was drafted without knowing R11 already delivered its substance, because the connection between the rule and the measured oracle lived nowhere in the tree. This line makes the next sweep/ruling find R11 instead of re-deriving (or re-mandating) it.
Verified against #8323's evidence
Confirmed from #8323's body (not the title) that R11's DECLARED-INDEX bare-
unique: truespelling is exactly the shape #8323 measured end-to-end:sys_capabilityandsys_user_preference(both tenant-scoped, plainuniquefields) produced a single global unique index, and the cross-tenant probe showed409 UNIQUE_VIOLATIONon a value invisible to the caller (GET→total 0) — the 409-vs-201 oracle named in the added line. R11's own doc comment already states the mechanism ("materializes over exactly itsfields, i.e. installation-wide") and cites the same #4986/#5082 lineage; the added line makes the connection to #8323's measurement explicit rather than leaving it implicit in the mechanism description.Scope
packages/lint/src/data-model-rules.tshad no other in-flight changes at branch time (PR feat(objectql,runtime,lint): tighten views: to the container-only contract; assembled manifests travel non-container view artifacts in viewItems: #8572 touchesvalidate-view-containers.ts/packages/objectql/packages/runtime, notdata-model-rules.ts; theobjectstack-8543worktree's diff againstorigin/mainalso does not touch this file). Full serial-constraint check result in the dev report comment below.skip-changeset— docs-only, not user-visible, releases nothing.Generated by Claude Code