Commit 282a52430b07c582a8a3dabbbd8b53d09b44208e

Authored by zichun
1 parent dbc34540

chore(usr): 移除 JDK25 工具链导致的过期红色 test-gate 证据 r1-r5

这 5 份证据均为 JAVA_HOME 未设、默认 JDK25 × Byte Buddy 不兼容产生的 RED,
非业务/测试缺陷。JDK 已在 scripts/test.mjs 固定为 17,重跑 test-gate 将从
attempt r1 重新生成绿色证据;若保留旧 red(attempt 号更大)会让模块报告阶段
'最后一份必须 green' 前置校验误判 halt。
docs/superpowers/module-reports/usr-test-gate-r1.md deleted
1 -# 模块 usr — 硬测试闸证据(attempt: 1)  
2 -  
3 -- **模块**: usr  
4 -- **阶段**: backend  
5 -- **attempt**: 1  
6 -- **分支**: module-usr  
7 -- **命令**: `node /Users/reporkey/Desktop/mvp/test6/scripts/test.mjs`  
8 -- **执行时间窗口**: 2026-06-01 15:26:20 ~ 15:27 CST(约 1 分钟)  
9 -- **结论**: 🔴 RED(exit_code = 1,errors = 9)  
10 -  
11 ----  
12 -  
13 -## ① 闸门阶段执行情况  
14 -  
15 -`scripts/test.mjs` 顺序:setup-db → build → lint → unit+integration → e2e。  
16 -  
17 -| 阶段 | 命令 | 结果 |  
18 -|------|------|------|  
19 -| 1/5 setup test db | `node scripts/setup-test-db.mjs` | ✅ 通过(DROP+CREATE `xlyweberp_vibe_erp_test` @ 118.178.19.35:3318) |  
20 -| 2/5 build | `mvn -q -B -DskipTests package` | ✅ 通过 |  
21 -| 3/5 lint | `mvn -q -B checkstyle:check` | ✅ 通过 |  
22 -| 4/5 unit + integration | `mvn -q -B test` | 🔴 失败(9 errors) |  
23 -| 5/5 e2e | echo 占位 | 未执行(脚本在 4/5 非零退出即终止) |  
24 -  
25 -Flyway 在 Spring Boot 测试启动时自动 apply:`Successfully applied 1 migration to schema xlyweberp_vibe_erp_test, now at version v1`。  
26 -  
27 ----  
28 -  
29 -## ② Maven Surefire 汇总  
30 -  
31 -- **Tests run = 125**  
32 -- **Passed = 116**  
33 -- **Failures = 0**  
34 -- **Errors = 9**  
35 -- **Skipped = 0**  
36 -  
37 -全部 9 个 error 集中在单个测试类:`com.xly.erp.modules.usr.service.UsrAuthServiceImplTest`(该类 9/9 全部 error)。其余 24 个测试类(含 usr 模块的 controller / mapper / dto / vo / IT 集成测试 + common 公共组件)全绿。  
38 -  
39 -### 失败用例清单(9 条,均为 ERROR)  
40 -  
41 -```  
42 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.userNotFoundThrows40101  
43 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.wrongPasswordThrows40101  
44 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.disabledUserThrows40302AfterPasswordOk  
45 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.illegalCompanyIdThrows40001  
46 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.listCompaniesMapsAllRows  
47 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.notFoundAndWrongPasswordSameCodeAndMessage  
48 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.rateLimitAfterMaxFailThrows42901  
49 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.successResetsFailCounter  
50 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.successReturnsTokenAndUpdatesLoginTime  
51 -```  
52 -  
53 ----  
54 -  
55 -## ③ 根因(toolchain 不兼容,非业务逻辑缺陷)  
56 -  
57 -所有 9 个 error 同源,均在 `@BeforeEach setUp`(`UsrAuthServiceImplTest.java:54`)构造 mock 时抛出:  
58 -  
59 -```  
60 -org.mockito.exceptions.base.MockitoException:  
61 -Mockito cannot mock this class: class com.xly.erp.common.security.JwtUtil.  
62 -...  
63 -Caused by: java.lang.IllegalArgumentException: Java 25 (69) is not supported by the  
64 -current version of Byte Buddy which officially supports Java 22 (66) -  
65 -update Byte Buddy or set net.bytebuddy.experimental as a VM property  
66 -```  
67 -  
68 -环境取证:  
69 -- 运行 JDK:`Java version: 25.0.2, vendor: Homebrew`(`/opt/homebrew/Cellar/openjdk/25.0.2`)。  
70 -- Mockito 随 Spring Boot 3.2.5 BOM 引入的 Byte Buddy 仅官方支持到 Java 22(class file major version 66),无法 instrument Java 25(major 69)字节码,因此 inline mock maker 失败。  
71 -  
72 -即:这是**构建工具链(JDK 版本与 Mockito/Byte Buddy 兼容性)问题**,而非 usr 模块业务代码或测试断言本身的缺陷。集成测试(真实 Spring 上下文 + 真库,不依赖 Mockito mock)全部通过,恰好佐证业务逻辑路径是通的。  
73 -  
74 -### 建议修复方向(供上层 retry / 仲裁,本步骤不改源码)  
75 -任选其一(修复后由上层触发 attempt 2):  
76 -1. **降低构建 JDK 至 LTS 21**(最稳;与 Spring Boot 3.2.5 + 项目 Mockito 版本兼容线一致);或  
77 -2. **升级 Byte Buddy / Mockito 至支持 Java 25 的版本**(`pom.xml` 显式提升 `byte-buddy` + `byte-buddy-agent`,或升 mockito-core);或  
78 -3. **临时绕过**:为 Surefire 设置 `-Dnet.bytebuddy.experimental=true`(仅解燃眉,非长久之计)。  
79 -  
80 ----  
81 -  
82 -## ④ 关键输出摘录(stdout,≤ 30 行)  
83 -  
84 -```  
85 -[test.mjs] 1/5 setup test db  
86 -[setup-test-db] done — schema will be applied by Flyway when Spring Boot starts  
87 -[test.mjs] 2/5 build  
88 -[test.mjs] 3/5 lint  
89 -[test.mjs] 4/5 unit + integration  
90 -... Flyway: Successfully applied 1 migration ... now at version v1 ...  
91 -[ERROR] com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.userNotFoundThrows40101 -- <<< ERROR!  
92 -org.mockito.exceptions.base.MockitoException:  
93 -Mockito cannot mock this class: class com.xly.erp.common.security.JwtUtil.  
94 -Java : 25  
95 -Caused by: java.lang.IllegalArgumentException: Java 25 (69) is not supported by the  
96 - current version of Byte Buddy which officially supports Java 22 (66) -  
97 - update Byte Buddy or set net.bytebuddy.experimental as a VM property  
98 - at UsrAuthServiceImplTest.setUp(UsrAuthServiceImplTest.java:54)  
99 -Tests run: 9, Failures: 0, Errors: 9, Skipped: 0 <<< FAILURE!  
100 - -- in com.xly.erp.modules.usr.service.UsrAuthServiceImplTest  
101 -[test.mjs] FAIL (backend test) exit=1  
102 -```  
103 -  
104 ----  
105 -  
106 -## ⑤ flake 识别参考  
107 -  
108 -本次失败 100% 可复现、确定性源于 JDK/Byte Buddy 版本不兼容,**非 flake**(与时序、网络、数据无关)。每个 attempt 独立成文(本文件 `usr-test-gate-r1.md`),retry 不覆盖本次 red 证据。  
docs/superpowers/module-reports/usr-test-gate-r2.md deleted
1 -# 模块 usr — 硬测试闸证据(attempt: 2)  
2 -  
3 -- **模块**: usr  
4 -- **阶段**: backend  
5 -- **attempt**: 2(上一次 attempt 1 = RED,本轮用于辨识 flaky)  
6 -- **分支**: module-usr  
7 -- **命令**: `node /Users/reporkey/Desktop/mvp/test6/scripts/test.mjs`  
8 -- **执行时间窗口**: 2026-06-01 15:28:50 ~ 15:29:07 CST(约 17 秒,build 增量;测试阶段在 4/5 非零退出即终止)  
9 -- **运行 JDK**: OpenJDK 25.0.2(Homebrew)—— `java -version` = `openjdk version "25.0.2" 2026-01-20`  
10 -- **结论**: 🔴 RED(exit_code = 1,errors = 9)  
11 -  
12 ----  
13 -  
14 -## ① 闸门阶段执行情况  
15 -  
16 -`scripts/test.mjs` 顺序:setup-db → build → lint → unit+integration → e2e。  
17 -  
18 -| 阶段 | 命令 | 结果 |  
19 -|------|------|------|  
20 -| 1/5 setup test db | `node scripts/setup-test-db.mjs` | ✅ 通过(DROP+CREATE 测试库) |  
21 -| 2/5 build | `mvn -q -B -DskipTests package` | ✅ 通过 |  
22 -| 3/5 lint | `mvn -q -B checkstyle:check` | ✅ 通过 |  
23 -| 4/5 unit + integration | `mvn -q -B test` | 🔴 失败(9 errors) |  
24 -| 5/5 e2e | echo 占位 | 未执行(脚本在 4/5 非零退出即终止) |  
25 -  
26 -Flyway 在 Spring Boot 测试启动时自动 apply(同 attempt 1)。  
27 -  
28 ----  
29 -  
30 -## ② Maven Surefire 汇总(聚合 25 个测试类)  
31 -  
32 -- **Tests run = 125**  
33 -- **Passed = 116**  
34 -- **Failures = 0**  
35 -- **Errors = 9**  
36 -- **Skipped = 0**  
37 -  
38 -全部 9 个 error 集中在单个测试类:`com.xly.erp.modules.usr.service.UsrAuthServiceImplTest`(该类 9/9 全部 error)。其余 24 个测试类(含 usr 模块 controller / mapper / dto / vo / IT 集成测试 + common 公共组件)全绿。  
39 -  
40 -### 失败用例清单(9 条,均为 ERROR)  
41 -  
42 -```  
43 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.userNotFoundThrows40101  
44 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.wrongPasswordThrows40101  
45 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.disabledUserThrows40302AfterPasswordOk  
46 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.illegalCompanyIdThrows40001  
47 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.listCompaniesMapsAllRows  
48 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.notFoundAndWrongPasswordSameCodeAndMessage  
49 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.rateLimitAfterMaxFailThrows42901  
50 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.successResetsFailCounter  
51 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.successReturnsTokenAndUpdatesLoginTime  
52 -```  
53 -  
54 ----  
55 -  
56 -## ③ 根因(toolchain 不兼容,非业务逻辑缺陷)—— 与 attempt 1 完全同源  
57 -  
58 -所有 9 个 error 同源,均在 `@BeforeEach setUp`(`UsrAuthServiceImplTest.java:54`)用 Mockito mock `JwtUtil` 时抛出:  
59 -  
60 -```  
61 -org.mockito.exceptions.base.MockitoException:  
62 -Mockito cannot mock this class: class com.xly.erp.common.security.JwtUtil.  
63 -...  
64 -Byte Buddy could not instrument all classes within the mock's type hierarchy  
65 -Caused by: java.lang.IllegalArgumentException: Java 25 (69) is not supported by the  
66 -current version of Byte Buddy which officially supports Java 22 (66) -  
67 -update Byte Buddy or set net.bytebuddy.experimental as a VM property  
68 - at UsrAuthServiceImplTest.setUp(UsrAuthServiceImplTest.java:54)  
69 -```  
70 -  
71 -环境取证:  
72 -- 运行 JDK:`openjdk version "25.0.2"`,vendor `Homebrew`,JVM `OpenJDK 64-Bit Server VM 25.0.2`。  
73 -- Mockito 随 Spring Boot 3.2.5 BOM 引入的 Byte Buddy 仅官方支持到 Java 22(class file major 66),无法 instrument Java 25(major 69)字节码,inline mock maker 失败。  
74 -  
75 -即:这是**构建工具链(JDK 版本与 Mockito/Byte Buddy 兼容性)问题**,而非 usr 模块业务代码或测试断言本身的缺陷。集成测试(真实 Spring 上下文 + 真库,不依赖 Mockito mock)全部通过(`UsrLoginIT` 12、`UsrUserQueryIT` 13、`UsrUserCreateIT` 5、`UsrUserUpdateIT` 6、`AuthLoginConfigIT` 1 等),恰好佐证业务逻辑路径是通的。  
76 -  
77 -### 建议修复方向(供上层 retry / 仲裁,本步骤不改源码)  
78 -任选其一:  
79 -1. **降低构建 JDK 至 LTS 21**(最稳;与 Spring Boot 3.2.5 + 项目 Mockito 版本兼容线一致);或  
80 -2. **升级 Byte Buddy / Mockito 至支持 Java 25 的版本**(`pom.xml` 显式提升 `byte-buddy` + `byte-buddy-agent`,或升 mockito-core);或  
81 -3. **临时绕过**:为 Surefire 设置 `-Dnet.bytebuddy.experimental=true`(仅解燃眉)。  
82 -  
83 ----  
84 -  
85 -## ④ 关键输出摘录(stdout,≤ 30 行)  
86 -  
87 -```  
88 -[test.mjs] 1/5 setup test db  
89 -[setup-test-db] done — schema will be applied by Flyway when Spring Boot starts  
90 -[test.mjs] 2/5 build  
91 -[test.mjs] 3/5 lint  
92 -[test.mjs] 4/5 unit + integration  
93 -Java : 25  
94 -JVM vendor version : 25.0.2  
95 -[ERROR] UsrAuthServiceImplTest.setUp:54 Mockito  
96 -Mockito cannot mock this class: class com.xly.erp.common.security.JwtUtil.  
97 -Byte Buddy could not instrument all classes within the mock's type hierarchy  
98 -Caused by: java.lang.IllegalArgumentException: Java 25 (69) is not supported by the  
99 - current version of Byte Buddy which officially supports Java 22 (66) -  
100 - update Byte Buddy or set net.bytebuddy.experimental as a VM property  
101 -[ERROR] Tests run: 88, Failures: 0, Errors: 9, Skipped: 0 (本类聚合: 9/9 error)  
102 -[ERROR] Failed to execute goal ...maven-surefire-plugin:3.1.2:test (default-test) on project erp-backend  
103 -[test.mjs] FAIL (backend test) exit=1  
104 -===EXIT_CODE=1 END 2026-06-01 15:29:07 CST===  
105 -```  
106 -  
107 ----  
108 -  
109 -## ⑤ flake 识别参考(attempt 1 vs attempt 2 对比)  
110 -  
111 -| 维度 | attempt 1 (r1) | attempt 2 (r2) |  
112 -|------|----------------|----------------|  
113 -| 结论 | 🔴 RED, exit=1 | 🔴 RED, exit=1 |  
114 -| Tests run | 125 | 125 |  
115 -| Errors | 9 | 9 |  
116 -| 失败类 | `UsrAuthServiceImplTest`(9/9) | `UsrAuthServiceImplTest`(9/9) |  
117 -| 失败用例集合 | 同下 9 条 | **完全相同的 9 条** |  
118 -| 根因 | JDK25 / Byte Buddy 不兼容 | **同一根因,逐字一致** |  
119 -  
120 -**判定:非 flake。** 两次 attempt 结果 100% 一致(同样 9 条用例、同一 `setUp:54`、同一 Byte Buddy `Java 25 (69) not supported` 异常),确定性失败,与时序 / 网络 / 数据无关。属构建工具链版本不兼容,需上层按 ③ 修复后再 retry。每个 attempt 独立成文,本文件 `usr-test-gate-r2.md` 不覆盖 `usr-test-gate-r1.md`。  
docs/superpowers/module-reports/usr-test-gate-r3.md deleted
1 -# 模块 usr — 硬测试闸证据(attempt: 3)  
2 -  
3 -- **模块**: usr  
4 -- **阶段**: backend  
5 -- **attempt**: 3(attempt 1 = RED,attempt 2 = RED;本轮用于辨识 flaky)  
6 -- **分支**: module-usr  
7 -- **命令**: `node /Users/reporkey/Desktop/mvp/test6/scripts/test.mjs`  
8 -- **执行方式**: 由本测试闸子代理**派发独立 detached 子进程**执行(非主会话内联跑测试),完整 stdout/stderr 落盘到独立日志 `.usr-test-gate-r3.log`,再据 surefire XML 取权威计数。  
9 -- **执行时间窗口**: 2026-06-01 15:32:45 ~ 15:33:02 CST(约 17 秒;测试阶段 4/5 非零退出即终止)  
10 -- **运行 JDK**: OpenJDK 25.0.2(Homebrew)—— `java -version` = `openjdk version "25.0.2" 2026-01-20`;`mvn -version` runtime 同为 25.0.2(`/opt/homebrew/Cellar/openjdk/25.0.2`)。`JAVA_HOME` 未设置,默认走 `/usr/bin/java` → 25.0.2。  
11 -- **结论**: 🔴 RED(exit_code = 1,errors = 9)  
12 -  
13 ----  
14 -  
15 -## ① 闸门阶段执行情况  
16 -  
17 -`scripts/test.mjs` 顺序:setup-db → build → lint → unit+integration → e2e。  
18 -  
19 -| 阶段 | 命令 | 结果 |  
20 -|------|------|------|  
21 -| 1/5 setup test db | `node scripts/setup-test-db.mjs` | ✅ 通过(DROP+CREATE `xlyweberp_vibe_erp_test` @ 118.178.19.35:3318) |  
22 -| 2/5 build | `mvn -q -B -DskipTests package` | ✅ 通过 |  
23 -| 3/5 lint | `mvn -q -B checkstyle:check` | ✅ 通过 |  
24 -| 4/5 unit + integration | `mvn -q -B test` | 🔴 失败(9 errors) |  
25 -| 5/5 e2e | echo 占位 | 未执行(脚本在 4/5 非零退出即终止) |  
26 -  
27 -Flyway 在 Spring Boot 测试启动时自动 apply(`Successfully applied 1 migration ... now at version v1`),与 attempt 1/2 一致。  
28 -  
29 ----  
30 -  
31 -## ② Surefire 汇总(据 `backend/target/surefire-reports/TEST-*.xml` 25 个测试类逐一聚合)  
32 -  
33 -- **suites = 25**  
34 -- **Tests run = 125**  
35 -- **Passed = 116**  
36 -- **Failures = 0**  
37 -- **Errors = 9**  
38 -- **Skipped = 0**  
39 -  
40 -> 备注:本次 reactor 在失败 fork 中断时 stdout 打出的 `Tests run: 88, Failures: 0, Errors: 9` 是 Maven 中止瞬间的**局部 reactor 计数**;以 surefire XML 全量聚合的 **125** 为权威总数(与 attempt 1/2 完全一致)。  
41 -  
42 -全部 9 个 error 集中在单个测试类:`com.xly.erp.modules.usr.service.UsrAuthServiceImplTest`(该类 `tests=9 errors=9`,9/9 全 error)。其余 24 个测试类全绿,含:  
43 -- usr 业务:`UsrUserServiceImplTest`(24)、`UsrAuthControllerTest`(6)、`UsrUserControllerTest`(11)、4 个 DTO 校验(3+6+5+5)、2 个 Mapper(2+3)、3 个 VO(1+1+1);  
44 -- usr 集成测试(真实 Spring 上下文 + 真库):`UsrLoginIT`(12)、`UsrUserQueryIT`(13)、`UsrUserCreateIT`(5)、`UsrUserUpdateIT`(6)、`AuthLoginConfigIT`(1);  
45 -- common 公共组件:`SecurityConfigTest`(2)、`GlobalExceptionHandlerTest`(1)、`PageResultTest`(2)、`ResultCodeLoginTest`(2)、`ResultTest`(2)、`JwtUtilTest`(1)、`ErpApplicationTests`(1)。  
46 -  
47 -### 失败用例清单(9 条,均为 ERROR;据该类 XML `testcase name`)  
48 -  
49 -```  
50 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.rateLimitAfterMaxFailThrows42901  
51 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.illegalCompanyIdThrows40001  
52 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.userNotFoundThrows40101  
53 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.disabledUserThrows40302AfterPasswordOk  
54 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.wrongPasswordThrows40101  
55 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.listCompaniesMapsAllRows  
56 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.notFoundAndWrongPasswordSameCodeAndMessage  
57 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.successReturnsTokenAndUpdatesLoginTime  
58 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.successResetsFailCounter  
59 -```  
60 -  
61 ----  
62 -  
63 -## ③ 根因(toolchain 不兼容,非业务逻辑缺陷)—— 与 attempt 1/2 完全同源  
64 -  
65 -所有 9 个 error 同源,均在 `@BeforeEach setUp`(`UsrAuthServiceImplTest.java:54`)用 Mockito mock `JwtUtil` 时抛出:  
66 -  
67 -```  
68 -org.mockito.exceptions.base.MockitoException:  
69 -Mockito cannot mock this class: class com.xly.erp.common.security.JwtUtil.  
70 -...  
71 -Caused by: java.lang.IllegalStateException:  
72 - Byte Buddy could not instrument all classes within the mock's type hierarchy  
73 -Caused by: java.lang.IllegalArgumentException: Java 25 (69) is not supported by the  
74 - current version of Byte Buddy which officially supports Java 22 (66) -  
75 - update Byte Buddy or set net.bytebuddy.experimental as a VM property  
76 - at net.bytebuddy.utility.OpenedClassReader.of(OpenedClassReader.java:100)  
77 - ...  
78 - at com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.setUp(UsrAuthServiceImplTest.java:54)  
79 -```  
80 -  
81 -环境取证:  
82 -- 运行 JDK:`openjdk version "25.0.2"`,vendor `Homebrew`,JVM `OpenJDK 64-Bit Server VM 25.0.2`(class file major 69)。  
83 -- 随 Spring Boot 3.2.5 BOM 引入的 Byte Buddy(`byte-buddy-agent 1.14.13`)官方仅支持到 Java 22(major 66),无法 instrument Java 25 字节码,inline mock maker 创建 `JwtUtil` mock 失败。  
84 -  
85 -即:这是**构建工具链(JDK 版本 × Mockito/Byte Buddy 兼容性)问题**,非 usr 模块业务代码或测试断言缺陷。不依赖 Mockito inline mock 的集成测试(真实 Spring 上下文 + 真库:`UsrLoginIT`/`UsrUserQueryIT`/`UsrUserCreateIT`/`UsrUserUpdateIT`/`AuthLoginConfigIT`)以及不 mock `JwtUtil` 的纯单元测试全部通过,佐证业务逻辑路径是通的。  
86 -  
87 -> 本测试闸不改源码 / 不改构建工具链(超出 gate 作用域,属上层仲裁/remediation 决策)。建议修复方向(供上层 retry/仲裁,三选一):  
88 -> 1. **降低构建 JDK 至 LTS 21**(最稳;本机已装 `openjdk@21 21.0.11`,可经 `JAVA_HOME=$(/usr/libexec/java_home -v 21)` 或 Maven toolchains 切换);或  
89 -> 2. **升级 Byte Buddy / Mockito 至支持 Java 25 的版本**(pom 显式提升 `byte-buddy` + `byte-buddy-agent`,或升 `mockito-core`);或  
90 -> 3. **临时绕过**:Surefire 加 `-Dnet.bytebuddy.experimental=true`(仅解燃眉,不推荐长期)。  
91 -  
92 ----  
93 -  
94 -## ④ 关键输出摘录(stdout,≤ 30 行)  
95 -  
96 -```  
97 -[test.mjs] 1/5 setup test db  
98 -[setup-test-db] done — schema will be applied by Flyway when Spring Boot starts  
99 -[test.mjs] 2/5 build (mvn -q -B -DskipTests package) ✅  
100 -[test.mjs] 3/5 lint (mvn -q -B checkstyle:check) ✅  
101 -[test.mjs] 4/5 unit + integration (mvn -q -B test)  
102 -Flyway: Successfully applied 1 migration ... now at version v1  
103 -[ERROR] Tests run: 9, Failures: 0, Errors: 9, Skipped: 0 -- in UsrAuthServiceImplTest  
104 -[ERROR] UsrAuthServiceImplTest.setUp:54 Mockito  
105 -Mockito cannot mock this class: class com.xly.erp.common.security.JwtUtil.  
106 -Java : 25  
107 -JVM vendor version : 25.0.2  
108 -Caused by: java.lang.IllegalArgumentException: Java 25 (69) is not supported by the  
109 - current version of Byte Buddy which officially supports Java 22 (66) -  
110 - update Byte Buddy or set net.bytebuddy.experimental as a VM property  
111 -[ERROR] Tests run: 88, Failures: 0, Errors: 9, Skipped: 0 (reactor 中止瞬间局部计数)  
112 -[ERROR] Failed to execute goal ...maven-surefire-plugin:3.1.2:test (default-test) on project erp-backend  
113 -[test.mjs] FAIL (backend test) exit=1  
114 -===EXIT_CODE=1 END 2026-06-01 15:33:02 CST===  
115 -```  
116 -  
117 ----  
118 -  
119 -## ⑤ flake 识别参考(attempt 1 vs 2 vs 3 三轮对比)  
120 -  
121 -| 维度 | attempt 1 (r1) | attempt 2 (r2) | attempt 3 (r3) |  
122 -|------|----------------|----------------|----------------|  
123 -| 结论 | 🔴 RED, exit=1 | 🔴 RED, exit=1 | 🔴 RED, exit=1 |  
124 -| Tests run(XML 聚合) | 125 | 125 | 125 |  
125 -| Errors | 9 | 9 | 9 |  
126 -| Failures | 0 | 0 | 0 |  
127 -| 失败类 | `UsrAuthServiceImplTest`(9/9) | `UsrAuthServiceImplTest`(9/9) | `UsrAuthServiceImplTest`(9/9) |  
128 -| 失败用例集合 | 同下 9 条 | 完全相同 9 条 | **完全相同 9 条** |  
129 -| 失败位置 | `setUp:54` | `setUp:54` | `setUp:54` |  
130 -| 根因 | JDK25 / Byte Buddy 不支持 (69>66) | 同 | **同一根因,逐字一致** |  
131 -| 运行 JDK | 25.0.2 | 25.0.2 | 25.0.2 |  
132 -  
133 -**判定:非 flake(确定性失败)。** 连续三轮 attempt 结果 100% 一致——相同 9 条用例、同一 `UsrAuthServiceImplTest.setUp:54`、同一 `Byte Buddy ... Java 25 (69) is not supported` 异常链,与时序 / 网络 / 数据 / 并发顺序无关。属构建工具链版本不兼容(JDK 25 × Byte Buddy 1.14.13 ≤ Java 22),需上层按 ③ 修复构建工具链后再 retry,gate 本身不放行。  
134 -  
135 -> 每个 attempt 独立成文:本文件 `usr-test-gate-r3.md` 不覆盖 `usr-test-gate-r1.md` / `usr-test-gate-r2.md`。  
docs/superpowers/module-reports/usr-test-gate-r4.md deleted
1 -# 模块 usr — 硬测试闸证据(attempt: 4)  
2 -  
3 -- **模块**: usr  
4 -- **阶段**: backend  
5 -- **attempt**: 4(attempt 1/2/3 均为 RED;本轮用于辨识 flaky)  
6 -- **分支**: module-usr  
7 -- **命令**: `node /Users/reporkey/Desktop/mvp/test6/scripts/test.mjs`  
8 -- **执行方式**: 由本测试闸子代理**派发独立子进程**执行(非主会话内联跑测试),完整 stdout/stderr 落盘到独立日志 `.usr-test-gate-r4.log`,再据 `backend/target/surefire-reports/TEST-*.xml` 全量聚合取权威计数。  
9 -- **执行时间窗口**: 2026-06-01 15:36:39 ~ 15:36:55 CST(约 16 秒;测试阶段 4/5 非零退出即终止,`UsrAuthServiceImplTest` 报告 mtime = 15:36:51)。  
10 -- **运行 JDK**: OpenJDK 25.0.2(Homebrew)—— `java -version` = `openjdk version "25.0.2" 2026-01-20`;`mvn -version` runtime 同为 25.0.2(`/opt/homebrew/Cellar/openjdk/25.0.2`)。`JAVA_HOME` 未设置(默认走 25.0.2)。`~/.m2/toolchains.xml` 不存在。  
11 -- **结论**: 🔴 RED(exit_code = 1,errors = 9)  
12 -  
13 ----  
14 -  
15 -## ① 闸门阶段执行情况  
16 -  
17 -`scripts/test.mjs` 顺序:setup-db → build → lint → unit+integration → e2e。  
18 -  
19 -| 阶段 | 命令 | 结果 |  
20 -|------|------|------|  
21 -| 1/5 setup test db | `node scripts/setup-test-db.mjs` | ✅ 通过(DROP+CREATE `xlyweberp_vibe_erp_test` @ 118.178.19.35:3318) |  
22 -| 2/5 build | `mvn -q -B -DskipTests package` | ✅ 通过 |  
23 -| 3/5 lint | `mvn -q -B checkstyle:check` | ✅ 通过 |  
24 -| 4/5 unit + integration | `mvn -q -B test` | 🔴 失败(9 errors) |  
25 -| 5/5 e2e | echo 占位 | 未执行(脚本在 4/5 非零退出即终止) |  
26 -  
27 -Flyway 在 Spring Boot 测试启动时自动 apply(`Successfully applied 1 migration to schema xlyweberp_vibe_erp_test, now at version v1`,15:36:49),与 attempt 1/2/3 一致。  
28 -  
29 ----  
30 -  
31 -## ② Surefire 汇总(据 `backend/target/surefire-reports/TEST-*.xml` 25 个测试类逐一聚合)  
32 -  
33 -- **suites = 25**  
34 -- **Tests run = 125**  
35 -- **Passed = 116**  
36 -- **Failures = 0**  
37 -- **Errors = 9**  
38 -- **Skipped = 0**  
39 -  
40 -> 备注:reactor 在失败 fork 中断时 stdout 打出的 `Tests run: 88, Failures: 0, Errors: 9` 是 Maven 中止瞬间的**局部 reactor 计数**;以 surefire XML 全量聚合的 **125** 为权威总数(与 attempt 1/2/3 完全一致)。  
41 -  
42 -全部 9 个 error 集中在单个测试类:`com.xly.erp.modules.usr.service.UsrAuthServiceImplTest`(该类 `tests=9 errors=9`,9/9 全 error)。其余 24 个测试类全绿。  
43 -  
44 -### 失败用例清单(9 条,均为 ERROR;据该类 XML `testcase name`)  
45 -  
46 -```  
47 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.rateLimitAfterMaxFailThrows42901  
48 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.illegalCompanyIdThrows40001  
49 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.userNotFoundThrows40101  
50 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.disabledUserThrows40302AfterPasswordOk  
51 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.wrongPasswordThrows40101  
52 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.listCompaniesMapsAllRows  
53 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.notFoundAndWrongPasswordSameCodeAndMessage  
54 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.successReturnsTokenAndUpdatesLoginTime  
55 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.successResetsFailCounter  
56 -```  
57 -  
58 ----  
59 -  
60 -## ③ 根因(toolchain 不兼容,非业务逻辑缺陷)—— 与 attempt 1/2/3 完全同源  
61 -  
62 -所有 9 个 error 同源,均在 `@BeforeEach setUp`(`UsrAuthServiceImplTest.java:54`)用 Mockito mock `JwtUtil` 时抛出:  
63 -  
64 -```  
65 -org.mockito.exceptions.base.MockitoException:  
66 -Mockito cannot mock this class: class com.xly.erp.common.security.JwtUtil.  
67 -...  
68 -Caused by: Byte Buddy could not instrument all classes within the mock's type hierarchy  
69 -Caused by: java.lang.IllegalArgumentException: Java 25 (69) is not supported by the  
70 - current version of Byte Buddy which officially supports Java 22 (66) -  
71 - update Byte Buddy or set net.bytebuddy.experimental as a VM property  
72 -```  
73 -  
74 -环境取证(本次实测):  
75 -- 运行 JDK:`openjdk version "25.0.2"`,vendor `Homebrew`,JVM `OpenJDK 64-Bit Server VM 25.0.2`(class file major 69)。  
76 -- `pom.xml`:`<java.version>17</java.version>` + `<maven.compiler.release>17</maven.compiler.release>`(编译目标 17,但**运行时 JVM 仍是 25**,instrument 受运行时 JVM 字节码版本限制),未显式 pin `byte-buddy`/`mockito` 版本,随 Spring Boot 3.2.5 BOM 引入 Byte Buddy(官方仅支持到 Java 22 / major 66)。  
77 -- `~/.m2/toolchains.xml` 不存在;`JAVA_HOME` 未设置 → Maven runtime 落在 25.0.2。  
78 -  
79 -即:这是**构建工具链(运行时 JDK 版本 × Mockito/Byte Buddy 兼容性)问题**,非 usr 模块业务代码或测试断言缺陷。不依赖 Mockito inline mock 的集成测试(真实 Spring 上下文 + 真库:`UsrLoginIT`/`UsrUserQueryIT`/`UsrUserCreateIT`/`UsrUserUpdateIT`/`AuthLoginConfigIT`)以及不 mock `JwtUtil` 的纯单元测试全部通过,佐证业务逻辑路径是通的。  
80 -  
81 -> 本测试闸不改源码 / 不改构建工具链(超出 gate 作用域,属上层仲裁/remediation 决策)。建议修复方向(供上层 retry/仲裁,三选一):  
82 -> 1. **运行时构建 JDK 降至 LTS 21**(最稳;本机已装 `openjdk@21 21.0.11`,可经 `JAVA_HOME=$(/usr/libexec/java_home -v 21)` 或 Maven toolchains 切换);或  
83 -> 2. **升级 Byte Buddy / Mockito 至支持 Java 25 的版本**(pom 显式提升 `byte-buddy` + `byte-buddy-agent`,或升 `mockito-core`);或  
84 -> 3. **临时绕过**:Surefire 加 `-Dnet.bytebuddy.experimental=true`(仅解燃眉,不推荐长期)。  
85 -  
86 ----  
87 -  
88 -## ④ 关键输出摘录(stdout,≤ 30 行)  
89 -  
90 -```  
91 -[test.mjs] 1/5 setup test db  
92 -[setup-test-db] done — schema will be applied by Flyway when Spring Boot starts  
93 -[test.mjs] 2/5 build (mvn -q -B -DskipTests package) ✅  
94 -[test.mjs] 3/5 lint (mvn -q -B checkstyle:check) ✅  
95 -[test.mjs] 4/5 unit + integration (mvn -q -B test)  
96 -Flyway: Successfully applied 1 migration ... now at version v1  
97 -[ERROR] Tests run: 9, Failures: 0, Errors: 9, Skipped: 0 -- in UsrAuthServiceImplTest  
98 -[ERROR] UsrAuthServiceImplTest.setUp:54 Mockito  
99 -Mockito cannot mock this class: class com.xly.erp.common.security.JwtUtil.  
100 -Java : 25  
101 -JVM vendor version : 25.0.2  
102 -Caused by: Byte Buddy could not instrument all classes within the mock's type hierarchy  
103 -Caused by: java.lang.IllegalArgumentException: Java 25 (69) is not supported by the  
104 - current version of Byte Buddy which officially supports Java 22 (66) -  
105 - update Byte Buddy or set net.bytebuddy.experimental as a VM property  
106 -[ERROR] Tests run: 88, Failures: 0, Errors: 9, Skipped: 0 (reactor 中止瞬间局部计数)  
107 -[ERROR] Failed to execute goal ...maven-surefire-plugin:3.1.2:test (default-test) on project erp-backend  
108 -[test.mjs] FAIL (backend test) exit=1  
109 -===EXIT_CODE=1 END 2026-06-01 15:36:55 CST===  
110 -```  
111 -  
112 ----  
113 -  
114 -## ⑤ flake 识别参考(attempt 1 vs 2 vs 3 vs 4 四轮对比)  
115 -  
116 -| 维度 | attempt 1 (r1) | attempt 2 (r2) | attempt 3 (r3) | attempt 4 (r4) |  
117 -|------|----------------|----------------|----------------|----------------|  
118 -| 结论 | 🔴 RED, exit=1 | 🔴 RED, exit=1 | 🔴 RED, exit=1 | 🔴 RED, exit=1 |  
119 -| Tests run(XML 聚合) | 125 | 125 | 125 | 125 |  
120 -| Errors | 9 | 9 | 9 | 9 |  
121 -| Failures | 0 | 0 | 0 | 0 |  
122 -| 失败类 | `UsrAuthServiceImplTest`(9/9) | `UsrAuthServiceImplTest`(9/9) | `UsrAuthServiceImplTest`(9/9) | `UsrAuthServiceImplTest`(9/9) |  
123 -| 失败用例集合 | 同下 9 条 | 完全相同 9 条 | 完全相同 9 条 | **完全相同 9 条** |  
124 -| 失败位置 | `setUp:54` | `setUp:54` | `setUp:54` | `setUp:54` |  
125 -| 根因 | JDK25 / Byte Buddy 不支持 (69>66) | 同 | 同 | **同一根因,逐字一致** |  
126 -| 运行 JDK | 25.0.2 | 25.0.2 | 25.0.2 | 25.0.2 |  
127 -  
128 -**判定:非 flake(确定性失败)。** 连续四轮 attempt 结果 100% 一致——相同 9 条用例、同一 `UsrAuthServiceImplTest.setUp:54`、同一 `Byte Buddy ... Java 25 (69) is not supported` 异常链,与时序 / 网络 / 数据 / 并发顺序无关。属构建工具链版本不兼容(运行时 JDK 25 × Byte Buddy ≤ Java 22),需上层按 ③ 修复构建工具链后再 retry,gate 本身不放行。  
129 -  
130 -> 每个 attempt 独立成文:本文件 `usr-test-gate-r4.md` 不覆盖 `usr-test-gate-r1.md` / `r2.md` / `r3.md`。  
docs/superpowers/module-reports/usr-test-gate-r5.md deleted
1 -# 模块 usr — 硬测试闸证据(attempt: 5)  
2 -  
3 -- **模块**: usr  
4 -- **阶段**: backend  
5 -- **attempt**: 5(attempt 1/2/3/4 均为 RED;本轮用于辨识 flaky)  
6 -- **分支**: module-usr  
7 -- **命令**: `node /Users/reporkey/Desktop/mvp/test6/scripts/test.mjs`  
8 -- **执行方式**: 由本测试闸子代理**派发独立子进程**(detached background subprocess,非主会话内联跑测试)执行;完整 stdout/stderr 落盘到独立日志 `.usr-test-gate-r5.log`,再据 `backend/target/surefire-reports/TEST-*.xml` 全量聚合取权威计数。  
9 -- **执行时间窗口**: 2026-06-01 15:40:07 ~ 15:40:19 CST(约 12 秒;测试阶段 4/5 非零退出即终止,`UsrAuthServiceImplTest` 报告 mtime = 15:40:18)。  
10 -- **运行 JDK**: OpenJDK 25.0.2(Homebrew)—— `java -version` = `openjdk version "25.0.2" 2026-01-20`;`mvn -version` runtime 同为 25.0.2(`/opt/homebrew/Cellar/openjdk/25.0.2/libexec/openjdk.jdk/Contents/Home`),Maven 3.9.15。`JAVA_HOME` 未设置(默认走 25.0.2)。`~/.m2/toolchains.xml` 不存在。  
11 -- **结论**: 🔴 RED(exit_code = 1,errors = 9)  
12 -  
13 ----  
14 -  
15 -## ① 闸门阶段执行情况  
16 -  
17 -`scripts/test.mjs` 顺序:setup-db → build → lint → unit+integration → e2e。  
18 -  
19 -| 阶段 | 命令 | 结果 |  
20 -|------|------|------|  
21 -| 1/5 setup test db | `node scripts/setup-test-db.mjs` | ✅ 通过(DROP+CREATE `xlyweberp_vibe_erp_test` @ 118.178.19.35:3318) |  
22 -| 2/5 build | `mvn -q -B -DskipTests package` | ✅ 通过 |  
23 -| 3/5 lint | `mvn -q -B checkstyle:check` | ✅ 通过 |  
24 -| 4/5 unit + integration | `mvn -q -B test` | 🔴 失败(9 errors) |  
25 -| 5/5 e2e | echo 占位 | 未执行(脚本在 4/5 非零退出即终止) |  
26 -  
27 -Flyway 在 Spring Boot 测试启动时自动 apply(`Successfully applied 1 migration to schema xlyweberp_vibe_erp_test, now at version v1`,15:40:16),与 attempt 1/2/3/4 一致。  
28 -  
29 ----  
30 -  
31 -## ② Surefire 汇总(据 `backend/target/surefire-reports/TEST-*.xml` 25 个测试类逐一聚合)  
32 -  
33 -- **suites = 25**  
34 -- **Tests run = 125**  
35 -- **Passed = 116**  
36 -- **Failures = 0**  
37 -- **Errors = 9**  
38 -- **Skipped = 0**  
39 -  
40 -> 备注:reactor 在失败 fork 中断时 stdout 打出的 `Tests run: 88, Failures: 0, Errors: 9` 是 Maven 中止瞬间的**局部 reactor 计数**;以 surefire XML 全量聚合的 **125** 为权威总数(与 attempt 1/2/3/4 完全一致)。  
41 -  
42 -全部 9 个 error 集中在单个测试类:`com.xly.erp.modules.usr.service.UsrAuthServiceImplTest`(该类 `tests=9 errors=9`,9/9 全 error)。其余 24 个测试类全绿。  
43 -  
44 -### 失败用例清单(9 条,均为 ERROR;据该类 XML `testcase name`)  
45 -  
46 -```  
47 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.rateLimitAfterMaxFailThrows42901  
48 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.illegalCompanyIdThrows40001  
49 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.userNotFoundThrows40101  
50 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.disabledUserThrows40302AfterPasswordOk  
51 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.wrongPasswordThrows40101  
52 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.listCompaniesMapsAllRows  
53 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.notFoundAndWrongPasswordSameCodeAndMessage  
54 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.successReturnsTokenAndUpdatesLoginTime  
55 -com.xly.erp.modules.usr.service.UsrAuthServiceImplTest.successResetsFailCounter  
56 -```  
57 -  
58 ----  
59 -  
60 -## ③ 根因(toolchain 不兼容,非业务逻辑缺陷)—— 与 attempt 1/2/3/4 完全同源  
61 -  
62 -所有 9 个 error 同源,均在 `@BeforeEach setUp`(`UsrAuthServiceImplTest.java:54`)用 Mockito mock `JwtUtil` 时抛出:  
63 -  
64 -```  
65 -org.mockito.exceptions.base.MockitoException:  
66 -Mockito cannot mock this class: class com.xly.erp.common.security.JwtUtil.  
67 -...  
68 -Underlying exception : org.mockito.exceptions.base.MockitoException:  
69 - Could not modify all classes [class com.xly.erp.common.security.JwtUtil, class java.lang.Object]  
70 -Caused by: Byte Buddy could not instrument all classes within the mock's type hierarchy  
71 -Caused by: java.lang.IllegalArgumentException: Java 25 (69) is not supported by the  
72 - current version of Byte Buddy which officially supports Java 22 (66) -  
73 - update Byte Buddy or set net.bytebuddy.experimental as a VM property  
74 -```  
75 -  
76 -环境取证(本次实测):  
77 -- 运行 JDK:`openjdk version "25.0.2"`,vendor `Homebrew`,JVM `OpenJDK 64-Bit Server VM 25.0.2`(class file major 69);Maven 3.9.15 runtime 同为 25.0.2。  
78 -- `~/.m2/toolchains.xml` 不存在;`JAVA_HOME` 未设置 → Maven runtime 落在 25.0.2。本机已装多版本 JDK(`/usr/libexec/java_home -V`:25.0.2 / 21.0.11 / 17.0.19 / 11 / 8),其中 `java_home -v 21` = `/opt/homebrew/Cellar/openjdk@21/21.0.11/...`(可用于降级运行)。  
79 -- `backend/pom.xml`:`<java.version>17</java.version>` + `<maven.compiler.release>17</maven.compiler.release>`(编译目标 17,但**运行时 JVM 仍是 25**,instrument 受运行时 JVM 字节码版本限制),未显式 pin `byte-buddy`/`mockito` 版本,亦未设 `net.bytebuddy.experimental`,随 Spring Boot 3.2.5 BOM 引入 Byte Buddy(官方仅支持到 Java 22 / major 66)。  
80 -  
81 -即:这是**构建工具链(运行时 JDK 版本 × Mockito/Byte Buddy 兼容性)问题**,非 usr 模块业务代码或测试断言缺陷。不依赖 Mockito inline mock 的集成测试(真实 Spring 上下文 + 真库:`UsrLoginIT`/`UsrUserQueryIT`/`UsrUserCreateIT`/`UsrUserUpdateIT`/`AuthLoginConfigIT`)以及不 mock `JwtUtil` 的纯单元测试全部通过,佐证业务逻辑路径是通的。  
82 -  
83 -> 本测试闸不改源码 / 不改构建工具链(超出 gate 作用域,属上层仲裁/remediation 决策)。建议修复方向(供上层 retry/仲裁,三选一):  
84 -> 1. **运行时构建 JDK 降至 LTS 21**(最稳;本机已装 `openjdk@21 21.0.11`,可经 `JAVA_HOME=$(/usr/libexec/java_home -v 21)` 或 Maven toolchains 切换);或  
85 -> 2. **升级 Byte Buddy / Mockito 至支持 Java 25 的版本**(pom 显式提升 `byte-buddy` + `byte-buddy-agent`,或升 `mockito-core`);或  
86 -> 3. **临时绕过**:Surefire 加 `-Dnet.bytebuddy.experimental=true`(仅解燃眉,不推荐长期)。  
87 -  
88 ----  
89 -  
90 -## ④ 关键输出摘录(stdout,≤ 30 行)  
91 -  
92 -```  
93 -[test.mjs] 1/5 setup test db  
94 -[setup-test-db] 即将 DROP + CREATE `xlyweberp_vibe_erp_test` on 118.178.19.35:3318  
95 -[setup-test-db] done — schema will be applied by Flyway when Spring Boot starts  
96 -[test.mjs] 2/5 build (mvn -q -B -DskipTests package) ✅  
97 -[test.mjs] 3/5 lint (mvn -q -B checkstyle:check) ✅  
98 -[test.mjs] 4/5 unit + integration (mvn -q -B test)  
99 -Flyway: Successfully applied 1 migration ... now at version v1 (15:40:16)  
100 -[ERROR] Tests run: 9, Failures: 0, Errors: 9, Skipped: 0, Time elapsed: 0.313 s <<< FAILURE! -- in UsrAuthServiceImplTest  
101 -[ERROR] UsrAuthServiceImplTest.setUp:54 Mockito (×9)  
102 -Mockito cannot mock this class: class com.xly.erp.common.security.JwtUtil.  
103 -Java : 25  
104 -JVM vendor version : 25.0.2  
105 -Underlying exception : MockitoException: Could not modify all classes  
106 - [class com.xly.erp.common.security.JwtUtil, class java.lang.Object]  
107 -Caused by: Byte Buddy could not instrument all classes within the mock's type hierarchy  
108 -Caused by: java.lang.IllegalArgumentException: Java 25 (69) is not supported by the  
109 - current version of Byte Buddy which officially supports Java 22 (66) -  
110 - update Byte Buddy or set net.bytebuddy.experimental as a VM property  
111 -[ERROR] Tests run: 88, Failures: 0, Errors: 9, Skipped: 0 (reactor 中止瞬间局部计数)  
112 -[ERROR] Failed to execute goal ...maven-surefire-plugin:3.1.2:test (default-test) on project erp-backend  
113 -[test.mjs] FAIL (backend test) exit=1  
114 -===EXIT_CODE=1 END 2026-06-01 15:40:19 CST===  
115 -```  
116 -  
117 ----  
118 -  
119 -## ⑤ flake 识别参考(attempt 1 vs 2 vs 3 vs 4 vs 5 五轮对比)  
120 -  
121 -| 维度 | attempt 1 (r1) | attempt 2 (r2) | attempt 3 (r3) | attempt 4 (r4) | attempt 5 (r5) |  
122 -|------|----------------|----------------|----------------|----------------|----------------|  
123 -| 结论 | 🔴 RED, exit=1 | 🔴 RED, exit=1 | 🔴 RED, exit=1 | 🔴 RED, exit=1 | 🔴 RED, exit=1 |  
124 -| Tests run(XML 聚合) | 125 | 125 | 125 | 125 | 125 |  
125 -| Errors | 9 | 9 | 9 | 9 | 9 |  
126 -| Failures | 0 | 0 | 0 | 0 | 0 |  
127 -| 失败类 | `UsrAuthServiceImplTest`(9/9) | `UsrAuthServiceImplTest`(9/9) | `UsrAuthServiceImplTest`(9/9) | `UsrAuthServiceImplTest`(9/9) | `UsrAuthServiceImplTest`(9/9) |  
128 -| 失败用例集合 | 同下 9 条 | 完全相同 9 条 | 完全相同 9 条 | 完全相同 9 条 | **完全相同 9 条** |  
129 -| 失败位置 | `setUp:54` | `setUp:54` | `setUp:54` | `setUp:54` | `setUp:54` |  
130 -| 根因 | JDK25 / Byte Buddy 不支持 (69>66) | 同 | 同 | 同 | **同一根因,逐字一致** |  
131 -| 运行 JDK | 25.0.2 | 25.0.2 | 25.0.2 | 25.0.2 | 25.0.2 |  
132 -  
133 -**判定:非 flake(确定性失败)。** 连续五轮 attempt 结果 100% 一致——相同 9 条用例、同一 `UsrAuthServiceImplTest.setUp:54`、同一 `Byte Buddy ... Java 25 (69) is not supported` 异常链,与时序 / 网络 / 数据 / 并发顺序无关。属构建工具链版本不兼容(运行时 JDK 25 × Byte Buddy ≤ Java 22),需上层按 ③ 修复构建工具链后再 retry,gate 本身不放行。  
134 -  
135 -> 每个 attempt 独立成文:本文件 `usr-test-gate-r5.md` 不覆盖 `usr-test-gate-r1.md` / `r2.md` / `r3.md` / `r4.md`。