Filed by the domain:services execution PM seat, settling the open question PR #17982 raised. ⛔ Unlabelled on purpose — domain:* and priority are triage's.
The class, established by #17897
resolve-authz-context.ts reaches for sys_user_position / sys_user_permission_set / sys_position via tryFind, which classifies a missing table as "not provisioned" and answers []. So a test harness that boots a real ObjectQL over a real SqlDriver but registers only a narrower object set gets:
- a
DATABASE_ERROR log line per refused read — the visible symptom; and
- ⭐ a green it did not earn — the assertion passes because the read returned empty, not because the state was empty.
The second is the one that costs. In plugin-auth this was 7 lines across two fixtures, and closing it (PR #17982) turned a previously-refused read into one that returns real rows.
What is NOT measured
⚠️ Whether harnesses in other packages drive the same resolver against a narrower object set. Neither #17897 nor its predecessor #16315 swept beyond plugin-auth.
The pointer, and its bound stated plainly:
| reading |
count |
test files outside plugin-auth naming resolveUserAuthzGrants / resolveAuthzContext |
73 |
control — the same grep inside plugin-auth |
6 |
files constructing AuthManager outside plugin-auth |
4 |
⛔ 73 is a STATIC pointer, not a measurement. It names candidates, not sites — a file can name the resolver and never drive a refused read. The sweep is what turns it into a number.
The ask
Point the instrument #17897 already built at that population: run the candidate packages' suites and count DATABASE_ERROR per file (--maxWorkers=1 per file to attribute, grep -o "refused a read on '[a-z_]*'" | sort | uniq -c to count by table). For each site found, the remedy is the one #17982 used — register the objects locally, with only the columns the reading path touches, so ⛔ no dependency edge onto plugin-security is added.
⛔ Do not silence, filter or re-level the log line. The count must fall because the read succeeds — and prove it positively, the way #17982 did (a one-off assertion printing the rows the read now returns, restored under a trap and verified by git hash-object against the HEAD blob).
Grading note for triage
#17897 was graded priority:p3 on the log-noise reading. ⚠️ This card's subject is the false green, which is a different cost: a suite that reports passing on reads that never happened cannot turn red when the thing it claims to test breaks. Whether that moves the grade is triage's call, ⛔ not this seat's — flagged because the predecessor's grade came from the smaller reading.
Refs
#17897 / PR #17982 (the plugin-auth instance and the instrument) · #16315 (closed not_planned — real measurement, wrong attribution) · resolve-authz-context.ts · find-envelope-limb-removal.test.ts (the local-registration precedent)
Generated by Claude Code
Filed by the
domain:servicesexecution PM seat, settling the open question PR #17982 raised. ⛔ Unlabelled on purpose —domain:*and priority are triage's.The class, established by #17897
resolve-authz-context.tsreaches forsys_user_position/sys_user_permission_set/sys_positionviatryFind, which classifies a missing table as "not provisioned" and answers[]. So a test harness that boots a realObjectQLover a realSqlDriverbut registers only a narrower object set gets:DATABASE_ERRORlog line per refused read — the visible symptom; andThe second is the one that costs. In
plugin-auththis was 7 lines across two fixtures, and closing it (PR #17982) turned a previously-refused read into one that returns real rows.What is NOT measured
plugin-auth.The pointer, and its bound stated plainly:
plugin-authnamingresolveUserAuthzGrants/resolveAuthzContextplugin-authAuthManageroutsideplugin-auth⛔ 73 is a STATIC pointer, not a measurement. It names candidates, not sites — a file can name the resolver and never drive a refused read. The sweep is what turns it into a number.
The ask
Point the instrument #17897 already built at that population: run the candidate packages' suites and count
DATABASE_ERRORper file (--maxWorkers=1per file to attribute,grep -o "refused a read on '[a-z_]*'" | sort | uniq -cto count by table). For each site found, the remedy is the one #17982 used — register the objects locally, with only the columns the reading path touches, so ⛔ no dependency edge ontoplugin-securityis added.⛔ Do not silence, filter or re-level the log line. The count must fall because the read succeeds — and prove it positively, the way #17982 did (a one-off assertion printing the rows the read now returns, restored under a
trapand verified bygit hash-objectagainst the HEAD blob).Grading note for triage
#17897 was graded⚠️ This card's subject is the false green, which is a different cost: a suite that reports passing on reads that never happened cannot turn red when the thing it claims to test breaks. Whether that moves the grade is triage's call, ⛔ not this seat's — flagged because the predecessor's grade came from the smaller reading.
priority:p3on the log-noise reading.Refs
#17897 / PR #17982 (the
plugin-authinstance and the instrument) · #16315 (closednot_planned— real measurement, wrong attribution) ·resolve-authz-context.ts·find-envelope-limb-removal.test.ts(the local-registration precedent)Generated by Claude Code