Repository navigation
docs(adr): record that the Gradle exclude residue was measured, not assumed - #93
Merged
Merged
Conversation
…ssumed Issue #91 documents two malformed Gradle exclude shapes that still blank a real shell declaration. ADR 0007 named them as accepted; it could not say they were rare, because nothing had looked. Issue #88's population -- the 262 build files fetched for the spelling survey -- was re-run through the shipped recognizer, searching for the hazard both shapes share: a match spanning lines that swallows a line opening a dependency declaration. Four matches span lines, all file filters, none swallowing a declaration. The detector fires on both shapes when fed them, so the zero is not vacuous. The population is filtered rather than universal, so the ADR says rarity, not impossibility. Refs: #91 Signed-off-by: Rodrigo França <rodrigo_rjsf@hotmail.com>
3 tasks done
Measuring #91 against that population cost nothing because the 262 files were still in a prior session's scratchpad. Refetching them would have been ~300 API calls for the same answer. Signed-off-by: Rodrigo França <rodrigo_rjsf@hotmail.com>
The previous wording pointed at a session-scoped scratchpad path, which is reaped -- a future session would follow it, find nothing, and learn only to waste a search. #88's survey comment carries the query, the pagination and the filter, which is the part that stays true. Signed-off-by: Rodrigo França <rodrigo_rjsf@hotmail.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 free
to 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.
Closes #91 once merged, by taking its option 1 — accept the residue — with the measurement its
acceptance criteria required.
What #91 left open
The Gradle
excluderecognizer shipped in #68 keeps two residual holes: an unclosedexclude(withan orphan
)and no brace between them, and a Groovyexcludeline whose trailing comma is followedby a declaration. Both blank a real
langchain4j-…shell…declaration — a false negative, the failure#45 exists to prevent.
#91's acceptance criteria let the issue close as accepted only with ADR 0007 amended to say the
residue was measured and kept. Nothing had measured it: #88's survey read 262 build files for
refusal spellings, not for these two shapes.
What was measured
Both shapes were first re-verified against
shell_artifact_declarationson currentmain(
d5e9682), each with a control, so the mechanism is isolated rather than assumed:{}exclude(line deletedShellDeclaration(line=2, langchain4j-experimental-skills-shell){}ShellDeclaration(line=3, langchain4j-experimental-skills-shell)Then the shipped
_GRADLE_EXCLUDE_CALLwas run over #88's downloaded population — all 262 files —looking for the hazard both shapes share, shape-agnostically: a match that spans lines and swallows a
line opening a dependency declaration (
implementation,api,testImplementation, …).The four multi-line matches are the four wrapped
exclude(calls #88 already classified as filefilters. The two controls prove the zero is not vacuous.
What this PR changes
One paragraph in
docs/adr/0007-l4j-shell-survives-the-graduation-rename.md, plus one AppliedLearning bullet in
CLAUDE.mdrecording that #88's population is still on disk — the fact that madethis measurement free. No code, no test, no
snapshot —
tests/behavior/snapshots/langchain4j_gradle_skill.jsonis untouched, as #91's thirdacceptance criterion requires.
The amendment says rarity, not impossibility: the population is filtered to build files naming
both
langchain4jandexclude, so a zero there bounds how often the shapes occur near the codethis Rule reads — it does not prove they cannot exist.
Deliberately not done
Options 2–4 of #91. Two of them trade one residue for another (an arbitrary line cap; a vocabulary of
Gradle configuration names to keep true), and the third reverses the no-brace-parsing decision
signals.pyis built on. Zero observed instances does not buy any of that.Validation
make lint— passedmake format-check— 204 files already formattedmake test-unit— 2639 passed, 12 skipped, 4 xfailedmake update-snapshots— tree clean afterwards (git statusempty)8734c2c:test-unit,lint,DCO Check,changesall pass