| D-001 |
2026-11-01 |
Use an owner-authorised read-only .backup of the production SQLite DB as the single raw source; no scraping, no public-API use. |
Re-crawling dealer sites; calling /api/* |
Direct authorised export is strictly richer (price_log, sync_log) and lawful; robots.txt disallows /api/. |
| D-002 |
2026-11-01 |
Drop the users table on the production node before transfer; treat VIN, URL, images, description, exact GPS as restricted (never committed/released). |
Keep full copy |
Personal-information minimisation (Phase 0 §6 governance). |
| D-003 |
2026-11-01 |
Dynamic analyses (H2, H3, H5, AMLI) use the dynamic sample = direct dealer sites + full-inventory portals (otogo, autousagee) + banners, excluding sampled portals (autotrader, cargurus), the private-seller marketplace (kijiji), flickering/failed connectors (leprixdugros, albioccasion, baiecomeaugm, septilesgm, stjeromeautodepot, excelmoto) and uid classeauto:-98. |
Use all sources |
Sampled portals create spurious exits (78 % of cargurus exits < 1 day); flicker shares 0.52–0.94 for excluded connectors (audit §5). |
| D-004 |
2026-11-01 |
Listing exit = last observation followed by ≥ 7 days of absence before the snapshot (else right-censored at last_seen). Exit is labelled "observed disappearance", never "sale". |
2-miss rule of the platform (≈ 7 h) |
Reactivation share up to 0.44 on otogo; a 7-day confirmation window makes flicker negligible; sale is unobserved. |
| D-005 |
2026-11-01 |
Sustained price paths: a price level lasting < 48 h that reverts to the immediately preceding price is removed (A→B→A transient); uids with ≥ 3 such reversions are flagged "oscillating" and excluded from markdown analyses (kept in hedonics with first sustained price). |
Use raw price_log |
Oscillation artefacts (e.g. otogo:1694844 alternating twice a day) would be counted as markdowns and rises. |
| D-006 |
2026-11-01 |
H3 is estimated as an association (event-study / distributed lags with market×time and product×time controls) and explicitly not causal. |
Causal claims via IV |
No credible exogenous variation in competitor repricing; reflection problem. |
| D-007 |
2026-11-01 |
H6: AMLI is constructed and validated internally (component coherence, leave-one-component-out predictive checks, bootstrap CIs, regional cross-sections) ; external forecasting tests are declared infeasible for a 81-day panel. |
Regress AMLI on monthly StatCan series |
≤ 3 monthly overlapping points; any "forecasting power" claim would be unsupported. |
| D-008 |
2026-11-01 |
Left-censored stock (listings already active at the first crawl, 2026-08-12) is excluded from duration-based hazards (unknown entry date) but kept for hedonics; sensitivity: include with entry = first_seen (lower bound). |
Treat first_seen as entry for all |
Day-1 stock (≈ 46 k) has unknown listing age. |
| D-009 |
2026-11-01 |
Vehicle age measured in years as (listing date − (model year − 1, Sept 1)) ... see analysis plan; mileage in 10 000 km; splines for both. |
Model year dummies only |
Continuous age needed for the depreciation surface. |
| D-010 |
2026-11-01 |
Hedonic quality fixed effects are make×model (A2) and make×model×trim (A4), not make×model×model-year: with an 81-day window, model-year FE would absorb vehicle age (age varies only with entry date within a model-year cell). Age is identified across model years. |
make-model-year cohort FE as written in the plan |
Collinearity of age and model-year FE in a short panel (hedonic.py docstring). Amendment to analysis_plan §3 Model A. |
| D-011 |
2026-11-01 |
Model D (competitor response) is estimated as a linear probability model with market×week and make-model-year×week fixed effects (pyfixest), SEs clustered by dealer (primary) and region (secondary); cloglog with coarse FE as robustness. |
cloglog with high-dimensional FE |
Nonlinear models with ~10⁴ FE cells on 2.9 M listing-days are not estimable with available tools (incidental-parameter and compute); daily base rate ≈ 1 % so LPM is a reasonable local approximation. |
| D-012 |
2026-11-01 |
Anonymised identifiers use 10-hex-character SHA-1 prefixes (listings) and 8 (dealers) after a collision was detected at 7 characters (139 expected collisions among 273 k uids). |
7-character ids |
Birthday-bound collisions produced duplicate listing rows in the risk set (E-005). |
| D-014 |
2026-11-01 |
Left-censoring is defined per source: a listing is left-censored if it entered before 2026-08-13 00:00 UTC or within 24 h of its source's first non-empty crawl (otogo started on day 6 with 24 565 listings that day, autousagee on day 11 with 11 925). |
Global day-1 cut-off only (plan v1.0) |
Descriptives agent found 33 224 start-up listings (29 % of S2) whose "entry" was the connector start date; durations and hazards would be biased. Amendment to analysis_plan §1 (S2). |
| D-015 |
2026-11-01 |
AMLI market-week panel starts at panel week 2 (days 14–76): weeks 0–1 are contaminated by the portal start-ups (otogo day 6, autousagee day 11). Supervised weights fitted on weeks 2–5, evaluated on weeks 6–10. Coordinates outside the Quebec bounding box (lat 44–63, lng −80 to −56) are treated as missing. |
Keep weeks 0–1 |
Province components in week 0 are outliers (start-up stock composition), see figure 8 draft. |
| D-016 |
2026-11-01 |
Model B (first-markdown cloglog) and the first-cut event study are re-estimated on the full first-cut risk set after the NULL→0 fix (E-016); the earlier survivor-only estimates are discarded and never reported. |
Keep earlier estimates |
They conditioned on the outcome. |