Skip to content

List releases published only as a Hugging Face tag in the release picker - #258

Merged
anth-volk merged 5 commits into
mainfrom
fix/release-list-tag-only-releases
Oct 21, 2026
Merged

anth-volk merged 5 commits into
mainfrom
fix/release-list-tag-only-releases

Conversation

@anth-volk

@anth-volk anth-volk commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #257

What changes

The release list (/api/microcosm/releases) now includes every release build in the dashboard manifest that the releases/ folder listing on Hugging Face main cannot name. Before, it added only builds stored under a different folder (releaseDirectory ≠ releaseId), so releases Microcosm publishes with --no-latest --tag-only (folder present only at the tag's commit) had a published tree and no Release picker entry.

  • loadPublishedCutReleases(revalidate, country, manifest, folders) takes the folder listing and returns builds whose folder differs from their release id (as before) plus builds that are not a calibrated folder on main. This is the same rule the tree publisher uses when it enumerates tags (enumerateReleaseCandidates skips a tag whose calibrated folder is on main). It sets release_directory only when the folder differs from the release id.
  • The releases route reads the manifest in parallel with the folder listing, then passes the listing in. Without the manifest it still returns the folder listing.
  • The Staging page's newest local-area release (newestPublishedLocalAreaRelease) passes the listing too, so both readers use the same set of releases. This changes nothing in production today: only the UK registers local-area Staging pipelines (staging.local_area_pipelines), and the new rule adds no UK local-area release build. The US registers none, so US Staging candidates are still compared with the current release, populace-us-2024-spm-20260915. If the US registers a local-area pipeline later, its newest published local-area release is populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z.
  • mergeReleaseInventory lists each release once: a folder on main without calibration diagnostics gives way to the published build of the same release. A release series' shared folder (the UK's microcosm-uk-2024-25-national) leaves the picker once that series' per-attempt tags are listed, unless the dashboard's latest release points at it, whether it comes from the folder listing or from its own manifest build.

latest_release_id, default_release_id and updated_at are unchanged. They still come from the manifest's latestReleaseBuildArtifactId (populace-us-2024-spm-20260915, matching latest.json on Hugging Face main).

Effect on production data (2026-10-21)

Country Listed now Manifest release builds not listed After this change
US 26 (all_releases 29) populace-us-2024-spm-receipts-20260923, populace-us-2024-0fb05b6-4b57d15a287c-20260930T150401Z, populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z (all tag-only) 29 (all_releases 32)
UK 5 microcosm-uk-2024-25-national: the shared folder build for that release series, hidden on purpose once its tagged builds are listed 5, whatever that folder's copy on main holds
Belgium 2 none 2

The two national tag-only releases (spm-receipts, 0fb05b6) are listed without the " · non-default" suffix. That suffix reflects the release manifest's dataset role, not whether latest.json names the release: both manifests set no dataset_role and set default_datasets.national, like the older national releases on main (for example populace-us-2024-spm-20260909). 766b7c7 is labelled " · local area · experimental".

Tests

  • First commit ff967c9 adds only the tests. They fail on main: loadPublishedCutReleases returns [] for a manifest with a tag-only build and an uncalibrated folder's build, and the route calls it without the folder listing (86 pass, 2 fail across the two files).
  • Second commit 09f35c0 is the fix (88 pass in the two files).
  • Third commit 19949b7 rewords the new code comments only.
  • Review commits (see below): c97a330 adds only a test (88 pass, 1 fail in the two files); f310332 is the fix. On f310332:
    • bun test app/api/microcosm/releases/route.test.ts packages/calibration-tree/src/latest-artifact.test.ts: 89 pass, 0 fail
    • bun test in packages/calibration-tree: 375 pass, 0 fail
    • bun test app/api/microcosm/staging/compare/route.test.ts lib/microcosm/reviewed-repository-import.test.ts: 5 pass, 0 fail
    • bun run lint (tsc --noEmit for the app and the package): clean
    • Merged with current main (7537692, no conflicts): the two changed test files and the staging compare route test, 93 pass, 0 fail; bun run lint clean.

Overlap with #241

Draft #241 rewrites the same route and both loadPublishedCutReleases calls. A trial merge conflicts in route.ts, route.test.ts and staging-artifact.ts; latest-artifact.ts merges cleanly. In #241 the UK reads releases.json instead, but the US and Belgium still use the folder listing plus loadPublishedCutReleases (folderInventory), so this fix is still needed afterwards.

