"""Learner starter. Complete the helpers, then run check_exercise.py.""" def new_failure_ids(expected: dict[str, str], baseline: dict[str, str], candidate: dict[str, str]) -> list[str]: """Return sorted IDs correct in baseline and incorrect in candidate. All three mappings must have exactly the same nonempty ID set. Raise ValueError when IDs are missing, extra, or empty. Values are already validated route strings; do not depend on mapping insertion order. """ raise NotImplementedError("Implement the matched-case comparison") def slice_accuracy(cases: list[dict], outputs: dict[str, str], slice_name: str) -> float: """Return route accuracy for the named slice. Each case has id, slice, expected_route. IDs are unique and route strings are validated. Outputs must match the complete case ID set, including other slices. Raise ValueError for incomplete/extra outputs or an empty named slice. Do not divide by the entire dataset size. """ raise NotImplementedError("Implement the slice calculation")