14f762d4c4
- invalidateRuleResultCacheByRelation now walks the transitive closure of the dependency index (owner -> is_owner -> computed can_read): mutating a base relation left computed/multi_hop results stale - _collectRelationUsages registers multi_hop and parent rule relations (parentRelation + subject relation) so their caches invalidate on base-relation mutations - advanced-rule-kinds.test.js: multi_hop (min-over-path, depth-limited), computed (userset alias), parent (subject relation on the target's parent) through the full check() path under random mutations