You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Code-health suggestion (proactive — staged for your review)
Category: test-gap
Where:docs/releasing.md:113 (local dry run, step 4) — and the absent samples/multiproject/gradlew
Current:
samples/multiproject is the #194 canary. Its own README says so in as many words:
That is [#194]: kplusplus 0.3.4 drove krapper over ksrpc (#185) … and every multi-project consumer died with NoSuchMethodError on its first kplusplusSync. … It shipped broken because every other sample is single-project … So: keep this sample two projects … That is the entire test.
:bindings:build is step 4 of the release local dry run (docs/releasing.md), which is where this sample is exercised. It has no CI workflow of its own.
So the whole verification budget for a bug that shipped and broke every multi-project consumer is one manual line in docs/releasing.md. That line is:
# 4. ...and that a MULTI-PROJECT consumer can drive the plugin at all (the #194 guard: ...)
(cd samples/multiproject && ./gradlew :bindings:build)
samples/multiproject has no Gradle wrapper. It was created in 0a5a705 (2026-07-29) with exactly six files and never had one, so that command has never been runnable. It does not fail the guard — it fails to reach it, with a shell error that looks like a typo:
And the fix is confirmed to be only the path prefix — samples/multiproject/README.md already uses ../../gradlew, and the repo-root wrapper drives this build correctly:
$ cd samples/multiproject && ../../gradlew projects --no-daemonRoot project 'multiproject'\--- Project ':bindings'BUILD SUCCESSFUL in 10sexit=0
Also worth noting: steps 2 and 3 of the same dry run do work (samples/minimal has a wrapper), so a person following the runbook top-to-bottom gets three green steps and one no such file or directory — the most skippable-looking failure there is, at the one step that guards a shipped-broken release.
Proposed:
Fix the command in docs/releasing.md:113 to (cd samples/multiproject && ../../gradlew :bindings:build), matching samples/multiproject/README.md. (Or commit a wrapper to samples/multiproject, matching samples/minimal/samples/v8 — but the sample is deliberately not a standalone copy-paste consumer, so the prefix is the smaller, more honest change.)
Why:#194 is the canonical "it shipped broken because nothing exercised the shape" defect in this repo, and the remedy it earned is a manual step whose command exits 127. A guard that cannot be invoked is indistinguishable from no guard, and this one has been in that state for the entire time it has existed (2026-07-29 → today), across two releases.
Effort: mechanical (the doc fix); small refactor (if a workflow is added)
Filed by the nightly code-health pass. To act on it: relabel agent-workable (it'll flow into triage→work). To decline: close it — it won't be suggested again.
Code-health suggestion (proactive — staged for your review)
Category: test-gap
Where:
docs/releasing.md:113(local dry run, step 4) — and the absentsamples/multiproject/gradlewCurrent:
samples/multiprojectis the #194 canary. Its own README says so in as many words:So the whole verification budget for a bug that shipped and broke every multi-project consumer is one manual line in
docs/releasing.md. That line is:samples/multiprojecthas no Gradle wrapper. It was created in0a5a705(2026-07-29) with exactly six files and never had one, so that command has never been runnable. It does not fail the guard — it fails to reach it, with a shell error that looks like a typo:And the fix is confirmed to be only the path prefix —
samples/multiproject/README.mdalready uses../../gradlew, and the repo-root wrapper drives this build correctly:Also worth noting: steps 2 and 3 of the same dry run do work (
samples/minimalhas a wrapper), so a person following the runbook top-to-bottom gets three green steps and oneno such file or directory— the most skippable-looking failure there is, at the one step that guards a shipped-broken release.Proposed:
docs/releasing.md:113to(cd samples/multiproject && ../../gradlew :bindings:build), matchingsamples/multiproject/README.md. (Or commit a wrapper tosamples/multiproject, matchingsamples/minimal/samples/v8— but the sample is deliberately not a standalone copy-paste consumer, so the prefix is the smaller, more honest change.)samples-minimal.ymlexists for exactly this reason on the other from-published sample; the 0.3.4: NoSuchMethodError in multi-project consumers — plugin classloader shadows coroutines to 1.8.0 #194 shape is not more expensive to run than the samples/minimal:nativeTest does not compile — property assignment vs generated accessor #195 one, and today the only difference between them is that one got a workflow and one got a sentence in a doc.Why: #194 is the canonical "it shipped broken because nothing exercised the shape" defect in this repo, and the remedy it earned is a manual step whose command exits 127. A guard that cannot be invoked is indistinguishable from no guard, and this one has been in that state for the entire time it has existed (2026-07-29 → today), across two releases.
Effort: mechanical (the doc fix); small refactor (if a workflow is added)
Filed by the nightly code-health pass. To act on it: relabel
agent-workable(it'll flow into triage→work). To decline: close it — it won't be suggested again.