Skip to content
Registry StackDocsDevelopment (unreleased)

Registry Coordinator configuration reference

View as Markdown

Registry Coordinator reads three files: the workflow.yaml project you author, the scenarios.yaml cases coordinatorctl test runs, and the runtime.yaml an operator deploys.

FileKindStatusSource
workflow.yamlCoordinatorProjectPre-1.0, may changeproject.schema.json
scenarios.yamlCoordinatorScenariosPre-1.0, may changescenarios.schema.json
runtime.yamlCoordinatorRuntimeConfigPre-1.0, may changeruntime.schema.json

JSON Schema is not the acceptance path: a document these schemas accept still has to pass coordinatorctl check, which resolves operation aliases, mapping paths, step routes, and completion references no schema can express (Author a Coordinator workflow).

Three rules in runtime.yaml are written as exclusions the tables do not show. A policy under deployment.authentication.policies whose actions are all deployment-wide (doctor, restore-hold, release-restore-hold, release-admission-hold, complete-execution-recovery, and retain) omits workflows, and every other policy sets it. On a type: scheduling connection, observationAuthorization is required when authorization.taskAuthority is set and omitted otherwise. On a type: external-http connection, authorization.taskAuthority is refused. The project and scenarios schemas carry no such rule.

A key path writes a property as name, an array item as name[], and a map entry whose name you choose as name.*, as in workflow.steps.*.next or operations.*.uses.

workflow.yaml

Source preview, pre-1.0

Generated from products/coordinator/generated/project/project.schema.json. 165 key paths. Explained in docs/site/src/content/docs/reference/coordinator-configuration.mdx.

Key pathTypeRequiredAccepted valuesConstraints
apiVersionThe format and version this document is written in.stringYes
  • id.registrystack.org/formats/coordinator/project/v1alpha1
None specified
contractsGenerated local public product contracts imported at compile time; no runtime discovery occurs.objectNoNot specifiedNone specified
contracts.*Map valueobjectNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
contracts.*.sourceA generated JSON artifact inside the project directory.stringYesNot specifiedNone specified
contracts.*.typeThe producer of this generated public contract artifact.stringYes
  • breg
None specified
descriptionAn optional explanation for readers; it has no execution or authorization effect.stringNoNot specifiedNone specified
functionsNamed typed bounded pure computations over one object of named inputs.objectNoNot specified
  • maxProperties: 128
  • minProperties: 0
functions.*Map valueobjectNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
functions.*.descriptionAn optional explanation for readers; it has no execution or authorization effect.stringNoNot specifiedNone specified
functions.*.entrypointOne public source function taking exactly one named-input object.stringYesNot specifiedNone specified
functions.*.inputsNamed input schemas or references; every declared input is required exactly once.objectYesNot specified
  • maxProperties: 16
functions.*.inputs.*Map valueA whole JSON Schema or one compile-time schema reference. Schema keywords retain their independently owned JSON Schema spelling.Not specifiedNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
functions.*.limitsOptional narrowing of the bounded pure profile; omitted limits retain the default ceiling.objectNoNot specifiedNone specified
functions.*.limits.arrayItemsMaximum array entries, from 1 to the 256-entry profile ceiling.integerNoNot specified
  • format: uint32
  • maximum: 256
  • minimum: 1
functions.*.limits.callLevelsMaximum nested calls, from 1 to the 32-level profile ceiling.integerNoNot specified
  • format: uint32
  • maximum: 32
  • minimum: 1
functions.*.limits.expressionDepthMaximum expression nesting, from 1 to the 64-level profile ceiling.integerNoNot specified
  • format: uint32
  • maximum: 64
  • minimum: 1
functions.*.limits.mapEntriesMaximum object entries, from 1 to the 256-entry profile ceiling.integerNoNot specified
  • format: uint32
  • maximum: 256
  • minimum: 1
functions.*.limits.operationsMaximum interpreter operations, from 1 to the 100000-operation profile ceiling.integerNoNot specified
  • format: uint32
  • maximum: 100000
  • minimum: 1
functions.*.limits.sourceBytesMaximum source bytes, from 1 to the 65536-byte profile ceiling.integerNoNot specified
  • format: uint32
  • maximum: 65536
  • minimum: 1
functions.*.limits.stringBytesMaximum string bytes, from 1 to the 16384-byte profile ceiling.integerNoNot specified
  • format: uint32
  • maximum: 16384
  • minimum: 1
functions.*.outputThe declared result schema or mapping; Functions and the host enforce it.Not specifiedYesNot specifiedNone specified
functions.*.runtimeThe pinned pure runtime; rhai has no clock, network, database or credential capability.stringYes
  • rhai
None specified
functions.*.sourceA local reviewed source asset inside the project directory.stringYesNot specifiedNone specified
functions.*.titleAn optional human title; it changes neither stable identity nor behavior revision.stringNoNot specifiedNone specified
kindThe kind of document this is.stringYes
  • CoordinatorProject
None specified
operationsLocal aliases for exact versioned host Operations and logical deployment connections.objectNoNot specified
  • maxProperties: 64
  • minProperties: 0
