6.8 KiB
6.8 KiB
id, name, status, depends_on, scope, risk, impact, level, tags
| id | name | status | depends_on | scope | risk | impact | level | tags | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| review-wave-5 | Wave 5 review gate — the suite as compatibility instrument | pending |
|
broad | low | project | review |
|
Description
The wave-5 review gate (docs/plans/implementation.md §Review gates):
"the suite as compatibility instrument — every backlog row present,
version-stamped, green on both engines; this is the gate that flips
the engine specs to stable."
Primary lenses:
- Backlog audit — every row present. Walk core-contract.md §Verification backlog item by item against the suite (and the engine-side pins for the SQLite-scoped rows) and record the discharge map. The decomposition's audit (below) is the starting point — verify each "discharged" claim by reading the pinning row/test, not by trusting the map.
- Version stamps. Every row's
Contract stamp:items cite ADR § perversion_stamp.rs's convention; stamps accumulate on amendment (the extendedenqueue_opts_resolutionrow is the amendment case to check); greppable viaSTAMP_MARKER. Cross-check against ADR-017 §2's no-silent-change discipline: every stamp's cited ADR § actually pins the behavior tested. - Green on both engines. The SQLite column green server-less; the pg column green against the harness server (twice, the wave-4 gate's posture). Workspace gates green (build/test/clippy/fmt).
- Dispositions audited. The decomposition parked several judgment calls in task Notes — verify each was made and recorded: the M-1 retention-failure pin's location (suite row vs engine-side), the beyond-64 skip-forward leg's location, the backoff cap leg's location, the scheduler fire-wake parity call, the lock-row divergence call (if any), the SQLite reconnect-success test taken/not-taken.
- Conformance spot-checks. The rows assert what the ADR text pins (no weaker, no stronger — a row pinning beyond the ADR text is a suite defect: it would fail a correct engine); the determinism posture holds (tolerance-bounded state assertions only, no timing-value asserts, no two-task races) including the scheduler rows' documented posture extension; no duplication between rows' legs.
- Flip the engine specs to
stable—engine-sqlite.mdandengine-postgres.mdfrontmatterstatus: draft→status: stable, with datedlast_updatedannotations citing this gate. Updatedocs/plans/implementation.md: the wave table's wave-5 status, a review-rounds entry for this gate.
Acceptance Criteria
- Backlog discharge map recorded (every §Verification backlog item → its pinning row/test or an explicit gap with a disposition)
- Every row version-stamped per convention; amendment stamps accumulated; stamps verified against the cited ADR text
- Suite green on both engines (SQLite server-less; pg vs harness, two consecutive full runs); workspace gates green
- All parked dispositions from the wave-5 tasks audited and recorded
- Engine specs flipped to
stablewith dated annotations; implementation.md updated (wave table + review rounds) - Findings recorded; wave 6 decomposition may proceed
References
- docs/plans/implementation.md §Review gates (wave 5), §The waves
- docs/architecture/core-contract.md §Verification backlog
- docs/architecture/decisions/017-contract-versioning.md §4.2
- docs/architecture/decisions/022-contract-suite-layout.md
- alkstore-contract-suite/src/version_stamp.rs (the stamp convention)
Notes
To be filled by implementation agent
Summary
To be filled on completion
Appendix — the decomposition's backlog audit (verify, don't trust)
Discharged by existing rows (waves 1/3/4 — verify each):
| Backlog item | Discharged by |
|---|---|
| Name validation at every entry point (ADR-008 §4) | name_validation_rejects_empty_and_reserved (exemplar) |
schedule() queue-argument validation (ADR-021 §3) |
same exemplar row |
| Numeric-domain semantics (ADR-023 §2) | extent_clamp_semantics + duration_refusal_on_non_positive_ttl |
encode_payload typed failure + round-trip (ADR-023 §1, ADR-020 §4) |
payload_round_trip_stores_exact_encoding |
PayloadTooLarge occurrence asymmetry (ADR-016 §5) |
payload_too_large_never_produced_on_sqlite + payload_too_large_produced_on_pg |
| Drop = rollback no-ghosts (ADR-021 §4) | drop_rollback_leaves_no_ghosts |
| In-tx read-your-own-writes (ADR-021 §1) | in_tx_reads_see_own_writes |
save_offset_tx exactly-once-within-a-business-tx shape |
discharged across in_tx_reads_see_own_writes (own-save visibility) + drop_rollback_leaves_no_ghosts (the save never lands on rollback) — verify the combination genuinely covers the backlog row's claim |
| Receiver error/close arms + save-offset monotone composition (ADR-021 §5, ADR-019 §6) | receiver_close_and_save_arms (both columns; the pg reconnect-stays-open leg pins engine-side — verify that pin exists) |
| Plain-path SQLite open (ADR-023 §3) | engine-side: uri_shaped_open_path_is_a_literal_filename (open_tests.rs) — SQLite-scoped backlog row per the sqlite-engine-integration task |
| Watcher cadence default + knob (ADR-023 §4) | engine-side: poll_interval_flows_to_the_watcher_config (open_tests.rs) — same scoping |
Added by wave-5 tasks (verify presence + stamps):
| Backlog item | Wave-5 task |
|---|---|
| Job-handle validity predicate (ADR-010 §2) | suite-queue-depth-rows |
| ADR-010 depth: reclaim-eats-attempt, dead-letter, no-stranded-rows sweep + M-1 retention pin | suite-queue-depth-rows |
| Scheduler boundary/catch-up/leadership (ADR-009) | suite-scheduler-rows |
outbox_enqueue_tx commit-atomicity (ADR-014) |
suite-tx-commit-atomicity-rows |
publish_with_key_tx commit-atomicity (ADR-015 §2) |
suite-tx-commit-atomicity-rows |
with_tx panic disposition (N-5) |
suite-tx-commit-atomicity-rows |
| Cross-engine stream ordering equivalence (ADR-015 §3/§4) | suite-stream-rows |
trim_to full semantics (ADR-015 §5) |
suite-stream-rows |
| Lock TTL/expiry re-acquisition + concurrent loser (ADR-008 §7) | suite-lock-rows |
Wake semantics under WakeReceiver shapes (ADR-008 §3) |
suite-wake-rows |
| Backoff-curve equivalence (ADR-010 §3) + deferred opts clock legs (ADR-020) | suite-opts-backoff-rows |
Engine-side hardening riding the wave-5 window:
| Item | Task |
|---|---|
| SQLite commit-error-arm coverage (wave-3 review deferral) | sqlite-commit-error-arm |
| F-1 defense-in-depth (pg test-infra; not load-bearing) | pg-suite-infra-hardening |