Whichever merges second must:

  • in the route's folderInventory, read the folder listing first (in parallel with the manifest) and pass it as the fourth argument to loadPublishedCutReleases; keep the manifest-unavailable fallback to the folder listing;
  • in stagingBaselineReleases, do the same before calling loadPublishedCutReleases;
  • keep this PR's route test, with Read Microcosm UK releases from releases.json and build folders only #241's extra dependencies (releaseLayout, loadRecordedReleases).

If this PR merges first, tsc fails on #241's two three-argument calls, because folders is a required parameter.

Review

  • Fixed: with the new rule, the UK shared folder build microcosm-uk-2024-25-national would have been listed as a sixth UK release if that folder's copy on main lacked calibration_diagnostics.json. On main it stays hidden in that case. mergeReleaseInventory now applies the shared-folder rule to manifest builds as well as to folders (c97a330 test, f310332 fix). Production is not known to be affected: the UK repository is private, so its folder listing could not be checked.
  • Corrected in this description: the Staging local-area comparison does not change in production (see above).
  • Checked against production: US manifest (29 release builds), Hugging Face tags (30) and releases/ folders on main (29; one page, no Link header). The new rule adds exactly the three tag-only releases, each once.

🤖 Generated with Claude Code

anth-volk and others added 2 commits October 22, 2026 01:30
Microcosm can publish a release as a tag alone: releases/<release id>/
exists at the tag's commit and never on main. The calibration tree
publisher already publishes these from their tags, but the release list
reads folders on main plus only those manifest builds stored under another
folder, so such releases have a tree and no entry in the release picker.
The same applies to a folder on main that lacks calibration diagnostics
while its tag has them.

These tests fail until the dashboard manifest reader receives the folder
listing and returns the manifest releases it does not name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The release list read releases/ folders on Hugging Face main and added only
the dashboard manifest's builds stored under another folder. Microcosm
publishes candidate releases with --no-latest --tag-only, which writes
releases/<release id>/ at the tag's commit and never on main, so their
published calibration trees had no picker entry. For the US that is
populace-us-2024-spm-receipts-20260923,
populace-us-2024-0fb05b6-4b57d15a287c-20260930T150401Z and
populace-us-2024-buildo-acs-local-766b7c7-20261017T030317Z.

- loadPublishedCutReleases now receives the folder listing and returns
  every manifest release build it does not name: cuts as before, plus
  builds whose folder is not a calibrated folder on main, which matches how
  the publisher enumerates tags.
- The releases route and the staging comparison's newest local-area
  release pass the folder listing in.
- mergeReleaseInventory lists each release once: a folder on main without
  calibration diagnostics gives way to the published build of that release.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
calibration-diagnostics Ready Ready Preview Oct 21, 2026 9:43pm UTC

Request Review

Comments only: name Microcosm's per-attempt release tags and their shared
release folder directly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
anth-volk and others added 2 commits October 22, 2026 01:41
The dashboard manifest keeps the build published from a release series'
shared folder (microcosm-uk-2024-25-national) before the series had
per-attempt tags. loadPublishedCutReleases now returns any release build
whose folder is not a calibrated folder on main, so if that folder's copy
on main lacks calibration_diagnostics.json the shared folder build is
returned, and mergeReleaseInventory lists it beside the series' tags. The
shared folder should leave the picker once the tags are listed, unless the
dashboard's latest release points at it.

This test fails until mergeReleaseInventory applies that rule to manifest
builds as well as to folders on main.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mergeReleaseInventory hid a release series' shared folder only when it came
from the folder listing on main. loadPublishedCutReleases now also returns
the shared folder's own published build when the folder's copy on main has
no calibration diagnostics, and that build was listed beside the series'
per-attempt tags. The same rule now applies to both sources: the shared
folder leaves the picker once its tags are listed, unless the dashboard's
latest release points at it, and it is then listed once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@anth-volk
anth-volk marked this pull request as ready for review October 21, 2026 22:06
@anth-volk
anth-volk merged commit 15a84d5 into main Oct 21, 2026
5 checks passed
@anth-volk
anth-volk deleted the fix/release-list-tag-only-releases branch October 21, 2026 22:07

This branch was successfully deployed

1 active deployment
Preview — f310332b Deployed Oct 21, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The release list omits US releases published only as a Hugging Face tag

1 participant