Lekture · Internal · 9 September 2026

Lekture completion check

Most tutor fixes are implemented and passed focused checks. We cannot yet sign off the changed product flows as complete on both Android and iOS.

What “done” means here

Code present, focused checks passed, deployed behavior verified, and required device acceptance completed are different states. The handover requires TestFlight child QA for tutor changes. No current TestFlight validation was performed.

This is a status reconciliation, not a new full audit. Evidence comes from three Luna checks, the Android smoke test, and targeted source inspection. No percentage is assigned because code checks and unverified operations are not comparable units.

First defects to address

  1. Android reader exit failed with a daily_progress.profile_id foreign-key error. The constraint name matches the current TypeORM schema. The submitted profile reference and deployed environment still need tracing.
  2. Session save occurs before progress update; failure can leave partial data and a duplicate retry can skip repair.
  3. Profile creation still logs child profile data.
  4. Remote push lacks complete native configuration and logout cleanup.
  5. Apple notifications lack cryptographic verification. This is unfinished implementation, not just an operations switch.
  6. Automated suites are unhealthy: API build passed, but API Jest failed 9/11 and mobile Jest failed before running.

Implemented; focused checks passed

Doc itemFeatureEvidenceStill needed
4.1–4.2Unified, level-scaled VADMocked mobile execution passed beginner 4000ms/0.3, intermediate 3000ms/0.35, expert 2500ms/0.4; unmute preserves settings.Live quiet-speech and interruption tests on Android and TestFlight.
4.3Pause / Prompt / PraiseThe prompt ladder now exists and passed prompt-content checks. The original document says open.Child QA must establish actual hint order and pacing.
4.4 + 6.4cNo read-ahead rulesMobile rules exist. Mocked backend session instructions omit the supplied passage and first-word example.Verify deployed API and live model responses; a prompt assertion is not a behavior guarantee.
6.4aBeginner leniencyMocked scoring checks passed: beginner lenient 70%, gentle band through 80%; intermediate 85%; expert strict 95%.Real child speech, accent, and feedback testing.
6.4bAge and grade contextBoth mobile reading paths send profileId and set prompt context. Mocked backend propagation passed.Confirm selected profile and age-appropriate tutor behavior on device.
6.2aProduction schema synchronization guardSource disables TypeORM synchronize in production; backend builds.Verify deployed NODE_ENV, schema/migration setup, and production boot.
6.3c + 7.3Trial and subscription valuesMocked social signup confirms 7 days / 150 pages. Source paid tiers are 150 / 450 / 900. Mobile trial field mapping is corrected.Fresh deployed signup and purchase checks on both stores. Existing device account showed legacy high page allowance; that is not a fresh-signup test.
StubDummy push token removalMobile real-token path replaces dummy tokens; mocked API rejection of dummy tokens passed.Real delivery is separate and incomplete.
2.4Apple returning-user identity fixMobile preserves Apple user ID; mocked API login without a repeat email passed for existing users.TestFlight Hide My Email, first signup, returning login, and crash regression.

Implemented or present, but incomplete / not fully verified

Doc itemFeatureEvidenceStill needed
DMDigital Reading MVPDashboard entry, library, URL extraction, reader reuse, and 85% auto-turn code exist. Android manual pagination worked.Session saving failed on device. URL extraction, speech-triggered auto-turn, live tutor and iOS require end-to-end tests.
6.2cIndividual admin accountsCurrent source has individual accounts, hashed passwords, roles, invites, MFA paths and action logs; hardcoded fallback credentials removed.Admin UI, authorization, invitations, MFA and audit completeness were not tested. This is source presence, not completion.
6.3aRemote APNs / FCM pushMobile token lifecycle and backend push pipeline now exist.Native Firebase/APNs setup is missing/incomplete; logout does not invoke unregister. Verify delivery with foreground/background/terminated apps on both platforms.
6.3bApple server subscription notificationsWebhook and subscription transition code now exist.Full JWS signature verification is absent. Complete verification and Apple payload handling, then test renewals, cancellation, expiration and refunds. Keep production disabled meanwhile.
6.2bPII log cleanupSeveral auth, mail and reporting logs were cleaned.Profile creation still logs the complete DTO, including child name, age and grade. Finish source cleanup and verify runtime logs.
6.5a + 7.4OpenAI retention requirementRealtime payload has tracing:null. Non-Realtime store:false settings exist on reviewed paths.Tracing disabled does not establish zero retention. Live voice data handling and account-level retention settings remain unverified; do not mark this requirement complete.
6.5bParental consent on social sign-inSignup and deferred social-login consent paths exist in source.Run the iOS social-sign-in flow and obtain owner acceptance. Legal sufficiency is separate.
2.3Local development setupInstalled Android debug app loads after starting Metro and forwarding USB port 8081; backend builds.Fresh Android native build not tested in this pass. Mobile Jest fails before execution; backend Jest fails 9 of 11 tests. Restore useful automated coverage.

