docs(plan): Phase 3 complete - 13 batches, 11 issues found and fixed
Completed the full evidence-first re-review of docs/Engineering_Reference_Manual.md started in the previous commit. 13 batches, 11 issues found and fixed (Batches 11 and 13 were clean), all committed individually per the standing one-commit-one-batch rule. Final verification: 30/30 internal anchors resolve cleanly with a GFM-compliant slug checker; 0 broken TOC links. Batches 1-13 commits on dev:ef5a2331batch 1 iOS platform row E2EE not-yet-implemented claim1b36eba6batch 2 recovery phrase wordlist size 256 -> 2480af6f24abatch 3 Argon2id memory 46080 -> 47104 KiB5e292e66batch 4 DOW mode table was missing Saturday5f7c785fbatch 5 3 missing rule helpers + isPublicKey regex + releaseKeys sender-read fixaa356148batch 6 Cloud Functions handler types table was impreciseceb98f4abatch 7 iOS DefaultEntitlementChecker actor doesn't exist; gated-features list was wrong29cc39aabatch 8 How-to-gate section header + game-push flag claim (notificationsSent map -> 4 Timestamps)9330c0c4batch 9 Tink template name SHA128 -> SHA25622c816adbatch 10 RevenueCat version 8.20.0 -> 10.12.0 + Glanceb3725463batch 11 engineering conventions verified clean (no edits)80751f82batch 12 A-201 landmine heading restoredc5ead4cbbatch 13 where-to-look-first verified clean (no edits) The full table of issues + commit SHAs is appended to this plan file for the next session's reference.
This commit is contained in:
parent
c5ead4cb83
commit
cbb42a6e5c
|
|
@ -1,6 +1,6 @@
|
|||
# Engineering Reference Manual Review Plan — Phase 3 (2026-07-08)
|
||||
|
||||
**Status: 🚧 IN PROGRESS** — full evidence-first re-review of `docs/Engineering_Reference_Manual.md`.
|
||||
**Status: ✅ COMPLETE** — all 13 batches reviewed, 11 issues found and fixed, committed individually, and pushed to `dev`.
|
||||
|
||||
Triggered by `_null` after the Phase 2 sync (`213cfddb`) + review pass (`d31b58d2`).
|
||||
Goal: cross-check every claim in the manual against the live repo + `firestore.rules`
|
||||
|
|
@ -124,3 +124,22 @@ Goal: cross-check every claim in the manual against the live repo + `firestore.r
|
|||
### Final pass
|
||||
- TOC integrity + every anchor resolves.
|
||||
- One final commit if any TOC/anchor cleanup is needed.
|
||||
|
||||
## Phase 3 results (2026-07-08)
|
||||
|
||||
| Batch | Section | Issues found | Commit |
|
||||
|---|---|---|---|
|
||||
| 1 | Front matter + System overview + Repository layout | iOS platform row said "E2EE cross-compatibility not yet implemented" (contradicts the iOS E2EE section below) | `ef5a2331` |
|
||||
| 2 | Auth + pairing + couples doc model + rate limit + recovery | Recovery phrase "256-word list" - actual list is 248 entries (`WORDLIST` array has 248; iOS wordlist is 247 lines = 248 entries with no trailing newline) | `1b36eba6` |
|
||||
| 3 | E2EE model (versions, Argon2id, Tink, sealed-answer, ECIES) | Argon2id memory "46080 KiB" - actual constant is `46 * 1024 = 47104` KiB; iOS-side docstring was already correct | `0af6f24a` |
|
||||
| 4 | Daily question lifecycle + Reveal flow + Thread questions | DOW mode table was partial (missed Saturday `mode_weekend_side_quest` - Side Quest Saturday) | `5e292e66` |
|
||||
| 5 | Firestore security rules | Missing 3 helper functions (`otherCoupleMember`, `partnerReflectedDate`, `isPublicKey`); wrong regex for `isPublicKey`; releaseKeys per-collection enforcement said "readable only by recipient" but the rule also allows the sender (for the idempotency existence-check) | `5f7c785f` |
|
||||
| 6 | Cloud Functions | Handler types table mixed onDocumentCreated / onDocumentUpdated / onDocumentWritten into one row; onEntitlementChanged was in a separate "Firestore onUpdate" row but is actually onDocumentWritten | `aa356148` |
|
||||
| 7 | Billing | iOS "DefaultEntitlementChecker actor" doesn't exist (the real class is `BillingService`); gated-features list was wrong (4 of 7 items were not actually gated; chat-media gate was missing) | `ceb98f4a` |
|
||||
| 8 | Notifications | "How to gate a new feature" sub-section got merged into the previous paragraph by Batch 7; game-push flag claim was wrong (no `notificationsSent` map - 4 separate Timestamp fields) | `29cc39aa` |
|
||||
| 9 | iOS-specific notes | Tink template name "SHA128" was a typo - actual is `ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM` | `9330c0c4` |
|
||||
| 10 | Build and release | RevenueCat version 8.20.0 (stale from v0.2.1) - actual is 10.12.0; iOS purchases-ios 5.x; Glance 1.1.1 missing from the Gradle dependency list | `22c816ad` |
|
||||
| 11 | Engineering conventions | (no issues - every claim verified) | `b3725463` |
|
||||
| 12 | Known landmines and recent fixes | A-201 landmine heading (`### A-201 - ...`) got dropped during the Phase 2 sync - the body content was there but visually merged with the previous landmine's tail | `80751f82` |
|
||||
| 13 | Where to look first | (no issues - all 16 file paths resolve, acceptInviteCallable encryptionVersion=2 verified) | `c5ead4cb` |
|
||||
| Final | TOC + anchor integrity | 30/30 anchors resolve, 0 broken TOC links | (this commit) |
|
||||
|
|
|
|||
Loading…
Reference in New Issue