m6

openalice-fga

Features
0
Status
×archived
Last activity
Branch

Architecture rating

D25d ago
consistencyB

Clean 5-module layout (model/namespace/check/store/embed), uniform async-trait + builder pattern, clippy -D warnings clean, proper feature-gate for postgres dep, consistent Zanzibar naming; 23 missing docstrings and 5 god-module flags from inspector are minor blemishes.

securityB-

Deny-by-default check(), cycle-safe visited-set, depth-cap at 32, fail-closed on unknown roles/actions, parameterized sqlx queries (no injection), cross-tenant isolation proven by test; but no input-length validation on namespace/id strings (unbounded TEXT) and no audit logging of check decisions.

testingB-

25 tests (24 unit + 1 doc-test) covering all 4 rewrite variants, cycle safety, deny-by-default, full 4×6 role×action cross-product truth table proving equivalence to openalice-tenants can(), tier↔role_rank, cross-tenant isolation, widget inheritance, unknown role/action fail-closed, store CRUD + idempotency; no integration tests against real Postgres PgTupleStore.

docsC+

README documents model, check() guarantees, quick-start with code, embed adapter, and test count; lib.rs and check.rs have thorough algorithm-level rustdoc; manifest present and valid; but 23 definitions lack docstrings per inspector, no CHANGELOG, no @feature annotations, no architecture decision records.

data layerC-

Single clean migration with composite 6-column PK enforcing tuple uniqueness, idx_rt_object_relation covers the hot read path, ON CONFLICT DO NOTHING for idempotent writes, IS NOT DISTINCT FROM for NULL-safe deletes; no RLS (isolation is application-level tuples, acceptable for a library), no FK constraints (string refs by design), no created_at/updated_at timestamps, no GDPR delete-by-subject helper.

reliabilityD

Depth cap and cycle guard prevent runaway recursion; ON CONFLICT idempotency on writes; but no query timeouts on PgTupleStore, no retry/backoff on transient DB errors, no connection-pool bounds or health validation — library delegates all resilience to the caller with zero guardrails.

observabilityF

Zero metrics, zero tracing spans, zero structured logs, no health endpoint — the crate is completely opaque at runtime; a check() failure or slow fan-out is invisible to operators.

source · auto-grader-2026-06-23

Telemetry ribbon · last 90 days

1 event
MAYJUNJUL2026-07-17 · lifecycle · first scan — repo indexedNOW
commitmanifestlifecyclekind

No @feature annotations recorded in this repo yet.