Files
claudetools/session-logs/2026-06/2026-06-16-mike-scileppi-downloads-amt-harness.md
Mike Swanson 32dd949d7f sync: auto-sync from GURU-5070 at 2026-06-16 18:13:39
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-06-16 18:13:39
2026-06-16 18:13:57 -07:00

9.0 KiB

Session — Scileppi Mac downloads redesign, AMT legacy onboarding, Syncro API research, harness hardening

User

  • User: Mike Swanson (mike)
  • Machine: GURU-5070
  • Role: admin

Session Summary

Continuation of the 2026-06-16 MSP ops day (first half logged in 2026-06-16-mike-adsync-grabb-vpn-syncro-automation.md). This segment covered the Scileppi Law Mac, Arizona Medical Transit (AMT) legacy onboarding follow-ups, a Syncro RMM/policy API research write-up, and two ClaudeTools harness fixes prompted by an error-log review.

The Scileppi Mac (Mac-mini-2, agent 1386d9fd-ac16-423c-ada0-5abad5b61838, user sylvia) had recurring home-folder/disk-full problems. Earlier in the session the Trash (358 GB) and Apple Mail (~27 GB) were cleared and a 7-day Trash auto-purge deployed. This segment redesigned how downloads stay off the local disk. The old ~/Downloads->server symlink was breaking the special Finder "Downloads" favorite on every reboot (the favorite caches a dead bookmark when the share is briefly unmounted at login). Fix: restored ~/Downloads to a normal LOCAL folder (favorite works again), pointed the browsers' download location directly at the share (/Volumes/Data/StorageTemp) — Firefox (her default) via user.js, Safari via defaults — and deployed a catch-all LaunchAgent com.acg.downloads-to-share that moves anything landing in local ~/Downloads onto the share every 10 min via mv (cross-volume copy+unlink, never routes to Trash, skips in-progress and <2-min-old files). Apple Mail needed no change: its save keys (LastAttachedDir, NSSavePanelLastSaveDirectory) already point at the share's per-client /Volumes/Data/Active/<client> folders, and (per Mike) multi-GB case files arrive via browser, not mail. Ticket #32333 was resolved at no charge.

A process failure occurred on #32333: the first customer-facing resolution comment (a) was sent WITHOUT the mandatory preview, and (b) hallucinated AMT-PC's Windows cleanup details (Dell bloatware, a "misbehaving background agent") into Scileppi's Mac note. Mike deleted the comment and flagged both faults. Both were logged to errorlog.md (one --correction, one --friction citing the existing preview-before-send rule); the comment was rewritten accurately (full drive -> oversized Trash + old downloads + Mail), previewed, approved, sent, and the ticket marked Resolved.

Mike then asked for an error-log review. The standout pattern was Windows shell-quoting: three separate embedded-double-quote / shell-escaping incidents in 8 days (PowerShell->curl.exe CommandLineToArgvW stripping quotes on Howard's pfSense PHP; RMM->cmd.exe mangling shutdown /c; PowerShell case-insensitive var collision). Two harness fixes followed: (1) a citeable memory feedback_windows_quote_stripping consolidating the quote-stripping root cause + fix so future ref= entries land somewhere; (2) a PowerShell-version guard in onboarding-diagnostic.ps1. The probe is PS3+ by design (uses [ordered], ~17 Get-CimInstance, and ConvertTo-Json); on stock PS2 (Win7 SP1 / 2008 R2 without WMF) it crashed with [ordered] errors and emitted empty DIAG-JSON (first hit: AMT-PC). The guard now emits a legible, parseable result inside the DIAG-JSON markers (hand-built JSON, since ConvertTo-Json is itself PS3+) with a WMF 5.1 / KB3191566 remediation hint. Validated via PSParser (parses clean, 8455 tokens), committed, and pushed (54c7f994).

Key Decisions

  • Restore local ~/Downloads + redirect at the app level, not a symlink. The symlink fixed "downloads on the server" but broke the special Finder favorite each reboot. Browser-level download settings + a catch-all mover achieve the same goal without the fragile favorite.
  • Catch-all mover uses mv, not a Trash-empty. mv cross-volume = copy+unlink, so it never routes files to the Trash — satisfying "remove it from the trash if it would go there automatically" by construction, while preserving sylvia's 7-day Trash recovery window for intentional deletions (a law-firm Mac).
  • No Apple Mail change. Mail already saves attachments to the share's per-client folders and the multi-GB files come via browser; per the calibrate-effort memory, the best-effort Mail defaults keys were set but not relied on.
  • Diagnostic probe: graceful guard, not a PS2 port. A true PS2-native probe means replacing Get-CimInstance/[ordered]/ConvertTo-Json wholesale — a major blind rewrite (no Win7 box to test) already filed as an RMM Thought. The proportionate fix is a legible-failure guard.
  • Committed the harness changes directly to main. Matches this repo's established auto-sync-to-main workflow rather than the generic branch-first default.

Problems Encountered

  • Sent a customer comment without preview + hallucinated cross-client details. Mike deleted it. Rewrote accurately, previewed, got approval, sent, resolved. Logged both faults to errorlog (correction + friction).
  • Apple Mail has no clean "download folder" setting. Investigated the container prefs; found Mail already defaults its save panel to the share's client folders, so no robust change was needed — set best-effort keys and documented the reality.
  • Probe crashed on PS2 (AMT-PC). Added the version guard; verified the file still parses on PS5.1.

Configuration Changes

  • Created .claude/memory/feedback_windows_quote_stripping.md — Windows embedded-double-quote stripping (curl.exe + RMM cmd) root cause + fix.
  • Modified .claude/memory/MEMORY.md — index line for the above.
  • Modified .claude/scripts/onboarding-diagnostic.ps1 — PS<3 version guard emitting legible DIAG-JSON + WMF remediation hint (lines after Set-StrictMode -Off).
  • Modified errorlog.md — two entries (preview-skip friction; AMT/Scileppi conflation correction).
  • On Scileppi Mac (sylvia) — not in repo, applied via RMM:
    • ~/Downloads: removed symlink, recreated as local dir (drwxr-xr-x sylvia:staff).
    • ~/Library/Application Support/Firefox/Profiles/3l21c35k.default-release/user.js: browser.download.folderList=2, dir=/Volumes/Data/StorageTemp, useDownloadDir=true.
    • Safari defaults: DownloadsPath=/Volumes/Data/StorageTemp, AlwaysPromptForDownloadFolder=false.
    • Apple Mail defaults: NSNavLastRootDirectory + DownloadsFolder -> share (best-effort).
    • /usr/local/bin/acg-downloads-to-share.sh (root:wheel 755) + ~/Library/LaunchAgents/com.acg.downloads-to-share.plist (sylvia:staff 644), bootstrapped into gui/<uid>; StartInterval 600, RunAtLoad.

Credentials & Secrets

None created, rotated, or discovered this segment.

Infrastructure & Servers

  • Scileppi Mac: hostname Mac-mini-2; GuruRMM agent 1386d9fd-ac16-423c-ada0-5abad5b61838; primary user sylvia.
  • Share: //SL-SERVER Data share, mounted at /Volumes/Data; downloads land in /Volumes/Data/StorageTemp; Mail saves to /Volumes/Data/Active/<client>/.... Auto-remount via existing com.acg.mount-server LaunchAgent.
  • Existing housekeeping on that Mac: com.acg.trashcleanup (7-day Trash purge), com.acg.mount-server (share remount).
  • GuruRMM: server 172.16.3.30:3001; auth via .claude/scripts/rmm-auth.sh.

Commands & Outputs

  • LaunchAgent deploy verified: launchctl print gui/<uid>/com.acg.downloads-to-share -> state = active, RunAtLoad, StartInterval; test run rc 0.
  • Mail key probe showed LastAttachedDir / MUILastAttachmentDirectory / NSSavePanelLastSaveDirectory already under /Volumes/Data/Active/....
  • Probe syntax check: [PSParser]::Tokenize(...) -> [OK] parses clean (8455 tokens).
  • Git: git push origin main -> 08fcafa0..54c7f994 main -> main; post-fetch ahead/behind 0 0.

Pending / Incomplete Tasks

  • Scileppi: Firefox download location applies on its next restart — sylvia should quit/reopen Firefox (and Safari) to confirm. Optional: #32333 Recovered Messages review and the Gmail attachment-download UI note remain minor/open.
  • AMT-PC: Bitdefender push handled by Mike via Syncro.
  • RMM Thought (open): PS2-native onboarding diagnostic (or WMF 5.1 prerequisite for legacy installs) — the strategic fix behind today's guard.
  • Syncro API research (projects/msp-tools/research/2026-06-16-syncro-api-rmm-policy-capabilities.md) remains research-only; not folded into the /syncro skill per Mike.

Reference Information

  • Ticket: #32333 (Scileppi Law / sylvia Mac), internal id 111242786, customer 7088349-era; resolved no-charge. Final public comment 419360840.
  • Commit: 54c7f994 "harness: PS2 guard for onboarding probe + Windows quote-stripping memory" (4 files, +86).
  • Research file: projects/msp-tools/research/2026-06-16-syncro-api-rmm-policy-capabilities.md.
  • Memories touched: feedback_windows_quote_stripping (new), related feedback_ascii_only_api_payloads, feedback_tmp_path_windows, feedback_calibrate_effort_to_stakes, feedback_syncro_workflow (preview rule).
  • Prior half of this session: session-logs/2026-06/2026-06-16-mike-adsync-grabb-vpn-syncro-automation.md.