## User
- **User:** Howard Enos (howard)
- **Machine:** Howard-Home
- **Role:** tech

## Session Summary

Built and delivered the GPS -> GuruRMM paying-vs-enrolled reconciliation to Winter, then
ran a live billing reconciliation with Winter and Mike in #ct-forum and turned the answers
into an actionable deploy split. Started from `gps-master-status.md` (2026-07-07), pulled a
live GuruRMM `/api/agents` count (2026-07-08) for all 40 active GPS clients, and produced a
per-client table of GPS devices billed (Syncro) vs unique machines enrolled (RMM), grouped
into under-enrolled / matched / over-enrolled. Sent the full list to Winter via Discord DM
(and to Howard), then posted the billing questions to the private #ct-forum forum thread and
blocked on human replies via the ask-forum background-wait pattern.

Winter and Mike answered over several rounds. Over-enrolled clients turned out to be stale
billing on our side: live Syncro confirmed Safesite (47), Dataforth (52), Design & Brand
Envoys (3), Quantum Wealth (4), and Arizona Medical Transit (2) all now match RMM. Cascades
bills off a Syncro-asset counter (not a fixed qty). Jimmy Company is billed annually (qty 12 =
1 machine x 12 months minus a prepay discount) — 1 machine, correct. Mike ruled MVAN stays on
GPS, PUTT keeps GPS only for the owner's personal account, and Stamback's count was wrong;
Winter then adjusted PUTT 7->2 and Stamback 8->3 in Syncro (both now match RMM). For the
remaining under-enrolled clients (Horseshoe, Reliant, Grabb, RARE, etc.) Winter said the bills
are correct — auto-install agents where possible.

Howard corrected a skill-first violation mid-session (I had hand-rolled raw curl against
ScreenConnect and Syncro instead of using the `/screenconnect` sc.py wrapper and
`/rmm-search`). Switched to the skills: pulled the full ScreenConnect Access fleet (959
sessions) via sc.py, listed each target client's enrolled hostnames via rmm-search, and
cross-referenced to compute the true deployable gap (SC-online + Windows + not in RMM). Result:
4 machines are auto-installable right now — Horseshoe DESKTOP-5DD8C43, T&C Sorensen SERVER,
Residential & Renovation DESKTOP-83II6D8, MVAN JUNE — everything else in the gap is genuinely
onsite (no SC session, long-offline, or Mac). No agents were pushed (end of day).

Closed by documenting everything: rewrote `gps-master-status.md` with live counts + a
reconciliation section, added a dated section + next-session plan to `tracker.md`, marked the
onsite sites in `onsite-check-list.md`, fixed `targets.json` (PUTT/Stamback), and updated 15
customer wiki articles (via a background documentation agent) with each client's account change.

## Key Decisions

- Used the authoritative `gps-master-status.md` list but live-refreshed RMM counts (2026-07-08)
  before sending to Winter — over/under gaps are billing decisions, so current data mattered.
- Routed the billing questions through `/ask-forum` (human-in-the-loop) rather than guessing;
  Winter is billing authority, Mike is owner. Multi-round background waits, zero tokens idle.
- Grouped the list under/matched/over so the billing signal (possible under-billing vs deploy
  gap) is explicit for Winter.
- Deploy split computed as SC-online AND Windows AND not-already-in-RMM — many online SC
  sessions (GND-SERVER, HSM-NEWSERVER, T&C already-enrolled boxes) are already managed, so raw
  SC reachability would overstate the gap.
- Did NOT push any agents — Howard was wrapping for the day; recorded the 4 reachable targets +
  method for tomorrow.
- Held Glaz-Tech (159 monthly / 88) and Brett (4 RMM / 3 billed) as open — Mike/Winter ruling
  pending; not chased.

## Problems Encountered

- Skill-first violation: hand-rolled curl against ScreenConnect + Syncro instead of using
  `/screenconnect` (sc.py) and `/rmm-search`. Howard corrected it; logged to errorlog.md
  (--correction). Switched to skills for the reachability + enrollment lookups.
- SC company tags are inconsistent (typos/splits): "MVAN Enterprised", "BST - Business Services
  of Tucon", "Reliant / Farwest" (mixes Farwest/Wilcox, separate clients). Cross-referenced by
  hostname against RMM per client instead of trusting CP1 tags alone.
- rmm-search -c "Residential" matched Sombra Residential LLC, not RARE — RARE has 0 in RMM;
  its SC machines (DESKTOP-83II6D8 online, DESKTOP-K8UVNL5 offline) are under the "Residential
  and Renovation" SC company.
- SC session OS lives at .GuestInfo.OperatingSystemName (top-level GuestOperatingSystemName is
  absent) — confirmed all 4 deploy candidates are Windows (MVAN JUNE is a Win11 box, not the Mac).

## Configuration Changes

- Modified `projects/gps-rmm-audit/gps-master-status.md` — full rewrite: live 2026-07-08 counts,
  2026-07-08 reconciliation section, corrected billing, deploy split, open items.
- Modified `projects/gps-rmm-audit/tracker.md` — added "2026-07-08 Winter/Mike billing
  reconciliation + deploy split" section with next-session plan.
- Modified `projects/gps-rmm-audit/onsite-check-list.md` — 2026-07-08 update: 4 reachable
  push-pending machines called out; removed PUTT/Stamback (resolved by billing); updated MVAN,
  RARE, Marc, QWM entries; Jimmy resolved, Glaz-Tech/Brett held.
