Skip to content

10. Technology Candidates (all AGPL-3.0-compatible)

Selection governed by §9. "Substrate" reflects the §9.1 bucket; specific frameworks are illustrative, not fixed.

Role Candidate / reference Substrate bucket License Note
Database PostgreSQL ≥ 18 — (foundation) PostgreSQL (permissive) uuidv7(), async I/O, logical replication
Change capture Logical decoding (pgoutput / wal2json) safety / in-database PostgreSQL / BSD Core primitive
Sync daemon (transport/scope/apply) (custom) safety → Rust Thin; ships & applies, no merge logic (§6.1, §9.4)
Identity algebra & projections (custom) safety → in-database §5.7, §9.4; trigger-maintained projections; PL/pgSQL default, pgrx escape hatch
In-database Rust (escape hatch) pgrx safety → in-database MIT / Apache-2.0 Rust Postgres functions for hot/complex projections; stays in-DB, unbypassable (§9.4, ADR-0002)
Multi-master reference pgactive reference only Apache-2.0 Borrow decoding patterns; not a dependency (§6.1)
Heterogeneous sync reference SymmetricDS reference only GPL-3.0 Borrow store-and-forward/sneakernet patterns; not a dependency (§6.1)
Thin-client store (optional) PGlite Apache-2.0 Postgres-in-WASM for tablet/web thin clients only — transient buffering, not an autonomous edge node (§2)
Read-path sync reference ElectricSQL Apache-2.0 Shape-based partial replication patterns
Record linkage / matcher Splink + custom fit-for-purpose → Python MIT Advisory; Fellegi–Sunter; ML ecosystem
FHIR façade / interop HAPI FHIR / fhir.resources fit-for-purpose Apache-2.0 / BSD Interface, not merge core
Integration glue / tooling / UI backends (various) fit-for-purpose permissive Iteration speed prioritized