Uh oh!
There was an error while loading. Please reload this page.
Add the core-jvm-gradle-plugin artifact of CoreJvm Compiler - #751
Merged
Conversation
Since `core-jvm-compiler` 2.0.0-SNAPSHOT.090, the CoreJvm Gradle Plugin lives in its own thin JAR artifact, and the `core-jvm-plugins` fat JAR carries only the Compiler plugins. Declare the new artifact in the `CoreJvmCompiler` dependency object, so that consumer repositories can refer to both artifacts by name. See SpineEventEngine/core-jvm-compiler#111 for the module split. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Both `version` and `dogfoodingVersion` move to `2.0.0-SNAPSHOT.090` — the first release providing the `core-jvm-gradle-plugin` artifact. The properties speaking retired artifacts or packaging details are gone rather than deprecated: `pluginLib` named an artifact that no longer exists, and the `fatJar` terminology exposed an implementation detail that may change without affecting consumers. The object now speaks in terms of roles: `gradlePlugin` (resolved with `dogfoodingVersion`) and `compilerPlugins` (resolved with `version`), each with a one-arg overload for explicit versions. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
IDEA rewrites `kotlinc.xml` on its own (JVM target, bundled Kotlin plugin version), so a tracked copy churns on every machine. The file stays on disk but is untracked here, and consumers get the same treatment on their next `./config/pull`: - `migrate` generalizes the `misc.xml` untracking and the preserve/restore around the `.idea` overlay into a loop over both IDE-managed files, so a consumer's own settings survive the pull and any committed copy is untracked. - `update-gitignore.sh` retires the `!.idea/kotlinc.xml` negation the baseline shipped until 2025, so legacy raw-copied `.gitignore`s stop re-including the file. The `retired_negations` list now reaches `awk` via `ENVIRON[]` — an `-v` assignment cannot carry the embedded newline a multi-entry list requires. - `test-update-gitignore.sh` covers the new negation in both merge paths; the new `test-migrate-ide-files.sh` pins `migrate`'s half end-to-end: untracked, on disk, ignored, consumer content preserved, `git add -A` proof, idempotent re-run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The plan, drafted in `core-jvm-compiler` after the 2026-08-19/20 Central consumption-limit incident, arrives with two decision records from its review here: - Phase 1: the Windows CI job runs only on pull requests, so no shared Gradle cache entry can exist for it and every Windows PR job faces Central cold. Workflow changes are deferred by decision — observe CI, re-open on the next Central-caused failure. - Phase 2: migrating the affected `ProjectBuilder` specs to TestKit was considered and set aside; the stub fixture remains the approach, with a per-test rule for choosing between the two. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:a8f55a7e8a
ℹ️ 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Uh oh!
There was an error while loading. Please reload this page.
The `ProjectBuilder` cache bypass is now filed as gradle/gradle#38915, and gradle/gradle#38918 — an open community PR — fixes it by switching `ProjectBuilder` services to `DefaultCacheFactory`. If it lands, the Phase 2 fixture rollout shrinks to a Gradle wrapper upgrade across repos. Phase 2 is held with explicit resume conditions: PR rejected, stalled past a quarter, or another Central block before a fixed Gradle release is adopted. `core-jvm-compiler` keeps its local fixture meanwhile. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Base: `2.0.0-SNAPSHOT.440` -> `2.0.0-SNAPSHOT.441` - Compiler: `2.0.0-SNAPSHOT.066` -> `2.0.0-SNAPSHOT.067` - ProtoTap: `0.16.0` -> `0.17.0` `Base.versionForBuildScript` and `Compiler.fallbackDfVersion` were in lockstep with their primary versions, so they move together. All targets are fully published: `compiler-gradle-plugin` and `compiler-backend` at `.067`, `spine-format` and `spine-annotations` at `.441`, and every ProtoTap artifact at `0.17.0`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
armiol
approved these changes
Aug 24, 2026
Commit 57099b5 intended to untrack this file but committed its IDE churn instead: the staged `git rm --cached` was lost to a `git reset` when splitting the work into commits, and re-staging the path added the tracked file back. The file stays on disk and is ignored by the `.idea/*.xml` rule. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Since
core-jvm-compiler2.0.0-SNAPSHOT.090, the CoreJvm Gradle Plugin livesin its own thin JAR artifact,
core-jvm-gradle-plugin, andcore-jvm-pluginscarries only the Compiler plugins. The POM of the plugin artifact declares a
runtime dependency on the latter, so consumers receive the same graph as
before the split.
CoreJvmCompilerspeaks in terms of rolesBoth
versionanddogfoodingVersionmove to2.0.0-SNAPSHOT.090, the firstrelease providing the new artifact. With no supported version predating the
split, the properties naming retired artifacts or packaging details are
removed rather than deprecated:
pluginLib(property and function) named an artifact that no longer exists;fatJarterminology exposed an implementation detail that may changewithout affecting consumers.
The object now names roles instead of packaging:
gradlePlugin,gradlePlugin(version)dogfoodingVersion— the build classpathcompilerPlugins,compilerPlugins(version)version— integration testsgradlePluginArtifact,compilerPluginsArtifactConsumers referencing
pluginLiborpluginsArtifactmust move to the newnames on their next
./config/pull.See SpineEventEngine/core-jvm-compiler#111 for the module split.
.idea/kotlinc.xmlbecomes project-localIDEA rewrites this file on its own — Kotlin JVM target and bundled plugin
version — so a tracked copy churns on every machine. It is now ignored and
untracked here, and consumers get the same treatment on their next
./config/pull:migrategeneralizes themisc.xmlhandling into a loop over bothIDE-managed files, covering the untracking and the preserve/restore
around the
.ideaoverlay, so a consumer's own Kotlin settings survive apull instead of being clobbered by whatever the puller has locally.
update-gitignore.shretires the!.idea/kotlinc.xmlnegation the baselineshipped from 2021 until 2025. A legacy raw-copied
.gitignorestill carriesit, and —
.gitignorebeing last-match-wins — it re-includes the file thecurrent baseline ignores.
retired_negationssurfaced a latent bug:awk -vapplies escape processing and cannot carry an embedded newline, so the
documented "newline-separated" list failed on its first multi-entry use.
Both call sites now read it through
ENVIRON[].Tests
scripts/test-update-gitignore.shcovers the new negation in both mergepaths (steady-state and first-migration).
scripts/test-migrate-ide-files.shis new: it runs the realmigrateagainst a throwaway consumer that starts with both files committed and both
retired negations present, then asserts they end up untracked, on disk,
ignored, carrying the consumer's own content, immune to
git add -A, andthat a second run is a quiet no-op leaving a clean tree.
Both suites were mutation-tested — each was confirmed to fail when the
mechanism it guards is deliberately broken.
Dependency bumps
Base→2.0.0-SNAPSHOT.441,Compiler→2.0.0-SNAPSHOT.067,ProtoTap→
0.17.0. Paired constants (versionForBuildScript,fallbackDfVersion)move with their primaries; all sibling artifacts were verified published at
the target versions.
Task plan:
maven-central-throttlingAdds
.agents/tasks/maven-central-throttling.md, drafted incore-jvm-compilerafter the 2026-08-19/20 Maven Central consumption-limitincident, with three decision records from its review here:
windows-latestruns in exactly oneworkflow, triggered on
pull_requestonly. GitHub caches cross branchesonly from the default branch, so no shared Windows entry can ever be
written and every Windows PR job faces Central cold — precisely the
observed
403onkotlin-stdlib. Workflow changes are held; re-open onthe next Central-caused CI failure.
uncached
.gradle-test-kitdirectory rather than remove it, and cost thewhite-box assertions these specs rely on.
ProjectBuildersilently bypasses the dependency cache, causing full re-downloads per test run — now triggers Maven Central 429 blocks gradle/gradle#38915, with Reuse dependency caches in ProjectBuilder gradle/gradle#38918 fixing it. If that lands, theplanned fixture rollout shrinks to a Gradle wrapper upgrade.
Note that
.agents/tasks/is repo-local by design —migrateandadopt-shared-agentsdeliberately skip it — so this file records the plan inconfigand does not propagate to consumers.🤖 Generated with Claude Code