From be710a0c9d68c0beb939f8c3311264c8064f793a Mon Sep 17 00:00:00 2001 From: null Date: Sun, 28 Jun 2026 11:02:45 -0500 Subject: [PATCH] =?UTF-8?q?docs(manual):=20Batch=201=20=E2=80=94=20correct?= =?UTF-8?q?=20repository=20layout=20paths=20(core/feature,=20QuestionDao,?= =?UTF-8?q?=20QuestionJsonParser)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Engineering_Reference_Manual_Plan.md | 92 ++++++++++++++++++++++++++++ docs/Engineering_Reference_Manual.md | 6 +- 2 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 Engineering_Reference_Manual_Plan.md 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.