Skip to content

Wiki Lint Report — 2026-04-05

Auto-generated by lint pass over all 53 wiki pages. Use this as a working document — check off items as they are resolved.


Summary

Check Result
Total pages 54
Broken internal links ✅ 0
Orphan pages ✅ 0
Contradictions ✅ 0
Pages missing YAML frontmatter ⚠️ 18
Open questions flagged ⚠️ 29
Data files unconfirmed (⚠️) ⚠️ 40+
Structural gaps ⚠️ 4 significant

Open questions — prioritised

Priority 1 — Resolve with user (quick answers)

  • [ ] WL N effect = 90: Is this final for VP3, or under active discussion?
  • [ ] WL P effect = 0: Expected to be permanent, or revisit in VP3 review?
  • [x] exceed_MW: Confirmed removed from model (2026-04-06). MW_eq is a hard constraint. exceed_lav (lavbund floor only) remains as the sole tripartite penalty variable.
  • [x] LRl N effect = 40 flat: Confirmed deliberate policy consensus value (2026-04-05) — see LRl.md catalog analysis. Not a placeholder.
  • [ ] VP2 temporary measures: Should CCS/CCW VP2 decisions block VP3 on the same field?
  • [ ] Dec 2024 targets: Are N_targets_DEC2024.inc and P_targets_Dec2024.inc final or still draft?

Priority 2 — Resolve by reading source files / documents

  • [x] differentiation_effects.inc science basis: Rolighed et al. (2025), DCA advisory note — documented in DCA_diff_effekt_2025.md. File updated 2026-04-05 to September 2025 revision (108 catchments for both SA and LRH).
  • [x] LRh: which 13 catchments?: Confirmed Limfjorden / Northern Jutland region (Nissum Bredning, Thisted Bredning, Nibe Bredning, Kås Bredning, Løgstør Bredning, Halkær Bredning, Lillebælt, Skagerrak, Aalborg Bugt). LRh now expanded to all 108 catchments — see LRh.md.
  • [x] Adj_Ann_Jordv_2pro(i): Confirmed (2026-04-06) — annuitized income from the afforestation grant scheme (skovrejsningskompensation), based on Lundhede (2020) / Meilby et al. (2014). Reduces net cost of FO. Documented in objective_and_costs.md and FO.md.
  • [x] LRh PotV eligibility (2026-04-06): Confirmed national by design. PotV(i,"LRh") has no catchment filter — this is intentional. The apparent 13-catchment restriction was purely an artifact of the old differentiation_effects.inc having values only for 13 Limfjorden catchments (NEffM=0 elsewhere → measure not selected). The September 2025 file update corrects this. LRh is genuinely national.
  • [x] wtype(i) data source: Defined in P_waterways.incwtype(i) is an integer watercourse type code for each field; most = 0. Confirmed by direct file read 2026-04-05.
  • [x] Total_P_loss(up_lakecatch): Direct read confirmed — baseline P load from each upstream lake catchment (kg P/yr), ~448 entries, source Total_P_loss.xlsx. Used as denominator/reference for P reduction calculations.
  • [x] SurfRet_ID15(ret): Direct read confirmed — surface retention at ID15 sub-catchment level (%), 3,305 entries, Sep 2023 vintage. Separate from field-level SurfRet(i) — aggregated to sub-catchment for use in BZ routing equations.
  • [x] 6 unconfirmed data files: All now confirmed by direct read: Randzonepot(i) (BZ potential), Set groups (59 lake groups), extraMW_50(ret) (extra MW-50 ha), Land_simp(ero_stretch) (agricultural land flag), Vlb_class(ero_stretch) (stream bank class 1–3). Note: groups_up_lakes_final.inc is confirmed in temp but not actually used in the active model — removed from wiki tables.

Priority 3 — Policy / scientific questions for documentation

  • [x] LRl vs LRh retention type: Confirmed by reasoning in LRl.md (2026-04-05) — LRl = NR because organogenic/low-lying land drains via near-surface lateral flow (no deep groundwater retention path). LRh = TR because mineral/high land drains through groundwater where full landscape retention applies.
  • [ ] IBZ cost justification: The 7,938 DKK/ha is not from the DCA catalogs. Source unknown — possibly a SEGES estimate. Document when found.
  • [ ] BZ 20% erosion threshold: Pragmatic modeling choice per BZ10.md — "appropriate threshold is still open in the code." Not yet empirically validated.
  • [ ] Tripartite floors scope: Do the 5 catchment-scoped floors (n_targets>0) correctly reflect the policy intent?
  • [ ] N/P targets: net vs absolute: Are targets reductions from current loads or absolute ceilings?
  • [x] EC measure assumptions: Confirmed (2026-04-04) — primarily willow (Salix). Willow is the reference crop in DCA 174 Table 2 (p.148). Miscanthus also mentioned but not the primary reference. Documented in EC.md.
  • [ ] Sand trap class 3: Confirmed excluded from model? (code note says costs were "made up")

Pages missing YAML frontmatter (18)

Add ---\ntype: [type]\nlast_updated: YYYY-MM-DD\n--- to top of each:

  • [ ] concepts/retention.md
  • [ ] concepts/P_pathways.md
  • [ ] concepts/cost_concepts.md
  • [ ] model_structure/N_reduction.md
  • [ ] model_structure/P_reduction.md
  • [ ] model_structure/objective_and_costs.md
  • [ ] model_structure/constraints.md
  • [ ] model_structure/spatial_hierarchy.md
  • [ ] model_structure/B_target.md
  • [ ] model_structure/C_target.md
  • [ ] model_structure/how_to_run.md
  • [ ] policy_context/VP2_VP3.md
  • [ ] policy_context/tripartite_agreement.md
  • [ ] policy_context/WFD.md
  • [ ] data/inc_files_overview.md
  • [ ] scenarios/index.md
  • [ ] synthesis/cost_effectiveness.md
  • [ ] measures/overview.md

