Skip to content

Site updates for v26.7.1: release post, FAQ coverage, broken link fixes - #118

Merged
vpetersson merged 4 commits into
sbomify:masterfrom
vpetersson-bot:site/v26-7-1-updates
Jul 30, 2026
Merged

Site updates for v26.7.1: release post, FAQ coverage, broken link fixes#118
vpetersson merged 4 commits into
sbomify:masterfrom
vpetersson-bot:site/v26-7-1-updates

Conversation

@vpetersson-bot

Copy link
Copy Markdown
Contributor

Everything from the v26.7.1 site pass, in one PR. Supersedes #115, #116 and #117, which I am closing in favour of this. Three commits kept separate so they can still be reviewed independently.


1. Add v26.7.1 release announcement post

Draft post for v26.7.1: "The One That Says "Not Affected"", following the house pattern from the previous three release posts (Viktor Petersson byline, TL;DR block, per-theme sections separated by rules, hosted/self-hosted Getting Started).

VEX leads, with the "why before what" treatment the v26.7.0 post gave CBOM. Then CBOM ingestion breadth (framed as closing the gap that release left, linking back to it), Trust Center exposure, the count fix, design refresh, API/security, and a short under-the-hood note.

One editorial call: the vulnerability-count fix gets its own section, because users will see totals drop and that reads like a bug otherwise. The post is explicit that nothing was fixed by the change itself — the number is simply accurate now.

draft: true is set, so merging will not publish it. Delete that line to ship.

2. Fix three broken internal links

Found by auditing every href in the built output. All three 404 today and predate this work:

File Was Now
posts/2026-01-23-…-attestations.md /blog/2026/01/20/announcing-sbomify-action-v0-11-…/ drops the /blog/ prefix
compliance/fda-medical-device.md /blog/fda-medical-device-sbom-requirements/ /2026/01/09/fda-medical-device-sbom-requirements/
faq/why-do-i-need-an-sbom.md /compliance/fda/ /compliance/fda-medical-device/

The first two use a /blog/ prefix that is not the permalink format (/:year/:month/:day/:title/). The third points at a page that does not exist.

3. FAQ: cover the v26.7.1 features

I audited all 28 FAQ pages against the release notes, and most of the release was already covered — VEX formats, Dependency-Track sync, Trust Center VEX/CBOM exposure, and the format-version claims were all accurate. I checked the format claims against source (cyclonedx_validator.py:59 lists exactly 1.3–1.7, with matching shipped schemas) rather than trusting the page. No stale references to the Project layer removed in v26.3.0 either.

Three gaps:

  • Drift detection was documented nowhere (grep -rli "drift" returned nothing outside posts). New Keeping your statements current section in how-do-i-use-vex.md. Also marked the Dependency-Track sync opt-in — the old wording implied it was automatic.
  • CBOM ingestion breadthwhat-is-a-cbom.md now notes every lineage ingests, CycloneDX 1.7 crypto-registry normalization, and the workspace-level crypto posture.
  • New FAQ: How does sbomify count vulnerabilities? (weight 69). Counts now reflect current posture rather than summing historical SBOM versions, so totals drop on upgrade. This is the obvious support question this week.

Verification

  • bun run lint:markdown clean
  • hugo --minify --environment production --buildDrafts builds, 332 pages
  • Site-wide link audit: 0 broken internal links (was 3 before this PR)
  • New post and new FAQ both render; FAQ appears in the FAQ index; the escaped quotes in the post title render correctly

Two notes

Commits are authored by vpetersson-bot, not Viktor. The post byline is Viktor Petersson as requested, but I did not forge git authorship. Amend if you would rather it be attributed to you.

Not included, deliberately: workspace-scoped token binding and the component-SBOMs list version/format filtering are real v26.7.1 changes, but they are API-surface details with no existing FAQ home — the in-app API docs look like the better place. Happy to add FAQ entries if you disagree.

Separately, CI runs lychee in lint.yml but those three broken links survived it. Worth confirming lychee actually resolves relative internal links, otherwise this class of breakage stays invisible.

Drafts the release post for v26.7.1, following the house pattern for
release announcements (byline Viktor Petersson, "The One That ..." title,
TL;DR block, per-theme sections, Getting Started).

Leads on VEX, which is the substantive change in this release: three
formats, in-product triage, Dependency-Track sync, and scheduled drift
detection. Then CBOM ingestion breadth (framed as closing the gap left by
v26.7.0), Trust Center exposure, and the vulnerability-count posture fix,
which is called out separately because users will see their totals drop.

Left as `draft: true` so merging does not publish it before it has been
reviewed -- delete that line to ship. Verified: dprint clean, Hugo builds,
and every internal link resolves (previous release post, /features/
trust-center/, /authors/vpetersson/, all tag pages).

(cherry picked from commit 0fd7024)
Found by a site-wide link audit of the built output (331 pages). All three
predate this change and 404 today:

- posts/2026-01-23-...-attestations.md used a /blog/ prefix for a post
  permalink; the permalink format is /:year/:month/:day/:title/
- compliance/fda-medical-device.md linked /blog/fda-medical-device-sbom-
  requirements/ instead of the post's dated permalink
- faq/why-do-i-need-an-sbom.md linked /compliance/fda/, which does not
  exist; the page is /compliance/fda-medical-device/

Verified: dprint clean, Hugo builds, and a re-run of the audit reports
zero broken internal links across the site.

(cherry picked from commit bf5f861)
Audited the FAQ against the v26.7.1 release notes. Most of the release was
already covered -- VEX formats, Dependency-Track sync, Trust Center VEX and
CBOM exposure, and the CycloneDX/SPDX version claims all matched the code.
Three gaps remained.

how-do-i-use-vex.md
  Scheduled drift detection was documented nowhere on the site. Adds a
  "Keeping your statements current" section covering stale statements and
  uncovered High/Critical findings, and explains why a stale not_affected
  is worse than no VEX. Also marks the Dependency-Track sync as opt-in,
  which the previous wording did not say.

what-is-a-cbom.md
  Ingestion previously depended on which generator produced the CBOM.
  Notes that every lineage now ingests and that assets are normalized
  against the CycloneDX 1.7 crypto registry, plus the new workspace-level
  crypto posture.

how-does-sbomify-count-vulnerabilities.md (new, weight 69)
  Counts now reflect current posture rather than a sum over every
  historical SBOM version, so totals drop on upgrade. That reads like a
  bug without an explanation, and support will be asked. Also documents
  what a count includes, VEX suppression, and why release-scoped counts
  are pinned to the artifacts actually shipped.

Verified: dprint clean, Hugo builds, new FAQ renders and appears in the
FAQ index, and all internal links in the changed pages resolve.

(cherry picked from commit 7158727)
Hugo Build Check has been failing on every branch since ~10:45 today,
including master, with:

    install: cannot create regular file
      '/usr/local/share/man/man1/d2.1': Permission denied
    make: *** [Makefile:11: install] Error 1

The `Install d2` step pipes https://d2lang.com/install.sh into sh. That
script runs `make install`, which installs a man page into
/usr/local/share/man/man1 -- a path the GitHub runner user cannot write.
Nothing in this repository changed to cause it; two branches that ran
before 10:45 passed with identical workflow files, and master fails the
same way without any of this branch's content.

Download the pinned release tarball and install just the binary into
~/.local/bin, added to GITHUB_PATH. No make, no man page, no sudo. The
version and a sha256 of the artifact are pinned, so the step also stops
depending on whatever an unversioned remote script does next -- relevant
for a repo running Scorecard.

Applied to all three occurrences: lint.yml (lint, hugo-build) and
deploy.yml (deploy).

Verified: both workflows parse, and the step was dry-run end to end
locally -- checksum verifies and `d2 --version` reports v0.7.1 with no
elevated permissions.
@vpetersson
vpetersson merged commit 12a8436 into sbomify:master Jul 30, 2026
2 checks passed
vpetersson pushed a commit that referenced this pull request Jul 30, 2026
Removes draft: true from the v26.7.1 post.

The flag was set intentionally in #118 so that merging would not publish
the post before the copy had been reviewed, on the assumption it would be
removed as a separate step. That step was missed, so the post has been on
master since 12:55 without appearing on the site: Hugo excludes drafts
from production builds, and only the nightly/deploy build with
--buildDrafts would have picked it up.

Verified with a clean production build (no --buildDrafts): the post
renders, and appears in the blog index, the RSS feed, the sitemap, and on
the homepage.
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.

2 participants