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.
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
workspaceartifact toreleases/<...>/<release_id>/ - the work of updating the
official_releasesofspec/registry/spec_catalog.yaml
Requirements
- Require
verdict.json'soverall=passas an input condition. - Require
aggregate_verdict.json'soverall=passas 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'spreflight.jsonis read;--no-recordwrites nothing to it) reportscertified: true, across_target.statusthat is neitherdisagreenorunevaluable, andpipeline_ref,source_id,binary_idandrun_idequal 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.jsonandaggregate_verdict.jsonreadpassfor 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, andrun_idare traceable inlineage.jsonandtrial_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, andstatusas required. - Forbid overwriting an existing
release_id.
Operations Rules
- Fix the promotion destination to
releases/<spec_kind>/<domain>/<family>/<spec_id>/<target_id>/<release_id>/(onenodebuilt for onetarget profile, issue #284). - Update the old
releaseof the sametarget_idtodeprecated. - On a
problempromotion, confirm that the aggregated state of the transitive dependencynodeconsists only ofpassorxfail. - 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_releasesregistration content match. - The
release_idinvariant is maintained. - The promotion-source trial can be reproduced from the tracking information alone.