Skip to content

Build Spring Boot 4.0.0–4.0.7: the component is in the tag, only the content archive is missing #137

Description

@amondnet

eraFor returns undefined for 4.0.0–4.0.7, so detect-upstream-versions.ts never offers them and
fetch-upstream.ts refuses them. They sit between the two Boot eras: the 4.x component path, but no
published content archive.

What is actually missing (probed 2026-09-16)

Coordinate HEAD
spring-boot-docs/4.0.0/…-root-aggregate-content.zip 404
spring-boot-docs/4.0.7/…-root-aggregate-content.zip 404
spring-boot-docs/4.0.8/…-root-aggregate-content.zip 200
spring-boot-docs/4.1.0/…-root-aggregate-content.zip 404 (already handled — a publication fact caught by the availability gate, not an era gap)
spring-boot-docs/4.1.1/…-root-aggregate-content.zip 200

The authored half is present and in the 4.x location:

v4.0.0  documentation/spring-boot-docs/src/docs/antora/  ->  antora.yml, modules/, nav.adoc

So this is exactly the situation that produced the synthesized era for 3.3–3.x (ADR-0004): the prose
is in the tag, the generated half is not published, and it has to be rebuilt.

Why a third era rather than widening the second

eraFor picks by range, and each era pins a component path and an assembly. 4.0.0–4.0.7 share the
4.x path with the archive era but must not take its assembly — merging an archive that does not
exist is a 404, and taking the checkout alone converts with unresolved attributes (measured for
3.5.16 in ADR-0004: 350 unresolved attributes, 837 unresolved configprop:, 326 empty
include-code:: groups).

Declared oldest first, the table becomes: 3.3.0–<4.0.0 synthesized, 4.0.0–<4.0.8 synthesized (4.x
paths)
, >=4.0.8 archive.

The synthesis inputs exist at v4.0.0, at moved paths

SynthesisSources field 3.3–3.x v4.0.0
examplesPath spring-boot-project/spring-boot-docs/src/main documentation/spring-boot-docs/src/main
staticAttributesPath buildSrc/…/build/antora/antora-asciidoc-attributes.properties unchanged — confirmed present
bomBuildScriptPath spring-boot-project/spring-boot-dependencies/build.gradle platform/spring-boot-dependencies/build.gradle
gradlePropertiesPath gradle.properties unchanged
metadataArtifacts 8 spring-boot-* jars unverified — see below

spring-boot, spring-boot-autoconfigure and spring-boot-actuator all publish a 4.0.0 jar
(HEAD 200), so the mechanism carries over.

Open questions to settle first

  • Which 4.0.x jars still ship META-INF/spring-configuration-metadata.json. Boot 4 restructured
    its modules, so BOOT_3_METADATA_ARTIFACTS is not transferable. Measure it against a real 4.0.x
    jar set the way that list was measured against 3.5.16 — spring-boot-test was excluded there
    because it publishes a jar and no metadata file.
  • Whether the attributes properties file kept its shape across the 4.x restructure, since
    antora-attributes.ts parses it.
  • Whether the BOM script is still readable by bom-libraries.ts at platform/.

Work

  • measure the 4.0.x metadata-jar set
  • add the third era to PROJECTS.boot.eras with the 4.x synthesis paths
  • extend tests/unit/upstream-sources.test.ts (era selection at 4.0.0, 4.0.7, 4.0.8)
  • convert 4.0.0 and 4.0.7 end to end under --strict, and compare the unresolved-attribute
    count against the 4.0.8 archive build
  • release the eight versions and record them in catalog.json
  • update the support table in README.md and the release-pipeline skill

Done when

bun run scripts/detect-upstream-versions.ts --project boot reports 4.0.0–4.0.7 as buildable, and
the catalog carries them.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions