Skip to content

Release kariricode/contract 2.9.0 to 2.11.0 - #42

Merged
walmir-silva merged 4 commits into
mainfrom
release/2.11.0
Oct 27, 2026
Merged

walmir-silva merged 4 commits into
mainfrom
release/2.11.0

Conversation

@walmir-silva

Copy link
Copy Markdown
Contributor

Four release commits on top of v2.8.6 (3593541), one per release. Every commit's tree is byte-identical to the release tarball verified when it was cut, and no type of an earlier release loses or changes a member (BackwardCompatibilityTest compares Reflection snapshots of 2.8.6, 2.9.0 and 2.10.0).

Commit Release Content Tarball SHA-256
c4682f2 2.9.0 CircuitBreaker, CallNotPermittedException, EnvironmentResolver, ValueProcessor, ConfigProvider; PHP ^8.4; inherited tooling removed (ADR-001 to ADR-003) 86b11923…2946217
74e3b89 2.10.0 Resilience ports: RateLimiter, RateLimitDecision, CallPermit, ManualCircuitBreaker, RetryPolicy (ADR-004) 7197a543…6cbb4
00190fb 2.10.1 Documentation and conformance only: ADR-004 amendment, side effects (C3), extra.asvs f70bc530…5bf6ed
62dea5b 2.11.0 Exception families, ServiceProvider + BindableContainer, Identity, ContextStorage, SerializableData; DI deprecations; lock file, SBOM and CI (ADR-005, ADR-006) 8d704cd5…ebddf16e

Verification before the push

  • Each commit compared file by file (mode and blob hash) with its tarball: identical.
  • 2.11.0, clean install from the tarball: 260 tests and 3,938 assertions; PHPStan level max, Psalm level 2 and level 1 (new source), PER-CS 2.0: no findings.
  • composer audit --locked on the 2.11.0 lock today: no advisories. The 21 advisories behind the current Dependabot alerts come from the 2.8.6 development lock, which 2.9.0 removes.
  • This pull request is the first run of .github/workflows/ci.yml on GitHub (QD-V40-COMPLIANCE §1).

Merging and tags

  • Do not squash: each release commit is meant to carry its own tag. "Create a merge commit" or a fast-forward of main keeps the SHAs above; "Rebase and merge" rewrites them.
  • No tag is part of this pull request. Signed tags (git tag -s) come after the merge; tagging only v2.11.0 is also valid, since ^2.9 and ^2.10 accept it.

Found after 2.11.0 was cut (no API change)

Conventions the other V4.3.3 components adopted after this release; worth settling before the v2.11.0 tag:

  • Composer metadata under extra.kariricode.{arfa, asvs, spec} (Spec V4.3.3 §4, E-044) instead of the V4.0 top-level extra.arfa and extra.asvs.
  • Coding standard @PER-CS3x0, the closest set to the PER-CS 3.1 that E-045 and E-046 require, instead of @PER-CS2.0.
  • kariricode/async-helper was renamed kariricode/async-primitives, and its Retry\BackoffRetryPolicy already implements RetryPolicy; README, SPEC-001, ADR-004 and the QD still describe it as planned.
  • Quality record named after the Spec it is checked against (QD-V433-COMPLIANCE.md), and the readonly-hooks erratum cited as E-040.

Generated by Claude Code

claude and others added 4 commits October 27, 2026 05:25
Additive release over 2.8.6 (ADR-001 to ADR-003). Every 2.8.6 type keeps
its name, namespace and signature; BackwardCompatibilityTest compares the
public API with a Reflection snapshot of the 2.8.6 dist. Only docblock
tags (@Package, @author, @license) left the inherited source.

Added
- Resilience\CircuitBreaker and Resilience\CallNotPermittedException,
  implemented by kariricode/circuit-breaker 4.0.0.
- Environment\EnvironmentResolver, Configuration\ValueProcessor and
  Configuration\ConfigProvider (Configurator ADR-007), without the
  Interface suffix.
- Suites inherited, unit, compatibility and conformance; PHPStan level
  max and Psalm with baselines limited to inherited files; PER-CS 2.0
  for new code.
