Files
github-action/docs/milestones/mil-004-versioned-release.md
T
Tirsvad 616c5d2e48 Plan task 6 of MIL-004: move the embedded scripts to files
The sync and publish-wiki scoped workflows embed 200 to 300 lines of Python
in their YAML. Add task 6 to move them to tools/ and run them from a
checkout of this repository, as verified from two organisations, with a
Go/No-Go criterion and O2 in the traceability. Review and accept the
amendment (RC-034) and update TM-001.
2026-10-10 13:41:36 +08:00

4.3 KiB

MIL-004: Versioned release and publishing

Metadata

Key Value
ID MIL-004
CrossReference BC-001, ADR-0002

Version History

Date Status Author Reviewer Change Commit
2026-10-10 Accepted Jens Tirsvad Nielsen S01 Target date 2026-11-28 confirmed on 2026-10-10 by S01 (stand-in for S05) ea06eaa
2026-10-10 Accepted Jens Tirsvad Nielsen S01 Added task 6 (embedded scripts to files) and Go/No-Go criterion 5; traceability adds O2 (RC-034) pending

Purpose

Decide whether workflow updates can be released with a version and adopted safely, and whether a project can publish an artifact through a shared workflow.

Deliverable

A documented release process for this repository (validation, version tag, changelog), a consumer upgrade guide and a reusable release workflow. The scoped workflows run scripts that are files in this repository, fetched at a reference that a release can pin, instead of Python embedded in their YAML.

Go / No-Go Criteria

# Criterion (objectively checkable) Go No-Go
1 A release is validated by the MIL-001 checks before a tag is created Enforced Tag possible without checks
2 Each release has a version tag and a changelog entry that marks breaking changes Present Missing
3 A consumer pinned to the previous version keeps working after a release Verified Breaks
4 The publish destination (release page or package registry) is decided and its token scope documented Decided Open
5 The sync and publish-wiki workflows contain no embedded Python; each runs a script file of this repository, and the tests exercise the files Count of embedded scripts is 0 and a run in another organization passes Embedded script remains or a consumer run fails

Dependencies

Depends on Reason
MIL-003 Reuses the reusable workflow mechanism

Traceability

Business Case objective / KPI / user story Reference
O2, O4 BC-001

Ownership

Role Stakeholder ID (SA)
Owner S05
Approving reviewer S01

Target Date

2026-11-28 — confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); the Business Case sets no deadline.

Tasks

# Task Summary Needs its own Use Case/User Story? Reference
1 Define the release process for this repository Describe how a workflow change is validated, tagged and announced, and how consumers pin a version. Yes Use case candidate: release a reusable workflow
2 Add a changelog and tag convention Create CHANGELOG.md and a tag scheme (for example v1 plus v1.2.3) that separates breaking from compatible changes. No
3 Write the consumer upgrade guide Explain how to read a changelog entry, test an update in one repository and roll back. Yes Use case candidate: consume a workflow update
4 Decide the publish destination Choose the release or package destination for built artifacts and document the token scope it needs. No
5 Implement the reusable release workflow Validate the version, build release notes from the changelog and publish to the chosen destination. Yes Use case candidate: publish a release
6 Move the embedded scripts of the scoped workflows to files The sync (sync-github-metadata.yml) and publish-wiki workflows embed 200 to 300 lines of Python in their YAML, which is hard to read, lint and review. Move the code to tools/sync_github_metadata.py and tools/publish_wiki.py; each scoped workflow then checks out TirSystem/github-action into its own folder with actions/checkout and runs the file, as verified on 2026-10-10 from repositories of two organizations. Keep the behaviour, the messages and the offline tests, which import the files instead of executing the YAML; use ref: main first, and let the release process of task 1 define how a consumer pins a tag. No