sync: auto-sync from GURU-5070 at 2026-06-30 17:21:06

Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-30 17:21:06
This commit is contained in:
2026-06-30 17:21:47 -07:00
parent 1b0b313896
commit 01613697c6
9 changed files with 386 additions and 268 deletions

View File

@@ -0,0 +1,70 @@
# Birth Biologic — Quality Systems Department -> Datto sync — COMPLETE
**Date:** 2026-06-30
**Completed by:** Mike Swanson / claude-main (GURU-5070)
**Status:** COMPLETE — verified against live Graph enumeration
## Outcome
Every file in the Datto source is now present in SharePoint.
| | Datto (source) | SharePoint (final) |
|---|---:|---:|
| Files | 3,768 | 3,769 |
| Datto files missing from SharePoint | — | **0** |
All 301 large files (>=4MB, ~29.7 GB total, largest a 3.94 GB .mov) were uploaded via
Graph chunked upload sessions. The idempotent size-check pass also detected and re-uploaded
~700 files that existed in SharePoint with a mismatched size (partial/corrupt residue from
the earlier failed OneDrive/PUT attempts).
## The 4 intentional differences (live current work — PRESERVED per Mike, 2026-06-30)
These are the "recently modified, do not clobber" carve-out. Confirmed as live edits made
*today* by named client staff, so they were left intact rather than forced to match Datto:
| File | Datto size | SharePoint size | Note |
|---|---:|---:|---|
| `LOGS/Equipment/3. Temp Excursions/Temperature Excursion Log.xlsx` | not present | 40,253 | Created 2026-06-30 by Mary Ster, edited by Kristin Steen |
| `LOGS/Equipment/2. Validation List/QSP-200.003.A Validation List.Current.docx` | 41,908 | 51,510 | Locked/open, edited today |
| `LOGS/Equipment/1.Equipment List/QSP-200.001.C Equipment List.Current.docx` | 47,947 | 57,545 | Locked/open, edited today |
| `LOGS/Quality Assurance Reporting Log/Deviations/2024/DEV39.Exhibit B.docx` | 15,525 | 22,437 | In use, edited today |
The three docs surfaced as upload "errors" (HTTP 423 Locked / 409 Conflict) precisely
*because* staff had them open — SharePoint's lock protected live work. That is the correct
result, not a failure.
## What actually fixed it (root cause of the all-day Mac failures)
1. **The prior upload script skipped every file >=4MB.** Datto has 301 such files (~29.7 GB).
The old approach could never reach 3,768 no matter how many times it ran. Fix: proper Graph
**upload sessions** (10 MB chunks, `Content-Range`) for large files.
2. **RMM agent ignores the `timeout` field; it honors `timeout_seconds`.** Commands sent with
`timeout` were capped at ~300 s, so long uploads died / went zombie ("running", no output).
Using `timeout_seconds` allowed multi-minute/multi-hour commands to run to completion.
3. **Long paths (>260 chars) in the Datto tree** were handled with the `\\?\` prefix for file
reads.
## Method
- `clients/birth-biologic/scripts/enumerate-datto.ps1` — enumerate Datto, write a
`relpath|size` manifest to `C:\Windows\Temp\quality-manifest.txt` on ACG-DWP-X-BB.
- `clients/birth-biologic/scripts/upload-quality-final.ps1` — idempotent uploader: for each
Datto file, skip if SharePoint already has it at matching size; else upload (simple PUT
<4MB, chunked upload session >=4MB). Long-path safe, refreshes the Graph token on long
runs, internal time budget + progress log (`C:\Windows\Temp\quality-upload.log`).
- Ground truth verified from this machine via the Graph **delta** endpoint (whole-drive
enumeration; far fewer round-trips than recursive `children` calls).
## Agent / drive
- Agent: ACG-DWP-X-BB (`a4524e85-8a07-45d0-91b1-51ce7e2ca74a`)
- Datto source: `C:\Users\Public\Desktop\Datto Workplace Server Projects\Quality Department`
- SharePoint drive: `b!F8BzMb1YakCIWCyWlmczb09LHqtxDxVMpLT6kAwYmsM7NUY4oPLSRq7ng3tJq-E9`
- Graph app: `msp-tools/computerguru-tenant-admin` (tenant 19a568e8-...)
## Note on the earlier docs
The earlier `2026-06-30-quality-sync-to-datto.md` (surgical 5-file delete) and
`CONTINUE-QUALITY-SYNC.md` (wipe + re-upload, in progress) describe superseded intermediate
states. This file is the authoritative final record.