Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
dedb583
feat: add `delivery-server`, `BuildSpeed`, and `documentation` submod…
alexander-yevsyukov Aug 28, 2026
a1b067c
chore: float the pinned submodules to their published tips
alexander-yevsyukov Aug 28, 2026
3024fec
feat: introduce the `cascade` cross-repository wave machinery
alexander-yevsyukov Aug 29, 2026
12d57bc
chore: allow protocol-governed autonomous commits in summit
alexander-yevsyukov Aug 29, 2026
6f8a788
Merge branch 'more-modules-work' into cascade-machinery
alexander-yevsyukov Aug 29, 2026
7fa668f
fix: validate the JDK version in `cascade`'s `require_java`
alexander-yevsyukov Aug 29, 2026
033e314
chore: float `documentation` to master with the renormalized `gradlew…
alexander-yevsyukov Aug 29, 2026
4884cf4
Update cascade state
alexander-yevsyukov Aug 29, 2026
e6f8c63
Update cascade state
alexander-yevsyukov Aug 29, 2026
84d8b7d
Update cascade state
alexander-yevsyukov Aug 29, 2026
6af5a4c
Update cascade state
alexander-yevsyukov Aug 30, 2026
4ea67da
Update cascade state
alexander-yevsyukov Aug 30, 2026
17dc1f1
Update cascade state
alexander-yevsyukov Aug 30, 2026
8974ac1
Gate ship on published floors, fix the testlib marker
alexander-yevsyukov Aug 30, 2026
2661036
Update cascade state
alexander-yevsyukov Aug 30, 2026
f35a159
Update cascade state
alexander-yevsyukov Aug 30, 2026
aab1c11
Show the derived version when a wave records no target
alexander-yevsyukov Aug 30, 2026
c43787e
Let a non-config repo through prep, park BuildSpeed
alexander-yevsyukov Aug 30, 2026
61439a0
Scope the wave branch in the status table
alexander-yevsyukov Aug 30, 2026
c5637ff
Record the context-parameters fix for the closing PR
alexander-yevsyukov Aug 30, 2026
b57fa63
Update cascade state
alexander-yevsyukov Aug 30, 2026
0eba115
Order `money` after `core-jvm-compiler`
alexander-yevsyukov Aug 30, 2026
7d72a63
Build the tools before the libraries
alexander-yevsyukov Aug 30, 2026
89888a5
Correct the note on the context-parameters fix
alexander-yevsyukov Aug 30, 2026
2d62eb2
Treat a published target version as terminal
alexander-yevsyukov Sep 1, 2026
21a22c6
Update cascade state
alexander-yevsyukov Sep 1, 2026
67bcd03
Record the rule on deprecations in touched code
alexander-yevsyukov Sep 1, 2026
5d63761
Update cascade state
alexander-yevsyukov Sep 1, 2026
81a2232
Update cascade state
alexander-yevsyukov Sep 2, 2026
750f0e6
Update cascade state
alexander-yevsyukov Sep 2, 2026
b150dc9
Add dokka-tools to the dependency graph
alexander-yevsyukov Sep 2, 2026
b799ba6
Add `dokka-tools` to the dependency graph
alexander-yevsyukov Sep 2, 2026
1646a0a
Update cascade state
alexander-yevsyukov Sep 2, 2026
d9f36fa
Update cascade state
alexander-yevsyukov Sep 2, 2026
7ce5af3
Record which Gradle-10 deprecations are third-party
alexander-yevsyukov Sep 2, 2026
e61a90e
Update cascade state
alexander-yevsyukov Sep 2, 2026
2fdfae7
Update cascade state
alexander-yevsyukov Sep 2, 2026
1ffa251
Update cascade state
alexander-yevsyukov Sep 2, 2026
2a32967
Fix which version constants `close` rewrites
alexander-yevsyukov Sep 3, 2026
2fb7f83
Update cascade state
alexander-yevsyukov Sep 3, 2026
d7ca136
Point submodules at the wave's merged masters
alexander-yevsyukov Sep 3, 2026
7c01d61
Address the pre-PR review
alexander-yevsyukov Sep 3, 2026
44f170a
Address the PR review
alexander-yevsyukov Sep 3, 2026
e679d6e
Widen the deprecation rule to bumps, not just edits
alexander-yevsyukov Sep 3, 2026
b69f1ad
Archive the completed wave's task files
alexander-yevsyukov Sep 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .agents/memory/MEMORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Team memory

One line per memory. Read this at the start of every session; open a file
only when its hook is relevant.

- [Own the deprecations your change introduces](own-deprecations-your-change-introduces.md) — a bump deprecates untouched code too; fix mechanical, park semantic, and never use `-q`.
69 changes: 69 additions & 0 deletions .agents/memory/own-deprecations-your-change-introduces.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
name: own-deprecations-your-change-introduces
description: Fix deprecation warnings a change introduces, even in untouched lines
metadata:
type: feedback
---

You own every deprecation warning your change introduces — whether or not
your diff touches the line that warns. A change introduces one in two ways:

- **You edited the line.** A deprecation already sitting on a line you
rewrite is in scope, even though it predates your change.
- **You moved the baseline under it.** A dependency bump — a cascade wave
propagating a new version, a Gradle upgrade — can deprecate API that
untouched code uses. Nothing in the diff points at those lines, which is
exactly why nobody looks at them.

**How far to go** — the same split [[cascade-adapt]] applies to build
breakage:

- **Mechanical** — the warning names a successor, or one is documented, and
it preserves behaviour: fix it in the same PR. A bump is not finished
while it emits warnings a successor would silence.
- **Semantic** — the replacement changes behaviour, or the surface is large
enough to need design judgement: park the repo, write the diagnosis into
the task file, and stop. Never guess at a replacement's semantics to keep
a wave moving.

**Why:** in `config#754` a fixture line was rewritten while
`val name by configurations.creating { }` was left in place. That syntax is
deprecated *and scheduled for removal in Gradle 10*, so the file would have
stopped compiling on that upgrade, and a reviewer had to catch it. The bump
case is worse: no line in the diff points at the problem, so a warning can
ride along through every repo a wave touches and surface only at removal,
far from the change that caused it.

