seiya

workflow-promote

Use this when running the Promote stage and promoting an artifact whose `verdict` and `aggregate_verdict` passed to `releases/` and updating the `official_releases` of `spec_catalog.yaml`. It applies to the work of satisfying the `release_id` invariant and the tracking-information registration.

seiya 0 Updated 2w ago
GitHub

Install

npx skillscat add seiya/atmofab/workflow-promote

Install via the SkillsCat registry.

SKILL.md

Workflow Promote

Purpose

Fix the promotion responsibility of the Promote stage, and register the official-version artifact in a reproducible form.

Scope

  • the work of promoting a workspace artifact to releases/<...>/<release_id>/
  • the work of updating the official_releases of spec/registry/spec_catalog.yaml

Requirements

  • Require verdict.json's overall=pass as an input condition.
  • Require aggregate_verdict.json's overall=pass as an input condition.
  • Require that python3 tools/orchestration_runtime.py check-phase-certified --repo-root . --orchestration-id <id of a run of that target> --node-key <node_key> --step validate --target <target_id> --no-record (the orchestration's preflight.json is read; --no-record writes nothing to it) reports certified: true, a cross_target.status that is neither disagree nor unevaluable, and pipeline_ref, source_id, binary_id and run_id equal to the promotion source's — the answer is about the node's SELECTED Validate run, so an older run of the same node is not covered by it and is not promoted: verdict.json and aggregate_verdict.json read pass for a variant that disagrees with another target's, because the cross-target comparison is outside the verdict (issue #383; docs/RUNBOOK.md §3-0).
  • Require that the adopted source_id, binary_id, and run_id are traceable in lineage.json and trial_meta.json.
  • At registration, record release_id, target_id, source_pipeline_id, source_source_id, source_binary_id, source_run_id, artifact_root, promoted_at, and status as required.
  • Forbid overwriting an existing release_id.

Operations Rules

  1. Fix the promotion destination to releases/<spec_kind>/<domain>/<family>/<spec_id>/<target_id>/<release_id>/ (one node built for one target profile, issue #284).
  2. Update the old release of the same target_id to deprecated.
  3. On a problem promotion, confirm that the aggregated state of the transitive dependency node consists only of pass or xfail.
  4. After promotion, sync-update spec_catalog.yaml, leaving no discrepancy between the search canonical source and the registration canonical source.

Decision Criteria

  • The promoted artifact and the official_releases registration content match.
  • The release_id invariant is maintained.
  • The promotion-source trial can be reproduced from the tracking information alone.