Local Expo Go gesture review

Contact Capture Gesture Capture Review

Review the T-268 capture source buttons in Expo Go. This page does not start Expo, open camera permissions, upload images, run OCR, write Google Contacts, execute n8n, persist owner approval, touch production, or send notifications.

Gesture capture review only
Mode Local Expo Go gesture review
Stage T-269 after T-268
Blocked No backend upload or live OCR
Next Owner gesture acceptance

Review Goal

  • 1Confirm /capture exposes Camera, Photo Library, and Manual Reference.
  • 2Confirm each source requires an explicit operator gesture before any device picker can open.
  • 3Confirm local preview is in-memory only and only redactedReference moves toward review.
  • !Record only redacted review references, not raw QR screenshots, business card photos, contact payloads, tokens, or logs.

Local Commands

  • 1npm --prefix apps/contact-capture-native run typecheck.
  • 2npm --prefix apps/contact-capture-native run start.
  • 3Open with Expo Go first. Do not use native builds, EAS, TestFlight, app-store, deploy, or live adapter flows.

Expected Gesture Paths

  • 1Camera calls launchCameraAsync after a tap only.
  • 2Photo Library calls launchImageLibraryAsync after a tap only.
  • 3Manual Reference creates a redacted scanner reference without opening an image picker.
  • 4localCaptureDraft.ts keeps backendUploadAllowed, liveOcrAllowed, and contactsWriteAllowed false.

Safety Checks

  • 1base64: false and exif: false stay set for local image picker options.
  • 2No backend upload, no live OCR provider execution, no Google Contacts read/write, no n8n or Contacts Agent execution.
  • 3No credential/token access, no durable database write, no raw payload storage, no notification send, and no production access.
  • !Any request to write Contacts, run OCR, execute n8n, store raw images, or send notifications stops for separate Strict Control approval.

Acceptance Evidence

  • 1gestureCaptureReviewReference records the owner phone review session id.
  • 2localDraftReference records a redacted local draft reference.
  • 3gestureCaptureDecision can be accepted-gesture-capture-review, changes-requested-gesture-capture-review, or continue-gesture-capture-review.
  • !accepted-gesture-capture-review is not Contacts write approval, not OCR approval, not deploy approval, and not notification approval.

Stop Rules

  • !No result acceptance if camera/photo/manual buttons are not visible on the phone.
  • !No result acceptance if a picker opens without an explicit tap.
  • !No packet if raw images, QR payloads, contact payloads, credentials, tokens, raw logs, or live payloads would be stored.
  • !No native build, EAS/TestFlight/app-store flow, deploy, hosting/DNS change, production, live adapter, durable write, or notification send.