operations.*Map valueobjectNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
operations.*.actionAn exact BReg Action specialization from one generated contract import.objectNoNot specifiedNone specified
operations.*.action.contractThe local generated contract import that owns this definition.stringYesNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
operations.*.action.idThe exact definition ID within that generated contract.stringYesNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
operations.*.completionsNamed bounded completion contracts; the host enforces their observation semantics.objectNoNot specifiedNone specified
operations.*.completions.*Map valueRepeats the accepted read under host-owned transport and credentials.objectNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
operations.*.completions.*.interpretThe typed pure Function that turns the saved command and response into an observation.stringYesNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
operations.*.completions.*.intervalSecondsSeconds between pending observations; the host may impose a stricter minimum.integerYesNot specified
  • format: uint32
  • maximum: 86400
  • minimum: 1
operations.*.completions.*.typestringYes
  • bounded-poll
None specified
operations.*.connectionThe logical deployment connection. It grants no authority.stringYesNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
operations.*.descriptionAn optional explanation for readers; it has no execution or authorization effect.stringNoNot specifiedNone specified
operations.*.responseSchemaAn optional typed response specialization for the bounded external GET Operation.Not specifiedNoNot specifiedNone specified
operations.*.titleAn optional human title; it changes neither stable identity nor behavior revision.stringNoNot specifiedNone specified
operations.*.usesOne exact versioned host catalog contract.stringYes
  • breg.invoke-action/v1
  • breg.read-record/v1
  • casework.cancel-review-request/v1
  • casework.submit-review-request/v1
  • evaluation.evaluate/v1
  • external.get/v1
  • messaging.submit-message/v1
  • scheduling.create-appointment/v1
  • scheduling.read-availability/v1
  • scheduling.read-service/v1
None specified
projectThe shared Project identity; its version is a human release label, not the computed Workflow revision.objectYesNot specifiedNone specified
project.idThe stable Workflow API name, also the enclosing Project ID.stringYesNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
project.versionThe human release label; it is distinct from the computed Workflow revision.stringYesNot specified
  • maxLength: 64
  • minLength: 1
  • pattern: ^[A-Za-z0-9_-]+$
titleAn optional human title; it changes neither stable identity nor behavior revision.stringNoNot specifiedNone specified
typesReusable named JSON Schemas, referenced with typeRef in whole-schema positions.objectNoNot specified
  • maxProperties: 128
  • minProperties: 0
types.*Map valueA whole JSON Schema or one compile-time schema reference. Schema keywords retain their independently owned JSON Schema spelling.Not specifiedNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
workflowThe one finite acyclic Workflow graph this project defines.objectYesNot specifiedNone specified
workflow.deadlineSecondsMaximum seconds from Run admission to expiry, from 1 to 31536000.integerYesNot specified
  • format: uint32
  • maximum: 31536000
  • minimum: 1
workflow.eventTriggersOptional authenticated product-event starts keyed by stable trigger ID.objectNoNot specified
  • maxProperties: 16
  • minProperties: 0
workflow.eventTriggers.*Map valueobjectNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.eventTriggers.*.dataSchemaExact producer data-schema identifier accepted by this trigger.stringYesNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
workflow.eventTriggers.*.eventSchema for the complete authenticated event envelope before input mapping.Not specifiedYesNot specifiedNone specified
workflow.eventTriggers.*.eventTypeExact producer event type accepted by this trigger.stringYesNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
workflow.eventTriggers.*.inputOrdinary typed Mapping from the event envelope to Workflow start input.objectYesNot specifiedNone specified
workflow.eventTriggers.*.input.fieldsObject members built from typed references or literals.objectConditionalNot specified
  • maxProperties: 64
workflow.eventTriggers.*.input.fields.*Map valueFor input: Reads the Workflow input. For step: Reads an earlier accepted call or completed wait on every incoming route. For literal: Supplies one bounded literal JSON value.objectConditionalNot specified
  • propertyNames.maxLength: 512
  • propertyNames.minLength: 1
  • propertyNames.pattern: ^[A-Za-z][A-Za-z0-9_-]{0,63}$
  • propertyNames.pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
workflow.eventTriggers.*.input.fields.*.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.eventTriggers.*.input.fields.*.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.eventTriggers.*.input.fields.*.typestringConditional
  • input
  • literal
  • step
None specified
workflow.eventTriggers.*.input.fields.*.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.eventTriggers.*.input.functionA declared pure Function called with an object of named inputs.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.eventTriggers.*.input.inputsNamed input schemas or references; every declared input is required exactly once.objectConditionalNot specified
  • maxProperties: 16
workflow.eventTriggers.*.input.inputs.*Map valueFor input: Reads the Workflow input. For step: Reads an earlier accepted call or completed wait on every incoming route. For literal: Supplies one bounded literal JSON value.objectConditionalNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.eventTriggers.*.input.inputs.*.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.eventTriggers.*.input.inputs.*.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.eventTriggers.*.input.inputs.*.typestringConditional
  • input
  • literal
  • step
None specified
workflow.eventTriggers.*.input.inputs.*.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.eventTriggers.*.input.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.eventTriggers.*.input.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.eventTriggers.*.input.typestringYes
  • fields
  • function
  • input
  • literal
  • step
None specified
workflow.eventTriggers.*.input.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.eventTriggers.*.sourceLogical producer binding declared in runtime eventSources.stringYesNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.inputThe typed Workflow start input, or a mapping supplying the called Operation input.Not specifiedYesNot specifiedNone specified
workflow.outcomesNamed terminal result schemas used by finish Steps.objectYesNot specified
  • maxProperties: 64
  • minProperties: 1
