T12 FINDINGS — "Collapse Is Generation Against Harvest" (Vol. XIX #29)
Supplied working report; original verdicts not validated.
Review status: Needs review. This is an archival source note, not a passed proof.
FINDINGS.md
# T12 FINDINGS — "Collapse Is Generation Against Harvest" (Vol. XIX #29) **Verdict: NOT SUPPORTED.** On the pre-registered primary analysis, neither support rule holds. The logistic interaction between harvest pressure and generation time has the **opposite sign to the theory's prediction** (b3 = −0.76, p = 0.12), and collapse F/Fmsy does **not** decline across generation-time tertiles (medians 5.63 / 2.44 / 7.27; Spearman rho = +0.08, p = 0.60). In the 1/M sensitivity the interaction is significantly negative (b3 = −1.37, p = 4.9×10⁻⁶; region-controlled b3 = −1.23, p = 7.4×10⁻⁵) — i.e., the same F/Fmsy implies *lower*, not higher, collapse odds for longer-generation stocks. Every estimated interaction in every specification is negative; none is positive. ## 1. Headline numbers | | primary (A50M) | sens ≥5y | sens gen=1/M | sens B/B0 | |---|---|---|---|---| | n stocks (complete case) | 54 | 54 | 172 | 11 | | n collapsed (%) | 12 (22.2%) | 12 (22.2%) | 27 (15.7%) | 2 (18.2%) | | median F/Fmsy, collapsed vs not | 5.51 vs 1.05 | same | 5.12 vs 1.67 | 2.18 vs 1.19 | | interaction b3 (se) | **−0.761 (0.494)** | −0.761 (0.494) | **−1.375 (0.301)** | −1.019 (4.90) | | interaction p (Wald) | 0.123 | 0.123 | **4.94×10⁻⁶** | 0.835 | | Rule 1 | fail (wrong sign) | fail | **fail — significantly opposite** | fail (n=11) | | tertile medians of collapse F/Fmsy | 5.63 / 2.44 / 7.27 | same | 5.16 / 5.12 / 3.12 | 0.75 / 7.37 / — | | Spearman rho (collapsed stocks), one-sided p | +0.079, p=0.60 | +0.079, p=0.60 | −0.130, p=0.26 | — | | Rule 2 | fail | fail | fail (monotone medians but rho ns) | fail | Main effects in the primary model: log(F/Fmsy) b = +1.63 (p = 0.079) — collapse is (weakly) associated with harvest pressure, as expected; log(generation) main effect b = +0.03 (p = 0.96) — none. Database-wide (all 1,371 stocks with any B/Bmsy in the views): 87/1,371 (6.3%) have min B/Bmsy < 0.2. Among the 143 stocks with a recorded age at 50% maturity (A50M-yr) and the 342 with M, most lack one of the two required series (typically F/Fmsy — e.g., Newfoundland cod COD2J3KL and Northern Gulf cod COD3Pn4RS have **no** F/Fmsy series and drop out of the primary sample). ## 2. Support-rule comparison (pre-registered in hypothesis.md §3) - **Rule 1** (interaction positive, p<0.05): NOT MET. b3 = −0.76, p = 0.12 (primary). The theory needs b3 > 0; the point estimate is negative. Conditional verdict (b3 > 0, p < 0.10) also not met — b3 is not positive at all. - **Rule 2** (median collapse F/Fmsy declines across generation tertiles; per-stock Spearman negative, p<0.05): NOT MET. Medians are not monotone (5.63 → 2.44 → 7.27); Spearman rho = +0.079 (positive), one-sided p = 0.60. - Verdict rule (hypothesis.md §3.8): **Not supported** — there is no generation-time signal in the predicted direction in the primary specification, and the 1/M sensitivity provides significant evidence of the opposite sign. ## 3. Limitations (why this is not a decisive refutation) 1. **Sample attrition is severe.** Only 54 stocks have simultaneous B/Bmsy, F/Fmsy, and age-at-maturity; the most famous collapses (e.g., Northwest Atlantic cod) lack F/Fmsy series in RAMLDB and are excluded. The primary test is underpowered: a positive interaction of meaningful size cannot be excluded (95% CI for b3 ≈ −1.73 to +0.21). 2. **Generation-time proxy.** Age at 50% maturity is only a rough generation-time proxy (generation time depends on age structure, longevity, and mortality; maturity age ignores adult survival). Available for only ~10% of stocks. The 1/M proxy is better covered (n=172) but M values in RAMLDB are frequently assumed rather than estimated, and M is mechanically related to Fmsy reference points, which can induce a spurious (negative) interaction through the F/Fmsy normalization itself. 3. **Collapse definition.** "min B/Bmsy < 0.2 over the series" flags stocks that ever dipped below 20% of Bmsy, regardless of whether they stayed collapsed or were overfished *and then rebuilt*; the theory's own page says "collapse tracking biomass would remove generation time" — i.e., the theory claims a biomass-defined collapse outcome is exactly the wrong variable to see a generation signal, which biases this operationalization against the theory (we kept B/Bmsy because the programme pre-registered it; the B/B0 sensitivity is too small (n=11) to arbitrate). 4. **Fmsy normalization.** F/Fmsy mixes the theory's "harvest rate" with stock productivity; if Fmsy proxies are set relative to productivity, slow stocks' F/Fmsy is rescaled, attenuating or inverting the interaction. An absolute F (or harvest rate on its own scale) would test the theory more directly but was not pre-registered. 5. **Observational design.** Stocks are not randomly assigned harvest; managers target Fmsy regardless of generation time, so realized max F/Fmsy is compressed toward ~1, and long-generation stocks may simply have been fished harder historically (confounding). No causal claim is possible from this design. 6. **Pre-collapse F window.** For collapsed stocks we use max F/Fmsy up to the collapse year; for a few stocks the collapse year is near the start of the series, so "pre-collapse maximum" rests on few points. 7. **v4.491 vs v4.495.** The Zenodo record cited as v4.491 now serves v4.495; view CSVs named in the brief are no longer distributed and were reconstructed from the RData (PROVENANCE.md). Using v4.491 would not plausibly change the sign of these estimates. 8. **Implementation.** Pure-numpy logistic regression (IRLS) verified against an independent implementation and by gradient-norm checks; Spearman p via t-approximation; the region-control model for the 1/M sample is quasi-separated by region (region coefficients diverge) though the interaction SE remains finite. ## 4. What would change the conclusion - **A larger sample with F/Fmsy.** Adding F series for the cod/clupeid collapses (or using the raw `timeseries` table's `FdivFmsy`-family tsids more aggressively) would decide whether the primary negative estimate is noise. Power analysis: with n=54 and 12 events the SE of b3 is ~0.49; detecting a modest positive interaction (b3 ≈ +0.3) at p<0.05 would need roughly 4–6× the sample. - **A direct harvest-rate metric** (absolute F, or catch/biomass) instead of F/Fmsy, and **generation time from age-structured data** (e.g., mean age of spawners, or (1/K + t0)-based proxies) instead of maturity age. - **A duration/severity outcome** (collapsed for ≥ X consecutive years, or B/Bmsy fall exceeding some amplitude) rather than a single min-threshold flag. - **Within-stock comparative design** (e.g., paired fast/slow congener stocks in the same region) to break the productivity–reference-point confounding. - If, with those fixes, b3 turned positive and significant and tertile medians declined, the verdict would flip to Supported/Conditional. As run, the data give no support and the strongest signal runs opposite to the theory. ## 5. Files - `hypothesis.md` — quoted claim, pre-registered rules (written before fitting). - `PROVENANCE.md` — URLs, timestamps, sha256 of all inputs. - `code/01_export_rdata.py`, `code/02_prep_stock_level.py`, `code/03_analysis.py`, `code/common.py`, `code/pylibs/` (workspace-local rdata/xarray/narwhals). - `data/` — RAMLDB v4.495 zip, extracted RData, exported view CSVs. - `results/stock_level.csv` (per-stock table), `results/regression_table.csv`, `results/tertile_table.csv`, `results/sample_summary.csv`, `results/sample_counts.csv`, `results/summary.json`.
hypothesis.md
# T12 — Fishery Collapse: "Collapse Is Generation Against Harvest" **Theory under test:** Incoprea Vol. XIX, Theory #29 — *Collapse Is Generation Against Harvest* URL: https://incoprea.com/research-library/original-theories-vol19-20261030/theories/fishery-collapse-generation-harvest.html **Verdict (applied post-analysis, per §3.8): NOT SUPPORTED** — see FINDINGS.md. ## 1. Claim quoted from the source page > **The claim:** "Fishery collapse occurs when the ratio of generation time to harvest rate falls below a threshold, so a slow-growing stock collapses at a lower harvest than a fast-growing one." > **Mechanism (section 01):** "Recruitment must replace removals before the next generation matures; the ratio determines whether replacement is possible." > **Prediction (section 02):** "Collapse should track the ratio." > **Refutation (section 03):** "Collapse tracking biomass would remove generation time." Page status banner: "Working hypotheses, not findings · Not peer reviewed. Publication does not verify novelty or the cited evidence." Page footer: "Written 30 October 2026." **Operational reading.** The theory asserts that the *threshold* harvest pressure at which a stock collapses is set by the ratio (generation time / harvest rate). Empirically this implies an interaction between harvest pressure and generation time: at the same realized F/Fmsy, a stock with a longer generation time (slower growth) should have *higher* collapse probability — equivalently, longer-generation stocks should collapse at *lower* median F/Fmsy. Both implied tests are pre-registered below and run against the RAM Legacy Stock Assessment Database. ## 2. Data RAM Legacy Stock Assessment Database, record https://zenodo.org/record/4824192 (cited in the programme brief as v4.491; the record currently serves **RAMLDB v4.495.zip**, md5 688d450bfd59849e0522c3c5e18d1b66 — see PROVENANCE.md). Individual view CSVs are no longer distributed on the record; the equivalent tables were reconstructed from `R Data/DBdata[asmt][v4.495].RData` with the pure-Python `rdata` reader and written to `data/*.csv` (see PROVENANCE.md for sha256). Variables used: - `BdivBmsypref` (timeseries_values_views): B/Bmsy, stockid × year, "preferred" (best) series. **Primary biomass metric.** - `FdivFmsy` (timeseries_values_views): F/Fmsy, stockid × year. **Primary harvest-pressure metric.** - `A50M-yr` (bioparams long table, bioid `A50M-yr`): age at 50% maturity (years). **Primary generation-time proxy.** - `M-1/yr` / view column `M`: natural mortality (1/yr). **Sensitivity generation proxy (1/M).** - `TB` (view) and `TB0` (bioparams_values_views): used for the B/B0 sensitivity. - `stock` (stockid, region, primary_country, ISO3_code, areaid), `taxonomy` (family via tsn), `metadata` (region, taxGroup, FisheryType) for controls. ## 3. Pre-registered definitions and analysis rules (fixed BEFORE any model fitting) ### 3.1 Unit of analysis One row per `stockid` (the DB's stock-level views are already "best-series" consolidated). Stocks with multiple assessments are collapsed to a single stock-level series as provided by the DB views. ### 3.2 Sample inclusion (primary analysis) - Stock has **≥ 10 non-null years** of `BdivBmsypref` and **≥ 10 non-null years** of `FdivFmsy` (so min/max are not dominated by a stray point). - Generation proxy (`A50M-yr`) available (any assessment of the stock). Sensitivity A: same but **≥ 5 years** instead of 10. Sensitivity B: generation proxy = `1/M`. ### 3.3 Collapse (primary) `collapse = 1` iff `min(BdivBmsypref) < 0.2` over the stock's assessed series. Collapse year = first year with `BdivBmsypref < 0.2`. Sensitivity: `collapse_B0 = 1` iff `min(TB / TB0) < 0.2` (TB0 from bioparams_values_views; stocks without TB0 excluded). ### 3.4 Harvest pressure - Collapsed stocks: `F_pressure = max(FdivFmsy)` over years **up to and including the collapse year** (pre-collapse maximum). - Non-collapsed stocks: `F_pressure = max(FdivFmsy)` over all years. (This asymmetry follows the programme brief and matches the theory: for collapsed stocks only pre-collapse harvest matters; using the full-series max for non-collapsed stocks is conservative against the theory — it can only attenuate the generation signal.) ### 3.5 Generation time Primary proxy: age at 50% maturity `A50M-yr` (per-stock median across assessments). Sensitivity: `1/M` (M from bioparams_values_views). ### 3.6 SUPPORT RULE 1 — interaction in logistic regression Model: `logit P(collapse) = b0 + b1·log(F_pressure) + b2·log(gen) + b3·[log(F_pressure)·log(gen)]`. **Support = b3 > 0 and p < 0.05** (Wald test; SEs from the observed-information Hessian at the MLE). The theory predicts b3 > 0: for longer-generation stocks the same F/Fmsy implies higher collapse odds. Estimator: logistic regression via numpy gradient descent (no statsmodels/scipy), standardised inputs for stable optimisation, back-transformed coefficients reported. Sample limited to stocks with finite log(F_pressure) (F_pressure > 0). ### 3.7 SUPPORT RULE 2 — tertile trend of collapse harvest - Split the analysis sample into **tertiles of log(generation proxy)** (equal-count tertiles over the whole analysis sample, collapsed and non-collapsed together). - Among **collapsed** stocks, compute each tertile's **median F_pressure** (descriptive summary; support requires a monotone decline T1 > T2 > T3). - Trend test (the inferential part): **per-stock Spearman rank correlation across collapsed stocks** between their generation tertile rank (1,2,3) and their F_pressure, one-sided. Support = **rho < 0 with p < 0.05**. *(Clarified before fitting: exact Spearman on only the 3 tertile medians can never attain p<0.05 because 3 points allow a minimum one-sided p of 1/6, so the significance test uses the per-stock ranks; the 3 medians are reported descriptively.)* ### 3.8 Verdict rule - **Supported** = Rule 1 holds (b3 > 0, p < 0.05) AND Rule 2 holds (negative trend, p < 0.05). - **Conditional** = b3 > 0 with p < 0.10 (weak interaction) OR only Rule 2 holds. - **Not supported** = no generation-time signal (b3 ≤ 0 or p ≥ 0.10, and Rule 2 fails). ### 3.9 Controls and descriptives - Report n, number/percent collapsed vs not, by region and taxGroup where sample allows. - Secondary logistic model adds **region** fixed effects (regions with ≥ 20 stocks; others pooled as "Other") as a control — reported as a robustness check, not part of the verdict. ## 4. What would count against the theory - Interaction coefficient b3 ≤ 0 (or indistinguishable from 0) → same F/Fmsy does NOT carry higher collapse odds for slower stocks. - No negative tertile trend in collapse F/Fmsy → slow stocks do not collapse at lower harvest. - Per the theory's own refutation clause, a null result on the biomass-defined outcome cannot be attributed to the collapse definition being "too biomass-tracking" unless the B/B0 sensitivity also disagrees. ## 5. Analysis environment Python at `[local provenance path] (numpy 2.3.5, pandas 3.0.1; no scipy/statsmodels). Logistic regression implemented by hand in numpy (gradient descent + analytic Hessian SEs). Spearman implemented by hand. `rdata` 1.1.0 (pure Python) used to read the RData, installed with `pip --target` into `code/pylibs` (workspace-local; the compiled `pyreadr` wheel could not load in the code-signed dsh runtime).
Included code and results
- tests/T12-fishery-collapse/code/01_export_rdata.py
- tests/T12-fishery-collapse/code/02_prep_stock_level.py
- tests/T12-fishery-collapse/code/03_analysis.py
- tests/T12-fishery-collapse/code/common.py
- tests/T12-fishery-collapse/data/metadata.csv
- tests/T12-fishery-collapse/results/regression_table.csv
- tests/T12-fishery-collapse/results/sample_counts.csv
- tests/T12-fishery-collapse/results/sample_summary.csv
- tests/T12-fishery-collapse/results/stock_level.csv
- tests/T12-fishery-collapse/results/summary.json
- tests/T12-fishery-collapse/results/tertile_table.csv