OQ-06 resolved: honker-core quality read fires the fork trigger (ADR-011)

Quality read of honker-core's watcher/transactional core cross-checked
against the published crates.io artifact: the core itself is clean
(Writer/Readers, polling-watcher failure handling, WatcherDeathGuard
all verified), but published 0.5.0 predates upstream's unreleased fix
train carrying the issue-#133 savepoint hardening (silent job loss in
the dead-letter paths) and five .ok() error swallows — and ADR-010's
queue depth requires engine-owned queue SQL in any posture. Resolution:
fork honker-core at the reference revision, inherit the clean machinery
and test suites, re-derive queue ops on contract v1, rename tables to
__alkstore_*.

- docs/research/quality-read-honker-core.md — full evidence
- docs/architecture/decisions/011-sqlite-substrate-fork.md — decision
- OQ-06 resolved in open-questions.md; ADR-003/005/008, engine-sqlite,
  queues, README annotated for consistency
This commit is contained in:
glm-5.3-flash committed 2026-10-05 03:39:46 +00:00
1 parent 79a135c934
commit befbe2e714
10 files changed
+586 -74

No files matched your search

+33 -20
View File
@@ -12,10 +12,14 @@ so far: **OQ-04 resolved** (2026-10-05,
everything else hangs off); **OQ-09 + OQ-05 resolved** (2026-10-05,
[ADR-009](decisions/009-scheduler-collapse.md) and
[ADR-010](decisions/010-queue-semantics-depth.md) — the queue semantics
track and the scheduler collapse/guarantee row). Next: OQ-06
(the SQLite dependency gate — now carrying two concrete fork
candidates from the queue-depth design), OQ-08 (rides the now-pinned
trait shape), OQ-10 (versioning discipline for contract extensions).
track and the scheduler collapse/guarantee row); **OQ-06 resolved**
(2026-10-05, [ADR-011](decisions/011-sqlite-substrate-fork.md) — the
fork trigger fired on the published-artifact facts). Next: OQ-08
(rides the now-pinned trait shape and the ADR-011 substrate fork),
OQ-10 (versioning discipline for contract extensions; note ADR-011
changes its substrate-side facts for SQLite — the forked crate is
versioned in the family workspace, so the engine/core contract pairing
is what the discipline must track).
Resolved questions stay listed with their resolution; they are not
deleted.
@@ -182,24 +186,34 @@ narrowed to the pinning work its own record already scoped.)*
## Theme: Engines and dependencies
### OQ-06: honker-core quality read — does the default posture hold? *(== OQ-ST-06)*
### OQ-06: honker-core quality read — does the default posture hold? *(== OQ-ST-06)* — **RESOLVED**
- **Origin**: [ADR-005](decisions/005-dependency-ownership.md),
[engine-sqlite.md](engine-sqlite.md)
- **Status**: open
- **Status**: resolved (2026-10-05, Phase 1 —
[ADR-011](decisions/011-sqlite-substrate-fork.md))
- **Priority**: high (fork trigger is a gate on the SQLite engine's
dependency posture)
- **Resolution**: open. ADR-005 fixed the calculus and the trigger: the
Phase 1 quality read of honker-core 0.5's watcher/transactional core
(Writer/Readers/SharedUpdateWatcher/attach_*) — looking for defects
the POCs wouldn't surface, unsafe assumptions in the watcher
failure-handling, and schema-migration brittleness. Outcomes: posture
holds (no ADR change), or a fork/patch need is named (fork is normal
work per ADR-005).
- **Cross-references**: ADR-003, ADR-005, OQ-05 (the queue-depth read
handed it two concrete fork candidates: the expired-
processing-row zombie fix and dead-row `get_job` visibility —
complement-over-machinery vs fork is exactly its calculus).
- **Resolution**: **The fork trigger fires.** Evidence:
[quality-read-honker-core.md](../research/quality-read-honker-core.md).
The read's original target is clean (Writer/Readers, the polling
watcher's three-layer failure handling, `WatcherDeathGuard` — all
verified in source, present in 0.5.0; schema migrations minor). But
the published artifact is materially behind the reference revision:
crates.io's honker-core 0.5.0 predates upstream's own fix train for
its documented defect class (issue #133's savepoint hardening —
silent job loss on mid-flight errors in the dead-letter paths; five
`.ok()` error-swallows mapping every SQLite error to "no row"/"lock
held"), stranded unreleased with no announced date. And contract v1's
queue depth ([ADR-010](decisions/010-queue-semantics-depth.md) §3a/§5)
requires engine-owned enqueue/claim/sweep/get_job SQL in any posture
— making a post-fix ride a minority-shape, dual-owning the schema.
Resolution: fork honker-core at the reference revision into owned
code, inherit the clean watcher/transactional core + test suites,
re-derive the queue ops on contract v1, drop cron/experimental
backends, rename `_honker_*` → `__alkstore_*`. Recorded in
[ADR-011](decisions/011-sqlite-substrate-fork.md); ADR-005's posture
calculus applied, not renegotiated.
## Theme: Deployment and capabilities
@@ -240,6 +254,5 @@ narrowed to the pinning work its own record already scoped.)*
## Deferred / Blocked
None currently. Every open OQ above is actionable Phase 1 architecture
work (quality read, capability-surface shape, versioning discipline)
with its evidence base complete — no external arrivals are being
waited on.
work (capability-surface shape, versioning discipline) with its
evidence base complete — no external arrivals are being waited on.