Skip to content

v0.6.2 — visibility enforced on read

Choose a tag to compare

@KanenasInGreece KanenasInGreece released this 09 Jul 10:39
e236dc4

Read-path authorization. The visibility column (global | scope | private) was stamped on save but never consulted at retrieval — a private/scoped row was returned to any caller. handle_search now composes a read-authorization predicate into every read (Tier-1 vector search, keyword fallback, Tier-3 insight/summary), gated by the server-verified agent identity:

  • global → all callers
  • private → only the owning agent_id
  • scope → only a caller asserting the matching scope
  • anonymous → global only (fail closed)

Tier-3 is gated too, so a private fact filtered from Tier-1 cannot leak through its community summary.

No migration, no client change. Columns/indexes exist since migration 001; every stored row defaults to global, so nothing currently stored is hidden — behavior changes only for rows explicitly marked. api_version unchanged (1).

Full suite: 432 passed (8 new in tests/test_visibility.py).