Issue #3605274: Add a synchronous execution mode
Adds a synchronous execution mode so a process advances inline, in the same request, instead of waiting for cron to drain the advance queue (issue #3605274).
What
- New
execution_modesetting, site-wide (Orchestra settings) and per workflow (a new Execution tab: inherit / queued / synchronous). - In synchronous mode the engine drains the
orchestra_advancequeue inline after the top-level operation (start, signal, timer fork) commits, so starting a process runs it straight to its first wait or to completion, and completing a human task advances the process at once. - Each inline advance reuses the cron queue worker path (own transaction, same retry/dead-letter handling): synchronous changes only when advancement happens, not how.
- A re-entry depth guard ensures inline draining fires only at the genuine top level (a subprocess start or a parent resume mid-drain does not nest a second drain), and the drain is bounded by a per-request cap (a never-parking loop finishes on the next cron, with a logged warning).
runtime_requirementswarning: if a queued site has work waiting and cron has not run for hours, the status report points to running cron or switching to synchronous.
Tests
SynchronousExecutionTest (inline-to-park, inline-to-completion, queued-no-advance, per-workflow synchronous override, per-workflow queued override). Full engine kernel suite (123) and the inbox/eca/api/ui suites (75) stay green; queued (default) behaviour is unchanged.
Docs
New docs/execution.md (+ nav); roadmap updated.