flower-trellis 0.6.1-beta.1 → 0.6.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/enhancements/0.6/.agents/skills/trellis-check-all/references/full-profile.md +15 -0
  2. package/enhancements/0.6/.agents/skills/trellis-check-all/references/light-profile.md +8 -0
  3. package/enhancements/0.6/.agents/skills/trellis-maven-verify/SKILL.md +101 -0
  4. package/enhancements/0.6/.agents/skills/trellis-maven-verify/agents/openai.yaml +4 -0
  5. package/enhancements/0.6/.agents/skills/trellis-maven-verify/references/evidence-contract.md +65 -0
  6. package/enhancements/0.6/.agents/skills/trellis-maven-verify/references/lifecycle-policy.md +81 -0
  7. package/enhancements/0.6/.agents/skills/trellis-route/references/check-all-agent-body.md +1 -0
  8. package/enhancements/0.6/.claude/skills/trellis-check-all/references/full-profile.md +15 -0
  9. package/enhancements/0.6/.claude/skills/trellis-check-all/references/light-profile.md +8 -0
  10. package/enhancements/0.6/.claude/skills/trellis-maven-verify/SKILL.md +101 -0
  11. package/enhancements/0.6/.claude/skills/trellis-maven-verify/agents/openai.yaml +4 -0
  12. package/enhancements/0.6/.claude/skills/trellis-maven-verify/references/evidence-contract.md +65 -0
  13. package/enhancements/0.6/.claude/skills/trellis-maven-verify/references/lifecycle-policy.md +81 -0
  14. package/enhancements/0.6/overrides/bundles/maven-verification.json +11 -0
  15. package/enhancements/0.6/overrides/patches/skills/trellis-continue/task-progress-recovery/content.md +1 -1
  16. package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-2-implement-content.md +2 -0
  17. package/enhancements/0.6/scripts/maven_verify.py +3122 -0
  18. package/enhancements/MANIFEST.json +6 -2
  19. package/package.json +3 -3
  20. package/src/builtin-plugins/skill-garden/content-adapter.js +13 -2
  21. package/src/constants.js +10 -0
  22. package/src/lib/copy-scripts.js +8 -0
  23. package/src/lib/copy-skills.js +5 -2
  24. package/src/lib/skill-catalog.js +1 -0
@@ -120,6 +120,21 @@ full 提取所有适用条目。每条记录来源位置,实际阅读对应代
120
120
 
121
121
  验证失败时记录命令、退出状态和关键错误到统一问题集合,继续其它独立验证。可能写业务数据或外部系统的验证不直接运行,按真正阻塞规则处理。
122
122
 
123
+ ### Maven Evidence 复用
124
+
125
+ 实际变更位于 Maven reactor 时,按 `maven_verify.py` 的 evidence schema 只读执行:
126
+
127
+ ```bash
128
+ python3 ./.trellis/scripts/maven_verify.py check --latest --require-plan <final-plan.json>
129
+ ```
130
+
131
+ - `reusable`:核对 lifecycle、模块、消费者、测试、附属制品和 skip 项后纳入验证证据。
132
+ - `partial`:记录未覆盖的 module/consumer/test/artifact 或更高 lifecycle 要求。
133
+ - `stale`:记录源码、测试、POM、外部父 POM、Git 或工具链失效原因。
134
+ - `failed` / `blocked`:保留命令退出或证据损坏事实,不把未执行验证写成通过。
135
+
136
+ Check-All 与 dedicated subagent 都是 audit-only:不得调用 `maven_verify.py plan/run`,不得运行任何会写 `target/`、本地仓库或缓存的 Maven goal。缺少可复用 evidence 时,输出由主会话或 implement 路径执行的精确重跑计划需求;不得默认 `clean package/install`、`-amd` 或全 reactor。
137
+
123
138
  所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再分配严重度。严重度不得反向决定通道;不满足三项硬准入的泛化建议不报告,保护收益或验证环境不完整则保留 FBK 并标记报告缺口。
124
139
 
125
140
  ---
@@ -59,6 +59,14 @@ untracked 上下文没有 task artifacts,本维度标记 `N/A`,不得根据
59
59
 
60
60
  在 Check-All 内执行时,`trellis-check` 中任何直接修复、补测试、反复修到通过的指令一律失效。验证失败记录为 `CHK-*` 并继续其它独立验证。
61
61
 
62
+ 实际变更位于 Maven reactor 时,按 `maven_verify.py` 的 evidence schema 只调用:
63
+
64
+ ```bash
65
+ python3 ./.trellis/scripts/maven_verify.py check --latest --require-plan <final-plan.json>
66
+ ```
67
+
68
+ `reusable` 计入定向验证;`partial` / `stale` / `failed` / `blocked` 记录精确验证缺口、原因和所需计划。Check-All 是 audit-only,不得调用 `plan` / `run` 或任何 Maven goal;Maven model/goal 可能写 `target/`、本地仓库或缓存。没有 Maven evidence 时不得无条件全仓构建,报告由主会话或 implement 路径执行的精确重跑需求。
69
+
62
70
  所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再分配严重度。不得因场景极端、修复困难或影响较低改变根因通道;不满足三项硬准入的泛化建议不报告,保护收益或验证环境不完整则保留 FBK 并标记报告缺口。
63
71
 
