decompose wave 5 — contract suite: audit-first split of the verification backlog (engines' columns already discharge most rows; map in review-wave-5's appendix), seven mechanism-grouped suite-row tasks (queue depth, scheduler, tx commit-atomicity, streams, locks, wakes, opts/backoff equivalence), two engine-side hardening tasks (sqlite commit-error arm, pg F-1 defense-in-depth), and the review-wave-5 gate that flips the engine specs to stable

This commit is contained in:
glm-5.3-flash committed 2026-10-10 05:37:53 +00:00
1 parent 9a00fb8a7e
commit 250511d480
11 files changed
+911 -2

No files matched your search

+63
View File
@@ -0,0 +1,63 @@
---
id: pg-suite-infra-hardening
name: Postgres test-infra hardening — F-1's defense-in-depth candidates
status: pending
depends_on: []
scope: single
risk: low
impact: isolated
level: implementation
tags: [wave-5, postgres-engine, tests]
---
## Description
Land the defense-in-depth test-infra hardening the wave-4 review
recorded for F-1 (`tasks/review-wave-4.md` Notes) — **explicitly not
load-bearing since `pg-fix-tx-wake` retired F-1's engine-side root
cause** (the compose test is deterministic, 20/20 solo runs green at
the fix-batch gate). This task exists because wave 5 was the named
home ("wave 5's suite hardening, or a wave-5-adjacent test-infra
task") and the candidates are cheap; if the wave-5 window gets tight,
cancelling this task loses nothing but insurance.
Work (the review's candidate dispositions, cheapest first):
- **(a) Harden `must_recv_event`'s deadline** — replace the 20 ms
polling loop with a parked `recv().await` under a timeout wrapper;
the deadline assert still bounds the property, the poll-loop's
wake-subscription interaction surface goes away.
- **(b) A `LOG_LAGGED`-style diagnostic counter on the bridge** —
discriminates "wake never arrived" from "wake arrived, re-drain
missed" if a wake-shaped flake ever recurs. Land only if it is a
small, honest addition (a test-observation counter, `#[cfg(test)]`-
gated or eprintln-postured per the house test style); skip and
record if it wants more machinery than that.
Candidate (c) (leave the skip-posture as-is) is the do-nothing arm —
adopted by default for anything not landed.
## Acceptance Criteria
- [ ] `must_recv_event` parks on `recv().await` under a timeout
wrapper (no polling loop); the pg stream tests stay green
against the harness server (a full stream-module run)
- [ ] Candidate (b) either landed small or recorded as skipped with
the reason
- [ ] `cargo test -p alkstore-postgres` green (server-less skips
clean); clippy `-D warnings`; fmt clean
## References
- tasks/review-wave-4.md (F-1's Notes — the candidate dispositions)
- tasks/review-wave-4-fixes.md (F-1 retired; defense-in-depth posture)
- tasks/pg-fix-tx-wake.md (the engine-side fix that made this
non-load-bearing)
## Notes
> To be filled by implementation agent
## Summary
> To be filled on completion