Repository navigation
Run the dependency update wave and harden cascade - #5
alexander-yevsyukov wants to merge 29 commits into
Conversation
The repository was renamed on GitHub to `SpineEventEngine/delivery`, so the submodule's name, path, and URL now follow it. The `cascade` script, the dependency graph, the README, and the rollout docs use the new name. The Maven artifact is still `spine-delivery-server`, so the registry probe marker is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`prep` pulls the consumer's base branch, which moves the recorded `config` pointer but not its checkout, so the tree looked dirty and `prep` stopped. A repository whose `config` submodule was never initialized passed for one that does not consume `config` and silently skipped the pull. `prep` now runs `git submodule update --init -- config` right after branching. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cascade waves run clean builds routinely; the owner approved moving the rule from "ask" to "allow". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`cascade graph` saw local objects only as `Obj.member` or `io.spine.dependency.local.Obj.member`. Build scripts that load the Compiler through `config`'s accessors — `classpath(spineCompiler.pluginLib)` in `core-jvm` and `jdbc-storage` — therefore had no `compiler` edge, so waves never re-pinned the Compiler there. Those repos then built against the published Compiler and its transitive tool-base artifacts, which bundle an older Protobuf runtime. The derivation now treats `spineCompiler.member` and `coreJvmCompiler.member` like their objects (references in `force(...)` still create no edge), and `id(<accessor>.pluginId)` as a plugin application. The regenerated graph gains `compiler -> core-jvm` and `compiler -> jdbc-storage`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Address the documentation review: name the accessors that have a `pluginId` form, say what the false `prep` error is, and quote `delivery` as a name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
🔵 Needs a closer look
The wave remains active, and merging must wait for wave closure and final human review.
0 open findings
What changed in this PR
Supports the SDK-wide dependency refresh wave and hardens summit’s cascade orchestration.
Changes:
- Renames
delivery-servertodeliveryacross submodule configuration and documentation. - Initializes
configat its recorded commit and recognizes compiler accessor aliases in dependency discovery. - Records wave progress and allows
./gradlew cleanwithout a permission prompt.
| File | Description |
|---|---|
| README.md | Updates the delivery repository name and link. |
| docs/rollout/rebuild.md | Updates the delivery publishing prerequisite. |
| docs/dependency-graph.md | Renames delivery and adds compiler dependency edges. |
| cascade | Hardens config preparation and compiler dependency discovery. |
| .gitmodules | Renames the delivery submodule and URL. |
| .claude/settings.json | Allows Gradle clean without prompting. |
| .agents/tasks/toolbase-split-migration.md | Updates the delivery reference. |
| .agents/tasks/cascade.md | Updates delivery references in task documentation. |
| .agents/tasks/cascade-refresh-a0cbbbf.md | Records wave progress and decisions. |
| .agents/tasks/cascade-refresh-a0cbbbf.json | Records machine-readable wave state. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2108d3b59a
ℹ️ 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".
cascade-refresh-a0cbbbf wave and harden cascadecascade
The alias scan's `grep` exits 1 when a repository references no `spineCompiler`/`coreJvmCompiler`, and `pipefail` turned that into a failed `objs` assignment. It only went unnoticed because `derive_scoped` runs inside command substitutions, where `errexit` is not inherited. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`cascade` took the registry serving a repo's marker artifact as proof of a complete publish. A `publish.yml` run that fails midway has already uploaded some modules: compiler `.072` reached the registry without `compiler-testlib`, `cascade` marked it `published-remote`, and `validation` shipped into a CI that could not resolve the missing module. `publish_verdict` now reads the conclusion of the `publish.yml` run for the merge commit of the repo's wave PR. A failed run yields the new state `publish-failed` (with the run linked in `status` and a `FIX-PUBLISH` action), a running one stays `merged`, and `ship` refuses an upstream whose publish failed. Without a recorded PR or run, the registry remains the evidence. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A repo counted as published as soon as the registry served its wave target version. When the base branch takes the same version first, that copy is the base branch's build, not the wave's: core-jvm `.571` merged on master while the wave's `.571` was still unshipped, so `status` showed it published and downstream repos would have shipped against it. `cascade` now requires the wave's own PR to have merged. Otherwise the state is `collision`, and `next` asks to `REBUMP` the repo. `ship` refuses such an upstream, and also an upstream whose target moved past the recorded pin while the old pin stays public. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Name the repo whose wave PR must merge, document exit 3 from the upstream gate, and align the `FIX-PUBLISH` and `REBUMP` re-pin instructions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When a repo's wave PR has merged but the registry does not serve its target yet, `derive_state` fell through to the branch checks. A publish that failed before uploading anything (validation `.465` hit HTTP 429 while configuring) plus commits pushed to the branch after the merge then read as `pinned`, and `next` asked to `prep`, which would bump the repo again. Such a repo is now `merged`, or `publish-failed` once its publish run failed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The summit side of the
cascade-refresh-a0cbbbfwave, which propagates the external dependency refresh inconfig@a0cbbbf(Gradle 9.8.1, Kotlin 2.4.21, Protobuf 4.36.2, KSP 2.3.12, Jackson, H2 2.5, SPDX SBOM publishing, …) to every SDK repository.This PR stays open while the wave runs: the
cascadescript keeps committing the wave state (Update cascade state) to this branch until the closingconfigPR. Please don't merge it before the wave closes.Changes
delivery-serversubmodule todelivery. The repository is nowSpineEventEngine/delivery, so the submodule's name, path, and URL follow it.cascade, the dependency graph, the README, and the rollout docs use the new name. The Maven artifact is stillspine-delivery-server, so the registry probe is unchanged.cascade prepchecksconfigout at the recorded commit before./config/pull.git pullmoved the recorded pointer without the checkout, so the tree looked dirty andprepstopped. An uninitializedconfig(as indelivery) was mistaken for a repo that does not consumeconfigand silently skipped the pull.cascade graphcountsconfig's accessor aliases.classpath(spineCompiler.pluginLib)incore-jvmandjdbc-storagecreated nocompileredge, so the wave never re-pinned the Compiler there; both repos then built against the published Compiler and its transitive tool-base artifacts, which bundle the old Protobuf runtime. The regenerated graph gainscompiler -> core-jvmandcompiler -> jdbc-storage.cascadedetects partial publishes. A repo counted aspublished-remoteas soon as the registry served its marker artifact, but apublish.ymlrun that fails midway has already uploaded some modules (compiler.072reached the registry withoutcompiler-testlib).cascadenow also checks the publish run for the merge commit: a failure yieldspublish-failedwith aFIX-PUBLISHaction, andshiprefuses such an upstream. A merged repo whose publish failed before uploading anything (validation.465hit HTTP 429) is nowmergedorpublish-failedtoo, instead of reading as unprepared and asking forprepagain.cascadedetects version collisions with the base branch. The registry serving a repo's wave version proved nothing when the base branch had taken the same version first: core-jvm.571merged onmasterwhile the wave's.571was unshipped, so the wave showed core-jvm as published, and downstream repos would have shipped againstmaster's build.cascadenow also requires the wave's own PR to have merged; otherwise the state iscollisionwith aREBUMPaction, andshiprefuses such an upstream — or one whose version moved past the recorded pin../gradlew cleanwithout a permission prompt in.claude/settings.json(owner's request)..agents/tasks/cascade-refresh-a0cbbbf.{json,md}— archived when the wave closes.Wave so far
Merged and published: base-libraries#967, reflect#15, dokka-tools#12, logging#151, testlib#15, tool-base#195, ProtoTap#23, and compiler
.074(compiler#92, after.072from compiler#91 published partially). The rest re-pin to Compiler.074, rebuild, and ship as their upstreams publish; core-jvm re-bumped to.572after the collision.BuildSpeedis parked (verify-only).Checks
Summit has no build.
bash -n cascade, shellcheck (no new warnings overmaster), and./cascade graph --checkpass;review-docsapproved the prose.🤖 Generated with Claude Code