Preregistration — WP38 "The Economic Geography of Digital Production" (Quebec online assortments, Fabri-Ka snapshot 2026-11-01)
Status: frozen 2026-11-01 before any Phase 4 model was run (hash recorded in research/decisions.md, D-007). Amendments, if any, are logged as A-xxx with their date and reason; nothing below is edited after freezing.
What was known when freezing: Phase 0 source audit (reports/00_source_audit.md), Phase 2 cleaning counts (reports/sample_flow.md), the matching candidate counts and tier-level median price gaps (experiments/matching.json), and the fact that a category-label audit and a match-validation sample were being annotated. No regional composition statistic, diversity index, network, regression or complexity index had been computed.
1. Object of study and wording rules
The unit is the published, active online listing of a Quebec-based merchant observed by Fabri-Ka at the snapshot (2026-11-01T17:38:30Z). The paper studies the observed online retail assortment of merchants whose site Fabri-Ka classifies as Quebec-based. The following wording is mandatory: listings are not products sold, prices are posted prices, a merchant's region is the region of its (FSA-level) business location, not the origin of its products; "production", "manufacturing" and "output" are never used to describe Fabri-Ka quantities.
2. Samples (fixed; see reports/sample_flow.md)
| name | definition | size at freezing |
|---|---|---|
| S_A assortment sample | active, published listings of enabled stores; one representative per (store, normalised title); not hors_mission; not a non-representative mirror domain |
370 054 listings, 1 557 stores |
| S_R regional sample (primary) | S_A ∩ stores with region_final ≠ Inconnue (Fabri-Ka region, else region of the FSA centroid by point-in-polygon against the official MERN administrative-region layer) |
to be reported; at freezing 1 223 stores have a Fabri-Ka region and up to 117 more can be recovered by point-in-polygon |
| S_R0 | S_A ∩ stores with a Fabri-Ka region only (region_source = db) — sensitivity |
1 223 stores |
| S_P price sample | S_A ∩ CAD store/listing ∩ 0 < price ≤ 50 000 ∩ not on request | 359 612 listings |
| S_M matched sample | pairs/groups from tiers A (shared SKU) and B (same brand, identical title) with comparable = True, both stores in S_R, stores not siblings; tier C added in sensitivity; tier D never used for inference |
at freezing: A 1 683 and B 381 comparable pairs before region/sibling filters |
Stores with unknown region are reported as an 18th row "Inconnue" in descriptive tables and excluded from all regional inference. Listings in the 20 Fabri-Ka categories are used as labelled; the category audit (500 listings, two LLM annotators + operator adjudication) yields a confusion matrix used (i) to report label precision and (ii) in a robustness run that reweights or reassigns categories by the estimated confusion (Section 7).
3. Weighting schemes (all reported; the primary is stated per hypothesis)
- L (listing weights): each listing counts 1.
- M (merchant-equal weights): each listing counts 1/n_s where n_s is the store's number of S_A listings, so every store contributes one unit — the primary scheme for all regional statistics because catalogue sizes are extremely skewed (top-10 stores = 36 % of listings).
- T (trimmed): scheme L after dropping the 1 % largest stores by catalogue size.
4. Hypotheses, estimands, specifications and decision rules
H1 — Regional specialization (confirmatory)
Estimand: dependence between region and category in S_R beyond what a random allocation of stores to regions would produce. Statistic: Cramér's V of the region × category table under scheme M (primary) and L, T. Inference: 2 000 permutations that reshuffle region labels across stores (preserving each region's store count and each store's catalogue) → one-sided p-value; store-cluster bootstrap (2 000 draws) for 95 % CIs of V and of every RAA_rc. RAA_rc = (N_rc/N_r·)/(N_·c/N_··) with N under scheme M. Decision: H1 supported if p < 0.05 (Holm-adjusted within the confirmatory family) under scheme M and under scheme T. Reported alongside: number of (r, c) cells whose bootstrap CI for RAA excludes 1; RAA heat-map; comparison with the merchant-count-based "RAA" (stores instead of listings).
H2 — Diversity and regional scale (confirmatory, low power: 17 regions)
Outcomes (per region, S_R): (a) rarefied normalised Shannon entropy of category shares, computed as the mean over 2 000 draws of 15 stores without replacement (regions with fewer than 15 stores are excluded from (a) and flagged); (b) merchant-equal normalised entropy; (c) effective number of categories exp(H). Regressors (external, ISQ/StatCan; vintage recorded): log population, log number of business locations, disposable income per capita; urban indicator if obtained. Test: Spearman ρ between outcome (a) and log population, 95 % CI by region-level bootstrap combined with the store-level resampling of the outcome; OLS of (a) on log population with HC3 SE as the secondary statistic. Decision: H2 supported if the CI of ρ excludes 0 (primary) — reported as an association, never causal. Power note: with n ≤ 17, only |ρ| ≳ 0.5 is detectable.
H3 — Concentration and the long tail (confirmatory)
Estimands (S_A, all stores): Gini of listings across stores; share of listings held by the top 1 % and top 10 % of stores; rank-size slope; discrete power-law vs log-normal fit of catalogue sizes (Clauset–Shalizi–Newman MLE, Vuong likelihood-ratio test). Within-region Gini with store bootstrap CIs. Decision: H3 supported if Gini ≥ 0.70 and top-10 % share ≥ 50 % (both pre-declared thresholds; bootstrap CIs reported). The distributional family is reported, not tested as a hypothesis.
H4 — Related diversification (exploratory; no confirmatory status)
Panel: weekly presence of (store, category) reconstructed from first_seen/last_seen for ISO weeks 2026-W36 … 2026-W44 (after onboarding ended on 2026-08-24; W35 is a buffer). Relatedness φ_cc' = Hidalgo-type proximity from co-occurrence of categories across stores at baseline (W36). Density_sc = Σ_{c'∈portfolio_s} φ_cc' / Σ_{c'} φ_cc'. Outcome: Entry_sc = 1 if store s has no listing in c in W36–W39 and ≥ 1 listing in W40–W44 (temporal holdout: density uses W36–W39 only).
Model: linear probability Entry_sc = β Density_sc + α_s + γ_c + ε_sc, SE clustered by store; placebo with density from a store-permuted co-occurrence matrix; region-level version (entry of a category in a region) reported descriptively because the number of events is expected to be small.
Interpretation rule: whatever β is, the result is reported as exploratory and the share of entries attributable to connector changes (sync_log message audit) is reported.
H5 — Price dispersion of matched products (confirmatory, two tests)
Sample S_M. Model: log P_im = α_i + γ_{r(m)} + δ_{platform(m)} + β₁ log n_m + β₂ Reseller_m + β₃ Certified_m + ε_im, i = match group, m = store; SE clustered by store (wild cluster bootstrap, 9 999 draws, Rademacher) because the number of stores is small (≈ 200). Test 1 (geography): joint test that all γ_r are equal (wild-cluster-bootstrap p-value). Test 2 (competition): β₂ = 0 (sign reported). Descriptive estimands: median and p90 of the within-group max–min log gap; share of groups with gap > 5 %; same statistics by tier and by comparability flag. Identification note (fixed): each store belongs to one region, so γ_r is identified only through groups that span regions; a store fixed effect cannot be included with γ_r. Shipping and taxes are not observed; prices are posted prices. Decision: "geographically structured" if Test 1 p < 0.05 (Holm-adjusted); "competitively structured" if Test 2 p < 0.05 (Holm-adjusted). Match precision from the validation sample is reported, and a correction run keeps only groups confirmed by the annotators.
H6 — Local-origin premium: declared untestable at product level
The source has no product-level provenance; origin_class is a store-level prior. No H6 estimate will be produced. A descriptive store-certification contrast (within-category log-price difference between stores certified by Aliments du Québec / Les Produits du Québec and other stores, category FE, store-clustered SE) is reported in a separate subsection with the explicit label "not a test of H6".
H7 — Digital-assortment complexity (indicator validation, not a hypothesis test)
Matrix: M_rc = 1[RAA_rc ≥ 1] under scheme M on S_R. Indicators: method-of-reflections ECI (second eigenvector of M̃ = D_r⁻¹ M D_c⁻¹ Mᵀ), Fitness–Complexity (Tacchella et al.), and plain diversity (row sums). Validation criteria (all reported, none "supports H7" on its own): (V1) rank stability — Spearman ρ between the full-sample ECI and ECIs from 500 store-bootstrap draws, criterion median ρ ≥ 0.8; (V2) null — the dispersion of ECI and the ECI–diversity correlation compared with 2 000 store-level region reshuffles; (V3) incremental information — R² of ECI on log population, log business count and income (n ≤ 17); ECI is said to carry information beyond these covariates only if the leave-one-region-out predicted ECI remains correlated (ρ ≥ 0.5) with the realised one and V1 holds; (V4) community detection stability (Louvain, 200 seeds; normalised mutual information between runs). A "complexity" label is used only if V1 and V2 pass; otherwise the index is reported as "unstable" and the QDACI omits it.
QDACI (Phase 6)
Components per region, each with store-bootstrap 95 % CI: (1) rarefied diversity (H2a); (2) specialization = mean |log RAA| over categories (scheme M); (3) complexity (H7 ECI, only if validated); (4) concentration = within-region Gini of catalogue sizes, and coverage = stores per 10 000 population; (5) matched-product price dispersion = region effect γ_r from H5 (only for regions with ≥ 10 matched stores). Composite: equal weights on rank-normalised components, PCA first component, and Borda rank aggregation; instability measured by the Spearman ρ between composite rankings across weightings and across bootstrap draws. If the three composites disagree (median pairwise ρ < 0.7), no composite is published and the paper reports components only.
5. External validation (Phase 5)
Fabri-Ka store counts per region compared with the external business-location counts (overall and retail/manufacturing if obtained): coverage ratio per region, Spearman ρ, and a residual plot. Selection audit: share of stores by discovery source and by platform per region; category composition by platform. Results of H1–H3 recomputed on (i) S_R0, (ii) stores discovered by certification/association sources only, (iii) excluding Montréal, (iv) excluding the 1 % largest stores, (v) categories merged into 8 macro-groups, (vi) autre dropped, (vii) categories reassigned by the audit confusion matrix (100 draws).
6. Inference, seeds, multiplicity
Seed 20261101 everywhere. Confirmatory family = {H1, H2, H3, H5-T1, H5-T2}: Holm step-down at α = 0.05; raw p-values also reported. Exploratory/validation outputs (H4, H6-proxy, H7, QDACI) carry no adjusted claims. All CIs are percentile bootstrap unless stated.
7. What will make us say a hypothesis is "inconclusive" or "untestable"
Inconclusive: a CI that includes both the null and economically meaningful effects (H2, H5) or a permutation p between 0.05 and 0.20 (H1). Untestable: H6 (declared); H4 at the region level if fewer than 10 region–category entries occur; H5 Test 1 if fewer than 8 regions have ≥ 5 matched stores.
8. Outputs promised
Tables: sample flow; category audit; match validation; RAA matrix with CIs; diversity by region with CIs; H2 correlations; concentration statistics; H4 LPM; H5 regressions; H7 validation; QDACI components and composite instability; external coverage. Figures: coverage map; RAA heat-map; diversity/concentration distributions; rank-size plot; category network and communities; price-gap distributions; complexity vs development; H4 figure only if ≥ 10 region-level entries; robustness coefficient plot; attrition diagram.