Skip to content

Clarify changeset bump guidance for TypeScript-level breaking type changes #4652

Description

@fullsend-ai-retro

What happened

PR #4582 added a required field to ScalarAggregationResult and widened aggregationChartDisplayColor from string to string | null on WeightedStatusScoreAggregationResult — both @public exports. The review agent flagged these as breaking changes requiring a major bump per the repo's .fullsend/AGENTS.md guidance ("major for breaking API changes — removed exports, changed interfaces, dropped support"). The PR author updated the changeset to describe the changes as "BREAKING" but kept the bump at minor. The review agent's own style conventions sub-agent then found project precedent (the metric-collectors-endpoint changeset) for using minor for this class of change. Two human reviewers approved without addressing the semver concern. The PR was merged with a minor bump on Sep 9.

What could go better

The .fullsend/AGENTS.md changeset guidance says major for "changed interfaces" but the repo's actual practice allows minor for TypeScript-level type additions and widenings that maintain runtime/JSON compatibility. This ambiguity caused the review agent to raise the same missing-version-bump finding across 5+ review passes — a finding that was technically correct per the documented policy but incorrect per established practice. The repeated false-positive wasted review budget (~$32+ across 8 runs, with the semver concern contributing to noise in each pass) and trained reviewers to ignore agent findings. Confidence: high — the evidence is clear from both the documented policy, the established precedent found by the style sub-agent, and the human reviewers' decision to merge with minor.

Proposed change

Update the changeset bump guidance in .fullsend/AGENTS.md to distinguish between different categories of interface changes. Specifically, after the existing major bullet, add clarification such as:

  • major for breaking API changes that affect runtime behavior or remove existing capabilities (removed exports, narrowed types, removed required fields, dropped support).
  • minor is acceptable for additive or widening type changes on @public interfaces that maintain runtime/JSON compatibility (new optional or required fields on response types, type widening from string to string | null) — these are TypeScript compile-time breaking but runtime-compatible.

Alternatively, if the maintainers intend strict semver for TypeScript consumers, reinforce the current major guidance and update the metric-collectors-endpoint precedent to match. Either resolution eliminates the ambiguity.

Validation criteria

On the next 3 PRs that widen types or add required fields to @public interfaces in this repo, the review agent should not flag the bump level as incorrect when the changeset follows the updated guidance. The missing-version-bump finding should only appear when the bump genuinely violates the clarified policy.


Generated by retro agent from #4582

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions