Commit Graph

2325 Commits

Author SHA1 Message Date
4a246ff097 sync: auto-sync from HOWARD-HOME at 2026-07-13 16:10:13
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-13 16:10:13
2026-07-13 16:10:39 -07:00
cda32b53bb sync: auto-sync from HOWARD-HOME at 2026-07-13 11:13:45
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-13 11:13:45
2026-07-13 11:14:18 -07:00
f2f0fe0f70 sync: auto-sync from HOWARD-HOME at 2026-07-13 11:11:22
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-13 11:11:22
2026-07-13 11:11:54 -07:00
7291c5e691 sync: auto-sync from HOWARD-HOME at 2026-07-13 10:20:57
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-13 10:20:57
2026-07-13 10:21:31 -07:00
1ead30b6f1 radio: advance radio-show -> efccc61 (7/11 compiled show notes: fold in unaired 7/4 walk-through)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 09:09:26 -07:00
794c46bff1 sync: auto-sync from GURU-5070 at 2026-07-11 08:45:16
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-07-11 08:45:16
2026-07-11 08:45:54 -07:00
3770d52777 guru-scan: bump submodule -- RKill disabled by default + expanded whitelist
Points the guru-scan submodule at 11b5d85: RKill now default_disabled (opt in
via -IncludeRKill/-Scanners) so background scans don't kill the interactive
user, and the scanner whitelist now also covers Tailscale, ownCloud, Datto
Workplace, Seafile, and OpenVPN.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 08:07:23 -07:00
384f5967e9 sync: auto-sync from GURU-BEAST-ROG at 2026-07-10 18:44:07
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-07-10 18:44:07
2026-07-10 18:44:56 -07:00
285687d48d sync: auto-sync from GURU-BEAST-ROG at 2026-07-10 17:45:57
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-07-10 17:45:57
2026-07-10 17:48:58 -07:00
c72048d4d7 wiki: goldstein — DALLAS MSA->local account via ProfWiz fixed RDP (Mike) 2026-07-10 17:43:34 -07:00
d8941c56df wiki: compile goldstein (update) - fold OpenVPN/Site-Magic session log, refresh Active Work vs Syncro (#32384) 2026-07-10 17:27:49 -07:00
fe91b4ecfc sync: auto-sync from HOWARD-HOME at 2026-07-10 17:21:24
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-10 17:21:24
2026-07-10 17:21:55 -07:00
273eb150c8 sync: auto-sync from HOWARD-HOME at 2026-07-10 17:20:37
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-10 17:20:37
2026-07-10 17:21:06 -07:00
d1da1e5857 wiki: compile the-prairie-schooner (update) — migration paused state folded 2026-07-10 17:20:20 -07:00
8afd7ec9b7 syncro: record sandbox-cleanup findings (DELETE shapes, customer soft-delete, agent uninstall via msiexec)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 17:20:08 -07:00
269449d27c syncro: record that the public API has NO remote device-control/exec endpoint (GUI-only; execution goes through GuruRMM)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 17:13:43 -07:00
ae2ee346b5 syncro: Phase-2 deploy-agent + asset/RMM verified on a real device
deploy-agent proven end-to-end on RMM-TEST-MACHINE: vaulted Howard Test MSI URL -> GuruRMM
push (msiexec /qn, SYSTEM) -> Syncro service Running -> auto-enrolled as asset 12676769 under
the client + the policy folder embedded in the installer token (5092561) in ~1 min.
installed_applications populates fast; patches lag. POST /policy_folders {policy_folder}
requires parent_id (null->422); move-asset flip-restore verified on the real asset; DELETE
policy_folder works. Shapes + findings recorded.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 17:09:47 -07:00
1fa1a42092 syncro: Phase-1b breadth findings (leads/vendors/products/PO/worksheets)
Live-tested the remaining write resources on Howard Test. Recorded:
- wrapped response shapes (.lead.id/.vendor.id/.product.id/.purchase_order.id/
  .po_line_item.id/.worksheet_result.id) added to Verified Response Shapes.
- create_po_line_item requires product maintain_stock:true.
- worksheet templates live in GET /tickets/settings (.worksheet_templates[]), no standalone
  endpoint; need a valid worksheet_template_id.
- PUT /products requires name+description; leads/vendors/products/POs have NO DELETE (global
  test records persist -> GUI cleanup).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 16:46:47 -07:00
555e1ffd5a syncro: finalize deploy-agent (installer URL = per-client vaulted secret, MSI)
Decoded the Syncro RMM installer URL from 4 client samples:
base64(v1-{customer_id}-{A}-48753-{policy_folder_id}). 48753 = our account id (constant);
customer_id + policy_folder_id are API-readable; A is an unguessable per-client security token
NOT exposed anywhere in the API -> the URL is NOT constructible and must be harvested per client
and vaulted. Installer is an MSI -> deploy uses msiexec /qn /norestart.

deploy-agent now reads clients/<slug>/syncro-agent-installer (credentials.installer_url) from
the vault (cascades-tucson, grabb-durando, reliant, howard-test seeded) and pushes via GuruRMM.
Findings recorded in test-findings.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 16:46:47 -07:00
12bb9f1544 syncro: capture Phase-1 live-test findings (email-delivery trap + response shapes)
Test campaign on Howard Test sandbox (customer 36118743) surfaced traps the skill must not
re-learn:
- invoice/estimate email endpoints return 200 "Email sent" even with NO recipient
  (customer.email null) -> never report delivery from the 200; verify customer.email first.
- customer.email is UNIQUE tenant-wide; PUT /customers failure returns
  {success:false,message:[...]} not {customer:{...}} -> check .success.
- POST/PUT /contacts return a FLAT object (.id), not {contact:{...}}; contact recipient
  flags (primary/receives_invoices) are ignored via API.
- POST /contracts write succeeds but body doesn't echo the object; /contracts?customer_id
  doesn't filter server-side -> GET-verify + client-filter.

New living log .claude/standards/syncro/test-findings.md; critical items folded into
syncro.md Hard Rules + Verified Response Shapes. Correction logged to errorlog.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 16:46:46 -07:00
996041406c sync: auto-sync from GURU-5070 at 2026-07-10 15:57:23
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-07-10 15:57:23
2026-07-10 15:57:55 -07:00
1f56098652 syncro: expand skill to full Syncro API surface (assets/RMM/deploy) + verified capability model
Add comprehensive Syncro coverage beyond PSA core:
- New .claude/standards/syncro/api-reference.md: complete verified inventory of ~180
  endpoints across 38 resource types (generated from live OpenAPI 3.0 spec + tenant
  probe 2026-07-10), with worked GET/POST/PUT/DELETE templates and token-capability matrix.
- /syncro: asset read intelligence (patches, installed_applications), asset create/update,
  policy-folder move (move-asset), RMM alerts, and deploy-agent (hybrid installer push via
  GuruRMM using SyncroSetup --console --allow-force-reboot).
- move-asset ships a capability preflight (GET /policy_folders?customer_id -> 401 = missing
  Assets-Policy-Change) + mandatory post-write verify, because an under-scoped token returns
  HTTP 200 and silently no-ops the move.

Correct the "Syncro RMM is API-impossible" belief: it was a token-scope gap, not an API
limit. Live-verified the asset move (flip-and-restore 692253->692278->692253). Token scope
today: Howard + Winter full; Mike (vaulted ...ebbeb3) still 401 pending re-vault.

Corrects memory reference-syncro-rmm-api-gui-only; correction logged to errorlog.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 15:45:26 -07:00
46d2ae7a5b sync: auto-sync from HOWARD-HOME at 2026-07-10 15:11:39
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-10 15:11:39
2026-07-10 15:12:08 -07:00
830a86ea95 wiki: goldstein - full network + remote-access topology (UniFi gateways, Site Magic, OpenVPN, roaming playbook) (#32384) 2026-07-10 15:03:13 -07:00
a0690793bc guru-scan: bump gitlink to 3ca5ba7 (RKill whitelist + scan-log protection)
Point the superproject at the tested guru-scan commit: RKill -w process
whitelist (spares the PowerShell host + running GuruRMM/Syncro/Datto EDR/
ScreenConnect/Bitdefender/MSP360/Splashtop agents), Datto EDR folders added to
the HitmanPro/Emsisoft exclusion list, and cleanup guard so scan logs/archives
are never deleted.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 14:47:29 -07:00
0fdeabde3d sync: auto-sync from HOWARD-HOME at 2026-07-10 14:44:39
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-10 14:44:39
2026-07-10 14:45:46 -07:00
Winter Williams
df46f56e59 sync: auto-sync from GURU-BEAST-ROG at 2026-07-10 14:25:09
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-07-10 14:25:09
2026-07-10 14:25:55 -07:00
Winter Williams
299c053795 sync: auto-sync from GURU-BEAST-ROG at 2026-07-10 14:03:06
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-07-10 14:03:06
2026-07-10 14:03:53 -07:00
Winter Williams
8350a4aeaf sync: auto-sync from GURU-BEAST-ROG at 2026-07-10 13:15:01
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-07-10 13:15:01
2026-07-10 13:16:44 -07:00
1041db8587 sync: auto-sync from GURU-5070 at 2026-07-10 12:36:41
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-07-10 12:36:41
2026-07-10 12:37:18 -07:00
ebeb0ec1f6 wiki: compile instrumental-music-center (update) — refresh prepaid hours (10.0), fold 2026-07-08 log source, bump last_compiled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 11:20:28 -07:00
ecc0c8cd82 sync: auto-sync from HOWARD-HOME at 2026-07-10 11:12:18
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-07-10 11:12:18
2026-07-10 11:12:54 -07:00
Winter Williams
07404759f3 sync: auto-sync from GURU-BEAST-ROG at 2026-07-10 10:06:22
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-07-10 10:06:22
2026-07-10 10:07:09 -07:00
Winter Williams
3286a47090 sync: auto-sync from GURU-BEAST-ROG at 2026-07-10 09:58:26
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-07-10 09:58:26
2026-07-10 09:59:18 -07:00
f95809cd9d sync: auto-sync from Mikes-MacBook-Air.local at 2026-07-10 09:04:22
Author: Mike Swanson
Machine: Mikes-MacBook-Air.local
Timestamp: 2026-07-10 09:04:22
2026-07-10 09:04:29 -07:00
e78152a706 sync: auto-sync from Mikes-MacBook-Air.local at 2026-07-10 08:30:31
Author: Mike Swanson
Machine: Mikes-MacBook-Air.local
Timestamp: 2026-07-10 08:30:31
2026-07-10 08:30:39 -07:00
017dcdf04c voip: VWP park extension 107 (Payroll) - shared mailbox
Extension 107 (Payroll) marked as PARKED pending decision on shared mailbox setup.
Removed from CSV bulk import (11 -> 10 users).
Updated all documentation to reflect new counts: 13 matched, 1 shared, 4 parked.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:59:00 -07:00
2f35163866 harness: read Syncro keys from vault, stop hardcoding the repo root
Two defects found while running /wiki-compile, both from tooling assuming
a path instead of resolving it.

1. Plaintext Syncro API keys. Mike's and Howard's live PSA keys were
   copy-pasted into three command files, a script, and two catalog docs --
   despite both already being vaulted at msp-tools/syncro and
   msp-tools/syncro-howard. Replaced with reads from the SOPS vault via a
   new sourced helper, .claude/scripts/syncro-env.sh. Write paths fail
   closed; read-only paths degrade to skipped enrichment rather than a
   wrong key. Per-user mapping is unchanged, so Syncro attribution is too.

2. Hardcoded repo root. wiki-compile/wiki-lint/inject-standards and
   gen_b64.py hardcoded D:/claudetools; this machine is C:/claudetools.
   syncro.md also read ~/.claude/identity.json before the repo copy -- the
   same bug that made remediation-tool's consent-audit report a fully
   consented tenant as RED. Root now resolves from the script's own
   location, with identity.json claudetools_root as the override.

get-identity.sh had a chicken-and-egg bug: it read ${CLAUDETOOLS_ROOT:-.}
but never set it, so every caller had to already know the root. It now
self-resolves and exports CLAUDETOOLS_ROOT + VAULT_ROOT.

Verified: all three command setup blocks authenticate against live Syncro;
get-identity.sh works from any cwd and honors a pre-set root; gps-rmm
autoenroll resolves its key from the vault. security-review: no findings.

NOTE: both keys remain valid in git history. Rotation in the Syncro portal
is the required follow-up -- this commit does not resolve that exposure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 07:56:33 -07:00
c34cdb3a39 voip: VWP note phone MAC assignments for Kayla and Jesse III
Extension 109 (Kayla Guerrero) - Phone MAC last 4: 73b7
Extension 117 (Jesse III) - Phone MAC last 4: 6cf5

Documented for device assignment workflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:55:32 -07:00
ec1cb40b62 voip: VWP note phone MAC assignment for Chris
Extension 113 (Chris Guerrero) - Phone MAC last 4: 755b

Documented for device assignment workflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:49:42 -07:00
f9b44cfb68 voip: VWP note phone MAC assignment for Tammy
Extension 106 (Tammy) - Phone MAC last 4: 6a36

Documented for device assignment workflow after second CSV batch.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:49:14 -07:00
1ca456b03f voip: VWP note phone MAC assignment for Rose
Extension 103 (Rose Guerrero) - Phone MAC last 4: 5217

Documented for device assignment workflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:43:26 -07:00
250eb8ecfe voip: VWP note phone MAC assignment for Ron
Extension 110 (Ron Winger) - Phone MAC last 4: 6509

Documented for device assignment workflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:42:42 -07:00
5641532429 voip: VWP note phone MAC assignment for J.R.
Extension 105 (J.R. Guerrero) - Phone MAC last 4: 7441

Documented for device assignment workflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:41:52 -07:00
1b0eeb5595 voip: VWP note phone MAC assignment for Ty
Extension 114 (Ty Fetters) - Phone MAC last 4: 6d01

Documented for device assignment workflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:41:21 -07:00
b4972497a7 voip: VWP note phone MAC assignment for Kitchen shared phone
Extension 111 (Kitchen) - Phone MAC last 4: 958e
Shared phone extension (no M365 account required)
Updated counts: 3 extensions parked (down from 4)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:40:43 -07:00
a70ec28bdc voip: VWP note phone MAC assignment for Shelly
Extension 104 (Shelly) - Phone MAC last 4: 96b8

Documented for device assignment workflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:39:02 -07:00
7f8fb5d9c5 voip: VWP note phone MAC assignment for Toni
Extension 115 (Toni) - Phone MAC last 4: 6cf9

Documented for device assignment workflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:38:25 -07:00
d477970ab8 voip: VWP note phone MAC assignments for Jesse Sr and Bart
Extension 102 (Jesse Sr) - Phone MAC last 4: 7559
Extension 116 (Bart) - Phone MAC last 4: a890

Documented for device assignment workflow.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-07-10 07:37:01 -07:00
522594dedb wiki: compile cascades-tucson (update)
Fold 4 session logs since last_compiled=2026-07-01:
- 2026-07-02 caregiver phone login / PSO-Caregivers FGPP
- 2026-07-02 Shelby Trozzi Company Web Docs share + mapped drive
- 2026-07-09 Charity Menle caregiver rename
- 2026-07-09 Chris Knight accounting mailbox delegation

Surgical update mode (not --full): 735 of 739 lines left byte-for-byte
intact. Adds Company Web Docs share record, Shelby vault path (path only),
4 History rows; refreshes Syncro hours/tickets (37.5 hrs, 0 open).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 07:36:49 -07:00