EDIT 2026-04-28: this issue's premise is incorrect. Verified by reading bcfishpass model/02_habitat_linear/sql/load_habitat_linear_ch.sql and the git history of that file. The stream_order_parent >= 5 AND stream_order = 1 predicate appears in bcfishpass CH rearing logic, never in CH spawning. CH spawning's cw_min bypass uses r.waterbody_key IS NOT NULL (river-polygon membership) instead. The 83 segments / 2.47 km observation in ADMS was likely a misclassification of rearing-bypassed segments as spawning-bypassed during QA. The rearing bypass is correctly tracked in fresh#158 frs_order_child; the spawning side is already handled in link via the river_skip_cw_min column → waterbody_type: R rule with channel_width: [0, 9999]. Closing as not-a-bug.
Problem (original — incorrect)
bcfishpass v0.5.0 load_habitat_linear_ch.sql bypasses channel_width_min for CH spawning when stream_order_parent >= 5 AND stream_order = 1. In ADMS this is 83 segments / 2.47 km with channel_width < 4m classified as CH spawning.
Action (original — superseded)
- Replicate the exception in our bcfishpass-matching comparison
- Tag these segments for QA inspection in QGIS
- Take NGE stance after inspection
SELECT s.geom, s.blue_line_key, s.downstream_route_measure,
s.channel_width, s.gradient, s.stream_order,
s.stream_order_parent, s.gnis_name,
h.spawning AND s.channel_width < 4 AS spawn_ch_order_exception
FROM fresh.streams s
JOIN fresh.streams_habitat h ON s.id_segment = h.id_segment
WHERE h.species_code = 'CH' AND h.spawning
Versions
- fresh: 0.12.5, bcfishpass: v0.5.0, link: 0.0.0.9000
Relates to #16, #19
Problem (original — incorrect)
bcfishpass v0.5.0
load_habitat_linear_ch.sqlbypasseschannel_width_minfor CH spawning whenstream_order_parent >= 5 AND stream_order = 1. In ADMS this is 83 segments / 2.47 km with channel_width < 4m classified as CH spawning.Action (original — superseded)
Versions
Relates to #16, #19