75 lines
3.1 KiB
Markdown
75 lines
3.1 KiB
Markdown
---
|
||
id: release-findings-2-3-disposition
|
||
name: Review 003 Findings 2–3 — the parked pre-release dispositions
|
||
status: pending
|
||
depends_on: []
|
||
scope: narrow
|
||
risk: low
|
||
impact: component
|
||
level: implementation
|
||
tags: [wave-8, tests, sqlite-engine, postgres]
|
||
---
|
||
|
||
## Description
|
||
|
||
Review 003's Findings 2–3, parked to the pre-release pass by the
|
||
wave-6 gate (`docs/reviews/003-wave-5-general-review.md`; the park
|
||
trail: `tasks/review-wave-6.md` §Rider closed). The review's own
|
||
recommendation shapes the task — the cheap seams land, the
|
||
race-shaped arm stays parked with its disposition recorded, so the
|
||
next general review does not re-derive the inventory:
|
||
|
||
- **Finding 2 (LOW, pg forwarder narrow untested arms)**: land the
|
||
cheap seam for (a) — the "connection died before/during the LISTEN"
|
||
fall-through to the reconnect path (`forwarder.rs:693-698`) — using
|
||
the house `cfg(test)` seam pattern (`pg-fix-forwarder-reconnect`'s
|
||
config seam; `sqlite-commit-error-arm`'s one-shot flag). The
|
||
mid-recv-loop stale-command abandonment race arm (b)
|
||
(`forwarder.rs:719-727`) and the small defensive arms
|
||
(`mid_listen_error` ack, forwarder-gone, shutdown abort/await) stay
|
||
parked with the code-read as their pin — **record that disposition
|
||
explicitly** (the review's "either way the disposition should be
|
||
recorded").
|
||
- **Finding 3 (LOW, SQLite rollback-failure-on-drop arms)**: a
|
||
rollback-fault arm on the existing commit-fault seam
|
||
(`alkstore-sqlite/src/seam.rs` — the `sqlite-commit-error-arm`
|
||
machinery) covering both drop arms in one small test:
|
||
`SqliteTxHandle::drop`'s failed-`ROLLBACK` path (`tx.rs:439-447`) and
|
||
`ConnLease::drop`'s (`tx.rs:166-175`) — pin the same properties the
|
||
commit test pins (error surfaced/printed, connection dropped, writer
|
||
slot replenished, store usable).
|
||
|
||
If a seam proves more invasive than the review estimated, the
|
||
acceptable fallback is the code-read-as-pin disposition for that arm —
|
||
recorded, not silent. The line between "landed" and "parked with
|
||
disposition" is this task's judgment call, made explicitly in Notes.
|
||
|
||
## Acceptance Criteria
|
||
|
||
- [ ] Finding 2's (a) arm seam-tested (or its not-taken disposition
|
||
recorded with the invasiveness reason); the race arm + defensive
|
||
arms' parked disposition recorded
|
||
- [ ] Finding 3's rollback-fault test landed covering both drop arms
|
||
(or its not-taken disposition recorded)
|
||
- [ ] The disposition record written so a future general review reads
|
||
the inventory as closed, not re-derivable
|
||
- [ ] `cargo test -p alkstore-sqlite` green server-less; `cargo test
|
||
-p alkstore-postgres` green server-less (SKIP posture) and — if
|
||
the pg seam landed — green against the harness server; clippy
|
||
`-D warnings`; fmt clean
|
||
|
||
## References
|
||
|
||
- docs/reviews/003-wave-5-general-review.md §Finding 2, §Finding 3
|
||
- tasks/review-wave-6.md (the park record)
|
||
- tasks/sqlite-commit-error-arm.md (the seam pattern + the commit-arm
|
||
test this mirrors)
|
||
- tasks/pg-fix-forwarder-reconnect.md (the pg config-seam precedent)
|
||
|
||
## Notes
|
||
|
||
> To be filled by implementation agent
|
||
|
||
## Summary
|
||
|
||
> To be filled on completion |