Review: Build and upload first TestFlight beta (re-review)
Verdict: NEEDS_REFINEMENT
Re-review of board item #1809. Previous review (
review-1809-2026-07-05) returned NEEDS_REFINEMENT with three findings. Two of three are now resolved; one new issue found.Previous Findings Resolution
- [x] [SCOPE] arch-palinks note -- RESOLVED.
arch-palinksnote now exists in pal-e-docs (note_type: architecture, project: palinks). Includes Mermaid diagram, component table, key decisions, and iOS component entry. - [x] [BODY] Repo placement -- RESOLVED. Issue body now reads:
ldraney/palinks-ios (issue filed on palinks for centralized sprint tracking). Convention is documented. - [x] [BODY] ./build-testflight.sh reference -- RESOLVED. AC item 4 now reads:
./build-testflight.sh uploads build to TestFlight (wraps keychain fix + fastlane beta).
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- Standalone, next step after #56
- [x] Repo -- ldraney/palinks-ios (centralized tracking documented)
- [x] User Story -- present
- [x] Context -- present
- [x] File Targets -- 2 files in palinks-ios + source file noted
- [x] Feature Flag -- none (appropriate for manual iOS build task)
- [x] Acceptance Criteria -- 6 items
- [x] Test Expectations -- manual (honest about non-automatable workflow)
- [x] Constraints -- present (MacBook, Apple team, icon source, build-testflight.sh)
- [x] Checklist -- present
- [x] Related -- project-palinks
Traceability
- [x] story:ios-distribution label -- Turbo Native iOS shell + TestFlight + App Store
- [x] story note verified -- found in project-palinks user-stories section (status: in progress)
- [x] arch:palinks label -- palinks component
- [x] arch note verified -- arch-palinks note exists in pal-e-docs (slug: arch-palinks, note_type: architecture, updated 2026-07-06). Includes iOS component in diagram and component table.
- [x] Forgejo issue -- ldraney/palinks#59, open
File Targets
- [ ]
palinks-ios/PalinksApp/Assets.xcassets/AppIcon.appiconset/AppIcon.png-- ISSUE: DirectoryPalinksAppdoes not exist. The actual directory isPalinks(confirmed via project.yml target sources and Forgejo API tree listing). Correct path:Palinks/Assets.xcassets/AppIcon.appiconset/AppIcon.png(file to be created). - [ ]
palinks-ios/PalinksApp/Assets.xcassets/AppIcon.appiconset/Contents.json-- ISSUE: Same directory name error. Correct path:Palinks/Assets.xcassets/AppIcon.appiconset/Contents.json(file exists in repo). - [x]
app-icon.png(palinks repo root, source) -- verified: 46KB file exists.
Repo Placement
OK. Issue is filed on
ldraney/palinks for centralized sprint tracking; ### Repo section explicitly documents that work is in ldraney/palinks-ios. The palinks-ios repo exists on Forgejo (not empty, has PR #1 merged). Convention is consistent with sibling ios-distribution issues (#56, #57, #60, #61).Dependencies
- #56 (iOS distribution: Create Turbo Native shell + Fastlane pipeline) -- closed on Forgejo, in
validationcolumn on board. Direct predecessor per Lineage section. Should complete validation before #59 moves to in_progress. - #57 (Update stale docs, add CLAUDE.md, iOS docs, and app icon) -- sibling in backlog, not a blocker.
- #60 (Mobile CSS polish for iOS WKWebView) -- sibling in backlog, can proceed in parallel.
- #61 (App Store metadata and privacy policy page) -- downstream, depends on this ticket completing.
Acceptance Criteria
6 criteria, all manual MacBook + device work. Sequentially ordered and clear. Agent cannot verify remotely (ticket honestly acknowledges with "Run command: n/a").
./build-testflight.sh wrapper now correctly referenced in AC item 4, matching the script that exists in the palinks-ios repo root (224 bytes).Blast Radius
Limited. Work is confined to palinks-ios (icon copy + build). No changes to the palinks Rails app. Same Apple Developer team (HAY64YD5PX) shared with landscaping-assistant-ios -- no conflict expected (different bundle IDs: com.palinks.app vs landscaping-assistant's). No downstream consumers affected by initial TestFlight upload.
Decomposition Assessment
2 file targets in 1 repo. 6 acceptance criteria (tightly coupled as a single build-upload workflow). Estimated time: 15-30 minutes of manual MacBook work. No decomposition needed.
Recommendations
- [BODY] Fix file target paths:
PalinksApp/does not exist in the palinks-ios repo. The correct directory isPalinks/(per project.yml target sources). Update both paths: