ManualTag(name) with hand-written __eq__ (comparing name, NotImplemented for foreign types), and AutoTag(name) as a plain @dataclass. Then compare() returns the tuple (ManualTag('x') == ManualTag('x'), AutoTag('x') == AutoTag('x')) — both True, showing what the decorator generates for you.compare()
(True, True)
The dataclass wrote the same __eq__ you wrote manually.
Dataclasses generate __eq__ from the field list.
Return NotImplemented, not False, for foreign types in the manual version.