Files
alkstore/tasks/review-wave-5.md
T

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
suite-queue-depth-rows
suite-scheduler-rows
suite-tx-commit-atomicity-rows
suite-stream-rows
suite-lock-rows
suite-wake-rows
suite-opts-backoff-rows
sqlite-commit-error-arm
pg-suite-infra-hardening
broad low project review
wave-5
review-gate

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:

  1. 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.
  2. Version stamps. Every row's Contract stamp: items cite ADR § per version_stamp.rs's convention; stamps accumulate on amendment (the extended enqueue_opts_resolution row is the amendment case to check); greppable via STAMP_MARKER. Cross-check against ADR-017 §2's no-silent-change discipline: every stamp's cited ADR § actually pins the behavior tested.
  3. 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).
  4. 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.
  5. 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.
  6. Flip the engine specs to stable — engine-sqlite.md and engine-postgres.md frontmatter status: draft → status: stable, with dated last_updated annotations citing this gate. Update docs/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 stable with 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