Data forensics findings

Beyond-DQ artefacts surfaced before modelling.

Forensic findings

Beyond-DQ artefacts surfaced by the silver-clean + forensics layer. These describe how the team neutralised legacy SFA / ERP issues before any modelling ran.

FindingCountTreatmentDetail
Cross-file Outlet_ID integrity0reported cleanUnusual for legacy SFA exports; suggests upstream curation. Row-level anomalies remain primary forensic focus.
Outlet_Type typos normalised985cleaned3 distinct typo->canonical mappings applied
Outlet_Size lowercase 'small' detected600flaggedLowercase 'small' has a cooler-count profile inconsistent with canonical Small outlets; reclassification applied where cooler_count >= 2.
Outlet_Size reclassified via cooler count225cleanedLowercase 'small' rows with cooler_count >= 2 re-mapped to Medium/Large/Extra Large based on cooler thresholds.
Outlet_Size imputed from cooler count196cleanedNull Outlet_Size values filled using cooler-count thresholds.
Lat/Lon swapped values recovered200cleanedSource had Latitude and Longitude column values transposed. Swap was deterministic and recoverable (both values land in Sri Lanka after swap). 1.2% of outlets reclaimed.
Coordinates outside coarse land-mask2,241flagged and quarantined (>= 5.0 km)Detected via `global_land_mask.globe.is_land()` against a 1-arc-min (~1.85 km) Natural Earth land grid. Outlets stratified by distance to the nearest confirmed-land outlet: <0.5km coastal_confirmed, <2km likely_coastal, <5km borderline, >=5km likely_ocean_outlier. QUARANTINED 521 outlets with nearest_land_outlet_km >= 5.0 (the 'likely_ocean_outlier' bucket). The remaining flagged outlets are coastal businesses kept in the clean set; the library's 1-arc-min grid is too coarse to label them ocean. Audit: outputs/audit/sea_coordinate_outlets.csv. Higher-resolution SL land polygon queued for the next iteration.
Transaction value classification0cleaned and flagged3-way classification: data_error+null_row quarantined; return/promo_or_error/foc_promo flagged and kept (signal, not noise).
Codebook references absent column1flaggedCodebook documents this field but raw export omits it; treated as documentation drift, not data quality issue.
Codebook filename divergence1flaggedNo impact on data; logged as governance finding.
Automated-entry signatures0none foundNo (Outlet, SKU) pair with >= 6 consecutive identical Volume_Liters.
Stockout months (zero sandwiched between non-zero)80,611flagged for modelingUsed as constraint indicator in Phase 5 (not quarantined).
Dead-then-resurrected outlets2,707flagged>= 6 consecutive zero months then resumed — flagged for review.