Skip to content

P1: public API: schedule the one coordinated protocol break, or declare these types frozen #618

Description

@macanderson

What decision this asks for

Decide whether stella takes one coordinated, versioned protocol break — and if so, which of the 33 rows below ride it. Every item here was deferred by the same sentence in a different crate: "that is a public API change" or "that changes the JSON round-trip shape invariant 4 protects." They cannot be triaged one at a time, because each one alone pays the full compile-and-fix cost across stella-model's six adapters, stella-store's schema, the replay fixtures and the TUI. The opposite answer is equally valid and much cheaper: declare these types frozen, close the rows that are only taste, and keep the documented-trap workarounds that already landed.

Spot-checked against origin/main @ 092b2dda: items 2, 5, 11, 12, 21, 25, 31, 32 and 33 confirmed still open. Line numbers below are updated where they have drifted since the audit.

Items

Why these are together

One shared blocker, one shared cost. Each row was stopped by the same sentence in a different crate — that is a public API change, or that changes the JSON round-trip shape invariant 4 protects — and each one alone would pay the full compile-and-fix bill across stella-model's six adapters, stella-store's schema, the replay fixtures and the TUI. Triaging them one at a time means paying that bill up to 33 times, or (more likely) never paying it and letting each row rot separately. The useful unit of decision is the break itself: one versioned bump, one migration note, and an explicit list of which rows ride it — with everything left over closed as "frozen, by design."

Deferred during the #546 audit remediation. Put Closes #618 in the PR description and as a commit trailer when it lands.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Polish — worth doing, not urgentarea:protocolstella-protocol — shared types & ports

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions