← Back to brief

project productization path

memory · project_productization_path.md

Decision (2026-05-02): Stay on Mac-bundle delivery model through Adam's deployment + first 3-5 paying franchises. Reject pure-cloud SaaS pivot.

Why:

How to apply:

Tier 1 punch list before Adam's first paying-client deployment (ALL DONE 2026-05-03):
1. ✅ End-to-end install proof on a fresh user account — DONE 2026-05-02 PM via HOME-override sandbox. 6 install-time bugs surfaced + patched.
2. ✅ Remote support / fleet observability — DONE 2026-05-03. Per-tenant fleet_status_push.py (already wired into nightly-consolidation Step 12) POSTs metrics to a central CF KV. Admin dashboard via fleet_dashboard_builder.py. Setup procedure documented in FLEET_OBSERVABILITY_SETUP.md. No PII transits — counts/statuses/timestamps only.
3. ✅ Rollback procedure — DONE 2026-05-03. package-sync.sh now archives current snapshots into previous-snapshots/<version>_<timestamp>.tar.gz before every sync. Last 3 archives retained (older auto-pruned). One-command bash rollback.sh (interactive) or bash rollback.sh <archive-name> (specific) restores. rollback.sh --list shows available archives. Pre-rollback state itself archived so rollback is reversible.
4. ✅ Operator runbook — DONE 2026-05-03. OPERATOR_RUNBOOK.md covers Day 1 / Week 1 / Steady state, daily/weekly cadence, common operations, failure recovery, what's automatic vs manual. Sized for a non-technical franchise operator.
5. ✅ Versioning in _MANIFEST.json — DONE 2026-05-03. VERSION file at bundle root (0.1.0). package-sync.sh reads VERSION, writes into manifest as top-level version field. install.sh writes <RUNTIME_ROOT>/VERSION + .install_history log on each tenant install. First debugging question — "what version are you on?" — now answered by cat ~/Library/Application\ Support/<NS>/VERSION.

Final Tier-1-complete dry-run results (2026-05-03 14:22Z):

Tier 2 (within first 90 days of first paying client):

Tier 3 (product maturity):

Hardware plan: