Skip to content

Extends docs/upgrading-libraries.md into the full platform inventory - #5267

Merged
misaugstad merged 2 commits into
developfrom
4399-platform-inventory
Sep 9, 2026
Merged

Extends docs/upgrading-libraries.md into the full platform inventory#5267
misaugstad merged 2 commits into
developfrom
4399-platform-inventory

Conversation

@misaugstad

Copy link
Copy Markdown
Member

resolves #4399

Two of that issue's three bullets had never landed anywhere; the third (a committed package-lock.json) landed with #5152.

The platform inventory

docs/upgrading-libraries.md gains a Platform section covering what the app runs on rather than links against:

  • Runtimes and base images — one table for Java 17, Node 24, both Pythons, and the two base images, each with a latest, an upstream EOL, and where it's pinned. Notes cover what gates each move: focal is what makes python3 mean 3.8 and what makes sbt --client unusable (glibc 2.31 vs the 2.32 sbtn needs), and the postgis/postgis:16-3.5 line is a dead end — pgdg's bullseye pool stops at PostGIS 3.5.2 and there's no 16-3.6 tag or bookworm variant for 16, so newer geospatial libraries mean moving the Postgres major and the base OS together.
  • Database server — dev/prod/latest for OS, Postgres, PostGIS, GEOS, PROJ and GDAL. Prod's column is the audit output from Audit production environment: containerization + Postgres/PostGIS/GEOS/PROJ stack #4398 (read off makelab1 on 2026-07-01), which had never made it into the repo. Dev is simultaneously ahead on PostGIS and five years behind on GEOS/PROJ, which is the skew behind the JIT segfault in projectsidewalk/db image: broken Postgres JIT (LLVM 16 bitcode vs LLVM 11 runtime) crashes expensive PostGIS queries #4376 and the withJitOff wrapper in ConfigTable.

Every "latest" and EOL figure was checked on 2026-09-09 against endoflife.date, the upstream release APIs, Docker Hub and apt.postgresql.org; the section is date-stamped so the next reader re-checks rather than trusts.

Two things surfaced that are worth a maintainer's eyes, both recorded in the doc:

The vendor freshness check

tools/check-vendor-versions.mjs closes the frontend blind spot from the third bullet. Dependabot only reads package.json (build tooling), so for the self-hosted libraries under public/vendor/ this doc is the inventory — and it's a hand-copy of the versions baked into the filenames, so the two drift silently. The check enforces:

  1. every folder under public/vendor/ is listed in the doc,
  2. every version in a vendor filename appears there (an upgrade that skipped the doc),
  3. every version the doc claims exists on disk (an entry left behind by an upgrade or a removal).

It found vega (5.30.0 / vega-lite 5.21.0 / vega-embed 6.29.0) and animate.css missing from the inventory entirely — both now have entries. The 12 vendor files with no version in their name are reported rather than failed, since they can't be checked either way.

It deliberately doesn't ask npm for the newest release. Several of these aren't plain npm packages (the Infra3d build is locally patched, the photo-sphere-viewer bundle is ours, bootstrap-accessibility vendors two other libraries inside itself) and a third of the list is frozen on purpose, so such a report would need a hand-kept map of npm names and freeze reasons — a second copy of the doc — and would nag about decisions already made.

Wired in as make lint-vendor-versions, in the make lint loop, and as a blocking step in the existing frontend CI job, so it rides the already-required Frontend (build) check and needs no branch-protection change.

Verification

make lint passes with the new gate in it. The check was confirmed to fail correctly by faking a version bump in the doc, and the runtime versions in the table were read out of the running containers.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FEcwN4MLDty5wnkhZ8Et75

misaugstad and others added 2 commits September 9, 2026 13:33
Records what the app runs on, not just what it links against: the runtimes
(Java, Node, both Pythons), both container base images, and the dev/prod
Postgres/PostGIS/GEOS/PROJ/GDAL stacks, each with a latest and an EOL column.
Prod's numbers come from the #4398 audit; prod's JVM has never been collected.

Adds tools/check-vendor-versions.mjs, which cross-checks public/vendor/ against
the doc: every folder listed, every filename version documented, every
documented version on disk. Dependabot only reads package.json, so that doc is
the whole inventory for the self-hosted libraries and nothing caught it drifting.
It found vega and animate.css missing from the list entirely; both now have
entries.

Wired in as make lint-vendor-versions, in the make lint loop and as a blocking
step in the frontend CI job.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FEcwN4MLDty5wnkhZ8Et75
The section-wide search passed things it shouldn't: prose exempted whatever it
mentioned (the selectize entry names tom-select, so a tom-select folder would
have passed unlisted), and the intro's example filename alone satisfied a
library whose entry had been deleted. Every check now runs against the entry
that covers a folder, with version sets compared as parsed tokens rather than
substrings, so 1.4.1 no longer matches inside 21.4.15.

Also fails on a file loose in the vendor root, and prints the unversioned-file
list on failure as well as on success.

Doc fixes from the same review: animate.css is used by the tutorial's fades as
well as the compass, sbtn wants glibc 2.32 and 2.34, the Python patch versions
no longer appear twice, and Dependabot does watch pip/docker/actions — what it
never watches is public/vendor/.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FEcwN4MLDty5wnkhZ8Et75
@misaugstad
misaugstad merged commit 09b1ca1 into develop Sep 9, 2026
10 checks passed
@misaugstad
misaugstad deleted the 4399-platform-inventory branch September 9, 2026 21:16
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.

Extend docs/upgrading-libraries.md into the full platform inventory

1 participant