workflow.outcomes.*Map valueA whole JSON Schema or one compile-time schema reference. Schema keywords retain their independently owned JSON Schema spelling.Not specifiedNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.startThe stable Step ID every Run begins at.stringYesNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.stepsSteps keyed by stable ID; map ordering has no execution meaning.objectYesNot specified
  • maxProperties: 64
  • minProperties: 1
workflow.steps.*Map valueFor wait-until: Waits until a computed RFC 3339 instant. For wait-for: Observes one named completion of an earlier accepted call. For call: Calls one resolved Operation alias under the current connection authority. For choose: Selects one explicit graph edge by a typed case label. For finish: Finishes with one declared typed outcome.objectNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.casesExplicit label-to-Step edges; no implicit fall-through exists.objectConditionalNot specifiedNone specified
workflow.steps.*.cases.*Map valueA local identifier: a lowercase letter, then up to 63 lowercase letters, digits, _, or -.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.chooseA typed mapping producing one of the declared case labels.objectConditionalNot specifiedNone specified
workflow.steps.*.choose.fieldsObject members built from typed references or literals.objectConditionalNot specified
  • maxProperties: 64
workflow.steps.*.choose.fields.*Map valueFor input: Reads the Workflow input. For step: Reads an earlier accepted call or completed wait on every incoming route. For literal: Supplies one bounded literal JSON value.objectConditionalNot specified
  • propertyNames.maxLength: 512
  • propertyNames.minLength: 1
  • propertyNames.pattern: ^[A-Za-z][A-Za-z0-9_-]{0,63}$
  • propertyNames.pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
workflow.steps.*.choose.fields.*.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.choose.fields.*.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.choose.fields.*.typestringConditional
  • input
  • literal
  • step
None specified
workflow.steps.*.choose.fields.*.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.choose.functionA declared pure Function called with an object of named inputs.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.choose.inputsNamed input schemas or references; every declared input is required exactly once.objectConditionalNot specified
  • maxProperties: 16
workflow.steps.*.choose.inputs.*Map valueFor input: Reads the Workflow input. For step: Reads an earlier accepted call or completed wait on every incoming route. For literal: Supplies one bounded literal JSON value.objectConditionalNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.choose.inputs.*.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.choose.inputs.*.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.choose.inputs.*.typestringConditional
  • input
  • literal
  • step
None specified
workflow.steps.*.choose.inputs.*.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.choose.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.choose.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.choose.typestringConditional
  • fields
  • function
  • input
  • literal
  • step
None specified
workflow.steps.*.choose.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.completionA preceding accepted call Step and one named Operation completion.objectConditionalNot specifiedNone specified
workflow.steps.*.completion.nameOne named completion on the referenced call Operation.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.completion.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.descriptionAn optional explanation for readers; it has no execution or authorization effect.stringNoNot specifiedNone specified
workflow.steps.*.inputThe typed Workflow start input, or a mapping supplying the called Operation input.objectConditionalNot specifiedNone specified
workflow.steps.*.input.fieldsObject members built from typed references or literals.objectConditionalNot specified
  • maxProperties: 64
workflow.steps.*.input.fields.*Map valueFor input: Reads the Workflow input. For step: Reads an earlier accepted call or completed wait on every incoming route. For literal: Supplies one bounded literal JSON value.objectConditionalNot specified
  • propertyNames.maxLength: 512
  • propertyNames.minLength: 1
  • propertyNames.pattern: ^[A-Za-z][A-Za-z0-9_-]{0,63}$
  • propertyNames.pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
workflow.steps.*.input.fields.*.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.input.fields.*.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.input.fields.*.typestringConditional
  • input
  • literal
  • step
None specified
workflow.steps.*.input.fields.*.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.input.functionA declared pure Function called with an object of named inputs.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.input.inputsNamed input schemas or references; every declared input is required exactly once.objectConditionalNot specified
  • maxProperties: 16
workflow.steps.*.input.inputs.*Map valueFor input: Reads the Workflow input. For step: Reads an earlier accepted call or completed wait on every incoming route. For literal: Supplies one bounded literal JSON value.objectConditionalNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.input.inputs.*.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.input.inputs.*.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.input.inputs.*.typestringConditional
  • input
  • literal
  • step
None specified
workflow.steps.*.input.inputs.*.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.input.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.input.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.input.typestringConditional
  • fields
  • function
  • input
  • literal
  • step
None specified
workflow.steps.*.input.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.nextThe next Step on the successful completion route.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.onCancelAn optional Step taken after authorized cancellation while waiting; no completion value is available there.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.onDeclaredRefusalA separate Step taken only for a validated package-declared business refusal. Omit it to fail the run with product-refused on a declared refusal too.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.onTimeoutAn optional Step taken when this wait expires; no completion value is available there.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.operationOne local Operation alias declared under operations.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.outcomeOne declared terminal outcome name.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.outputThe declared result schema or mapping; Functions and the host enforce it.objectConditionalNot specifiedNone specified
workflow.steps.*.output.fieldsObject members built from typed references or literals.objectConditionalNot specified
  • maxProperties: 64