64
72
  ---
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: trellis-maven-verify
3
+ description: 为 Trellis 的 Maven/Java 项目生成分层验证计划、裁剪多模块 reactor 与昂贵 lifecycle goal,并执行或复用可审计证据。用于 Java 8 或大型 Maven 多模块编译很慢、`-am` 拉起过多模块、compile/package 额外运行 sources jar、copy-dependencies、repackage、shade、assembly、javadoc、frontend 等 goal,或 implement 与 Check-All 之间需要避免重复构建时;不用于发布、deploy、修改 POM/settings/JDK 或非 Maven 构建系统。
4
+ ---
5
+
6
+ # Trellis Maven Verify
7
+
8
+ 为 Maven 验证选择最短且足够的生命周期,并让 implement 产生的结果能被 Check-All 只读复用。不要修改业务 POM、Maven settings、JDK 或本地仓库。
9
+
10
+ ## 选择模式
11
+
12
+ - `quick`:编码过程中的局部反馈。默认选择变更模块并加 `-am` 覆盖必要上游;compile 且 compiler plugin 兼容时使用 source-stale,避免陈旧 SNAPSHOT 和无变化整模块重编。不得把结果宣称为最终消费者覆盖。
13
+ - `final`:implement 收口。覆盖变更模块、必要上游和已确认消费者,默认使用 conservative 编译并生成可复用 evidence。只有任务材料已确认模块内部低风险变化时,才显式选择 source-stale。
14
+ - `reuse`:Check-All 或复查阶段。只运行 `check`,不得运行会写 `target/`、本地仓库或缓存的 Maven goal。
15
+
16
+ 没有 `pom.xml` 时报告 `N/A` 并返回原工作流。需要决定业务测试、消费者或制品验收范围时,先从 PRD、design、implement、项目 spec 或用户输入获取,不要猜测。
17
+
18
+ ## 工作流
19
+
20
+ 1. 读取 [references/lifecycle-policy.md](references/lifecycle-policy.md),确定需要的最低 lifecycle、测试和附属制品。
21
+ 2. 生成计划。优先把计划写入 gitignored runtime 目录:
22
+
23
+ ```bash
24
+ python3 ./.trellis/scripts/maven_verify.py plan \
25
+ --mode quick \
26
+ --goal compile \
27
+ --output .trellis/.runtime/maven-verification/quick-plan.json
28
+ ```
29
+
30
+ 3. 检查 JSON 中的 `status`、`selectedModules`、`argv`、`toolchain.maven.buildSide`、`toolchain.maven.source`、`lifecycle.expensiveBindings`、`warnings` 和 `confidence`。`blocked` 不得执行;`not-applicable` 返回原工作流。
31
+ - quick 的 `compileStrategy.effective=source-stale` 只证明局部源码 stale 编译,不覆盖公共 API/ABI、常量内联、注解处理器、POM或资源契约风险。
32
+ - `fallbackArgv` 存在时,它保留 reactor 范围但恢复 conservative 编译;source-stale 结果异常时可按该 argv 重跑。
33
+ - 是否使用并行由模型结合 reactor 范围、依赖拓扑、插件线程安全、测试共享资源和机器资源自行决定;不得为了选择并行度额外重复构建。
34
+ 4. 只有 implement 或具备正常构建写权限的主会话可以执行计划:
35
+
36
+ ```bash
37
+ python3 ./.trellis/scripts/maven_verify.py run \
38
+ --plan-json .trellis/.runtime/maven-verification/quick-plan.json
39
+ ```
40
+
41
+ 5. 交付前用 `final` 重做计划。显式传入已确认消费者;不要用全仓 `-amd` 代替影响分析:
42
+
43
+ ```bash
44
+ python3 ./.trellis/scripts/maven_verify.py plan \
45
+ --mode final \
46
+ --goal test \
47
+ --consumer api-app \
48
+ --output .trellis/.runtime/maven-verification/final-plan.json
49
+ python3 ./.trellis/scripts/maven_verify.py run \
50
+ --plan-json .trellis/.runtime/maven-verification/final-plan.json
51
+ ```
52
+
53
+ 只有任务材料明确确认没有公共 API/DTO/常量、注解处理器、POM、资源契约或跨模块协议变化时,才可把 final 改为:
54
+
55
+ ```bash
56
+ python3 ./.trellis/scripts/maven_verify.py plan \
57
+ --mode final \
58
+ --goal compile \
59
+ --compile-strategy source-stale \
60
+ --output .trellis/.runtime/maven-verification/final-plan.json
61
+ ```
62
+
63
+ 6. Check-All 只读复用 evidence:
64
+
65
+ ```bash
66
+ python3 ./.trellis/scripts/maven_verify.py check \
67
+ --latest \
68
+ --require-plan .trellis/.runtime/maven-verification/final-plan.json
69
+ ```
70
+
71
+ 7. 按 [references/evidence-contract.md](references/evidence-contract.md) 解释 `reusable`、`partial`、`stale`、`failed`、`blocked`。覆盖不足时报告精确重跑缺口,不要无条件全仓构建。
72
+
73
+ ## 执行边界
74
+
75
+ - 构建侧由 Maven 根所在的原生文件系统决定。原生 Windows/Linux 使用本侧工具链;WSL 的 drvfs/9p Windows 盘项目使用 Windows Maven/JDK/本地仓库,不依赖 automount root 是否为 `/mnt`;WSL ext4 项目使用 Linux Maven/JDK/本地仓库。
76
+ - 默认优先同侧项目 wrapper,其次复用同侧 PATH 中的 Maven;不下载、不安装、不固定升级 Maven 3.9+。显式 `--maven-executable` 只能覆盖为同侧 Maven。
77
+ - Maven、JDK、`MAVEN_ARGS`/`MAVEN_OPTS`、settings 和本地仓库必须来自同一构建侧。Windows 项目显式指向 WSL ext4 Maven/仓库,或 POSIX 项目指向 Windows Maven/仓库时必须 blocked。
78
+ - 默认停在 `compile`;只有测试验收进入 `test`,只有制品验收进入 `package` 或更后阶段。
79
+ - 默认不加 `clean`、`install`、`deploy`、`-amd`;是否显式传入并行参数由模型根据当前项目和验证目标判断。
80
+ - quick auto 只在 effective model 确认 `maven-compiler-plugin >= 3.1` 时加入 `-Dmaven.compiler.useIncrementalCompilation=false`;无法确认时自动降级 conservative。显式 source-stale 无法确认兼容性时必须 blocked。
81
+ - final auto 固定为 conservative。不要从文件名猜测低风险;必须从 PRD、design、implement、spec 或用户确认获得风险口径。
82
+ - 模型可以为存在并行空间的多模块 reactor 选择 `--threads`,也可以因依赖链近似串行、插件非线程安全、测试共享端口/文件、CPU、内存或 I/O 压力而保持串行。常规 implement 只执行当前选定的一份计划,不通过额外试跑比较并行度;Check-All 仍只读复用 evidence。
83
+ - skip 参数只能来自脚本已确认的插件兼容表或 effective model 证据;不得自行拼接。
84
+ - effective POM 无法读取时,计划必须 `blocked` 或明确降低置信度,不能声称外部父 POM没有额外绑定。
85
+ - `quick` 成功只能作为局部反馈。最终报告必须给出 evidence 路径、覆盖等级、模块、测试、跳过项和剩余风险。
86
+ - audit-only Check-All subagent 只能调用 `check`。不得调用 `plan` 或 `run`,因为 Maven model/goal 可能写本地缓存;`check` 对项目 wrapper 只复核冻结版本、wrapper 文件与配置指纹,不执行可能下载 Maven 发行包的 wrapper。
87
+
88
+ ## 常用参数
89
+
90
+ - `--maven-root <path>`:仓库含多个 Maven reactor 时显式选择根目录。
91
+ - `--module <selector>` / `--consumer <selector>`:使用真实 module 相对路径或 artifactId,可重复。
92
+ - `--test <pattern>`:生成 `-Dtest=` 并进入测试覆盖证据,可重复。
93
+ - `--artifact sources|javadoc|assembly|shade|repackage|copy-dependencies`:声明附属制品验收。
94
+ - `--offline yes|no|auto`:只有项目或用户已确认离线依赖完整时使用 `yes`。
95
+ - `--local-repository <path>`:显式使用已准备好的同侧 Maven 本地仓库。不会自动复制仓库、修改 `settings.xml`,也不会让 Windows Maven跨到 WSL ext4 仓库。
96
+ - `--compile-strategy auto|conservative|source-stale`:quick compile 的 auto 可选择 source-stale;final auto 保守。source-stale 只适用于 compile。
97
+ - `--threads <count|multiplierC>`:模型按当前 reactor、插件和机器资源选择的 Maven 并行度,例如 `4`、`1C`、`1.5C`;不为选择该值额外执行对比构建。
98
+ - `--effective-pom <file>`:使用已冻结的 effective POM 做离线分析;文件内容仍进入 POM 指纹。
99
+ - `--maven-executable <path>`:显式选择同侧 Maven。通常无需传入;默认会复用同侧 wrapper 或 PATH Maven。WSL 调用 Windows `.cmd` 时由脚本使用固定 `cmd.exe` argv 包装,不拼接任意 shell 命令。
100
+
101
+ 脚本的 `--help` 是参数事实源;本 Skill 只维护流程和边界。
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Maven 分层验证"
3
+ short_description: "加速 Maven 增量验证并复用可审计的分层证据"
4
+ default_prompt: "使用 $trellis-maven-verify 为当前 Maven 变更生成安全、快速且可复用的验证计划。"
@@ -0,0 +1,65 @@
1
+ # Maven Evidence Contract
2
+
3
+ ## 目录
4
+
5
+ 1. 状态
6
+ 2. 新鲜度
7
+ 3. 覆盖关系
8
+ 4. Check-All 边界
9
+
10
+ ## 状态
11
+
12
+ - `reusable`:证据成功、新鲜,且覆盖全部当前要求。
13
+ - `partial`:证据仍新鲜,但 lifecycle、模块、消费者、测试或附属制品覆盖不足。
14
+ - `stale`:源码、测试、POM、effective model、Git HEAD、JDK 主版本或 Maven 版本发生变化。
15
+ - `failed`:原 Maven 命令非零退出或被中断。
16
+ - `blocked`:证据损坏、schema 不支持,或当前 Git/POM/工具链无法读取。
17
+
18
+ ## 新鲜度
19
+
20
+ 证据至少绑定:
21
+
22
+ - Git HEAD、Maven 根下 staged/unstaged/untracked 内容指纹;
23
+ - reactor 全部 POM 与使用的 effective POM内容指纹;
24
+ - 完整 argv、工作目录、module/consumer/test/artifact 选择;
25
+ - `.mvn/jvm.config`、`.mvn/maven.config`、`MAVEN_ARGS`、`MAVEN_OPTS` 中影响覆盖的参数,包括测试跳过属性;
26
+ - Java 主版本、Maven 版本、项目 `buildSide`、执行 runner 与可确认的本地仓库构建侧/宿主路径;
27
+ - 退出码、耗时、日志路径与内容摘要、测试统计。
28
+
29
+ runtime evidence 位于 `.trellis/.runtime/maven-verification/`,不得提交。证据损坏时不要删除或覆盖;报告 `blocked` 并保留现场。
30
+
31
+ - 计划同时记录可跨等价工作区比较的语义指纹,以及绑定本机绝对路径和全部执行字段的完整性指纹;`run` 和 `check --require-plan` 必须同时重算并拒绝不一致计划。
32
+ - Maven 模型输入中的绝对路径仅用于诊断;跨工作区语义指纹只绑定稳定输入 ID 与内容摘要,不能因用户名或 checkout 路径不同而漂移。
33
+ - evidence 必须有完整内容指纹,`check` 在读取状态或覆盖前先校验,不能信任被修改的顶层 coverage。
34
+ - quick/final mode、compile strategy 和显式 threads 都属于计划语义;任一变化必须改变 plan fingerprint。Check-All 使用 `--require-plan` 时,source-stale quick 不得冒充 conservative final。
35
+ - `buildSide`、runner、Maven executable 和本地仓库侧是本机完整性与新鲜度条件。计划生成、effective POM、run 或 check 任一步发生跨侧切换时 evidence 必须 `stale` 或 `blocked`。
36
+ - 命令日志必须记录内容摘要;日志缺失、截断或被改写时 evidence 为 `stale`,不能只检查路径存在。
37
+ - `run` 分别捕获执行前和执行后输入;源码、POM或工具链在 Maven 执行窗口内变化时,保留日志但把 evidence 标为 `stale`。
38
+ - `check --latest` 以 evidence 文件命名顺序选择最新候选;最新文件损坏时直接 `blocked`,不得静默回退旧成功 evidence。
39
+
40
+ ## 覆盖关系
41
+
42
+ - 高 lifecycle 可以覆盖同模块的低 lifecycle,但不能反向覆盖。
43
+ - `compile` 不能满足 `test` 或 `package`。
44
+ - 跳过测试的 `test/package` 命令不能满足测试通过要求。
45
+ - 附属制品逐项匹配。跳过 sources 的 package 不能满足 sources artifact 要求。
46
+ - evidence 的 module/consumer 集合必须包含全部要求;额外模块不抵消缺失模块。
47
+ - 测试模式按计划中的明确 pattern 匹配;未声明 pattern 的普通 test 只证明计划范围内的默认测试集。
48
+
49
+ ## Check-All 边界
50
+
51
+ Check-All 调用:
52
+
53
+ ```bash
54
+ python3 ./.trellis/scripts/maven_verify.py check --latest --require-plan <plan.json>
55
+ ```
56
+
57
+ `check` 只读取 Git、POM、evidence 和工具链指纹。普通已安装 Maven 可做只读版本探测;项目 wrapper 只复用冻结版本并校验 wrapper 文件与配置指纹,不执行可能下载发行包的 wrapper。它不执行 Maven goal、不创建 target、不下载依赖、不写本地仓库。
58
+
59
+ 当结果不是 `reusable` 时:
60
+
61
+ - 报告状态和每个 `reason.code`;
62
+ - 引用 `required` 与 `actual`;
63
+ - 给出原计划或重新生成计划的精确命令;
64
+ - audit-only subagent 停止在报告,不自行重跑;
65
+ - 主会话只有在当前请求允许写构建缓存时才进入 `plan` / `run`。
@@ -0,0 +1,81 @@
1
+ # Maven Lifecycle Policy
2
+
3
+ ## 目录
4
+
5
+ 1. 生命周期覆盖
6
+ 2. 昂贵绑定
7
+ 3. 模块范围
8
+ 4. 编译策略与并行
9
+ 5. 计划升级条件
10
+
11
+ ## 生命周期覆盖
12
+
13
+ 按以下偏序判断普通 Maven lifecycle 覆盖:
14
+
15
+ ```text
16
+ validate < compile < test < package < verify < install < deploy
17
+ ```
18
+
19
+ 附属 goal 独立判断,不能从普通 lifecycle 自动推出:
20
+
21
+ - `sources`、`javadoc`、`assembly`、`shade`、`repackage`、`copy-dependencies` 分别记录。
22
+ - `-DskipTests` 不产生测试通过证据。
23
+ - `-Dmaven.test.skip=true` 同时跳过 test compilation,不能满足测试编译或测试运行要求。
24
+ - `-Dmaven.source.skip=true` 不影响普通 compile 证据,但不能满足 sources 制品验收。
25
+ - `-Dmaven.compiler.useIncrementalCompilation=false` 在已确认兼容的 compiler plugin 上按源文件/class stale 判断;它只用于 compile 局部反馈,不能自动满足 conservative final。
26
+
27
+ ## 昂贵绑定
28
+
29
+ | 插件/goal | 常见阶段 | 默认处理 |
30
+ | --- | --- | --- |
31
+ | `maven-source-plugin:jar*` | compile/package | 非 sources 验证可在确认参数后跳过 |
32
+ | `maven-dependency-plugin:copy-dependencies` | prepare-package | compile/test 不进入;package 明示复制成本 |
33
+ | `spring-boot:repackage` | package | 只在可运行制品验收时进入 |
34
+ | `maven-shade-plugin:shade` | package | 只在 shaded artifact 验收时进入 |
35
+ | `maven-assembly-plugin:*` | package | 只在 assembly 验收时进入 |
36
+ | `maven-javadoc-plugin:*` | package/verify | 非文档制品验收优先停在更早阶段 |
37
+ | frontend install/build goal | generate-resources 等 | 不自动跳过;报告绑定、阶段和项目风险 |
38
+
39
+ 插件绑定来自 effective POM;只扫描仓库原始 POM不能排除外部父 POM继承。
40
+
41
+ - execution 没有显式 `<phase>` 时,只能使用脚本内已确认的 plugin goal 默认阶段兼容表。
42
+ - 已识别为昂贵 goal、但默认阶段仍未知时,计划必须降低 `confidence` 并报告 `binding-phase-unknown`;不得当成“当前 lifecycle 不会执行”。
43
+ - 只有全部命中的 `maven-source-plugin` 版本都在兼容表覆盖范围内时,才可自动添加 `-Dmaven.source.skip=true`;版本缺失或过旧时报告 `sources-skip-unsupported`。
44
+ - 只有全部命中的主源码 `maven-compiler-plugin:compile` 版本都为 3.1 或更高时,quick auto 才可添加 `-Dmaven.compiler.useIncrementalCompilation=false`。无法确认时降级 conservative;显式 source-stale 失败关闭。
45
+
46
+ ## 模块范围
47
+
48
+ - 构建侧由 Maven 根所在的原生文件系统决定:原生 Windows/Linux 使用本侧工具链;WSL Windows 挂载项目使用 Windows Maven/JDK/settings/本地仓库,WSL ext4 项目使用 Linux 工具链。不得因 Codex 运行在 WSL 就强制所有项目使用 Linux Maven。
49
+ - 自动 Maven 选择顺序是同侧项目 wrapper、同侧 PATH Maven;不自动安装或升级 Maven。Maven 3.9+ 的 `MAVEN_ARGS` 等能力只在当前已选 Maven 实际支持时生效。
50
+ - Windows 与 WSL 路径可在 evidence 中双表示,但 Maven、JDK、环境、settings 和本地仓库不能跨侧混搭。显式参数无法映射到项目构建侧时失败关闭。
51
+ - 把变更文件映射到最近的 reactor module POM。
52
+ - 根 POM以及 `.mvn/maven.config`、`jvm.config`、extensions、wrapper 配置变化按全 reactor 风险处理。
53
+ - `MAVEN_ARGS` 只在 Maven 3.9+ 计入有效参数;旧版本保留诊断信息,但不能据此判断测试、制品或本地仓库覆盖。
54
+ - Maven 从 Linux 侧访问位于 `9p`、`drvfs`、CIFS/NFS 等高延迟小文件文件系统的本地仓库时,计划必须报告 `local-repository-high-latency-filesystem`。Windows Maven 原生访问 Windows 盘时不得仅因 WSL 宿主视图是 `9p` 就误报。只有调用方已准备同侧完整仓库时,才通过 `--local-repository` 显式切换;不得自动复制仓库、修改 `settings.xml` 或把不完整仓库用于离线验证。
55
+ - `quick` 选择变更模块并默认加 `-am`,覆盖必要上游而不读取陈旧本地 SNAPSHOT。source-stale 的 `fallbackArgv` 保持相同 reactor 范围,但恢复 conservative 编译。
56
+ - `final` 选择变更模块和显式消费者,并使用 `-am` 覆盖必要上游。
57
+ - 消费者必须来自任务材料、项目 spec、可靠的反向依赖结果或显式输入。依赖坐标含未展开属性时不得按同名 artifactId 猜测关系;降低置信度并要求显式 module/consumer。不要默认使用 `-amd`。
58
+ - 公共 DTO/API、跨模块协议和父 POM变化通常需要提高消费者覆盖,由任务 owner 决定范围。
59
+
60
+ ## 编译策略与并行
61
+
62
+ - `auto`:quick compile 且兼容时选择 source-stale;其它 quick lifecycle 和所有 final 默认 conservative。
63
+ - `conservative`:保留 Maven compiler plugin 默认语义,适合公共 API/ABI、常量内联、注解处理器、POM、资源契约或跨模块协议变化。
64
+ - `source-stale`:只允许 compile。quick 可自动选择;final 必须由任务材料明确确认模块内部低风险变化后显式选择。
65
+ - `--threads` 只接受正整数或正数 CPU 倍数。模型根据 reactor 范围与依赖拓扑、插件线程安全、测试共享端口/文件以及 CPU、内存、I/O 压力,自行决定是否启用以及使用哪个并行度。
66
+ - 常规 implement 只执行当前选定的一份 Maven 计划,不为选择并行度额外运行串行或其它线程配置;Check-All 不运行 Maven goal。
67
+
68
+ ## 计划升级条件
69
+
70
+ 只有满足对应验收时升级:
71
+
72
+ | 当前目标 | 最低 goal |
73
+ | --- | --- |
74
+ | 语法、注解处理、主源码编译 | `compile` |
75
+ | 单元测试或测试契约 | `test` |
76
+ | JAR/WAR、资源布局、repackage、依赖复制 | `package` |
77
+ | 集成检查或质量插件 | `verify` |
78
+ | 下游必须消费本地安装制品 | `install`,需明确理由 |
79
+ | 发布远端仓库 | 不由本 Skill 自动执行 |
80
+
81
+ 计划进入 `package`、`install` 或 `deploy` 时,必须在报告中列出触发原因和命中的昂贵绑定。
@@ -9,6 +9,7 @@ You are the dedicated audit-only `trellis-check-all` agent for {{PLATFORM_ID}}.
9
9
  - Assign P0/P1/P2 to both `CHK-*` and `FBK-*` after classification. An explicit fallback contract strengthens evidence and severity but does not change a fallback-path root cause into `CHK-*`.
