Skip to content

v4.0.0a1 — first public alpha

Choose a tag to compare

@bolnet bolnet released this 27 Apr 20:20
· 150 commits to main since this release
0f925b3

First public alpha cut of Attestor v4 to PyPI.

v4 is a greenfield rebuild. Hard tenant isolation via Postgres RLS, bi-temporal facts, no LLM in the retrieval critical path. v3 was alpha-only with no production users — there is no automated migration; drop your previous DB and install fresh.

This is an alpha — API surface is subject to breaking change until 4.0.0 stable. Track the alpha line:

```bash
pip install "attestor==4.*"
```

Highlights

  • Bi-temporal replay — `recall(as_of=...)` reconstructs exactly what was active at any past point in transaction time.
  • Semantic-first 6-step pipeline — Vector top-K → Graph narrow → Triples inject → MMR → Decay + temporal boost → Greedy budget pack. Same query → same ranking. Zero LLM in the path.
  • Conversation ingest — `ingest_round()` runs two-pass speaker-locked extraction (the +53.6 over Mem0 fix), then a four-decision conflict resolver (`ADD/UPDATE/INVALIDATE/NOOP`) per fact. Every supersession carries an `evidence_episode_id`.
  • Tenant isolation — Postgres Row-Level Security via `tenant_isolation_*` policies on the `attestor.current_user_id` session variable.
  • Multi-agent primitives — Six RBAC roles, namespace isolation, per-agent token budgets and write quotas, provenance on every memory.
  • Sleep-time reflection — Stable preferences, stable constraints, changed beliefs, and contradictions-flagged-for-human-review (regulated-systems posture: never auto-resolved).
  • Optional Ed25519 provenance signing — cryptographic non-repudiation for adversarial-write contexts.
  • Dual-judge benchmarking — Cross-family judge stack (`openai/gpt-5.2` + `anthropic/claude-sonnet-4.6`) anchors out answerer-judge collusion.
  • Multi-backend support — Postgres + Neo4j (default), ArangoDB, AWS (DynamoDB + OpenSearch + Neptune), Azure (Cosmos DB), GCP (AlloyDB).
  • Read-only Evidence Board UI — `attestor ui` browser viewer for live trace inspection.

Packaging fixes in this alpha

The first build had three blockers caught during release prep:

  1. `AgentContext` / `AgentRole` / `Visibility` now re-exported at the top level so `from attestor import AgentMemory, AgentContext, AgentRole` (the README's first example) works.
  2. Circular import between `attestor.extraction` and `attestor.conversation` resolved — `conversation/init.py` no longer eagerly imports the heavy submodules; `conversation/apply.py` moves type-only imports under `TYPE_CHECKING`.
  3. `psycopg2-binary` and `neo4j` promoted to required core dependencies (the codebase imports both eagerly).

See `CHANGELOG.md` for the full track-by-track changelog.

Live demo + docs