At alejandro-ao/tau, public PR #375 is rewriting a legacy agent protocol around cleaner events, named tool calls and a more regular extension API. The hard question is whether a conversation already sitting in storage can make the crossing.
alejandro-ao/tau's public pull request #375 answers that question unusually directly. It replaces the project's legacy runtime contract with Pi 0.80.6-compatible message, provider, event, tool, session, extension, and frontend shapes—and separately carries Tau-v1 session records across the change.
The revealing move is not an adapter sprinkled through every caller. In Tau's JSONL reader, old persisted messages are migrated before the new canonical models validate them. A former custom user message becomes a custom message; an assistant's string content and tool calls become ordered content blocks; an old tool result gains the fields the newer shape expects. The live runtime can stay strict because the apology to history happens in one place.
Keep the new contract strict
The same change makes the break deliberate for the code that is supposed to be current. Tau's event union now carries canonical nested updates and names tool-call IDs, tool names, arguments and result state. Its focused contract tests assert the message and tool lifecycle that a harness sees. The extension guide says handlers receive a fresh (event, context) pair, rather than an ambient, long-lived object. That is a maintenance choice: the current contract should be unambiguous even if the stored past needs translation.
Compatibility is a target, not a treaty
Pi's public documentation makes extensions a real surface for tools, commands, event handlers and UI components, so Tau's choice to follow that shape has practical meaning for builders. But the evidence only shows Tau's implementation decision. It does not show a jointly governed standard, Pi's endorsement, or a working third-party extension that can be dropped into both projects. The next useful receipt is not another compatibility claim; it is a public fixture or independently maintained extension that tests where the two boundaries really meet.