Wave-4 fix-batch decomposition: seven pg-fix tasks + review-wave-4-fixes gate from the general review (002) — forwarder reconnect retry (Finding 1, with the failed-connect test seam), tx pg_notify wakes retiring F-1's engine arm (Finding 2), max_size/DSN-options open path (Finding 3), stale-UNLISTEN generation drop (Finding 4), scheduler quarantine/retry (Finding 5), decode dedupe + cleanups, doc alignment; wave 5 gates on the two HIGH fixes landing
This commit is contained in:
1 parent
89828170f4
commit
e067357de9
9 files changed
+785
-2
No files matched your search
@@ -0,0 +1,93 @@
|
||||
---
|
||||
id: review-wave-4-fixes
|
||||
name: Review gate — wave-4 fix batch (review 002 resolutions)
|
||||
status: pending
|
||||
depends_on: [pg-fix-forwarder-reconnect, pg-fix-tx-wake, pg-fix-open-path, pg-fix-stale-unlisten, pg-fix-scheduler-resilience, pg-fix-dedupe-cleanup, pg-fix-docs-alignment]
|
||||
scope: moderate
|
||||
risk: low
|
||||
impact: phase
|
||||
level: review
|
||||
tags: [wave-4-fixes, review]
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
Review the fix batch decomposed from the wave-4 general review
|
||||
(`docs/reviews/002-wave-4-general-review.md`) before wave 5
|
||||
decomposes. The batch's own gate — distinct from the general review
|
||||
that found the issues: verify each finding's fix is *real* (code-read
|
||||
against the review's failure mechanism, not test-name-trust), and
|
||||
that the fixes didn't damage the postures the wave-4 gate pinned.
|
||||
|
||||
Check:
|
||||
|
||||
- **Finding 1 (forwarder reconnect)**: the loop survives repeated
|
||||
failed connects — code-read the restructured reconnect arm (no path
|
||||
back to the `take()`'s `else return`); the failed-connect arm is
|
||||
test-exercised (the seam/injection is real, not a mock that never
|
||||
fails); the fanout-sender release invariant (receivers terminal iff
|
||||
loop gone) holds on every exit path.
|
||||
- **Finding 2 (tx wake)**: `pg_notify` present in
|
||||
`publish_with_key_tx` (contract obligation) and the enqueue twins
|
||||
(parity), commit-atomic inside the caller's tx, empty payload
|
||||
(channel-only wakes); the no-ghost rollback arm pinned; the compose
|
||||
test's determinism evidence (repeated solo runs) recorded.
|
||||
- **Finding 3 (open path)**: `max_size` guard before any round trip;
|
||||
the DSN options append (or documented engine-wins) verified against
|
||||
the actual setter semantics.
|
||||
- **Finding 4 (stale UNLISTEN)**: the generation-drop/reconcile
|
||||
decision unit-pinned across all four command/staleness
|
||||
combinations; the invariant stated in the forwarder docs.
|
||||
- **Finding 5 (scheduler)**: quarantine + retry behavior vs the
|
||||
review's fix shape; the leadership exit-path posture documented; the
|
||||
doc claim corrected.
|
||||
- **Minor notes**: dedupe (one decode owner — grep-auditable), the
|
||||
const, the helper routing, the doc alignments in deployment.md.
|
||||
- **No regressions**: the wave-4 gate's pinned postures re-spot-checked
|
||||
where the fixes touched them — forwarder integrity (the two
|
||||
deadlock pitfalls still structurally excluded), seam integrity,
|
||||
close semantics (the pg arm: open across reconnects, close at
|
||||
shutdown only), the no-replay honesty pin, entry-point validation.
|
||||
- **Records**: `tasks/review-wave-4.md` F-1 note and
|
||||
`docs/plans/implementation.md`'s review-rounds line consistent with
|
||||
what landed.
|
||||
- **Gates**: full workspace build/test/clippy/fmt; the pg suite green
|
||||
against the harness server; the compose test run repeatedly (the
|
||||
determinism claim verified, not asserted).
|
||||
|
||||
**Wave-5 gate**: per the general review's sequencing, wave 5
|
||||
decomposes after Findings 1–2's fixes land (the suite's wake-driven
|
||||
rows would otherwise inherit a hang-shaped false failure). This gate
|
||||
confirms both landed; if only they have, say so explicitly — wave 5
|
||||
may decompose with 3–7 still in flight only if this gate judges the
|
||||
remainder wake-independent (expected: yes — 3–7 touch no wake-driven
|
||||
suite surface).
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- [ ] Each finding's fix verified against the review's failure
|
||||
mechanism (code-read + the new tests' actual coverage)
|
||||
- [ ] No regressions to the wave-4 gate's pinned postures (re-spot-
|
||||
checked at the touched sites)
|
||||
- [ ] Records consistent (F-1 retirement, review-rounds line)
|
||||
- [ ] All gates green (incl. against the harness server); compose-test
|
||||
determinism evidence recorded
|
||||
- [ ] Findings recorded; wave 5 decomposition disposition stated
|
||||
explicitly
|
||||
|
||||
## References
|
||||
|
||||
- docs/reviews/002-wave-4-general-review.md (the findings this batch
|
||||
resolves)
|
||||
- tasks/review-wave-4.md (the wave-4 gate's pinned postures + F-1's
|
||||
record)
|
||||
- docs/plans/implementation.md (Review gates; Review rounds so far)
|
||||
- tasks/pg-fix-*.md (the batch's seven tasks)
|
||||
|
||||
## Notes
|
||||
|
||||
> To be filled by implementation agent
|
||||
|
||||
## Summary
|
||||
|
||||
> To be filled on completion
|
||||
Reference in new issue
Block a user