workflow.steps.*.output.fields.*Map valueFor input: Reads the Workflow input. For step: Reads an earlier accepted call or completed wait on every incoming route. For literal: Supplies one bounded literal JSON value.objectConditionalNot specified
  • propertyNames.maxLength: 512
  • propertyNames.minLength: 1
  • propertyNames.pattern: ^[A-Za-z][A-Za-z0-9_-]{0,63}$
  • propertyNames.pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
workflow.steps.*.output.fields.*.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.output.fields.*.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.output.fields.*.typestringConditional
  • input
  • literal
  • step
None specified
workflow.steps.*.output.fields.*.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.output.functionA declared pure Function called with an object of named inputs.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.output.inputsNamed input schemas or references; every declared input is required exactly once.objectConditionalNot specified
  • maxProperties: 16
workflow.steps.*.output.inputs.*Map valueFor input: Reads the Workflow input. For step: Reads an earlier accepted call or completed wait on every incoming route. For literal: Supplies one bounded literal JSON value.objectConditionalNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.output.inputs.*.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.output.inputs.*.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.output.inputs.*.typestringConditional
  • input
  • literal
  • step
None specified
workflow.steps.*.output.inputs.*.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.output.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.output.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.output.typestringConditional
  • fields
  • function
  • input
  • literal
  • step
None specified
workflow.steps.*.output.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.timeoutSecondsMaximum seconds to wait; it must be shorter than the Workflow deadline.integerConditionalNot specified
  • format: uint32
  • maximum: 31536000
  • minimum: 1
workflow.steps.*.titleAn optional human title; it changes neither stable identity nor behavior revision.stringNoNot specifiedNone specified
workflow.steps.*.typestringYes
  • call
  • choose
  • finish
  • wait-for
  • wait-until
None specified
workflow.steps.*.waitUntilA mapping producing an RFC 3339 instant with an offset.objectConditionalNot specifiedNone specified
workflow.steps.*.waitUntil.fieldsObject members built from typed references or literals.objectConditionalNot specified
  • maxProperties: 64
workflow.steps.*.waitUntil.fields.*Map valueFor input: Reads the Workflow input. For step: Reads an earlier accepted call or completed wait on every incoming route. For literal: Supplies one bounded literal JSON value.objectConditionalNot specified
  • propertyNames.maxLength: 512
  • propertyNames.minLength: 1
  • propertyNames.pattern: ^[A-Za-z][A-Za-z0-9_-]{0,63}$
  • propertyNames.pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
workflow.steps.*.waitUntil.fields.*.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.waitUntil.fields.*.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.waitUntil.fields.*.typestringConditional
  • input
  • literal
  • step
None specified
workflow.steps.*.waitUntil.fields.*.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.waitUntil.functionA declared pure Function called with an object of named inputs.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.waitUntil.inputsNamed input schemas or references; every declared input is required exactly once.objectConditionalNot specified
  • maxProperties: 16
workflow.steps.*.waitUntil.inputs.*Map valueFor input: Reads the Workflow input. For step: Reads an earlier accepted call or completed wait on every incoming route. For literal: Supplies one bounded literal JSON value.objectConditionalNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.waitUntil.inputs.*.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.waitUntil.inputs.*.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.waitUntil.inputs.*.typestringConditional
  • input
  • literal
  • step
None specified
workflow.steps.*.waitUntil.inputs.*.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified
workflow.steps.*.waitUntil.pathAn optional RFC 6901 pointer; omit it to read the entire value.stringConditionalNot specified
  • maxLength: 256
  • pattern: ^/([^~]|~[01])*$
workflow.steps.*.waitUntil.stepThe preceding accepted call or completed wait Step whose value is read.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
workflow.steps.*.waitUntil.typestringConditional
  • fields
  • function
  • input
  • literal
  • step
None specified
workflow.steps.*.waitUntil.valueA literal JSON value; it remains subject to bounded value checks.Not specifiedConditionalNot specifiedNone specified

scenarios.yaml

Source preview, pre-1.0

Generated from products/coordinator/generated/scenarios/scenarios.schema.json. 31 key paths. Explained in docs/site/src/content/docs/reference/coordinator-configuration.mdx.

Key pathTypeRequiredAccepted valuesConstraints
apiVersionThe format and version this document is written in.stringYes
  • id.registrystack.org/formats/coordinator/scenarios/v1alpha1
None specified
casesThe cases, 1 to 64, each with a unique id.arrayYesNot specified
  • maxItems: 64
  • minItems: 1
cases[]Array itemOne run of the workflow, from admission to where it stops.objectNoNot specifiedNone specified
cases[].admittedAtThe RFC 3339 instant the run is admitted; the virtual clock starts here and moves only to the instants waits select.stringYesNot specified
  • format: date-time
cases[].expectWhere the run must stop.objectYesNot specifiedNone specified
cases[].expect.outcomeThe outcome the run finishes with, or {type: none} for a run that finishes without one. Omit it to leave the outcome unchecked.objectNoNot specifiedNone specified
cases[].expect.outcome.typestringYes
  • named
  • none
None specified
cases[].expect.outcome.valueThe outcome, declared under the workflow's outcomes.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
cases[].expect.outputThe output the run finishes with. Omit it to leave the output unchecked.Not specifiedNoNot specifiedSchema default, where declared: nullNone specified
cases[].expect.pathThe steps the run reaches, in order.arrayYesNot specified
  • maxItems: 64
  • minItems: 1
  • uniqueItems: true
