# Maven 附加制品验收
`sc-coordinator` 需要通过原有 `just publish --release` 把 Java runtime 的源码、
`lib.jar`、`lib-sources.jar` 和分发 ZIP 发布到 GitHub Packages。
```toml
required_version = "0.5.0" # classifier 成为 Maven identity 的一部分;Rust interface 升级。
# 以下字段属于原有 kind = "maven_reactor" target。
[[targets.attachments]]
project = "framework/java/coordinator-runtime" # module 路径;GAV 仍从 POM 派生。
classifier = "lib"
extension = "jar" # 支持 jar / zip;不隐式推测 Maven plugin 的 outputs。
# Prepare 读取 target/<artifactId>-<version>-<classifier>.<extension>。
# 必须先 clean verify,再复制所有声明文件,冻结 SHA-256;Seal 后不重新构建。
```
| sources / lib / lib-sources / distribution 在 Resolve 中遗漏或被当成同一个 JAR | 清单含不同 classifier identity,覆盖 also_make 引入的 SDK |
| 未知 module、未选入依赖闭包、重复 classifier/extension、空 classifier、路径分隔符或逗号 | 构建前拒绝,无上传 |
| 缺少已声明制品、误读同版本旧构建、Prepare 与 Resolve 清单不同 | Prepare 失败;不 Seal,不 Publish |
| Maven deploy 参数将附加 JAR 当作多个主制品,或 ZIP 被上传为 JAR | 实际 deploy-file 3.1.4 上传到隔离 file repository;逐文件 SHA-256 一致 |
| deploy-file 再次读取原始 reactor,重复上传同一 GAV;或将 staged child POM 当执行入口,无法解析 source-local parent | `-f <tool-owned launcher> --non-recursive`;`-DpomFile` 仍使用 Prepare 冻结的 POM,真实 Maven 验证未安装的本地 parent |
| 主 JAR/POM 存在但源码或 ZIP 缺失 | Inspect = PARTIAL,拒绝重新 deploy |
| 上传成功但响应丢失、或 classifier bytes 被破坏 | 前者核对完整远端后成功;后者 digest mismatch |
| 再次发布重建/重复上传,或 token 出现在 argv/错误输出中 | COMPLETE 验证后跳过;credentials 仅在 child env,错误脱敏 |
| 已有无 attachments 的 Maven adopter 或 Docker/OCI 行为改变 | 现有测试与完整 just check 通过 |
真实 Maven 验收必须调用 `MavenReactorTarget` 和 `GithubMavenPublisher`,只在 transport
边界把 GitHub destination 映射到临时 repository;不能用直接 reactor `mvn deploy` 替代。