Skip to content

fix(sbom): enforce sbom-only version sources across docs site#712

Merged
castrojo merged 1 commit into
projectbluefin:mainfrom
castrojo:feature/sbom-sitewide-policy-enforcement
Apr 1, 2026
Merged

fix(sbom): enforce sbom-only version sources across docs site#712
castrojo merged 1 commit into
projectbluefin:mainfrom
castrojo:feature/sbom-sitewide-policy-enforcement

Conversation

@castrojo
Copy link
Copy Markdown
Contributor

@castrojo castrojo commented Apr 1, 2026

Make SBOM attestations the authoritative source for kernel, GNOME, Mesa, and Fedora across driver, images, and changelog surfaces while keeping NVIDIA as the explicit fallback workaround.

Refs: #35 #38 #50 #52 #57

Assisted-by: Claude Sonnet 4.6 via GitHub Copilot

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request transitions the package version discovery process from parsing release descriptions and HTML tables to utilizing SBOM attestation data. Key changes include a more robust GHCR manifest resolution process with token caching and retry logic, as well as updates to frontend components to source version information directly from the SBOM cache. Feedback from the review highlights a regression in release link specificity and raises significant performance concerns regarding the direct import of large JSON datasets into the frontend bundle, which may lead to excessive bundle bloat and slower page loads.

Comment thread scripts/fetch-github-driver-versions.js Outdated
stream: streamId,
tag: releaseEntry?.tag || cacheKey,
title: releaseEntry?.tag || cacheKey,
releaseUrl: RELEASE_URL_BY_STREAM[streamId] || null,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

high

This change introduces a regression in link specificity. Previously, each row in the driver versions table linked directly to the specific GitHub release notes for that tag. Now, for SBOM-sourced releases, it links to the general repository releases page. This makes it harder for users to find the relevant changelog for a specific version. To fix this, the fetch-github-sbom.js script should be updated to capture and store the html_url for each release, allowing this field to be populated with the specific release link.

Comment thread src/components/FeedItems.tsx Outdated
extractVersionChange,
} from "../config/packageConfig";
import githubProfilesData from "@site/static/data/github-profiles.json";
import sbomAttestationsData from "@site/static/data/sbom-attestations.json";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

high

Importing sbom-attestations.json directly into the frontend bundle is a significant performance concern. This JSON file contains the allPackages field for every release, which includes a full inventory of RPMs (potentially thousands of entries per release). This will bloat the JavaScript bundle by several megabytes, impacting page load times and memory usage on the client.

Since the allPackages data is only intended for build-time scripts (like fetch-firehose.js), it should be excluded from the JSON file consumed by the frontend, or this component should fetch the data dynamically via fetch() to avoid including it in the main bundle.

Comment thread src/components/ImagesCatalog.tsx Outdated
mounted = false;
};
}, []);
const catalog = (imagesCatalogData as ImagesCatalog) || { products: [] };
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

high

Changing the data loading strategy from an asynchronous fetch() in useEffect to a direct import causes the entire images.json dataset to be baked into the main JavaScript bundle. This increases the initial payload size for all users, even those who do not visit the images catalog page. It is recommended to stick with the previous fetch() approach or use dynamic imports to keep the data out of the critical path.

  const [catalog, setCatalog] = React.useState<ImagesCatalog>({ products: [] });

  React.useEffect(() => {
    let mounted = true;
    fetch("/data/images.json")
      .then((response) => (response.ok ? response.json() : null))
      .then((data) => {
        if (!mounted || !data || !Array.isArray(data.products)) return;
        setCatalog(data as ImagesCatalog);
      })
      .catch(() => {
        if (!mounted) return;
        setCatalog({ products: [] });
      });
    return () => { mounted = false; };
  }, []);

@castrojo castrojo force-pushed the feature/sbom-sitewide-policy-enforcement branch from 745f576 to 14fa5a7 Compare April 1, 2026 20:33
Make SBOM attestations the authoritative source for kernel, GNOME, Mesa, and Fedora across driver, images, and changelog surfaces while keeping NVIDIA as the explicit fallback workaround.

Refs: #35 #38 #50 #52 #57

Assisted-by: Claude Sonnet 4.6 via GitHub Copilot
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@castrojo castrojo force-pushed the feature/sbom-sitewide-policy-enforcement branch from 14fa5a7 to e6bee5d Compare April 1, 2026 20:38
@castrojo castrojo merged commit 6d48cd6 into projectbluefin:main Apr 1, 2026
2 checks passed
@castrojo castrojo deleted the feature/sbom-sitewide-policy-enforcement branch May 9, 2026 19:31
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.

1 participant