Document null_uprn as a portfolio-wide canary, not a partitioning drop count

Records the agreed reconciliation semantics: null_uprn reports portfolio
properties missing a UPRN (expected zero) and may overlap unmatched_to_portfolio,
rather than strictly partitioning the Calico rows.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Khalim Conn-Kowlessar 2026-07-13 15:23:46 +00:00
parent 3a77a1a811
commit 0588ae233a

View file

@ -7,7 +7,15 @@ from domain.condition.records.calico.calico_property import CalicoProperty
@dataclass(frozen=True)
class LoadReport:
"""The reconciliation a Calico load emits so nothing vanishes silently
(ADR-0064): how many observations were loaded versus dropped, and why."""
(ADR-0064): how many observations were loaded versus dropped, and why.
``loaded``, ``unmatched_to_portfolio`` and ``blank_placeholder`` account for
the Calico rows. ``null_uprn`` is a portfolio-wide data-quality canary the
count of properties in the portfolio whose UPRN is null (expected: zero)
*not* a per-row drop reason, so it does not partition with the others: a
Calico reference pointing at a null-UPRN property is reported both here and
under ``unmatched_to_portfolio``.
"""
loaded: int
unmatched_to_portfolio: int