Skip to content

Raise stale local/ dependency pins - #799

Merged
alexander-yevsyukov merged 3 commits into
masterfrom
raise-stale-local-pins
Oct 19, 2026
Merged

alexander-yevsyukov merged 3 commits into
masterfrom
raise-stale-local-pins

Conversation

@alexander-yevsyukov

Copy link
Copy Markdown
Contributor

Why

Six local/ pins lagged the versions published from the sibling Spine
repositories. Because ./config/pull copies buildSrc/ wholesale and cannot
tell a deliberate local bump from drift, every consumer that had already moved
ahead got downgraded on each pull, then had to restore the files by hand.

This is a standing pattern, not a one-off. The compiler repository carries
commit cac48c06e2, "Update local dependency pins", which re-applied exactly
these six files after an earlier pull — and the same six had to be restored
again while propagating the recent disableDocumentationTasks() fix. Raising
the pins here removes the cause instead of the symptom.

What

Each version was discovered from the Spine Artifact Registry Maven metadata, as
the dependency-update skill prescribes, and is the newest published version of
the artifact — not merely a copy of what compiler happens to carry:

File Before After
Base.kt 2.0.0-SNAPSHOT.460 2.0.0-SNAPSHOT.461
Logging.kt 2.0.0-SNAPSHOT.425 2.0.0-SNAPSHOT.426
ProtoTap.kt 0.17.2 0.17.3
Reflect.kt 2.0.0-SNAPSHOT.201 2.0.0-SNAPSHOT.202
TestLib.kt 2.0.0-SNAPSHOT.214 2.0.0-SNAPSHOT.215
ToolBase.kt 2.0.0-SNAPSHOT.425 2.0.0-SNAPSHOT.426

ProtoTap moves release → release; the rest move snapshot → snapshot, which the
local/ scope accepts by design.

The two companion pins

Base.versionForBuildScript and ToolBase.dogfoodingVersion move in lockstep
with their version, which is how this repository has kept them since
41cdb18e. Both land on a consumer's root buildscript classpath, so both were
checked before being raised:

  • every target POM is served by the registry; and
  • the jvm-tool-plugins-all POM is identical across .425 and .426 apart
    from its own version, so the dogfooding plugin's dependency graph is unchanged.

Leaving them behind would instead open a skew between the plugin applied to the
build and the libraries it compiles against.

Verification

  • ./gradlew detekt — the command CI gates on — passes. The root project has no
    build task (build is ambiguous with buildDependants / buildEnvironment),
    and config applies no Dokka plugin, so dokkaGenerate is not registered.
  • A standalone Gradle resolution probe resolved all the raised coordinates
    transitively against the Artifact Registry: 147 artifacts, no conflicts and
    no missing POMs, with every Spine artifact landing on a self-consistent version.
  • dependency-audit, spine-code-review, and kotlin-engineer all return
    APPROVE with no Must-fix or Should-fix items.

One thing reviewers should know

./gradlew buildDependants — the ConfigTester task that builds base,
base-types, and core-jvm against the local config — fails on master for a
reason unrelated to this PR
, so it could not be used as verification here.
config-tester.gradle.kts declares val tempFolder = File("./tmp"), a relative
path that Gradle resolves against the daemon's working directory. The checkout
therefore lands in ~/.gradle/daemon/9.8.1/./tmp/base and the child build aborts
with "does not contain a Gradle build" — before any dependency is resolved.
Worth fixing separately with layout.projectDirectory.

🤖 Generated with Claude Code

Six `local/` pins lagged the versions published from the sibling Spine
repositories, so `./config/pull` downgraded them in every consumer that
had already moved ahead. The `compiler` repository paid this tax twice,
restoring the same six files by hand after each pull (see its commit
`cac48c06e2`, "Update local dependency pins"). Raising the pins here
removes the cause rather than the symptom.

Each version was discovered from the Spine Artifact Registry Maven
metadata, as the `dependency-update` skill prescribes, and is the newest
published version of the artifact -- not merely a copy of what `compiler`
carries:

  Base      2.0.0-SNAPSHOT.460 -> 2.0.0-SNAPSHOT.461
  Logging   2.0.0-SNAPSHOT.425 -> 2.0.0-SNAPSHOT.426
  ProtoTap  0.17.2             -> 0.17.3
  Reflect   2.0.0-SNAPSHOT.201 -> 2.0.0-SNAPSHOT.202
  TestLib   2.0.0-SNAPSHOT.214 -> 2.0.0-SNAPSHOT.215
  ToolBase  2.0.0-SNAPSHOT.425 -> 2.0.0-SNAPSHOT.426

`Base.versionForBuildScript` and `ToolBase.dogfoodingVersion` move in
lockstep with their `version`, which is how this repository has kept them
since `41cdb18e`. Both land on a consumer's root `buildscript` classpath,
so both were checked for resolvability first: each target POM is served by
the registry, and the `jvm-tool-plugins-all` POM is identical across
`.425` and `.426` apart from its own version, leaving the dogfooding
plugin's dependency graph unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-19T13:55:07.063141Z 4bb2f6a New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Copilot AI left a comment

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.

🔵 Needs a closer look

No concrete defects were identified, but consumer-build compatibility remains unverified despite the reported dependency-resolution checks.

No open issues 🎉

What changed in this PR

Updates six shared local/ dependency pins so config/pull no longer downgrades consumers already using these versions.

Changes:

  • Raises five snapshot pins and the ProtoTap release pin.
  • Keeps Base’s buildscript and ToolBase’s dogfooding versions aligned with their library versions.
File Description
buildSrc/​src/​main/​kotlin/​io/​spine/​dependency/​local/​ToolBase.kt Raises library and dogfooding pins to snapshot 426.
buildSrc/​src/​main/​kotlin/​io/​spine/​dependency/​local/​TestLib.kt Raises pin to snapshot 215.
buildSrc/​src/​main/​kotlin/​io/​spine/​dependency/​local/​Reflect.kt Raises pin to snapshot 202.
buildSrc/​src/​main/​kotlin/​io/​spine/​dependency/​local/​ProtoTap.kt Raises release pin to 0.17.3.
buildSrc/​src/​main/​kotlin/​io/​spine/​dependency/​local/​Logging.kt Raises pin to snapshot 426.
buildSrc/​src/​main/​kotlin/​io/​spine/​dependency/​local/​Base.kt Raises library and buildscript pins to snapshot 461.

Review effort: Balanced

Copilot AI left a comment

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.

🔵 Needs a closer look

Consumer build compatibility remains unverified because the reported integration check fails before dependency resolution.

No open issues 🎉

Review effort: Balanced

@alexander-yevsyukov
alexander-yevsyukov merged commit 1b6371f into master Oct 19, 2026
2 checks passed
@alexander-yevsyukov
alexander-yevsyukov deleted the raise-stale-local-pins branch October 19, 2026 13:55
@github-project-automation github-project-automation Bot moved this from In Review to ✅ Done in v2.0 Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

3 participants