Follow-up to #3608380: Finish the engine architecture: role contract interfaces, a TimeoutSweeper service, a stateless executor and unit coverage for the leaf services, which introduced ProcessControlInterface, IncidentActionsInterface and RecoveryInterface with WorkflowEngineInterface extending all three. The submodule consumers (orchestra_inbox, orchestra_eca, orchestra_api, orchestra_content, the interaction stack, the UI) still type-hint the full aggregate.
Sweep every consumer to declare only the role it uses (almost all need ProcessControlInterface alone, and most of those only a method or two). A mechanical, per-consumer change with no behavior impact: it makes each module's actual engine dependency visible and its tests easier to mock, and it should land before 1.0 freezes the contract.
Issue fork orchestra-3608384
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #3
mably commentedOpened MR !282: 21 consumers across the root module and the submodules narrow to ProcessControlInterface; the two orchestra_ui classes that genuinely mix roles keep the aggregate. The sweep exposed one real gap, fixed here: autowired hook classes resolve constructor hints by interface name, so the three role interfaces gained container aliases to orchestra.engine.
No behavior change. Verified locally: root kernel plus unit (196), the kernel suites of every touched submodule (202), all Functional in Docker (37), phpcs and cspell.
Comment #5
mably commented