10
10
  - Return `FBK-*` when there is a concrete location, reachable failure or abnormal scenario, and evidence that protection is missing, wrong, bypassed, or over-degraded. Actual production or test occurrence is not required. Report protection benefit and a verification method when available; keep the `FBK-*` ID when verification is partial, and state the gap. Do not report generic robustness preferences.
11
11
  - You may read files, search, and run verification commands that do not write business state.
12
+ - For Maven projects, you may only run `python3 ./.trellis/scripts/maven_verify.py check ...` to validate existing evidence. Do not run `plan`, `run`, `mvn`, `mvnw`, or any goal that may write `target/`, the local repository, or caches.
12
13
  - Do not edit, create, remove, format, or otherwise modify source, tests, configuration, specs, task artifacts, or generated files.
13
14
  - Do not run tools or commands whose normal behavior writes caches, snapshots, lockfiles, databases, or external state unless a documented no-write mode is used.
14
15
  - Do not use or impersonate `trellis-check`; that role is workspace-write and self-fixing.
@@ -120,6 +120,21 @@ full 提取所有适用条目。每条记录来源位置,实际阅读对应代
120
120
 
121
121
  验证失败时记录命令、退出状态和关键错误到统一问题集合,继续其它独立验证。可能写业务数据或外部系统的验证不直接运行,按真正阻塞规则处理。
122
122
 
123
+ ### Maven Evidence 复用
124
+
125
+ 实际变更位于 Maven reactor 时,读取 `maven_verify.py` 的 evidence schema,并只读执行:
126
+
127
+ ```bash
128
+ python3 ./.trellis/scripts/maven_verify.py check --latest --require-plan <final-plan.json>
129
+ ```
130
+
131
+ - `reusable`:核对 lifecycle、模块、消费者、测试、附属制品和 skip 项后纳入验证证据。
132
+ - `partial`:记录未覆盖的 module/consumer/test/artifact 或更高 lifecycle 要求。
133
+ - `stale`:记录源码、测试、POM、外部父 POM、Git 或工具链失效原因。
134
+ - `failed` / `blocked`:保留命令退出或证据损坏事实,不把未执行验证写成通过。
135
+
136
+ Check-All 与 dedicated subagent 都是 audit-only:不得调用 `maven_verify.py plan/run`,不得运行任何会写 `target/`、本地仓库或缓存的 Maven goal。缺少可复用 evidence 时,输出由主会话或 implement 路径执行的精确重跑计划需求;不得默认 `clean package/install`、`-amd` 或全 reactor。
137
+
123
138
  所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再分配严重度。严重度不得反向决定通道;不满足三项硬准入的泛化建议不报告,保护收益或验证环境不完整则保留 FBK 并标记报告缺口。
