Capabilities
GMP defines ten capabilities, declared via capabilities() (src/aml/backends/interface.py). They are independent and append-only across versions. Per GOVERNANCE.md §2, all ten capabilities in v0.2 are FROZEN — their interface and conformance tests will not change. Declaring a capability means the backend MUST satisfy its behavioral contract.
Capability (enum value) | Status | Spec | Workload | What it guarantees |
|---|---|---|---|---|
BI_TEMPORAL (bi_temporal) | FROZEN | §3.2 | W2 | Point-in-time as_of queries over valid-time intervals. |
SUPERSESSION_CHAIN (supersession_chain) | FROZEN | §3.1 | W2 | Superseded facts excluded from current answers, retained in audit(). |
HARD_DELETE (hard_delete) | FROZEN | §5 | W6 | Irrecoverable deletion on the read path — two-sided (no leak, no over-purge). |
MULTI_TENANT (multi_tenant) | FROZEN | §6 | W5 | Strict read-path tenant isolation — two-sided. |
CROSS_SESSION_PROPAGATION (cross_session_propagation) | FROZEN | — | W9 | State (incl. deletions) propagates correctly across sessions. |
CONFLICT_DETECTION (conflict_detection) | FROZEN | — | W7 | Contradictory writes are flagged, not silently merged. |
AUDIT (audit) | FROZEN | §6.6 | — | The immutable record: yields superseded/evicted facts, excludes hard-deleted. |
PROVENANCE (provenance) | FROZEN | §7.5 | — | Content-addressed fact_id + source fields (write_id, written_at, written_by). |
CRYPTOGRAPHIC_PROVENANCE (cryptographic_provenance) | FROZEN | §7.4 | — | Ed25519 signature over the fact_id; tamper-evident. |
CONCURRENCY_CONTROL (concurrency_control) | FROZEN | — | W10 | Serializable isolation for concurrent operations. |
CONCURRENCY_CONTROL is the tenth capability; implementing it requires the extra method on the ConcurrentMemoryBackend protocol extension (a backend declares the capability and provides that method). It is exercised by W10.
Capabilities move through PROPOSED → DRAFT → STABLE → FROZEN (see Capability lifecycle); all ten v0.2 capabilities are at FROZEN. The enum is append-only — capabilities are added in minor releases, never repurposed or removed.
Source: src/aml/backends/interface.py, GOVERNANCE.md §2