@@ -242,6 +242,15 @@ Authority:
242242 ` Workflow\V2\Support\ScheduleManager ` when invoked by an
243243 authenticated operator.
244244
245+ Canonical implementation surface:
246+
247+ - ` Workflow\V2\Contracts\SchedulerRole ` and
248+ ` Workflow\V2\Support\DefaultSchedulerRole ` own the scheduler-role
249+ tick entrypoint exposed by ` workflow:v2:schedule-tick ` .
250+ - ` Workflow\V2\Support\ScheduleManager ` and
251+ ` Workflow\V2\Contracts\ScheduleWorkflowStarter ` remain the
252+ schedule-lifecycle and scheduled-start boundary inside that role.
253+
245254Guarantees:
246255
247256- The scheduler is the ** only** role authorised to fire scheduled
@@ -467,16 +476,20 @@ each step independently.
467476 an out-of-process adapter can replace the binding without
468477 patching the package. Today's bindings are
469478 ` WorkflowControlPlane ` , ` OperatorObservabilityRepository ` ,
470- ` MatchingRole ` , ` HistoryProjectionRole ` , ` WorkflowTaskBridge ` ,
471- ` ActivityTaskBridge ` , ` LongPollWakeStore ` , and the scheduler's
479+ ` MatchingRole ` , ` HistoryProjectionRole ` , ` SchedulerRole ` ,
480+ ` WorkflowTaskBridge ` , ` ActivityTaskBridge ` ,
481+ ` LongPollWakeStore ` , and the scheduler's
472482 ` ScheduleWorkflowStarter ` . The matching role now crosses the
473483 queue-loop wake and dedicated daemon entrypoints through
474484 ` DefaultMatchingRole ` , so a future out-of-process adapter can
475485 replace that binding without patching ` Looping ` listeners or
476486 ` workflow:v2:repair-pass ` . The history/projection role now
477487 crosses the matching seam through ` DefaultHistoryProjectionRole ` ,
478488 so a future out-of-process adapter can replace that binding
479- without patching the claim paths.
489+ without patching the claim paths. The scheduler role now crosses
490+ ` workflow:v2:schedule-tick ` through ` DefaultSchedulerRole ` , so a
491+ future out-of-process adapter can replace that binding without
492+ patching the command entrypoint.
4804933 . ** Introduce the dedicated matching shape.** The Phase 3
481494 contract already allows a dedicated matching role; Phase 4
482495 provides the deployment guidance for running it as a separate
0 commit comments