You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The release-rotation automation has produced a broken CI matrix on the long-lived rotation PR release-rotation/auto (currently #760, "Release rotation (auto)"). The rotation is slotted one minor version too far ahead of reality: it has pre-rotated as if 8.1.0 already shipped, pointing the in-flight 8.1.0 work at the next minor (8.2.0 / rel-820) instead of the actual release branch (rel-810). The rotation registry tools/release/versions.yml is also still a self-described DRAFT.
The stable tracks (8.0.0, 7.0.4, flex, binary) all pass. Only the rotation-introduced 8.1.x / 8.2.0 slots are red.
Failing checks / evidence
"Production Docker (8.1.0)" actually builds rel-820.docker/openemr/8.1.0/Dockerfile has ARG OPENEMR_VERSION pointing at the next-minor branch. The build runs:
fatal: Remote branch rel-820 not found in upstream origin
(exit 128). rel-820 does not exist. "Production Docker (8.1.1)" fails identically — docker/openemr/8.1.1/Dockerfile has the same mis-pointed ARG OPENEMR_VERSION.
This is effectively pre-rotated as if 8.1.0 had already shipped. 8.1.0 is not tagged yet.
BATS 8.2.0 / Functionality 8.2.0 jobs fail because they target a docker/openemr/8.2.0 directory that does not exist. Only docker/openemr/8.0.0, 8.1.0, and 8.1.1 exist on the branch.
ShellCheck fails. The new docker/openemr/8.1.0/ and 8.1.1/ dirs were copied from 8.0.0 but env.stub was not carried over. openemr.sh carries a # shellcheck source=env.stub-style reference, so ShellCheck reports:
Not following: docker/openemr/8.1.0/env.stub: openBinaryFile: does not exist
The registry's files: list maps the shellcheck_source kind only for the 8.0.0/*.sh files, not the new dirs.
Expected slot assignments
For the in-flight 8.1.0 release (NOT tagged yet), slots should be:
current = 8.0.0
next = 8.1.0 (rel-810)
dev = master
The docker/openemr/8.1.0/ Dockerfile should point at rel-810. New version dirs must include env.stub. The premature 8.2.0 / rel-820 references should be removed.
Impact
Blocks merging the infra rotation PR for the 8.1.0 release.
Admin-merging it anyway would be harmful: it would roll the CI matrices onto nonexistent rel-820 / 8.2.0 slots.
It does not self-heal when v8_1_0 is tagged — the slot assignments are simply wrong, and docker/openemr/8.2.0 / rel-820 do not exist.
Suspected cause (hypothesis)
Either the slot-derivation / rotate.php logic computed slots one minor ahead, or the draft versions.yml was hand-seeded ahead of reality (tie-in with the pending #665 / #746 work). The fix should:
Set slots to current = 8.0.0 / next = 8.1.0 (rel-810) / dev = master.
Point the docker/openemr/8.1.0/ Dockerfile at rel-810.
Ensure new version dirs include env.stub.
Remove the premature 8.2.0 / rel-820 references.
Ideally this should be root-caused in the rotation tooling so it cannot recur, rather than only hand-patched.
Summary
The release-rotation automation has produced a broken CI matrix on the long-lived rotation PR
release-rotation/auto(currently #760, "Release rotation (auto)"). The rotation is slotted one minor version too far ahead of reality: it has pre-rotated as if 8.1.0 already shipped, pointing the in-flight 8.1.0 work at the next minor (8.2.0/rel-820) instead of the actual release branch (rel-810). The rotation registrytools/release/versions.ymlis also still a self-described DRAFT.The stable tracks (8.0.0, 7.0.4, flex, binary) all pass. Only the rotation-introduced 8.1.x / 8.2.0 slots are red.
Failing checks / evidence
"Production Docker (8.1.0)" actually builds
rel-820.docker/openemr/8.1.0/DockerfilehasARG OPENEMR_VERSIONpointing at the next-minor branch. The build runs:and fails with:
(exit 128).
rel-820does not exist. "Production Docker (8.1.1)" fails identically —docker/openemr/8.1.1/Dockerfilehas the same mis-pointedARG OPENEMR_VERSION.Registry
tools/release/versions.ymlis mis-slotted and marked DRAFT. Its header reads "DRAFT: built by manual sweep on 2026-04-29" and it contains FIXMEs referencing PRs feat(release): add openemr-devops slice of release automation (#664) #665 and release-rotation receiver: openemr-tag dispatch fails to slide window (next/dev not promoted, patch field dropped) #746. Current slots:current= 8.1.0 (rel-810)next= 8.2.0 (rel-820)dev= 8.2.0 (rel-820)This is effectively pre-rotated as if 8.1.0 had already shipped. 8.1.0 is not tagged yet.
BATS 8.2.0 / Functionality 8.2.0 jobs fail because they target a
docker/openemr/8.2.0directory that does not exist. Onlydocker/openemr/8.0.0,8.1.0, and8.1.1exist on the branch.ShellCheck fails. The new
docker/openemr/8.1.0/and8.1.1/dirs were copied from8.0.0butenv.stubwas not carried over.openemr.shcarries a# shellcheck source=env.stub-style reference, so ShellCheck reports:The registry's
files:list maps theshellcheck_sourcekind only for the8.0.0/*.shfiles, not the new dirs.Expected slot assignments
For the in-flight 8.1.0 release (NOT tagged yet), slots should be:
current= 8.0.0next= 8.1.0 (rel-810)dev= masterThe
docker/openemr/8.1.0/Dockerfile should point atrel-810. New version dirs must includeenv.stub. The premature8.2.0/rel-820references should be removed.Impact
rel-820/8.2.0slots.v8_1_0is tagged — the slot assignments are simply wrong, anddocker/openemr/8.2.0/rel-820do not exist.Suspected cause (hypothesis)
Either the slot-derivation /
rotate.phplogic computed slots one minor ahead, or the draftversions.ymlwas hand-seeded ahead of reality (tie-in with the pending #665 / #746 work). The fix should:current = 8.0.0/next = 8.1.0 (rel-810)/dev = master.docker/openemr/8.1.0/Dockerfile atrel-810.env.stub.8.2.0/rel-820references.Ideally this should be root-caused in the rotation tooling so it cannot recur, rather than only hand-patched.
Reproduction
release-rotation/auto) inopenemr/openemr-devops.rel-820and fails withfatal: Remote branch rel-820 not found in upstream origin.Not following: docker/openemr/8.1.0/env.stub: ... does not exist.docker/openemr/8.2.0does not exist on the branch (only8.0.0,8.1.0,8.1.1), which is why the BATS / Functionality 8.2.0 jobs fail.