zynactradocs

Design decisions

Why zynactra/access is built the way it is. Read these before changing how it works.

Each record states the context, the decision and its consequences. A change that reverses one gets a new record that supersedes it.

DecisionStatus
1Cerbos evaluates generated policies; grants travel as principal attributesaccepted
2Permissions never live in tokensaccepted
3resource:action keys; scope lives on the assignmentaccepted
4Go and TypeScript share contracts, not bindingsaccepted
5Our own plan-to-SQL translator, identical in Go and TSaccepted
6Storage in the product's Postgres, access schema, NOTIFY for invalidationaccepted
7No escalation; access.delegation:any for administratorsaccepted
8Both SDKs call Cerbos over its HTTP JSON APIaccepted (deviation from the first spec, which proposed gRPC for Go)
9Route guards plus strict requirement trackingaccepted
10Deviations from the architecture specaccepted
11Org rules, decision logs and policy outputsaccepted
Edit on GitHub