Review: Scaffold Turbo Native iOS app

review-1775-2026-07-05 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

  • [x] Type — Feature
  • [x] Lineage — Standalone, modeled after landscaping-assistant-ios
  • [x] Repo — ldraney/prediction-assistant-ios
  • [x] User Story — present
  • [x] Context — present
  • [x] File Targets — 15 files to create, 1 exclusion
  • [x] Feature Flag — "none" (correct for iOS scaffold)
  • [x] Acceptance Criteria — 5 criteria
  • [x] Test Expectations — present with run command
  • [x] Constraints — present
  • [x] Checklist — present
  • [x] Related — present

Traceability

  • [x] story:app-experience label — App Experience
  • [x] story note verified — found in project-prediction-assistant user-stories section
  • [x] arch:ios label — iOS / Turbo Native
  • [ ] arch note PARTIAL — arch-ios note exists in pal-e-docs but is scoped to landscaping-assistant project, not prediction-assistant. [SCOPE] Create or update arch-ios note for prediction-assistant iOS component
  • [x] Forgejo issue — ldraney/prediction-assistant-ios#2, open

File Targets

  • [x] project.yml — verified: matches landscaping-assistant-ios
  • [x] PredictionAssistant/AppDelegate.swift — verified: matches LandscapingAssistant/AppDelegate.swift
  • [x] PredictionAssistant/SceneDelegate.swift — verified: matches LandscapingAssistant/SceneDelegate.swift
  • [x] PredictionAssistant/Info.plist — verified: matches LandscapingAssistant/Info.plist
  • [x] PredictionAssistant/Assets.xcassets/ — verified: matches LandscapingAssistant/Assets.xcassets/
  • [x] fastlane/Appfile — verified: exists in reference repo
  • [x] fastlane/Fastfile — verified: exists in reference repo
  • [x] fastlane/Deliverfile — verified: exists in reference repo
  • [x] fastlane/metadata/ — verified: exists in reference repo with review_information/, en-US/, copyright.txt
  • [x] fastlane/rating_config.json — verified: exists in reference repo
  • [x] build-testflight.sh — verified: exists in reference repo
  • [x] scripts/export-certs.sh — verified: exists in reference repo
  • [x] scripts/fix-keychain.sh — verified: exists in reference repo
  • [x] scripts/import-ci-keychain.sh — verified: exists in reference repo
  • [x] .gitignore — verified: exists in reference repo
Target repo (prediction-assistant-ios) confirmed to contain only README.md currently. All 15 file targets verified against the landscaping-assistant-ios reference repo tree.

Repo Placement

OK. Forgejo issue filed on ldraney/prediction-assistant-ios. Board item links to the same. All work is in one repo. No cross-repo concerns.

Dependencies

  • #1774 "Verify prediction-assistant.com is live" (sprint:12, backlog) — direct prerequisite. Issue Lineage states "prediction-assistant.com must be live first." Sprint ordering is correct (S12 before S13).
  • #1772 "tofu apply — provision prediction-assistant infra" (sprint:12, backlog) — upstream of #1774.
  • #1776 "TestFlight beta build on MacBook" (sprint:13, backlog) — downstream, depends on this ticket completing first.
Sprint ordering (S12 infra, then S13 iOS) is correct. Dependencies are implied by sprint labels and the Lineage section but not explicitly listed in the issue body. Acceptable given the Lineage statement.

Acceptance Criteria

5 criteria, all testable:
  • AC 1-2: xcodegen + Xcode build — verifiable locally with the provided run command
  • AC 3: App loads prediction-assistant.com — requires live site (S12 prerequisite satisfied by sprint ordering)
  • AC 4: Fastlane config — verifiable by inspecting Appfile contents
  • AC 5: Keycloak login in web view — requires live site + Keycloak realm (S12 prerequisite)
Test command (xcodegen generate && xcodebuild -scheme PredictionAssistant -sdk iphonesimulator build) is real and executable on macOS. Note: AC 3 and 5 can only be fully validated after S12 deployment completes.

Blast Radius

Low. Isolated iOS scaffold repo. No downstream consumers beyond the TestFlight build ticket (#1776). Pattern already proven with landscaping-assistant-ios. Rails-side Turbo Native support already in place per docs/platform/turbo-native-pipeline.md.

Decomposition Assessment

15 file targets in 1 repo. 5 acceptance criteria (at limit, not over). Estimated agent work: copy-and-adapt from landscaping-assistant-ios reference repo. This is scaffolding work — no complex logic, no multi-system coordination. Under 5 minutes. No decomposition needed.

Recommendation

  • [SCOPE] Create architecture note for prediction-assistant iOS component. The existing arch-ios note is scoped to landscaping-assistant. Either create a prediction-assistant-specific arch note or update arch-ios to be cross-project with project-specific sections.