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.incandP_targets_Dec2024.incfinal or still draft?
Priority 2 — Resolve by reading source files / documents¶
- [x]
differentiation_effects.incscience 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 inobjective_and_costs.mdandFO.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 olddifferentiation_effects.inchaving 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 inP_waterways.inc—wtype(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, sourceTotal_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-levelSurfRet(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.incis 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.incingest - ✅ All scenario pages link to each other appropriately