# Completion Review — design to implementation

*A full pass over every feature and use case, July 20, 2026. Three lists: what was improved right now (done in this pass), what should be done later and exactly why it can't be done now, and the current verification status. Verification: TypeScript strict compile clean; 15 automated workflows / 94 checks, all green, zero JavaScript errors across every industry pack and every screen.*

## A. Improvements found in review — DONE NOW (shipped in this pass)

1. **"In progress" stat was hardcoded to columns 1–2.** With user-configurable columns (add/remove), the Dashboard tile could miscount on custom boards. Now counts any middle column, excluding completed items — correct for every board shape.
2. **Corrupt-data self-healing for tasks.** Workspace docs can now be written by agents and the admin tool, so the loader hardens every task on read: column index clamped into range (a bad `col` can no longer hide a card), numeric fields (id, estimate, logged, billed) coerced and floored at 0 — NaN can never reach the billing math.
3. **Stale default assignee in the New-task modal.** The default assignee was captured once at first render; if the roster changed (or started empty), new tasks could silently go to a non-member. The modal now re-syncs its default every time it opens.
4. **Worker viewers saw a rate input in Setup → Team's add-member row** while all other money was hidden — now hidden too, completing the visibility sweep.
5. **Package updates** (everything that's safe within Expo SDK 57): react 19.2.3 → 19.2.7, react-dom → 19.2.7, react-native-safe-area-context 5.6.2 → 5.8.0. Full compile + 94-check regression after updating: green.
6. **Admin/database tool** — confirmed built (previous pass): `agent-tool/trackmint-admin.js` + doc 30. Add/delete/disable users, reset passwords, edit any field on any record by dot-path (`ws:set <uid> members.1.rate 150`), backup/restore with auto-backup before every delete.

## B. Should do — CANNOT do right now, and why not

1. **Per-person logins (real multi-user auth).** *Why not now:* it changes the data architecture — one workspace doc per account becomes a shared workspace with per-user membership, invites, and Firestore security rules per role. That's a multi-day migration with real data-loss risk, and "Viewing as" covers the demo/prototype need honestly. Design is documented (doc 23 §6).
2. **Real reminder delivery (email/SMS/voice).** *Why not now:* requires a server to send from (Twilio/SendGrid + a scheduler). Trackmint deliberately has no server; Cloud Functions require the Firebase Blaze plan, which needs Barry to add a payment card himself — a step I can't do on his behalf. The in-app reminder engine is ready to wire the moment that exists.
3. **Stripe subscriptions (monetization).** *Why not now:* needs Barry's Stripe account and business details; also server-side webhooks (same Blaze prerequisite). Tier gates already exist in-app; doc 29 has the pricing to wire in.
4. **Major package upgrades** (async-storage 3.x, gesture-handler 3.x, TypeScript 7). *Why not now:* all are breaking-change majors; gesture-handler 3.x in particular changes the API used by the board's drag-and-drop. Expo SDK 57 pins the tested combination — these belong with the next SDK upgrade, tested behind the QA suite, not the night before builds ship.
5. **Recurring/retainer invoices.** *Why not now:* "generate an invoice every month" needs either a server-side scheduler (Blaze again) or an unreliable on-device timer. Manual one-tap monthly invoicing covers it today; top roadmap item once any server exists.
6. **Native-device retest of the web gesture quirk.** The card-button double-fire exists only in the web export (native iOS uses a different touch system). *Why not now:* verifying on-device requires Barry's phone; TestFlight build 13 is the artifact to check.
7. **GitHub push.** 9 commits ready. *Why not now:* needs a Personal Access Token only Barry can create.
8. **Deeper QA on native iOS (not just web).** *Why not now:* no iOS simulator in this environment; the web export + TestFlight-on-device combination is the available proxy.

## C. On "zero bugs"

Every automated check passes and no known defect is open. Honestly stated: zero *known* bugs — 94 assertions across 15 industry workflows, every screen exercised, every pack, plus compile-level strictness. The QA suite runs against every future build, so regressions surface immediately. The remaining risk sits where automation can't reach yet: native-device behavior (item B6) and true multi-user scenarios (item B1).