124
139
 
125
140
  ---
@@ -59,6 +59,14 @@ untracked 上下文没有 task artifacts,本维度标记 `N/A`,不得根据
59
59
 
60
60
  在 Check-All 内执行时,`trellis-check` 中任何直接修复、补测试、反复修到通过的指令一律失效。验证失败记录为 `CHK-*` 并继续其它独立验证。
61
61
 
62
+ 实际变更位于 Maven reactor 时,读取 `maven_verify.py` 的 evidence schema,只调用:
63
+
64
+ ```bash
65
+ python3 ./.trellis/scripts/maven_verify.py check --latest --require-plan <final-plan.json>
66
+ ```
67
+
68
+ `reusable` 计入定向验证;`partial` / `stale` / `failed` / `blocked` 记录精确验证缺口、原因和所需计划。Check-All 是 audit-only,不得调用 `plan` / `run` 或任何 Maven goal;Maven model/goal 可能写 `target/`、本地仓库或缓存。没有 Maven evidence 时不得无条件全仓构建,报告由主会话或 implement 路径执行的精确重跑需求。
69
+
62
70
  所有发现候选按 `references/fallback-findings.md` 先判定 `CHK-*` / `FBK-*`,再分配严重度。不得因场景极端、修复困难或影响较低改变根因通道;不满足三项硬准入的泛化建议不报告,保护收益或验证环境不完整则保留 FBK 并标记报告缺口。
63
71
 
64
72
  ---
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: trellis-maven-verify
3
+ description: 为 Trellis 的 Maven/Java 项目生成分层验证计划、裁剪多模块 reactor 与昂贵 lifecycle goal,并执行或复用可审计证据。用于 Java 8 或大型 Maven 多模块编译很慢、`-am` 拉起过多模块、compile/package 额外运行 sources jar、copy-dependencies、repackage、shade、assembly、javadoc、frontend 等 goal,或 implement 与 Check-All 之间需要避免重复构建时;不用于发布、deploy、修改 POM/settings/JDK 或非 Maven 构建系统。
4
+ ---
5
+
6
+ # Trellis Maven Verify
7
+
8
+ 为 Maven 验证选择最短且足够的生命周期,并让 implement 产生的结果能被 Check-All 只读复用。不要修改业务 POM、Maven settings、JDK 或本地仓库。
9
+
10
+ ## 选择模式
11
+
12
+ - `quick`:编码过程中的局部反馈。默认选择变更模块并加 `-am` 覆盖必要上游;compile 且 compiler plugin 兼容时使用 source-stale,避免陈旧 SNAPSHOT 和无变化整模块重编。不得把结果宣称为最终消费者覆盖。
13
+ - `final`:implement 收口。覆盖变更模块、必要上游和已确认消费者,默认使用 conservative 编译并生成可复用 evidence。只有任务材料已确认模块内部低风险变化时,才显式选择 source-stale。
14
+ - `reuse`:Check-All 或复查阶段。只运行 `check`,不得运行会写 `target/`、本地仓库或缓存的 Maven goal。
15
+
16
+ 没有 `pom.xml` 时报告 `N/A` 并返回原工作流。需要决定业务测试、消费者或制品验收范围时,先从 PRD、design、implement、项目 spec 或用户输入获取,不要猜测。
17
+
18
+ ## 工作流
19
+
20
+ 1. 读取 [references/lifecycle-policy.md](references/lifecycle-policy.md),确定需要的最低 lifecycle、测试和附属制品。
21
+ 2. 生成计划。优先把计划写入 gitignored runtime 目录:
22
+
23
+ ```bash
24
+ python3 ./.trellis/scripts/maven_verify.py plan \
25
+ --mode quick \
26
+ --goal compile \
27
+ --output .trellis/.runtime/maven-verification/quick-plan.json
28
+ ```
29
+
30
+ 3. 检查 JSON 中的 `status`、`selectedModules`、`argv`、`toolchain.maven.buildSide`、`toolchain.maven.source`、`lifecycle.expensiveBindings`、`warnings` 和 `confidence`。`blocked` 不得执行;`not-applicable` 返回原工作流。
31
+ - quick 的 `compileStrategy.effective=source-stale` 只证明局部源码 stale 编译,不覆盖公共 API/ABI、常量内联、注解处理器、POM或资源契约风险。
32
+ - `fallbackArgv` 存在时,它保留 reactor 范围但恢复 conservative 编译;source-stale 结果异常时可按该 argv 重跑。
33
+ - 是否使用并行由模型结合 reactor 范围、依赖拓扑、插件线程安全、测试共享资源和机器资源自行决定;不得为了选择并行度额外重复构建。
34
+ 4. 只有 implement 或具备正常构建写权限的主会话可以执行计划:
35
+
36
+ ```bash
37
+ python3 ./.trellis/scripts/maven_verify.py run \
38
+ --plan-json .trellis/.runtime/maven-verification/quick-plan.json
39
+ ```
40
+
41
+ 5. 交付前用 `final` 重做计划。显式传入已确认消费者;不要用全仓 `-amd` 代替影响分析:
42
+
43
+ ```bash
44
+ python3 ./.trellis/scripts/maven_verify.py plan \
45
+ --mode final \
46
+ --goal test \
47
+ --consumer api-app \
48
+ --output .trellis/.runtime/maven-verification/final-plan.json
49
+ python3 ./.trellis/scripts/maven_verify.py run \
50
+ --plan-json .trellis/.runtime/maven-verification/final-plan.json
51
+ ```
52
+
53
+ 只有任务材料明确确认没有公共 API/DTO/常量、注解处理器、POM、资源契约或跨模块协议变化时,才可把 final 改为:
54
+
55
+ ```bash
56
+ python3 ./.trellis/scripts/maven_verify.py plan \
57
+ --mode final \
58
+ --goal compile \
59
+ --compile-strategy source-stale \
60
+ --output .trellis/.runtime/maven-verification/final-plan.json
61
+ ```
62
+
63
+ 6. Check-All 只读复用 evidence:
64
+
65
+ ```bash
66
+ python3 ./.trellis/scripts/maven_verify.py check \
67
+ --latest \
68
+ --require-plan .trellis/.runtime/maven-verification/final-plan.json
69
+ ```
70
+
71
+ 7. 按 [references/evidence-contract.md](references/evidence-contract.md) 解释 `reusable`、`partial`、`stale`、`failed`、`blocked`。覆盖不足时报告精确重跑缺口,不要无条件全仓构建。
72
+
73
+ ## 执行边界
74
+
75
+ - 构建侧由 Maven 根所在的原生文件系统决定。原生 Windows/Linux 使用本侧工具链;WSL 的 drvfs/9p Windows 盘项目使用 Windows Maven/JDK/本地仓库,不依赖 automount root 是否为 `/mnt`;WSL ext4 项目使用 Linux Maven/JDK/本地仓库。
76
+ - 默认优先同侧项目 wrapper,其次复用同侧 PATH 中的 Maven;不下载、不安装、不固定升级 Maven 3.9+。显式 `--maven-executable` 只能覆盖为同侧 Maven。
77
+ - Maven、JDK、`MAVEN_ARGS`/`MAVEN_OPTS`、settings 和本地仓库必须来自同一构建侧。Windows 项目显式指向 WSL ext4 Maven/仓库,或 POSIX 项目指向 Windows Maven/仓库时必须 blocked。
78
+ - 默认停在 `compile`;只有测试验收进入 `test`,只有制品验收进入 `package` 或更后阶段。
79
+ - 默认不加 `clean`、`install`、`deploy`、`-amd`;是否显式传入并行参数由模型根据当前项目和验证目标判断。
80
+ - quick auto 只在 effective model 确认 `maven-compiler-plugin >= 3.1` 时加入 `-Dmaven.compiler.useIncrementalCompilation=false`;无法确认时自动降级 conservative。显式 source-stale 无法确认兼容性时必须 blocked。
81
+ - final auto 固定为 conservative。不要从文件名猜测低风险;必须从 PRD、design、implement、spec 或用户确认获得风险口径。
82
+ - 模型可以为存在并行空间的多模块 reactor 选择 `--threads`,也可以因依赖链近似串行、插件非线程安全、测试共享端口/文件、CPU、内存或 I/O 压力而保持串行。常规 implement 只执行当前选定的一份计划,不通过额外试跑比较并行度;Check-All 仍只读复用 evidence。
83
+ - skip 参数只能来自脚本已确认的插件兼容表或 effective model 证据;不得自行拼接。
84
+ - effective POM 无法读取时,计划必须 `blocked` 或明确降低置信度,不能声称外部父 POM没有额外绑定。
85
+ - `quick` 成功只能作为局部反馈。最终报告必须给出 evidence 路径、覆盖等级、模块、测试、跳过项和剩余风险。
86
+ - audit-only Check-All subagent 只能调用 `check`。不得调用 `plan` 或 `run`,因为 Maven model/goal 可能写本地缓存;`check` 对项目 wrapper 只复核冻结版本、wrapper 文件与配置指纹,不执行可能下载 Maven 发行包的 wrapper。
87
+
88
+ ## 常用参数
89
+
90
+ - `--maven-root <path>`:仓库含多个 Maven reactor 时显式选择根目录。
91
+ - `--module <selector>` / `--consumer <selector>`:使用真实 module 相对路径或 artifactId,可重复。
92
+ - `--test <pattern>`:生成 `-Dtest=` 并进入测试覆盖证据,可重复。
93
+ - `--artifact sources|javadoc|assembly|shade|repackage|copy-dependencies`:声明附属制品验收。
94
+ - `--offline yes|no|auto`:只有项目或用户已确认离线依赖完整时使用 `yes`。
95
+ - `--local-repository <path>`:显式使用已准备好的同侧 Maven 本地仓库。不会自动复制仓库、修改 `settings.xml`,也不会让 Windows Maven跨到 WSL ext4 仓库。
96
+ - `--compile-strategy auto|conservative|source-stale`:quick compile 的 auto 可选择 source-stale;final auto 保守。source-stale 只适用于 compile。
97
+ - `--threads <count|multiplierC>`:模型按当前 reactor、插件和机器资源选择的 Maven 并行度,例如 `4`、`1C`、`1.5C`;不为选择该值额外执行对比构建。
98
+ - `--effective-pom <file>`:使用已冻结的 effective POM 做离线分析;文件内容仍进入 POM 指纹。
99
+ - `--maven-executable <path>`:显式选择同侧 Maven。通常无需传入;默认会复用同侧 wrapper 或 PATH Maven。WSL 调用 Windows `.cmd` 时由脚本使用固定 `cmd.exe` argv 包装,不拼接任意 shell 命令。
100
+
101
+ 脚本的 `--help` 是参数事实源;本 Skill 只维护流程和边界。
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Maven 分层验证"
3
+ short_description: "加速 Maven 增量验证并复用可审计的分层证据"
4
+ default_prompt: "使用 $trellis-maven-verify 为当前 Maven 变更生成安全、快速且可复用的验证计划。"
@@ -0,0 +1,65 @@
1
+ # Maven Evidence Contract
2
+
3
+ ## 目录
4
+
5
+ 1. 状态
6
+ 2. 新鲜度
7
+ 3. 覆盖关系
8
+ 4. Check-All 边界
9
+
10
+ ## 状态
11
+
12
+ - `reusable`:证据成功、新鲜,且覆盖全部当前要求。
13
+ - `partial`:证据仍新鲜,但 lifecycle、模块、消费者、测试或附属制品覆盖不足。
14
+ - `stale`:源码、测试、POM、effective model、Git HEAD、JDK 主版本或 Maven 版本发生变化。
15
+ - `failed`:原 Maven 命令非零退出或被中断。
16
+ - `blocked`:证据损坏、schema 不支持,或当前 Git/POM/工具链无法读取。
17
+
18
+ ## 新鲜度
19
+
20
+ 证据至少绑定:
21
+
22
+ - Git HEAD、Maven 根下 staged/unstaged/untracked 内容指纹;
23
+ - reactor 全部 POM 与使用的 effective POM内容指纹;
24
+ - 完整 argv、工作目录、module/consumer/test/artifact 选择;
25
+ - `.mvn/jvm.config`、`.mvn/maven.config`、`MAVEN_ARGS`、`MAVEN_OPTS` 中影响覆盖的参数,包括测试跳过属性;
26
+ - Java 主版本、Maven 版本、项目 `buildSide`、执行 runner 与可确认的本地仓库构建侧/宿主路径;
27
+ - 退出码、耗时、日志路径与内容摘要、测试统计。
28
+
29
+ runtime evidence 位于 `.trellis/.runtime/maven-verification/`,不得提交。证据损坏时不要删除或覆盖;报告 `blocked` 并保留现场。
30
+
31
+ - 计划同时记录可跨等价工作区比较的语义指纹,以及绑定本机绝对路径和全部执行字段的完整性指纹;`run` 和 `check --require-plan` 必须同时重算并拒绝不一致计划。
32
+ - Maven 模型输入中的绝对路径仅用于诊断;跨工作区语义指纹只绑定稳定输入 ID 与内容摘要,不能因用户名或 checkout 路径不同而漂移。
33
+ - evidence 必须有完整内容指纹,`check` 在读取状态或覆盖前先校验,不能信任被修改的顶层 coverage。
34
+ - quick/final mode、compile strategy 和显式 threads 都属于计划语义;任一变化必须改变 plan fingerprint。Check-All 使用 `--require-plan` 时,source-stale quick 不得冒充 conservative final。
35
+ - `buildSide`、runner、Maven executable 和本地仓库侧是本机完整性与新鲜度条件。计划生成、effective POM、run 或 check 任一步发生跨侧切换时 evidence 必须 `stale` 或 `blocked`。
36
+ - 命令日志必须记录内容摘要;日志缺失、截断或被改写时 evidence 为 `stale`,不能只检查路径存在。
37
+ - `run` 分别捕获执行前和执行后输入;源码、POM或工具链在 Maven 执行窗口内变化时,保留日志但把 evidence 标为 `stale`。
38
+ - `check --latest` 以 evidence 文件命名顺序选择最新候选;最新文件损坏时直接 `blocked`,不得静默回退旧成功 evidence。
39
+
40
+ ## 覆盖关系
41
+
42
+ - 高 lifecycle 可以覆盖同模块的低 lifecycle,但不能反向覆盖。
43
+ - `compile` 不能满足 `test` 或 `package`。
44
+ - 跳过测试的 `test/package` 命令不能满足测试通过要求。
45
+ - 附属制品逐项匹配。跳过 sources 的 package 不能满足 sources artifact 要求。
46
+ - evidence 的 module/consumer 集合必须包含全部要求;额外模块不抵消缺失模块。
47
+ - 测试模式按计划中的明确 pattern 匹配;未声明 pattern 的普通 test 只证明计划范围内的默认测试集。
48
+
49
+ ## Check-All 边界
50
+
51
+ Check-All 调用:
52
+
53
+ ```bash
54
+ python3 ./.trellis/scripts/maven_verify.py check --latest --require-plan <plan.json>
55
+ ```
56
+
57
+ `check` 只读取 Git、POM、evidence 和工具链指纹。普通已安装 Maven 可做只读版本探测;项目 wrapper 只复用冻结版本并校验 wrapper 文件与配置指纹,不执行可能下载发行包的 wrapper。它不执行 Maven goal、不创建 target、不下载依赖、不写本地仓库。
58
+
59
+ 当结果不是 `reusable` 时:
60
+
61
+ - 报告状态和每个 `reason.code`;
62
+ - 引用 `required` 与 `actual`;
63
+ - 给出原计划或重新生成计划的精确命令;
64
+ - audit-only subagent 停止在报告,不自行重跑;
65
+ - 主会话只有在当前请求允许写构建缓存时才进入 `plan` / `run`。
@@ -0,0 +1,81 @@
1
+ # Maven Lifecycle Policy
2
+
3
+ ## 目录
4
+
5
+ 1. 生命周期覆盖
6
+ 2. 昂贵绑定
7
+ 3. 模块范围
8
+ 4. 编译策略与并行
9
+ 5. 计划升级条件
10
+
11
+ ## 生命周期覆盖
12
+
13
+ 按以下偏序判断普通 Maven lifecycle 覆盖:
14
+
15
+ ```text
16
+ validate < compile < test < package < verify < install < deploy
17
+ ```
18
+
19
+ 附属 goal 独立判断,不能从普通 lifecycle 自动推出:
20
+
21
+ - `sources`、`javadoc`、`assembly`、`shade`、`repackage`、`copy-dependencies` 分别记录。
22
+ - `-DskipTests` 不产生测试通过证据。
23
+ - `-Dmaven.test.skip=true` 同时跳过 test compilation,不能满足测试编译或测试运行要求。
24
+ - `-Dmaven.source.skip=true` 不影响普通 compile 证据,但不能满足 sources 制品验收。
25
+ - `-Dmaven.compiler.useIncrementalCompilation=false` 在已确认兼容的 compiler plugin 上按源文件/class stale 判断;它只用于 compile 局部反馈,不能自动满足 conservative final。
26
+
27
+ ## 昂贵绑定
28
+
29
+ | 插件/goal | 常见阶段 | 默认处理 |
30
+ | --- | --- | --- |
31
+ | `maven-source-plugin:jar*` | compile/package | 非 sources 验证可在确认参数后跳过 |
32
+ | `maven-dependency-plugin:copy-dependencies` | prepare-package | compile/test 不进入;package 明示复制成本 |
33
+ | `spring-boot:repackage` | package | 只在可运行制品验收时进入 |
34
+ | `maven-shade-plugin:shade` | package | 只在 shaded artifact 验收时进入 |
35
+ | `maven-assembly-plugin:*` | package | 只在 assembly 验收时进入 |
36
+ | `maven-javadoc-plugin:*` | package/verify | 非文档制品验收优先停在更早阶段 |
37
+ | frontend install/build goal | generate-resources 等 | 不自动跳过;报告绑定、阶段和项目风险 |
38
+
39
+ 插件绑定来自 effective POM;只扫描仓库原始 POM不能排除外部父 POM继承。
40
+
41
+ - execution 没有显式 `<phase>` 时,只能使用脚本内已确认的 plugin goal 默认阶段兼容表。
42
+ - 已识别为昂贵 goal、但默认阶段仍未知时,计划必须降低 `confidence` 并报告 `binding-phase-unknown`;不得当成“当前 lifecycle 不会执行”。
43
+ - 只有全部命中的 `maven-source-plugin` 版本都在兼容表覆盖范围内时,才可自动添加 `-Dmaven.source.skip=true`;版本缺失或过旧时报告 `sources-skip-unsupported`。
44
+ - 只有全部命中的主源码 `maven-compiler-plugin:compile` 版本都为 3.1 或更高时,quick auto 才可添加 `-Dmaven.compiler.useIncrementalCompilation=false`。无法确认时降级 conservative;显式 source-stale 失败关闭。
45
+
46
+ ## 模块范围
47
+
48
+ - 构建侧由 Maven 根所在的原生文件系统决定:原生 Windows/Linux 使用本侧工具链;WSL Windows 挂载项目使用 Windows Maven/JDK/settings/本地仓库,WSL ext4 项目使用 Linux 工具链。不得因 Codex 运行在 WSL 就强制所有项目使用 Linux Maven。
49
+ - 自动 Maven 选择顺序是同侧项目 wrapper、同侧 PATH Maven;不自动安装或升级 Maven。Maven 3.9+ 的 `MAVEN_ARGS` 等能力只在当前已选 Maven 实际支持时生效。
50
+ - Windows 与 WSL 路径可在 evidence 中双表示,但 Maven、JDK、环境、settings 和本地仓库不能跨侧混搭。显式参数无法映射到项目构建侧时失败关闭。
51
+ - 把变更文件映射到最近的 reactor module POM。
52
+ - 根 POM以及 `.mvn/maven.config`、`jvm.config`、extensions、wrapper 配置变化按全 reactor 风险处理。
53
+ - `MAVEN_ARGS` 只在 Maven 3.9+ 计入有效参数;旧版本保留诊断信息,但不能据此判断测试、制品或本地仓库覆盖。
54
+ - Maven 从 Linux 侧访问位于 `9p`、`drvfs`、CIFS/NFS 等高延迟小文件文件系统的本地仓库时,计划必须报告 `local-repository-high-latency-filesystem`。Windows Maven 原生访问 Windows 盘时不得仅因 WSL 宿主视图是 `9p` 就误报。只有调用方已准备同侧完整仓库时,才通过 `--local-repository` 显式切换;不得自动复制仓库、修改 `settings.xml` 或把不完整仓库用于离线验证。
55
+ - `quick` 选择变更模块并默认加 `-am`,覆盖必要上游而不读取陈旧本地 SNAPSHOT。source-stale 的 `fallbackArgv` 保持相同 reactor 范围,但恢复 conservative 编译。
56
+ - `final` 选择变更模块和显式消费者,并使用 `-am` 覆盖必要上游。
57
+ - 消费者必须来自任务材料、项目 spec、可靠的反向依赖结果或显式输入。依赖坐标含未展开属性时不得按同名 artifactId 猜测关系;降低置信度并要求显式 module/consumer。不要默认使用 `-amd`。
58
+ - 公共 DTO/API、跨模块协议和父 POM变化通常需要提高消费者覆盖,由任务 owner 决定范围。
59
+
60
+ ## 编译策略与并行
61
+
62
+ - `auto`:quick compile 且兼容时选择 source-stale;其它 quick lifecycle 和所有 final 默认 conservative。
63
+ - `conservative`:保留 Maven compiler plugin 默认语义,适合公共 API/ABI、常量内联、注解处理器、POM、资源契约或跨模块协议变化。
64
+ - `source-stale`:只允许 compile。quick 可自动选择;final 必须由任务材料明确确认模块内部低风险变化后显式选择。
65
+ - `--threads` 只接受正整数或正数 CPU 倍数。模型根据 reactor 范围与依赖拓扑、插件线程安全、测试共享端口/文件以及 CPU、内存、I/O 压力,自行决定是否启用以及使用哪个并行度。
66
+ - 常规 implement 只执行当前选定的一份 Maven 计划,不为选择并行度额外运行串行或其它线程配置;Check-All 不运行 Maven goal。
67
+
68
+ ## 计划升级条件
69
+
70
+ 只有满足对应验收时升级:
71
+
72
+ | 当前目标 | 最低 goal |
73
+ | --- | --- |
74
+ | 语法、注解处理、主源码编译 | `compile` |
75
+ | 单元测试或测试契约 | `test` |
76
+ | JAR/WAR、资源布局、repackage、依赖复制 | `package` |
77
+ | 集成检查或质量插件 | `verify` |
78
+ | 下游必须消费本地安装制品 | `install`,需明确理由 |
79
+ | 发布远端仓库 | 不由本 Skill 自动执行 |
80
+
81
+ 计划进入 `package`、`install` 或 `deploy` 时,必须在报告中列出触发原因和命中的昂贵绑定。
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "maven-verification",
4
+ "aliases": [
5
+ "maven-verify",
6
+ "java-maven",
7
+ "trellis-maven-verify"
8
+ ],
9
+ "installMode": "full-or-selected",
10
+ "patches": ["workflow/phase-ownership"]
11
+ }
@@ -13,7 +13,7 @@ Treat the structured result as advisory recovery evidence only:
13
13
  - For `status=candidates`, relay each healthy candidate with its `taskStatus` plus necessary `invalidCandidates` or `scanWarnings`, and suggest an explicit rebind when appropriate. After explicit rebind, a completed candidate uses the same Push preflight. Never rebind the session or task automatically.
14
14
  - For `status=no-progress` or `status=no-current-task`, continue without inventing saved progress. For `status=error`, report the structured blocker instead of guessing.
15
15
 
16
- Progress never overrides the task `status`, planning artifacts, workflow ordering, auto-loop runtime, or Git publication evidence. Do not inspect or classify completed Git recovery here, infer a Phase from progress, restore a previous push mode, or resume Git/commit orchestration from progress text.
16
+ Progress never overrides the task `status`, planning artifacts, workflow ordering, auto-loop runtime, or Git publication evidence. Do not inspect or classify completed Git recovery here. Do not infer a Phase from progress, restore a previous push mode, or resume Git/commit orchestration from progress text.
17
17
 
18
18
  To rework a completed task, first obtain an explicit user decision, then run:
19
19