Skip to content

docs: require explicit sign-off before adding new public API surface - #447

Merged
twcclegg merged 2 commits into
mainfrom
docs/require-signoff-for-new-public-api
Aug 31, 2026
Merged

docs: require explicit sign-off before adding new public API surface#447
twcclegg merged 2 commits into
mainfrom
docs/require-signoff-for-new-public-api

Conversation

@twcclegg

@twcclegg twcclegg commented Aug 31, 2026

Copy link
Copy Markdown
Owner

Summary

EnablePackageValidation only catches breaking removals/signature changes against the baseline — it has nothing to say about new public members, so a new public type/method/property can ship with zero automated pushback. Both IMetadataLoader/MetadataManager.SetMetadataLoader and PhoneNumberUtil.PrewarmRegionsAsync were added this way — each justified in the moment by "matches an existing precedent" reasoning — and both are now being reconsidered as possibly-unwarranted API-surface growth that, having shipped, can now only be walked back as a breaking change.

Adds one line to CLAUDE.md: adding new public API surface to PhoneNumbers gets the same explicit-decision treatment as removing it — it should never ride along as a side effect of an unrelated task's own justification, no matter how well it matches an existing pattern.


EnablePackageValidation only catches breaking removals/signature changes
against the baseline - it has nothing to say about new public members, so
a new public type/method/property can ship with zero automated pushback.
Both IMetadataLoader/MetadataManager.SetMetadataLoader and
PhoneNumberUtil.PrewarmRegionsAsync were added this way, each justified in
the moment by "matches an existing precedent" reasoning, and both are now
being reconsidered as possibly unwarranted API-surface growth that can
only be removed as a breaking change.

Adding new public API surface should get the same explicit-decision
treatment as removing it, not ride along as a side effect of an unrelated
task's own justification.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WVGRJyQwtvBGXAmWswxyqW
@codecov

codecov Bot commented Aug 31, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.26%. Comparing base (d0eaf81) to head (fa0dce3).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #447   +/-   ##
=======================================
  Coverage   87.26%   87.26%           
=======================================
  Files          41       41           
  Lines        3831     3831           
  Branches      978      978           
=======================================
  Hits         3343     3343           
  Misses        284      284           
  Partials      204      204           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Extensions exists specifically to grow with C#-idiomatic helpers beyond
Java's API surface - that's its whole purpose, unlike the main library
which tracks Java's API shape closely. The break-glass concern is about
unplanned deviation from Java parity in the core port, not about the
package that's explicitly meant to add things Java doesn't have.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WVGRJyQwtvBGXAmWswxyqW
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants