docs(mobile): G2 evidence — T054/T055 proven, T056 3/5 drills green - #1827
docs(mobile): G2 evidence — T054/T055 proven, T056 3/5 drills green#1827h4yfans wants to merge 3 commits into
Conversation
T055 Maestro flow green on simulator; the final assert now matches the note body's accessibilityLabel (the component sets no testID). tasks.md: T054/T055 checked with evidence, T056 annotated with the kill-switch/version-gate/attribution proofs, G2 checkpoint block updated to the remaining three owner items.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Body-only desktop edits never touch the record row (update pushes send content: null and body saves do not enqueue a record push at all), so a pull driven purely by changedNoteIds never re-fetches a changed body — desktop peers only see them because desktop probes every note's CRDT sequence each pass. Mirror that: each incremental pass probes the first-sync 30-day recent window in the shared batch call; unchanged notes cost one cursor echo, older bodies stay on-demand (T048). Proven on simulator against staging: a typed desktop edit now lands in note_bodies where it previously never arrived.
An open app never re-pulled: the only triggers were foreground transitions, online transitions, and the BG task, so a desktop edit stayed invisible until the next app switch (measured: uniform ~43 s in the G2 drill, set entirely by the second glance). While the app is active a 5 s poll now runs an incremental pass; the engine's exclusive queue coalesces overlaps and an empty pass is one cursor echo. The recent-window body sweep gets a 30 s floor so the poll does not multiply CRDT probes — desktop only pushes CRDT state on its 30 s snapshot scheduler, so probing faster cannot observe anything new.
|
Two mobile sync fixes landed on this branch during the T056 drills (both proven on simulator against staging):
20-trial drill results (desktop → staging → simulator, app foreground): 0 misses; body median 32.2 s / p95 34.0 s; metadata median 28.1 s / p95 33.1 s (best trial 7.9 s). The floor is set by the DESKTOP push side: PushCoordinator drains the outbox and CRDT state on 30-second cycles ( 🤖 Generated with Claude Code |
|
React Doctor found no new issues. 🎉 Reviewed by React Doctor for commit |
What
us1-unlock-browse.yamlgreen on the iPhone 17 Pro simulator (2026-08-25 01:44) — stored session short-circuits sign-in/unlock as designed, browse→open-note asserted. One flow fix: the note body setsaccessibilityLabel="Note content"(no testID), so the final assert matches the label instead ofid:.client_policiesflip → Read-only banner on next bg→fg, no restart; clears on re-enable), version-gate ✓ (99.0.0 floor → update banner → clears on NULL), attribution ✓ (staging D1: zeroioswrite rows across sync_items/crdt_* — US1 pull-only proven).Verification
Staging
client_policiesrestored towrites_enabled=1, min_write_version=NULLafter the drills (verified by query). Screenshots + attribution JSON captured in the session.🤖 Generated with Claude Code