fix: validate STEP-081 ios device build
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled

This commit is contained in:
tei
2026-09-17 14:51:22 +09:00
parent 79c0ff89f1
commit 8fd517bac2
6 changed files with 45 additions and 8 deletions

View File

@@ -1,6 +1,6 @@
# STEP-081 iOS Metal Renderer 与真机 Smoke 入口设计 v1
状态:进行中 / WAITING_RDC_DEVICE_BUILD。本文只记录 Codex 静态实现;未进行 iPhoneOS 编译或真机运行。
状态:进行中 / WAITING_DEVICE_SMOKE。RDC 已完成 iPhoneOS arm64 无签名 Test App 编译;尚未签名安装或真机运行。
## 目标和边界

View File

@@ -1,6 +1,6 @@
# STEP-081 iOS Metal Renderer 与真机 Smoke 入口 v1
状态:进行中 / WAITING_RDC_DEVICE_BUILD
状态:进行中 / WAITING_DEVICE_SMOKE
## 目标
@@ -13,7 +13,8 @@
- [x] 在 Test App Runtime Styling 菜单加入 T0/midpoint/T1/clear private smoke seam。
- [x] CMake 将既有 Wind Golden T0/T1 复制到 app bundle。
- [x] 仅做静态检查;未执行 Jest。
- [ ] iPhoneOS device build、Metal runtime compilation、真实 iPhone/iPad smoke:待 RDC/GPT。
- [x] iPhoneOS arm64 Test App 无签名编译通过,`BUILD SUCCEEDED`。
- [ ] Metal runtime compilation、签名安装、真实 iPhone/iPad smoke:待真机可用后执行。
## 允许范围与限制
@@ -25,7 +26,7 @@
## 构建与阻塞
`NOT_RUN_BY_DESIGN — Codex prohibited from building`。无 iOS PASS、Metal PASS 或真机 PASS 声明。若 device runtime shader compile 失败,先检查 `include/mbgl/shaders/mtl/particle_gpu_validation.hpp`、对应 `.cpp` binding 表、`renderer_backend.cpp` registry 和 `cmake/metal.cmake` source list。
`Codex` 未执行任何编译;GPT 审查通过后由 RDC 完成 CMake/Xcode iPhoneOS arm64 build。最终无签名 `app` target `BUILD SUCCEEDED`,产物约 61 MB,主程序为 arm64 Mach-O,Wind T0/T1 QBIN 均已进入 `ParticleSmokeFixtures/` 且 SHA-256 与源 fixture 一致。Metal runtime shader compile、签名安装与真机 PASS 尚未执行。
## GPT / RDC 独立审查(2026-09-17)
@@ -36,3 +37,11 @@ Codex 结束后由 RDC 读取完整 diff、设计文档和完成报告,GPT 独
- Smoke 选择器由 iPad 需要 popover anchor 的 ActionSheet 改为 Alert,保证 iPhone/iPad 真机都可直接进入。
`git diff --check` 通过;未发现 QBIN V4/Core contract、Android/RN API 或版本坐标越界修改。下一步允许 RDC 执行 iPhoneOS device build;仍禁止 Simulator。
## RDC 编译验证(2026-09-17)
- `cmake --preset ios-metal` 配置成功,Xcode 26.3 / iPhoneOS 26.2 / AppleClang 17。
- Darwin style codegen 需要 Bazel;按仓库 `.bazelversion` 使用 Bazel 8.6.0 后通过。
- 首次签名构建被 `org.maplibre.app` provisioning 阻塞,因此改用 `CODE_SIGNING_ALLOWED=NO` 做 device-architecture 编译验证;未使用 Simulator。
- 编译中只对 Test App 做小范围修正:使用 `${CMAKE_SOURCE_DIR}/src` 暴露 private smoke 所需内部头;`weakSelf` 改为显式 `MBXViewController *`;fixture path 使用 `NSString *`。
- 最终 `app` target `BUILD SUCCEEDED`;`particle_gpu_validation.cpp` 和 `MBXViewController.mm` 均通过 arm64 编译。
- 当前登记 iPhone/iPad 均为 `unavailable`,因此状态进入 `WAITING_DEVICE_SMOKE`,不能声明真机/Metal runtime PASS。

View File

@@ -0,0 +1,25 @@
# STEP-081 iOS Metal Renderer 与真机 Smoke 入口 RDC 编译验证报告 v1
日期:2026-09-17
状态:DEVICE_BUILD_PASS / WAITING_DEVICE_SMOKE
## 结果
- CMake `ios-metal` 配置成功。
- iPhoneOS 26.2 / arm64 / Debug / `app` target 最终 `BUILD SUCCEEDED`。
- 未使用 Simulator;因 provisioning 与当前真机 unavailable,最终构建使用 `CODE_SIGNING_ALLOWED=NO`。
- `particle_gpu_validation.cpp` 已进入 `mbgl-core` arm64 编译并通过。
- `MBXViewController.mm` private Smoke 入口已通过 Objective-C++ arm64 编译。
- 产物:`build-ios/platform/ios/app/Debug-iphoneos/app.app`,约 61 MB;主程序为 arm64 Mach-O。
- Bundle 内 `ParticleSmokeFixtures/T0.qbin` 与 `T1.qbin` SHA-256 与 RN Test Host Golden fixture 完全一致。
## RDC 编译期修正
1. Test App private include root 改用 `${CMAKE_SOURCE_DIR}/src`,避免子项目 `PROJECT_SOURCE_DIR` 指向 `platform/ios/app`。
2. `weakSelf` 使用显式 `MBXViewController *` 类型。
3. fixture path 使用 `NSString *`,移除错误的 `const NSString *`。
4. 安装/启用仓库锁定的 Bazel 8.6.0 以完成 Darwin generated code。
## 尚未完成
当前登记 iPhone/iPad 均为 `unavailable`。因此尚未执行签名安装、设备启动、Metal runtime shader compile,以及 T0 / midpoint / T1 / Clear-release Smoke。STEP-081 不能关闭,下一状态为 `WAITING_DEVICE_SMOKE`。

View File

@@ -24,6 +24,9 @@ add_executable(app
target_include_directories(
app PRIVATE
"${PROJECT_SOURCE_DIR}"
# STEP-081 private Core smoke seam: RasterArraySource currently references
# one particle adapter header that intentionally remains under src/.
"${CMAKE_SOURCE_DIR}/src"
)
set_target_properties(app PROPERTIES

View File

@@ -1184,7 +1184,7 @@ CLLocationCoordinate2D randomWorldCoordinate(void) {
UIAlertController *menu = [UIAlertController alertControllerWithTitle:@"Particle / QBIN V4 Smoke"
message:@"Wind Golden QBIN T0/T1. This is a private Core test seam."
preferredStyle:UIAlertControllerStyleAlert];
__weak typeof(self) weakSelf = self;
__weak MBXViewController *weakSelf = self;
void (^selectTime)(uint64_t, NSString *) = ^(uint64_t timestamp, NSString *label) {
[weakSelf installParticleQbinV4SmokeAtTime:timestamp label:label];
};
@@ -1201,8 +1201,8 @@ CLLocationCoordinate2D randomWorldCoordinate(void) {
NSString *(^fixturePath)(NSString *) = ^NSString *(NSString *name) {
return [[NSBundle mainBundle] pathForResource:name ofType:@"qbin" inDirectory:@"ParticleSmokeFixtures"];
};
const NSString *t0Path = fixturePath(@"T0");
const NSString *t1Path = fixturePath(@"T1");
NSString *t0Path = fixturePath(@"T0");
NSString *t1Path = fixturePath(@"T1");
NSData *t0Data = t0Path ? [NSData dataWithContentsOfFile:t0Path] : nil;
NSData *t1Data = t1Path ? [NSData dataWithContentsOfFile:t1Path] : nil;
if (!t0Data || !t1Data) {

View File

@@ -816,4 +816,4 @@ Android V3-08 单次综合验收已完成并关闭。Native `13.4.1-particle.2`
- Win11 实际构建发现并修正 JNI particle binding declaration 参数数目与 Kotlin `validUInt16`/`validSafeInteger` 编译表达式;Debug APK 成功生成、安装并启动。Metro 固定监听 8091,App 仍访问 localhost:8081,正确 reverse 为 `8081 -> 8091`。
- Test Host 的 8 个 V4 QBIN Golden Fixture(Wind/Wave/Current/Rain,各 T0/T1)已由用户人工确认功能正常;V4 调用经 `submitEncodedField` 进入 `RasterArraySource::submitEncodedField` / `QbinV2Decoder`,不是 JS 解码。
- 当前入口文档已整理:`docs/00_项目总则/当前基线与开发路线_v2.md`、`docs/50_Step记录/STEP-080_Android_AAR与RNTestHost标准构建流水线_v2.md`、`docs/70_发布/Android_RN_QBINV4_13.4.1-particle.3_发布基线_v1.md`。旧 STEP-060~072 与 STEP-080 v1 保留历史事实,但不再作为当前构建命令来源。
# STEP-081(2026-09-17):新增 Metal `ParticleGpuValidationShader` 与 iOS Test App Wind QBIN V4 private smoke 入口。Codex 后已完成 GPT/RDC 独立静态审查,并修正 Metal State 输出精度、VELOCITY 零向量 fail-closed 与 iPad Smoke 菜单入口;iPhoneOS device build、Metal runtime compile 与真机验收仍待 RDC,状态 WAITING_RDC_DEVICE_BUILD。
# STEP-081(2026-09-17):新增 Metal `ParticleGpuValidationShader` 与 iOS Test App Wind QBIN V4 private smoke 入口。Codex 后已完成 GPT/RDC 独立静态审查;RDC 随后完成 iPhoneOS arm64 无签名 Test App 编译并取得 `BUILD SUCCEEDED`,`particle_gpu_validation.cpp` 与 `MBXViewController.mm` 均通过,61 MB app bundle 内 T0/T1 QBIN SHA-256 与源 fixture 一致。当前真机均 unavailable,签名安装、Metal runtime compile 与 T0/MID/T1/Clear 真机 Smoke 待执行,状态 WAITING_DEVICE_SMOKE。