Files
alkstore/tasks/pg-fix-forwarder-diagnosability.md
T

2.2 KiB

id, name, status, depends_on, scope, risk, impact, level, tags
id name status depends_on scope risk impact level tags
pg-fix-forwarder-diagnosability Surface the forwarder's swallowed connect/poll failures (review 004 item 7 arms) pending
decide-log-facade-adoption
pg-fix-forwarder-hardening
narrow low component implementation
review-004-fixes
postgres-engine
forwarder

Description

The two narrow diagnosability arms in the pg forwarder, per docs/reviews/004-pre-release-general-review.md §"Findings recorded, not fixed" item 7: the reconnect arm's connect failures are swallowed with .ok() (forwarder.rs:839 — the review's ref; re-locate) and the loop's exit discards the poll error (forwarder.rs:855-869) — an operator sees nothing before wake loss.

Fix: surface both failures. The output form follows the log-facade decision of record (decide-log-facade-adoption): through the adopted facade, or through the documented eprintln! discipline if the decision declined adoption. The error content must stay secret-free (no DSN/password material — the standing verified property; re-grep after).

Sequenced after pg-fix-forwarder-hardening deliberately: same file, and the hardening's restructure may move the reconnect arm and the loop-exit path this task touches.

Acceptance Criteria

  • Failed reconnect connects are surfaced (not .ok()-swallowed) with enough context to diagnose (error class, attempt/backoff state — no endpoint credentials)
  • The loop's exit path surfaces the poll error instead of discarding it
  • The output form matches the log-facade decision of record; the secret-free property re-verified by grep
  • Existing forwarder tests green unchanged; the hardening task's new pins green
  • cargo test -p alkstore-postgres (harness server), clippy -D warnings, fmt clean; workspace gates green server-less

References

  • docs/reviews/004-pre-release-general-review.md §"Findings recorded, not fixed" item 7 (the finding, the swallowed-error sites)
  • tasks/decide-log-facade-adoption.md (the output-form decision)
  • tasks/pg-fix-forwarder-hardening.md (the same-file sequencing)

Notes

To be filled by implementation agent

Summary

To be filled on completion