Problem
Every provincial run dispatches 15 WSGs that have zero target species for the bcfishpass bundle (BT/CH/CM/CO/PK/SK/ST/WCT). Each errors ~30-80s in with No species resolved for AOI '<wsg>'. Net waste per provincial run: ~12 min compute, 15 stub-error RDS files.
The 15 affected WSGs (carry only ct/dv/gr/rb per inst/extdata/configs/bcfishpass/overrides/wsg_species_presence.csv):
| WSG |
Flagged species |
Note |
| ATLL |
dv, gr, rb |
|
| BRID |
ct, rb |
Falls 20807 |
| CHUK |
dv |
No target species observations |
| GRNL |
rb |
No target species observations |
| KAKC |
rb |
Not accessible to target species |
| KUSR |
dv, gr |
No target species observations |
| LEUT |
rb |
Kenny Dam |
| LFRT |
gr, rb |
Mackenzie basin |
| LKEC |
dv, gr |
Mackenzie basin |
| LNRS |
ct, rb |
|
| MURT |
rb |
|
| MUSK |
dv, rb |
|
| PITR |
dv, rb |
No target species observations |
| UISR |
dv, rb |
Forrest Kerr Generating Station |
| UPET |
gr, rb |
Mackenzie basin |
Root cause
trifecta_provincial.sh (line 50), balance_provincial_buckets.R (line 123), and run_provincial_parity.R (line 49) all use the same broad presence inclusion list:
spp_cols <- c("ch","cm","co","pk","sk","st","bt","wct","ct","dv","rb")
has_spp <- apply(wsg_pres[, spp_cols, drop=FALSE], 1,
function(r) any(r %in% c("t","TRUE",TRUE)))
The check looks for ANY of 11 species presence flags. The bcfishpass bundle only classifies the first 8 — so a WSG flagged only for ct/dv/gr/rb passes the dispatch filter but errors during lnk_pipeline_species() (which intersects with cfg$species).
Fix
Narrow the presence check to the bundle's cfg$species (8 bcfp species). Caller-passed species override still works for default-bundle runs that want broader coverage.
spp_cols <- tolower(cfg$species) # 8 species for bcfishpass bundle
has_spp <- apply(wsg_pres[, spp_cols, drop=FALSE], 1,
function(r) any(r %in% c("t","TRUE",TRUE)))
Predicted impact: provincial run drops from 232 → 217 dispatched WSGs; ~12 min wall-time saved; zero stub-error RDS files.
Prior context
- Surfaced in
research/provincial_parity_2026_05_01.md Errors section; "filed as a follow-up" never actually filed (this issue).
- Reproduced unchanged in 2026-05-11 provincial run (same 15 WSGs, link 0.35.0).
Acceptance
Problem
Every provincial run dispatches 15 WSGs that have zero target species for the bcfishpass bundle (BT/CH/CM/CO/PK/SK/ST/WCT). Each errors ~30-80s in with
No species resolved for AOI '<wsg>'. Net waste per provincial run: ~12 min compute, 15 stub-error RDS files.The 15 affected WSGs (carry only ct/dv/gr/rb per
inst/extdata/configs/bcfishpass/overrides/wsg_species_presence.csv):Root cause
trifecta_provincial.sh(line 50),balance_provincial_buckets.R(line 123), andrun_provincial_parity.R(line 49) all use the same broad presence inclusion list:The check looks for ANY of 11 species presence flags. The bcfishpass bundle only classifies the first 8 — so a WSG flagged only for ct/dv/gr/rb passes the dispatch filter but errors during
lnk_pipeline_species()(which intersects withcfg$species).Fix
Narrow the presence check to the bundle's
cfg$species(8 bcfp species). Caller-passed species override still works for default-bundle runs that want broader coverage.Predicted impact: provincial run drops from 232 → 217 dispatched WSGs; ~12 min wall-time saved; zero stub-error RDS files.
Prior context
research/provincial_parity_2026_05_01.mdErrors section; "filed as a follow-up" never actually filed (this issue).Acceptance
trifecta_provincial.sh+balance_provincial_buckets.R+run_provincial_parity.Rfilter against bundle species.