- Modified `projects/gps-rmm-audit/targets.json` — PUTT target 7->2, Stamback 8->3 (bucket B).
- Modified 15 wiki articles under `wiki/clients/` (putt-land-surveying, stamback-septic, jimmy,
  cascades-tucson, safesite, dataforth, design-and-brand-envoys, quantumwms,
  arizona-medical-transit, mvan-enterprises, horseshoe-management, reliant-well-drilling,
  grabb-durando, residential-renovation-engineering, tc-sorensen) — each with its 2026-07-08
  account change.
- Appended one correction entry to `errorlog.md`.

## Credentials & Secrets

None created or newly discovered. Used existing vaulted credentials via skills: Syncro per-user
API key (howard), ScreenConnect api_secret (`msp-tools/screenconnect.sops.yaml`), Discord bot
token (`projects/discord-bot/bot-token.sops.yaml`), GuruRMM auth (rmm-auth.sh).

## Infrastructure & Servers

- GuruRMM API: live `/api/agents` (via rmm-auth.sh); 475 agent rows, 2026-07-08.
- ScreenConnect: https://computerguru.screenconnect.com — 959 Access + 26 Support sessions.
- Syncro: https://computerguru.syncromsp.com/api/v1 — recurring schedules per customer.
- #ct-forum thread 1524553413629837444 (Discord) — the reconciliation Q&A.
- Deploy sites: Horseshoe GOLD-OCEAN-4982, T&C Sorensen IRON-FORGE-1700, RARE LIGHT-TIGER-4397,
  MVAN LOWER-FORGE-6736.

## Commands & Outputs

- Live RMM per-client counts: `curl /api/agents | jq group_by(client_name) unique hostnames`.
- SC fleet: `sc.py sessions --json` (959) ; online = ActiveConnections[].ProcessType==2 ;
  OS = .GuestInfo.OperatingSystemName.
- Enrolled per client: `rmm-search.sh -c "<client>" --json | jq .[].hostname`.
- Syncro billed GPS qty: `GET /schedules?customer_id=<cid>` -> `GET /schedules/<id>` -> sum GPS
  device SKUs (exclude AntiVirus/addon/discount/setup/trial).
- ask-forum background wait: `ask-forum.sh --wait <thread> --after <msg_id> --timeout 3600`.

## Pending / Incomplete Tasks

- NEXT SESSION (2026-07-09): push GuruRMM one-liner to the 4 reachable machines via
  `/screenconnect send-command --confirm` (site one-liner `iex (irm
  'https://rmm.azcomputerguru.com/install/<SITE_CODE>/windows')`), verify each via rmm-search.
- Get Mike/Winter ruling on Glaz-Tech (159 billed monthly / 88 RMM) and Brett Interiors
  (4 RMM / 3 billed, +1).
- Onsite queue: MVAN x3 (CPC-chris-UZR6E, DESKTOP-I7504C5, June's MacBook, MITCH-LAPTOP),
  Grabb x3 (GND-ASUSWS, GND-JEANNETTE, HOMEPC), Horseshoe x2 (HSM-RANDI, HSM-SURFACE),
  Reliant reconcile (~13 assets vs 9 billed), Multicultural x1, BSoT x1, Marc x1 (Mac),
  Heieck/Little Hearts/Andy's (no footprint).
- Optional: run `/wiki-compile` to refresh affected client articles from these logs.

## Reference Information

- Plan docs: `projects/gps-rmm-audit/{gps-master-status.md,tracker.md,onsite-check-list.md,targets.json}`.
- SC deploy method verified 2026-07-08 (memory `reference_rmm_deploy_via_screenconnect`,
  `/screenconnect` SKILL.md).
- Forum thread: 1524553413629837444. Winter Discord id 624666486362996755; Mike 264814939619721216.

## Update: 18:19 PT — pushed the 4 reachable machines

Pushed the GuruRMM self-enroll one-liner via `/screenconnect send-command --confirm` to the 4
SC-online Windows targets. Verified site codes against live GuruRMM (/api/sites, all Main) before
sending. Result: **3 of 4 enrolled** within a minute.

- Horseshoe / DESKTOP-5DD8C43 (GOLD-OCEAN-4982) — ENROLLED (agent ba35f3d6-3077-4ed4-af98-9f53877f066b). Horseshoe 6->7.
- Residential & Renovation / DESKTOP-83II6D8 (LIGHT-TIGER-4397) — ENROLLED (61f4be89-3c5f-40a6-a8bd-81a2a6d93088). RARE 0->1.
- MVAN / JUNE (LOWER-FORGE-6736) — ENROLLED (92f583bc-1095-400c-8cd3-2e15a881ab3d). MVAN 0->1.
- T & C Sorensen / SERVER (IRON-FORGE-1700) — **FAILED to enroll**. SC guest IS connected
  (ActiveConnections ProcessType==2 since 2026-07-05, GuestInfo current) so it is not a
  queue-on-reconnect; the install is not completing on the Server 2016 Essentials box. Sent
  twice, no enrollment after ~15 min. NEXT: diagnose (Get-CimInstance Win32_Processor / WMI,
  TLS egress, PS-via-SC output capture) — same class as SRV02 (2008 R2) / CP-QB (broken WMI).
  SC session 08eaff71-3dd7-4f75-999e-a598bfd355dc.

Lesson: SC "online" via ActiveConnections ProcessType==2 can persist for a connected-but-
unresponsive/failing guest; enrollment (rmm-search) is the only real confirmation — the send
returns `{}` regardless. Updated gps-master-status.md, onsite-check-list.md counts (Horseshoe 7,
MVAN 1, RARE 1; no-footprint now 3).
