Hey! Trying to understand more about the performance characteristics of spiceDB, but not great at reading Go yet. Could anyone link me to an entrypoint for the checking algorithm?
y
yetitwo
03/02/2026, 3:54 AM
do you have specific questions about how checking goes?
h
heptahedron
03/04/2026, 2:58 AM
Honestly I did, lol. It has been hard to find an implementation of a general Zanzibar algorithm in the wild that I grokked, but I think I might have just made a compliant implementation (sans zookies) myself. Looking at the link the other poster kindly shared, I was a bit lost even just trying to figure out what a field of one of the basic dispatch protos really meant
heptahedron
03/04/2026, 3:11 AM
Which is not a dig on the contributors to be clear! I am not great at traversing go projects
y
yetitwo
03/04/2026, 9:03 PM
nah, you're good. i was a user of spicedb before i started working at authzed and my first experience in that part of the codebase was much the same 😛
yetitwo
03/04/2026, 9:05 PM
the short version of how a check works is that it's a bottom-up path-existence question on the graph of relations. there's some additional logic around how to interpret arrows and subrelations, and we've laid a good deal of additional logic on in terms of permission computations, but if you've got that path traversal idea expressed then you've basically implemented the spec as far as i understand it
yetitwo
03/04/2026, 9:06 PM
the dispatch stuff is all of the bookkeeping that goes into making it possible to make this graph traversal problem into a distributed graph walk, and to allow for things like cursoring results when we're talking about lookups rather than unary checks