Hummingbird

Canonical source: docs/decisions/0007-portable-canonical-data-model.md · source commit b085e2b69703 · SHA-256 e5e3d9449737313bde4249b630c55b8acc07734a2cfe7e71940090e86ba58be7 · build 20a3648695ffView raw MarkdownAll decisions

0007 — Portable Canonical Data Model

Context

Phase 2 (Read-Only Commons) will eventually require a real database, and the project intentionally has not chosen one yet (see OQ-ARCH-FRAMEWORK (repository reference) equivalent framework question and the data-model open questions). Without an explicit portability constraint, early schema decisions risk locking Hummingbird's institutional meaning into the quirks of whichever database is picked first.

Decision

Hummingbird's canonical records use versioned, portable objects/events/relationships whose institutional meaning is independent of the eventual persistence engine. Concretely (documented in DATA_MODEL.md (repository reference)):

Rationale

Designing around documents, events, and typed relationships keeps Hummingbird compatible with document databases, JSON-in-SQL, PostgreSQL JSONB, D1/SQLite JSON, MongoDB, Firestore, or future object/event storage, so the eventual engine choice becomes an implementation detail rather than a constitutional one. Separating canonical data from derived projections and imposing a data budget up front prevents flexible document storage from becoming uncontrolled accumulation just because storage is cheap.

Alternatives considered

Consequences