- README, CHANGELOG, docs index, ADR-001 to ADR-003, SPEC-001 and
  QD-V40-COMPLIANCE.

Changed
- Requires PHP ^8.4 (interface properties); projects on PHP 8.3 keep
  resolving 2.8.x.

Removed
- Inherited tooling: .docker, .github, .vscode, Makefile,
  docker-compose.yml, .env.example, phpinsights.php, phpcs.xml,
  .php-cs-fixer.php, phpunit.xml, composer.lock and README.pt-br.md.

Tree identical to kariricode-contract-2.9.0.tar.gz
(sha256 86b11923ea913650a8c4a3e877be4c734057ace9b40d0e434ba985f1b2946217).

Co-authored-by: Walmir Silva <142913591+walmir-silva@users.noreply.github.com>
Resilience ports for the processor pipeline and the other consumers
(ADR-004). Additive: the 2.8.6 and 2.9.0 APIs are unchanged.

Added
- Resilience\RateLimiter and Resilience\RateLimitDecision, with the
  signatures kariricode/rate-limiter 4.0.0 implements.
- Resilience\CallPermit and Resilience\ManualCircuitBreaker (extends
  CircuitBreaker): acquire a permit, settle it once, or release it.
- Resilience\RetryPolicy: whether to retry and how long to wait.
- The 2.9.0 API snapshot, unit fixtures for each port, and conformance
  checks for the documentation criteria and synchronous signatures.
- psalm-strict.xml: Psalm error level 1 over the source added since
  2.9.0, part of composer check.

Tree identical to kariricode-contract-2.10.0.tar.gz
(sha256 7197a54377da3aaee7d3c0f82f01ff0686e312cf08a8bd099ac6d9c39bc6cbb4).

Co-authored-by: Walmir Silva <142913591+walmir-silva@users.noreply.github.com>
Documentation and conformance only; the API is unchanged and
BackwardCompatibilityTest now also guards the 2.10.0 API.

- ADR-004 amended: the default RetryPolicy becomes an adapter in
  kariricode/async-helper (since renamed kariricode/async-primitives);
  Async's CircuitBreakerBridge is a ManualCircuitBreaker consumer; the
  rate-limiter codes are RL-8300 to RL-8399.
- The five resilience ports document their side effects (criterion C3,
  Spec V4.3.3 section 17); conformance checks criteria C2 to C5.
- composer.json declares extra.asvs next to extra.arfa (gate G4).
- ADR-005 proposed for 2.11.0.

Tree identical to kariricode-contract-2.10.1.tar.gz
(sha256 f70bc53054c28e985e0b6fd4cc21eb9f6e7b4df45e12f8a5c543d169185bf6ed).

Co-authored-by: Walmir Silva <142913591+walmir-silva@users.noreply.github.com>
Cross-cutting contracts required by Spec V4.3.3 (ADR-005) and a
verifiable supply chain (ADR-006). Additive: BackwardCompatibilityTest
checks the 2.8.6, 2.9.0 and 2.10.0 APIs and accepts an added supertype
only when it brings no member.

Added
- Exception\ExceptionInterface and six member-free families:
  Validation, NotFound, Configuration, Protocol, ContainerFailure and
  Runtime.
- DI\ServiceProvider and DI\BindableContainer.
- Security\Identity, Context\ContextStorage and SerializableData.
- Committed composer.lock, composer security (composer audit --locked),
  composer sbom (CycloneDX 1.5) and .github/workflows/ci.yml with
  actions pinned by commit SHA.

Changed
- Resilience\CallNotPermittedException extends Exception\Runtime.

Deprecated
- DI\Provider, DI\Container, DI\Definition and DI\Compiler, for
  removal in 3.0.0; use DI\ServiceProvider with DI\BindableContainer.

Tree identical to kariricode-contract-2.11.0.tar.gz
(sha256 8d704cd57716f8079cbc672750d1782e3fc9b00fa1da6f082f09a704ebddf16e).

Co-authored-by: Walmir Silva <142913591+walmir-silva@users.noreply.github.com>
@walmir-silva
walmir-silva merged commit 62dea5b into main Oct 27, 2026
2 checks passed
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.

2 participants