Represent a task and its labels using dataclasses and type hints. Do not add runtime type validation.
Prototype: define Point as a frozen dataclass with x: int and y: int, both required. Its generated equality compares coordinates; normal reassignment to a coordinate must fail.
Final: define mutable dataclass Task with title: str (required), done: bool = False, and tags: list[str] with a fresh empty list for each instance. Implement completed_titles(tasks: list[Task]) -> list[str] to return titles for tasks whose done attribute is true, preserving order and duplicates. Do not modify tasks or their tags. Example: [Task("read", True), Task("write")] -> ["read"]. Empty input returns []. Generated dataclass methods, field defaults, and the stated annotations are part of this exercise.
Complete the starter code, then run the checks.
Results and errors will appear here.