# Decision log — WP37 | UTC | Decision | Rationale | |---|---|---| | 2026-11-01T08:2x | Posted price = weekly duration-weighted mode | store-mixture oscillation in anti-bot storefront feeds (Phase 0 §3.3) | | 2026-11-01T08:2x | Primary matching tiers A+B; C, D sensitivity | validation: C precision 0.45 (text) ; B 1.00 (text) / 0.913 (UPC) ; D 0.98 | | 2026-11-01T08:2x | Exclude size-less listings and multi-product circular offers from matching | giant chained groups (141 listings) in v0 | | 2026-11-01T08:2x | **Preregistration frozen** | sha256 research/preregistration.md = 4dcb257ee9a1d335d51f639eece1d22719ff7031f9735ebf977409c8a7a0b96e ; config/basket.yaml = c9a0f56faf225ab242f7f623e1c948ea88c86b1fdc617da9a51986ef1ba5ad45 | | 2026-11-01T08:4x | **A-001** Model E complete-block design (B widest-coverage banners × items carried by all B; B=5 primary, 4/6/7 sensitivity) | with the preregistered rule only 7 items were carried by every banner that covered ≥ 60 % of items; K=1 needs a complete block; estimand unchanged | | 2026-11-01T08:4x | **A-002** Model E candidate screen [1/4, 4] × item median unit price | mis-parsed sizes (e.g. 'bananas' 22 $/kg at one banner) produced absurd item costs; data-cleaning rule, applied symmetrically | | 2026-11-01T08:5x | **A-003** Model B: low-price episodes classified as `return` (post-episode price within ±2 % of pre-episode reference), `reset_down`, `reset_up`; H3 reported for `return` (temporary sales) and for all; event study anchored at episode start | the 10 % rule also flags permanent regular-price cuts; preregistered H3 concerns promotions (temporary) — classification implements that distinction, estimand unchanged | | 2026-11-01T09:1x | Validation labels re-created (round 3) after `make match` overwrote the annotated CSV; LLM labels identical to round 2 on 238/240 (two C pairs flipped SAME↔UNSURE); operator keeps UNSURE for both; guard added so an annotated sample is never overwritten; CSVs force-added to git | reproducibility incident found by the full re-run |