# Mobile Source Snapshot · `super-app-v1` Read-only frozen copy of `~/Downloads/design-handoff/{mobile,shared}/` captured **2026-05-17 · snapshot-id `snap-2026-05-17-r1`** for Path D backend build. ## What this is The actual JSX source of `demo.pattayatogether.com` mobile app · 34 JSX + 6 shared files (~3.2 MB total). Used as the canonical source for Layer J descriptor extraction via `v3-audit/bin/extract_descriptors.py`. ## What this is NOT - Not the live deployment (that's `~/Downloads/design-handoff/` + Hostinger) - Not editable from V3-AUDIT or Session C (drift control) - Not a fork (`mobile/home.jsx` LOCK still applies to the live source) ## Contents | Path | Count | Note | |---|---|---| | `mobile/*.jsx` | 34 | All screens, overlays, primitives | | `shared/*` | 6 | `tokens.js` · `alpha35.css` · `modes.js` · `data.js` · `tweaks.js` · `atlas-map.js` | | `MANIFEST.json` | 1 | Per-file size + sha256 + line count + snapshot metadata | | `README.md` | 1 | This file | ## Verification ```bash # Confirm snapshot matches the live source files: python3 -c " import json, hashlib from pathlib import Path mf = json.load(open('docs/prototypes/super-app-v1/mobile-source-snapshot/MANIFEST.json')) for rel, meta in mf['files'].items(): f = Path('docs/prototypes/super-app-v1/mobile-source-snapshot') / rel h = hashlib.sha256(f.read_bytes()).hexdigest()[:16] status = '✓' if h == meta['sha256_16'] else '✗ DRIFT' print(f'{status} {rel} · {meta[\"size_bytes\"]} bytes') " ``` ## Re-snapshot protocol When the live prototype updates significantly (e.g., P501+ patches add new screens): ```bash # 1. Confirm source is fresh ls -la ~/Downloads/design-handoff/mobile/ # 2. Replace snapshot rm -rf docs/prototypes/super-app-v1/mobile-source-snapshot/{mobile,shared}/* cp ~/Downloads/design-handoff/mobile/*.jsx docs/prototypes/super-app-v1/mobile-source-snapshot/mobile/ cp ~/Downloads/design-handoff/shared/* docs/prototypes/super-app-v1/mobile-source-snapshot/shared/ # 3. Regenerate manifest python3 -c " # (see v3-audit/bin/extract_descriptors.py source for manifest regen logic) " # 4. Re-extract descriptors python3 v3-audit/bin/extract_descriptors.py # 5. Commit with bump (snap-2026-05-17-r1 → snap-YYYY-MM-DD-rN) git add docs/prototypes/super-app-v1/mobile-source-snapshot/ docs/architecture/extracted_descriptors/ git commit -m "chore: re-snapshot prototype · snap-YYYY-MM-DD-rN" ``` CI gate (TODO Slice 2+): block PR if descriptor extraction would produce different output than committed `extracted_descriptors/` · forces conscious snapshot bumps. ## Output The extractor produces `docs/architecture/extracted_descriptors/{screen_id}.json` for each screen found. Layer J `layout_composer` consumes these instead of hardcoding component trees — backend = 100% from prototype reality. ## See also - Live deploy: https://demo.pattayatogether.com/ - Existing rendered screenshots: `../screenshots/` (29 PNG) - Presentation deliverables: `../deliverables/` (PPTX, PDF) - Browser-runnable bundle: `../index.html` (loads via JS bundler · same source) - Extracted descriptors: `../../../architecture/extracted_descriptors/` - Path D rationale: see SYNC.md 2026-05-17 entry · "Path D · Read-only extraction"