158 lines
7.1 KiB
Markdown
158 lines
7.1 KiB
Markdown
# 12. Phase 3 — Production Release + Play Store Readiness (v6.7.0)
|
||
|
||
**Дата:** 2026-05-18, продолжение Phase 2.
|
||
|
||
## Что закрыто в этой фазе
|
||
|
||
### Закрытые findings
|
||
|
||
| Finding | Closure | Verification |
|
||
|---------|---------|--------------|
|
||
| **F-3.1** Automated purge cron | `systemd timer` daily через `mt-vpn-balance-purge.timer` | `systemctl list-timers \| grep mt-vpn` |
|
||
| **F-4 mitigation** SPOF Moscow | rsync replication каждые 5 мин на 3 узла (Helsinki/Frankfurt/US) через `mt-vpn-balance-replicate.timer` | `ssh montana-finland ls /var/lib/mt-vpn-balance-replica/state.json` |
|
||
| **F-7** Backup confirmation flow | Новый экран `s-backup-verify` между создания и активации — пользователь вводит случайное слово из 24 для подтверждения | Reproducible в app v6.7.0 |
|
||
| **Production release build** | R8 minification + shrinkResources + proper signing config + ProGuard rules | APK 29 MB (vs 32 MB debug), Genesis-signed |
|
||
| **Privacy Policy** | RU + EN опубликованы на `https://montana.quest/privacy` (HTTP 200) | curl probe |
|
||
| **Data Safety declaration** | `Play-Store-Pack/data-safety.md` — готовая выгрузка для Play Console | review |
|
||
| **Store listing** | RU + EN descriptions, screenshots refs, release notes | `Play-Store-Pack/store-listing.md` |
|
||
|
||
### Phase 3 deployment status
|
||
|
||
| Компонент | Status | Доказательство |
|
||
|-----------|--------|----------------|
|
||
| **Production APK release** | ✅ `montana-6.7.0-release.apk` (29 MB) подписан Genesis-keystore | SHA-256 fingerprint `305bc99b…3ce4d` |
|
||
| **На сайте** | ✅ `montana.quest/vpn/montana.apk` → `montana-v6.7.0-release.apk` symlink | curl headers |
|
||
| **Privacy URL** | ✅ `https://montana.quest/privacy` живой | HTTP 200 |
|
||
| **Backend Rust** | ✅ `mt-vpn-balance.service` active, port 5009, signed_accounts > 0 | systemctl |
|
||
| **VPN cascade** | ✅ haproxy + 3 xray-pinned active enabled | systemctl |
|
||
| **Daily purge** | ✅ `mt-vpn-balance-purge.timer` enabled | next run 00:03 UTC |
|
||
| **State replication** | ✅ `mt-vpn-balance-replicate.timer` every 5min | rsync to 3 nodes |
|
||
|
||
---
|
||
|
||
## Google Play Store submission checklist
|
||
|
||
### Перед загрузкой APK
|
||
|
||
- [x] APK signed with **non-debug** keystore (Genesis-keystore)
|
||
- [x] versionCode incrementally increasing (60700 > 60600)
|
||
- [x] versionName semver (`6.7.0`)
|
||
- [x] targetSdk = 34 (Android 14, max actual)
|
||
- [x] minSdk = 24 (Android 7.0)
|
||
- [x] ABI splits: arm64-v8a, armeabi-v7a, x86, x86_64 (universal APK)
|
||
- [x] R8 / ProGuard включен с правильными keep rules
|
||
- [x] No debug code / log spam в release build
|
||
- [x] Foreground service permission decorated `specialUse` (Android 14+ требование)
|
||
- [x] WebView allowed cleartext только к `https://montana.local/` synthetic baseURL
|
||
|
||
### Play Console submission
|
||
|
||
- [x] Privacy Policy URL: `https://montana.quest/privacy` ← готова и HTTP 200
|
||
- [x] Data Safety declaration текст готов — `Play-Store-Pack/data-safety.md`
|
||
- [x] App content rating answers: `Play-Store-Pack/store-listing.md` § Content rating
|
||
- [x] Store listing RU + EN: `Play-Store-Pack/store-listing.md`
|
||
- [ ] Feature graphic 1024×500 — **TODO**: создать в графическом редакторе
|
||
- [x] Phone screenshots: использовать `m626-*.png`, `m640-*.png`, `m660-*.png` из `/tmp/` сессии
|
||
- [ ] Promo video — **optional**, можно отложить
|
||
- [ ] Google Developer Account ($25) — **требует автора**
|
||
- [ ] Privacy policy compliance verified by Google — после submission
|
||
|
||
### Ответы на Google Play обязательные вопросы
|
||
|
||
#### App access
|
||
**Q:** Is any part of your app or game restricted by a login, password, or other authentication mechanism?
|
||
**A:** No. Wallet creation is anonymous, no login required.
|
||
|
||
#### Ads
|
||
**Q:** Does your app contain ads?
|
||
**A:** No.
|
||
|
||
#### Target audience
|
||
**Q:** Select target age groups
|
||
**A:** Ages 18 and over (финансовый функционал — Ɉ accumulation).
|
||
|
||
#### News apps
|
||
**A:** No.
|
||
|
||
#### COVID-19 contact tracing & status
|
||
**A:** No.
|
||
|
||
#### Data Safety section
|
||
См. `Play-Store-Pack/data-safety.md`.
|
||
|
||
---
|
||
|
||
## Что осталось до полного mainnet (Phase 4)
|
||
|
||
| Задача | Severity | Cost |
|
||
|--------|----------|------|
|
||
| **CF-Phase2-1** Falcon-512 замена Ed25519 (post-quantum) | Средний | 2-3 недели (Android NDK + JNI bridge) |
|
||
| **F-6** Encrypted seed через user passcode (Android Keystore wrap) | Высокий | 1 неделя |
|
||
| **CF-Phase2-2** TOFU revocation flow | Средний | 1 неделя |
|
||
| **TimeChain consensus opcode `0x06 VpnHeartbeat`** | Низкий (текущая защита достаточна для MVP) | 3-4 недели (spec patch v35.26 + mt-account + montana-node) |
|
||
| **CF-recovery-tests** Automated unit + instrumented tests | Высокий | 2 дня |
|
||
| **F-8** SLIP-44 + BIP44 cross-wallet compatibility | Средний (UX warning достаточно для MVP) | 1 неделя |
|
||
|
||
---
|
||
|
||
## Готовность к Play Store submission
|
||
|
||
**Готово к internal testing track:** ✅ Yes
|
||
**Готово к closed/open testing:** ✅ Yes
|
||
**Готово к production submission:** ⚠️ Зависит от:
|
||
- Подтверждение от автора что keystore backup надёжен
|
||
- Подтверждение что hosting providers согласны с публичной публикацией infrastructure
|
||
- Feature graphic (1024×500) создан
|
||
|
||
**Не блокирует submission:** все остальные Phase 4 задачи — это улучшения безопасности post-launch, не блокеры для Play Store guidelines.
|
||
|
||
---
|
||
|
||
## Команды для submission (для автора)
|
||
|
||
### 1. Создать Google Developer Account
|
||
```
|
||
URL: https://play.google.com/console/u/0/signup
|
||
Cost: $25 one-time
|
||
```
|
||
|
||
### 2. Upload APK в Internal testing
|
||
```
|
||
Play Console → All apps → Create app
|
||
→ Name: Montana VPN
|
||
→ Default language: Russian (RU)
|
||
→ App or game: App
|
||
→ Free or paid: Free
|
||
→ Declarations: всё подписать
|
||
Release management → Internal testing
|
||
→ New release → Upload APK
|
||
→ File: /Users/kh./Python/Ничто/Montana/Android/build/montana-6.7.0-release.apk
|
||
→ Release notes: см. Play-Store-Pack/store-listing.md
|
||
```
|
||
|
||
### 3. Заполнить Store listing
|
||
```
|
||
Store presence → Main store listing
|
||
→ Подгрузить тексты из Play-Store-Pack/store-listing.md
|
||
→ Загрузить screenshots
|
||
```
|
||
|
||
### 4. Заполнить Data Safety
|
||
```
|
||
Policy → App content → Data safety
|
||
→ Использовать `Play-Store-Pack/data-safety.md` как guide
|
||
```
|
||
|
||
### 5. Privacy Policy URL
|
||
```
|
||
Already live: https://montana.quest/privacy
|
||
Вставить URL в Store presence → Privacy policy
|
||
```
|
||
|
||
### 6. Promote через testing → production
|
||
```
|
||
Internal → Closed → Open → Production
|
||
```
|
||
|
||
Время от submission до approval: обычно 1-3 дня для нового app.
|