Skip to content

Releases: omic/attest

v0.2.0 — Apache 2.0 relicense

23 Apr 02:51

Choose a tag to compare

🎉 First Apache-2.0 release

Previous releases (≤ 0.1.42) were distributed under BSL-1.1 with Apache-2.0 as the scheduled change license. From v0.2.0 onward, the whole OSS tree is directly Apache 2.0. Use it, modify it, ship it in your own products — commercial or otherwise. See LICENSE.

OSS boundary cleanup

A multi-pass refactor separated LLM-dependent code from the rule-based OSS core:

  • All LLM SDK usage is centralized in `attestdb/intelligence/llm_client.py`
  • OSS directories (`core/`, `infrastructure/`, `extraction/`, `discovery/`, `resolution/`, `connectors/`) contain zero direct imports of `anthropic`, `openai`, `groq`, etc. — CI-enforced via `scripts/check_oss_boundary.sh`
  • `heuristic_extractor.py` is now self-contained (previously had a hidden import dependency on the enterprise-only `text_extractor.py`)
  • Investigation-specific modules (flight_log_parser, FBI-302 templates, etc.) moved to `demos/epstein/`

Engine fixes

  • LMDB reader-slot self-heal (from 0.1.42): `LmdbBackend::open()` automatically calls `clear_stale_readers()` so long-running deployments stop accumulating stale entries from crashed processes. Prevents the `MDB_READERS_FULL` crash loop.
  • New API: `RustStore.reader_check()`, `reader_info()`, and `stats()['reader_slots_used'|'reader_slots_max']` for operator observability.

Install

```
pip install attestdb==0.2.0
```

Wheels: linux x86_64, linux aarch64, darwin x86_64, darwin aarch64, win x86_64 (CPython 3.12).

v0.1.42 — LMDB reader-slot self-heal

23 Apr 01:41

Choose a tag to compare

Self-heal LMDB reader slots on every open. Fixes MDB_READERS_FULL crash loop on long-running deployments where stale (pid, txn_id) entries accumulate from processes that died uncleanly. New API: RustStore.reader_check(), reader_info(), and stats()['reader_slots_used'|'reader_slots_max']. attest-py wheel only; attestdb sdist unchanged.

v0.1.41 — Temporal Analytics

04 Apr 16:55

Choose a tag to compare

What's New

Temporal analyticsdb.at(timestamp) now exposes the full analytics layer, not just query() and stats().

snapshot = db.at(timestamp)
snapshot.what_if(("KRAS", "gene"), ("activates", "relation"), ("MEK", "gene"))
snapshot.predict("BRCA1")
snapshot.evolution("TP53")
snapshot.knowledge_health()
# ... all analytics methods work on point-in-time state

Architecture

TemporalStoreView proxy filters claim-returning store methods by timestamp. AnalyticsEngine(snapshot) works transparently — zero changes to the analytics engine itself. Every analytics method automatically operates on point-in-time state.

Benchmarked

Proxy overhead: <0.5µs per call, +3.3% on compounded access patterns (statistically not significant at p>0.05).

Full Changelog: v0.1.40...v0.1.41

v0.1.40 — Enterprise pipeline

04 Apr 14:24

Choose a tag to compare

What's New

  • Enterprise provenance: project, agent_id, source_version, labels fields on Provenance struct (Rust + Python)
  • LegacyProvenance fallback: backward-compatible bincode deserialization for databases created before namespace/provenance fields
  • Discovery pipeline: schema sampler, analyzer, aligner, claim templates, drift detection, schema versioning
  • Calibration engine: prediction log, adaptive threshold engine, data quality tracker, feedback loop
  • Review API: human review queue, bulk approve, MCP tools for conversational review
  • Entity resolution: fuzzy/exact/domain matching, materialized views, ingestion hooks, CDC
  • Unified query: query decomposer, conflict resolver, source authority matrix
  • Access control: ACL sync, provenance-based policy engine, security middleware
  • Audit layer: tamper-evident SHA-256 hash chain, SOC 2 export, SIEM webhook
  • Extraction pipeline: unstructured claim extraction (email, Slack, QBR), entity linker, claim normalizer
  • Resilience: circuit breakers, dead letter queues, rate limiter, idempotency store, source health tracker
  • Claim type taxonomy: 32 hierarchical types with runtime extension
  • CLI: attest discover command for schema discovery
  • Drift check job: scheduled drift detection with auto-resolve and circuit breaker