cases[].expect.path[]Array itemA local identifier: a lowercase letter, then up to 63 lowercase letters, digits, _, or -.stringNoNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
cases[].expect.stateThe state the run stops in.stringYes
  • cancelled
  • completed
  • deadline-exceeded
  • refused
  • retryable
  • timed-out
  • uncertain
None specified
cases[].expect.workflowElapsedSecondsThe virtual seconds from admission to where the run stops. Omit it to leave the time unchecked.integerNoNot specified
  • format: uint32
  • maximum: 31536000
  • minimum: 0
cases[].idThe case name test reports.stringYesNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
cases[].inputThe start input, which must satisfy the workflow input schema.Not specifiedYesNot specifiedNone specified
cases[].recoveryThe operator recovery each call step receives after a retryable or uncertain reply, by step, so the step consumes its next reply.objectNoNot specified
  • maxProperties: 64
cases[].recovery.*Map valueAn operator recovery: retry-same sends the same frozen command again after a retryable reply, or after an uncertain one where the operation allows it; reconcile reads the product's receipt for an uncertain command, for operations that keep one.stringNo
  • reconcile
  • retry-same
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
cases[].repliesThe synthetic replies each call step receives, by step, in the order its attempts consume them: 1 to 8 per step. A reply after the first needs a recovery for that step.objectYesNot specified
  • maxProperties: 64
cases[].replies.*Map valuearrayNoNot specified
  • maxItems: 8
  • minItems: 1
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
cases[].replies.*[]Array itemFor success: The call completed and returned value. For retryable: The call failed and may be retried; the run stops as retryable, or as uncertain after an earlier uncertain reply, unless a recovery consumes another reply. For refused: The product refused the call; the run stops as refused, or as uncertain after an earlier uncertain reply. For declared-refusal: The product returned a package-declared, no-effect business refusal. A supported call takes its onDeclaredRefusal edge when it has one; otherwise the run stops as refused. For uncertain: The call's effect is unknown; the run stops as uncertain unless a recovery consumes another reply. For receipt-expired: The product's receipt for the call expired, so the original command cannot be confirmed; the run stops as uncertain and no later reply is consumed.objectNoNot specifiedNone specified
cases[].replies.*[].codeFor retryable: The code the reply carries, such as credential-unavailable. For refused: The code the reply carries, such as product-not-found. For uncertain: The code the reply carries, such as transport-uncertain.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
cases[].replies.*[].refusalCodeThe validated refusal code the package declares.stringConditionalNot specified
  • maxLength: 128
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
cases[].replies.*[].typestringYes
  • declared-refusal
  • receipt-expired
  • refused
  • retryable
  • success
  • uncertain
None specified
cases[].replies.*[].valueThe output the call returns, which must satisfy the operation's output contract.Not specifiedConditionalNot specifiedNone specified
cases[].waitsWhat each wait-for step the run reaches receives, by step: the event it waits for, or its timeout.objectNoNot specified
  • maxProperties: 64
cases[].waits.*Map valueFor event: The event arrives when the wait starts; the run continues at the step's next with value as the step's output. For observations: The host repeats the accepted external read and interprets these synthetic typed responses under the completion's named Function. For timeout: No event arrives: the clock moves by the step's timeoutSeconds, and the run continues at its onTimeout, or stops as timed-out when the step has none. A deadline that passes first stops the run as deadline-exceeded. For cancel: An authorized caller cancels the run while this wait is durably parked. The run continues at onCancel, or stops as cancelled when the step has none.objectNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
cases[].waits.*.responsesOne to 128 bounded response objects in observation order.arrayConditionalNot specified
  • maxItems: 128
  • minItems: 1
cases[].waits.*.responses[]Array itemNot specifiedConditionalNot specifiedNone specified
cases[].waits.*.typestringYes
  • cancel
  • event
  • observations
  • timeout
None specified
cases[].waits.*.valueThe event, which must satisfy the step's event contract. A review result must also be one the review protocol accepts, for the request identifier, subject, policy and submission digest the request step accepted.Not specifiedConditionalNot specifiedNone specified
kindThe kind of document this is.stringYes
  • CoordinatorScenarios
None specified

runtime.yaml

Source preview, pre-1.0

Generated from products/coordinator/generated/runtime/runtime.schema.json. 110 key paths. Explained in docs/site/src/content/docs/reference/coordinator-configuration.mdx.

Key pathTypeRequiredAccepted valuesConstraints
apiVersionstringYes
  • id.registrystack.org/formats/coordinator/runtime/v1alpha1
None specified
connectionsNamed deployment bindings with one explicit type per connection.objectYesNot specified
  • maxProperties: 16
  • minProperties: 1
connections.*Map valueOne logical connection namespace. The discriminator selects its complete deployment contract; a connection cannot borrow another variant's authority.objectNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
connections.*.attemptTimeoutMillisecondsintegerConditionalNot specifiedSchema default, where declared: 2000 or 8000
  • format: uint64
  • maximum: 2000
  • minimum: 1

or

  • format: uint64
  • maximum: 8000
  • minimum: 1
