Problem
Workflow runs themselves are the only observability surface. No metrics for orchestrate duration, failure rate, time-in-env, breaking-change gate frequency, or rollback rate. Adopters can't set SLOs on the pipeline itself.
Proposed
Add a metrics emission step inside the generated orchestrate.yaml and promote.yaml finalize jobs, behind a vendor-neutral seam. Output via:
- A pluggable metrics adapter (e.g., DogStatsD becomes one optional adapter, matching the vendor-neutral telemetry stance) when enabled in the manifest
- Generic webhook POST (JSON payload) for other backends
- Always: write metrics as a job summary table for the run UI
Metric set: orchestrate duration, orchestrate outcome (success/failure/skipped), promote duration (from_env, to_env), promote breaking-change gate outcome (allow/block), time-in-env per env.
Impact
Makes the framework observable enough for SLO ownership. Cheap once the finalize step already runs on every cascade.
Schema-reserve note
Design the metrics: field shape (and the adapter seam) into the v1 schema so it's reserved during any freeze. Any specific vendor adapter is one optional implementation behind the seam — no vendor is baked into the core. Implementation can land in a later minor.
Problem
Workflow runs themselves are the only observability surface. No metrics for orchestrate duration, failure rate, time-in-env, breaking-change gate frequency, or rollback rate. Adopters can't set SLOs on the pipeline itself.
Proposed
Add a metrics emission step inside the generated
orchestrate.yamlandpromote.yamlfinalize jobs, behind a vendor-neutral seam. Output via:Metric set: orchestrate duration, orchestrate outcome (success/failure/skipped), promote duration (from_env, to_env), promote breaking-change gate outcome (allow/block), time-in-env per env.
Impact
Makes the framework observable enough for SLO ownership. Cheap once the finalize step already runs on every cascade.
Schema-reserve note
Design the
metrics:field shape (and the adapter seam) into the v1 schema so it's reserved during any freeze. Any specific vendor adapter is one optional implementation behind the seam — no vendor is baked into the core. Implementation can land in a later minor.