p1-sys-2022-cover-letter-join-cardinality

in-progresstype/backlog

Backlog: SYS-2022 — Cover letter 1:N join row multiplication

TL;DR

Vault anchor for SYS-2022 under [[Projects/anabatic-contract-management-system/context/sys-1970-cms-performance-issues-breakdown|SYS-1970]]: fix row multiplication from 1:N LEFT JOINs on cover-letter dashboard/list SQL. Implementation narrative lives in [[Projects/anabatic-contract-management-system/context/clickup-execute-sys-2022-2026-05-13|ClickUp execute report]]; evidence in [[Projects/anabatic-contract-management-system/reports/backend-cover-letter-query-performance-audit|query audit]] §1.

Description

  • ClickUp: SYS-2022 — parent SYS-1970.
  • Code: backend-contract-portal-devcover-letter-dashboard.helper.ts, runner.helper.ts / LATERAL join pattern; module docs under src/modules/cover-letters/docs/README.md.

Acceptance Criteria

  • Dashboard helper uses deterministic one-row-per-cover_letter_id joins (no “first raw row wins”) for the refactored path — per execute report; confirm in repo.
  • Staging: cardinality check (row count vs COUNT(DISTINCT cover_letter_id)) + EXPLAIN (ANALYZE, BUFFERS) before/after — evidence in ClickUp.

Priority

  • Priority: p1
  • Rationale: Wrong-row risk and inflated intermediate joins; listed High in SYS-1970 breakdown.

Dependencies

  • Blocks: —
  • Blocked by: —
  • Related ADR: —

Links

  • Umbrella: [[Projects/anabatic-contract-management-system/backlog/p1-fix-performance-issues]]
  • Execution log: [[Projects/anabatic-contract-management-system/context/clickup-execute-sys-2022-2026-05-13]]
  • Audit: [[Projects/anabatic-contract-management-system/reports/backend-cover-letter-query-performance-audit]]

Notes

  • This file is intentionally thin; treat execute report + repo as source of truth for diffs and line-level detail.