# VOTD — Milestone Build Plan

**Approach:** `ios-debug-isolation` is the stable base (build 75 — clean launch, crash fixed). `ios-debug` has 43 commits not yet in isolation, representing everything built between builds 52–64. We cherry-pick those commits into isolation in grouped milestone builds so any regression is immediately attributable.

Last updated: 2026-03-30

---

## Baseline — Build 75 (current TestFlight, ios-debug-isolation)

What's in the app right now, confirmed stable:

- Clean launch — no SIGABRT crash, no VOTD overlay flash before splash
- All theme tokens properly imported (New Arch color crash fixed)
- Everything from build 51 and earlier (see build 51 punchlist)

Everything below build 51 is already in both branches and does not need to be re-merged.

---

## What's in ios-debug but NOT in build 75

43 commits, grouped into 5 areas:

| Area | Commits | Notes |
|---|---|---|
| Color system | `1280857`, `e1e3232`, `ce05385`, `2a41b86` | Token consolidation, TOPIC_ colors, MID_GREY, neutral ramp |
| Feedback fixes | `ea3c7a9`, `bb22beb` | Fixed panel height, blue sky urgency color |
| Share refactor | `5ef00ba`, `e0c6bbb` | shareUtils.ts centralization + react-native-share ⚠️ |
| Share panel comps | `70bfe99`–`e687136` | HTML design explorations only — no app code |
| Syntax/build fixes | `0621c6f`–`ca982e5` | Double commas, bare prop identifiers, icon RGB |

**⚠️ Share conflict:** `react-native-share` was added in `ios-debug` but then bypassed in `ios-debug-isolation` because it caused the startup crash. The `shareUtils.ts` abstraction is worth keeping — but it must call `Share.share` (native), not `RNShare`. This needs a careful merge, not a blind cherry-pick.

---

## Build 76 — Color system + feedback fixes

**What:** Cherry-pick the color token consolidation and feedback panel fixes from ios-debug.

**Commits to bring across:**
- `1280857` style: complete color token consolidation — rogue sweep, hue realignment, breaker palette
- `e1e3232` style: add MID_GREY token
- `ce05385` style: replace hardcoded topic colors with 16 TOPIC_ tokens
- `2a41b86` feat: color system — MID_GREY, ORANGE_LIGHT correction
- `ea3c7a9` fix(feedback): fixed panel height
- `bb22beb` fix(feedback): blue sky urgency option color green → blue

**Risk:** Low. These are style/token changes. Color crash has already been fixed by the token import sweep — these just add more tokens to theme.ts and apply them.

**QA checklist:**
- [ ] App launches cleanly — no new crash
- [ ] Feed topic badge colors render correctly (16 TOPIC_ token colors, not hardcoded)
- [ ] Breaker cards render correctly
- [ ] Feedback panel: fixed height, no resize between intro and comment steps
- [ ] Feedback: blue sky option shows in blue, not green

---

## Build 77 — Share architecture (safe merge)

**What:** Bring across the `shareUtils.ts` centralization but ensure it uses native `Share.share`, not `react-native-share`. The share panel comp commits are docs-only and can come across freely.

**Commits to bring across:**
- `e0c6bbb` refactor(share): centralise all share logic into lib/shareUtils.ts — **merge with care, verify RNShare is not re-introduced**
- `70bfe99`–`e687136` feat(comp): share panel HTML explorations — docs only, safe

**What to verify before cherry-picking:** Confirm `shareUtils.ts` in ios-debug does not import `react-native-share`. If it does, rewrite the import to use native `Share` before committing.

**Risk:** Medium. Share is a surface that's already working in build 75. The goal here is just to get the cleaner architecture in without regressing the working share behavior.

**QA checklist:**
- [ ] App launches cleanly
- [ ] "Share This Vote" in feed opens share sheet
- [ ] "Share how I voted" in vote-item opens share sheet
- [ ] Share position variant locked to verified users only
- [ ] No reference to react-native-share anywhere in the bundle

---

## Build 78 — Feed end content + back navigation

**What:** The `feed-flatlist-refactor` branch work — feed end content (spinner, scroll to reveal), correct back navigation from vote-item.

**Source:** Already merged into ios-debug. Key commits: `a7d1839`, `91de711`, `64ce4a2`, `157fd80`, `144ce4b`.

**QA checklist:**
- [ ] App launches cleanly
- [ ] Scrolling to end of feed shows spinner, then reveals end content
- [ ] Back navigation from vote-item returns to correct feed position
- [ ] SVG filename fix (`TRANSPORTATION_1.svg`) — transportation topic icon renders

---

## Build 79 — Merge ios-debug → ios-debug-isolation (full sync)

**What:** After builds 76–78 are confirmed stable, do a full merge of `ios-debug` into `ios-debug-isolation`. This brings across everything remaining — any small fixes, icon updates, etc. — and unifies the two branches.

**After this build:** `ios-debug-isolation` and `ios-debug` are in sync. Future work happens on `ios-debug` only. The isolation branch has served its purpose.

**QA checklist:**
- [ ] Full cold launch — delete app, reinstall, walk onboarding
- [ ] Feed, vote-item, profile all render correctly
- [ ] All three verification tiers work end to end (guest, phone_verified, verified)
- [ ] Share works on device
- [ ] Feedback works on device
- [ ] No crash on any screen

---

## Parked (not in any milestone)

- Push notifications — hold until first backend wiring
- Admin dashboard backend wiring — separate workstream
- Wear OS companion — separate workstream
- Typography scale branch (`feature/typography-scale`) — early-stage, not ready to merge
