ADR-012: forked-substrate design — contract-blind boundary, fidelity posture, port deltas

Follow-through on OQ-06/ADR-011: pin the fork's structural decisions
(alkstore-substrate as a vendored path-dep crate, contract-blind API
boundary with contract formulas computed engine-side and pinned
equivalent by the contract suite, keep-the-kept-half API fidelity for
cheap cherry-picks, the W-1/W-2/dead-man's-switch/W-4 port deltas
decided per item, bootstrap re-keying off error-string matching, no
rename migration, deliberate upstream tracking).

Consistency sweep across the doc set for the fork: annotate ADR-003/
005/009/010 and core-contract for superseded ownership facts, fix
schedule-storage table naming (ADR-009 §5, queues.md), re-key ADR-010
§6's notifications hygiene to the at-attach cap the fork scope
realizes, add OQ-11 (scaffold-time residue), and complete both ADR
indexes. Independent review: 0 critical, warnings addressed.
This commit is contained in:
glm-5.3-flash committed 2026-10-05 05:00:55 +00:00
1 parent befbe2e714
commit 2949612e2c
18 files changed
+491 -117

No files matched your search

@@ -39,9 +39,15 @@ the comparison:
The SQLite engine uses **posture 1**: published `honker-core = 0.5`
as a library dependency over the crate's own rusqlite connections
(`bundled-sqlite` for hermetic builds).
(`bundled-sqlite` for hermetic builds). *(Ownership superseded
2026-10-05 by [ADR-011](011-sqlite-substrate-fork.md): the substrate
is the forked `alkstore-substrate` lineage crate, not the published
dependency — the driver, seam, and watcher architecture below are
unchanged.)*
- **Driver**: rusqlite, riding honker-core's pinned version.
- **Driver**: rusqlite, riding honker-core's pinned version. *(The
pin is ours to move deliberately since the fork — [ADR-011], per
[ADR-005]'s annotated rusqlite row.)*
- **Async seam**: bridged. The writer slot (`Writer`) +
reader pool (`Readers`) + every engine call in `spawn_blocking`.
A dedicated std-thread bridge (one thread owning the writer conn,
@@ -76,8 +82,10 @@ comparable reuse.
- Static linkage: "open a path, get a store" needs no runtime
artifacts.
- The engine's job shrinks to wiring + the SQL surfaces honker doesn't
cover (queue semantics depth, OQ-ST-05's SQLite side rides honker's
machinery directly) + the async bridge.
cover (queue semantics depth, OQ-ST-05's SQLite side rides honker's
machinery directly) + the async bridge. *(Ownership since resolved:
the substrate is forked — [ADR-011](011-sqlite-substrate-fork.md) —
and the queue ops re-derived on contract v1 within it.)*
**Negative**
@@ -103,4 +111,7 @@ comparable reuse.
- [ADR-007](007-transactional-seam.md) — the tx-handle shape both
engines implement.
- [engine-sqlite.md](../engine-sqlite.md) — the engine spec this
decision defines.
decision defines.
[ADR-001]: 001-crate-split.md
[ADR-005]: 005-dependency-ownership.md
[ADR-007]: 007-transactional-seam.md