Full Changelog

v0.1.39...v0.1.40

v0.1.39 — Launch CLI

01 Apr 16:44

Choose a tag to compare

New CLI commands: quickstart, mcp-config, doctor, trial, upgrade, share, stats, telemetry. 10 authored skill templates. ~12µs queries. 106 MCP tools.

v0.1.38 — Launch CLI

01 Apr 16:39

Choose a tag to compare

New CLI commands: quickstart, mcp-config, doctor, trial, upgrade, share, stats, telemetry.
10 authored skill templates. Bundled sample data. ~12µs queries. 106 MCP tools.

v0.1.37 — Fix MCP server crash on clean install

30 Mar 14:29

Choose a tag to compare

Bug fix

Fixed ModuleNotFoundError: No module named 'attestdb.mcp_tools_learning' that crashed attest-mcp on clean pip install. Enterprise-only modules (mcp_tools_learning, mcp_tools_viz, mcp_tools_autonomous, mcp_tools_analysis) are now guarded with try/except ImportError.

Also includes (from v0.1.36)

  • attest brain install — personal knowledge system for AI agents
  • Proactive MCP server instructions (tells agents to USE the brain tools)
  • MCP server name changed from "attest" to "brain" (fixes Claude Code /doctor errors)
pip install -U attestdb
attest brain install

Full changelog: v0.1.36...v0.1.37

v0.1.36 — Attest Brain

29 Mar 03:39

Choose a tag to compare

Attest Brain — personal knowledge system for AI agents

Give Claude Code, Cursor, OpenClaw, and any MCP-compatible agent a persistent brain that gets smarter every session.

pip install attestdb
attest brain install

What's new

  • attest brain install — one command to install the brain into your coding tools (Claude Code, Cursor, Windsurf, Codex, Gemini CLI)
  • attest brain status — view brain statistics (claims, entities, sessions, knowledge breakdown)
  • attest brain uninstall — clean removal
  • attest-brain — standalone CLI entry point

What the brain does

  • Session recall — prior knowledge injected at session start
  • Pre-edit warnings — known bugs surface before you edit a file
  • Post-test fixes — prior solutions appear when tests fail
  • Negative results — records what didn't work so nobody repeats the search
  • Confidence scoring — every fact has a 0-1 score that updates with evidence
  • Gap detection — finds what the brain doesn't know

Landing page

attestdb.com/brain.html

Full changelog: v0.1.35...v0.1.36

v0.1.35 — pip install attestdb now auto-installs Rust engine

28 Mar 20:01

Choose a tag to compare

What's New

One-command install

pip install attestdb now automatically installs attest-py (the Rust storage engine) as a dependency. No more ModuleNotFoundError: No module named 'attest_rust'.

Quality of life

  • Downgraded "Unknown entity_type" warnings to DEBUG level — clean output for new users
  • Performance regression tests (8 tests verifying ask <500ms, search <10ms)
  • MCP tool cleanup: 4 uncapped claims_for calls fixed
  • LIVE indicator on demo search inputs
  • Updated PyPI descriptions and keywords

Full Changelog

v0.1.34...v0.1.35

v0.1.34 — Enterprise RBAC, Rust neighbors(), 3D graph labels

28 Mar 04:50

Choose a tag to compare

What's New

Enterprise RBAC (Group-Based Access Control)

  • Groups & memberships: db.create_group(), db.add_to_group() — team-based access
  • Declarative policies: db.add_policy() — allow/deny rules per group/namespace/predicate
  • Entitlement resolution: principal → groups → policies → effective access
  • SecureStoreProxy: wraps Rust store, filters ALL claim-returning methods
  • 6-level sensitivity: SHARED → PUBLIC → INTERNAL → CONFIDENTIAL → RESTRICTED → REDACTED
  • JWT + SAML auth: API middleware resolves user identity per request
  • Audit logging: group_created, member_added, policy_created, access_denied events
  • 29 security review findings fixed (5 CRITICAL, 8 HIGH, 10 MEDIUM)

Rust-native neighbors()

  • store.neighbors(entity_id) returns neighbor IDs from adjacency index
  • 11,020 neighbors in 3ms (no claim materialization)

Demo improvements

  • 3D force-graph with HTML overlay labels (DOM-based, works everywhere)
  • 2D force-graph with d3-force collision detection
  • Stronger charge repulsion, circular initial positions

Full Changelog

v0.1.33...v0.1.34