Name a release by its version, so a per-line tag is not read as staleness - #168
Merged
Merged
Conversation
…ness The freshness watch compared the newest finished release's whole tag against the tag every target line carries. Under the one-version-many-lines tagging the requests declaration now admits, one version is released once per live server line under its own tag, so 0.3.0.0 reaches the catalogue as 0.3.0.0-stable on 10.11.0.0 and as 0.3.0.0-jf12-stable on 12.0.0.0. The comparison then asked the 12.0.0.0 line for a tag that was never cut for it and refused a catalogue that is current, which is what the scheduled runs of 2026-09-04 and 2026-09-05 failed on and what #165 raised. The comparison is now on the version the tag carries, with the leading v, the channel suffix and the line segment dropped. It refuses nothing the whole-tag comparison did not refuse, because equal tags have equal versions, so a line that is genuinely a version behind is still refused and only the false alarm goes away. Towards #165, which its own body says is cleared by a later scheduled run of the workflow ending in success and by nothing else, so this does not close it. Signed-off-by: Nils Lehnen <30603423+iderex@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes nothing on its own. #165 is cleared by a later scheduled run of
.github/workflows/freshness.ymlthat ends in success, and by nothing else, so this change is what should make that run green rather than the thing that clears the key.What is wrong
internal/freshnessasks whether the newest finished release of each declared plugin is listed under each target line the catalogue carries for it, and it asked that question about the whole release tag.The
requestsdeclaration now admits a per-server-line tag segment, from the one-version-many-lines convention:So one version is released once per live line, each release under its own tag:
and the published catalogue carries each of them on the line it was cut for, which is correct and current:
Run 2026-09-05. Comparing whole tags then asks the
12.0.0.0line for0.3.0.0-stable, a tag that was never cut for it, and refuses a catalogue nothing is wrong with. That is the failure the scheduled runs of 2026-09-04 and 2026-09-05 ended on:What changes
A release is named by the version its tag carries rather than by the whole tag.
releaseVersiondrops the leadingv, the channel suffix and the line segment, and keeps the numeric run;carriesasks whether a target line offers any tag naming that release. Nothing else moves.The change can only stop refusals, never start them: equal tags have equal versions, so every catalogue the whole-tag comparison passed is passed here too. What it gives up is telling apart two finished releases that share a version and differ only in a suffix, which under the one-version-many-lines convention is exactly the pair that should not be told apart. That bound is written at the function.
The guards, refusing
Three near-misses, each one a mistake that is one edit away from the code as it stands.
The whole tag compared again, which is the state before this change:
The refusal that first test reddens on is byte for byte the one the scheduled run failed on, which is what ties the fixture to the report.
The version truncated after five characters, so a fourth component stops counting:
The dot dropped from the numeric run, so only the first component is compared. This is the loose direction, the one that would quietly stop the check doing its job at all:
What this branch reads green
The gate, whole:
The network harness, which is the one that reads the real catalogue:
And the verb the failing workflow runs, against the world as it stands tonight:
That is the strongest evidence available before the next scheduled run: the same verb, the same address, the same release lists, exiting 0 where this morning's run exited 1. It is not the same thing as the scheduled run itself, which is why #165 stays open until one has gone green.
Means
Go, unchanged. The check being repaired is Go, the repair is a comparison inside it, and the proof is the suite that already judges this package against planted bodies. Nothing new arrives in the tree: no dependency, no runtime, and no second place where the shape of a tag is declared. The one alternative considered was teaching
internal/freshnessthe line segment out of each declaration'sstable_tags, which would put a tag's shape in two places and read it back out of a regexp by group position; comparing the numeric run needs neither.No second reader
Nobody else has read this change. The evidence above stands in place of a second reader rather than beside one, and that is a statement about this branch and not about the rule.