Data files to confirm (40+)

Currently ⚠️ (inferred from parameter names) in data/inc_files_overview.md. Confirm by reading each file when added to raw/data/:

Sets / spatial: - [ ] Seti.inc, Not_Vp2perm.inc, Set_ret.inc, Set_k.inc, Setki.inc - [ ] Set_Reti.inc, Set_KRet.inc, Set_p.inc, Set_KP.inc - [ ] set_pp.inc, set_kpp.inc, set_w.inc, set_geo.inc, Set_ero_stretch.inc - [ ] set_lakecatch.inc, set_up_lakecatch.inc, set_lakeret.inc, set_up_lakeret.inc - [ ] set_kero.inc, set_lake_ero.inc, set_up_lake_ero.inc, set_WGeo.inc - [ ] set_w_ero_stretch.inc, set_up_lakew.inc, set_lakew.inc, set_kw.inc, set_wi_Pwet.inc - [ ] set_Lakei.inc, Set_up_lakei.inc, set_Klake.inc, set_Kup_Lake.inc - [ ] set_WWT_lake.inc, set_lakepp.inc, lakechain_nokyst.inc - [ ] All setmw*.inc (9 files)

Biophysical / field: - [ ] Area.inc, Potential_basemap03_2.inc, SubSoil2.inc, Oekologisk2.inc - [ ] Dyretryk2.inc, Adj_Ann_Jordv_2pro.inc, FO_NO.inc, FO_YES.inc

Unconfirmed critical files: - [x] Randzonep2.inc — confirmed: Randzonepot(i) ha, 639,461 fields, BZ potential per field - [x] groups.inc — confirmed: Set groups, 59 numbered lake groups - [x] ~~groups_up_lakes_final.inc~~ — NOT used in active model (confirmed 2026-04-05); removed from wiki tables; left in temp/ - [x] extraMW_50.inc — confirmed: extraMW_50(ret), 3,456 sub-catchments, extra MW-50 ha capacity - [x] Land_simp.inc — confirmed: Land_simp(ero_stretch), agricultural land flag - [x] Vlb_class.inc — confirmed: Vlb_class(ero_stretch), stream bank class 1–3 - [x] P_waterways.inc — confirmed: wtype(i), watercourse type code per field - [x] P_loss_field.inc — confirmed: P_loss_field(i), total P loss per field (kg P/yr)


Structural gaps to address

  • [ ] Run Baseline_NP scenario — most important single action; will populate cost_effectiveness.md
  • [x] Ingest N and P measure catalogs — scientific basis for almost all effect values (raw/measures/)
  • [ ] Add YAML frontmatter to 18 pages above (can be done by Claude in a single session)
  • [ ] "How to interpret results" page — follow-up to how_to_run.md once first scenario is run
  • [ ] Mutual exclusion reference matrix — a clear table of which measures cannot co-exist


Health check pass — 2026-04-06

Triggered by user request after cross-linking pass. All 54 wiki pages reviewed.

Issues found and fixed: 1. ✅ wiki/synthesis/cost_effectiveness.md — LRh row said "Only 13 catchments"; SA row said "Only ~97 catchments." Both updated to "108 catchments (national)" following the 2026-04-05 differentiation_effects.inc update. 2. ✅ wiki/synthesis/cost_effectiveness.md — Two broken links: [N Reduction](N_reduction.md) and [P Reduction](P_reduction.md) used wrong relative paths (missing ../model_structure/ prefix for a file in wiki/synthesis/). Fixed. 3. ✅ lint_2026-04-05.md — Page count was 53; updated to 54 (lint_2026-04-05.md itself is the 54th content page). 4. ✅ lint_2026-04-05.md — Several Priority 2 and Priority 3 items were resolved in earlier sessions but not marked. Now marked: Adj_Ann_Jordv_2pro, LRl vs LRh retention type, EC measure assumptions, all 8 "unconfirmed critical files."

No new issues introduced by the cross-linking pass: - All new relative links in "Related pages" sections checked and correct. - No contradictions introduced. - No orphan pages created.

Remaining open issues (not fixed in this pass — require user input or .gms verification): - exceed_MW in MW_eq: the penalty variable appears in the objective function; whether it's in the MW_eq constraint line itself needs .gms verification. Likely yes — documented as such in constraints.md. - LRh PotV eligibility: does expanding NEffM to 108 catchments make LRh nationally selectable? Needs .gms read to check PotV formula for any catchment filter. - Dec 2024 targets (N and P): are these final? - WL N effect = 90: final for VP3? - WL P effect = 0: permanent? - VP2 temporary measures block: should CCS/CCW VP2 decisions block VP3?


Things that are fine (no action needed)

  • ✅ No broken internal links
  • ✅ No orphan pages
  • ✅ No contradictions between pages
  • ✅ All 35 measures have individual pages
  • ✅ WL N/P effect changes consistently documented in all relevant pages
  • ✅ VP2 legacy structure clearly explained
  • ✅ SA and LRh spatial differentiation fully documented after differentiation_effects.inc ingest
  • ✅ All scenario pages link to each other appropriately