1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//! v1.30.0 — the `axonstore` cognitive data plane runtime.
//!
//! `axonstore` is reframed in v1.30.0 from an ignored declaration into
//! a load-bearing runtime primitive: a persistent relation that is
//! epistemically typed, audit-chained by construction, streamable, and
//! capability-secured (the plan vivo's four pillars).
//!
//! This module is built **Rust-canonical** per the 0-Python strategic
//! direction — the Python `axon/runtime/store_backends/` modules are
//! the historical reference this cycle learns from, frozen.
//!
//! # Sub-module map (sequenced per the plan vivo section 5)
//!
//! - [`filter`] — 35.b — the parameterized `where`-expression filter
//! compiler. SQL-injection-proof by construction (D4).
//! - `postgres_backend` — 35.c — the `sqlx::PgPool` SQL substrate.
//! - `registry` — 35.d — closed-catalog `store_name` → backend dispatch.
//! - `epistemic` — 35.g — Pillar I, the ESK trust lattice join.
//! - `audit_chain` — 35.h — Pillar II, the HMAC-Merkle mutation chain.
//! - `row_stream` — 35.i — Pillar III, `retrieve` as a `Stream<Row>`.
/// v2.81.0 — the axonstore error catalog, dependency-free. See the module
/// docs: it lived in `postgres_backend` and the driver gate took it hostage.
/// v2.81.0 — the row shape + pool sizing, dependency-free. See the docs.
/// v2.81.0 — the v2.51.0 pooler-mode decision, dependency-free.
/// v2.81.0 — the absent-driver stand-in.
///
/// Without `postgres` there is no backend, and this states it in the type
/// system: [`PostgresStoreBackend`](postgres_backend::PostgresStoreBackend) is
/// **uninhabited**. That is what keeps the gate out of the cognition path.
/// `StoreHandle::Postgres(PostgresStoreBackend)` stays a declared variant in
/// every profile — so `StoreHandle` needs no `#[cfg]`, its `is_postgres()` still
/// answers, and `axon check` still type-checks a flow that declares
/// `backend: postgresql`. What changes is that the variant can never be
/// CONSTRUCTED, which makes every SQL-dispatch arm unreachable and lets the
/// compiler prove the remaining match is exhaustive.
///
/// The same trick as [`crate::pinned_conn::PinnedConn`], one level up: say the
/// impossible thing is impossible, rather than duplicating every signature that
/// mentions it (the design decision's rejected option (ii)).