@@ -83,12 +83,11 @@ def find_sketch_test_dirs(types_filter: list[str]) -> list[tuple[str, Path]]:
8383def load_tags_for_test (ci_json : dict , chip : str ) -> set [str ]:
8484 tags = set ()
8585 # Global tags
86- for key in "tags" :
87- v = ci_json .get (key )
88- if isinstance (v , list ):
89- for e in v :
90- if isinstance (e , str ) and e .strip ():
91- tags .add (e .strip ())
86+ v = ci_json .get ("tags" )
87+ if isinstance (v , list ):
88+ for e in v :
89+ if isinstance (e , str ) and e .strip ():
90+ tags .add (e .strip ())
9291 # Per-SoC tags
9392 soc_tags = ci_json .get ("soc_tags" )
9493 if isinstance (soc_tags , dict ):
@@ -360,7 +359,7 @@ def main():
360359 # Discover available runners (best-effort)
361360 available_runners = list_project_runners ()
362361 if not available_runners :
363- print ("[WARN] Could not enumerate project runners or none found; skipping runner-tag availability checks ." )
362+ print ("[WARN] Could not enumerate project runners or none found; using conservative mode for tagged groups ." )
364363
365364 # Accumulate all missing-runner groups to emit a single stub job
366365 missing_groups : list [dict ] = []
@@ -375,6 +374,14 @@ def main():
375374 can_schedule = True
376375 if available_runners :
377376 can_schedule = any_runner_matches (tag_list , available_runners )
377+ else :
378+ # Conservative mode when we cannot list runners: treat groups that require extra
379+ # tags beyond the SOC or 'generic' as missing-runner to avoid running on generic.
380+ assume_missing = os .environ .get ("ASSUME_TAGGED_GROUPS_MISSING" , "1" ) == "1"
381+ if assume_missing :
382+ extra = [t for t in tag_list if t not in (chip , "generic" )]
383+ if extra :
384+ can_schedule = False
378385
379386 if can_schedule :
380387 job_name = f"hw-{ chip } -{ test_type } -{ tag_suffix } " [:255 ]
0 commit comments