cls folds to one value.fold treats non-relation attrs as scalar latest-wins, so a
multi-class node collapses. Verified: nodes | where id=d_brd | select cls → cls_eng only,
though facts | where a=cls | where e=d_brd → all 3. The mask must read raw cls facts.
Entity key in fold record is id, not e.nodes | where e=<id> returns 0 rows.
Use where id=<id>. (e only exists on the raw facts/diff streams.)
DSL filters tokenize on whitespace.where owner=Rajesh Illuri parses Illuri as a stray
token → 0 rows. No quoting support. Use ~ (contains): where owner~Rajesh. This is why the
@acl person syntax uses = as an explicit delimiter — preserve that when parsing.
@acl is currently inert. The generator skips unknown @-sections, so the authored block
compiles to nothing yet. Safe, but step 1 above is what activates it.
Raw diff is noisy (~92 changed facts between adjacent days). Not an ACL bug, but any
per-viewer "what changed for me" view must filter by attribute (stage/status) after masking.
Sandbox quirk: a leading cd in a shell command triggers a noisy directory listing in tool
output. Use absolute paths / shell vars instead.
Vyasa KG — ACL (viewer-mask) Engine + UI Handoff Prompt