connections.*.authorizationOmission makes the configured read public; it never inherits a caller token.objectConditionalNot specifiedNone specified
connections.*.authorization.bearerobjectConditionalNot specifiedNone specified
connections.*.authorization.bearer.principalAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.authorization.bearer.tokenRefAn exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.stringConditionalNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
connections.*.authorization.clientAssertionAudienceAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.authorization.clientIdAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 256
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.authorization.localobjectConditionalNot specifiedNone specified
connections.*.authorization.resourceAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.authorization.scopesarrayConditionalNot specified
  • maxItems: 32
  • minItems: 1
  • uniqueItems: true
connections.*.authorization.scopes[]Array itemAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.authorization.signingKeyRefAn exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.stringConditionalNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
connections.*.authorization.taskAuthorityobjectConditionalNot specifiedNone specified
connections.*.authorization.taskAuthority.baseUrlAn absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.stringConditionalNot specified
  • format: uri
  • maxLength: 2048
  • pattern: ^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$
connections.*.authorization.taskAuthority.bootstrapResourceAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.authorization.taskAuthority.exchangeAudienceAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.authorization.taskAuthority.issuerAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.authorization.taskAuthority.subjectAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.authorization.tokenEndpointAn absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.stringConditionalNot specified
  • format: uri
  • maxLength: 2048
  • pattern: ^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$
connections.*.baseUrlAn absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.stringYesNot specified
  • format: uri
  • maxLength: 2048
  • pattern: ^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$

or

  • format: uri
  • maxLength: 2048
  • pattern: ^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$
  • pattern: ^[^\s\\]+$
connections.*.completionAuthenticated minimized wake-ups; omission uses polling only.objectConditionalNot specifiedNone specified
connections.*.completion.bearerTokenRefThe bearer token Casework's completion destination sends.stringConditionalNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
connections.*.completion.recipientBindingThe recipientBinding the Casework project names for this producer's completion destination: 1 to 256 printable ASCII characters without spaces. Casework sends it in the registry-recipient-binding header.stringConditionalNot specified
  • maxLength: 256
  • minLength: 1
  • pattern: ^[!-~]{1,256}$
connections.*.maximumRequestBytesintegerConditionalNot specifiedSchema default, where declared: 65536
  • format: uint64
  • maximum: 65536
  • minimum: 1
connections.*.maximumResponseBytesintegerConditionalNot specifiedSchema default, where declared: 65536
  • format: uint64
  • maximum: 65536
  • minimum: 1
connections.*.modelAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.observationAuthorizationOrdinary receipt reads under the original owner, without taskAuthority.objectConditionalNot specifiedNone specified
connections.*.observationAuthorization.clientAssertionAudienceAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.observationAuthorization.clientIdAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 256
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.observationAuthorization.resourceAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.observationAuthorization.scopesarrayConditionalNot specified
  • maxItems: 32
  • minItems: 1
  • uniqueItems: true
connections.*.observationAuthorization.scopes[]Array itemAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.observationAuthorization.signingKeyRefAn exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.stringConditionalNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
connections.*.observationAuthorization.taskAuthorityobjectConditionalNot specifiedNone specified
connections.*.observationAuthorization.taskAuthority.baseUrlAn absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.stringConditionalNot specified
  • format: uri
  • maxLength: 2048
  • pattern: ^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$
connections.*.observationAuthorization.taskAuthority.bootstrapResourceAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.observationAuthorization.taskAuthority.exchangeAudienceAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.observationAuthorization.taskAuthority.issuerAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.observationAuthorization.taskAuthority.subjectAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.observationAuthorization.tokenEndpointAn absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.stringConditionalNot specified
  • format: uri
  • maxLength: 2048
  • pattern: ^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$
connections.*.pathsarrayConditionalNot specified
  • maxItems: 16
  • minItems: 1
  • uniqueItems: true
connections.*.paths[]Array itemAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.producerA local identifier: a lowercase letter, then up to 63 lowercase letters, digits, _, or -.stringConditionalNot specified
  • pattern: ^[a-z][a-z0-9_-]{0,63}$
connections.*.profileAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.protocolstringConditional
  • openai-decisions
  • system-one
None specified
connections.*.queryParametersOmission permits no query parameters.arrayConditionalNot specified
  • maxItems: 16
  • minItems: 1
  • uniqueItems: true
connections.*.queryParameters[]Array itemAn identifier another system issues, written exactly as its issuer gives it.stringConditionalNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
connections.*.responseSchemaLocal JSON Schema for the complete {status, body} response.Not specifiedConditionalNot specifiedNone specified
connections.*.resultCheckSecondsintegerConditionalNot specifiedSchema default, where declared: 900
  • format: uint32
  • maximum: 86400
  • minimum: 60
connections.*.typestringYes
  • breg
  • casework-review-producer
  • evaluation
  • external-http
  • messaging
  • scheduling
None specified
databaseThe PostgreSQL connection a stateful runtime uses. Both URLs are secret references and may name the same secret.objectYesNot specifiedNone specified
database.migrationUrlRefSecret reference to the migration connection URL.stringYesNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
database.runtimeUrlRefSecret reference to the least-privileged runtime connection URL.stringYesNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
database.testOnlyPlaintextAllow a plaintext connection. Refused outside test builds.booleanNo
  • false
