{"record":{"id":"58ca993be950d840","repo":"tensorflow/models","slug":"class-class-name-in-category-category-name","errorCode":null,"errorMessage":"Class '{class_name}' in category '{category_name}' is not present in the top-level 'classes' list.","messagePattern":"Class '(.+?)' in category '(.+?)' is not present in the top-level 'classes' list\\.","errorType":"exception","errorClass":"ConfigurationError","httpStatus":null,"severity":"error","filePath":"official/projects/waste_identification_ml/model_inference_with_tracking/sam3_dinov3_tracking_pipeline/config_loader.py","lineNumber":295,"sourceCode":"    )\n\n  seen_classes: dict[str, str] = {}\n  mapping_dict: dict[str, list[str]] = {}\n  class_names = set(classes)\n  for category_name, class_list in raw_mapping.items():\n    if not isinstance(class_list, Sequence) or isinstance(class_list, str):\n      raise ConfigurationError(\n          f\"Category '{category_name}' must map to a list of class names.\"\n      )\n    if not class_list:\n      raise ConfigurationError(\n          f\"Category '{category_name}' must map to a non-empty list of class \"\n          \"names.\"\n      )\n    mapping_dict[str(category_name)] = list(class_list)\n    for class_name in class_list:\n      if class_name not in class_names:\n        raise ConfigurationError(\n            f\"Class '{class_name}' in category '{category_name}' is not \"\n            \"present in the top-level 'classes' list.\"\n        )\n      if class_name in seen_classes:\n        raise ConfigurationError(\n            f\"Class '{class_name}' is assigned to both \"\n            f\"'{seen_classes[class_name]}' and '{category_name}'.\"\n        )\n      seen_classes[class_name] = category_name\n\n  unmapped_classes = [c for c in classes if c not in seen_classes]\n  if unmapped_classes:\n    raise ConfigurationError(\n        \"The following classes are not assigned to any collapsed category: \"\n        f\"{unmapped_classes}\"\n    )\n\n  return CollapsedCategoriesConfig(enable=True, mapping=mapping_dict)","sourceCodeStart":277,"sourceCodeEnd":313,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/projects/waste_identification_ml/model_inference_with_tracking/sam3_dinov3_tracking_pipeline/config_loader.py#L277-L313","documentation":"Cross-reference validation in build_collapsed_categories_config: a class listed under a collapsed category does not appear in the top-level 'classes' list of the same YAML. The classifier and detector are configured from that top-level list, so a mapped-but-undeclared class would never be predicted yet occupies a category slot; the loader rejects the inconsistency, naming both class and category.","triggerScenarios":"Thrown at official/projects/waste_identification_ml/model_inference_with_tracking/sam3_dinov3_tracking_pipeline/config_loader.py:295 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add the class name to the top-level 'classes' list in the config","Fix typos or naming mismatches between the mapping entries and the classes list","Remove the class from the category mapping if it should not be part of the pipeline"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e006f5f0d534913e49c1f1dae87364039fa607e2","analyzedAt":"2026-08-24T14:09:15.576Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}