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

+17 -11
View File
@@ -133,8 +133,8 @@ made under; the ADRs carry the WHY.
([ADR-010](decisions/010-queue-semantics-depth.md) §5): a job with
an `expires` deadline is eventually in exactly one of
pending/processing/dead, never stuck unreachable. (SQLite-side
realization over honker's machinery rides OQ-06 — the zombie hole
is that read's concrete fork candidate.)
realization resolved with OQ-06 — the fork fires ([ADR-011](decisions/011-sqlite-substrate-fork.md)),
the zombie fix lands in owned code.)
- **No ambient sweeper**: the engine ships no background maintenance,
no default cadence (the no-ambient-timers posture). Correctness of
transitions is the engine's; **timeliness is the consumer's**.
@@ -199,8 +199,9 @@ Collapsed into queues: no `Scheduler` handle, no schedule objects.
proven shape and keeps `queue(name)` a name, not a DDL operation).
- **SQLite**: honker's `_honker_*` family — storage-internal
([ADR-008](decisions/008-contract-v1-pinning.md) §4); no new tables
minted by this design; the family's fate rides OQ-06 (a fork
re-owns the names; nothing consumer-visible changes).
minted by this design; the family's fate resolved with OQ-06 — the
fork ([ADR-011](decisions/011-sqlite-substrate-fork.md)) re-owns the
names (`__alkstore_*`); nothing consumer-visible changes.
- Partial indexes pinned identically on both engines: partial indexes
matching the claim hot path; dead rows outside it; single clock
source (second-precision timestamps); savepoint-guarded
@@ -208,12 +209,16 @@ Collapsed into queues: no `Scheduler` handle, no schedule objects.
## Reference material
- **honker's queue design** — the SQLite-side incumbent
(`/workspace/honker`, its honker-core machinery; the engine rides it
directly, so the SQLite side's depth is largely "inherit + pin").
- **honker's queue design** — the SQLite-side incumbent design
reference (`/workspace/honker`; ownership resolved by
[ADR-011](decisions/011-sqlite-substrate-fork.md) — forked, queue ops
re-derived on this design).
Full read: `docs/research/reference-honker-machinery.md` (schema,
claim/visibility/retry/dead-letter mechanics with file/line cites;
the defect list §8 feeds OQ-06).
the defect list §8 fed OQ-06 and is the fork's fix/inheritance
register), plus
`docs/research/quality-read-honker-core.md` (the dependency-gate
read).
- **pg-boss family** — `/workspace/pgboss-rs` @ 98f7d9e (design
reference only, [ADR-005](decisions/005-dependency-ownership.md)).
Full read: `docs/research/reference-pgboss-rs-semantics.md` (states,
@@ -245,9 +250,10 @@ Open questions are tracked in
[open-questions.md](open-questions.md). Key
questions affecting this document:
- **OQ-06**: honker-core quality read — the SQLite-side zombie fix and
dead-row visibility are concrete fork candidates for it to weigh
(open).
- **OQ-06**: honker-core quality read — **resolved** (2026-10-05,
[ADR-011](decisions/011-sqlite-substrate-fork.md)): the zombie fix
and dead-row visibility — this document's two named SQLite-side gaps
— land in owned code via the fork.
Resolved on this document's surface: **OQ-05** and **OQ-09**
(2026-10-05, [ADR-010](decisions/010-queue-semantics-depth.md) /