Registry stack documentation: machine-readable Markdown.
Index of all pages: https://docs.registrystack.org/dev/llms.txt
Full corpus: https://docs.registrystack.org/dev/llms-full.txt

# Registry Coordinator configuration reference

> Generated key-path reference for the Registry Coordinator project, runtime, and scenario files, and the host operations a workflow can call.

import ConfigurationFormatChecks from '../../../components/ConfigurationFormatChecks.astro';

import ConfigurationReference from '../../../components/ConfigurationReference.astro';
import CoordinatorOperationsTable from '../../../components/CoordinatorOperationsTable.astro';
import reference from '../../../data/generated/coordinator-configuration.json';

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.

## Contract status

| File | Kind | Status | Source |
| ---- | ---- | ------ | ------ |
| `workflow.yaml` | `CoordinatorProject` | Pre-1.0, may change | [`project.schema.json`](https://github.com/registrystack/registry-stack/blob/main/products/coordinator/generated/project/project.schema.json) |
| `scenarios.yaml` | `CoordinatorScenarios` | Pre-1.0, may change | [`scenarios.schema.json`](https://github.com/registrystack/registry-stack/blob/main/products/coordinator/generated/scenarios/scenarios.schema.json) |
| `runtime.yaml` | `CoordinatorRuntimeConfig` | Pre-1.0, may change | [`runtime.schema.json`](https://github.com/registrystack/registry-stack/blob/main/products/coordinator/generated/runtime/runtime.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](../../configure/coordinator/)).

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.

{/* Evidence: docs/site/scripts/generate-coordinator-configuration.mjs, CONTRACTS;
    products/coordinator/generated/runtime/runtime.schema.json, ClientPolicy.allOf and
    ConnectionConfig.oneOf for the three not rules;
    crates/registry-coordinator/src/authoring.rs, CoordinatorProject;
    crates/registry-coordinator/src/runtime.rs, RuntimeConfig;
    crates/registry-coordinator/src/scenarios.rs, CoordinatorScenarios;
    crates/registry-coordinator/src/project_check.rs. */}

## Key paths

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`.

{/* Evidence: docs/site/scripts/configuration-reference.mjs, collectFields();
    docs/site/src/components/ConfigurationReference.astro. */}

{/* Generated from src/data/generated/coordinator-configuration.json, built from
    products/coordinator/generated/{project,scenarios,runtime}/*.schema.json and
    products/coordinator/generated/operations/catalog.json.
    Run npm run generate from docs/site. */}
<ConfigurationReference contracts={reference.contracts} prefix="coordinator" />

## Host operations

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 {reference.operations[0].maximum_call_attempts} attempts of
{reference.operations[0].attempt_timeout_seconds} seconds each.

<CoordinatorOperationsTable />

{/* Evidence: products/coordinator/generated/operations/catalog.json;
    crates/registry-coordinator/src/operations.rs, CATALOG. */}

## Check commands

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](../configuration-files/#check-a-file-before-you-deploy-it)
describes.

<ConfigurationFormatChecks product="coordinator" />

## Next

[Registry Coordinator API](../apis/registry-coordinator/)