Files
alknet/docs/architecture/questions/034-persistent-peer-registry-cross-node-state-storage.md
T
glm-5.2 1baa619ce9 docs(arch): decompose open-questions.md into per-OQ files under questions/
The monolithic open-questions.md (1310 lines, 47 OQs) was large enough to be
unmanageable, with high size variance (OQ-42 at 220 lines next to OQ-06 at 8).
Decomposed into one file per OQ under docs/architecture/questions/ (NNN-slug.md,
mirroring the ADR convention), with open-questions.md retained as the index:
theme-grouped tables plus a cross-theme Deferred/Blocked section that surfaces
the 6 deferred OQs with their Blocked-on conditions inline (the safe-exit
visibility surface). Per-OQ content moved verbatim; all 62 inbound links stay
valid (none used anchors). README's curated OQ summary dropped (now redundant
with the index tables).

Also seeds tasks/architecture/ with this task plus two follow-ups found during
the decompose: OQ-09/10 missing structured Blocked-on fields, and the
tasks/architecture/ blocker-task half of the Safe Exit protocol being
unenforced.
2026-07-06 16:07:59 +00:00

2.0 KiB

OQ-34: Persistent Peer Registry (Cross-Node State Storage)

  • Origin: OQ-33 (the storage dimension it surfaced), the no-DB posture of ADR-008/018/025

  • Status: resolved (2026-06-27 by ADR-030 + ADR-031 + ADR-033)

  • Door type: One-way (storage boundary), two-way (backend choice)

  • Priority: medium (not a v1 blocker) → resolved

  • Resolution: The storage boundary is: core defines repo traits + in-memory default adapters; persistence adapters are separate crates; the assembly layer wires the adapter. This is the repo/adapter pattern (ADR-033), already established by IdentityProvider (ADR-004) and now extended to CredentialStore (ADR-031).

    • IdentityProvider (ADR-004) — the auth repo trait, in core. ConfigIdentityProvider is the in-memory default, backed by AuthPolicy.peers (ADR-030). A future alknet-peer-store-sqlite adapter that persists PeerEntry records in a peers table is additive — it implements the same trait.
    • CredentialStore (ADR-031) — the credential repo trait, in core. InMemoryCredentialStore is the in-memory default. A future persistence adapter is additive.

    The no-DB posture of the core crates is preserved in the sense that matters: core has no backend dependency (no SQLite, no honker). The in-memory default adapters carry no persistence. The persistence adapters are additive crates, built when a concrete use case forces them, wired by the assembly layer.

    The concrete adapter shapes (table schemas, backend choice, indexing, caching) were the two-way-door remainder, tracked as OQ-36 — now resolved by ADR-035 (read/write split, honker+SQLite, alknet-store-sqlite crate). The trait shapes are the one-way door, committed by ADR-030, ADR-031, and ADR-033; ADR-035 builds on them.

  • Cross-references: ADR-008, ADR-018, ADR-021, ADR-025, ADR-029, ADR-030, ADR-031, ADR-033, ADR-035, OQ-33, OQ-36, auth.md, config.md