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:
1 parent
9a00fb8a7e
commit
250511d480
11 files changed
+911
-2
No files matched your search
@@ -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
|
||||
Reference in new issue
Block a user