Architecture Finding
Type: tech-debt / DRY violation
Affected area: elements/bluefin-server/os-release-flatcar.bst, Justfile, project.conf
The FSDK point release version is parsed in three independent places using three different mechanisms:
project.conf declares release-version: "26.08.0" — validated by check-release-version.py to match the junction ref
Justfile line 14 greps the junction ref directly: grep -oE 'freedesktop-sdk-[0-9]+\.[0-9]+\.[0-9]+' elements/freedesktop-sdk.bst
os-release-flatcar.bst lines 26–33 re-derive it at build time with a bash regex over the same junction file:
while read -r line; do
if [[ "${line}" =~ ref:[[:space:]]+freedesktop-sdk-([0-9]+\.[0-9]+\.[0-9]+)- ]]; then
FSDK_VERSION="${BASH_REMATCH[1]}"
Sites 2 and 3 bypass the validated %{release-version} variable that site 1 declares.
Impact
- Three regex/parsing implementations of the same extraction must all stay correct independently
- The element's bash regex is the most fragile: it silently breaks if the junction ref format changes (e.g., no trailing
-, or a pre-release suffix)
os-release-flatcar.bst carries a sources: entry pointing at elements/freedesktop-sdk.bst purely to re-parse it, coupling the element to the junction file's format
- The element already has
%{release-version} in scope (project.conf variable) but doesn't use it
Recommendation
Replace the bash regex and the local source in os-release-flatcar.bst with %{release-version}:
PRETTY_NAME="Bluefin Server %{release-version}"
IMAGE_VERSION=%{release-version}
- Drop the
sources: block that reads the junction file
- Drop the
FSDK_VERSION extraction loop
The Justfile derivation is a separate mechanism (shell, not BuildStream) and can remain — but the element should consume the project variable.
Filed by architect agent (ACMM L5 — hold-gated mode)
🐝 Hive Agent: architect | Instance: hosted-projectbluefin-knuckle-gjvq | SHA: unknown
— hive: agent=architect backend=copilot model=kimi-k3
Architecture Finding
Type: tech-debt / DRY violation
Affected area:
elements/bluefin-server/os-release-flatcar.bst,Justfile,project.confThe FSDK point release version is parsed in three independent places using three different mechanisms:
project.confdeclaresrelease-version: "26.08.0"— validated bycheck-release-version.pyto match the junction refJustfileline 14 greps the junction ref directly:grep -oE 'freedesktop-sdk-[0-9]+\.[0-9]+\.[0-9]+' elements/freedesktop-sdk.bstos-release-flatcar.bstlines 26–33 re-derive it at build time with a bash regex over the same junction file:Sites 2 and 3 bypass the validated
%{release-version}variable that site 1 declares.Impact
-, or a pre-release suffix)os-release-flatcar.bstcarries asources:entry pointing atelements/freedesktop-sdk.bstpurely to re-parse it, coupling the element to the junction file's format%{release-version}in scope (project.conf variable) but doesn't use itRecommendation
Replace the bash regex and the local source in
os-release-flatcar.bstwith%{release-version}:PRETTY_NAME="Bluefin Server %{release-version}"IMAGE_VERSION=%{release-version}sources:block that reads the junction fileFSDK_VERSIONextraction loopThe Justfile derivation is a separate mechanism (shell, not BuildStream) and can remain — but the element should consume the project variable.
Filed by architect agent (ACMM L5 — hold-gated mode)
🐝 Hive Agent:
architect| Instance:hosted-projectbluefin-knuckle-gjvq| SHA:unknown— hive: agent=architect backend=copilot model=kimi-k3