qa(ios): PR #8 device-proof wiring, local-real upload evidence, and macOS simulator runbook - #25
Open
obvious-autobuild[bot] wants to merge 2 commits into
Open
obvious-autobuild[bot] wants to merge 2 commits into
obvious-autobuild[bot] wants to merge 2 commits into
Conversation
… driver, and macOS runbook - apps/mobile: pinned native deps (react-native-ai/apple 0.12.0, expo-audio 57.0.5, expo-file-system 57.0.7, expo-image-picker 57.0.18), permission plugins + speech usage string, EXPO_PUBLIC_QA_PROOF proof-screen toggle - apps/mobile/src/proof: VoicePhotoProof checklist surface + Convex HTTP transport reusing the spike's real storePhotoCapture flow - spikes/voice-photo/qa-convex: throwaway schema + reference-module deployment set - spikes/voice-photo/qa: real-backend evidence driver (3-request flow, SHA-256 read-back, entry-commit negative probe) - scripts/qa-ios-sim-proof.sh: repeatable macOS simulator runbook - spike types.ts: AbortSignal.reason lib-compat cast (38/38 tests pass) - verified: app strict typecheck clean, vitest 38/38, expo export ios 896 modules
… 7/7; F1 refinement - qa-convex: standard convex/ functions layout + convex.json + package root; entries table gains events column so the F1 probe isolates the _tag question - driver: route queries to /api/query; neutral F1-probe reporting - executed against anonymous local backend (anonymous-qa-convex): upload URL -> POST (storageId) -> commit (photoId), SHA-256 read-back match - F1 REFINED: raw /api layer strips _tag as protocol metadata and ACCEPTS the entry-carrying commit — the 'Convex rejects _-prefixed fields' interpretation from PR #5 F1 does not hold at the wire layer; adapter-layer scope - QA-DEVICE-PROOF.md: item 9 marked EXECUTED with full evidence + F1 note
obvious-autobuild
Bot
force-pushed
the
qa/ios-sim-proof
branch
from
September 17, 2026 20:11
49f7982 to
f29f3ce
Compare
Contributor
Author
Independent rule-5 re-review — VERDICT: PASS-WITH-NOTESTested head SHA: Verified against the rebuilt body's acceptance criteria (all 6)
Independent gates run by this reviewer at f29f3ce (isolated worktree)
Notes (owner action / wording)
Bottom line: code, scope, evidence, CI, and the F1 refinement all verify at |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Acceptance criteria
@react-native-ai/apple0.12.0,expo-audio57.0.5,expo-file-system57.0.7,expo-image-picker57.0.18); app.json carries the microphone/photo plugins,NSSpeechRecognitionUsageDescription, and iOS bundle id; the native project builds on macOS via the committed runbook. (Verified off-Mac to the extent possible: prebuild config resolves all four permission strings; Metro iOS bundle succeeds with 896 modules.)EXPO_PUBLIC_QA_PROOF=1swaps the home screen for the checklist surface (apps/mobile/src/proof/VoicePhotoProof.tsx) probing TurboModule registration, locale matrix, model prep, mic permission + record, and photo pick → Convex; default surface unchanged when the flag is off.spikes/voice-photo/qa-convex/(schema + reference-module deployment) is separate frombackend/convex; no shared cloud deployment is touched.spikes/voice-photo/qa/evidence-3request-flow.tsran the spike's REALstorePhotoCaptureflow against an anonymous local-real Convex backend — 7/7 steps ok, upload URL → POST (storageId) → commit (photoId), read-back SHA-256 match. Recorded inspikes/voice-photo/QA-DEVICE-PROOF.md./apilayer with_tagpresent in the payload — Convex strips_tagas protocol metadata; the PR deploy(convex): thin-path functions on dev deployment reliable-panther-823 #5 F1 interpretation ('Convex rejects_-prefixed stored fields') does not hold at the wire layer. Adapter-layer scope; flagged for the contract thread.scripts/qa-ios-sim-proof.shreproduces the simulator run (toolchain inventory, tmux Convex backend, prebuild, pod install, xcodebuild dev client, simctl install/launch/record,--freshpermission replay). Items 1–8 remain honestly labeled prepared, not executed until an Apple machine exists (macos sandbox gate: FORBIDDEN).Verification (exact HEAD
f29f3ce, 2026-09-17, QA lane thread)Rebased onto master
fd7a6abafter the PR #31 merge overtook the branch (per repo rule 5, all prior results on49f7982are invalidated by the push; everything below ran on the new head). The rebase conflict wasapps/mobile/App.tsxonly — resolved as a union: master'sMonthHistoryScreenremains the default surface, the QA flag swaps toVoicePhotoProofwhenEXPO_PUBLIC_QA_PROOF=1.pnpm install --frozen-lockfileclean;pnpm turbo run typecheck test build --force18/18, 0 cachednpx expo export --platform iosexits 0 and bundles master's month screen alongside the proof surfacef29f3ce: 7/7 EVIDENCE GREEN on the anonymous local-real backend (anonymous-qa-convex); F1 probe again succeeded with_tagin the payloadf29f3cepnpm-lock.yamluntouched (deps added resolve under master's lockfile)Notes for review
spikes/voice-photo/QA-DEVICE-PROOF.mdwith the evidence taxonomy (FAKE-ADAPTER / SIMULATOR / LOCAL-REAL-BACKEND / HARDWARE-ONLY / BLOCKED).qa-synthetic-author, 1×1 PNG fixture); the QA backend is anonymous-local and throwaway.qa/ios-sim-proofand qa(device-proof): wire apps/mobile harness for PR #8 checklist reproducibility #29ios-device-proof) overlap inapps/mobile/app.json/lockfile — whichever merges second rebases and re-runs gates.Evidence receipt (pre-merge; merge owner fills remaining fields)