Problem/Motivation

The shared SuppressionPolicyInterface and SourceContext already provide an extension point, but stable adopters need an explicit statement of which interfaces, service aliases and structured outputs carry backward-compatibility commitments.

Proposed resolution

Document the existing public surface and mark implementation details internal. Review contracts before the first stable tag without redesigning working APIs or adding speculative abstractions.

Acceptance criteria

  • Specify decide() inputs, SourceContext trust boundary, decision reasons, time basis, expiry and failure behavior, including disabled suppression.
  • Identify supported service/interface aliases and the compatibility policy for Drush JSON output, reason codes and configuration.
  • Document deprecation and migration expectations for future 1.x changes and distinguish public APIs from storage internals.
  • Provide a small external-consumer example and meaningful contract tests for supported behavior.
  • Confirm core-mail and Mailer Plus adapters obey the documented contract.

Scope and dependencies

Stable-release acceptance task under #3621224: Complete the 1.0.0 stable release verification gates. Builds on #3621126: Add a shared suppression decision service with a stable extension API; the completed original issue remains fixed.

Comments

jmcerda created an issue. See original summary.

  • jmcerda committed a1ceb19c on 1.x
    Issue #3621229: Document and test the 1.x public API contract
    
    Record...
jmcerda’s picture

Status: Active » Fixed

Merged to 1.x. The 1.x public suppression contract is documented and covered by an external-consumer example with contract tests. Implementation classes are marked internal. Core mail and the Mailer Plus adapter keep using the public interface.

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.