Route release gate¶
Route release gate is the final route-scoped go/no-go receipt for one
source -> sink -> strategy release candidate. It aggregates route readiness,
route certification pack, execution ledger, route refresh verification, state
promotion, benchmark, schema, docs, and optional CDC evidence into one stable
JSON/Markdown report.
The command does not run live databases, benchmarks, or CDC loops. It only reads artifacts that already exist, verifies their pass/fail status and route identity, records checksums, and writes a release review receipt.
User workflow¶
- Generate route evidence with the specialized commands for the route.
- Run
dpone ops route-certification-packto normalize route evidence and produce embeddedroute_readiness.json. - Run
dpone ops route-execution-ledgeraround durable sink work. - Run
dpone ops route-refresh-verifyafter any executed refresh, backfill, replay, repair, or retention-gap recovery. - Run
dpone ops route-state-promoteonly after the sink commit receipt is safe. - Add CDC evidence such as
cdc_apply_certification,cdc_recovery_evidence,cdc_schema_evolution_evidence, orcdc_promotion_gatewhen the release changes replication behavior. - Run
dpone ops route-release-gate. - For minor/major releases, run
dpone ops route-certifyto wrap this gate inroute_certification_bundle.json. - Attach
route_release_gate.jsonandroute_release_gate.mdto release review.
CLI example¶
uv run dpone ops route-release-gate \
--release vX.Y.Z-rc1 \
--source mssql \
--sink clickhouse \
--strategy incremental_merge \
--output-dir test_artifacts/route_release/mssql_to_clickhouse \
--artifact route_readiness=test_artifacts/route_certification/mssql_to_clickhouse/readiness/route_readiness.json \
--artifact route_certification_pack=test_artifacts/route_certification/mssql_to_clickhouse/route_certification_pack.json \
--artifact route_execution_ledger=test_artifacts/route_execution/mssql_to_clickhouse/orders/route_execution_ledger.json \
--artifact route_refresh_verification=test_artifacts/route_refresh_execution/mssql_to_clickhouse/orders/verify/route_refresh_verification.json \
--artifact state_promotion=test_artifacts/route_state/mssql_to_clickhouse/orders/state_promotion.json \
--artifact route_schema_evolution=test_artifacts/route_schema/mssql_to_clickhouse/orders/route_schema_evolution.json \
--artifact route_reconciliation_repair=test_artifacts/route_repair/mssql_to_clickhouse/orders/route_reconciliation_repair.json \
--artifact type_fidelity=test_artifacts/type_fidelity/latest/mssql_to_clickhouse.json \
--artifact typed_hash=test_artifacts/typed_hash/latest/mssql_to_clickhouse.json \
--artifact wide_type_certification=test_artifacts/type_matrix/latest/mssql_to_clickhouse_wide.json \
--artifact benchmark_slo=test_artifacts/benchmarks/latest/mssql_to_clickhouse_slo.json \
--artifact schema_evolution=test_artifacts/schema_evolution/latest/mssql_to_clickhouse.json \
--require cdc_apply_certification \
--require cdc_recovery_evidence \
--require cdc_schema_evolution_evidence \
--artifact cdc_apply_certification=test_artifacts/cdc_apply/mssql_to_clickhouse/orders/cdc_apply_certification.json \
--artifact cdc_recovery_evidence=test_artifacts/cdc_recovery/mssql_to_clickhouse/orders/cdc_recovery_evidence.json \
--artifact cdc_schema_evolution_evidence=test_artifacts/cdc_schema/mssql_to_clickhouse/orders/cdc_schema_evolution_evidence.json \
--format json
Exit code 0 means the route release gate passed. Exit code 1 means the
release candidate is blocked or only a release candidate with unresolved
blockers.
Required evidence¶
Every route release gate requires:
| Evidence | Purpose |
|---|---|
route_readiness |
Final matrix-driven route evidence decision. |
route_certification_pack |
Normalized evidence bundle and embedded readiness output. |
route_execution_ledger |
Idempotency, lease fencing, durable sink stage, and commit ordering evidence. |
route_refresh_verification |
Post-load source/sink row-count, boundary, duplicate/null key, and typed hash verification evidence. |
state_promotion |
Commit receipt and safe source-state advancement evidence. |
For release candidates that must prove end-to-end manifest/run lifecycle
safety, also attach route_run_supervisor and require it explicitly:
uv run dpone ops route-release-gate \
--release v0.10.0-rc1 \
--source mssql \
--sink clickhouse \
--strategy incremental_merge \
--artifact route_run_supervisor=test_artifacts/route_runs/mssql_to_clickhouse/orders/route_run_receipt.json \
--require route_run_supervisor
For release candidates that must prove data quality and exception management,
also attach route_data_quality and require it explicitly:
uv run dpone ops route-release-gate \
--release v0.10.0-rc1 \
--source mssql \
--sink clickhouse \
--strategy incremental_merge \
--artifact route_data_quality=test_artifacts/route_quality/mssql_to_clickhouse/orders/route_data_quality.json \
--require route_data_quality
For release candidates that include bounded replay, backfill, repair,
schema backfill, retention-gap recovery, or source-state rewind, also attach
route_refresh_plan and require it explicitly:
uv run dpone ops route-release-gate \
--release v0.10.0-rc1 \
--source mssql \
--sink clickhouse \
--strategy incremental_merge \
--artifact route_refresh_plan=test_artifacts/route_refresh/mssql_to_clickhouse/orders/route_refresh_plan.json \
--require route_refresh_plan
For release candidates that actually execute refresh chunks, also attach
route_refresh_execution and require it explicitly. The default gate already
requires route_refresh_verification, so execution evidence without
verification remains insufficient for release promotion:
uv run dpone ops route-release-gate \
--release v0.10.0-rc2 \
--source mssql \
--sink clickhouse \
--strategy incremental_merge \
--artifact route_refresh_execution=test_artifacts/route_refresh_execution/mssql_to_clickhouse/orders/route_refresh_execution.json \
--artifact route_refresh_verification=test_artifacts/route_refresh_execution/mssql_to_clickhouse/orders/verify/route_refresh_verification.json \
--require route_refresh_execution
The service also requires every evidence domain listed by the active
RouteProfile. For mssql -> clickhouse, that includes type fidelity, typed
hash, wide type certification, benchmark/SLO, schema evolution, route schema
evolution, route reconciliation repair, docs, run artifact, and matrix
evidence. For postgres -> mssql, that includes lossless transport,
benchmark/SLO, resume checkpoint, type matrix, route schema evolution, and
route reconciliation repair evidence.
Use repeated --require flags for release-specific domains that are not part
of the static route profile. CDC release candidates commonly add:
| Extra evidence | When to require |
|---|---|
cdc_apply_certification |
CDC apply correctness, delete semantics, typed hash, or replay behavior changed. |
cdc_recovery_evidence |
Restart, partial commit, offset ordering, poison event, or retention behavior changed. |
cdc_schema_evolution_evidence |
CDC source schema change or target DDL governance changed. |
cdc_promotion_gate |
Final replication readiness and offset promotion review is required. |
Report contract¶
route_release_gate.json uses schema version
dpone.route_release_gate.v1 and contains:
release: release or release-candidate id.route: canonicalsource,sink,strategy,pair_id,case_id, andcolon_id.profile: matrix-driven route metadata.passed,level,score: go/no-go decision for CI and release review.required_evidence: all required domains after profile and--requireexpansion.evidenceandevidence_index: normalized artifacts with status, route match, checksum, blockers, summary, and path.blockers,warnings,next_actions: operator diagnostics.json_path,markdown_path: generated receipt locations.
route_release_gate.md is the human-readable release review attachment.
Operator runbook¶
When the route release gate is red:
- Open
route_release_gate.jsonand copy the first blocker. - If the blocker ends with
.missing, attach or regenerate that artifact. - If the blocker ends with
.not_passed, open the upstream artifact and use its runbook first. Do not edit aggregate gate JSON by hand. - If the blocker ends with
.route_mismatch, rerun the upstream command for the samesource,sink, andstrategy. - Re-run
dpone ops route-release-gateafter the upstream evidence changes. - Keep the evidence directory immutable for the release candidate.