Remaining validation, operations and owner work

Doc itemFeatureEvidenceStill needed
4.5Fresh TestFlight and child QANo current completion evidence.Build from accepted code and validate waiting, quiet speech, no read-ahead, hints, camera and sign-in on real iPhones. The document identifies 18 (23) as its baseline; no current build inventory was checked.
3Account accessDocument reports GitHub write access; other invitations are pending there.Confirm current Apple Developer, App Store Connect, Play Console, Google Cloud, DigitalOcean, OpenAI and EAS access. No portals checked this pass.
6.1Secret rotation and prior-team lockoutNo completion evidence collected.Confirm SSH revocation and key-only access; rotate relevant OpenAI, JWT, database, SMTP and Apple keys and deploy. Do not infer completion from code.
6.5cParent verification and consent legal reviewOwner/legal item remains unverified.Obtain legal/product acceptance for parental verification and social-login consent.
6.5dGoogle Play declarationsDocument reports 12 pending declarations; current console not inspected.Complete accurate privacy/data-safety/target-audience declarations and owner submission.
6.6Scaling and infrastructureFuture item in the document.Backups, managed database and scaling decisions when needed; current infrastructure status not audited.
6.7Realtime model evaluationNo evaluation evidence collected.Compare suitable models for quality, latency, transcription and cost. This pass did not research model availability.
7.1Figma and assetsPending according to the handover.Owner obtains editable design files and asset exports.
7.5Build containing consent gateUnknown from this pass.Map App Store Connect build history to code.
7.6Secret removal from git historyPending confirmation according to handover.Verify historical cleanup with repository owners; independent of rotating secrets.
7.7IP transferOwner/legal item.Obtain written ownership transfer.
DM laterPDF import / Share extensionDeferred after initial digital-reader feedback.Confirm subsequent scope. No new digital import or Share extension was verified here.
DM alternativesCross-app capture / overlay visionThe approved MVP is an in-app reader; silent cross-app capture is not the committed MVP.No Android-only overlay work without the explicit platform exception required by AGENTS.md.

Existing inventory and closed handover work

Doc itemFeatureEvidenceStill needed
2.1–2.2Repositories and stack onboardingBoth repositories exist; handover marks these done.Current tested branches are feat/remote-push-pipeline, not clean baseline v4/v3. Merge/deployment status was not checked.
7.2Clarify whether remote push existedThe handover investigation was closed: original push was local Notifee plus dummy tokens.The newer remote pipeline is separate; its presence does not establish delivery.
InventoryCamera OCR + live tutorListed as already built in the document; source exists.Not revalidated end-to-end in this pass.
InventoryScan and readListed as already built; shared reader code exists.Fresh scan/OCR flow not exercised; session-save failure blocks broad reader completion.
InventoryProfiles, level assessment, goals and reportsListed as built.No complete regression pass. Daily-progress persistence failed in the observed reader exit.
InventoryLocal notificationsListed as built via Notifee.Local delivery not re-tested; does not imply remote push.
InventoryGoogle / Apple sign-in and IAP / Google RTDNExisting source according to handover and current checkout.Live store purchases, renewals, refunds, consent and sign-in remain unverified on this pass.
InventoryAdmin dashboard and EAS / TestFlight pipelineExisting systems according to handover.No current cloud build, deployment or administrator workflow validation.

Evidence and limits

Mobile b5932d5cd3afb73301a827e1543dddeebe27b84b; API 237fa50427d777162c148f1133c4a0d5047cf1ef. Both on feat/remote-push-pipeline. No product source edits were made during testing. Android used an existing debug install with the current Metro bundle; native build provenance was not re-established.

Focused harnesses mocked native/network dependencies. They validate code decisions, not microphone routing, model obedience, production deployment or store behavior. No production database, console, legal or secret-rotation audit was performed.

Additional current-source evidence: src/admin/admin.service.ts and admin-management.controller.ts; src/subscription/apple-asn.service.ts; src/library/library.service.ts; mobile DigitalLibrary.jsx and ReadingPage.jsx; subscription-plan.config.ts. These received source inspection, not full feature tests.

Original handover requirements and status, retrieved 9 September 2026. This report is separate so the original remains intact.