diff --git a/tooling/atlas-verify b/tooling/atlas-verify index 0438203a1..999f0c8f5 100755 --- a/tooling/atlas-verify +++ b/tooling/atlas-verify @@ -104,13 +104,16 @@ def verify_proposal(path: Path) -> list[str]: # 9. star_type vs spectral_class consistency star_type_field = p.get("star_type", "") spectral = p.get("spectral_class", "") - if star_type_field and spectral: - spectral_letter = spectral[0] if spectral else "" - if spectral_letter and star_type_field[0] != spectral_letter: - errors.append( - f"star_type '{star_type_field}' conflicts with " - f"spectral_class '{spectral}'" - ) + if star_type_field and spectral and star_type_field != "binary": + # Strip dwarf/subdwarf prefixes (d, sd) to get actual class letter + s = spectral.lstrip("sd").upper() + spectral_letter = s[0] if s else "" + if spectral_letter and spectral_letter.isalpha(): + if star_type_field[0].upper() != spectral_letter: + errors.append( + f"star_type '{star_type_field}' conflicts with " + f"spectral_class '{spectral}'" + ) return errors @@ -127,8 +130,13 @@ def main(): ) args = parser.parse_args() + # Sol is hand-authored with different rules (named uninhabited bodies, etc.) + EXCLUDE = {"GJ0.json", "GJ1221.json"} + total_errors = 0 for path in args.proposals: + if path.name in EXCLUDE: + continue if not path.exists(): print(f"SKIP — {path} not found") continue