redhat-developer / redhat-developer/rhdh-plugins
Clarify changeset bump guidance for TypeScript-level breaking type changes
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 48
- Forks
- 120
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 337
Description
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:
majorfor breaking API changes that affect runtime behavior or remove existing capabilities (removed exports, narrowed types, removed required fields, dropped support).minoris acceptable for additive or widening type changes on@publicinterfaces that maintain runtime/JSON compatibility (new optional or required fields on response types, type widening fromstringtostring | 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 https://github.com/redhat-developer/rhdh-plugins/pull/4582
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with .fullsend/AGENTS.md and compare its changeset guidance with the metric-collectors-endpoint precedent and PR #4582. Confirm with maintainers whether TypeScript-only additive or widening changes should receive minor or major bumps, then update the guidance accordingly. Done means the policy is explicit and the next three relevant PRs follow it without incorrect missing-version-bump findings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- developer-experience, documentation
- Issue type
- Documentation
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100