Daily sync of canonical Projects/Skills files into the Claude/Scheduled paths that scheduled-task prompts load. Ran via Desktop Commander (host FS) because Claude/Scheduled/ and Codex/ sit outside the Cowork mount.
| # | Destination | Mode | Pre-sync | Action |
|---|---|---|---|---|
| 1 | _post-run-qa-reflection.md | partial | MATCH | none |
| 2 | sail-kb-daily-pulse/SKILL.md | full-skill | BODY DRIFT | merged, preload header preserved |
| 3 | sail-kb-daily-pulse/build_report.py | binary | DRIFT | byte-copied canonical→dest |
| 4 | _skill-preload.md | binary | content MATCH but untracked | staged + committed (now tracked) |
| 5 | Codex/_fallback/SKILL-PRELOAD-AND-DRIFT-GUARD.md | binary | MATCH | none (outside repo) |
Drift detail: dest sail-kb-daily-pulse was missing the canonical v3.3.0 (2026-06-03) changelog line (restored kb_live_backlog.py helper, live_backlog_count aggregate, Section C cap at 30 exports). build_report.py drift is the matching Section C change — a coherent pair. Preload header preserved byte-identical.
cmp -s byte-equal: PASS.Codex/skills-scheduled-mirror-sync/_backups/2026-06-03/.git add -A); 18 unrelated dirty files left untouched.7c0d43f → pushed 7418658..7c0d43f main to sail-scheduled-tasks.discover_unmapped_partials.sh absent → ran manual equivalent. One candidate: skills-scheduled-mirror-sync (own mirror, not in map) but byte-identical, no drift. Flagged for manual map-add.Projects/Skills/skills-scheduled-mirror-sync/discover_unmapped_partials.sh so Step 4 is deterministic instead of a manual fallback.skills-scheduled-mirror-sync (self) to the mirror map so the task's own mirror is drift-guarded.