**How to apply:**

- Verify with `./gradlew <task> --warning-mode all`. Do **not** use `-q`:
it suppresses the nagging summary, which is exactly how the case above was
missed.
- A failed build aborts before the deprecation summary prints — re-check
after the build is green, not only on the failing run.
- **After a dependency bump, read that summary even when nothing in the diff
looks related.** That is the case this rule exists for.
- Ask about the whole construct, not one half of it. Asking a reviewer
whether `isCanBeResolved` was deprecated returned a correct "no" while the
`by ... creating` delegate wrapping it was the deprecated part.
- Confirm the replacement is itself clean and preserves behaviour before
committing; Gradle's suggested replacement is usually right, but
role-based factories can reject usages the legacy form allowed.

**Known third-party sources — do not chase these again:**

Two Gradle-10 deprecations fire in every Spine build and originate in
third-party plugins, so no Spine repo can fix them in its own code. Replacing
them is a dedicated dependency-update task, never adapt work:

- `Project.getProperties` — Gradle Doctor (`com.osacky.doctor` 0.12.1), from
`DoctorPlugin.apply`.
- `ReportingExtension.file(String)` — the detekt Gradle plugin. The frame
reads `detekt-code-analysis.gradle.kts:67`, which looks like a `config` bug
but is the `plugins { id("io.gitlab.arturbosch.detekt") }` line; the call is
inside the plugin, which uses it to derive its default reports directory.

Attribute a warning with `--warning-mode all --stacktrace` and look for an
`io.spine.*` or `*_gradle` frame before assuming the deprecation is ours. A
frame naming a `.gradle.kts` file may still be a third-party plugin being
applied on that line.
Loading