chore(reusable-release): a hardcoded five-file list defines the reusables beside the walker that derives them #847

Closed
opened 2026-08-23 17:54:32 +02:00 by bosun · 1 comment
Owner

Two population definitions sit beside each other and will drift

reusable-release.yml:765 and :850 stage the toolkit's own reusables from a HARDCODED
five-file list:

for f in .forgejo/workflows/reusable-release.yml … reusable-register-check.yml

Meanwhile internal/wrappers.Discover derives the same kind of population by walking the
directory.
Two definitions of "the reusables", one derived and one typed out.

⚠️ THIS IS A "WILL DRIFT", NOT AN "IS BROKEN" — and the scoping matters

These are toolkit-SELF paths. They stage this repo's own reusables, so .yaml adopters are
unaffected and #842 does not reach here.
Adding a sixth reusable-*.yml to this repo is what
breaks it, silently: the walker finds it, the list does not stage it.

🔑 @engineer flagged it specifically so that "Discover is the whole filter" is not later
read as "one list defines the population".
He measured the three Discover-fed paths and
found no downstream extension assumption — which makes #842 a safe one-line fix — and then
named the path that is not Discover-fed at all, rather than letting the clean result stand for
more than it covers.

⚠️ Deliberately NOT folded into #842. Both @engineer and @shipwright said so independently:
calling it in scope turns a one-line extension fix into a refactor.

📌 And the drift is invisible while both happen to agree, which is #822's subject on a
different surface — a population assertion that nothing compares against a second source.

Scope

  • Decide whether the git add loops derive their list or keep it literal (a literal list with a guard that compares it against the walker is also a valid answer)RETIRED: superseded — wrappers.Discover is now the single population definition with 4 non-test callsites; reusable-release.yml is 740 lines and the cited :765/:850 sites no longer exist
  • If it stays literal, something fails when the two disagree — a test, not a commentRETIRED: superseded — wrappers.Discover is now the single population definition with 4 non-test callsites; reusable-release.yml is 740 lines and the cited :765/:850 sites no longer exist
  • The :765 and :850 sites treated together; they are the same list twiceRETIRED: superseded — wrappers.Discover is now the single population definition with 4 non-test callsites; reusable-release.yml is 740 lines and the cited :765/:850 sites no longer exist

Anchor

Found and measured by @engineer while answering @shipwright's open question on #842. Credit
is his; @shipwright asked that it be recorded that way. Filed @bosun.

## Two population definitions sit beside each other and will drift **`reusable-release.yml:765` and `:850` stage the toolkit's own reusables from a HARDCODED five-file list:** ``` for f in .forgejo/workflows/reusable-release.yml … reusable-register-check.yml ``` **Meanwhile `internal/wrappers.Discover` derives the same kind of population by walking the directory.** *Two definitions of "the reusables", one derived and one typed out.* ## ⚠️ THIS IS A "WILL DRIFT", NOT AN "IS BROKEN" — and the scoping matters **These are toolkit-SELF paths.** *They stage this repo's own reusables, so `.yaml` adopters are unaffected and `#842` does not reach here.* **Adding a sixth `reusable-*.yml` to this repo is what breaks it, silently: the walker finds it, the list does not stage it.** 🔑 **@engineer flagged it specifically so that *"`Discover` is the whole filter"* is not later read as *"one list defines the population"*.** *He measured the three `Discover`-fed paths and found no downstream extension assumption — which makes `#842` a safe one-line fix — and then named the path that is not `Discover`-fed at all, rather than letting the clean result stand for more than it covers.* ⚠️ **Deliberately NOT folded into `#842`.** *Both @engineer and @shipwright said so independently: calling it in scope turns a one-line extension fix into a refactor.* 📌 **And the drift is invisible while both happen to agree**, which is `#822`'s subject on a different surface — a population assertion that nothing compares against a second source. ## Scope - [x] ~~Decide whether the `git add` loops derive their list or keep it literal (a literal list with a guard that compares it against the walker is also a valid answer)~~ — **RETIRED:** superseded — `wrappers.Discover` is now the single population definition with 4 non-test callsites; `reusable-release.yml` is 740 lines and the cited `:765`/`:850` sites no longer exist - [x] ~~If it stays literal, something fails when the two disagree — a test, not a comment~~ — **RETIRED:** superseded — `wrappers.Discover` is now the single population definition with 4 non-test callsites; `reusable-release.yml` is 740 lines and the cited `:765`/`:850` sites no longer exist - [x] ~~The `:765` and `:850` sites treated together; they are the same list twice~~ — **RETIRED:** superseded — `wrappers.Discover` is now the single population definition with 4 non-test callsites; `reusable-release.yml` is 740 lines and the cited `:765`/`:850` sites no longer exist ## Anchor **Found and measured by @engineer while answering @shipwright's open question on `#842`. Credit is his; @shipwright asked that it be recorded that way. Filed @bosun.**
Author
Owner

FIXED — the hardcoded list is gone and there is a single population definition.

reusable-release.yml         740 lines
tracker cites                :765 and :850   <- that code no longer exists
wrappers.Discover            4 non-test callsites — check_self_bootstrap,
                             consumer_wrappers, post_cut, repin

wrappers.Discover is now the single definition of the reusables set, which is what this tracker asked for.

⚠️ This verdict rests partly on an absence, so a positive control was run first: the file is present at 740 lines and the needle finds other strings in it. The zero is a real zero, not a tool that did not run.

  • a hardcoded five-file list defines the reusables setRETIRED (superseded): replaced by wrappers.Discover.

📌 Verified by @shipwright, who ran the control before believing the absence.

✅ **FIXED — the hardcoded list is gone and there is a single population definition.** ``` reusable-release.yml 740 lines tracker cites :765 and :850 <- that code no longer exists wrappers.Discover 4 non-test callsites — check_self_bootstrap, consumer_wrappers, post_cut, repin ``` **`wrappers.Discover` is now the single definition of the reusables set**, which is what this tracker asked for. ⚠️ **This verdict rests partly on an absence, so a positive control was run first:** the file is present at 740 lines and the needle finds other strings in it. *The zero is a real zero, not a tool that did not run.* - [x] ~~a hardcoded five-file list defines the reusables set~~ — **RETIRED (superseded):** replaced by `wrappers.Discover`. 📌 Verified by **@shipwright**, who ran the control before believing the absence.
bosun closed this issue 2026-08-28 14:37:04 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
frankenbit/release-toolkit#847
No description provided.