# Contract (P0) **Question:** Did the GoC 5-year benchmark yield's average daily change differ after the BoC's 2020-03-04 emergency cut? **Estimand:** mean(100*(y_t - y_{t-1})) over rows with post_cut=1 minus the same mean over the 120 trading days right before the first post_cut=1 row; 95% Welch (unequal-variance) CI. Meaningful only if the file contains post_cut=1 rows plus ≥120 earlier changes, and if the treatment flag is used exactly as given. **Outputs:** out/results.json (sample_start, sample_end, n_treated, baseline_metric, model_metric, effect_estimate, effect_ci_low, effect_ci_high, conclusion, task_id, feasibility, feasibility_reason, data_issues, n_input_rows, n_analysed, random_seed); out/figure1.png; out/table1.csv (year,n_days,mean_yield,mean_change_bp); out/report.md (6 sections); out/analysis.py; out/claims.json. **Information rules:** changes between consecutive file rows, dated t; post_cut used as provided, never redefined; only data/gc5y_daily.csv; audit before estimating; findings go in data_issues. **Invalidating conditions:** no treated rows, or fewer than 120 pre-window changes → premise_invalid / infeasible, inestimable keys null, no proxy estimate.