Files
MapLibreParticleLab/docs/报告/STEP-097_B_独立验收与版本阻塞报告_v1.md

5.7 KiB
Raw Blame History

STEP-097 B 阶段独立验收与版本阻塞报告 v1

状态:PARTIAL / BLOCKED_NATIVE_AAR_COMPATIBILITY。B 不判 PASS,C 不启动。本报告按实际验证结果更新,不以 Codex 终态代替验收。

基线与执行

  • 日期:2026-09-26;Mac 仓库 particle/main HEAD b1239ac3b1554943200e6fbf14321459ccc86527;实施工作树 dirty,尚未 commit/push。
  • Integration main 已由 RDC fetch 核验,本地及远端均为 318f8ccf911ac3136c3086a1d14e61f83e2d4bce;Contract C-001 未改。
  • Codex 两次均使用 GPT-6 Luna High,codex exec --json;分别收到 turn.completed、退出码 0;完整 JSONL/status.json 位于 artifacts/maplibre-particle/step097-b10-codex/ 和 step097-b-fixture-codex/。
  • 工作范围:08 JSON、09 数值 ingress、10 Android owner/map destroy、20 Test Host 版本配对;用户未跟踪 STEP-098 及正式 .13 发布资产未触碰。

代码和独立证据

  • 08:按真实字节长度解析,拒绝 NUL、重复键、非法 strategy/schema,失败清旧计划;已存在定向 GTest。
  • 09:有效 cell 数值及 scale/offset 有限性验证在提交 Store 前执行;合法 validity=0 保留,坏高 revision 不覆盖旧场。
  • 10:新 View attachment owner、generation guard 与 map destroy observer;附 Android owner/JUnit 和 MapLibreMap 真正 onDestroy 测试。
  • 20:Test Host package.json 与 lock 均精确为 RN 13.4.1-particle.13;正式 tarball SHA-256 3a726db06cb967fe56de77ca4a72feed98cd642a2d1b73fd51b1531d15ef7539 与 release manifest 一致,lock integrity 的 SHA-512 与实包一致。
  • Mac Core 增量构建 PASS;B 四项定向 GTest 4/4 PASS;原 broad 134 项中 2 项旧 UInt8→Int16/UInt16 4-byte fixture 不合法,修正为合法 8-byte 小端四样本后重新构建,broad 134/134 PASS。未放宽生产数值校验或既有断言。
  • 原始日志:artifacts/maplibre-particle/step097-b-rdc/core-*.log。

阻塞门槛

  • B10 新增 MapLibreMap.addOnDestroyListener() 为 Android SDK 新方法;正式 .13 release source commit ddf20dec9fe9cd05b77274827b6825829500dd5a 没有此方法。
  • Test Host 默认及 RN 模块 Gradle 仍消费已发布原生 AAR 13.4.1-particle.13。所以新 RN Kotlin bridge 直接调用该方法时,现有默认正式消费组合不具备此符号;不能用本工作树 Native 源码 JUnit 冒充 .13 RN consumer 编译通过。
  • 需要选择不增加已发布 ABI 依赖的完整生命周期方案,或者另走正式新 Native/RN 同版发行与配对验证。未经上游决定不得改写 .13 tag、manifest/AAR,也不得以反射或私有绕道掩盖版本问题。

2026-09-26 RDC 补充独立实测(Mac,覆盖上方旧测试数字)

  • B10 Codex 的持久化 status.json:gpt-6-luna/high,75 条 JSONL 事件,turn.completed,exit 0;旧 fixture 修正任务同样 turn.completed / exit 0。两次交付本身不代表验收。
  • 本轮 Mac 原生测试 runner 增量编译 exit 0;六项 B 定向 GTest 6/6 PASS,完整扩展 filter 139/139 PASS;旧 fixture 仅修正 16-bit 四样本合法长度,未放宽生产校验或原断言。证据:artifacts/maplibre-particle/step097-b-rdc/validation-{build-core,focused-gtest,broad-gtest}.log 与 validation-status.json。
  • Mac 使用现有 OpenJDK 17 和 Android SDK::MapLibreAndroid:testOpenglDebugUnitTest --tests org.maplibre.android.maps.MapLibreMapDestroyListenerTest 2/2 PASS;:MapLibreAndroid:compileOpenglDebugJavaWithJavac exit 0。JUnit XML 位于 platform/android/MapLibreAndroid/build/test-results/testOpenglDebugUnitTest/;证据在 android-validation-status.json、validation-native-{destroy-junit,compile}.log。
  • Owner Kotlin 单测使用独立临时 JVM 项目,源码及测试副本 SHA-256 与本工作树对应文件分别一致:生产 36b437a0bc1573bafcf1a99ee37d4c438b72ea9ad5a9847fb0021f8093a3296a,测试 4c27cc3e82c0570b78b27aec46d565359eff11e18c2ff292e4188c158e8a4407;JUnit 4/4 PASS,0 fail/skip。第一次 offline 插件 marker 缺失,第二次正常解析并通过;详见 owner-jvm-status.json 和 validation-owner-jvm-retry.log。这是 owner helper 的 JVM 回归,不冒充 RN Host 集成。
  • git diff --check exit 0,正式 .13 release commit ddf20dec9 的 MapLibreMap.java 无 addOnDestroyListener(),而当前 RN Bridge 调用该方法且 Gradle 精确锁定旧 .13;因此 默认 RN consumer 编译仍未通过/不可宣称 PASS,此阻塞不因上述单元测试通过而解除。
  • Linux 独立工作树的 Gradle 仍有原进程,状态未确认完成,不能以 Mac 测试代替 Linux 结果;须等待并单独记录最终退出状态。
  • 当前结论维持 PARTIAL / BLOCKED_NATIVE_AAR_COMPATIBILITY。STEP-097 整体未关闭;C、STEP-098、正式发布均 NOT RUN。未授权改写 .13 tag/manifest/产物,不把当前不兼容代码推入正式消费基线。

Git 阻塞检查点(2026-09-26,后续事实)

  • 为避免将当前无法和正式 .13 AAR 配对编译的新 RN bridge 提交进 particle/main,RDC 以 b1239ac3b1554943200e6fbf14321459ccc86527 创建独立 worktree,逐文件 SHA-256 比对 21 个 B 源码/测试/文档,并 scoped commit/push 到 step097-b-blocked-20260926。
  • 首个 checkpoint commit:e463ba04ce956a54eed02b77f981eeeedd9a5534;独立远端回读相符。主线 origin/particle/main=b1239ac3b1554943200e6fbf14321459ccc86527 不变。原 Mac dirty B 工作树及用户 STEP-098 不变;发布资产无差异。
  • Git 保存成果不等于 B 验收通过;B 仍 PARTIAL / BLOCKED_NATIVE_AAR_COMPATIBILITY,待 Integration / 发行流程明确新 Native/RN 同版配对或实现不依赖新 ABI 的可靠替代方案。不得启动 C、STEP-098 或覆盖 .13。