Skip to content

gate: released public-surface compatibility (dts, CLI/MCP schemas, daemon RPC, persisted formats) #1432

Description

@thymikee

Part of #1412 (Track E — gate integrity). From external review: #1417 protects only the .ad grammar. The other released surfaces have existence checks but no compatibility checks — src/tests/package-exports.test.ts proves exports exist and build, not that signatures remained compatible.

Deliverables

  • npm declaration surface: diff the public .d.ts surface against the LAST SHIPPED TAG (api-extractor report or an equivalent dts snapshot), with an explicit intentional-break acknowledgment file for major-version changes. Baseline is the released tag, never arbitrary git history.
  • CLI --json and MCP structured-output schemas: snapshot representative command envelopes (reuse provider-scenario transcripts as the source of truth) and fail on incompatible shape changes without an ack.
  • Daemon RPC: the protocol version already exists (CONTEXT.md, daemon/proxy /health) but nothing enforces bumps. Hash the wire request/response type declarations; a hash change without a protocol-version bump (or an explicit compatible-change ack) fails.
  • Persisted config/session formats: fixture files from released versions must load or fail with the intended migration error (same corpus idiom as test: frozen replay-compat corpus with expected verdicts #1417).

Acceptance

  • An incompatible public dts change without an ack fails a PR gate naming the symbol.
  • A wire-type change without an RPC version bump fails.
  • The release process doc gains one paragraph: how baselines roll forward on publish.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions