Skip to content

#180 - Mark the classes not meant to be extended @final and the infrastructure classes @internal - #183

Merged
njoubert-cleverage merged 2 commits into
mainfrom
180
Oct 19, 2026
Merged

njoubert-cleverage merged 2 commits into
mainfrom
180

Conversation

@njoubert-cleverage

Copy link
Copy Markdown
Member

Description

Fixes #180. Same model as cleverage/process-bundle#279: annotations only, so that the classes not meant to be extended can become final in 4.0.

  • @final since 3.3 (final in 4.0): ProcessExecutionManager, ProcessExecutionRepository, ProcessScheduleRepository, ProcessExecuteMessage, ProcessExecutionNotification, CleverAgeUiProcessBundle. Extending them triggers a deprecation with the Symfony DebugClassLoader.
  • Stay open: the entities (overriding them is Allow entities overriding #37, v4.0); the classes already final are unchanged.
  • @internal: the extension, Configuration, the commands, the controllers, the EasyAdmin fields and filters, the form types, the Messenger handlers, the Monolog handlers, HttpProcessExecuteValueResolver, HttpProcessExecutionAuthenticator, ProcessExecutionStopChecker, CronScheduler, ProcessEventSubscriber, the Twig extensions, runtimes and components.

Checked in the container (composer update, PHP 8.5): PHPUnit with pcov, PHPStan, PHP-CS-Fixer and Rector OK.

Requirements

  • Documentation updates
    • Reference
    • Changelog
  • Unit tests

Breaking changes

None in 3.3: annotations only (extending a @final class triggers a deprecation). Major (4.0): the @final classes become final, the @internal classes are not covered by the BC promise.

🤖 Generated with Claude Code

njoubert-cleverage and others added 2 commits October 19, 2026 11:51
…structure classes @internal

- @Final since 3.3 (final in 4.0): `ProcessExecutionManager`, `ProcessExecutionRepository`, `ProcessScheduleRepository`, `ProcessExecuteMessage`, `ProcessExecutionNotification`, `CleverAgeUiProcessBundle`. Extending them triggers a
  deprecation with the Symfony DebugClassLoader.
- Stay open: the entities (overriding them is #37, v4.0); the classes already `final` are unchanged.
- @internal: the extension, `Configuration`, the commands, the controllers, the EasyAdmin fields and filters, the form types, the Messenger handlers, the Monolog handlers, `HttpProcessExecuteValueResolver`, `HttpProcessExecutionAuthenticator`, `ProcessExecutionStopChecker`, `CronScheduler`, `ProcessEventSubscriber`, the Twig extensions, runtimes and components.
- Same model as cleverage/process-bundle#279.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@njoubert-cleverage
njoubert-cleverage merged commit 12547ca into main Oct 19, 2026
25 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.

Define the public API: mark classes @final or @internal

1 participant