diff --git a/.github/actions/drift-check/action.yml b/.github/actions/drift-check/action.yml index dd76c55..ef4e7c6 100644 --- a/.github/actions/drift-check/action.yml +++ b/.github/actions/drift-check/action.yml @@ -57,9 +57,9 @@ inputs: required: false default: '3.11' meta-repo-ref: - description: 'git ref of TMHSDigital/Developer-Tools-Directory to use for the checker code. Defaults to v1.7 (latest 1.7.x).' + description: 'git ref of TMHSDigital/Developer-Tools-Directory to use for the checker code. Defaults to v1 (auto-maintained MAJOR floating tag, per DTD#14). Future MINORs auto-flow through this default without requiring action.yml edits.' required: false - default: 'v1.7' + default: 'v1' caller-path: description: 'When mode=self, path inside GITHUB_WORKSPACE that points at the caller checkout. Defaults to "." (root).' required: false diff --git a/VERSION b/VERSION index f8e233b..9ab8337 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.9.0 +1.9.1 diff --git a/tests/test_composite_action_shape.py b/tests/test_composite_action_shape.py index 31e21e8..2ccec3f 100644 --- a/tests/test_composite_action_shape.py +++ b/tests/test_composite_action_shape.py @@ -142,3 +142,27 @@ def test_action_sticky_step_does_not_swallow_rc(action_doc): assert "exit \"$RC\"" not in body and "exit $RC" not in body, ( "sticky step must not propagate its own RC; that's the propagate step's job" ) + + +def test_meta_repo_ref_default_is_floating_major(action_doc): + """The meta-repo-ref input must default to a floating MAJOR tag + (v1, v2, ...), never a specific MINOR (v1.7) or PATCH (v1.7.5). + + Regression guard for the bug surfaced during the v1.9.0 ecosystem + signal rollout: the default was hardcoded to 'v1.7' and never bumped + when 1.8/1.9 shipped. Tool repos consuming the action without an + explicit ``meta-repo-ref`` override silently checked out the meta-repo + at v1.7, so any tool signals past 1.7.0 produced inverse-direction + version-signal warnings. + + Floating-major is the right granularity because DTD#14 auto-maintains + v1 to point at the latest 1.x.y release, so future MINORs auto-flow + through this default with zero action.yml edits. + """ + import re + + meta_ref_default = action_doc["inputs"]["meta-repo-ref"]["default"] + assert re.match(r"^v\d+$", meta_ref_default), ( + f"meta-repo-ref default must be a floating major tag (v1, v2, ...) " + f"per DTD#14 to avoid stale references; got {meta_ref_default!r}" + )