Schema default, where declared: false
None specified
database.trustedRootCertificateRefSecret reference to a PEM root certificate the connection trusts. Absent, the connection trusts the platform's root certificates.stringNoNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
deploymentobjectNoNot specifiedNone specified
deployment.activeStateKeyintegerYesNot specified
  • format: uint32
  • maximum: 4294967295
  • minimum: 1
deployment.admissionKeyRefAn exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.stringYesNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
deployment.auditFilestringYesNot specified
  • pattern: ^/+(?:(?:[^/.][^/]*|\.(?:[^/.][^/]*|\.[^/]+)?)/+)*(?:[^/.][^/]*|\.(?:[^/.][^/]*|\.[^/]+))$
deployment.auditKeyRefAn exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.stringYesNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
deployment.authenticationThe OIDC issuer a runtime accepts access tokens from: the exact iss value, the aud value a token must carry, and where the issuer's signing keys come from, written under authentication.oidc beside the product's own token rules.objectYesNot specifiedNone specified
deployment.authentication.allowInsecureHttpPermit plain HTTP beyond loopback to the configured issuer and to a JWKS URI declared in configuration. TLS remains required unless the operator explicitly accepts this transport risk.booleanNoNot specifiedSchema default, where declared: falseNone specified
deployment.authentication.assertionIssuersAssertion authorities each client may exchange a subject token from, keyed by client identifier. Omitted, no assertion-issuer rule applies; written, it lists at least one client, each with at least one authority. Once a client is listed, a token it exchanged is accepted only for one of that client's declared authorities, and a client that is not listed may exchange from no authority.objectNoNot specified
  • maxProperties: 64
  • minProperties: 1
deployment.authentication.assertionIssuers.*Map valuearrayNoNot specified
  • maxItems: 16
  • minItems: 1
  • propertyNames.maxLength: 128
  • propertyNames.minLength: 1
  • propertyNames.pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
  • uniqueItems: true
deployment.authentication.assertionIssuers.*[]Array itemstringNoNot specified
  • maxLength: 512
  • minLength: 1
deployment.authentication.audienceThe audience every accepted access token must carry in aud.stringYesNot specified
  • maxLength: 512
  • minLength: 1
deployment.authentication.issuerExact issuer accepted in access-token iss claims, an absolute https URL, or a plain http URL when allowInsecureHttp is set.stringYesNot specified
  • format: uri
  • maxLength: 2048
  • pattern: ^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$
deployment.authentication.jwksSourceWhere the issuer's signing keys come from. Absent reads the issuer's OpenID Connect discovery document.objectNoNot specifiedSchema default, where declared: {"type":"discovery"}None specified
deployment.authentication.jwksSource.documentRefAn exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.stringConditionalNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
deployment.authentication.jwksSource.typestringYes
  • discovery
  • static
  • uri
None specified
deployment.authentication.jwksSource.uriAn absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.stringConditionalNot specified
  • format: uri
  • maxLength: 2048
  • pattern: ^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$
deployment.authentication.policiesobjectYesNot specified
  • maxProperties: 64
  • minProperties: 1
deployment.authentication.policies.*Map valueobjectNoNot specified
  • propertyNames.maxLength: 128
  • propertyNames.minLength: 1
  • propertyNames.pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
deployment.authentication.policies.*.actionsarrayYesNot specified
  • maxItems: 15
  • minItems: 1
  • uniqueItems: true
deployment.authentication.policies.*.actions[]Array itemstringNo
  • cancel
  • complete-execution-recovery
  • doctor
  • inspect
  • reconcile
  • release-admission-hold
  • release-restore-hold
  • restore-hold
  • retain
  • retry-same
  • start
  • status
None specified
deployment.authentication.policies.*.operatorbooleanNoNot specifiedSchema default, where declared: falseNone specified
deployment.authentication.policies.*.requiredScopesarrayYesNot specified
  • maxItems: 64
  • minItems: 1
  • uniqueItems: true
deployment.authentication.policies.*.requiredScopes[]Array itemAn identifier another system issues, written exactly as its issuer gives it.stringNoNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
deployment.authentication.policies.*.workflowsThe workflows this policy's run actions reach: start, status, inspect, retry-same, cancel and reconcile. Required when the policy lists a run action and refused when it lists none.arrayConditionalNot specified
  • maxItems: 64
  • minItems: 1
  • uniqueItems: true
deployment.authentication.policies.*.workflows[]Array itemAn identifier another system issues, written exactly as its issuer gives it.stringNoNot specified
  • maxLength: 512
  • maxLength: 64
  • minLength: 1
  • pattern: ^[A-Za-z0-9_-]+$
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
deployment.authentication.scopeClaimAn identifier another system issues, written exactly as its issuer gives it.stringNoNot specifiedSchema default, where declared: "registry_scopes"
  • maxLength: 128
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
deployment.databaseIdAn identifier another system issues, written exactly as its issuer gives it.stringYesNot specified
  • maxLength: 128
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
deployment.listenerThe listener of a runtime that declares its TLS termination and network exposure.objectYesNot specifiedNone specified
deployment.listener.bindSocket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).stringYesNot specified
  • maxLength: 128
  • minLength: 1
deployment.listener.networkExposureThe operator-declared private network placement of an HTTP listener.stringNo
  • container-private
  • private-address
