1{"ts": "2026-11-01T17:47:25Z", "step": "ingest.load_snapshot", "snapshot_sha256": "8d963ba9f1f7a7b73a0d8177f6017b1ea53c2bd455aef7b5ef4814dedc0d98fb", "stores": 4082, "stores_live": 1569, "products": 465388, "products_active_published": 390108, "sync_log": 577773, "details_with_variants": 354720, "with_sku": 362832, "with_grams": 198454, "registry_rows": 4082, "registry_adds_geo_to_db_stores": 0, "registry_adds_postal_to_db_stores": 0}2{"ts": "2026-11-01T17:48:50Z", "step": "clean.listings", "assortment_sample": {"listings": 370828, "stores": 1568, "categories": 20, "dup_in_store_listings_removed": 19245, "share_autre": 0.1112, "available_0_share": 0.1306, "on_sale_share": 0.0871, "has_variants_share": 0.2785, "sku_share": 0.7662, "vendor_share": 0.7562}, "price_exclusions": {"non_cad_listing_or_store": 729, "price_missing_or_on_request": 9637, "price_zero": 0, "price_gt_cap": 78}, "price_quantiles_cad": {"0.001": 0.26, "0.01": 1.5, "0.1": 5.99, "0.5": 24.99, "0.9": 273.83, "0.99": 3699.99, "0.999": 18499.62}, "top10_stores_share_of_assortment": 0.3705, "flow": [["DB product rows (all statuses, all stores)", 465388], ["active = 1 and listing_status = 'published'", 390108], ["… of an enabled store with >= 1 published listing", 390108], ["… excluding store_kind = hors_mission", 390074], ["… keeping one representative per (store, normalised title) and non-empty title [ASSORTMENT SAMPLE]", 370828], ["… and CAD-priced store/listing", 370099], ["… and a positive listed price <= 50 000 CAD, not on request [PRICE SAMPLE]", 360384]]}3{"ts": "2026-11-01T17:49:35Z", "step": "clean.stores", "live_stores": 1569, "regions_layer": null, "region_source": {"db": 1223, "unknown": 346}, "region_conflicts": 0, "unknown_region_listings": 153442, "phone_shared_stores": 250, "certified_stores": 718, "region_final_counts": {"Inconnue": 346, "Montréal": 211, "Montérégie": 164, "Estrie": 145, "Capitale-Nationale": 107, "Saguenay–Lac-Saint-Jean": 98, "Chaudière-Appalaches": 93, "Laurentides": 91, "Centre-du-Québec": 61, "Lanaudière": 59, "Bas-Saint-Laurent": 39, "Outaouais": 37, "Mauricie": 29, "Gaspésie–Îles-de-la-Madeleine": 28, "Laval": 22, "Abitibi-Témiscamingue": 21, "Côte-Nord": 15, "Nord-du-Québec": 3}, "agreement_db_vs_pip": null}4{"ts": "2026-11-01T17:51:40Z", "step": "features.match_products", "universe_listings": 360384, "universe_stores": 1498, "with_sku": 260713, "with_brand": 275648, "pairs_by_tier": {"D": 2830, "A": 2106, "B": 808, "C": 490}, "pairs_comparable_by_tier": {"A": 1952, "D": 1857, "B": 730, "C": 357}, "median_abs_log_gap_by_tier": {"A": 0.0, "B": 0.0, "C": 0.0351, "D": 0.2546}, "share_zero_gap_by_tier": {"A": 0.5033, "B": 0.6795, "C": 0.3939, "D": 0.0901}, "groups_AC": 2841, "groups_AC_multi_store": 2841, "listings_in_groups": 6062, "stores_in_groups": 224, "groups_size_gt_10": 1, "regions_pairs": null}5{"ts": "2026-11-01T17:52:34Z", "step": "clean.siblings", "sibling_groups": 14, "stores_in_groups": 31, "non_rep_stores": 17, "non_rep_listings": 1381, "reasons": {"title_overlap": 14, "domain_stem": 6}, "largest_groups": [["jeannotte.ca", "bouvrette.ca"], ["potagermont-rouge.ca", "erablieremont-rouge.ca"], ["vinaigreriemcduff.com", "vinaigreriemcduff.ca"], ["labrouettemaraichere.com", "norseco.com", "fermeroquette.ca", "fermelacanopee.com"], ["cafewilliam.com", "cafewilliamspartivento.com"], ["centacres.ca", "sucreriesdl.ca"], ["magasingeneralduquai.ca", "olieve.ca"], ["aufindelice.ca", "aufindelice.com"], ["en.horacejewelry.com", "horacejewelry.com"], ["en.meemoza.ca", "meemoza.ca"], ["erablesdupatrimoinetheberge.com", "tracemaple.com"], ["greenbeaver.com", "votregreenbeaver.com"]]}6{"ts": "2026-11-01T17:52:54Z", "step": "clean.siblings", "sibling_groups": 11, "stores_in_groups": 22, "non_rep_stores": 11, "non_rep_listings": 774, "reasons": {"title_overlap": 8, "domain_stem": 6}, "largest_groups": [["potagermont-rouge.ca", "erablieremont-rouge.ca"], ["vinaigreriemcduff.com", "vinaigreriemcduff.ca"], ["cafewilliam.com", "cafewilliamspartivento.com"], ["centacres.ca", "sucreriesdl.ca"], ["aufindelice.ca", "aufindelice.com"], ["en.horacejewelry.com", "horacejewelry.com"], ["en.meemoza.ca", "meemoza.ca"], ["erablesdupatrimoinetheberge.com", "tracemaple.com"], ["greenbeaver.com", "votregreenbeaver.com"], ["lasultana.net", "orera.ca"], ["trisamare.ca", "trisamare.com"]]}7{"ts": "2026-11-01T17:52:57Z", "step": "clean.listings", "assortment_sample": {"listings": 370054, "stores": 1557, "categories": 20, "dup_in_store_listings_removed": 19245, "share_autre": 0.1113, "available_0_share": 0.1307, "on_sale_share": 0.087, "has_variants_share": 0.2782, "sku_share": 0.7667, "vendor_share": 0.7558}, "price_exclusions": {"non_cad_listing_or_store": 729, "price_missing_or_on_request": 9635, "price_zero": 0, "price_gt_cap": 78}, "price_quantiles_cad": {"0.001": 0.26, "0.01": 1.5, "0.1": 5.99, "0.5": 24.99, "0.9": 274.56, "0.99": 3700.0, "0.999": 18500.0}, "top10_stores_share_of_assortment": 0.3713, "flow": [["DB product rows (all statuses, all stores)", 465388], ["active = 1 and listing_status = 'published'", 390108], ["… of an enabled store with >= 1 published listing", 390108], ["… excluding store_kind = hors_mission", 390074], ["… keeping one representative per (store, normalised title) and non-empty title", 370828], ["… excluding mirror domains of the same business (sibling stores, non-representative) [ASSORTMENT SAMPLE]", 370054], ["… and CAD-priced store/listing", 369325], ["… and a positive listed price <= 50 000 CAD, not on request [PRICE SAMPLE]", 359612]]}8{"ts": "2026-11-01T17:52:58Z", "step": "clean.stores", "live_stores": 1569, "regions_layer": null, "region_source": {"db": 1223, "unknown": 346}, "region_conflicts": 0, "unknown_region_listings": 153193, "phone_shared_stores": 250, "certified_stores": 718, "region_final_counts": {"Inconnue": 346, "Montréal": 211, "Montérégie": 164, "Estrie": 145, "Capitale-Nationale": 107, "Saguenay–Lac-Saint-Jean": 98, "Chaudière-Appalaches": 93, "Laurentides": 91, "Centre-du-Québec": 61, "Lanaudière": 59, "Bas-Saint-Laurent": 39, "Outaouais": 37, "Mauricie": 29, "Gaspésie–Îles-de-la-Madeleine": 28, "Laval": 22, "Abitibi-Témiscamingue": 21, "Côte-Nord": 15, "Nord-du-Québec": 3}, "agreement_db_vs_pip": null}9{"ts": "2026-11-01T17:53:11Z", "step": "features.match_products", "universe_listings": 359612, "universe_stores": 1487, "with_sku": 260406, "with_brand": 274901, "pairs_by_tier": {"D": 2713, "A": 1837, "B": 457, "C": 446}, "pairs_comparable_by_tier": {"D": 1804, "A": 1683, "B": 381, "C": 324}, "median_abs_log_gap_by_tier": {"A": 0.0007, "B": 0.0011, "C": 0.0077, "D": 0.2585}, "share_zero_gap_by_tier": {"A": 0.4306, "B": 0.4398, "C": 0.4193, "D": 0.0844}, "groups_AC": 2247, "groups_AC_multi_store": 2247, "listings_in_groups": 4832, "stores_in_groups": 209, "groups_size_gt_10": 0, "regions_pairs": null}10{"ts": "2026-11-01T17:56:56Z", "step": "category_audit.annotate", "annotator": "llm_a", "model": "claude-opus-5-5", "in": 453642, "out": 7469, "calls": 500, "errors": 150}11{"ts": "2026-11-01T17:57:25Z", "step": "features.region_category", "stores_S_A": 1557, "stores_S_R": 1214, "stores_S_R0": 1214, "listings_S_R": 216861, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 210, "Montérégie": 162, "Estrie": 143, "Capitale-Nationale": 107, "Saguenay–Lac-Saint-Jean": 98, "Laurentides": 91, "Chaudière-Appalaches": 90, "Centre-du-Québec": 61, "Lanaudière": 59, "Bas-Saint-Laurent": 39, "Outaouais": 36, "Mauricie": 29, "Gaspésie–Îles-de-la-Madeleine": 28, "Laval": 22, "Abitibi-Témiscamingue": 21, "Côte-Nord": 15, "Nord-du-Québec": 3}}12{"ts": "2026-11-01T17:57:29Z", "step": "match_validation.annotate", "annotator": "llm_a", "in": 98310, "out": 5595, "calls": 240, "errors": 83}13{"ts": "2026-11-01T17:58:18Z", "step": "models.h1_raa", "results": [{"sample": "S_R", "scheme": "M", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1127, "v_ci": [0.1235, 0.1458], "perm_null_mean": 0.0787, "perm_null_p95": 0.0854, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 12, "cells_sig_lt1": 64, "cells": 340}, {"sample": "S_R", "scheme": "L", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.2398, "v_ci": [0.2128, 0.3009], "perm_null_mean": 0.212, "perm_null_p95": 0.241, "p_perm": 0.05547226386806597, "cells_sig_gt1": 5, "cells_sig_lt1": 56, "cells": 340}, {"sample": "S_R", "scheme": "T", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1721, "v_ci": [0.1676, 0.2382], "perm_null_mean": 0.1747, "perm_null_p95": 0.2034, "p_perm": 0.5402298850574713, "cells_sig_gt1": 11, "cells_sig_lt1": 63, "cells": 340}, {"sample": "S_R0", "scheme": "M", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1127, "v_ci": [0.1235, 0.1466], "perm_null_mean": 0.0786, "perm_null_p95": 0.0854, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 14, "cells_sig_lt1": 65, "cells": 340}, {"sample": "S_R0", "scheme": "L", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.2398, "v_ci": [0.2141, 0.3018], "perm_null_mean": 0.2121, "perm_null_p95": 0.2401, "p_perm": 0.05247376311844078, "cells_sig_gt1": 5, "cells_sig_lt1": 59, "cells": 340}, {"sample": "S_R0", "scheme": "T", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1721, "v_ci": [0.1704, 0.2402], "perm_null_mean": 0.1742, "perm_null_p95": 0.2013, "p_perm": 0.5272363818090955, "cells_sig_gt1": 10, "cells_sig_lt1": 63, "cells": 340}, {"sample": "S_R", "scheme": "stores", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.05, "v_ci": [0.0571, 0.0671], "perm_null_mean": 0.0375, "perm_null_p95": 0.0402, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 15, "cells_sig_lt1": 27, "cells": 340}]}14{"ts": "2026-11-01T17:58:46Z", "step": "category_audit.annotate", "annotator": "llm_b", "model": "gpt-5.5", "in": 403442, "out": 35400, "calls": 500, "errors": 0}15{"ts": "2026-11-01T17:58:47Z", "step": "match_validation.annotate", "annotator": "llm_b", "in": 91518, "out": 30107, "calls": 240, "errors": 0}16{"ts": "2026-11-01T17:58:52Z", "step": "models.h1_raa", "results": [{"sample": "S_R", "scheme": "M", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1127, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1235, 0.1458], "perm_null_mean": 0.0787, "perm_null_p5": 0.0724, "excess_v": 0.034, "perm_null_p95": 0.0854, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 12, "cells_sig_lt1": 64, "cells": 340}, {"sample": "S_R", "scheme": "L", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.2398, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2128, 0.3009], "perm_null_mean": 0.212, "perm_null_p5": 0.1844, "excess_v": 0.0278, "perm_null_p95": 0.241, "p_perm": 0.05547226386806597, "cells_sig_gt1": 5, "cells_sig_lt1": 56, "cells": 340}, {"sample": "S_R", "scheme": "T", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1721, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1676, 0.2382], "perm_null_mean": 0.1747, "perm_null_p5": 0.1505, "excess_v": -0.0026, "perm_null_p95": 0.2034, "p_perm": 0.5402298850574713, "cells_sig_gt1": 11, "cells_sig_lt1": 63, "cells": 340}, {"sample": "S_R0", "scheme": "M", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1127, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1235, 0.1466], "perm_null_mean": 0.0786, "perm_null_p5": 0.0724, "excess_v": 0.0341, "perm_null_p95": 0.0854, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 14, "cells_sig_lt1": 65, "cells": 340}, {"sample": "S_R0", "scheme": "L", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.2398, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2141, 0.3018], "perm_null_mean": 0.2121, "perm_null_p5": 0.1836, "excess_v": 0.0277, "perm_null_p95": 0.2401, "p_perm": 0.05247376311844078, "cells_sig_gt1": 5, "cells_sig_lt1": 59, "cells": 340}, {"sample": "S_R0", "scheme": "T", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1721, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1704, 0.2402], "perm_null_mean": 0.1742, "perm_null_p5": 0.1502, "excess_v": -0.0022, "perm_null_p95": 0.2013, "p_perm": 0.5272363818090955, "cells_sig_gt1": 10, "cells_sig_lt1": 63, "cells": 340}, {"sample": "S_R", "scheme": "stores", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.05, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.0571, 0.0671], "perm_null_mean": 0.0375, "perm_null_p5": 0.0347, "excess_v": 0.0126, "perm_null_p95": 0.0402, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 15, "cells_sig_lt1": 27, "cells": 340}]}17{"ts": "2026-11-01T17:59:21Z", "step": "models.h3_longtail", "stores": 1557, "listings": 370054, "gini": 0.8491, "gini_ci": [0.8109, 0.8782], "top1pct_share": 0.4434, "top1_ci": [0.3276, 0.5263], "top10pct_share": 0.7889, "top10_ci": [0.7295, 0.8357], "median_catalogue": 35.0, "p90": 311.8000000000002, "p99": 3359.32, "max": 24104, "rank_size_slope_loglog": -1.647, "powerlaw": {"xmin": 165, "alpha": 1.929174500673675, "ks": 0.027806349691342103, "n_tail": 288, "ll_pl": -2088.7485743757525}, "lognormal_vs_powerlaw": {"vuong_R": 60.646021642964115, "vuong_z": 4.991632500389355, "vuong_p": 5.987108926408524e-07, "favoured": "power-law", "lognormal_mu": 6.179139125490812, "lognormal_sigma": 1.0239165255662563}, "decision_prereg": true}18{"ts": "2026-11-01T18:00:36Z", "step": "models.h5_hedonic", "models": [{"label": "primary_AB", "obs": 1810, "groups": 878, "stores": 117, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 8, "wald_region": 195.505, "df_region": 14, "p_region_wildboot": 0.0118, "t_reseller": -4.16, "p_reseller_wildboot": 0.0007, "within_R2": 0.237, "gap_median": 0.0528, "gap_p90": 0.2862, "share_gap_gt5pct": 0.508, "share_gap_zero": 0.2415, "B": 9999}, {"label": "sens_ABC", "obs": 2066, "groups": 986, "stores": 130, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 160.952, "df_region": 14, "p_region_wildboot": 0.0087, "t_reseller": -4.019, "p_reseller_wildboot": 0.0028, "within_R2": 0.1803, "gap_median": 0.0572, "gap_p90": 0.3321, "share_gap_gt5pct": 0.5203, "share_gap_zero": 0.2383, "B": 9999}], "cert": {"note": "descriptive store-certification contrast (Aliments du Québec / Les Produits du Québec), category FE, store-clustered SE — NOT a test of H6", "obs": 208920, "stores": 1159, "certified_stores": 451, "b_log_price": -0.2354, "se": 0.1585}}19{"ts": "2026-11-01T18:01:21Z", "step": "models.h7_complexity", "regions": 17, "categories": 20, "M_density": 0.424, "diversity": {"Abitibi-Témiscamingue": 11, "Bas-Saint-Laurent": 7, "Capitale-Nationale": 10, "Centre-du-Québec": 12, "Chaudière-Appalaches": 8, "Côte-Nord": 9, "Estrie": 5, "Gaspésie–Îles-de-la-Madeleine": 8, "Lanaudière": 8, "Laurentides": 12, "Laval": 6, "Mauricie": 6, "Montréal": 8, "Montérégie": 9, "Nord-du-Québec": 4, "Outaouais": 10, "Saguenay–Lac-Saint-Jean": 11}, "eci": {"Abitibi-Témiscamingue": -1.18, "Bas-Saint-Laurent": 0.768, "Capitale-Nationale": 0.565, "Centre-du-Québec": 0.867, "Chaudière-Appalaches": 1.347, "Côte-Nord": -0.492, "Estrie": -0.032, "Gaspésie–Îles-de-la-Madeleine": -0.507, "Lanaudière": 0.538, "Laurentides": -0.011, "Laval": -0.594, "Mauricie": 1.867, "Montréal": -1.934, "Montérégie": 0.184, "Nord-du-Québec": -1.8, "Outaouais": -0.242, "Saguenay–Lac-Saint-Jean": 0.656}, "fitness": {"Abitibi-Témiscamingue": 1.249, "Bas-Saint-Laurent": 0.643, "Capitale-Nationale": 1.133, "Centre-du-Québec": 1.636, "Chaudière-Appalaches": 0.948, "Côte-Nord": 1.062, "Estrie": 0.478, "Gaspésie–Îles-de-la-Madeleine": 0.823, "Lanaudière": 0.849, "Laurentides": 1.756, "Laval": 0.657, "Mauricie": 0.622, "Montréal": 0.995, "Montérégie": 0.961, "Nord-du-Québec": 0.412, "Outaouais": 1.146, "Saguenay–Lac-Saint-Jean": 1.63}, "V1_bootstrap_rank_stability": {"eci_rho_median": 0.311, "eci_rho_p10": -0.672, "fitness_rho_median": 0.652, "diversity_rho_median": 0.626, "pass_eci": false}, "V2_reshuffle_null": {"obs_eci_sd": 1.0, "null_sd_p95": 1.0, "obs_eci_range": 3.801, "null_range_p95": 4.17, "obs_corr_eci_diversity": 0.162, "null_corr_eci_diversity_p5_p95": [-0.061, 0.579], "pass": false}, "V4_community_stability": {"nmi_median_vs_run0": 1.0, "nmi_p10": 1.0, "n_communities_mode": 2, "communities_run0": {"alcool": 0, "animaux": 0, "art": 0, "autre": 0, "bijoux": 0, "boissons": 0, "boulangerie": 1, "cafe_the": 0, "chocolat": 1, "enfants": 0, "epicerie": 1, "erable": 1, "fromage_laitier": 1, "industriel": 0, "jardin": 0, "maison": 0, "mode": 0, "plein_air": 0, "sante_beaute": 0, "viande_poisson": 1}}}20{"ts": "2026-11-01T18:01:52Z", "step": "models.h7_complexity", "regions": 17, "categories": 20, "M_density": 0.424, "diversity": {"Abitibi-Témiscamingue": 11, "Bas-Saint-Laurent": 7, "Capitale-Nationale": 10, "Centre-du-Québec": 12, "Chaudière-Appalaches": 8, "Côte-Nord": 9, "Estrie": 5, "Gaspésie–Îles-de-la-Madeleine": 8, "Lanaudière": 8, "Laurentides": 12, "Laval": 6, "Mauricie": 6, "Montréal": 8, "Montérégie": 9, "Nord-du-Québec": 4, "Outaouais": 10, "Saguenay–Lac-Saint-Jean": 11}, "eci": {"Abitibi-Témiscamingue": -1.18, "Bas-Saint-Laurent": 0.768, "Capitale-Nationale": 0.565, "Centre-du-Québec": 0.867, "Chaudière-Appalaches": 1.347, "Côte-Nord": -0.492, "Estrie": -0.032, "Gaspésie–Îles-de-la-Madeleine": -0.507, "Lanaudière": 0.538, "Laurentides": -0.011, "Laval": -0.594, "Mauricie": 1.867, "Montréal": -1.934, "Montérégie": 0.184, "Nord-du-Québec": -1.8, "Outaouais": -0.242, "Saguenay–Lac-Saint-Jean": 0.656}, "fitness": {"Abitibi-Témiscamingue": 1.249, "Bas-Saint-Laurent": 0.643, "Capitale-Nationale": 1.133, "Centre-du-Québec": 1.636, "Chaudière-Appalaches": 0.948, "Côte-Nord": 1.062, "Estrie": 0.478, "Gaspésie–Îles-de-la-Madeleine": 0.823, "Lanaudière": 0.849, "Laurentides": 1.756, "Laval": 0.657, "Mauricie": 0.622, "Montréal": 0.995, "Montérégie": 0.961, "Nord-du-Québec": 0.412, "Outaouais": 1.146, "Saguenay–Lac-Saint-Jean": 1.63}, "V1_bootstrap_rank_stability": {"eci_rho_median": 0.311, "eci_rho_p10": -0.672, "fitness_rho_median": 0.652, "diversity_rho_median": 0.626, "pass_eci": false}, "V2_reshuffle_null": {"obs_lambda2": 0.2457, "null_lambda2_p95": 0.299, "p_lambda2": 0.5392303848075962, "obs_spectral_radius": 8.2588, "null_spectral_radius_p95": 8.7368, "p_spectral_radius": 0.47426286856571714, "obs_corr_eci_diversity": 0.162, "null_corr_eci_diversity_p5_p95": [-0.061, 0.579], "pass": false}, "V4_community_stability": {"nmi_median_vs_run0": 1.0, "nmi_p10": 1.0, "n_communities_mode": 2, "communities_run0": {"alcool": 0, "animaux": 0, "art": 0, "autre": 0, "bijoux": 0, "boissons": 0, "boulangerie": 1, "cafe_the": 0, "chocolat": 1, "enfants": 0, "epicerie": 1, "erable": 1, "fromage_laitier": 1, "industriel": 0, "jardin": 0, "maison": 0, "mode": 0, "plein_air": 0, "sante_beaute": 0, "viande_poisson": 1}}}21{"ts": "2026-11-01T18:03:04Z", "step": "models.h4_dynamics", "status": "exploratory", "baseline_window": ["2026-08-31", "2026-09-27"], "outcome_window": ["2026-09-28", "2026-11-01"], "stores": 1540, "store_category_cells_absent_at_baseline": 20530, "entries": 149, "entering_stores": 93, "lpm_density_coef": 0.1114, "se_cluster_store": 0.0503, "t": 2.216, "placebo_coef_mean": 0.1114, "placebo_p95": 0.1114, "placebo_p": 1.0, "density_mean_entry": 0.4124, "density_mean_no_entry": 0.2821, "n_region_entries": 11, "share_entering_stores_with_added_burst": 0.16129032258064516}22{"ts": "2026-11-01T18:03:30Z", "step": "models.h4_dynamics", "status": "exploratory", "baseline_window": ["2026-08-31", "2026-09-27"], "outcome_window": ["2026-09-28", "2026-11-01"], "stores": 1540, "store_category_cells_absent_at_baseline": 20530, "entries": 149, "entering_stores": 93, "lpm_density_coef": 0.1114, "se_cluster_store": 0.0503, "t": 2.216, "placebo_coef_mean": -0.0042, "placebo_p95": 0.0873, "placebo_p": 0.009950248756218905, "density_mean_entry": 0.4124, "density_mean_no_entry": 0.2821, "n_region_entries": 11, "share_entering_stores_with_added_burst": 0.16129032258064516}23{"ts": "2026-11-01T18:04:28Z", "step": "features.diversity", "quebec_H_norm_M": 0.858, "quebec_eff_cat_M": 13.069, "regions_rarefied": 16, "store_n_categories_dist": {"1": 183, "2": 127, "3": 159, "4": 162, "5": 143, "6": 106, "7": 107, "8": 100, "9": 79, "10": 78, "11": 54, "12": 47, "13": 43, "14": 31, "15": 35, "16": 18, "17": 25, "18": 18, "19": 14, "20": 28}, "range_H_rarefied15": [0.735, 0.845]}24{"ts": "2026-11-01T18:05:29Z", "step": "validation.robustness", "variants": ["baseline_S_R", "S_R0_db_regions_only", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts"]}25{"ts": "2026-11-01T18:07:21Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}26{"ts": "2026-11-01T18:07:56Z", "step": "clean.stores", "live_stores": 1569, "regions_layer": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/economie/economic-geography-digital-production/data/external/geo/qc_er_2021_statcan_cbf.gpkg", "region_source": {"db": 1223, "unknown": 230, "pip": 116}, "region_conflicts": 229, "unknown_region_listings": 71926, "phone_shared_stores": 250, "certified_stores": 718, "region_final_counts": {"Montréal": 258, "Inconnue": 230, "Montérégie": 185, "Estrie": 147, "Capitale-Nationale": 126, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 98, "Chaudière-Appalaches": 98, "Lanaudière": 63, "Centre-du-Québec": 63, "Bas-Saint-Laurent": 39, "Outaouais": 38, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 28, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 15, "Nord-du-Québec": 3, "Saguenay--Lac-Saint-Jean": 2}, "agreement_db_vs_pip": 0.7928}27{"ts": "2026-11-01T18:09:06Z", "step": "clean.stores", "live_stores": 1569, "regions_layer": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/economie/economic-geography-digital-production/data/external/geo/qc_regions_admin_mern_bdat100k.gpkg", "region_source": {"city": 758, "pip": 492, "unknown": 229, "db": 90}, "region_conflicts": 160, "unknown_region_listings": 71692, "phone_shared_stores": 250, "certified_stores": 718, "region_final_counts": {"Montréal": 235, "Inconnue": 229, "Montérégie": 216, "Estrie": 134, "Capitale-Nationale": 124, "Laurentides": 97, "Saguenay–Lac-Saint-Jean": 91, "Bas-Saint-Laurent": 81, "Chaudière-Appalaches": 70, "Lanaudière": 67, "Centre-du-Québec": 59, "Outaouais": 40, "Mauricie": 29, "Gaspésie–Îles-de-la-Madeleine": 28, "Laval": 26, "Côte-Nord": 22, "Abitibi-Témiscamingue": 21}, "agreement_db_vs_pip": 0.8906, "agreement_city_vs_pip": 0.8734, "agreement_db_vs_final": 0.8692}28{"ts": "2026-11-01T18:09:37Z", "step": "clean.stores", "live_stores": 1569, "regions_layer": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/economie/economic-geography-digital-production/data/external/geo/qc_regions_admin_mern_bdat100k.gpkg", "region_source": {"pip": 857, "city": 393, "unknown": 229, "db": 90}, "region_conflicts": 139, "unknown_region_listings": 71692, "phone_shared_stores": 250, "certified_stores": 718, "region_final_counts": {"Montréal": 235, "Inconnue": 229, "Montérégie": 216, "Estrie": 145, "Capitale-Nationale": 133, "Chaudière-Appalaches": 110, "Laurentides": 95, "Saguenay–Lac-Saint-Jean": 91, "Lanaudière": 76, "Centre-du-Québec": 48, "Bas-Saint-Laurent": 37, "Outaouais": 33, "Gaspésie–Îles-de-la-Madeleine": 32, "Mauricie": 29, "Laval": 26, "Abitibi-Témiscamingue": 21, "Côte-Nord": 13}, "agreement_db_vs_pip": 0.8906, "agreement_city_vs_pip": 0.9593, "agreement_db_vs_final": 0.8863}29{"ts": "2026-11-01T18:09:37Z", "step": "features.region_category", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 88, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 234, "Montérégie": 214, "Estrie": 143, "Capitale-Nationale": 133, "Chaudière-Appalaches": 107, "Laurentides": 95, "Saguenay–Lac-Saint-Jean": 91, "Lanaudière": 76, "Centre-du-Québec": 48, "Bas-Saint-Laurent": 37, "Outaouais": 32, "Gaspésie–Îles-de-la-Madeleine": 32, "Mauricie": 29, "Laval": 26, "Abitibi-Témiscamingue": 21, "Côte-Nord": 13}}30{"ts": "2026-11-01T18:10:09Z", "step": "features.diversity", "quebec_H_norm_M": 0.8657, "quebec_eff_cat_M": 13.376, "regions_rarefied": 15, "store_n_categories_dist": {"1": 183, "2": 127, "3": 159, "4": 162, "5": 143, "6": 106, "7": 107, "8": 100, "9": 79, "10": 78, "11": 54, "12": 47, "13": 43, "14": 31, "15": 35, "16": 18, "17": 25, "18": 18, "19": 14, "20": 28}, "range_H_rarefied15": [0.736, 0.845]}31{"ts": "2026-11-01T18:10:11Z", "step": "models.h1_raa", "results": [{"sample": "S_R", "scheme": "M", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.1074, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1194, 0.1401], "perm_null_mean": 0.0747, "perm_null_p5": 0.0695, "excess_v": 0.0326, "perm_null_p95": 0.0805, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 11, "cells_sig_lt1": 62, "cells": 320}, {"sample": "S_R", "scheme": "L", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.2382, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.21, 0.305], "perm_null_mean": 0.206, "perm_null_p5": 0.1783, "excess_v": 0.0322, "perm_null_p95": 0.2319, "p_perm": 0.02148925537231384, "cells_sig_gt1": 7, "cells_sig_lt1": 67, "cells": 320}, {"sample": "S_R", "scheme": "T", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.1622, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1613, 0.2312], "perm_null_mean": 0.1621, "perm_null_p5": 0.1413, "excess_v": 0.0001, "perm_null_p95": 0.1859, "p_perm": 0.4767616191904048, "cells_sig_gt1": 10, "cells_sig_lt1": 62, "cells": 320}, {"sample": "S_R0", "scheme": "M", "stores": 88, "regions": 12, "categories": 20, "cramers_v": 0.3029, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2928, 0.4168], "perm_null_mean": 0.2644, "perm_null_p5": 0.2308, "excess_v": 0.0384, "perm_null_p95": 0.3051, "p_perm": 0.059470264867566215, "cells_sig_gt1": 5, "cells_sig_lt1": 79, "cells": 240}, {"sample": "S_R0", "scheme": "L", "stores": 88, "regions": 12, "categories": 20, "cramers_v": 0.2038, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1303, 0.3122], "perm_null_mean": 0.2836, "perm_null_p5": 0.226, "excess_v": -0.0798, "perm_null_p95": 0.3382, "p_perm": 0.9865067466266867, "cells_sig_gt1": 3, "cells_sig_lt1": 55, "cells": 240}, {"sample": "S_R0", "scheme": "T", "stores": 88, "regions": 12, "categories": 20, "cramers_v": 0.2655, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1686, 0.3245], "perm_null_mean": 0.3141, "perm_null_p5": 0.2544, "excess_v": -0.0486, "perm_null_p95": 0.3669, "p_perm": 0.9145427286356822, "cells_sig_gt1": 5, "cells_sig_lt1": 59, "cells": 240}, {"sample": "S_R", "scheme": "stores", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.0467, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.0533, 0.0626], "perm_null_mean": 0.0347, "perm_null_p5": 0.032, "excess_v": 0.012, "perm_null_p95": 0.0374, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 11, "cells_sig_lt1": 24, "cells": 320}]}32{"ts": "2026-11-01T18:10:12Z", "step": "models.h3_longtail", "stores": 1557, "listings": 370054, "gini": 0.8491, "gini_ci": [0.8109, 0.8782], "top1pct_share": 0.4434, "top1_ci": [0.3276, 0.5263], "top10pct_share": 0.7889, "top10_ci": [0.7295, 0.8357], "median_catalogue": 35.0, "p90": 311.8000000000002, "p99": 3359.32, "max": 24104, "rank_size_slope_loglog": -1.647, "powerlaw": {"xmin": 165, "alpha": 1.929174500673675, "ks": 0.027806349691342103, "n_tail": 288, "ll_pl": -2088.7485743757525}, "lognormal_vs_powerlaw": {"vuong_R": 60.646021642964115, "vuong_z": 4.991632500389355, "vuong_p": 5.987108926408524e-07, "favoured": "power-law", "lognormal_mu": 6.179139125490812, "lognormal_sigma": 1.0239165255662563}, "decision_prereg": true}33{"ts": "2026-11-01T18:10:21Z", "step": "models.h4_dynamics", "status": "exploratory", "baseline_window": ["2026-08-31", "2026-09-27"], "outcome_window": ["2026-09-28", "2026-11-01"], "stores": 1540, "store_category_cells_absent_at_baseline": 20530, "entries": 149, "entering_stores": 93, "lpm_density_coef": 0.1114, "se_cluster_store": 0.0503, "t": 2.216, "placebo_coef_mean": -0.0042, "placebo_p95": 0.0873, "placebo_p": 0.009950248756218905, "density_mean_entry": 0.4124, "density_mean_no_entry": 0.2821, "n_region_entries": 1, "share_entering_stores_with_added_burst": 0.16129032258064516}34{"ts": "2026-11-01T18:10:53Z", "step": "models.h5_hedonic", "models": [{"label": "primary_AB", "obs": 2203, "groups": 1064, "stores": 143, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 165.155, "df_region": 14, "p_region_wildboot": 0.0073, "t_reseller": -4.036, "p_reseller_wildboot": 0.0028, "within_R2": 0.1689, "gap_median": 0.0474, "gap_p90": 0.2879, "share_gap_gt5pct": 0.4934, "share_gap_zero": 0.2904, "B": 9999}, {"label": "sens_ABC", "obs": 2512, "groups": 1189, "stores": 156, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 82.029, "df_region": 14, "p_region_wildboot": 0.0147, "t_reseller": -3.806, "p_reseller_wildboot": 0.0053, "within_R2": 0.1381, "gap_median": 0.0515, "gap_p90": 0.3326, "share_gap_gt5pct": 0.5046, "share_gap_zero": 0.286, "B": 9999}], "cert": {"note": "descriptive store-certification contrast (Aliments du Québec / Les Produits du Québec), category FE, store-clustered SE — NOT a test of H6", "obs": 288663, "stores": 1264, "certified_stores": 491, "b_log_price": -0.2038, "se": 0.1375}}35{"ts": "2026-11-01T18:10:57Z", "step": "models.h7_complexity", "regions": 16, "categories": 20, "M_density": 0.412, "diversity": {"Abitibi-Témiscamingue": 10, "Bas-Saint-Laurent": 8, "Capitale-Nationale": 9, "Centre-du-Québec": 9, "Chaudière-Appalaches": 7, "Côte-Nord": 7, "Estrie": 8, "Gaspésie–Îles-de-la-Madeleine": 8, "Lanaudière": 10, "Laurentides": 10, "Laval": 7, "Mauricie": 6, "Montréal": 9, "Montérégie": 9, "Outaouais": 6, "Saguenay–Lac-Saint-Jean": 9}, "eci": {"Abitibi-Témiscamingue": 0.525, "Bas-Saint-Laurent": -0.246, "Capitale-Nationale": 1.129, "Centre-du-Québec": 0.075, "Chaudière-Appalaches": -1.328, "Côte-Nord": 1.411, "Estrie": -1.245, "Gaspésie–Îles-de-la-Madeleine": 0.319, "Lanaudière": 0.17, "Laurentides": 0.341, "Laval": 0.333, "Mauricie": -1.876, "Montréal": 2.005, "Montérégie": -0.636, "Outaouais": -0.102, "Saguenay–Lac-Saint-Jean": -0.875}, "fitness": {"Abitibi-Témiscamingue": 1.105, "Bas-Saint-Laurent": 0.79, "Capitale-Nationale": 1.389, "Centre-du-Québec": 1.15, "Chaudière-Appalaches": 0.787, "Côte-Nord": 0.901, "Estrie": 0.879, "Gaspésie–Îles-de-la-Madeleine": 0.858, "Lanaudière": 1.088, "Laurentides": 1.468, "Laval": 0.753, "Mauricie": 0.61, "Montréal": 1.419, "Montérégie": 1.134, "Outaouais": 0.655, "Saguenay–Lac-Saint-Jean": 1.015}, "V1_bootstrap_rank_stability": {"eci_rho_median": 0.401, "eci_rho_p10": -0.606, "fitness_rho_median": 0.556, "diversity_rho_median": 0.492, "pass_eci": false}, "V2_reshuffle_null": {"obs_lambda2": 0.27, "null_lambda2_p95": 0.2968, "p_lambda2": 0.19540229885057472, "obs_spectral_radius": 7.7476, "null_spectral_radius_p95": 8.6634, "p_spectral_radius": 0.9185407296351824, "obs_corr_eci_diversity": 0.386, "null_corr_eci_diversity_p5_p95": [-0.045, 0.587], "pass": false}, "V4_community_stability": {"nmi_median_vs_run0": 1.0, "nmi_p10": 1.0, "n_communities_mode": 2, "communities_run0": {"alcool": 0, "animaux": 0, "art": 0, "autre": 0, "bijoux": 0, "boissons": 0, "boulangerie": 1, "cafe_the": 0, "chocolat": 1, "enfants": 0, "epicerie": 1, "erable": 1, "fromage_laitier": 1, "industriel": 0, "jardin": 0, "maison": 0, "mode": 0, "plein_air": 0, "sante_beaute": 0, "viande_poisson": 1}}}36{"ts": "2026-11-01T18:10:59Z", "step": "validation.robustness", "variants": ["baseline_S_R", "S_R0_db_regions_only", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts"]}37{"ts": "2026-11-01T18:11:31Z", "step": "features.region_category", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 1223, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 234, "Montérégie": 214, "Estrie": 143, "Capitale-Nationale": 133, "Chaudière-Appalaches": 107, "Laurentides": 95, "Saguenay–Lac-Saint-Jean": 91, "Lanaudière": 76, "Centre-du-Québec": 48, "Bas-Saint-Laurent": 37, "Outaouais": 32, "Gaspésie–Îles-de-la-Madeleine": 32, "Mauricie": 29, "Laval": 26, "Abitibi-Témiscamingue": 21, "Côte-Nord": 13}}38{"ts": "2026-11-01T18:11:35Z", "step": "models.h1_raa", "results": [{"sample": "S_R", "scheme": "M", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.1074, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1194, 0.1401], "perm_null_mean": 0.0747, "perm_null_p5": 0.0695, "excess_v": 0.0326, "perm_null_p95": 0.0805, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 11, "cells_sig_lt1": 62, "cells": 320}, {"sample": "S_R", "scheme": "L", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.2382, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.21, 0.305], "perm_null_mean": 0.206, "perm_null_p5": 0.1783, "excess_v": 0.0322, "perm_null_p95": 0.2319, "p_perm": 0.02148925537231384, "cells_sig_gt1": 7, "cells_sig_lt1": 67, "cells": 320}, {"sample": "S_R", "scheme": "T", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.1622, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1613, 0.2312], "perm_null_mean": 0.1621, "perm_null_p5": 0.1413, "excess_v": 0.0001, "perm_null_p95": 0.1859, "p_perm": 0.4767616191904048, "cells_sig_gt1": 10, "cells_sig_lt1": 62, "cells": 320}, {"sample": "S_R0", "scheme": "M", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1127, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1246, 0.1464], "perm_null_mean": 0.0786, "perm_null_p5": 0.0727, "excess_v": 0.0342, "perm_null_p95": 0.0854, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 13, "cells_sig_lt1": 63, "cells": 340}, {"sample": "S_R0", "scheme": "L", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.2398, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2147, 0.3004], "perm_null_mean": 0.2124, "perm_null_p5": 0.1831, "excess_v": 0.0274, "perm_null_p95": 0.242, "p_perm": 0.06296851574212893, "cells_sig_gt1": 4, "cells_sig_lt1": 60, "cells": 340}, {"sample": "S_R0", "scheme": "T", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1721, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1677, 0.2398], "perm_null_mean": 0.1751, "perm_null_p5": 0.1521, "excess_v": -0.0031, "perm_null_p95": 0.2023, "p_perm": 0.5517241379310345, "cells_sig_gt1": 10, "cells_sig_lt1": 62, "cells": 340}, {"sample": "S_R", "scheme": "stores", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.0467, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.0535, 0.0629], "perm_null_mean": 0.0347, "perm_null_p5": 0.0322, "excess_v": 0.012, "perm_null_p95": 0.0374, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 10, "cells_sig_lt1": 22, "cells": 320}]}39{"ts": "2026-11-01T18:11:36Z", "step": "validation.robustness", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts"]}40{"ts": "2026-11-01T18:12:11Z", "step": "match_validation.annotate", "annotator": "llm_a", "in": 49994, "out": 6552, "calls": 83, "errors": 0}41{"ts": "2026-11-01T18:12:24Z", "step": "match_validation.annotate", "annotator": "llm_b", "in": 4806, "out": 3999, "calls": 12, "errors": 0}42{"ts": "2026-11-01T18:12:27Z", "step": "category_audit.annotate", "annotator": "llm_a", "model": "claude-opus-5-5", "in": 192181, "out": 8866, "calls": 150, "errors": 0}43{"ts": "2026-11-01T18:12:33Z", "step": "category_audit.annotate", "annotator": "llm_b", "model": "gpt-5.5", "in": 2423, "out": 787, "calls": 3, "errors": 0}44{"ts": "2026-11-01T18:13:22Z", "step": "reports.make_tables", "tables": ["cert_contrast.tex", "h1_raa.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}45{"ts": "2026-11-01T18:16:51Z", "step": "clean.stores", "live_stores": 1569, "regions_layer": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/economie/economic-geography-digital-production/data/external/geo/qc_regions_admin_mern_bdat100k.gpkg", "region_source": {"db": 865, "city": 393, "unknown": 229, "pip": 82}, "region_conflicts": 30, "unknown_region_listings": 71692, "phone_shared_stores": 250, "certified_stores": 718, "region_final_counts": {"Montréal": 238, "Inconnue": 229, "Montérégie": 192, "Estrie": 154, "Capitale-Nationale": 126, "Chaudière-Appalaches": 105, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 37, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}, "agreement_db_vs_pip": 0.8906, "agreement_city_vs_pip": 0.9593, "agreement_db_vs_final": 0.9755}46{"ts": "2026-11-01T18:16:52Z", "step": "features.region_category", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 1223, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 237, "Montérégie": 190, "Estrie": 152, "Capitale-Nationale": 126, "Chaudière-Appalaches": 102, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 36, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}}47{"ts": "2026-11-01T18:17:05Z", "step": "match_validation.annotate", "annotator": "llm_a", "in": 46044, "out": 6769, "calls": 76, "errors": 0}48{"ts": "2026-11-01T18:17:15Z", "step": "category_audit.annotate", "annotator": "llm_a", "model": "claude-opus-5-5", "in": 176311, "out": 5775, "calls": 137, "errors": 0}49{"ts": "2026-11-01T18:17:16Z", "step": "match_validation.annotate", "annotator": "llm_b", "in": 2785, "out": 2800, "calls": 7, "errors": 0}50{"ts": "2026-11-01T18:17:25Z", "step": "features.diversity", "quebec_H_norm_M": 0.8657, "quebec_eff_cat_M": 13.376, "regions_rarefied": 16, "store_n_categories_dist": {"1": 183, "2": 127, "3": 159, "4": 162, "5": 143, "6": 106, "7": 107, "8": 100, "9": 79, "10": 78, "11": 54, "12": 47, "13": 43, "14": 31, "15": 35, "16": 18, "17": 25, "18": 18, "19": 14, "20": 28}, "range_H_rarefied15": [0.741, 0.845]}51{"ts": "2026-11-01T18:17:28Z", "step": "models.h1_raa", "results": [{"sample": "S_R", "scheme": "M", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1049, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1161, 0.1363], "perm_null_mean": 0.0747, "perm_null_p5": 0.0689, "excess_v": 0.0302, "perm_null_p95": 0.081, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 13, "cells_sig_lt1": 62, "cells": 340}, {"sample": "S_R", "scheme": "L", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.2265, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.205, 0.2935], "perm_null_mean": 0.2016, "perm_null_p5": 0.1737, "excess_v": 0.0249, "perm_null_p95": 0.2277, "p_perm": 0.05847076461769116, "cells_sig_gt1": 6, "cells_sig_lt1": 71, "cells": 340}, {"sample": "S_R", "scheme": "T", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1585, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1571, 0.2266], "perm_null_mean": 0.1592, "perm_null_p5": 0.1392, "excess_v": -0.0007, "perm_null_p95": 0.183, "p_perm": 0.49225387306346824, "cells_sig_gt1": 9, "cells_sig_lt1": 61, "cells": 340}, {"sample": "S_R0", "scheme": "M", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.114, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1255, 0.1491], "perm_null_mean": 0.0786, "perm_null_p5": 0.0729, "excess_v": 0.0354, "perm_null_p95": 0.0849, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 12, "cells_sig_lt1": 59, "cells": 320}, {"sample": "S_R0", "scheme": "L", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.2526, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2236, 0.3131], "perm_null_mean": 0.2173, "perm_null_p5": 0.1871, "excess_v": 0.0353, "perm_null_p95": 0.2466, "p_perm": 0.0239880059970015, "cells_sig_gt1": 7, "cells_sig_lt1": 61, "cells": 320}, {"sample": "S_R0", "scheme": "T", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.1759, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1748, 0.244], "perm_null_mean": 0.1787, "perm_null_p5": 0.1552, "excess_v": -0.0028, "perm_null_p95": 0.2049, "p_perm": 0.5347326336831584, "cells_sig_gt1": 10, "cells_sig_lt1": 66, "cells": 320}, {"sample": "S_R", "scheme": "stores", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.0466, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.0532, 0.0629], "perm_null_mean": 0.0348, "perm_null_p5": 0.0322, "excess_v": 0.0118, "perm_null_p95": 0.0373, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 14, "cells_sig_lt1": 30, "cells": 340}]}52{"ts": "2026-11-01T18:17:29Z", "step": "models.h3_longtail", "stores": 1557, "listings": 370054, "gini": 0.8491, "gini_ci": [0.8109, 0.8782], "top1pct_share": 0.4434, "top1_ci": [0.3276, 0.5263], "top10pct_share": 0.7889, "top10_ci": [0.7295, 0.8357], "median_catalogue": 35.0, "p90": 311.8000000000002, "p99": 3359.32, "max": 24104, "rank_size_slope_loglog": -1.647, "powerlaw": {"xmin": 165, "alpha": 1.929174500673675, "ks": 0.027806349691342103, "n_tail": 288, "ll_pl": -2088.7485743757525}, "lognormal_vs_powerlaw": {"vuong_R": 60.646021642964115, "vuong_z": 4.991632500389355, "vuong_p": 5.987108926408524e-07, "favoured": "power-law", "lognormal_mu": 6.179139125490812, "lognormal_sigma": 1.0239165255662563}, "decision_prereg": true}53{"ts": "2026-11-01T18:17:38Z", "step": "models.h4_dynamics", "status": "exploratory", "baseline_window": ["2026-08-31", "2026-09-27"], "outcome_window": ["2026-09-28", "2026-11-01"], "stores": 1540, "store_category_cells_absent_at_baseline": 20530, "entries": 149, "entering_stores": 93, "lpm_density_coef": 0.1114, "se_cluster_store": 0.0503, "t": 2.216, "placebo_coef_mean": -0.0042, "placebo_p95": 0.0873, "placebo_p": 0.009950248756218905, "density_mean_entry": 0.4124, "density_mean_no_entry": 0.2821, "n_region_entries": 11, "share_entering_stores_with_added_burst": 0.16129032258064516}54{"ts": "2026-11-01T18:18:10Z", "step": "models.h5_hedonic", "models": [{"label": "primary_AB", "obs": 2203, "groups": 1064, "stores": 143, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 164.385, "df_region": 14, "p_region_wildboot": 0.0045, "t_reseller": -4.371, "p_reseller_wildboot": 0.0012, "within_R2": 0.1663, "gap_median": 0.0474, "gap_p90": 0.2879, "share_gap_gt5pct": 0.4934, "share_gap_zero": 0.2904, "B": 9999}, {"label": "sens_ABC", "obs": 2512, "groups": 1189, "stores": 156, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 83.278, "df_region": 14, "p_region_wildboot": 0.0162, "t_reseller": -4.05, "p_reseller_wildboot": 0.0029, "within_R2": 0.1389, "gap_median": 0.0515, "gap_p90": 0.3326, "share_gap_gt5pct": 0.5046, "share_gap_zero": 0.286, "B": 9999}], "cert": {"note": "descriptive store-certification contrast (Aliments du Québec / Les Produits du Québec), category FE, store-clustered SE — NOT a test of H6", "obs": 288663, "stores": 1264, "certified_stores": 491, "b_log_price": -0.2038, "se": 0.1375}}55{"ts": "2026-11-01T18:18:14Z", "step": "models.h7_complexity", "regions": 17, "categories": 20, "M_density": 0.409, "diversity": {"Abitibi-Témiscamingue": 10, "Bas-Saint-Laurent": 6, "Capitale-Nationale": 9, "Centre-du-Québec": 11, "Chaudière-Appalaches": 8, "Côte-Nord": 8, "Estrie": 7, "Gaspésie–Îles-de-la-Madeleine": 8, "Lanaudière": 8, "Laurentides": 11, "Laval": 7, "Mauricie": 6, "Montréal": 9, "Montérégie": 9, "Nord-du-Québec": 4, "Outaouais": 7, "Saguenay–Lac-Saint-Jean": 11}, "eci": {"Abitibi-Témiscamingue": 1.273, "Bas-Saint-Laurent": -1.493, "Capitale-Nationale": 0.323, "Centre-du-Québec": -1.194, "Chaudière-Appalaches": -0.961, "Côte-Nord": 1.252, "Estrie": 0.03, "Gaspésie–Îles-de-la-Madeleine": 0.046, "Lanaudière": -0.375, "Laurentides": -0.073, "Laval": 1.159, "Mauricie": -1.558, "Montréal": 1.703, "Montérégie": 0.157, "Nord-du-Québec": -0.717, "Outaouais": 1.131, "Saguenay–Lac-Saint-Jean": -0.702}, "fitness": {"Abitibi-Témiscamingue": 1.151, "Bas-Saint-Laurent": 0.625, "Capitale-Nationale": 1.025, "Centre-du-Québec": 1.543, "Chaudière-Appalaches": 0.888, "Côte-Nord": 0.982, "Estrie": 0.732, "Gaspésie–Îles-de-la-Madeleine": 0.877, "Lanaudière": 0.918, "Laurentides": 1.702, "Laval": 0.795, "Mauricie": 0.597, "Montréal": 1.154, "Montérégie": 1.078, "Nord-du-Québec": 0.445, "Outaouais": 0.822, "Saguenay–Lac-Saint-Jean": 1.665}, "V1_bootstrap_rank_stability": {"eci_rho_median": 0.201, "eci_rho_p10": -0.539, "fitness_rho_median": 0.699, "diversity_rho_median": 0.687, "pass_eci": false}, "V2_reshuffle_null": {"obs_lambda2": 0.2519, "null_lambda2_p95": 0.2992, "p_lambda2": 0.4142928535732134, "obs_spectral_radius": 7.8962, "null_spectral_radius_p95": 8.7901, "p_spectral_radius": 0.9070464767616192, "obs_corr_eci_diversity": 0.242, "null_corr_eci_diversity_p5_p95": [-0.057, 0.567], "pass": false}, "V4_community_stability": {"nmi_median_vs_run0": 1.0, "nmi_p10": 1.0, "n_communities_mode": 2, "communities_run0": {"alcool": 0, "animaux": 0, "art": 0, "autre": 0, "bijoux": 0, "boissons": 0, "boulangerie": 1, "cafe_the": 0, "chocolat": 1, "enfants": 0, "epicerie": 1, "erable": 1, "fromage_laitier": 1, "industriel": 0, "jardin": 0, "maison": 0, "mode": 0, "plein_air": 0, "sante_beaute": 0, "viande_poisson": 1}}}56{"ts": "2026-11-01T18:18:19Z", "step": "models.h2_scale", "regions_in_external": 17, "regions_matched": 17, "covariate_sources": {"log_population": "ISQ population estimate, 1 July 2025 (provisional)", "log_business_locations": "ISQ business locations with employees, Dec 2025", "disposable_income": "ISQ disposable income per capita, 2024p", "log_density": "Census 2021 population density (2021 ER boundaries)"}, "note": "17 regions at most (Nord-du-Québec has no located store); rarefied diversity needs >= 15 stores. Associations only; CIs from 5 000 region-level bootstrap draws; OLS slope with HC3 SE.", "H7_V3": {"n": 17, "R2_eci_on_covariates": 0.475, "loo_pred_spearman": 0.392, "criterion_rho_ge_0.5": false, "partial_corr_eci_diversity_given_covariates": -0.083}, "primary": {"n": 16, "rho": -0.197, "ci": [-0.616, 0.341], "ols_b": -0.0051, "ols_se_hc3": 0.0063}}57{"ts": "2026-11-01T18:18:21Z", "step": "validation.robustness", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts"]}58{"ts": "2026-11-01T18:18:22Z", "step": "validation.external", "corr": {"businesses": {"spearman": 0.907, "pearson_log": 0.92}, "retail_locations": {"spearman": 0.89, "pearson_log": 0.92}, "mfg_locations": {"spearman": 0.934, "pearson_log": 0.95}, "population": {"spearman": 0.843, "pearson_log": 0.872}}, "cv": {"min": 1.83, "max": 11.14, "ratio_max_min": 6.08, "cv": 0.431}}59{"ts": "2026-11-01T18:18:23Z", "step": "reports.make_tables", "tables": ["cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}60{"ts": "2026-11-01T18:18:47Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}61{"ts": "2026-11-01T18:19:18Z", "step": "models.qdaci", "components": ["diversity_rarefied", "specialization", "concentration_gini", "coverage_stores_per_100k"], "price_dispersion_regions": 6, "complexity_included": false, "composite_agreement_spearman": {"equal_vs_pca": 0.677, "equal_vs_borda": 1.0, "pca_vs_borda": 0.677, "median": 0.677}, "pca_first_component_share": 0.394, "pca_loadings": {"diversity_rarefied": -0.244, "specialization": 0.684, "concentration_gini": 0.687, "coverage_stores_per_100k": 0.023}, "bootstrap_rank_stability_equal_weights_median_rho": 0.501, "publish_composite": false, "note": "Components describe observed online catalogues of Quebec-based merchants, not production or output. Complexity omitted because the ECI failed the preregistered stability criterion."}62{"ts": "2026-11-01T18:19:35Z", "step": "validation.robustness", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "confusion_reassignment_100draws"]}63{"ts": "2026-11-01T18:19:35Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}64{"ts": "2026-11-01T18:19:59Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}65{"ts": "2026-11-01T18:23:15Z", "step": "category_model.embed", "model": "text-embedding-3-small", "listings": 370055, "tokens": 24092708}66{"ts": "2026-11-01T18:23:20Z", "step": "features.region_category", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 1223, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 237, "Montérégie": 190, "Estrie": 152, "Capitale-Nationale": 126, "Chaudière-Appalaches": 102, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 36, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}}67{"ts": "2026-11-01T18:23:53Z", "step": "features.diversity", "quebec_H_norm_M": 0.8657, "quebec_eff_cat_M": 13.376, "regions_rarefied": 16, "store_n_categories_dist": {"1": 183, "2": 127, "3": 159, "4": 162, "5": 143, "6": 106, "7": 107, "8": 100, "9": 79, "10": 78, "11": 54, "12": 47, "13": 43, "14": 31, "15": 35, "16": 18, "17": 25, "18": 18, "19": 14, "20": 28}, "range_H_rarefied15": [0.741, 0.845]}68{"ts": "2026-11-01T18:23:57Z", "step": "models.h1_raa", "results": [{"sample": "S_R", "scheme": "M", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1049, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1161, 0.1363], "perm_null_mean": 0.0747, "perm_null_p5": 0.0689, "excess_v": 0.0302, "perm_null_p95": 0.081, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 13, "cells_sig_lt1": 62, "cells": 340}, {"sample": "S_R", "scheme": "L", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.2265, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.205, 0.2935], "perm_null_mean": 0.2016, "perm_null_p5": 0.1737, "excess_v": 0.0249, "perm_null_p95": 0.2277, "p_perm": 0.05847076461769116, "cells_sig_gt1": 6, "cells_sig_lt1": 71, "cells": 340}, {"sample": "S_R", "scheme": "T", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1585, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1571, 0.2266], "perm_null_mean": 0.1592, "perm_null_p5": 0.1392, "excess_v": -0.0007, "perm_null_p95": 0.183, "p_perm": 0.49225387306346824, "cells_sig_gt1": 9, "cells_sig_lt1": 61, "cells": 340}, {"sample": "S_R0", "scheme": "M", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.114, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1255, 0.1491], "perm_null_mean": 0.0786, "perm_null_p5": 0.0729, "excess_v": 0.0354, "perm_null_p95": 0.0849, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 12, "cells_sig_lt1": 59, "cells": 320}, {"sample": "S_R0", "scheme": "L", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.2526, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2236, 0.3131], "perm_null_mean": 0.2173, "perm_null_p5": 0.1871, "excess_v": 0.0353, "perm_null_p95": 0.2466, "p_perm": 0.0239880059970015, "cells_sig_gt1": 7, "cells_sig_lt1": 61, "cells": 320}, {"sample": "S_R0", "scheme": "T", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.1759, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1748, 0.244], "perm_null_mean": 0.1787, "perm_null_p5": 0.1552, "excess_v": -0.0028, "perm_null_p95": 0.2049, "p_perm": 0.5347326336831584, "cells_sig_gt1": 10, "cells_sig_lt1": 66, "cells": 320}, {"sample": "S_R", "scheme": "stores", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.0466, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.0532, 0.0629], "perm_null_mean": 0.0348, "perm_null_p5": 0.0322, "excess_v": 0.0118, "perm_null_p95": 0.0373, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 14, "cells_sig_lt1": 30, "cells": 340}]}69{"ts": "2026-11-01T18:23:57Z", "step": "models.h3_longtail", "stores": 1557, "listings": 370054, "gini": 0.8491, "gini_ci": [0.8109, 0.8782], "top1pct_share": 0.4434, "top1_ci": [0.3276, 0.5263], "top10pct_share": 0.7889, "top10_ci": [0.7295, 0.8357], "median_catalogue": 35.0, "p90": 311.8000000000002, "p99": 3359.32, "max": 24104, "rank_size_slope_loglog": -1.647, "powerlaw": {"xmin": 165, "alpha": 1.929174500673675, "ks": 0.027806349691342103, "n_tail": 288, "ll_pl": -2088.7485743757525}, "lognormal_vs_powerlaw": {"vuong_R": 60.646021642964115, "vuong_z": 4.991632500389355, "vuong_p": 5.987108926408524e-07, "favoured": "power-law", "lognormal_mu": 6.179139125490812, "lognormal_sigma": 1.0239165255662563}, "decision_prereg": true}70{"ts": "2026-11-01T18:24:06Z", "step": "models.h4_dynamics", "status": "exploratory", "baseline_window": ["2026-08-31", "2026-09-27"], "outcome_window": ["2026-09-28", "2026-11-01"], "stores": 1540, "store_category_cells_absent_at_baseline": 20530, "entries": 149, "entering_stores": 93, "lpm_density_coef": 0.1114, "se_cluster_store": 0.0503, "t": 2.216, "placebo_coef_mean": -0.0042, "placebo_p95": 0.0873, "placebo_p": 0.009950248756218905, "density_mean_entry": 0.4124, "density_mean_no_entry": 0.2821, "n_region_entries": 11, "share_entering_stores_with_added_burst": 0.16129032258064516}71{"ts": "2026-11-01T18:24:38Z", "step": "models.h5_hedonic", "models": [{"label": "primary_AB", "obs": 2203, "groups": 1064, "stores": 143, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 164.385, "df_region": 14, "p_region_wildboot": 0.0045, "t_reseller": -4.371, "p_reseller_wildboot": 0.0012, "within_R2": 0.1663, "gap_median": 0.0474, "gap_p90": 0.2879, "share_gap_gt5pct": 0.4934, "share_gap_zero": 0.2904, "B": 9999}, {"label": "sens_ABC", "obs": 2512, "groups": 1189, "stores": 156, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 83.278, "df_region": 14, "p_region_wildboot": 0.0162, "t_reseller": -4.05, "p_reseller_wildboot": 0.0029, "within_R2": 0.1389, "gap_median": 0.0515, "gap_p90": 0.3326, "share_gap_gt5pct": 0.5046, "share_gap_zero": 0.286, "B": 9999}], "cert": {"note": "descriptive store-certification contrast (Aliments du Québec / Les Produits du Québec), category FE, store-clustered SE — NOT a test of H6", "obs": 288663, "stores": 1264, "certified_stores": 491, "b_log_price": -0.2038, "se": 0.1375}}72{"ts": "2026-11-01T18:24:42Z", "step": "models.h7_complexity", "regions": 17, "categories": 20, "M_density": 0.409, "diversity": {"Abitibi-Témiscamingue": 10, "Bas-Saint-Laurent": 6, "Capitale-Nationale": 9, "Centre-du-Québec": 11, "Chaudière-Appalaches": 8, "Côte-Nord": 8, "Estrie": 7, "Gaspésie–Îles-de-la-Madeleine": 8, "Lanaudière": 8, "Laurentides": 11, "Laval": 7, "Mauricie": 6, "Montréal": 9, "Montérégie": 9, "Nord-du-Québec": 4, "Outaouais": 7, "Saguenay–Lac-Saint-Jean": 11}, "eci": {"Abitibi-Témiscamingue": 1.273, "Bas-Saint-Laurent": -1.493, "Capitale-Nationale": 0.323, "Centre-du-Québec": -1.194, "Chaudière-Appalaches": -0.961, "Côte-Nord": 1.252, "Estrie": 0.03, "Gaspésie–Îles-de-la-Madeleine": 0.046, "Lanaudière": -0.375, "Laurentides": -0.073, "Laval": 1.159, "Mauricie": -1.558, "Montréal": 1.703, "Montérégie": 0.157, "Nord-du-Québec": -0.717, "Outaouais": 1.131, "Saguenay–Lac-Saint-Jean": -0.702}, "fitness": {"Abitibi-Témiscamingue": 1.151, "Bas-Saint-Laurent": 0.625, "Capitale-Nationale": 1.025, "Centre-du-Québec": 1.543, "Chaudière-Appalaches": 0.888, "Côte-Nord": 0.982, "Estrie": 0.732, "Gaspésie–Îles-de-la-Madeleine": 0.877, "Lanaudière": 0.918, "Laurentides": 1.702, "Laval": 0.795, "Mauricie": 0.597, "Montréal": 1.154, "Montérégie": 1.078, "Nord-du-Québec": 0.445, "Outaouais": 0.822, "Saguenay–Lac-Saint-Jean": 1.665}, "V1_bootstrap_rank_stability": {"eci_rho_median": 0.201, "eci_rho_p10": -0.539, "fitness_rho_median": 0.699, "diversity_rho_median": 0.687, "pass_eci": false}, "V2_reshuffle_null": {"obs_lambda2": 0.2519, "null_lambda2_p95": 0.2992, "p_lambda2": 0.4142928535732134, "obs_spectral_radius": 7.8962, "null_spectral_radius_p95": 8.7901, "p_spectral_radius": 0.9070464767616192, "obs_corr_eci_diversity": 0.242, "null_corr_eci_diversity_p5_p95": [-0.057, 0.567], "pass": false}, "V4_community_stability": {"nmi_median_vs_run0": 1.0, "nmi_p10": 1.0, "n_communities_mode": 2, "communities_run0": {"alcool": 0, "animaux": 0, "art": 0, "autre": 0, "bijoux": 0, "boissons": 0, "boulangerie": 1, "cafe_the": 0, "chocolat": 1, "enfants": 0, "epicerie": 1, "erable": 1, "fromage_laitier": 1, "industriel": 0, "jardin": 0, "maison": 0, "mode": 0, "plein_air": 0, "sante_beaute": 0, "viande_poisson": 1}}}73{"ts": "2026-11-01T18:24:48Z", "step": "models.h2_scale", "regions_in_external": 17, "regions_matched": 17, "covariate_sources": {"log_population": "ISQ population estimate, 1 July 2025 (provisional)", "log_business_locations": "ISQ business locations with employees, Dec 2025", "disposable_income": "ISQ disposable income per capita, 2024p", "log_density": "Census 2021 population density (2021 ER boundaries)"}, "note": "17 regions at most (Nord-du-Québec has no located store); rarefied diversity needs >= 15 stores. Associations only; CIs from 5 000 region-level bootstrap draws; OLS slope with HC3 SE.", "H7_V3": {"n": 17, "R2_eci_on_covariates": 0.475, "loo_pred_spearman": 0.392, "criterion_rho_ge_0.5": false, "partial_corr_eci_diversity_given_covariates": -0.083}, "primary": {"n": 16, "rho": -0.197, "ci": [-0.616, 0.341], "ols_b": -0.0051, "ols_se_hc3": 0.0063}}74{"ts": "2026-11-01T18:24:55Z", "step": "validation.robustness", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "confusion_reassignment_100draws"]}75{"ts": "2026-11-01T18:24:56Z", "step": "validation.external", "corr": {"businesses": {"spearman": 0.907, "pearson_log": 0.92}, "retail_locations": {"spearman": 0.89, "pearson_log": 0.92}, "mfg_locations": {"spearman": 0.934, "pearson_log": 0.95}, "population": {"spearman": 0.843, "pearson_log": 0.872}}, "cv": {"min": 1.83, "max": 11.14, "ratio_max_min": 6.08, "cv": 0.431}}76{"ts": "2026-11-01T18:24:58Z", "step": "models.qdaci", "components": ["diversity_rarefied", "specialization", "concentration_gini", "coverage_stores_per_100k"], "price_dispersion_regions": 6, "complexity_included": false, "composite_agreement_spearman": {"equal_vs_pca": 0.677, "equal_vs_borda": 1.0, "pca_vs_borda": 0.677, "median": 0.677}, "pca_first_component_share": 0.394, "pca_loadings": {"diversity_rarefied": -0.244, "specialization": 0.684, "concentration_gini": 0.687, "coverage_stores_per_100k": 0.023}, "bootstrap_rank_stability_equal_weights_median_rho": 0.501, "publish_composite": false, "note": "Components describe observed online catalogues of Quebec-based merchants, not production or output. Complexity omitted because the ECI failed the preregistered stability criterion."}77{"ts": "2026-11-01T18:24:58Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}78{"ts": "2026-11-01T18:25:22Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}79{"ts": "2026-11-01T18:29:13Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}80{"ts": "2026-11-01T18:40:37Z", "step": "category_model.annotate", "model": "claude-sonnet-5-5", "in": 8370445, "out": 262940, "calls": 6481, "errors": 0}81{"ts": "2026-11-01T18:40:59Z", "step": "category_model.train", "train_n": 6481, "cv5_accuracy_vs_llm": 0.6917, "audit_consensus_n": 474, "accuracy_model_on_audit": 0.8819, "accuracy_rule_on_audit": 0.4599, "listing_weighted_accuracy_model": 0.9106, "listing_weighted_accuracy_rule": 0.4535, "share_relabelled": 0.5229, "features": "text-embedding-3-small (512 d) + one-hot rule label; multinomial logistic regression C=2"}82{"ts": "2026-11-01T18:41:20Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "match_validation.tex", "sample_flow.tex"]}83{"ts": "2026-11-01T18:41:38Z", "step": "reports.make_figures", "figures": ["attrition.pdf"]}84{"ts": "2026-11-01T18:42:07Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "match_validation.tex", "sample_flow.tex"]}85{"ts": "2026-11-01T18:42:24Z", "step": "reports.make_figures", "figures": ["attrition.pdf"]}86{"ts": "2026-11-01T18:42:30Z", "step": "features.region_category", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 1223, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 237, "Montérégie": 190, "Estrie": 152, "Capitale-Nationale": 126, "Chaudière-Appalaches": 102, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 36, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}}87{"ts": "2026-11-01T18:43:03Z", "step": "features.diversity", "quebec_H_norm_M": 0.8888, "quebec_eff_cat_M": 14.335, "regions_rarefied": 16, "store_n_categories_dist": {"1": 223, "2": 206, "3": 209, "4": 206, "5": 169, "6": 123, "7": 123, "8": 91, "9": 52, "10": 46, "11": 35, "12": 19, "13": 18, "14": 6, "15": 10, "16": 9, "17": 5, "19": 4, "20": 3}, "range_H_rarefied15": [0.731, 0.887]}88{"ts": "2026-11-01T18:43:06Z", "step": "models.h1_raa", "results": [{"sample": "S_R", "scheme": "M", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1114, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1267, 0.1467], "perm_null_mean": 0.0858, "perm_null_p5": 0.0795, "excess_v": 0.0256, "perm_null_p95": 0.0929, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 12, "cells_sig_lt1": 64, "cells": 340}, {"sample": "S_R", "scheme": "L", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.3203, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2732, 0.3879], "perm_null_mean": 0.2991, "perm_null_p5": 0.2551, "excess_v": 0.0213, "perm_null_p95": 0.3436, "p_perm": 0.21239380309845077, "cells_sig_gt1": 5, "cells_sig_lt1": 64, "cells": 340}, {"sample": "S_R", "scheme": "T", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1907, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1959, 0.2577], "perm_null_mean": 0.1894, "perm_null_p5": 0.1663, "excess_v": 0.0013, "perm_null_p95": 0.2149, "p_perm": 0.4452773613193403, "cells_sig_gt1": 7, "cells_sig_lt1": 72, "cells": 340}, {"sample": "S_R0", "scheme": "M", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.1214, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1369, 0.1605], "perm_null_mean": 0.0896, "perm_null_p5": 0.0832, "excess_v": 0.0318, "perm_null_p95": 0.096, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 9, "cells_sig_lt1": 72, "cells": 320}, {"sample": "S_R0", "scheme": "L", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.3435, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2747, 0.4006], "perm_null_mean": 0.2781, "perm_null_p5": 0.2384, "excess_v": 0.0653, "perm_null_p95": 0.3181, "p_perm": 0.0024987506246876563, "cells_sig_gt1": 9, "cells_sig_lt1": 70, "cells": 320}, {"sample": "S_R0", "scheme": "T", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.2188, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2144, 0.2864], "perm_null_mean": 0.2014, "perm_null_p5": 0.1768, "excess_v": 0.0174, "perm_null_p95": 0.2288, "p_perm": 0.13993003498250875, "cells_sig_gt1": 10, "cells_sig_lt1": 74, "cells": 320}, {"sample": "S_R", "scheme": "stores", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.0556, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.0648, 0.0764], "perm_null_mean": 0.0447, "perm_null_p5": 0.0415, "excess_v": 0.0109, "perm_null_p95": 0.0481, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 15, "cells_sig_lt1": 26, "cells": 340}]}89{"ts": "2026-11-01T18:43:07Z", "step": "models.h3_longtail", "stores": 1557, "listings": 370054, "gini": 0.8491, "gini_ci": [0.8109, 0.8782], "top1pct_share": 0.4434, "top1_ci": [0.3276, 0.5263], "top10pct_share": 0.7889, "top10_ci": [0.7295, 0.8357], "median_catalogue": 35.0, "p90": 311.8000000000002, "p99": 3359.32, "max": 24104, "rank_size_slope_loglog": -1.647, "powerlaw": {"xmin": 165, "alpha": 1.929174500673675, "ks": 0.027806349691342103, "n_tail": 288, "ll_pl": -2088.7485743757525}, "lognormal_vs_powerlaw": {"vuong_R": 60.646021642964115, "vuong_z": 4.991632500389355, "vuong_p": 5.987108926408524e-07, "favoured": "power-law", "lognormal_mu": 6.179139125490812, "lognormal_sigma": 1.0239165255662563}, "decision_prereg": true}90{"ts": "2026-11-01T18:43:16Z", "step": "models.h4_dynamics", "status": "exploratory", "baseline_window": ["2026-08-31", "2026-09-27"], "outcome_window": ["2026-09-28", "2026-11-01"], "stores": 1540, "store_category_cells_absent_at_baseline": 22920, "entries": 104, "entering_stores": 82, "lpm_density_coef": 0.065, "se_cluster_store": 0.0186, "t": 3.501, "placebo_coef_mean": -0.0016, "placebo_p95": 0.0417, "placebo_p": 0.009950248756218905, "density_mean_entry": 0.3304, "density_mean_no_entry": 0.2534, "n_region_entries": 3, "share_entering_stores_with_added_burst": 0.12195121951219512}91{"ts": "2026-11-01T18:43:48Z", "step": "models.h5_hedonic", "models": [{"label": "primary_AB", "obs": 2203, "groups": 1064, "stores": 143, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 164.385, "df_region": 14, "p_region_wildboot": 0.0045, "t_reseller": -4.371, "p_reseller_wildboot": 0.0012, "within_R2": 0.1663, "gap_median": 0.0474, "gap_p90": 0.2879, "share_gap_gt5pct": 0.4934, "share_gap_zero": 0.2904, "B": 9999}, {"label": "sens_ABC", "obs": 2512, "groups": 1189, "stores": 156, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 83.278, "df_region": 14, "p_region_wildboot": 0.0162, "t_reseller": -4.05, "p_reseller_wildboot": 0.0029, "within_R2": 0.1389, "gap_median": 0.0515, "gap_p90": 0.3326, "share_gap_gt5pct": 0.5046, "share_gap_zero": 0.286, "B": 9999}], "cert": {"note": "descriptive store-certification contrast (Aliments du Québec / Les Produits du Québec), category FE, store-clustered SE — NOT a test of H6", "obs": 288663, "stores": 1264, "certified_stores": 491, "b_log_price": -0.2038, "se": 0.1375}}92{"ts": "2026-11-01T18:43:52Z", "step": "models.h7_complexity", "regions": 17, "categories": 20, "M_density": 0.397, "diversity": {"Abitibi-Témiscamingue": 9, "Bas-Saint-Laurent": 8, "Capitale-Nationale": 7, "Centre-du-Québec": 12, "Chaudière-Appalaches": 8, "Côte-Nord": 5, "Estrie": 8, "Gaspésie–Îles-de-la-Madeleine": 5, "Lanaudière": 10, "Laurentides": 11, "Laval": 7, "Mauricie": 9, "Montréal": 9, "Montérégie": 8, "Nord-du-Québec": 5, "Outaouais": 6, "Saguenay–Lac-Saint-Jean": 8}, "eci": {"Abitibi-Témiscamingue": -0.172, "Bas-Saint-Laurent": 1.145, "Capitale-Nationale": 0.594, "Centre-du-Québec": 0.897, "Chaudière-Appalaches": 1.635, "Côte-Nord": -1.767, "Estrie": 0.086, "Gaspésie–Îles-de-la-Madeleine": -1.248, "Lanaudière": -0.876, "Laurentides": 0.697, "Laval": 0.022, "Mauricie": 1.031, "Montréal": -1.195, "Montérégie": 0.859, "Nord-du-Québec": -1.388, "Outaouais": 0.424, "Saguenay–Lac-Saint-Jean": -0.743}, "fitness": {"Abitibi-Témiscamingue": 1.069, "Bas-Saint-Laurent": 1.153, "Capitale-Nationale": 0.992, "Centre-du-Québec": 1.701, "Chaudière-Appalaches": 1.256, "Côte-Nord": 0.506, "Estrie": 0.959, "Gaspésie–Îles-de-la-Madeleine": 0.5, "Lanaudière": 1.091, "Laurentides": 1.562, "Laval": 0.817, "Mauricie": 1.098, "Montréal": 1.089, "Montérégie": 1.086, "Nord-du-Québec": 0.574, "Outaouais": 0.672, "Saguenay–Lac-Saint-Jean": 0.874}, "V1_bootstrap_rank_stability": {"eci_rho_median": 0.667, "eci_rho_p10": -0.336, "fitness_rho_median": 0.554, "diversity_rho_median": 0.609, "pass_eci": false}, "V2_reshuffle_null": {"obs_lambda2": 0.4074, "null_lambda2_p95": 0.2977, "p_lambda2": 0.0004997501249375312, "obs_spectral_radius": 7.7255, "null_spectral_radius_p95": 8.7944, "p_spectral_radius": 0.9685157421289355, "obs_corr_eci_diversity": 0.428, "null_corr_eci_diversity_p5_p95": [-0.086, 0.573], "pass": true}, "V4_community_stability": {"nmi_median_vs_run0": 1.0, "nmi_p10": 1.0, "n_communities_mode": 2, "communities_run0": {"alcool": 1, "animaux": 0, "art": 0, "autre": 0, "bijoux": 0, "boissons": 1, "boulangerie": 1, "cafe_the": 1, "chocolat": 1, "enfants": 0, "epicerie": 1, "erable": 1, "fromage_laitier": 1, "industriel": 0, "jardin": 0, "maison": 0, "mode": 0, "plein_air": 0, "sante_beaute": 0, "viande_poisson": 1}}}93{"ts": "2026-11-01T18:43:57Z", "step": "models.h2_scale", "regions_in_external": 17, "regions_matched": 17, "covariate_sources": {"log_population": "ISQ population estimate, 1 July 2025 (provisional)", "log_business_locations": "ISQ business locations with employees, Dec 2025", "disposable_income": "ISQ disposable income per capita, 2024p", "log_density": "Census 2021 population density (2021 ER boundaries)"}, "note": "17 regions at most (Nord-du-Québec has no located store); rarefied diversity needs >= 15 stores. Associations only; CIs from 5 000 region-level bootstrap draws; OLS slope with HC3 SE.", "H7_V3": {"n": 17, "R2_eci_on_covariates": 0.25, "loo_pred_spearman": 0.0, "criterion_rho_ge_0.5": false, "partial_corr_eci_diversity_given_covariates": 0.235}, "primary": {"n": 16, "rho": 0.0, "ci": [-0.627, 0.603], "ols_b": -0.0035, "ols_se_hc3": 0.0167}}94{"ts": "2026-11-01T18:44:03Z", "step": "validation.robustness", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "confusion_reassignment_100draws"]}95{"ts": "2026-11-01T18:44:04Z", "step": "validation.external", "corr": {"businesses": {"spearman": 0.907, "pearson_log": 0.92}, "retail_locations": {"spearman": 0.89, "pearson_log": 0.92}, "mfg_locations": {"spearman": 0.934, "pearson_log": 0.95}, "population": {"spearman": 0.843, "pearson_log": 0.872}}, "cv": {"min": 1.83, "max": 11.14, "ratio_max_min": 6.08, "cv": 0.431}}96{"ts": "2026-11-01T18:44:06Z", "step": "models.qdaci", "components": ["diversity_rarefied", "specialization", "concentration_gini", "coverage_stores_per_100k"], "price_dispersion_regions": 6, "complexity_included": false, "composite_agreement_spearman": {"equal_vs_pca": 0.254, "equal_vs_borda": 1.0, "pca_vs_borda": 0.254, "median": 0.254}, "pca_first_component_share": 0.451, "pca_loadings": {"diversity_rarefied": -0.562, "specialization": 0.622, "concentration_gini": 0.542, "coverage_stores_per_100k": -0.061}, "bootstrap_rank_stability_equal_weights_median_rho": 0.47, "publish_composite": false, "note": "Components describe observed online catalogues of Quebec-based merchants, not production or output. Complexity omitted because the ECI failed the preregistered stability criterion."}97{"ts": "2026-11-01T18:44:06Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "sample_flow.tex"]}98{"ts": "2026-11-01T18:44:30Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}99{"ts": "2026-11-01T18:45:17Z", "step": "clean.stores", "live_stores": 1569, "regions_layer": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/economie/economic-geography-digital-production/data/external/geo/qc_regions_admin_mern_bdat100k.gpkg", "region_source": {"db": 865, "city": 393, "unknown": 229, "pip": 82}, "region_conflicts": 30, "unknown_region_listings": 71692, "phone_shared_stores": 250, "certified_stores": 718, "region_final_counts": {"Montréal": 238, "Inconnue": 229, "Montérégie": 192, "Estrie": 154, "Capitale-Nationale": 126, "Chaudière-Appalaches": 105, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 37, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}, "agreement_db_vs_pip": 0.8906, "agreement_city_vs_pip": 0.9593, "agreement_db_vs_final": 0.9755}100{"ts": "2026-11-01T18:45:19Z", "step": "features.region_category", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 1223, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 237, "Montérégie": 190, "Estrie": 152, "Capitale-Nationale": 126, "Chaudière-Appalaches": 102, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 36, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}}101{"ts": "2026-11-01T18:45:52Z", "step": "features.diversity", "quebec_H_norm_M": 0.8657, "quebec_eff_cat_M": 13.376, "regions_rarefied": 16, "store_n_categories_dist": {"1": 183, "2": 127, "3": 159, "4": 162, "5": 143, "6": 106, "7": 107, "8": 100, "9": 79, "10": 78, "11": 54, "12": 47, "13": 43, "14": 31, "15": 35, "16": 18, "17": 25, "18": 18, "19": 14, "20": 28}, "range_H_rarefied15": [0.741, 0.845]}102{"ts": "2026-11-01T18:45:55Z", "step": "models.h1_raa", "results": [{"sample": "S_R", "scheme": "M", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1049, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1161, 0.1363], "perm_null_mean": 0.0747, "perm_null_p5": 0.0689, "excess_v": 0.0302, "perm_null_p95": 0.081, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 13, "cells_sig_lt1": 62, "cells": 340}, {"sample": "S_R", "scheme": "L", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.2265, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.205, 0.2935], "perm_null_mean": 0.2016, "perm_null_p5": 0.1737, "excess_v": 0.0249, "perm_null_p95": 0.2277, "p_perm": 0.05847076461769116, "cells_sig_gt1": 6, "cells_sig_lt1": 71, "cells": 340}, {"sample": "S_R", "scheme": "T", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1585, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1571, 0.2266], "perm_null_mean": 0.1592, "perm_null_p5": 0.1392, "excess_v": -0.0007, "perm_null_p95": 0.183, "p_perm": 0.49225387306346824, "cells_sig_gt1": 9, "cells_sig_lt1": 61, "cells": 340}, {"sample": "S_R0", "scheme": "M", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.114, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1255, 0.1491], "perm_null_mean": 0.0786, "perm_null_p5": 0.0729, "excess_v": 0.0354, "perm_null_p95": 0.0849, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 12, "cells_sig_lt1": 59, "cells": 320}, {"sample": "S_R0", "scheme": "L", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.2526, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2236, 0.3131], "perm_null_mean": 0.2173, "perm_null_p5": 0.1871, "excess_v": 0.0353, "perm_null_p95": 0.2466, "p_perm": 0.0239880059970015, "cells_sig_gt1": 7, "cells_sig_lt1": 61, "cells": 320}, {"sample": "S_R0", "scheme": "T", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.1759, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1748, 0.244], "perm_null_mean": 0.1787, "perm_null_p5": 0.1552, "excess_v": -0.0028, "perm_null_p95": 0.2049, "p_perm": 0.5347326336831584, "cells_sig_gt1": 10, "cells_sig_lt1": 66, "cells": 320}, {"sample": "S_R", "scheme": "stores", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.0466, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.0532, 0.0629], "perm_null_mean": 0.0348, "perm_null_p5": 0.0322, "excess_v": 0.0118, "perm_null_p95": 0.0373, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 14, "cells_sig_lt1": 30, "cells": 340}]}103{"ts": "2026-11-01T18:45:56Z", "step": "models.h3_longtail", "stores": 1557, "listings": 370054, "gini": 0.8491, "gini_ci": [0.8109, 0.8782], "top1pct_share": 0.4434, "top1_ci": [0.3276, 0.5263], "top10pct_share": 0.7889, "top10_ci": [0.7295, 0.8357], "median_catalogue": 35.0, "p90": 311.8000000000002, "p99": 3359.32, "max": 24104, "rank_size_slope_loglog": -1.647, "powerlaw": {"xmin": 165, "alpha": 1.929174500673675, "ks": 0.027806349691342103, "n_tail": 288, "ll_pl": -2088.7485743757525}, "lognormal_vs_powerlaw": {"vuong_R": 60.646021642964115, "vuong_z": 4.991632500389355, "vuong_p": 5.987108926408524e-07, "favoured": "power-law", "lognormal_mu": 6.179139125490812, "lognormal_sigma": 1.0239165255662563}, "decision_prereg": true}104{"ts": "2026-11-01T18:46:05Z", "step": "models.h4_dynamics", "status": "exploratory", "baseline_window": ["2026-08-31", "2026-09-27"], "outcome_window": ["2026-09-28", "2026-11-01"], "stores": 1540, "store_category_cells_absent_at_baseline": 20530, "entries": 149, "entering_stores": 93, "lpm_density_coef": 0.1114, "se_cluster_store": 0.0503, "t": 2.216, "placebo_coef_mean": -0.0042, "placebo_p95": 0.0873, "placebo_p": 0.009950248756218905, "density_mean_entry": 0.4124, "density_mean_no_entry": 0.2821, "n_region_entries": 11, "share_entering_stores_with_added_burst": 0.16129032258064516}105{"ts": "2026-11-01T18:46:37Z", "step": "models.h5_hedonic", "models": [{"label": "primary_AB", "obs": 2203, "groups": 1064, "stores": 143, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 164.385, "df_region": 14, "p_region_wildboot": 0.0045, "t_reseller": -4.371, "p_reseller_wildboot": 0.0012, "within_R2": 0.1663, "gap_median": 0.0474, "gap_p90": 0.2879, "share_gap_gt5pct": 0.4934, "share_gap_zero": 0.2904, "B": 9999}, {"label": "sens_ABC", "obs": 2512, "groups": 1189, "stores": 156, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 83.278, "df_region": 14, "p_region_wildboot": 0.0162, "t_reseller": -4.05, "p_reseller_wildboot": 0.0029, "within_R2": 0.1389, "gap_median": 0.0515, "gap_p90": 0.3326, "share_gap_gt5pct": 0.5046, "share_gap_zero": 0.286, "B": 9999}], "cert": {"note": "descriptive store-certification contrast (Aliments du Québec / Les Produits du Québec), category FE, store-clustered SE — NOT a test of H6", "obs": 288663, "stores": 1264, "certified_stores": 491, "b_log_price": -0.2038, "se": 0.1375}}106{"ts": "2026-11-01T18:46:41Z", "step": "models.h7_complexity", "regions": 17, "categories": 20, "M_density": 0.409, "diversity": {"Abitibi-Témiscamingue": 10, "Bas-Saint-Laurent": 6, "Capitale-Nationale": 9, "Centre-du-Québec": 11, "Chaudière-Appalaches": 8, "Côte-Nord": 8, "Estrie": 7, "Gaspésie–Îles-de-la-Madeleine": 8, "Lanaudière": 8, "Laurentides": 11, "Laval": 7, "Mauricie": 6, "Montréal": 9, "Montérégie": 9, "Nord-du-Québec": 4, "Outaouais": 7, "Saguenay–Lac-Saint-Jean": 11}, "eci": {"Abitibi-Témiscamingue": 1.273, "Bas-Saint-Laurent": -1.493, "Capitale-Nationale": 0.323, "Centre-du-Québec": -1.194, "Chaudière-Appalaches": -0.961, "Côte-Nord": 1.252, "Estrie": 0.03, "Gaspésie–Îles-de-la-Madeleine": 0.046, "Lanaudière": -0.375, "Laurentides": -0.073, "Laval": 1.159, "Mauricie": -1.558, "Montréal": 1.703, "Montérégie": 0.157, "Nord-du-Québec": -0.717, "Outaouais": 1.131, "Saguenay–Lac-Saint-Jean": -0.702}, "fitness": {"Abitibi-Témiscamingue": 1.151, "Bas-Saint-Laurent": 0.625, "Capitale-Nationale": 1.025, "Centre-du-Québec": 1.543, "Chaudière-Appalaches": 0.888, "Côte-Nord": 0.982, "Estrie": 0.732, "Gaspésie–Îles-de-la-Madeleine": 0.877, "Lanaudière": 0.918, "Laurentides": 1.702, "Laval": 0.795, "Mauricie": 0.597, "Montréal": 1.154, "Montérégie": 1.078, "Nord-du-Québec": 0.445, "Outaouais": 0.822, "Saguenay–Lac-Saint-Jean": 1.665}, "V1_bootstrap_rank_stability": {"eci_rho_median": 0.201, "eci_rho_p10": -0.539, "fitness_rho_median": 0.699, "diversity_rho_median": 0.687, "pass_eci": false}, "V2_reshuffle_null": {"obs_lambda2": 0.2519, "null_lambda2_p95": 0.2992, "p_lambda2": 0.4142928535732134, "obs_spectral_radius": 7.8962, "null_spectral_radius_p95": 8.7901, "p_spectral_radius": 0.9070464767616192, "obs_corr_eci_diversity": 0.242, "null_corr_eci_diversity_p5_p95": [-0.057, 0.567], "pass": false}, "V4_community_stability": {"nmi_median_vs_run0": 1.0, "nmi_p10": 1.0, "n_communities_mode": 2, "communities_run0": {"alcool": 0, "animaux": 0, "art": 0, "autre": 0, "bijoux": 0, "boissons": 0, "boulangerie": 1, "cafe_the": 0, "chocolat": 1, "enfants": 0, "epicerie": 1, "erable": 1, "fromage_laitier": 1, "industriel": 0, "jardin": 0, "maison": 0, "mode": 0, "plein_air": 0, "sante_beaute": 0, "viande_poisson": 1}}}107{"ts": "2026-11-01T18:46:47Z", "step": "models.h2_scale", "regions_in_external": 17, "regions_matched": 17, "covariate_sources": {"log_population": "ISQ population estimate, 1 July 2025 (provisional)", "log_business_locations": "ISQ business locations with employees, Dec 2025", "disposable_income": "ISQ disposable income per capita, 2024p", "log_density": "Census 2021 population density (2021 ER boundaries)"}, "note": "17 regions at most (Nord-du-Québec has no located store); rarefied diversity needs >= 15 stores. Associations only; CIs from 5 000 region-level bootstrap draws; OLS slope with HC3 SE.", "H7_V3": {"n": 17, "R2_eci_on_covariates": 0.475, "loo_pred_spearman": 0.392, "criterion_rho_ge_0.5": false, "partial_corr_eci_diversity_given_covariates": -0.083}, "primary": {"n": 16, "rho": -0.197, "ci": [-0.616, 0.341], "ols_b": -0.0051, "ols_se_hc3": 0.0063}}108{"ts": "2026-11-01T18:46:54Z", "step": "validation.robustness", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "confusion_reassignment_100draws"]}109{"ts": "2026-11-01T18:46:54Z", "step": "validation.external", "corr": {"businesses": {"spearman": 0.907, "pearson_log": 0.92}, "retail_locations": {"spearman": 0.89, "pearson_log": 0.92}, "mfg_locations": {"spearman": 0.934, "pearson_log": 0.95}, "population": {"spearman": 0.843, "pearson_log": 0.872}}, "cv": {"min": 1.83, "max": 11.14, "ratio_max_min": 6.08, "cv": 0.431}}110{"ts": "2026-11-01T18:46:57Z", "step": "models.qdaci", "components": ["diversity_rarefied", "specialization", "concentration_gini", "coverage_stores_per_100k"], "price_dispersion_regions": 6, "complexity_included": false, "composite_agreement_spearman": {"equal_vs_pca": 0.677, "equal_vs_borda": 1.0, "pca_vs_borda": 0.677, "median": 0.677}, "pca_first_component_share": 0.394, "pca_loadings": {"diversity_rarefied": -0.244, "specialization": 0.684, "concentration_gini": 0.687, "coverage_stores_per_100k": 0.023}, "bootstrap_rank_stability_equal_weights_median_rho": 0.501, "publish_composite": false, "note": "Components describe observed online catalogues of Quebec-based merchants, not production or output. Complexity omitted because the ECI failed the preregistered stability criterion."}111{"ts": "2026-11-01T18:46:57Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}112{"ts": "2026-11-01T18:47:20Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}113{"ts": "2026-11-01T18:47:22Z", "step": "features.region_category", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 1223, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 237, "Montérégie": 190, "Estrie": 152, "Capitale-Nationale": 126, "Chaudière-Appalaches": 102, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 36, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}}114{"ts": "2026-11-01T18:47:55Z", "step": "features.diversity", "quebec_H_norm_M": 0.8888, "quebec_eff_cat_M": 14.335, "regions_rarefied": 16, "store_n_categories_dist": {"1": 223, "2": 206, "3": 209, "4": 206, "5": 169, "6": 123, "7": 123, "8": 91, "9": 52, "10": 46, "11": 35, "12": 19, "13": 18, "14": 6, "15": 10, "16": 9, "17": 5, "19": 4, "20": 3}, "range_H_rarefied15": [0.731, 0.887]}115{"ts": "2026-11-01T18:47:58Z", "step": "models.h1_raa", "results": [{"sample": "S_R", "scheme": "M", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1114, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1267, 0.1467], "perm_null_mean": 0.0858, "perm_null_p5": 0.0795, "excess_v": 0.0256, "perm_null_p95": 0.0929, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 12, "cells_sig_lt1": 64, "cells": 340}, {"sample": "S_R", "scheme": "L", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.3203, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2732, 0.3879], "perm_null_mean": 0.2991, "perm_null_p5": 0.2551, "excess_v": 0.0213, "perm_null_p95": 0.3436, "p_perm": 0.21239380309845077, "cells_sig_gt1": 5, "cells_sig_lt1": 64, "cells": 340}, {"sample": "S_R", "scheme": "T", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1907, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1959, 0.2577], "perm_null_mean": 0.1894, "perm_null_p5": 0.1663, "excess_v": 0.0013, "perm_null_p95": 0.2149, "p_perm": 0.4452773613193403, "cells_sig_gt1": 7, "cells_sig_lt1": 72, "cells": 340}, {"sample": "S_R0", "scheme": "M", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.1214, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1369, 0.1605], "perm_null_mean": 0.0896, "perm_null_p5": 0.0832, "excess_v": 0.0318, "perm_null_p95": 0.096, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 9, "cells_sig_lt1": 72, "cells": 320}, {"sample": "S_R0", "scheme": "L", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.3435, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2747, 0.4006], "perm_null_mean": 0.2781, "perm_null_p5": 0.2384, "excess_v": 0.0653, "perm_null_p95": 0.3181, "p_perm": 0.0024987506246876563, "cells_sig_gt1": 9, "cells_sig_lt1": 70, "cells": 320}, {"sample": "S_R0", "scheme": "T", "stores": 1214, "regions": 16, "categories": 20, "cramers_v": 0.2188, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2144, 0.2864], "perm_null_mean": 0.2014, "perm_null_p5": 0.1768, "excess_v": 0.0174, "perm_null_p95": 0.2288, "p_perm": 0.13993003498250875, "cells_sig_gt1": 10, "cells_sig_lt1": 74, "cells": 320}, {"sample": "S_R", "scheme": "stores", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.0556, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.0648, 0.0764], "perm_null_mean": 0.0447, "perm_null_p5": 0.0415, "excess_v": 0.0109, "perm_null_p95": 0.0481, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 15, "cells_sig_lt1": 26, "cells": 340}]}116{"ts": "2026-11-01T18:47:59Z", "step": "models.h3_longtail", "stores": 1557, "listings": 370054, "gini": 0.8491, "gini_ci": [0.8109, 0.8782], "top1pct_share": 0.4434, "top1_ci": [0.3276, 0.5263], "top10pct_share": 0.7889, "top10_ci": [0.7295, 0.8357], "median_catalogue": 35.0, "p90": 311.8000000000002, "p99": 3359.32, "max": 24104, "rank_size_slope_loglog": -1.647, "powerlaw": {"xmin": 165, "alpha": 1.929174500673675, "ks": 0.027806349691342103, "n_tail": 288, "ll_pl": -2088.7485743757525}, "lognormal_vs_powerlaw": {"vuong_R": 60.646021642964115, "vuong_z": 4.991632500389355, "vuong_p": 5.987108926408524e-07, "favoured": "power-law", "lognormal_mu": 6.179139125490812, "lognormal_sigma": 1.0239165255662563}, "decision_prereg": true}117{"ts": "2026-11-01T18:48:08Z", "step": "models.h4_dynamics", "status": "exploratory", "baseline_window": ["2026-08-31", "2026-09-27"], "outcome_window": ["2026-09-28", "2026-11-01"], "stores": 1540, "store_category_cells_absent_at_baseline": 22920, "entries": 104, "entering_stores": 82, "lpm_density_coef": 0.065, "se_cluster_store": 0.0186, "t": 3.501, "placebo_coef_mean": -0.0016, "placebo_p95": 0.0417, "placebo_p": 0.009950248756218905, "density_mean_entry": 0.3304, "density_mean_no_entry": 0.2534, "n_region_entries": 3, "share_entering_stores_with_added_burst": 0.12195121951219512}118{"ts": "2026-11-01T18:48:40Z", "step": "models.h5_hedonic", "models": [{"label": "primary_AB", "obs": 2203, "groups": 1064, "stores": 143, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 164.385, "df_region": 14, "p_region_wildboot": 0.0045, "t_reseller": -4.371, "p_reseller_wildboot": 0.0012, "within_R2": 0.1663, "gap_median": 0.0474, "gap_p90": 0.2879, "share_gap_gt5pct": 0.4934, "share_gap_zero": 0.2904, "B": 9999}, {"label": "sens_ABC", "obs": 2512, "groups": 1189, "stores": 156, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 83.278, "df_region": 14, "p_region_wildboot": 0.0162, "t_reseller": -4.05, "p_reseller_wildboot": 0.0029, "within_R2": 0.1389, "gap_median": 0.0515, "gap_p90": 0.3326, "share_gap_gt5pct": 0.5046, "share_gap_zero": 0.286, "B": 9999}], "cert": {"note": "descriptive store-certification contrast (Aliments du Québec / Les Produits du Québec), category FE, store-clustered SE — NOT a test of H6", "obs": 288663, "stores": 1264, "certified_stores": 491, "b_log_price": -0.2038, "se": 0.1375}}119{"ts": "2026-11-01T18:48:45Z", "step": "models.h7_complexity", "regions": 17, "categories": 20, "M_density": 0.397, "diversity": {"Abitibi-Témiscamingue": 9, "Bas-Saint-Laurent": 8, "Capitale-Nationale": 7, "Centre-du-Québec": 12, "Chaudière-Appalaches": 8, "Côte-Nord": 5, "Estrie": 8, "Gaspésie–Îles-de-la-Madeleine": 5, "Lanaudière": 10, "Laurentides": 11, "Laval": 7, "Mauricie": 9, "Montréal": 9, "Montérégie": 8, "Nord-du-Québec": 5, "Outaouais": 6, "Saguenay–Lac-Saint-Jean": 8}, "eci": {"Abitibi-Témiscamingue": -0.172, "Bas-Saint-Laurent": 1.145, "Capitale-Nationale": 0.594, "Centre-du-Québec": 0.897, "Chaudière-Appalaches": 1.635, "Côte-Nord": -1.767, "Estrie": 0.086, "Gaspésie–Îles-de-la-Madeleine": -1.248, "Lanaudière": -0.876, "Laurentides": 0.697, "Laval": 0.022, "Mauricie": 1.031, "Montréal": -1.195, "Montérégie": 0.859, "Nord-du-Québec": -1.388, "Outaouais": 0.424, "Saguenay–Lac-Saint-Jean": -0.743}, "fitness": {"Abitibi-Témiscamingue": 1.069, "Bas-Saint-Laurent": 1.153, "Capitale-Nationale": 0.992, "Centre-du-Québec": 1.701, "Chaudière-Appalaches": 1.256, "Côte-Nord": 0.506, "Estrie": 0.959, "Gaspésie–Îles-de-la-Madeleine": 0.5, "Lanaudière": 1.091, "Laurentides": 1.562, "Laval": 0.817, "Mauricie": 1.098, "Montréal": 1.089, "Montérégie": 1.086, "Nord-du-Québec": 0.574, "Outaouais": 0.672, "Saguenay–Lac-Saint-Jean": 0.874}, "V1_bootstrap_rank_stability": {"eci_rho_median": 0.667, "eci_rho_p10": -0.336, "fitness_rho_median": 0.554, "diversity_rho_median": 0.609, "pass_eci": false}, "V2_reshuffle_null": {"obs_lambda2": 0.4074, "null_lambda2_p95": 0.2977, "p_lambda2": 0.0004997501249375312, "obs_spectral_radius": 7.7255, "null_spectral_radius_p95": 8.7944, "p_spectral_radius": 0.9685157421289355, "obs_corr_eci_diversity": 0.428, "null_corr_eci_diversity_p5_p95": [-0.086, 0.573], "pass": true}, "V4_community_stability": {"nmi_median_vs_run0": 1.0, "nmi_p10": 1.0, "n_communities_mode": 2, "communities_run0": {"alcool": 1, "animaux": 0, "art": 0, "autre": 0, "bijoux": 0, "boissons": 1, "boulangerie": 1, "cafe_the": 1, "chocolat": 1, "enfants": 0, "epicerie": 1, "erable": 1, "fromage_laitier": 1, "industriel": 0, "jardin": 0, "maison": 0, "mode": 0, "plein_air": 0, "sante_beaute": 0, "viande_poisson": 1}}}120{"ts": "2026-11-01T18:48:50Z", "step": "models.h2_scale", "regions_in_external": 17, "regions_matched": 17, "covariate_sources": {"log_population": "ISQ population estimate, 1 July 2025 (provisional)", "log_business_locations": "ISQ business locations with employees, Dec 2025", "disposable_income": "ISQ disposable income per capita, 2024p", "log_density": "Census 2021 population density (2021 ER boundaries)"}, "note": "17 regions at most (Nord-du-Québec has no located store); rarefied diversity needs >= 15 stores. Associations only; CIs from 5 000 region-level bootstrap draws; OLS slope with HC3 SE.", "H7_V3": {"n": 17, "R2_eci_on_covariates": 0.25, "loo_pred_spearman": 0.0, "criterion_rho_ge_0.5": false, "partial_corr_eci_diversity_given_covariates": 0.235}, "primary": {"n": 16, "rho": 0.0, "ci": [-0.627, 0.603], "ols_b": -0.0035, "ols_se_hc3": 0.0167}}121{"ts": "2026-11-01T18:48:56Z", "step": "validation.robustness", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "confusion_reassignment_100draws"]}122{"ts": "2026-11-01T18:48:56Z", "step": "validation.external", "corr": {"businesses": {"spearman": 0.907, "pearson_log": 0.92}, "retail_locations": {"spearman": 0.89, "pearson_log": 0.92}, "mfg_locations": {"spearman": 0.934, "pearson_log": 0.95}, "population": {"spearman": 0.843, "pearson_log": 0.872}}, "cv": {"min": 1.83, "max": 11.14, "ratio_max_min": 6.08, "cv": 0.431}}123{"ts": "2026-11-01T18:48:59Z", "step": "models.qdaci", "components": ["diversity_rarefied", "specialization", "concentration_gini", "coverage_stores_per_100k"], "price_dispersion_regions": 6, "complexity_included": false, "composite_agreement_spearman": {"equal_vs_pca": 0.254, "equal_vs_borda": 1.0, "pca_vs_borda": 0.254, "median": 0.254}, "pca_first_component_share": 0.451, "pca_loadings": {"diversity_rarefied": -0.562, "specialization": 0.622, "concentration_gini": 0.542, "coverage_stores_per_100k": -0.061}, "bootstrap_rank_stability_equal_weights_median_rho": 0.47, "publish_composite": false, "note": "Components describe observed online catalogues of Quebec-based merchants, not production or output. Complexity omitted because the ECI failed the preregistered stability criterion."}124{"ts": "2026-11-01T18:48:59Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "sample_flow.tex"]}125{"ts": "2026-11-01T18:49:22Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}126{"ts": "2026-11-01T18:52:51Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}127{"ts": "2026-11-01T18:53:12Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}128{"ts": "2026-11-01T18:53:39Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}129{"ts": "2026-11-01T18:53:39Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "sample_flow.tex"]}130{"ts": "2026-11-01T18:53:54Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}131{"ts": "2026-11-01T18:53:54Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "sample_flow.tex"]}132{"ts": "2026-11-01T18:54:17Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}133{"ts": "2026-11-01T18:54:17Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "sample_flow.tex"]}134{"ts": "2026-11-01T18:55:00Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}135{"ts": "2026-11-01T18:55:23Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}136{"ts": "2026-11-01T18:55:56Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}137{"ts": "2026-11-01T18:56:19Z", "step": "reports.make_figures", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}138{"ts": "2026-11-01T18:56:50Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}139{"ts": "2026-11-01T18:56:50Z", "step": "reports.make_tables", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "sample_flow.tex"]}140{"ts": "2026-11-01T19:07:57Z", "step": "clean.stores", "label": "rule", "live_stores": 1569, "regions_layer": "/Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/economie/economic-geography-digital-production/data/external/geo/qc_regions_admin_mern_bdat100k.gpkg", "region_source": {"db": 852, "city": 390, "unknown": 229, "pip": 82, "pip_transfer2021": 16}, "region_conflicts_label_vs_polygon": 124, "final_vs_polygon_disagreements": 112, "transfer2021_overrides": 16, "unknown_region_listings": 71692, "phone_shared_stores": 250, "certified_stores": 718, "region_final_counts": {"Montréal": 238, "Inconnue": 229, "Montérégie": 179, "Estrie": 167, "Capitale-Nationale": 126, "Chaudière-Appalaches": 105, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 37, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}, "agreement_db_vs_pip": 0.8906, "agreement_city_vs_pip": 0.9593, "agreement_db_vs_final": 0.9648}141{"ts": "2026-11-01T19:07:59Z", "step": "features.region_category", "label": "rule", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 1223, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 237, "Montérégie": 177, "Estrie": 165, "Capitale-Nationale": 126, "Chaudière-Appalaches": 102, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 36, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}}142{"ts": "2026-11-01T19:08:33Z", "step": "features.diversity", "label": "rule", "quebec_H_norm_M": 0.8657, "quebec_eff_cat_M": 13.376, "regions_rarefied": 16, "store_n_categories_dist": {"1": 183, "2": 127, "3": 159, "4": 162, "5": 143, "6": 106, "7": 107, "8": 100, "9": 79, "10": 78, "11": 54, "12": 47, "13": 43, "14": 31, "15": 35, "16": 18, "17": 25, "18": 18, "19": 14, "20": 28}, "range_H_rarefied15": [0.741, 0.845]}143{"ts": "2026-11-01T19:08:51Z", "step": "models.h1_raa", "label": "rule", "results": [{"sample": "S_R", "scheme": "M", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.105, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1161, 0.1365], "perm_null_mean": 0.0747, "perm_null_p5": 0.069, "excess_v": 0.0303, "perm_null_p95": 0.0811, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 13, "cells_sig_lt1": 62, "cells": 340, "null_cells_sig_gt1_mean_max": [2.9, 5], "null_cells_sig_lt1_mean_max": [52.5, 60]}, {"sample": "S_R", "scheme": "L", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.2265, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2045, 0.293], "perm_null_mean": 0.2015, "perm_null_p5": 0.1739, "excess_v": 0.025, "perm_null_p95": 0.2259, "p_perm": 0.04547726136931534, "cells_sig_gt1": 5, "cells_sig_lt1": 73, "cells": 340, "null_cells_sig_gt1_mean_max": [4.7, 11], "null_cells_sig_lt1_mean_max": [70.9, 91]}, {"sample": "S_R", "scheme": "T", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1587, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1567, 0.2253], "perm_null_mean": 0.1593, "perm_null_p5": 0.1389, "excess_v": -0.0006, "perm_null_p95": 0.1836, "p_perm": 0.4877561219390305, "cells_sig_gt1": 10, "cells_sig_lt1": 64, "cells": 340, "null_cells_sig_gt1_mean_max": [2.9, 6], "null_cells_sig_lt1_mean_max": [66.3, 79]}, {"sample": "S_R0", "scheme": "M", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1127, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.124, 0.1462], "perm_null_mean": 0.0787, "perm_null_p5": 0.0727, "excess_v": 0.034, "perm_null_p95": 0.0851, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 14, "cells_sig_lt1": 63, "cells": 340, "null_cells_sig_gt1_mean_max": [3.5, 7], "null_cells_sig_lt1_mean_max": [51.9, 61]}, {"sample": "S_R0", "scheme": "L", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.2398, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2125, 0.3015], "perm_null_mean": 0.2126, "perm_null_p5": 0.1837, "excess_v": 0.0272, "perm_null_p95": 0.2416, "p_perm": 0.06346826586706647, "cells_sig_gt1": 6, "cells_sig_lt1": 59, "cells": 340, "null_cells_sig_gt1_mean_max": [4.3, 9], "null_cells_sig_lt1_mean_max": [63.1, 82]}, {"sample": "S_R0", "scheme": "T", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1721, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1672, 0.2391], "perm_null_mean": 0.1747, "perm_null_p5": 0.1513, "excess_v": -0.0026, "perm_null_p95": 0.2017, "p_perm": 0.5432283858070964, "cells_sig_gt1": 10, "cells_sig_lt1": 66, "cells": 340, "null_cells_sig_gt1_mean_max": [2.4, 5], "null_cells_sig_lt1_mean_max": [66.6, 82]}, {"sample": "S_Rpip", "scheme": "M", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.1075, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1193, 0.1398], "perm_null_mean": 0.0749, "perm_null_p5": 0.0693, "excess_v": 0.0326, "perm_null_p95": 0.0808, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 10, "cells_sig_lt1": 61, "cells": 320, "null_cells_sig_gt1_mean_max": [2.9, 6], "null_cells_sig_lt1_mean_max": [49.5, 57]}, {"sample": "S_Rpip", "scheme": "L", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.2391, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2116, 0.3017], "perm_null_mean": 0.2053, "perm_null_p5": 0.1765, "excess_v": 0.0338, "perm_null_p95": 0.2321, "p_perm": 0.018490754622688656, "cells_sig_gt1": 7, "cells_sig_lt1": 68, "cells": 320, "null_cells_sig_gt1_mean_max": [4.5, 12], "null_cells_sig_lt1_mean_max": [62.5, 74]}, {"sample": "S_Rpip", "scheme": "T", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.163, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1622, 0.231], "perm_null_mean": 0.1617, "perm_null_p5": 0.1401, "excess_v": 0.0012, "perm_null_p95": 0.1862, "p_perm": 0.4367816091954023, "cells_sig_gt1": 10, "cells_sig_lt1": 64, "cells": 320, "null_cells_sig_gt1_mean_max": [2.5, 5], "null_cells_sig_lt1_mean_max": [64.8, 77]}, {"sample": "S_R", "scheme": "stores", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.0469, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.0535, 0.0631], "perm_null_mean": 0.0347, "perm_null_p5": 0.0323, "excess_v": 0.0122, "perm_null_p95": 0.0374, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 15, "cells_sig_lt1": 34, "cells": 340, "null_cells_sig_gt1_mean_max": [7.2, 14], "null_cells_sig_lt1_mean_max": [15.9, 21]}]}144{"ts": "2026-11-01T19:08:52Z", "step": "models.h3_longtail", "label": "rule", "stores": 1557, "listings": 370054, "gini": 0.8491, "gini_ci": [0.8109, 0.8782], "top1pct_share": 0.4434, "top1_ci": [0.3276, 0.5263], "top10pct_share": 0.7889, "top10_ci": [0.7295, 0.8357], "median_catalogue": 35.0, "p90": 311.8000000000002, "p99": 3359.32, "max": 24104, "rank_size_slope_loglog": -1.647, "powerlaw": {"xmin": 165, "alpha": 1.929174500673675, "ks": 0.027806349691342103, "n_tail": 288, "ll_pl": -2088.7485743757525}, "lognormal_vs_powerlaw": {"vuong_R": -1.0724579036012827, "vuong_z": -1.9796317417587517, "vuong_p": 0.04774492358187077, "favoured": "log-normal", "lognormal_mu": -27.68168503596434, "lognormal_sigma": 6.188964929195478, "ll_lognormal": -2087.676116472151, "ll_powerlaw": -2088.7485743757525, "method": "truncated discrete log-normal MLE on the same tail"}, "decision_prereg": true}145{"ts": "2026-11-01T19:09:01Z", "step": "models.h4_dynamics", "label": "rule", "status": "exploratory", "listings_used": 461011, "inactive_listings_included": 71722, "baseline_window": ["2026-08-31", "2026-09-27"], "outcome_window": ["2026-09-28", "2026-11-01"], "stores": 1554, "store_category_cells_absent_at_baseline": 20425, "entries": 153, "entering_stores": 100, "lpm_density_coef": 0.0931, "se_cluster_store": 0.054, "t": 1.722, "placebo_coef_mean": -0.008, "placebo_p95": 0.092, "placebo_p": 0.05472636815920398, "density_mean_entry": 0.4305, "density_mean_no_entry": 0.2873, "n_region_entries": 2, "share_entering_stores_with_added_burst": 0.21}146{"ts": "2026-11-01T19:09:34Z", "step": "models.h5_hedonic", "label": "rule", "models": [{"label": "primary_AB", "obs": 2203, "groups": 1064, "stores": 143, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 164.182, "df_region": 14, "p_region_wildboot": 0.0975, "t_reseller": -4.376, "p_reseller_wildboot": 0.0041, "within_R2": 0.1662, "wald_loo_region": {"Abitibi-Témiscamingue": 163.81, "Capitale-Nationale": 141.04, "Centre-du-Québec": 128.76, "Chaudière-Appalaches": 162.46, "Côte-Nord": 152.42, "Estrie": 162.58, "Gaspésie–Îles-de-la-Madeleine": 162.96, "Lanaudière": 87.95, "Laurentides": 161.58, "Laval": 163.22, "Mauricie": 163.99, "Montérégie": 162.41, "Outaouais": 51.35, "Saguenay–Lac-Saint-Jean": 163.63}, "wald_single_region_contrib": {"Abitibi-Témiscamingue": 2.46, "Capitale-Nationale": 0.79, "Centre-du-Québec": 1.34, "Chaudière-Appalaches": 1.29, "Côte-Nord": 2.69, "Estrie": 0.18, "Gaspésie–Îles-de-la-Madeleine": 0.0, "Lanaudière": 0.32, "Laurentides": 1.5, "Laval": 0.19, "Mauricie": 0.05, "Montérégie": 1.31, "Outaouais": 65.48, "Saguenay–Lac-Saint-Jean": 4.61}, "groups_spanning_regions": 920, "gap_median": 0.0474, "gap_p90": 0.2879, "share_gap_gt5pct": 0.4934, "share_gap_zero": 0.2904, "B": 9999}, {"label": "sens_ABC", "obs": 2512, "groups": 1189, "stores": 156, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 83.228, "df_region": 14, "p_region_wildboot": 0.4114, "t_reseller": -4.062, "p_reseller_wildboot": 0.017, "within_R2": 0.1389, "wald_loo_region": {"Abitibi-Témiscamingue": 82.59, "Capitale-Nationale": 73.68, "Centre-du-Québec": 79.96, "Chaudière-Appalaches": 82.57, "Côte-Nord": 83.09, "Estrie": 80.89, "Gaspésie–Îles-de-la-Madeleine": 79.88, "Lanaudière": 82.35, "Laurentides": 83.07, "Laval": 79.99, "Mauricie": 82.7, "Montérégie": 80.72, "Outaouais": 34.22, "Saguenay–Lac-Saint-Jean": 81.94}, "wald_single_region_contrib": {"Abitibi-Témiscamingue": 0.83, "Capitale-Nationale": 0.11, "Centre-du-Québec": 0.63, "Chaudière-Appalaches": 0.89, "Côte-Nord": 0.0, "Estrie": 0.0, "Gaspésie–Îles-de-la-Madeleine": 0.08, "Lanaudière": 2.35, "Laurentides": 2.15, "Laval": 0.0, "Mauricie": 1.81, "Montérégie": 0.6, "Outaouais": 45.61, "Saguenay–Lac-Saint-Jean": 5.72}, "groups_spanning_regions": 1015, "gap_median": 0.0515, "gap_p90": 0.3326, "share_gap_gt5pct": 0.5046, "share_gap_zero": 0.286, "B": 9999}], "cert": {"note": "descriptive store-certification contrast (Aliments du Québec / Les Produits du Québec), category FE, store-clustered SE — NOT a test of H6", "obs": 288663, "stores": 1264, "certified_stores": 491, "b_log_price": -0.2038, "se": 0.1375}}147{"ts": "2026-11-01T19:09:40Z", "step": "models.h7_complexity", "label": "rule", "regions": 17, "categories": 20, "M_density": 0.409, "diversity": {"Abitibi-Témiscamingue": 10, "Bas-Saint-Laurent": 6, "Capitale-Nationale": 9, "Centre-du-Québec": 11, "Chaudière-Appalaches": 8, "Côte-Nord": 8, "Estrie": 6, "Gaspésie–Îles-de-la-Madeleine": 8, "Lanaudière": 8, "Laurentides": 11, "Laval": 7, "Mauricie": 6, "Montréal": 9, "Montérégie": 10, "Nord-du-Québec": 4, "Outaouais": 7, "Saguenay–Lac-Saint-Jean": 11}, "eci": {"Abitibi-Témiscamingue": 1.286, "Bas-Saint-Laurent": -1.364, "Capitale-Nationale": 0.474, "Centre-du-Québec": -1.141, "Chaudière-Appalaches": -0.898, "Côte-Nord": 1.302, "Estrie": -0.589, "Gaspésie–Îles-de-la-Madeleine": 0.136, "Lanaudière": -0.213, "Laurentides": -0.061, "Laval": 1.161, "Mauricie": -1.581, "Montréal": 1.745, "Montérégie": 0.11, "Nord-du-Québec": -0.822, "Outaouais": 1.051, "Saguenay–Lac-Saint-Jean": -0.597}, "fitness": {"Abitibi-Témiscamingue": 1.153, "Bas-Saint-Laurent": 0.607, "Capitale-Nationale": 1.038, "Centre-du-Québec": 1.518, "Chaudière-Appalaches": 0.884, "Côte-Nord": 0.985, "Estrie": 0.609, "Gaspésie–Îles-de-la-Madeleine": 0.903, "Lanaudière": 0.904, "Laurentides": 1.717, "Laval": 0.799, "Mauricie": 0.588, "Montréal": 1.182, "Montérégie": 1.209, "Nord-du-Québec": 0.441, "Outaouais": 0.817, "Saguenay–Lac-Saint-Jean": 1.647}, "V1_bootstrap_rank_stability": {"eci_rho_median": 0.271, "eci_rho_p10": -0.559, "fitness_rho_median": 0.713, "diversity_rho_median": 0.71, "pass_eci": false}, "V2_reshuffle_null": {"obs_lambda2": 0.2569, "null_lambda2_p95": 0.2977, "p_lambda2": 0.3553223388305847, "obs_spectral_radius": 7.9174, "null_spectral_radius_p95": 8.7914, "p_spectral_radius": 0.8930534732633684, "obs_corr_eci_diversity": 0.241, "null_corr_eci_diversity_p5_p95": [-0.056, 0.564], "pass_lambda2": false, "pass_spectral_radius": false, "pass": false}, "V4_community_stability": {"nmi_median_vs_run0": 1.0, "nmi_p10": 1.0, "n_communities_mode": 2, "communities_run0": {"alcool": 0, "animaux": 0, "art": 0, "autre": 0, "bijoux": 0, "boissons": 0, "boulangerie": 1, "cafe_the": 0, "chocolat": 1, "enfants": 0, "epicerie": 1, "erable": 1, "fromage_laitier": 1, "industriel": 0, "jardin": 0, "maison": 0, "mode": 0, "plein_air": 0, "sante_beaute": 0, "viande_poisson": 1}}}148{"ts": "2026-11-01T19:09:45Z", "step": "models.h2_scale", "label": "rule", "regions_in_external": 17, "regions_matched": 17, "covariate_sources": {"log_population": "ISQ population estimate, 1 July 2025 (provisional)", "log_business_locations": "ISQ business locations with employees, Dec 2025", "disposable_income": "ISQ disposable income per capita, 2024p", "log_density": "Census 2021 population density (2021 ER boundaries)"}, "note": "17 regions; rarefied diversity needs >= 15 stores (Nord-du-Québec, 3 stores, excluded). Associations only; CIs from 5 000 region-level bootstrap draws combined with the 2 000 rarefaction draws of the outcome; OLS slope with HC3 SE. Power: with n = 16 the smallest |rho| detectable with 80 % power at alpha = 0.05 is about 0.66.", "power_n16_rho_80pct": 0.66, "H7_V3": {"n": 17, "R2_eci_on_covariates": 0.449, "loo_pred_spearman": 0.338, "criterion_rho_ge_0.5": false, "partial_corr_eci_diversity_given_covariates": 0.029}, "primary": {"n": 16, "rho": -0.103, "ci": [-0.676, 0.587], "ols_b": -0.0046, "ols_se_hc3": 0.0065}}149{"ts": "2026-11-01T19:09:46Z", "step": "validation.external", "label": "rule", "corr": {"businesses": {"spearman": 0.907, "pearson_log": 0.916}, "retail_locations": {"spearman": 0.89, "pearson_log": 0.916}, "mfg_locations": {"spearman": 0.934, "pearson_log": 0.948}, "population": {"spearman": 0.843, "pearson_log": 0.868}}, "cv": {"min": 1.83, "max": 11.14, "ratio_max_min": 6.08, "cv": 0.446}}150{"ts": "2026-11-01T19:09:49Z", "step": "models.qdaci", "label": "rule", "components": ["diversity_rarefied", "specialization", "concentration_gini", "coverage_stores_per_100k"], "price_dispersion_regions": 6, "complexity_included": false, "composite_agreement_spearman": {"equal_vs_pca": 0.673, "equal_vs_borda": 1.0, "pca_vs_borda": 0.673, "median": 0.673}, "pca_first_component_share": 0.395, "pca_loadings": {"diversity_rarefied": -0.27, "specialization": 0.68, "concentration_gini": 0.679, "coverage_stores_per_100k": 0.063}, "bootstrap_rank_stability_equal_weights_median_rho": 0.498, "publish_composite": false, "note": "Components describe observed online catalogues of Quebec-based merchants, not production or output. Complexity omitted because the ECI failed the preregistered stability criterion."}151{"ts": "2026-11-01T19:09:49Z", "step": "reports.make_tables", "label": "rule", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}152{"ts": "2026-11-01T19:10:12Z", "step": "reports.make_figures", "label": "rule", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}153{"ts": "2026-11-01T19:10:13Z", "step": "features.region_category", "label": "model", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 1223, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 237, "Montérégie": 177, "Estrie": 165, "Capitale-Nationale": 126, "Chaudière-Appalaches": 102, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 36, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}}154{"ts": "2026-11-01T19:10:47Z", "step": "features.diversity", "label": "model", "quebec_H_norm_M": 0.8888, "quebec_eff_cat_M": 14.335, "regions_rarefied": 16, "store_n_categories_dist": {"1": 223, "2": 206, "3": 209, "4": 206, "5": 169, "6": 123, "7": 123, "8": 91, "9": 52, "10": 46, "11": 35, "12": 19, "13": 18, "14": 6, "15": 10, "16": 9, "17": 5, "19": 4, "20": 3}, "range_H_rarefied15": [0.731, 0.887]}155{"ts": "2026-11-01T19:11:04Z", "step": "models.h1_raa", "label": "model", "results": [{"sample": "S_R", "scheme": "M", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.1115, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1266, 0.1467], "perm_null_mean": 0.0858, "perm_null_p5": 0.0794, "excess_v": 0.0257, "perm_null_p95": 0.0928, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 12, "cells_sig_lt1": 66, "cells": 340, "null_cells_sig_gt1_mean_max": [2.9, 8], "null_cells_sig_lt1_mean_max": [55.5, 69]}, {"sample": "S_R", "scheme": "L", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.3205, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2757, 0.3877], "perm_null_mean": 0.2986, "perm_null_p5": 0.2565, "excess_v": 0.0219, "perm_null_p95": 0.3415, "p_perm": 0.19890054972513743, "cells_sig_gt1": 6, "cells_sig_lt1": 63, "cells": 340, "null_cells_sig_gt1_mean_max": [4.5, 10], "null_cells_sig_lt1_mean_max": [64.8, 74]}, {"sample": "S_R", "scheme": "T", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.191, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1949, 0.2593], "perm_null_mean": 0.1888, "perm_null_p5": 0.1659, "excess_v": 0.0022, "perm_null_p95": 0.2149, "p_perm": 0.4292853573213393, "cells_sig_gt1": 7, "cells_sig_lt1": 73, "cells": 340, "null_cells_sig_gt1_mean_max": [2.4, 6], "null_cells_sig_lt1_mean_max": [71.4, 85]}, {"sample": "S_R0", "scheme": "M", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.1201, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1351, 0.1572], "perm_null_mean": 0.0897, "perm_null_p5": 0.0828, "excess_v": 0.0305, "perm_null_p95": 0.0968, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 12, "cells_sig_lt1": 74, "cells": 340, "null_cells_sig_gt1_mean_max": [2.9, 8], "null_cells_sig_lt1_mean_max": [55.8, 67]}, {"sample": "S_R0", "scheme": "L", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.317, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2592, 0.3804], "perm_null_mean": 0.2717, "perm_null_p5": 0.2329, "excess_v": 0.0453, "perm_null_p95": 0.3109, "p_perm": 0.0239880059970015, "cells_sig_gt1": 5, "cells_sig_lt1": 61, "cells": 340, "null_cells_sig_gt1_mean_max": [3.1, 9], "null_cells_sig_lt1_mean_max": [67.7, 86]}, {"sample": "S_R0", "scheme": "T", "stores": 1214, "regions": 17, "categories": 20, "cramers_v": 0.2073, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2029, 0.2768], "perm_null_mean": 0.1972, "perm_null_p5": 0.1736, "excess_v": 0.0101, "perm_null_p95": 0.2238, "p_perm": 0.24887556221889057, "cells_sig_gt1": 8, "cells_sig_lt1": 66, "cells": 340, "null_cells_sig_gt1_mean_max": [2.0, 4], "null_cells_sig_lt1_mean_max": [73.0, 82]}, {"sample": "S_Rpip", "scheme": "M", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.1156, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.1313, 0.1518], "perm_null_mean": 0.0859, "perm_null_p5": 0.0798, "excess_v": 0.0297, "perm_null_p95": 0.0923, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 10, "cells_sig_lt1": 70, "cells": 320, "null_cells_sig_gt1_mean_max": [2.7, 5], "null_cells_sig_lt1_mean_max": [52.1, 63]}, {"sample": "S_Rpip", "scheme": "L", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.3482, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.289, 0.4082], "perm_null_mean": 0.3037, "perm_null_p5": 0.2578, "excess_v": 0.0446, "perm_null_p95": 0.3494, "p_perm": 0.057971014492753624, "cells_sig_gt1": 12, "cells_sig_lt1": 65, "cells": 320, "null_cells_sig_gt1_mean_max": [4.7, 15], "null_cells_sig_lt1_mean_max": [62.4, 73]}, {"sample": "S_Rpip", "scheme": "T", "stores": 1331, "regions": 16, "categories": 20, "cramers_v": 0.2036, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.2061, 0.2711], "perm_null_mean": 0.1918, "perm_null_p5": 0.1682, "excess_v": 0.0118, "perm_null_p95": 0.2201, "p_perm": 0.20239880059970014, "cells_sig_gt1": 9, "cells_sig_lt1": 72, "cells": 320, "null_cells_sig_gt1_mean_max": [2.1, 6], "null_cells_sig_lt1_mean_max": [68.7, 82]}, {"sample": "S_R", "scheme": "stores", "stores": 1331, "regions": 17, "categories": 20, "cramers_v": 0.0558, "v_boot_percentile_note": "store resampling with replacement duplicates stores and biases V upward; not used for inference", "v_boot_p2.5_97.5": [0.0648, 0.077], "perm_null_mean": 0.0446, "perm_null_p5": 0.0415, "excess_v": 0.0111, "perm_null_p95": 0.0479, "p_perm": 0.0004997501249375312, "cells_sig_gt1": 16, "cells_sig_lt1": 22, "cells": 340, "null_cells_sig_gt1_mean_max": [6.6, 11], "null_cells_sig_lt1_mean_max": [17.9, 28]}]}156{"ts": "2026-11-01T19:11:05Z", "step": "models.h3_longtail", "label": "model", "stores": 1557, "listings": 370054, "gini": 0.8491, "gini_ci": [0.8109, 0.8782], "top1pct_share": 0.4434, "top1_ci": [0.3276, 0.5263], "top10pct_share": 0.7889, "top10_ci": [0.7295, 0.8357], "median_catalogue": 35.0, "p90": 311.8000000000002, "p99": 3359.32, "max": 24104, "rank_size_slope_loglog": -1.647, "powerlaw": {"xmin": 165, "alpha": 1.929174500673675, "ks": 0.027806349691342103, "n_tail": 288, "ll_pl": -2088.7485743757525}, "lognormal_vs_powerlaw": {"vuong_R": -1.0724579036012827, "vuong_z": -1.9796317417587517, "vuong_p": 0.04774492358187077, "favoured": "log-normal", "lognormal_mu": -27.68168503596434, "lognormal_sigma": 6.188964929195478, "ll_lognormal": -2087.676116472151, "ll_powerlaw": -2088.7485743757525, "method": "truncated discrete log-normal MLE on the same tail"}, "decision_prereg": true}157{"ts": "2026-11-01T19:11:15Z", "step": "models.h4_dynamics", "label": "model", "status": "exploratory", "listings_used": 461011, "inactive_listings_included": 71722, "baseline_window": ["2026-08-31", "2026-09-27"], "outcome_window": ["2026-09-28", "2026-11-01"], "stores": 1554, "store_category_cells_absent_at_baseline": 22263, "entries": 151, "entering_stores": 98, "lpm_density_coef": 0.1023, "se_cluster_store": 0.0314, "t": 3.255, "placebo_coef_mean": -0.0052, "placebo_p95": 0.0509, "placebo_p": 0.004975124378109453, "density_mean_entry": 0.3552, "density_mean_no_entry": 0.2623, "n_region_entries": 1, "share_entering_stores_with_added_burst": 0.19387755102040816}158{"ts": "2026-11-01T19:11:48Z", "step": "models.h5_hedonic", "label": "model", "models": [{"label": "primary_AB", "obs": 2203, "groups": 1064, "stores": 143, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 164.182, "df_region": 14, "p_region_wildboot": 0.0975, "t_reseller": -4.376, "p_reseller_wildboot": 0.0041, "within_R2": 0.1662, "wald_loo_region": {"Abitibi-Témiscamingue": 163.81, "Capitale-Nationale": 141.04, "Centre-du-Québec": 128.76, "Chaudière-Appalaches": 162.46, "Côte-Nord": 152.42, "Estrie": 162.58, "Gaspésie–Îles-de-la-Madeleine": 162.96, "Lanaudière": 87.95, "Laurentides": 161.58, "Laval": 163.22, "Mauricie": 163.99, "Montérégie": 162.41, "Outaouais": 51.35, "Saguenay–Lac-Saint-Jean": 163.63}, "wald_single_region_contrib": {"Abitibi-Témiscamingue": 2.46, "Capitale-Nationale": 0.79, "Centre-du-Québec": 1.34, "Chaudière-Appalaches": 1.29, "Côte-Nord": 2.69, "Estrie": 0.18, "Gaspésie–Îles-de-la-Madeleine": 0.0, "Lanaudière": 0.32, "Laurentides": 1.5, "Laval": 0.19, "Mauricie": 0.05, "Montérégie": 1.31, "Outaouais": 65.48, "Saguenay–Lac-Saint-Jean": 4.61}, "groups_spanning_regions": 920, "gap_median": 0.0474, "gap_p90": 0.2879, "share_gap_gt5pct": 0.4934, "share_gap_zero": 0.2904, "B": 9999}, {"label": "sens_ABC", "obs": 2512, "groups": 1189, "stores": 156, "regions": 15, "base_region": "Montréal", "regions_with_ge5_stores": 9, "wald_region": 83.228, "df_region": 14, "p_region_wildboot": 0.4114, "t_reseller": -4.062, "p_reseller_wildboot": 0.017, "within_R2": 0.1389, "wald_loo_region": {"Abitibi-Témiscamingue": 82.59, "Capitale-Nationale": 73.68, "Centre-du-Québec": 79.96, "Chaudière-Appalaches": 82.57, "Côte-Nord": 83.09, "Estrie": 80.89, "Gaspésie–Îles-de-la-Madeleine": 79.88, "Lanaudière": 82.35, "Laurentides": 83.07, "Laval": 79.99, "Mauricie": 82.7, "Montérégie": 80.72, "Outaouais": 34.22, "Saguenay–Lac-Saint-Jean": 81.94}, "wald_single_region_contrib": {"Abitibi-Témiscamingue": 0.83, "Capitale-Nationale": 0.11, "Centre-du-Québec": 0.63, "Chaudière-Appalaches": 0.89, "Côte-Nord": 0.0, "Estrie": 0.0, "Gaspésie–Îles-de-la-Madeleine": 0.08, "Lanaudière": 2.35, "Laurentides": 2.15, "Laval": 0.0, "Mauricie": 1.81, "Montérégie": 0.6, "Outaouais": 45.61, "Saguenay–Lac-Saint-Jean": 5.72}, "groups_spanning_regions": 1015, "gap_median": 0.0515, "gap_p90": 0.3326, "share_gap_gt5pct": 0.5046, "share_gap_zero": 0.286, "B": 9999}], "cert": {"note": "descriptive store-certification contrast (Aliments du Québec / Les Produits du Québec), category FE, store-clustered SE — NOT a test of H6", "obs": 288663, "stores": 1264, "certified_stores": 491, "b_log_price": -0.2038, "se": 0.1375}}159{"ts": "2026-11-01T19:11:53Z", "step": "models.h7_complexity", "label": "model", "regions": 17, "categories": 20, "M_density": 0.403, "diversity": {"Abitibi-Témiscamingue": 9, "Bas-Saint-Laurent": 8, "Capitale-Nationale": 7, "Centre-du-Québec": 12, "Chaudière-Appalaches": 8, "Côte-Nord": 5, "Estrie": 8, "Gaspésie–Îles-de-la-Madeleine": 5, "Lanaudière": 10, "Laurentides": 11, "Laval": 7, "Mauricie": 9, "Montréal": 9, "Montérégie": 10, "Nord-du-Québec": 5, "Outaouais": 6, "Saguenay–Lac-Saint-Jean": 8}, "eci": {"Abitibi-Témiscamingue": -0.227, "Bas-Saint-Laurent": 1.121, "Capitale-Nationale": 0.689, "Centre-du-Québec": 0.827, "Chaudière-Appalaches": 1.58, "Côte-Nord": -1.654, "Estrie": 0.657, "Gaspésie–Îles-de-la-Madeleine": -1.387, "Lanaudière": -0.842, "Laurentides": 0.729, "Laval": 0.08, "Mauricie": 1.013, "Montréal": -1.208, "Montérégie": 0.576, "Nord-du-Québec": -1.526, "Outaouais": 0.263, "Saguenay–Lac-Saint-Jean": -0.692}, "fitness": {"Abitibi-Témiscamingue": 1.073, "Bas-Saint-Laurent": 1.16, "Capitale-Nationale": 0.938, "Centre-du-Québec": 1.664, "Chaudière-Appalaches": 1.251, "Côte-Nord": 0.5, "Estrie": 1.003, "Gaspésie–Îles-de-la-Madeleine": 0.512, "Lanaudière": 1.087, "Laurentides": 1.498, "Laval": 0.75, "Mauricie": 1.066, "Montréal": 1.05, "Montérégie": 1.337, "Nord-du-Québec": 0.586, "Outaouais": 0.66, "Saguenay–Lac-Saint-Jean": 0.864}, "V1_bootstrap_rank_stability": {"eci_rho_median": 0.676, "eci_rho_p10": -0.317, "fitness_rho_median": 0.642, "diversity_rho_median": 0.644, "pass_eci": false}, "V2_reshuffle_null": {"obs_lambda2": 0.413, "null_lambda2_p95": 0.296, "p_lambda2": 0.0004997501249375312, "obs_spectral_radius": 7.8589, "null_spectral_radius_p95": 8.7973, "p_spectral_radius": 0.935032483758121, "obs_corr_eci_diversity": 0.45, "null_corr_eci_diversity_p5_p95": [-0.094, 0.574], "pass_lambda2": true, "pass_spectral_radius": false, "pass": false}, "V4_community_stability": {"nmi_median_vs_run0": 1.0, "nmi_p10": 1.0, "n_communities_mode": 2, "communities_run0": {"alcool": 1, "animaux": 0, "art": 0, "autre": 0, "bijoux": 0, "boissons": 1, "boulangerie": 1, "cafe_the": 1, "chocolat": 1, "enfants": 0, "epicerie": 1, "erable": 1, "fromage_laitier": 1, "industriel": 0, "jardin": 0, "maison": 0, "mode": 0, "plein_air": 0, "sante_beaute": 0, "viande_poisson": 1}}}160{"ts": "2026-11-01T19:11:58Z", "step": "models.h2_scale", "label": "model", "regions_in_external": 17, "regions_matched": 17, "covariate_sources": {"log_population": "ISQ population estimate, 1 July 2025 (provisional)", "log_business_locations": "ISQ business locations with employees, Dec 2025", "disposable_income": "ISQ disposable income per capita, 2024p", "log_density": "Census 2021 population density (2021 ER boundaries)"}, "note": "17 regions; rarefied diversity needs >= 15 stores (Nord-du-Québec, 3 stores, excluded). Associations only; CIs from 5 000 region-level bootstrap draws combined with the 2 000 rarefaction draws of the outcome; OLS slope with HC3 SE. Power: with n = 16 the smallest |rho| detectable with 80 % power at alpha = 0.05 is about 0.66.", "power_n16_rho_80pct": 0.66, "H7_V3": {"n": 17, "R2_eci_on_covariates": 0.257, "loo_pred_spearman": 0.007, "criterion_rho_ge_0.5": false, "partial_corr_eci_diversity_given_covariates": 0.314}, "primary": {"n": 16, "rho": 0.035, "ci": [-0.651, 0.623], "ols_b": -0.0034, "ols_se_hc3": 0.0167}}161{"ts": "2026-11-01T19:12:04Z", "step": "validation.robustness", "label": "model", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "excl_straddling_fsa_stores", "maup_mrc_level_M", "confusion_reassignment_100draws"]}162{"ts": "2026-11-01T19:12:05Z", "step": "validation.external", "label": "model", "corr": {"businesses": {"spearman": 0.907, "pearson_log": 0.916}, "retail_locations": {"spearman": 0.89, "pearson_log": 0.916}, "mfg_locations": {"spearman": 0.934, "pearson_log": 0.948}, "population": {"spearman": 0.843, "pearson_log": 0.868}}, "cv": {"min": 1.83, "max": 11.14, "ratio_max_min": 6.08, "cv": 0.446}}163{"ts": "2026-11-01T19:12:07Z", "step": "models.qdaci", "label": "model", "components": ["diversity_rarefied", "specialization", "concentration_gini", "coverage_stores_per_100k"], "price_dispersion_regions": 6, "complexity_included": false, "composite_agreement_spearman": {"equal_vs_pca": 0.29, "equal_vs_borda": 1.0, "pca_vs_borda": 0.29, "median": 0.29}, "pca_first_component_share": 0.45, "pca_loadings": {"diversity_rarefied": -0.562, "specialization": 0.621, "concentration_gini": 0.545, "coverage_stores_per_100k": -0.046}, "bootstrap_rank_stability_equal_weights_median_rho": 0.449, "publish_composite": false, "note": "Components describe observed online catalogues of Quebec-based merchants, not production or output. Complexity omitted because the ECI failed the preregistered stability criterion."}164{"ts": "2026-11-01T19:12:07Z", "step": "reports.make_tables", "label": "model", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "sample_flow.tex"]}165{"ts": "2026-11-01T19:12:29Z", "step": "reports.make_figures", "label": "model", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}166{"ts": "2026-11-01T19:12:37Z", "step": "features.region_category", "label": "rule", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 1223, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 237, "Montérégie": 177, "Estrie": 165, "Capitale-Nationale": 126, "Chaudière-Appalaches": 102, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 36, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}}167{"ts": "2026-11-01T19:12:44Z", "step": "validation.robustness", "label": "rule", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "excl_straddling_fsa_stores", "maup_mrc_level_M", "confusion_reassignment_100draws"]}168{"ts": "2026-11-01T19:12:47Z", "step": "models.qdaci", "label": "rule", "components": ["diversity_rarefied", "specialization", "concentration_gini", "coverage_stores_per_100k"], "price_dispersion_regions": 6, "complexity_included": false, "composite_agreement_spearman": {"equal_vs_pca": 0.673, "equal_vs_borda": 1.0, "pca_vs_borda": 0.673, "median": 0.673}, "pca_first_component_share": 0.395, "pca_loadings": {"diversity_rarefied": -0.27, "specialization": 0.68, "concentration_gini": 0.679, "coverage_stores_per_100k": 0.063}, "bootstrap_rank_stability_equal_weights_median_rho": 0.498, "publish_composite": false, "note": "Components describe observed online catalogues of Quebec-based merchants, not production or output. Complexity omitted because the ECI failed the preregistered stability criterion."}169{"ts": "2026-11-01T19:12:47Z", "step": "reports.make_tables", "label": "rule", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}170{"ts": "2026-11-01T19:13:09Z", "step": "reports.make_figures", "label": "rule", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}171{"ts": "2026-11-01T19:13:10Z", "step": "features.region_category", "label": "model", "stores_S_A": 1557, "stores_S_R": 1331, "stores_S_R0": 1223, "listings_S_R": 298362, "listings_S_A": 370054, "top1pct_cut": 3359.32, "stores_by_region_S_R": {"Montréal": 237, "Montérégie": 177, "Estrie": 165, "Capitale-Nationale": 126, "Chaudière-Appalaches": 102, "Laurentides": 99, "Saguenay–Lac-Saint-Jean": 97, "Lanaudière": 66, "Centre-du-Québec": 61, "Bas-Saint-Laurent": 39, "Outaouais": 36, "Mauricie": 31, "Gaspésie–Îles-de-la-Madeleine": 30, "Laval": 25, "Abitibi-Témiscamingue": 21, "Côte-Nord": 16, "Nord-du-Québec": 3}}172{"ts": "2026-11-01T19:13:16Z", "step": "validation.robustness", "label": "model", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "excl_straddling_fsa_stores", "maup_mrc_level_M", "confusion_reassignment_100draws"]}173{"ts": "2026-11-01T19:13:18Z", "step": "models.qdaci", "label": "model", "components": ["diversity_rarefied", "specialization", "concentration_gini", "coverage_stores_per_100k"], "price_dispersion_regions": 6, "complexity_included": false, "composite_agreement_spearman": {"equal_vs_pca": 0.29, "equal_vs_borda": 1.0, "pca_vs_borda": 0.29, "median": 0.29}, "pca_first_component_share": 0.45, "pca_loadings": {"diversity_rarefied": -0.562, "specialization": 0.621, "concentration_gini": 0.545, "coverage_stores_per_100k": -0.046}, "bootstrap_rank_stability_equal_weights_median_rho": 0.449, "publish_composite": false, "note": "Components describe observed online catalogues of Quebec-based merchants, not production or output. Complexity omitted because the ECI failed the preregistered stability criterion."}174{"ts": "2026-11-01T19:13:18Z", "step": "reports.make_tables", "label": "model", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "sample_flow.tex"]}175{"ts": "2026-11-01T19:13:41Z", "step": "reports.make_figures", "label": "model", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}176{"ts": "2026-11-01T19:14:01Z", "step": "validation.robustness", "label": "rule", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "excl_straddling_fsa_stores", "maup_mrc_level_M", "confusion_reassignment_100draws"]}177{"ts": "2026-11-01T19:14:01Z", "step": "reports.make_tables", "label": "rule", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}178{"ts": "2026-11-01T19:14:23Z", "step": "reports.make_figures", "label": "rule", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}179{"ts": "2026-11-01T19:14:29Z", "step": "validation.robustness", "label": "model", "variants": ["baseline_S_R", "S_R0_dbfirst_regions", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "excl_straddling_fsa_stores", "maup_mrc_level_M", "confusion_reassignment_100draws"]}180{"ts": "2026-11-01T19:14:30Z", "step": "reports.make_tables", "label": "model", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "sample_flow.tex"]}181{"ts": "2026-11-01T19:14:52Z", "step": "reports.make_figures", "label": "model", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}182{"ts": "2026-11-01T19:15:52Z", "step": "validation.robustness", "label": "rule", "variants": ["baseline_S_R", "S_R0_platform_label_only", "pip_first_regions", "province_wide_sources_only", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "excl_straddling_fsa_stores", "maup_mrc_level_M", "confusion_reassignment_100draws"]}183{"ts": "2026-11-01T19:15:53Z", "step": "reports.make_tables", "label": "rule", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "regression.tex", "sample_flow.tex", "summary_stats.tex"]}184{"ts": "2026-11-01T19:16:14Z", "step": "reports.make_figures", "label": "rule", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}185{"ts": "2026-11-01T19:16:21Z", "step": "validation.robustness", "label": "model", "variants": ["baseline_S_R", "S_R0_platform_label_only", "pip_first_regions", "province_wide_sources_only", "cert_assoc_sources_only", "excl_Montreal", "excl_top1pct_stores", "macro8_categories", "drop_autre", "excl_resellers_collectives", "excl_region_conflicts", "excl_straddling_fsa_stores", "maup_mrc_level_M", "confusion_reassignment_100draws"]}186{"ts": "2026-11-01T19:16:21Z", "step": "reports.make_tables", "label": "model", "tables": ["category_audit.tex", "cert_contrast.tex", "external_coverage.tex", "h1_raa.tex", "h2_scale.tex", "h3_concentration.tex", "h3_within_region.tex", "h4_dynamics.tex", "h5_hedonic.tex", "h7_indicators.tex", "h7_validation.tex", "match_validation.tex", "qdaci.tex", "raa_top.tex", "region_summary.tex", "sample_flow.tex"]}187{"ts": "2026-11-01T19:16:43Z", "step": "reports.make_figures", "label": "model", "figures": ["attrition.pdf", "category_network.pdf", "coverage_map.pdf", "diversity_region.pdf", "h4_density.pdf", "h5_region_effects.pdf", "h7_validation.pdf", "price_gaps.pdf", "raa_heatmap.pdf", "rank_size.pdf", "robustness_h1.pdf"]}188