Skip to content

3.0: deliver the lifecycle, container and HTTP migration #26

Closed

Description

@coisa

Status and delivery

Implemented in PR 3, with the owner authorizing merge after a satisfactory final review. The 2026-10-28 review and current-head results below replace the older readiness snapshots retained in the historical details. The owner has instructed the primary agent to execute the merge if the final review and current-head checks remain satisfactory; no further owner-review decision is being left pending here. This issue remains open until PR 3's native closing link takes effect. Merging a separate generated version PR or publishing a release requires its own authorization.

Approved scope and focused ownership

Scope Contract / tracking
Runtime and container migration PHP 8.3+, package/namespace unchanged, required FastForward Container and Interop provider; remove the internal container, ConfigProvider and Laminas adapter.
Lifecycle Explicit inert construction, callback ownership/restoration, registered reporting/reentry policy, uncaught exit behavior, cached process services and fresh middleware scopes.
Constructor callables Preserve interface identity/precedence, defaults and callback policies; 70.
HTTP reporting One original private report before a pure request-aware renderer; explicit capture remains opt-in; 95.
HTTP selection and representations Required ServerRequestInterface argument; one provider with Accept negotiation; generic fallback, Symfony public/debug HTML, Serializer Problem Details for both JSON media types, explicit optional Whoops; 8.
Terminal diagnostics Explicit SymfonyCliThrowableHandler and provider cli flag, optional Console output, one exception-capture owner; independently reviewable from HTTP negotiation.
PSR-14 composition Preserve the concrete delivery correction in 110. Exercise it with the published FastForward EventDispatcher provider/configuration API; its recipe package is a development dependency.
Dependency and documentation integration Latest compatible supported stable graphs and proven security floors; source PHPDoc, regression tests, complete recipes, docs/site/consumer skill and independently classified pending notes.

Normal bootstrap is container($application, ErrorHandlerServiceProvider::class).
The single provider owns its own definitions; it does not instantiate or merge other library providers. Trusted debug controls JSON/HTML details, while cli separately opts into terminal reporting. JSON-only requests never choose HTML or CLI, and installed Whoops never changes defaults.

Fast Forward Changelog and Composer-managed development skills are already delivered 2.x foundations. Preserve their current workflow and history; do not restore Changesets.

Final review evidence (2026-10-28)

Candidate: 5744e12bbfdc8cbbbced8fa6b90fbc3b20590ff2, reconciled with master 09d15d11d7af4779c332e000ac084ede1d037ad0.

  • Local PHP 8.5.12: formatting, PHPCS, 492 tests / 3,009 assertions and maximum PHPStan pass; 27 bounded example scenarios and the source-matched site pass.
  • The independent review identified a negotiated HTML charset mismatch. The source factory and explicit Whoops map now advertise their actual UTF-8 encoding; regression coverage verifies HTML UTF-8 preferences, exclusions and selected media parameters. The focused regression set passes 39 tests / 292 assertions.
  • Fresh PHP CI, documentation, style and Changelog results refer to this candidate. Dependency audit reports 0 advisories for the resolved graph. The PHP workflow's 14 jobs pass, and exact-head feedback also succeeds. The site verifies 15 excerpts, 83 links, 30 anchors and 19 recipes; the 85-file archive gate passes. These results do not promise every possible dependency combination.
  • The coverage policy, source scope, diagnostic privacy, one-report boundary and failure propagation were preserved. No tag/release or Pages publication was performed.

Completion criteria

  • Implement the coherent major and the separately approved callable, HTTP, representation and CLI contracts.
  • Reconcile the published 2.5.5 maintenance baseline without rewriting released history or consuming pending major notes.
  • Preserve meaningful tests, the existing coverage policy, dependency security floors, source-matched recipes and consumer guidance.
  • Finish the charset regression correction and capture all current-head local/hosted results above.
  • Merge PR 3 after the satisfactory final review; allow its five native closing links to close the delivered major scopes.

98 and 100 remain separate operational investigations, not omitted 2.x features or blanket major gates. A push to master may prepare a reviewed version PR; merging that version PR and publishing remain separate owner decisions.

Prior-scope delivery record and exact-head evidence (retained; superseded as current readiness)

Status and delivery

Ready for owner review. PR #3 is open and no longer Draft at the validated head c178301. This is not owner code approval, merge or publication.

The coherent major is implemented in PR 3, with Closes #26 and focused scopes in 70, 95 and 110. The current public candidate is c178301, reconciled with master e8341f6 and merged 2.x PR #121. Native PHP, documentation, style, Changelog and feedback checks passed for this exact head. The inherited fragment was restored byte-for-byte; the policy passed without a waiver. Owner review and merge remain pending. Earlier evidence remains tied to its recorded commit.

Approved scope

  • Keep package coisa/error-handler and namespace CoiSA\ErrorHandler; adopt PHP 8.3+ and required FastForward/Interop composition.
  • Remove the internal container, ConfigProvider and Laminas adapter; preserve deliberate cached services and fresh middleware scopes.
  • Deliver callback ownership/restoration, registered reporting/reentry policy and uncaught-exception exit behavior.
  • Report once before pure HTTP rendering; keep a generic default, explicit capture and released JSON/Whoops profiles.
  • Retain constructor callables, the PSR-14 composition correction, compatible latest-stable dependency refresh, current documentation/examples/skill and one major release note.

Fast Forward Changelog and Composer-managed development skills are already delivered 2.x foundations. Do not resurrect Changesets or mix an unrelated 2.x change into this migration. Request negotiation is later 3.x work #8; 98 and 100 are independent CI investigation/operation items.

Evidence and completion

Current reconciled-head validation

Public head c178301, tree 78454df6, is reconciled with master e8341f6. PHP CI passed all 10 jobs: quality on PHP 8.3–8.5, five selected production highest/lowest graphs and coverage/report. Documentation, style, Changelog and feedback passed at the same head.

The coverage report records 97.16% → 96.86% (-0.30 percentage points), the unchanged 80% floor, and tested merge commit b3c206a32ff2a4a3bf0f3cac918502fa7872a61c. Local validation passed 355 tests / 1843 assertions and 21 examples, with site/archive and selected production-consumer checks. Nine review threads are resolved; there is no submitted owner approval of this head. The remaining gate is the owner's code review and merge decision.

e267 PHP CI passed all 10 jobs: PHP 8.3–8.5 quality, production highest/lowest and coverage. Docs, style, Changelog and feedback passed. Local check352 tests / 1828 assertions and 21 examples passed; coverage 96.86% exceeds the unchanged 80% floor. Nine review threads were resolved. CLI 0.3 rehearsal selected 3.0.0 while preserving 25 historical versions/footer links, without publication.

  • Implement and test the approved migration and focused scopes.
  • Reconcile current master and PR fix(http): adopt Whoops virtual-source fix in 2.x #121 in public head c178301. Local check passed 355 tests / 1843 assertions; 21 examples, site/archive and selected production graphs passed, including optional Whoops absence and rejection of older Whoops.
  • Record fresh native checks for c178301. Owner review remains the next criterion.
  • Obtain the owner's final review and merge decision.

Owner merge, reviewed version-PR approval, tag/release publication and Pages remain separate decisions. This issue stays open for PR 3's accepted delivery.

Decision history and evidence limits

The owner selected one coherent major in PR 3, organized into focused commits, after draining compatible features through 2.5.x. Earlier milestones e9fe523, 98eba68 and 7ebd1f4 retain their original source/test identities; their checks are not validation of later code.

The owner approved the maximum compatible stable dependency graph while preserving PHP 8.3. That means keeping PHP 8.3-compatible tooling alternatives when a globally newer tool requires a newer PHP, and preserving demonstrated patch-floor exceptions. Selected minimum/maximum consumers are evidence for those actual graphs, not every solver combination.

Future 2.x maintenance needs an explicitly selected maintenance reference once master moves to 3.x. This issue neither creates that branch nor makes historical documentation housekeeping a major blocker.

Activity

  1. changed the title [-]Deliver the remaining major API, container and lifecycle changes after compatible extractions[/-] [+]Deliver the coherent 3.0 API, lifecycle and container migration[/+] on Oct 17, 2026
  2. added this to the 3.0 milestone on Oct 17, 2026
  3. changed the title [-]Deliver the coherent 3.0 API, lifecycle and container migration[/-] [+]3.0: deliver the lifecycle, container and HTTP migration[/+] on Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions