docs(architecture): ADR-009 — pg-lo admitted as the fs tier's second engine on POC #7
- ADR-009 (new): postgres Large Objects ship as the fs tier's second engine (feature pg-lo, default-off), admitted on POC #7's passed gate (contract 10/10, durable put ~= fs at >=1 MiB, lo_get window gets, transactional LO lifecycle = zero crash orphans). Engine shape: companion table (lo_entries) is the contract authority; put = one tx (lo_create + lowrite + row + pin); get = descriptorless lo_get windows (lo_*64 discipline); named operator deltas (catalog space never returned / autovacuum inherited / sweep for the legacy bypass class only) and named performance deltas (cached-get 20-50x behind page-cache fs single-stream, ~700 MB/s aggregate at 16 readers = the fleet serving picture). - Ripple: backends-and-dispatch (pg-lo shipped; fleet locality contract gains the whole-fleet-pg-lo option), overview (layer map, feature table + pg-lo row, OQ -> shipped pointer), requirements (engine def + REQ-2 note updated), README (current-state + ADR table), store-api (invariant 1/6 engine lists), ADR-008 Status amendment (pg-lo posture superseded by ADR-009), open-questions (audit trail completed: decided -> sequenced -> completed). Verification: docs-only; all cross-references resolve (ADR/REQ/POC); register, findings, spec, and both engine-ADR status lines agree.
This commit is contained in:
1 parent
cee97defba
commit
9bbe6f3ad9
8 files changed
+226
-39
No files matched your search
@@ -1,6 +1,6 @@
|
||||
---
|
||||
status: draft
|
||||
last_updated: 2026-10-03
|
||||
last_updated: 2026-10-03 (ADR-009 — pg-lo admitted on POC #7)
|
||||
---
|
||||
|
||||
# alkblobs — Architecture
|
||||
@@ -47,6 +47,18 @@ there — not inherited as hedges:
|
||||
admission-gated on POC #7). It also adds
|
||||
[requirements.md](requirements.md) — the REQ anchor that ends
|
||||
per-session re-derivation of consumer facts.
|
||||
- **ADR-009** (2026-10-03) admits `pg-lo` — postgres Large Objects as
|
||||
the fs tier's second engine (feature `pg-lo`, default-off) — on
|
||||
POC #7's passed gate (`docs/research/poc-pglo-findings.md`):
|
||||
contract 10/10 exact-count tests, durable put ≈ fs durable put at
|
||||
≥1 MiB, descriptorless `lo_get` window gets, transactional LO
|
||||
lifecycle (zero crash orphans), companion-table contract authority.
|
||||
REQ-2's fleet consolidation option is now shipped: a fleet node can
|
||||
run postgres-only. Named deltas: cached-get 20–50× behind
|
||||
page-cache fs single-stream (aggregate serving ~700 MB/s at 16
|
||||
readers), catalog space reused-but-never-returned, autovacuum
|
||||
inherited. The admission door (ADR-003, exercised by ADR-007 and
|
||||
ADR-009) has now shipped both its tier-extending engines.
|
||||
|
||||
## Architecture Documents
|
||||
|
||||
@@ -73,6 +85,7 @@ there — not inherited as hedges:
|
||||
| [006](decisions/006-verification-posture-and-transfer-encoding.md) | Whole-blob verification; transfer encoding excluded by scoping | Accepted |
|
||||
| [007](decisions/007-two-kv-engines-sqlite-and-postgres.md) | Two kv engines (sqlite + postgres) behind one trait; constructor-selected | Accepted |
|
||||
| [008](decisions/008-trait-size-probe-fleet-gc-and-fs-engines.md) | Trait `size` probe; fleet GC (DB-backed pins, advisory-locked sweeper); fs-tier engines | Accepted |
|
||||
| [009](decisions/009-pg-lo-fs-tier-engine.md) | pg-lo — postgres Large Objects as the fs tier's second engine (admitted on POC #7) | Accepted |
|
||||
|
||||
## Open Questions
|
||||
|
||||
@@ -84,8 +97,10 @@ alkfs intake; carried for visibility, gating nothing here). OQ-09
|
||||
(second kv engine) resolved by ADR-007. The pg-lo fs-engine question
|
||||
resolved to *sequenced work*, not a parked question: REQ-2/ADR-008
|
||||
named it the candidate fs-tier engine and POC #7
|
||||
(`docs/research/poc-pglo-spec.md`) is its admission evidence — a task,
|
||||
not a wait. **Deferral
|
||||
(`docs/research/poc-pglo-spec.md`) was its admission evidence — a
|
||||
task, not a wait; that task completed 2026-10-03
|
||||
(`docs/research/poc-pglo-findings.md`, passed) and ADR-009 shipped
|
||||
the engine. **Deferral
|
||||
policy (the "Schrödinger's code" rule):** a *decision this crate needs
|
||||
before shipping* may not be deferred on a dependency that is itself
|
||||
waiting for this crate to exist. Two parking kinds remain legitimate:
|
||||
|
||||
Reference in new issue
Block a user