LoadLynx Release Decision
Use this skill before choosing or changing LoadLynx PR release labels, before declaring a PR
type:none, and before backfilling a release from an already-merged PR.
Source Of Truth
- PR labels are the release intent source of truth.
- Every PR must have exactly one
type:major|minor|patch|none label and exactly one
channel:stable|beta|dev label.
component:firmware|web|host-tools|docs labels describe the affected surface; they do
not decide whether a release is created.
type:none is an explicit no-release decision. It must not be used for changes that
modify owner-facing or user-facing operation contracts.
Decision Rules
- Use
type:patch or higher when a PR changes any owner-facing or user-facing operation
contract, including released CLI/Web/firmware/installer behavior, README.md or
AGENTS.md released-operation guidance, and skills/loadlynx-user-operations or
skills/loadlynx-developer-operations instructions that affect what an operator may
install, run, verify, or trust.
- Use
type:patch or higher when a skill/docs-only PR changes the promised released CLI
surface, hardware operation path, install path, firmware asset expectation, safety gate,
or release/backfill procedure.
- Use
type:none only for internal documentation, spec/solution maintenance, comments,
or tooling notes that do not change an owner-facing or user-facing operation contract.
- Choose
type:minor or type:major instead of type:patch when the underlying product
change is additive or breaking by the repository's normal versioning policy.
- Keep
channel:stable for normal user-facing releases. Use prerelease channels only when
the owner explicitly wants beta/dev distribution.
Backfill A Merged PR
Use this path when a merged PR should have released but carried type:none or the wrong
release type.
- Verify the latest stable release and the source PR labels:
gh release list --repo IvanLi-CN/loadlynx --limit 10
gh pr view <pr-number> --repo IvanLi-CN/loadlynx --json state,mergedAt,mergeCommit,labels
- Update only the release-intent labels needed for the source PR:
gh pr edit <pr-number> --repo IvanLi-CN/loadlynx --remove-label type:none --add-label type:patch
- Dispatch the release workflow against the source PR with
workflow_dispatch
input pr_number=<PR>:
gh workflow run release.yml --repo IvanLi-CN/loadlynx -f pr_number=<pr-number>
- Watch the workflow to completion and verify the release:
gh run watch <run-id> --repo IvanLi-CN/loadlynx --interval 30
gh release view <tag> --repo IvanLi-CN/loadlynx --json tagName,url,isPrerelease,assets
Guardrails
- Do not create a release by editing package manifests or manually uploading partial
assets. The
Release (LoadLynx) workflow builds all official release artifacts.
- Do not call a skill/docs PR
type:none merely because no Rust, firmware, or Web code
changed. If it changes operator behavior, it is a release contract change.
- Before dispatching a backfill, check whether a newer stable tag already exists. If so,
report the version-order risk before continuing.
1---2name: loadlynx-release-decision3description: Decide LoadLynx release labels and backfill releases from merged PRs. Use when Codex needs to choose type/channel/component labels, decide whether skill/docs changes require a GitHub Release, update a merged PR's release intent, or dispatch Release (LoadLynx) with a PR number.4---56# LoadLynx Release Decision78Use this skill before choosing or changing LoadLynx PR release labels, before declaring a PR9`type:none`, and before backfilling a release from an already-merged PR.1011## Source Of Truth1213- PR labels are the release intent source of truth.14- Every PR must have exactly one `type:major|minor|patch|none` label and exactly one15 `channel:stable|beta|dev` label.16- `component:firmware|web|host-tools|docs` labels describe the affected surface; they do17 not decide whether a release is created.18- `type:none` is an explicit no-release decision. It must not be used for changes that19 modify owner-facing or user-facing operation contracts.2021## Decision Rules2223- Use `type:patch` or higher when a PR changes any owner-facing or user-facing operation24 contract, including released CLI/Web/firmware/installer behavior, `README.md` or25 `AGENTS.md` released-operation guidance, and `skills/loadlynx-user-operations` or26 `skills/loadlynx-developer-operations` instructions that affect what an operator may27 install, run, verify, or trust.28- Use `type:patch` or higher when a skill/docs-only PR changes the promised released CLI29 surface, hardware operation path, install path, firmware asset expectation, safety gate,30 or release/backfill procedure.31- Use `type:none` only for internal documentation, spec/solution maintenance, comments,32 or tooling notes that do not change an owner-facing or user-facing operation contract.33- Choose `type:minor` or `type:major` instead of `type:patch` when the underlying product34 change is additive or breaking by the repository's normal versioning policy.35- Keep `channel:stable` for normal user-facing releases. Use prerelease channels only when36 the owner explicitly wants beta/dev distribution.3738## Backfill A Merged PR3940Use this path when a merged PR should have released but carried `type:none` or the wrong41release type.42431. Verify the latest stable release and the source PR labels:4445```bash46gh release list --repo IvanLi-CN/loadlynx --limit 1047gh pr view <pr-number> --repo IvanLi-CN/loadlynx --json state,mergedAt,mergeCommit,labels48```49502. Update only the release-intent labels needed for the source PR:5152```bash53gh pr edit <pr-number> --repo IvanLi-CN/loadlynx --remove-label type:none --add-label type:patch54```55563. Dispatch the release workflow against the source PR with `workflow_dispatch`57 input `pr_number=<PR>`:5859```bash60gh workflow run release.yml --repo IvanLi-CN/loadlynx -f pr_number=<pr-number>61```62634. Watch the workflow to completion and verify the release:6465```bash66gh run watch <run-id> --repo IvanLi-CN/loadlynx --interval 3067gh release view <tag> --repo IvanLi-CN/loadlynx --json tagName,url,isPrerelease,assets68```6970## Guardrails7172- Do not create a release by editing package manifests or manually uploading partial73 assets. The `Release (LoadLynx)` workflow builds all official release artifacts.74- Do not call a skill/docs PR `type:none` merely because no Rust, firmware, or Web code75 changed. If it changes operator behavior, it is a release contract change.76- Before dispatching a backfill, check whether a newer stable tag already exists. If so,77 report the version-order risk before continuing.