Schema default, where declared: "private-address"
None specified
deployment.listener.tlsTerminationDeclares the trusted transport boundary for a runtime's plaintext HTTP listener. Production listeners require operator-controlled upstream TLS termination; direct plaintext is limited to the explicit loopback-only development mode.stringYes
  • development-loopback
  • operator-controlled-upstream
None specified
deployment.metricsListenerThe operator-private socket /metrics is served on. When it is omitted, no metrics are served.objectNoNot specifiedNone specified
deployment.metricsListener.bindSocket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).stringYesNot specified
  • maxLength: 128
  • minLength: 1
deployment.packagesOne pinned package per workflow. List each package root and digest once.arrayYesNot specified
  • maxItems: 16
  • minItems: 1
  • uniqueItems: true
deployment.packages[]Array itemThe package a runtime serves: root is the absolute package directory, and expectedDigest, when set, pins the package digest the runtime must find there. The package digest is the digest of the package's SHA256SUMS file; see [crate::package].objectNoNot specifiedNone specified
deployment.packages[].expectedDigestsha256: label of the package digest, the digest of the package's SHA256SUMS file. When set, the runtime refuses to start on any other package.stringYesNot specified
  • pattern: ^sha256:[0-9a-f]{64}$
deployment.packages[].rootAbsolute path of the package directory.stringYesNot specified
  • pattern: ^/
deployment.runtimeRolestringYesNot specified
  • maxLength: 63
  • pattern: ^[a-z_][a-z0-9_]{0,62}$
deployment.stateKeysobjectYesNot specified
  • maxProperties: 16
  • minProperties: 1
deployment.stateKeys.*Map valueobjectNoNot specified
  • propertyNames.maxLength: 10
  • propertyNames.minLength: 1
  • propertyNames.pattern: ^[1-9][0-9]*$
  • propertyNames.pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
deployment.stateKeys.*.keyRefAn exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.stringYesNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
eventSourcesOptional trusted event producers keyed by the logical IDs used in Workflow triggers.objectNoNot specified
  • maxProperties: 16
eventSources.*Map valueTrusted producer binding. Event vocabulary and mapping stay in the package.objectNoNot specified
  • propertyNames.pattern: ^[a-z][a-z0-9_-]{0,63}$
eventSources.*.signingKeyRefProtected reference to the raw HMAC-SHA-256 key, at least 32 bytes.stringYesNot specified
  • pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$
eventSources.*.sourceExact absolute producer URI that signed event envelopes must declare.stringYesNot specified
  • maxLength: 512
  • minLength: 1
  • pattern: ^[^\u0000-\u001F\u007F-\u009F]+$
kindstringYes
  • CoordinatorRuntimeConfig
None specified
minimumObservationIntervalSecondsStricter deployment spacing for every product completion observation.integerNoNot specifiedSchema default, where declared: 30
  • format: uint32
  • maximum: 86400
  • minimum: 30
namespacestringYesNot specified
  • maxLength: 60
  • pattern: ^coordinator_[a-z0-9_]*$
secretProvidersThe secret providers a runtime enables. A reference is resolved only by a provider declared here: secret:file/name under file.root, and secret:env/NAME only when environment: {} is present.objectYesNot specifiedNone specified
secretProviders.environmentEnables secret:env/NAME references, read from the process environment. Declared as an empty mapping: environment: {}.objectConditionalNot specifiedNone specified
secretProviders.fileEnables secret:file/name references, read from files under root.objectConditionalNot specifiedNone specified
secretProviders.file.rootAbsolute directory holding one file per secret. Each file must be a regular file owned by the runtime user, mode 0400 or 0600, with exactly one hard link.stringConditionalNot specified
  • pattern: ^/

An entry under operations in workflow.yaml names one of these in uses and a connection from runtime.yaml in connection. There is no other call: no arbitrary HTTP method, SQL, or dynamic destination. Effect says what the call can change, Recovery what Coordinator does when a response is lost, and Key whether the call carries an idempotency key. Completion names what a later wait-for step can wait on. Every operation runs under the connection’s current authority, with at most 10 attempts of 10 seconds each.

OperationProductEffectRecoveryRead receiptKeyCompletion
breg.invoke-action/v1bregmutationsame-commandNorequiredNone
breg.read-record/v1bregreadread-againNononeNone
casework.cancel-review-request/v1caseworkmutationsame-commandNorequiredNone
casework.submit-review-request/v1caseworkmutationsame-commandNorequiredresult
evaluation.evaluate/v1evaluationevaluationhold-after-dispatchNononeNone
external.get/v1external-httpreadread-againNononeNone
messaging.submit-message/v1messagingmutationsame-command-and-receiptYesrequiredNone
scheduling.create-appointment/v1schedulingmutationsame-command-and-receiptYesrequiredNone
scheduling.read-availability/v1schedulingreadread-againNononeNone
scheduling.read-service/v1schedulingreadread-againNononeNone

Every file Coordinator reads has a command that checks it offline, with no service running. Each prints the diagnostics, JSON output, and exit codes that Check a file before you deploy it describes.

Format and filesCheck command
Coordinator project
  • workflow.yaml
coordinatorctl check --project <project>
Coordinator runtime configuration
  • runtime.yaml
  • runtime.example.yaml
  • *-runtime.yaml
coordinatorctl check --runtime-config <file>
Coordinator offline scenarios
  • scenarios.yaml
coordinatorctl check --project <project>

Registry Coordinator API