Skip to content

[architect] refactor: single source of truth for image-name → upstream repo routing - #1045

Open
kubestellar-hive[bot] wants to merge 1 commit into
mainfrom
arch/refactor-image-repo-routing
Open

[architect] refactor: single source of truth for image-name → upstream repo routing#1045
kubestellar-hive[bot] wants to merge 1 commit into
mainfrom
arch/refactor-image-repo-routing

Conversation

@kubestellar-hive

Copy link
Copy Markdown
Contributor

Refactor

Cluster: image-name/tag → upstream GitHub repository routing.
Files: system_files/shared/usr/libexec/ublue-image-repo (new), system_files/bluefin/usr/libexec/bonedigger-report (route_issue_repo), system_files/bluefin/usr/share/ublue-os/just/changelog.just (changelogs), tests/test_image_repo.bats (new), tests/test_bonedigger_report.bats, tests/test_changelog.bats.

common decided "which upstream repo owns this image" in two places with two different grammars:

site dakota match unknown image
bonedigger-report:route_issue_repo dakota* glob projectbluefin/common
changelog.just:changelogs == "dakota" exact projectbluefin/bluefin

They had already drifted. dakota-nvidia is a published image (docs/skills/image-registry.md), matched by the glob but not by the exact comparison — so ujust changelogs on dakota-nvidia fetched release notes from projectbluefin/bluefin.

This extracts the grammar into /usr/libexec/ublue-image-repo in the shared/ overlay layer (the decision is variant-agnostic; both copies previously sat in the GNOME-desktop-only bluefin/ layer). The one legitimate per-caller difference — the fallback repo for unrecognised images — is passed in as --default, so each call site keeps its existing fallback and no unrelated behaviour changes.

Both consumers become one-line delegations. tests/test_image_repo.bats covers the grammar directly, including a dakota-nvidia regression test and a structural invariant asserting no consumer restates projectbluefin/bluefin-lts / projectbluefin/dakota inline.

Verification: bats tests/test_image_repo.bats tests/test_bonedigger_report.bats tests/test_changelog.bats — 46/46 pass.

Overlap check: #1010 also touches bonedigger-report, but only read_boot_status (how IMAGE_NAME/IMAGE_REF are sourced); this PR touches only route_issue_repo (how they are routed) — disjoint hunks, complementary. #1042 moves 00-entry.just into shared/ and does not touch changelog.just.

Refs #1044


Filed by architect agent (ACMM L5 — hold-gated mode). Hold-gated: human review required.

— hive: agent=architect backend=copilot model=claude-opus-5

…m repo routing

The image-name/tag -> upstream GitHub repository decision was restated in
two places with two different grammars:

  * bonedigger-report:route_issue_repo  — dakota* glob,  unknown -> common
  * changelog.just:changelogs           — dakota exact,  unknown -> bluefin

The grammars had already drifted. dakota-nvidia is a published image
(docs/skills/image-registry.md), matched by bonedigger-report's dakota*
glob but not by changelog.just's exact == "dakota" comparison, so
'ujust changelogs' on dakota-nvidia fetched release notes from
projectbluefin/bluefin.

Extract the grammar into /usr/libexec/ublue-image-repo in the shared/
overlay layer so it is available to every variant, not just the GNOME
desktop layer that happened to host both copies. The only legitimate
per-caller difference — the fallback repo for unrecognised images — is
passed in via --default, preserving each call site's existing fallback.

Both consumers become one-line delegations. tests/test_image_repo.bats
covers the grammar directly and adds a structural invariant asserting no
consumer restates the routing table inline.

Refs #1044

Signed-off-by: sec-check[bot] <sec-check[bot]@users.noreply.github.com>

@hanthor hanthor left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Real duplication fix: centralizes image-name/tag→upstream-repo routing into a new ublue-image-repo, used via --default by both bonedigger-report and changelog.just. Correctly identifies and fixes a dakota-nvidia drift bug (glob vs. exact-match) between the two original call sites. Structural test blocks re-inlining the grammar. CI test green; validate fails only on title-lint.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hold Work is intentionally paused.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant