+212
−0
+95
−3
+25
−9
Loading
Reading a collection previously exposed every contained resource and its annotations, including resources with explicit read denials. Reuse one UserAccess instance and check each resource before serialization. Fetch annotations and their owners together, restricted to readable resource IDs. Batch membership and ancestor loading to preserve existing ACL inheritance without a database walk per resource, and invalidate the ancestry cache when roles change. Add regression coverage for denied resources and files, inherited permissions, deleted memberships, project boundaries, output ordering, and cache invalidation. Verify that query counts remain unchanged between 1 and 21 resources at the same collection depth, with both global and scoped permissions. Validation: all 183 resources, rpc, and annotations tests passed; Ruff and git diff --check passed.