Files
MapLibreParticleLab/docs/报告/STEP-060C_MavenLocal签名隔离修正_Codex完成报告_v1.md
OpenAI Codex d1b1e890ac
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
docs: finalize STEP-060C validation metadata
2026-09-07 22:28:44 +08:00

71 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# STEP-060C Maven Local 签名隔离修正 — Codex 完成报告
## 结论
STEP-060C 已为 `CLOSED / PASS`:用户于 2026-09-07 在 Gate C 封存 Linux 环境完成 Maven Local publication,Local 签名隔离按设计生效。本 PASS 仅覆盖 Maven Local signing isolation、发布与 artifact provenance;不代表 RN Test Host Android compile、STEP-060 Phase A/B、lifecycle、Binary Field 或 STEP-061 通过。
## 实际修改
- 保留 Vanniktech `signAllPublications()`,不移除 Maven Central 正式签名能力。
- 将 Gradle `SigningExtension.required` 改为延迟 task-graph 条件:任一 `*PublicationToMavenCentralRepository` task 存在时为 true;否则为 false。
- 因此 `:MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal` 的 Sign task 在无 signatory 时跳过,Central publication 仍要求签名。
- 更新 Gate C/RN Test Host 人工步骤:当前已核对 AAR 可直接 publication,不因本次 publication 配置改动重建。
## 修改文件
- `platform/android/buildSrc/src/main/kotlin/maplibre.gradle-publish.gradle.kts`
- `docs/60_测试/STEP-060_RNTestHost_Android人工编译与验收_v1.md`
- `integration/react-native/MapLibreParticleRNTestHost/README.md`
- `docs/50_Step记录/STEP-060B_GateC封存环境与CustomAAR接入修正_v1.md`
- `docs/50_Step记录/STEP-060C_MavenLocal签名隔离修正_v1.md`
- `粒子开发记录.md`
## API / publication 契约
| 项目 | 保持的契约 |
| --- | --- |
| Maven Local 坐标 | `org.maplibre.gl:android-sdk-opengl:13.4.1` |
| Local task | `:MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal` |
| Local 签名 | 无 signatory 时 Sign task 跳过;不使用 `-x sign` |
| Central 签名 | `*PublicationToMavenCentralRepository` task graph 中仍 required |
| AAR 来源 | Gate C 已验证的 custom OpenGL AAR;无 flatDir、files repo、第二仓库或 SNAPSHOT |
## 人工 Maven Local 验收(2026-09-07)
用户执行:
```bash
cd /mnt/sda1/MapLibreParticleLab/platform/android
./gradlew :MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal --console=plain
```
- 已完成:`:MapLibreAndroid:signOpenglreleasePublication SKIPPED`;`:MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal` 通过;`BUILD SUCCESSFUL in 3m 33s`(57 actionable tasks:49 executed、8 up-to-date);输出不含 `no configured signatory`。
- 已完成:`~/.m2/repository/org/maplibre/gl/android-sdk-opengl/13.4.1/` 含 AAR、POM、module metadata;POM/module 坐标为 `org.maplibre.gl:android-sdk-opengl:13.4.1`。
- 已完成:Maven Local AAR 与 `platform/android/MapLibreAndroid/build/outputs/aar/MapLibreAndroid-opengl-release.aar` SHA-256 同为 `2e73e25cfd31bb181f75ba2d84974afb949640f72de46bc0234d4579abe3ba38`。
- 已完成:AAR `classes.jar` 有 `org/maplibre/android/maps/MapLibreMap.class`、`org/maplibre/android/maps/WeatherRuntime.class`;AAR 有 `arm64-v8a`、`armeabi-v7a`、`x86`、`x86_64` 四 ABI;Maven Local 不含 `.asc`,符合 Local publication 不签名的设计。
- 历史说明:`47646fb708d096cf5ee0c3b8eeaeb7e6083081279c79f4a642db554efe88fad7` 为 publication 前中间 AAR SHA;Gradle 重新执行 `bundleOpenglReleaseAar` 后,它不是当前 published artifact。
## Codex 静态核验
- 静态读取 Vanniktech `gradle-maven-publish-plugin:0.34.0`:`signAllPublications()` 对 release 设置 `SigningExtension.required`;Gradle SigningExtension 的 `setRequired(Object)` 支持 deferred Provider,并在 Sign task 执行时解析。
- 静态审计 publication 名称、artifactId、version 与 Central task 名称约束。
- 只读核对 Local/build output AAR SHA、POM/module 坐标、classes、ABI 与 `.asc` 缺失;`git diff --check` 将在本次 docs-only commit 前再次执行。
## 未执行 / 无法验证
- 未执行:本轮 Codex 未运行 Android Gradle、AAR build、Maven publish、Expo prebuild、APK、ADB、Android 设备/虚拟机测试或 Jest;publication 结果为用户提供的人工实测证据。
- 未完成:RN Test Host `npm ci`、clean Expo prebuild、generated Gradle resolution、Android compile/install、STEP-060 Phase A/B、style reload/map remount/stale reactTag/detach lifecycle;任务明确留给下一轮 STEP-060 Android 人工验收。
- 无法验证:本轮没有设备/模拟器与 RN 生成工程执行授权,故不对上述 Android/RN 结果作 PASS 推断。
## 已知剩余风险与下一步
下一阶段仍是 STEP-060 RN Test Host Android 验收:`npm ci`、clean Expo prebuild、检查 generated Gradle 的 Maven Local/custom SDK resolution、用户手工 Android compile/install、Phase A/B 与 lifecycle 验收。通过后才可进入 STEP-061。
## 提交与推送
- 功能提交:`5f0804e8ba3a8a6fed1fff09ddd92a76a77bd458` — `fix: isolate Maven Local from release signing`
- 初始文档提交:`9e0666c7c284d5080ebd2e711f46928f788ddcec` — `docs: record STEP-060C local publish signing fix`
- 本次人工验收文档收尾 Starting HEAD:`9e0666c7c284d5080ebd2e711f46928f788ddcec`。
- 本次 docs-only 内容提交:`9a38271ceecfc33d581d7604ddb16839d270961e` — `docs: close STEP-060C Maven Local validation`。
- 该提交仅回填人工验收证据与后续验收边界;最终推送后的 Final HEAD、Remote HEAD 与 push 结果由本次任务交付时的 Git 实测结果确认。