review-wave-8 — the pre-release gate passes: one contract-observable divergence found and fixed (pg's negative-seed GREATEST clamp + offsets CHECK contradicted ADR-023 §2's stored-checkpoint annotation; raw seed now, window open until first publish); the close-out's registered suite-duty follow-up discharged (negative heartbeat(extend) leg in job_handle_validity_predicate, negative save_offset seed leg in receiver_close_and_save_arms — stamped, uniform, green on all three columns vs the live harness server); the class-1 termination of record landed in ADR-017 §2 (no undisposed candidate remains; the window closes permanently at the first cargo publish); release-facing spec set flipped stable with dated gate annotations (core-contract, overview, queues, deployment current, the architecture README — Current State through wave 8, engine-mem's table row corrected); implementation.md records updated; N-1/Findings 2–3/flake/publish-prep audits recorded; all gates re-run green incl. fuzz replay, wasm32, doc gate

This commit is contained in:
glm-5.3-flash committed 2026-10-11 08:58:58 +00:00
1 parent 4a7520c817
commit 5385f6bee3
12 files changed
+479 -72

No files matched your search

+26 -16
View File
@@ -1,8 +1,9 @@
---
status: draft
last_updated: "2026-10-10 (ADR-024: the mem engine adopted as a third
engine — engine-mem.md added, ADR table row, index updated for the
implementation phase)"
status: stable
last_updated: "2026-10-11 (the wave-8 review gate passed — pre-release
freeze: the release-facing spec set flipped stable, Current State
refreshed through wave 8; the class-1 window's dispositions complete,
the window terminates at first publish)"
---
# alkstore — Architecture
@@ -14,29 +15,38 @@ engine native underneath (see [overview.md](overview.md)).
## Current State
**Phase 1 (Implementation) — waves 1–5 implemented and reviewed.**
**Phase 1 (Implementation) — waves 1–8 implemented and reviewed; the
pre-release gate passed (2026-10-11).**
Phase 0 is complete (`docs/research/phase-0.md`): both POCs ran and
passed, the scope inventory is confirmed, and the crate split,
drivers, and ownership postures are decided. All open questions are
resolved (through ADR-023), and the engine specs flipped `stable` at
the wave-5 review gate. Waves 1–5 (core, substrate fork, SQLite
engine, Postgres engine, contract suite) are implemented and reviewed
per `docs/plans/implementation.md`. The mem engine was adopted as a
third engine by [ADR-024](decisions/024-mem-engine.md) (2026-10-10,
wave 6 — release readiness renumbered to wave 7).
the wave-5 review gate, the mem spec at wave 6. Waves 1–7 (core,
substrate fork, SQLite engine, Postgres engine, contract suite, mem
engine, fuzzing) are implemented and reviewed; wave 8 (release
readiness: crate docs, the deployment matrix's final pass, the
README, publish prep — with N-1's growth-posture acceptance, review
003 Findings 2–3, the flake investigation, and the class-1 window's
last dispositions riding it) passed its review gate on 2026-10-11.
ADR-024 adopted the mem engine as a third engine (2026-10-10,
[ADR-024](decisions/024-mem-engine.md)). The class-1 amend-in-place
window ([ADR-017](decisions/017-contract-versioning.md) §2)
dispositions are complete; the window terminates permanently at the
first `cargo publish` of `alkstore` — the gate's blessing covers
publishing.
## Architecture Documents
| Doc | Status | Purpose | Key OQs |
|---|---|---|---|
| [overview.md](overview.md) | draft | Crate family, feature surface, non-goals, evidence base | — |
| [core-contract.md](core-contract.md) | draft | The unified trait surface, delivery guarantees, tx seam | OQ-10 (resolved) |
| [overview.md](overview.md) | stable | Crate family, feature surface, non-goals, evidence base | — |
| [core-contract.md](core-contract.md) | stable | The unified trait surface, delivery guarantees, tx seam | OQ-10 (resolved) |
| [engine-sqlite.md](engine-sqlite.md) | stable | SQLite engine: forked-substrate/rusqlite mapping | OQ-06 (resolved), OQ-12 (resolved), OQ-13 (resolved) |
| [engine-postgres.md](engine-postgres.md) | stable | Postgres engine: tokio-postgres/LISTEN mapping | OQ-08 (resolved), OQ-12 (resolved), OQ-13 (resolved) |
| [engine-mem.md](engine-mem.md) | draft | Mem engine: in-process ephemeral mapping of the contract ([ADR-024](decisions/024-mem-engine.md)) | — |
| [queues.md](queues.md) | draft | Queue/scheduler/outbox semantics depth (resolved: ADR-009/ADR-010) | OQ-05 (resolved), OQ-09 (resolved), OQ-06 (resolved) |
| [deployment.md](deployment.md) | draft | Host semantics, connection budgets, knobs, matrix | OQ-08 (resolved) |
| [open-questions.md](open-questions.md) | draft | OQ tracker (promoted from OQ-ST register) | — |
| [engine-mem.md](engine-mem.md) | stable | Mem engine: in-process ephemeral mapping of the contract ([ADR-024](decisions/024-mem-engine.md)) | — |
| [queues.md](queues.md) | stable | Queue/scheduler/outbox semantics depth (resolved: ADR-009/ADR-010) | OQ-05 (resolved), OQ-09 (resolved), OQ-06 (resolved) |
| [deployment.md](deployment.md) | stable | Host semantics, connection budgets, knobs, matrix | OQ-08 (resolved) |
| [open-questions.md](open-questions.md) | draft | OQ tracker (promoted from OQ-ST register) — the register's own lifecycle; the question set is closed | — |
## Architecture Decision Records
+11 -4
View File
@@ -1,6 +1,11 @@
---
status: draft
last_updated: "2026-10-11 (the pre-release class-1 close-out pass — the publish→wake ordering tolerance recorded; ADR-023 §2's `heartbeat(extend)`/`save_offset` classifications; `EventReceiver::try_recv`'s closed shape; `get_job`'s id-global prose)"
status: stable
last_updated: "2026-10-11 (the pre-release class-1 close-out pass — the
publish→wake ordering tolerance recorded; ADR-023 §2's
`heartbeat(extend)`/`save_offset` classifications;
`EventReceiver::try_recv`'s closed shape; `get_job`'s id-global prose —
then wave-8 gate: flipped stable with the close-out pass's suite legs
landed; the contract text freezes at the gate, ADR-017 §2)"
---
# Core contract
@@ -792,8 +797,10 @@ before the engine specs are called `stable`:
totality over non-positive values covers `heartbeat(extend)`'s
relative-deadline argument and `save_offset`'s offset — both
classified 2026-10-11 by the close-out pass, the ADR-023 §2
annotation; their suite rows are the follow-up that
classification implies).
annotation; their suite legs landed at the wave-8 gate in
`job_handle_validity_predicate` and
`receiver_close_and_save_arms`, uniformly green on all three
engines).
- **`encode_payload` typed failure**
([ADR-023](decisions/023-fourth-review-round.md) §1) — the helper
returns `Result<Vec<u8>, Error::Codec>`; enqueue/publish store and
@@ -128,7 +128,16 @@ duty — that is what makes them non-events).
extensions*, fall in this class in fact — nothing was released
when they were made, so their additions ship inside the initial
contract v1 text (the initial release carries ADR-008 through
ADR-017 whole).
ADR-017 whole). *(Termination of record, 2026-10-11 — the wave-8
review gate: the pre-release class-1 close-out pass landed every
recorded disposition (the publish→wake ordering tolerance; the
ADR-023 §2 `heartbeat(extend)`/`save_offset` classifications; the
`EventReceiver::try_recv` closed shape; the `get_job` prose; the
mem-arithmetic no-action) and the gate audited that **no
undisposed class-1 candidate remains**. The class terminates
permanently at the core crate's first `cargo publish` — the 0.1.0
release this gate blesses, per §1's amendment; from that publish
on, contract changes are classes 2–4 only.)*
2. **Additive extension** (the ADR-009/010 *shape*, applied
post-release) — a new trait method, a new type, a new error
variant, a new field on a consumer-read value type (§3's
+4 -3
View File
@@ -1,7 +1,8 @@
---
status: draft
last_updated: "2026-10-10 (ADR-024 — the mem engine joins the crate
family as `alkstore-mem`; family/ADR tables updated)"
status: stable
last_updated: "2026-10-11 (wave-8 gate: flipped stable — the family
picture frozen with the shipped thing; no further surface under
development)"
---
# alkstore — Overview
+5 -2
View File
@@ -1,6 +1,9 @@
---
status: draft
last_updated: "2026-10-11 (close-out pass: the reads sentence now says the uniform shapes — get_job id-global on the handle, get_job_tx queue-filtered)"
status: stable
last_updated: "2026-10-11 (the reads sentence now says the uniform
shapes — get_job id-global on the handle, get_job_tx queue-filtered;
wave-8 gate: flipped stable, the release-facing semantic depth frozen
with the contract)"
---
# Queues, scheduler, outbox — semantics depth