Skip to main content

19. Design decisions

DecisionReason
Definitions are JSON data, not codeA new workflow is a file and a pipeline run, not a deployment. Data model changes touch tool specs, not definitions.
One interpreter orchestration for all workflowsOne code path to test, version, and operate.
Durable Task Scheduler for live stateDurability, timers, external events, sub-orchestrations, and per-run serialisation come from the service. No lock, sweeper, or reconciliation code.
Azure SQL for definitions and historyThe organisation's system of record; queryable; mirrors to Fabric.
Service Bus for worker queuesLock, delay, dead-letter, sessions, and autoscaling signals come from the service.
Workers pull workWorkers run anywhere with outbound HTTPS. The engine needs no route or credential to them.
Tools through the gateway onlyOne place for authentication, per-workflow scope, quotas, and audit.
A model proposes, the engine executesA model never calls a tool directly. The call is a separate task, so a gate or check can sit between them.
Human gate before write-tier tools, enforced at registrationThe safety rule is structural, not a prompt instruction.
No script tasks in definitionsLogic stays in tested code: workers, the action service, connectors.
Fixed Azure services, no provider abstractionFewer interfaces to maintain. Each service is the one the organisation already operates.
External agents called as one step through the gatewayAn agent hosted elsewhere is reused without rebuilding it in a definition. The gateway keeps identity, scope, and audit the same as for tools.