Skip to content

Add the core-jvm-gradle-plugin artifact of CoreJvm Compiler - #751

Merged
alexander-yevsyukov merged 7 commits into
masterfrom
add-core-jvm-gradle-plugin
Aug 24, 2026
Merged

Add the core-jvm-gradle-plugin artifact of CoreJvm Compiler#751
alexander-yevsyukov merged 7 commits into
masterfrom
add-core-jvm-gradle-plugin

Conversation

@alexander-yevsyukov

@alexander-yevsyukovalexander-yevsyukov commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Since core-jvm-compiler 2.0.0-SNAPSHOT.090, the CoreJvm Gradle Plugin lives
in its own thin JAR artifact, core-jvm-gradle-plugin, and core-jvm-plugins
carries 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.

CoreJvmCompiler speaks in terms of roles

Both version and dogfoodingVersion move to 2.0.0-SNAPSHOT.090, the first
release 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;
  • the fatJar terminology exposed an implementation detail that may change
    without affecting consumers.

The object now names roles instead of packaging:

Property / functionResolves with
gradlePlugin, gradlePlugin(version)dogfoodingVersion — the build classpath
compilerPlugins, compilerPlugins(version)version — integration tests
gradlePluginArtifact, compilerPluginsArtifactartifact names

Consumers referencing pluginLib or pluginsArtifact must move to the new
names on their next ./config/pull.

See SpineEventEngine/core-jvm-compiler#111 for the module split.

.idea/kotlinc.xml becomes project-local

IDEA 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:

  • migrate generalizes the misc.xml handling into a loop over both
    IDE-managed files, covering the untracking and the preserve/restore
    around the .idea overlay, so a consumer's own Kotlin settings survive a
    pull instead of being clobbered by whatever the puller has locally.
  • update-gitignore.sh retires the !.idea/kotlinc.xml negation the baseline
    shipped from 2021 until 2025. A legacy raw-copied .gitignore still carries
    it, and — .gitignore being last-match-wins — it re-includes the file the
    current baseline ignores.
  • Adding a second entry to retired_negations surfaced a latent bug: awk -v
    applies 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.sh covers the new negation in both merge
    paths (steady-state and first-migration).
  • scripts/test-migrate-ide-files.sh is new: it runs the real migrate
    against 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, and
    that 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

Base2.0.0-SNAPSHOT.441, Compiler2.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-throttling

Adds .agents/tasks/maven-central-throttling.md, drafted in
core-jvm-compiler after the 2026-08-19/20 Maven Central consumption-limit
incident, with three decision records from its review here:

Note that .agents/tasks/ is repo-local by design — migrate and
adopt-shared-agents deliberately skip it — so this file records the plan in
config and does not propagate to consumers.

🤖 Generated with Claude Code

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>
@alexander-yevsyukovalexander-yevsyukov moved this to 🏗 In progress in v2.0Aug 20, 2026
alexander-yevsyukovand others added 3 commits August 21, 2026 00:29
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>

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread.idea/kotlinc.xml Outdated
alexander-yevsyukovand others added 2 commits August 24, 2026 14:32
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>
@alexander-yevsyukovalexander-yevsyukov moved this from 🏗 In progress to In Review in v2.0Aug 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>
@alexander-yevsyukov
alexander-yevsyukov merged commit b728a70 into masterAug 24, 2026
2 checks passed
@alexander-yevsyukov
alexander-yevsyukov deleted the add-core-jvm-gradle-plugin branch August 24, 2026 14:26
@github-project-automationgithub-project-automationBot moved this from In Review to ✅ Done in v2.0Aug 24, 2026
Sign up for freeto 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.

2 participants

@alexander-yevsyukov@armiol