diff --git a/Engineering_Reference_Manual_Plan.md b/Engineering_Reference_Manual_Plan.md new file mode 100644 index 00000000..2b48670a --- /dev/null +++ b/Engineering_Reference_Manual_Plan.md @@ -0,0 +1,92 @@ +# Engineering Reference Manual Update Plan + +Goal: bring `docs/Engineering_Reference_Manual.md` into alignment with the current +relationship-app codebase. Verify every claim, file path, function name, +collection name, and architectural fact. Never assume. + +## Approach + +- **Batch-based.** Each batch covers one major section or a coherent set of + subsections. One agent/turn per batch. +- **Evidence-first.** For every factual claim in the manual, verify against the + repo (grep, read file, run build/test if needed). +- **Log everything.** Each batch updates this plan with findings and + changes made. +- **Ripley coordinates.** Ripley does not code unless necessary; Bishop or + subagents may verify builds/docs. + +## Batches + +### Batch 1 — Front matter + System overview + Repository layout +- Read: `## How to use this document` through `### Shared configuration`. +- Verify all directory paths under `app/src/main/java/app/closer/`, + `functions/src/`, `functions/dist/`, `res/drawable-*`. +- Flag missing or renamed directories/files. +- Update any stale paths or naming. + +### Batch 2 — Authentication, pairing, couples model +- Read: `## Authentication and pairing flow` through `### Key Cloud Functions`. +- Verify auth files, pairing flow files, `couples` collection fields, + recovery phrase implementation. +- Cross-check `firestore.rules` for the rules described. +- Update if code diverges from doc. + +### Batch 3 — E2EE model + Firestore data model +- Read: `## End-to-end encryption model` and `## Firestore data model`. +- Verify crypto files, encryption versions, collection schemas, field names. +- Check `firestore.rules` regex helpers and invariants. +- Update data model tables if collections/fields changed. + +### Batch 4 — Daily question lifecycle + Cloud Functions module +- Read: `## Daily question lifecycle` and `## Cloud Functions`. +- Verify function triggers, handlers, schedules, module responsibilities. +- Cross-check `functions/src/` tree. +- Update if functions were added/removed/renamed. + +### Batch 5 — Firestore security rules +- Read: `## Firestore security rules`. +- Line-by-line verify against `firestore.rules`. +- Note any rules in the file not documented, or documented rules not in file. + +### Batch 6 — Billing + Notifications +- Read: `## Billing` and `## Notifications`. +- Verify RevenueCat integration files, entitlement checks, webhook handler. +- Verify notification classes, quiet hours, deep-link routing. +- Update for quiet-hours server-side suppression if doc still says local-only. + +### Batch 7 — iOS-specific + Build and release +- Read: `## iOS-specific notes` and `## Build and release`. +- Verify iOS project state (is it still broken? still exists?). +- Verify build commands, secrets, ProGuard, Functions deploy commands. +- Update stale commands or iOS status. + +### Batch 8 — Known landmines and recent fixes (cross-cutting) +- Read: `## Known landmines and recent fixes`. +- Verify each listed issue ID and fix matches git history and current code. +- Add any missing recent landmines (e.g., theme scanner, quiet hours server-side). +- Prune obsolete entries. + +### Batch 9 — Final review, TOC update, formatting +- Update `## Table of Contents` if headings changed. +- Run markdown lint / build check if applicable. +- Final pass for consistency. + +## Status tracking + +| Batch | Status | Findings | Changes made | +|---|---|---|---| +| 1 | todo | | | +| 2 | todo | | | +| 3 | todo | | | +| 4 | todo | | | +| 5 | todo | | | +| 6 | todo | | | +| 7 | todo | | | +| 8 | todo | | | +| 9 | todo | | | + +## Notes + +- If a section is found to be mostly correct, still spot-check a few claims. +- If a section is wildly out of date, rewrite it and note the divergence. +- Commit after each batch (per Git Discipline Rules). diff --git a/docs/Engineering_Reference_Manual.md b/docs/Engineering_Reference_Manual.md index b6e97b02..179014aa 100644 --- a/docs/Engineering_Reference_Manual.md +++ b/docs/Engineering_Reference_Manual.md @@ -89,14 +89,14 @@ app/src/main/java/app/closer/ │ ├── analytics/ # Firebase Analytics + Crashlytics wrappers │ ├── billing/ # EntitlementChecker + FirestoreEntitlementChecker │ ├── crash/ # CrashReporter abstraction -│ ├── feature/ # (reserved for feature flags; currently empty — no feature-flag code in repo today) +│ ├── feature/ # (reserved for feature flags; no directory exists today — no feature-flag code in repo) │ ├── navigation/ # AppRoute constants, NavHost, ExternalLinks │ └── notifications/ # AppMessagingService, NotificationHelper, NotificationPermissionHelper, QuietHours, TokenRegistrar ├── crypto/ # E2EE: Tink AEAD, BouncyCastle Argon2id, key stores ├── data/ │ ├── challenges/ # Connection Challenges data sources │ ├── local/ # Room DAOs, DataStore, EncryptedSharedPreferences (RecoveryPhraseStore, SecurePreferencesFactory, SettingsDataStore) -│ ├── questions/ # Question pack data sources (QuestionDao + QuestionJsonParser) +│ ├── questions/ # Question pack data sources (`QuestionJsonParser`) │ ├── remote/ # Firestore data sources, Cloud Functions callable wrappers │ ├── repository/ # Repository implementations │ └── security/ # PlayIntegrityChecker @@ -131,7 +131,7 @@ app/src/main/java/app/closer/ └── wheel/ # Spin the wheel ``` -**Note on the manual's older description**: a `core/security/` package and `data/local/QuestionJsonParser.kt` were documented in earlier revisions of this manual but don't exist in the current source. The auth rate limiter is in `domain/security/AuthRateLimiter.kt`, and the question JSON parser is at `data/questions/QuestionJsonParser.kt`. +**Note on the manual's older description**: a `core/security/` package was documented in earlier revisions of this manual but doesn't exist in the current source. The auth rate limiter is in `domain/security/AuthRateLimiter.kt`, and `QuestionJsonParser` is at `data/questions/QuestionJsonParser.kt` while `QuestionDao` is in `data/local/QuestionDao.kt`. The Android settings package contains: `SettingsScreen`, `SettingsViewModel`, `SettingsVisuals`, `AccountScreen`, `EditProfileScreen` + `EditProfileViewModel`, `AppearanceScreen`, `DeleteAccountScreen`, `NotificationSettingsScreen`, `PrivacyScreen`, `RelationshipSettingsScreen`, `SecurityScreen`, `SubscriptionScreen`. The `SecurityScreen` is biometric-gated for the recovery phrase reveal.