"""Reference solution; compare only after attempting the learner starter.""" def new_failure_ids(expected: dict[str, str], baseline: dict[str, str], candidate: dict[str, str]) -> list[str]: if not expected or set(expected) != set(baseline) or set(expected) != set(candidate): raise ValueError("Expected, baseline, and candidate need the same nonempty ID set") return sorted(key for key, answer in expected.items() if baseline[key] == answer and candidate[key] != answer) def slice_accuracy(cases: list[dict], outputs: dict[str, str], slice_name: str) -> float: if {case["id"] for case in cases} != set(outputs): raise ValueError("Outputs must match the full case set") members = [case for case in cases if case["slice"] == slice_name] if not members: raise ValueError("Named slice has no cases") return sum(outputs[case["id"]] == case["expected_route"] for case in members) / len(members)