Fourth review round (ADR-023): encode_payload typed (Codec), numeric-argument domains pinned by kind, plain-path SQLite open (URI flag dropped, D-29), watcher cadence posture — waves-1-2 general-review findings

This commit is contained in:
glm-5.3-flash committed 2026-10-08 10:17:56 +00:00
1 parent ee7871d25d
commit 44637eea5b
11 files changed
+502 -22

No files matched your search

+18 -2
View File
@@ -1,6 +1,6 @@
---
status: draft
last_updated: 2026-10-07 (ADR-021 — third review round: tx reads, claimed_at, schedule queue validation, drop=rollback, receiver arms)
last_updated: 2026-10-08 (ADR-023 — fourth review round: plain-path open (URI flag dropped), 1 ms watcher default + SqliteOpts knob)
---
# SQLite engine
@@ -50,13 +50,28 @@ per-contract obligations live in the core spec and are not restated here.
fanning out to listeners, overtriggering on purpose (waking all
subscribers per poll tick, even when several commits coalesced
inside one tick — wake is a hint; consumers re-read indexed state,
[ADR-006](decisions/006-wake-and-delivery-contract.md)).
[ADR-006](decisions/006-wake-and-delivery-contract.md)). The 1 ms
default is the shipping default — the POC's published wake-latency
numbers were measured at it
([ADR-023](decisions/023-fourth-review-round.md) §4); the cadence
is tunable via `SqliteOpts::poll_interval`
([ADR-008](decisions/008-contract-v1-pinning.md) §6's config split
— engine opts carry cadence), the documented idle cost and tuning
recipe in [deployment.md](deployment.md).
- Each connection runs the substrate's bootstrap at open: pragmas
(WAL, `synchronous=NORMAL`, busy timeout), `attach_notify`,
the substrate's function attachments and schema bootstrap (the
alknet-filesystem POC's wiring shape). Watcher spawn is fallible in
the substrate ([ADR-012](decisions/012-forked-substrate-design.md)
§4); open fails if the watcher cannot start.
- **The `open` path argument is a plain filesystem path**
([ADR-023](decisions/023-fourth-review-round.md) §3): the
substrate's `open_conn` drops the inherited `SQLITE_OPEN_URI` flag
(a registered fork delta), so `?name=value` suffixes in the path
are literal filenames — no URI interpretation, no connection-
semantics mutation outside the constructor's opts (`:memory:` works
without URI mode; URI-only features like shared-cache memory DBs
re-enter with a consumer-inventory row).
## Mapping the contract
@@ -136,6 +151,7 @@ family is `__alkstore_*` (ADR-010 §8's naming authorization).
| [019](decisions/019-mechanism-handle-surfaces.md) | Handle surfaces | boxed handle traits (`Queue`/`StreamHandle`/`Outbox`/`Lock`/`JobHandle`); `worker_id` stamps the row's claimant column; `StopToken` core-owned |
| [020](decisions/020-enqueue-opt-semantics-and-bridges.md) | Enqueue options | delay-over-`run_at` in the substrate's re-derived enqueue; scheduler fires stamp from derived defaults; serde_json byte encoding |
| [021](decisions/021-tx-reads-and-value-shape-fixes.md) | Third review round | tx-read methods route through the writer-slot lease; `Job.claimed_at` (the fork's claimed_at column, surfaced in `Job`); `schedule()` queue argument validated; drop = rollback releases the lease with `ROLLBACK` |
| [023](decisions/023-fourth-review-round.md) | Fourth review round | `open` path is a plain filesystem path (URI flag dropped — registered fork delta); 1 ms watcher default stands, cadence carried onto `SqliteOpts::poll_interval`; `encode_payload` typed (`Codec`); numeric-argument domains pinned contract-side (extents clamp empty — enforced at this engine's trait-impl entry over the substrate) |
## Open Questions