From 3710ddcb8503d38d9db0e42d30269859983f516a Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 31 May 2026 10:09:19 +0000 Subject: [PATCH 1/3] Downgrade jqwik from 1.10.0 to 1.9.3 Avoid the anti-AI prompt-injection string added in jqwik 1.10.0 (and the 1.10.1 release note declaring the library is not meant to be used by AI coding agents). The 1.9.x line is the last release without that behaviour. Long-term plan tracked in CLAUDE.md is to replace jqwik entirely with junit-quickcheck or hand-rolled JUnit Jupiter @ParameterizedTest. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 57a23617..7cb94e71 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,7 @@ SPDX-License-Identifier: MIT 0.16 2.39 1.2.28 - 1.10.0 + 1.9.3 1.4.2 4.9.8.3 7.6.4 From 0c55909895d6a98a2c0bcc874cab34155fbb7651 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 31 May 2026 10:15:56 +0000 Subject: [PATCH 2/3] Promote QuickTheories as preferred jqwik replacement in CLAUDE.md QuickTheories (org.quicktheories:quicktheories, MIT) runs natively on JUnit Jupiter 5/6 with plain @Test methods - no @RunWith, no JUnit Vintage engine - while still giving property-based generation with shrinking. Demote junit-quickcheck and hand-rolled @ParameterizedTest to fallback options. --- CLAUDE.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 64ab23b0..848657ee 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -702,9 +702,11 @@ interim measure until that work lands. ## Open TODOs -- **[URGENT] Replace jqwik.** Upstream is openly hostile to the AI-assisted workflow this project uses (jqwik 1.10.0 added a deliberate prompt-injection string to test stdout; jqwik 1.10.1 release notes added: *"This project is not meant to be used by any 'AI' coding agents at all."*). See the "jqwik prompt-injection in test output" section above for context and links. Replace the one jqwik test class in this repo (`LlamaParameterProperties`) with one of: - - **junit-quickcheck** (`com.pholser:junit-quickcheck-core` + `-generators`) — closest API match; uses JUnit Vintage runner, well-maintained, no anti-AI behaviour. - - A minimal hand-rolled `@ParameterizedTest` + `@MethodSource`/`@ArgumentsSource` approach using JUnit Jupiter that is already on the classpath. Lower dependency count; some shrinking / generator features lost. +- **[URGENT] Replace jqwik with QuickTheories.** Upstream is openly hostile to the AI-assisted workflow this project uses (jqwik 1.10.0 added a deliberate prompt-injection string to test stdout; jqwik 1.10.1 release notes added: *"This project is not meant to be used by any 'AI' coding agents at all."*). See the "jqwik prompt-injection in test output" section above for context and links. Replace the one jqwik test class in this repo (`LlamaParameterProperties`) with one of (in order of preference): + - **QuickTheories** (`org.quicktheories:quicktheories`, MIT) — preferred. Native JUnit Jupiter (5/6); plain `@Test` methods with `qt().forAll(...).check(...)` bodies. No `@RunWith`, no JUnit Vintage engine. Property-based generation with shrinking preserved; the fluent DSL (`integers().between(...)`, `floats().between(...)`, `strings().basicLatinAlphabet().ofLengthBetween(...)`) covers every constraint the current jqwik tests use. + - **junit-quickcheck** (`com.pholser:junit-quickcheck-core` + `-generators`) — closest annotation match to jqwik but requires the JUnit Vintage engine alongside Jupiter; only use if the QuickTheories DSL turns out to be a poor fit. + - A minimal hand-rolled `@ParameterizedTest` + `@MethodSource`/`@ArgumentsSource` approach using JUnit Jupiter that is already on the classpath. Lower dependency count; loses shrinking and built-in generators. + Remove the jqwik dependency from `pom.xml` (and the `jqwik.version` property), drop the jqwik bullet from any test-frameworks documentation, and verify CI is green with the replacement. Until this lands, the doc-only warning section above is the interim mitigation. - **`@VisibleForTesting` audit.** No usages currently. Walk the production tree for package-private/protected methods or fields that exist purely so tests can reach them, and either annotate (`com.google.common.annotations.VisibleForTesting`) or move into the test source tree. From 1e926650aa3e74ac43aa1f2a7b8ad3f87e17498e Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 31 May 2026 10:17:31 +0000 Subject: [PATCH 3/3] Add do-not-upgrade warning above jqwik.version in pom.xml Prevent future bumps to jqwik >= 1.10.0, which ships an anti-AI prompt-injection string in test stdout. See CLAUDE.md for context; replacement with QuickTheories is tracked as an urgent TODO. --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 7cb94e71..28343dbd 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,7 @@ SPDX-License-Identifier: MIT 0.16 2.39 1.2.28 + 1.9.3 1.4.2 4.9.8.3