From a379057cf338b12e93c76b4e36fe50e86d08aa2f Mon Sep 17 00:00:00 2001 From: Dmitry Ilyin <6576495+widgetii@users.noreply.github.com> Date: Sun, 14 Jun 2026 16:24:47 +0300 Subject: [PATCH 1/2] ci: re-fetch moving-ref (VERSION=HEAD) package downloads each build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dl cache is keyed on the month (CACHE_DATE=date +%m) and actions/cache only saves on a key miss, so the first nightly of the month freezes output/dl for weeks. Packages pinned to a moving ref (VERSION = HEAD/branch) download as a constant filename -.tar.gz, so buildroot keeps reusing the frozen, stale tarball while content-addressed packages (e.g. majestic from S3) refresh. That silently desynced majestic-webui (cached pre-title/hint) from a fresh majestic, blanking every field/switch label in the settings UI on nightlies. ~28 GitHub packages (ipctool, divinus, go2rtc, msposd, the wifi/SDK drivers, …) share this latent hazard. Delete the cached *-HEAD/master/main tarballs before the build so buildroot re-fetches the current ref each run; content-addressed (S3/semver/SHA) downloads keep their cache. Co-Authored-By: Claude Opus 4.8 --- .github/workflows/build.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5c0771a656..d35fb745d6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -250,6 +250,20 @@ jobs: key: dl-${{env.CACHE_DATE}} restore-keys: dl- + - name: Refresh moving-ref package downloads + run: | + # Packages pinned to a moving ref (VERSION = HEAD / branch) download as + # -.tar.gz — a constant filename. The dl cache key is the month + # (date +%m) and actions/cache only saves on a key miss, so that snapshot + # is frozen for weeks; buildroot then keeps reusing the stale tarball and + # the nightly silently ships an old version. This is what desynced + # majestic-webui from majestic (blanking every settings field label). + # Drop those archives so buildroot re-fetches the current ref each run. + # Content-addressed packages (S3 / semver / SHA pins) keep their cache. + find output/dl -type f \ + \( -name '*-HEAD.tar.gz' -o -name '*-master.tar.gz' -o -name '*-main.tar.gz' \) \ + -print -delete 2>/dev/null || true + - name: Build firmware run: | export GIT_HASH=$(git rev-parse --short ${GITHUB_SHA}) From 9dea819f885dd34b5dee4a934108623380faeac4 Mon Sep 17 00:00:00 2001 From: Dmitry Ilyin <6576495+widgetii@users.noreply.github.com> Date: Sun, 14 Jun 2026 17:25:38 +0300 Subject: [PATCH 2/2] ci: apply the same moving-ref refetch to build-one build-one (single-platform / bisect dispatch) has its own dl-cache restore and would otherwise still reuse the month-frozen *-HEAD tarballs, defeating the fix for one-off rebuilds. Drop the moving-ref archives before its build too. Co-Authored-By: Claude Opus 4.8 --- .github/workflows/build-one.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/build-one.yml b/.github/workflows/build-one.yml index 4bd2be1591..8aa58b70fb 100644 --- a/.github/workflows/build-one.yml +++ b/.github/workflows/build-one.yml @@ -62,6 +62,20 @@ jobs: key: dl-${{env.CACHE_DATE}} restore-keys: dl- + - name: Refresh moving-ref package downloads + run: | + # Packages pinned to a moving ref (VERSION = HEAD / branch) download as + # -.tar.gz — a constant filename. The dl cache key is the month + # (date +%m) and actions/cache only saves on a key miss, so that snapshot + # is frozen for weeks; buildroot then keeps reusing the stale tarball and + # silently ships an old version. This is what desynced majestic-webui from + # majestic (blanking every settings field label). Drop those archives so + # buildroot re-fetches the current ref each run. Content-addressed packages + # (S3 / semver / SHA pins) keep their cache. + find output/dl -type f \ + \( -name '*-HEAD.tar.gz' -o -name '*-master.tar.gz' -o -name '*-main.tar.gz' \) \ + -print -delete 2>/dev/null || true + - name: Build firmware env: BUILD_ID: ${{ needs.resolve.outputs.tag_name }}