diff --git a/docs/50_Step记录/STEP-060D_WeatherRuntimeBridge_attach精确诊断_v1.md b/docs/50_Step记录/STEP-060D_WeatherRuntimeBridge_attach精确诊断_v1.md new file mode 100644 index 000000000..75bcc4af3 --- /dev/null +++ b/docs/50_Step记录/STEP-060D_WeatherRuntimeBridge_attach精确诊断_v1.md @@ -0,0 +1,40 @@ +# STEP-060D WeatherRuntimeBridge attach 精确诊断 + +状态:进行中(`IMPLEMENTED / WAITING_CARBON7I_ATTACH_DIAGNOSTICS`) + +## 目标与基线 + +在 `particle/main` 的 `d1b1e890acdc291011d52e337a52c19a8f665e08` 基线上,将 STEP-060 attach 的笼统 weather 对象缺失错误升级为可定位 source、两个 layer 与最终 Style 快照的稳定诊断。未进入 STEP-061 或 binary U/V transport。 + +## 完成项 + +- [x] `attach()` 分别计算 `rn-weather-fields`、`rn-weather-color`、`rn-weather-particles` 是否存在。 +- [x] 任一对象缺失时以 `WEATHER_OBJECTS_NOT_READY` 返回 `reactTag`、MapView/MapLibreMap/Style present 状态及三个对象的独立 present/missing 状态。 +- [x] 诊断含 `styleSourceCount`、`styleLayerCount` 和有界 source/layer ID 摘要;每类最多 24 个 ID,weather ID 优先保留,余项以 `…+N` 明示截断。 +- [x] 早期分支保持 `MAP_VIEW_NOT_FOUND`、`MAP_NOT_READY`、`STYLE_NOT_READY`;三对象都在时仍走原有 `replaceWeatherRuntime()` 成功路径,未增加重试、timer 或新的控制语义。 +- [x] 临时 Maven version 改为 `13.4.1-step060d`,避免新 AAR 复用旧 `13.4.1` 缓存;Test Host 的既有 version wiring 同步到该坐标,未改变业务流程。 +- [x] Linux OpenGL Release 四 ABI `make apackage` 通过,Maven Local publication 通过;AAR/POM/module 坐标一致。 + +## 交付 AAR + +- group:`org.maplibre.gl` +- artifact:`android-sdk-opengl` +- version:`13.4.1-step060d` +- build output:`platform/android/MapLibreAndroid/build/outputs/aar/MapLibreAndroid-opengl-release.aar` +- Maven Local:`/root/.m2/repository/org/maplibre/gl/android-sdk-opengl/13.4.1-step060d/android-sdk-opengl-13.4.1-step060d.aar` +- SHA-256(两者一致):`7391440f02e976f295caa265bc15e895a7c0183883a0e2cb08deef4cf42b0096` + +## 验证与限制 + +- [x] `JOBS=3 RENDERER=opengl BUILDTYPE=Release make apackage`:PASS。 +- [x] `:MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal --console=plain`:PASS。 +- [x] `git diff --check`:PASS。 +- [ ] `:maplibre-particle_weather-runtime-bridge:compileDebugKotlin`:当前 untracked Expo Android 生成工程没有 `NativeWeatherRuntimeBridgeSpec`,标准 `:app:generateCodegenArtifactsFromSchema` 也为 `SKIPPED`,故无法独立验证 bridge Kotlin。失败为已有 codegen 产物缺失而非本轮诊断源码的类型错误;本轮不修改生成工程、codegen 契约或 RN bridge 架构来掩盖它。 + +## 禁止范围确认 + +未修改 WeatherRuntime、MapLibreMap、Core renderer/shader、固定 weather ID、React Native 业务流程或 binary U/V transport;未执行 Windows Maven Local 更新、dependencyInsight、APK build/install、ADB 或 Android 运行验证。 + +## 下一步 + +将本记录的唯一 AAR 坐标/SHA 提供给 CARBON7i:更新其 Maven Local,确认 dependencyInsight 后由用户手工 Android 运行 attach,收集 `WEATHER_OBJECTS_NOT_READY` 精确诊断。仍属于 STEP-060;不得据此进入 STEP-061。 diff --git a/docs/60_测试/STEP-060_RNTestHost_Android人工编译与验收_v1.md b/docs/60_测试/STEP-060_RNTestHost_Android人工编译与验收_v1.md index 05a6abf88..4906e6a89 100644 --- a/docs/60_测试/STEP-060_RNTestHost_Android人工编译与验收_v1.md +++ b/docs/60_测试/STEP-060_RNTestHost_Android人工编译与验收_v1.md @@ -4,8 +4,8 @@ 1. 确认当前为 `particle/main`,并记录 `git rev-parse HEAD`。Gate C 封存 Linux 环境是 custom MapLibre Native AAR 的构建环境;不要为 Test Host 生成工程的版本修改它。 2. 移走或清理 `~/.m2/repository/org/maplibre/gl/android-sdk-opengl/13.4.1/` 的旧 artifact,避免同坐标 provenance 混淆。2026-08-29 旧 AAR 的 SHA-256 是 `5c67d2751fafe211a0df4b82deded09ab1c07cf6ca0f4a12a880283287f85e5c`,只能作为 Gate C 历史证据。 -3. STEP-060C Maven Local 已于 2026-09-07 人工验收通过:`signOpenglreleasePublication SKIPPED`,精确 publication task `BUILD SUCCESSFUL in 3m 33s`,没有 `no configured signatory`。Maven Local 的 `org/maplibre/gl/android-sdk-opengl/13.4.1/` 已含 AAR、POM、module metadata,且没有 `.asc`;Maven Central 正式 publication 仍要求签名。 -4. 当前已发布 AAR 与 build output AAR SHA-256 均为 `2e73e25cfd31bb181f75ba2d84974afb949640f72de46bc0234d4579abe3ba38`,并含 `WeatherRuntime.class`、`MapLibreMap.class` 与四 ABI。`47646fb…` 仅是 publication 前中间 AAR SHA,不是当前 artifact。后续只有 checkout 或 AAR 变化时,才在 Gate C 重新 build/publish 并重新核对 provenance。 +3. STEP-060D attach 精确诊断当前使用唯一坐标 `org.maplibre.gl:android-sdk-opengl:13.4.1-step060d`。Linux 已完成 OpenGL Release 四 ABI build 与 Maven Local publication;Maven Local 的同版本 AAR、POM、module metadata 均存在,且没有 `.asc`。Maven Central 正式 publication 仍要求签名。 +4. 此诊断 AAR 与 Linux build output AAR SHA-256 均为 `7391440f02e976f295caa265bc15e895a7c0183883a0e2cb08deef4cf42b0096`,并含 `WeatherRuntime.class`、`MapLibreMap.class` 与四 ABI。Windows 必须先以此版本和 SHA 更新 Maven Local,再运行 dependencyInsight / APK 流程;不得混用先前 `13.4.1` artifact(其 SHA `2e73e…`)。 5. `cd integration/react-native/MapLibreParticleRNTestHost && npm ci && npx expo prebuild --platform android --clean`。`package-lock.json` 已在无 `--legacy-peer-deps` 的 npm 安装下通过;不要改用 Yarn 或生成 `yarn.lock`。本次 plugin 变更后必须 clean prebuild。 6. 检查生成 root Gradle 有 `MapLibreParticleRNTestHost custom OpenGL SDK`、`nativeVersion=13.4.1`、`nativeVariant=opengl`;Maven Central 必须排除精确 custom module `org.maplibre.gl:android-sdk-opengl`,使该 AAR 缺失时失败而非 fallback。MLRN 的 turf/annotation/scalebar 不是 custom SDK,不应被这个模块级排除误伤。 7. 首次 prebuild 后实际记录 Test Host 的 Gradle wrapper、AGP、Kotlin plugin、min/compile/targetSdk、NDK、JDK、Hermes 与 New Architecture。当前观察到的 `9.3.1/8.12.0/2.1.20/24/36/36/27.1.12297006` 属于 Test Host 生成工程,不等于 Gate C 环境。 diff --git a/docs/报告/STEP-060D_WeatherRuntimeBridge_attach精确诊断_Codex完成报告_v1.md b/docs/报告/STEP-060D_WeatherRuntimeBridge_attach精确诊断_Codex完成报告_v1.md new file mode 100644 index 000000000..d61bd7c58 --- /dev/null +++ b/docs/报告/STEP-060D_WeatherRuntimeBridge_attach精确诊断_Codex完成报告_v1.md @@ -0,0 +1,44 @@ +# STEP-060D WeatherRuntimeBridge attach 精确诊断 — Codex 完成报告 + +## 结论 + +已实现并交付 STEP-060 attach 精确诊断与唯一 Linux custom AAR,当前状态为 `IMPLEMENTED / WAITING_CARBON7I_ATTACH_DIAGNOSTICS`。本轮不是 STEP-060 CLOSED,也未进入 STEP-061。 + +## 正式源码修改 + +- `WeatherRuntimeBridgeModule.attach()` 现在分别检查 weather source、WeatherColor layer、particle layer。 +- 三对象不全时仍使用稳定错误码 `WEATHER_OBJECTS_NOT_READY`,但 message 固定包含 `reactTag`、`mapView`、`mapLibreMap`、`style`、三个固定 ID 的 present/missing 状态、source/layer 总数及有界 ID 摘要。 +- 摘要每类最多 24 个 ID,weather ID 优先;有剩余项时写 `…+N`,不使用反射、不打印无界 Style JSON。 +- `MAP_VIEW_NOT_FOUND`、`MAP_NOT_READY`、`STYLE_NOT_READY` 仍独立于 weather-object rejection;对象齐全时原 `replaceWeatherRuntime()`、Promise snapshot、控制语义和生命周期 listener 不变。 +- 为避免 Maven Local 缓存混淆,custom AAR 与 Test Host 已有坐标 wiring 改用 `13.4.1-step060d`;未改 Test Host 业务流程。 + +## Linux 验证 + +- `JOBS=3 RENDERER=opengl BUILDTYPE=Release make apackage`:PASS(正式 OpenGL Release 四 ABI AAR)。 +- `./gradlew :MapLibreAndroid:publishOpenglreleasePublicationToMavenLocal --console=plain`:PASS。 +- `./gradlew projects --console=plain`:PASS;确认 bridge project 为 `:maplibre-particle_weather-runtime-bridge`。 +- `./gradlew :maplibre-particle_weather-runtime-bridge:compileDebugKotlin --console=plain`:无法验证本轮源码。当前 untracked Expo Android 生成工程缺失 `NativeWeatherRuntimeBridgeSpec`;随后的标准 `:app:generateCodegenArtifactsFromSchema` 为 PASS 但子任务 `SKIPPED`,没有生成该 Spec。compiler 因此报告所有 TurboModule overrides 连带失败。此限制已记录,未通过修改生成工程或扩大 bridge/codegen 方案绕过。 +- `git diff --check`:PASS。 + +所有 Gradle/Make/codegen 命令均通过 build-output-throttle 执行;未执行 Jest。 + +## Custom AAR 交付 + +| 项目 | 值 | +| --- | --- | +| Maven group | `org.maplibre.gl` | +| artifact | `android-sdk-opengl` | +| version | `13.4.1-step060d` | +| build output | `platform/android/MapLibreAndroid/build/outputs/aar/MapLibreAndroid-opengl-release.aar` | +| Maven Local AAR | `/root/.m2/repository/org/maplibre/gl/android-sdk-opengl/13.4.1-step060d/android-sdk-opengl-13.4.1-step060d.aar` | +| SHA-256 | `7391440f02e976f295caa265bc15e895a7c0183883a0e2cb08deef4cf42b0096` | + +POM/module 坐标均为 `org.maplibre.gl:android-sdk-opengl:13.4.1-step060d`;发布 AAR 与 build output SHA 一致,含 `arm64-v8a`、`armeabi-v7a`、`x86`、`x86_64`。 + +## 未执行与下一步 + +未进入 CARBON7i、未更新 Win11 Maven Local、未执行 Win11 dependencyInsight、APK build/install、ADB 或 Android 运行验证;未实现 binary U/V field transport,未进入 STEP-061。下一步只能由 CARBON7i 用本报告的唯一坐标及 SHA 安装/解析 AAR 后,返回 attach 的精确诊断。 + +## Git + +功能提交、文档提交、Final HEAD、远端 HEAD 与 push 结果在本次提交完成后据实回填。 diff --git a/integration/react-native/MapLibreParticleRNTestHost/README.md b/integration/react-native/MapLibreParticleRNTestHost/README.md index e85f6ddfc..e326301bb 100644 --- a/integration/react-native/MapLibreParticleRNTestHost/README.md +++ b/integration/react-native/MapLibreParticleRNTestHost/README.md @@ -7,7 +7,7 @@ - package manager 为 npm(`packageManager: npm@10.9.4`),锁文件为 `package-lock.json`;当前环境的 `npm ci --dry-run --ignore-scripts` 无须 `--legacy-peer-deps` 即可解析。 - package 明确固定 React Native `0.85.2`、React `19.2.5`、Expo `56.0.4`、TypeScript `5.9.3`、MLRN `11.3.6`;`app.json` 明确请求 New Architecture。Hermes 的最终启用状态必须在首次 Android prebuild 后检查生成工程。 - AGP `8.5.0`、Gradle `8.14.3`、Kotlin `2.1.20`、NDK `27.1.12297006`、JDK 17、minSdk 24、compile/targetSdk 36 是本 Test Host 的**人工验收配置目标**,不是尚未生成 Android 工程的已验证结果。首次 prebuild 后必须以实际 Gradle wrapper、AGP/Kotlin plugin、SDK/NDK 与 Hermes/New Architecture 配置为准核对。 -- MLRN 的 root Gradle extras 固定 `org.maplibre.reactnative.nativeVersion=13.4.1` 与 `nativeVariant=opengl`。 +- MLRN 的 root Gradle extras 固定 `org.maplibre.reactnative.nativeVersion=13.4.1-step060d` 与 `nativeVariant=opengl`;这是 STEP-060D attach 诊断 AAR 的唯一临时版本,避免与先前 `13.4.1` Maven Local artifact 缓存混淆。 ## Custom SDK 来源(手工执行) diff --git a/粒子开发记录.md b/粒子开发记录.md index a96c15dd9..5d3c9c680 100644 --- a/粒子开发记录.md +++ b/粒子开发记录.md @@ -526,3 +526,9 @@ WeatherColorLayer 的 `ParticleGpuValidationUBO` designated initializer 补齐 ` - 用户在 Gate C 实际运行精确 Maven Local publication task:`signOpenglreleasePublication SKIPPED`,`publishOpenglreleasePublicationToMavenLocal` 成功,`BUILD SUCCESSFUL in 3m 33s`,不再有 `no configured signatory`。 - 最终 Maven Local AAR、当前 build output AAR SHA-256 一致,均为 `2e73e25cfd31bb181f75ba2d84974afb949640f72de46bc0234d4579abe3ba38`;POM/module 坐标正确,AAR 含 WeatherRuntime/MapLibreMap 和四 ABI,Local 无 `.asc` 符合设计。此前 `47646fb…` 是 publication 前中间 SHA,已失效。 - STEP-060C 状态关闭为 `CLOSED / PASS`,范围仅 Maven Local signing isolation 与 publication handoff;RN Test Host Android compile、Phase A/B、lifecycle、Binary Field 与 STEP-061 仍未验证。 + +# 2026-09-08 — STEP-060D WeatherRuntimeBridge attach 精确诊断 + +- attach 现独立报告 `rn-weather-fields`、`rn-weather-color`、`rn-weather-particles` 状态;`WEATHER_OBJECTS_NOT_READY` 包含 reactTag、MapView/MapLibreMap/Style 状态、三个 ID 的 present/missing、Style source/layer count 和 weather-first 的有界 ID 摘要。 +- Linux 生成并发布唯一诊断 AAR:`org.maplibre.gl:android-sdk-opengl:13.4.1-step060d`,build output 与 Maven Local AAR SHA-256 均为 `7391440f02e976f295caa265bc15e895a7c0183883a0e2cb08deef4cf42b0096`,含四 ABI。 +- 当前 Expo 生成工程缺失 `NativeWeatherRuntimeBridgeSpec`,标准 codegen task 为 SKIPPED,故 bridge Kotlin compile 不能独立验证;未改生成工程绕过。后续由 CARBON7i 用此唯一 AAR 收集 Android attach 诊断,仍不进入 STEP-061。