From f94c0dfbe1c2c0068f9229ed084a19891aae68f6 Mon Sep 17 00:00:00 2001 From: Howard Enos Date: Wed, 27 May 2026 11:24:50 -0700 Subject: [PATCH] sync: auto-sync from HOWARD-HOME at 2026-05-27 11:24:44 Author: Howard Enos Machine: HOWARD-HOME Timestamp: 2026-05-27 11:24:44 --- .claude/memory/MEMORY.md | 1 + .claude/memory/feedback_command_formatting.md | 12 +++ projects/msp-tools/guru-rmm | 2 +- session-logs/2026-05-27-howard-session.md | 86 +++++++++++++++++++ 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 .claude/memory/feedback_command_formatting.md diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md index 57fae8f..a753ee2 100644 --- a/.claude/memory/MEMORY.md +++ b/.claude/memory/MEMORY.md @@ -55,6 +55,7 @@ - [GuruRMM dev is Mike's, not Howard's](feedback_rmm_dev_is_mike.md) — Never route RMM dev/bug coord notes to Howard (0 RMM commits by him). Howard only submits RMM feature requests; GuruScan is his project, RMM is not. - [Syncro is the default PSA; Autotask is opt-in](feedback_psa_default_syncro.md) — Ticketing/billing/customers default to Syncro (/syncro). Only use /autotask on an explicit "in Autotask" request. /autotask kept local/undistributed. +- [Command Formatting](feedback_command_formatting.md) — Always multi-line scripts, never one-liners; one-liners wrap in chat and break on copy-paste ## Machine - [GURU-5070 Workstation Setup](reference_workstation_setup.md) - Mike's primary (owner confirmed 2026-05-26). Windows 11 Pro. Renamed from OC-5070 → ACG-5070/acg-guru-5070 → GURU-5070; all the same box, all Mike's. diff --git a/.claude/memory/feedback_command_formatting.md b/.claude/memory/feedback_command_formatting.md new file mode 100644 index 0000000..06c7a26 --- /dev/null +++ b/.claude/memory/feedback_command_formatting.md @@ -0,0 +1,12 @@ +--- +name: feedback-command-formatting +description: Howard needs commands formatted as multi-line scripts, not one-liners — one-liners wrap in the chat window and break when copy-pasted +metadata: + type: feedback +--- + +Always write shell/PowerShell commands as multi-line scripts, never as semicolon-separated one-liners. + +**Why:** When long one-liners are displayed in the Claude chat window, they wrap visually. When Howard copy-pastes them (e.g. into ScreenConnect), the line breaks become real newlines, breaking operators like `&` onto their own lines and causing parse errors (e.g. "AmpersandNotAllowed"). + +**How to apply:** Any time you're giving Howard a PowerShell or shell command longer than ~60 characters, write it as a multi-line script in a code block. Each statement on its own line. No semicolons to chain statements — use newlines instead. diff --git a/projects/msp-tools/guru-rmm b/projects/msp-tools/guru-rmm index b346b7b..51a7e6c 160000 --- a/projects/msp-tools/guru-rmm +++ b/projects/msp-tools/guru-rmm @@ -1 +1 @@ -Subproject commit b346b7ba05d536a4b01996499b982c89456dadce +Subproject commit 51a7e6c6bc2593cf952ca4737952d15c6c5713d0 diff --git a/session-logs/2026-05-27-howard-session.md b/session-logs/2026-05-27-howard-session.md index 16221f4..fc4eb8f 100644 --- a/session-logs/2026-05-27-howard-session.md +++ b/session-logs/2026-05-27-howard-session.md @@ -103,3 +103,89 @@ Standout UX idea (Q16): log deduplication — repeated identical errors on the s - Coord message to Mike: ID `fd6da8b3-b87e-4936-a341-c67a0d50fcb9`, priority high - GuruRMM API base: `http://172.16.3.30:3001/api` - Gitea webhooks: `GET https://git.azcomputerguru.com/api/v1/repos/azcomputerguru/gururmm/hooks` + +--- + +## Update: 10:25 PT — Sif-oidak Setup + Factory-Clone Device ID Bug + +### Summary + +Resumed after context compaction. Howard had run a fresh-install script on SIF-Laptop554 to try to separate it from SIF-Laptop555, which were colliding on the same agent record due to identical factory MachineGuids. The script deleted `.device-id`, `agent.toml`, and the binary before reinstalling, but the workaround failed silently: the installer served the old v0.6.43 binary which still reads MachineGuid first and ignores `.device-id` on first install. Both machines still had `device_id: win-83e84dca`. + +Identified the residual root cause: the c347c6b fix (persisted file wins over hardware ID) only prevents reinstall collisions — it does not prevent FIRST-INSTALL collisions when two machines share the same factory MachineGuid and neither has a `.device-id` yet. The correct fix is to drop hardware ID seeding entirely and always generate a random UUID v4 on first install. + +Committed `51a7e6c` to GuruRMM — removed all `get_hardware_device_id()` implementations (Windows/Linux/macOS/fallback) from `agent/src/device_id.rs`. `get_device_id()` now: reads persisted file (returns immediately if found), otherwise generates UUID v4, persists it, returns. Hardware identifiers are no longer consulted at any point. + +For the immediate workaround (current v0.6.43 binary still reads MachineGuid), changed the MachineGuid registry value on SIF-Laptop554 to a newly generated GUID `f0fae6b3-3dc8-4905-81f2-e63ead4741e3`, deleted `.device-id`, and restarted the agent service. This forced 554 to register as a new agent record (`ce868d0f`) with `device_id: win-f0fae6b3`. The old record (`acb14901`, `win-83e84dca`) now belongs to SIF-Laptop555 exclusively and will update its hostname to "Sif-Laptop555" on next 555 heartbeat. Verified both records online under the Sif-oidak site. + +Sent Mike a coord message (346ede45) explaining the residual issue, the code fix, and the registry workaround used. + +### Key Decisions + +- **Dropped hardware ID seeding entirely rather than patching priority again** — the persisted file already provides reinstall stability. Hardware IDs provide zero additional value and are the source of factory-clone collisions. Removing them is cleaner than adding special-case logic to detect cloned IDs. +- **Registry MachineGuid change as workaround** — only viable option with the current deployed binary (which ignores `.device-id` on first install). Pre-seeding `.device-id` would have required the new binary. Changing MachineGuid is a one-time setup step on 554 and has no downstream impact since GuruRMM no longer reads it. +- **Appended to existing 2026-05-27-howard-session.md** — same-day continuation, not a new file. + +### Problems Encountered + +- **Fresh-install script on 554 did not separate the agents** — because the downloaded binary was still old v0.6.43. Deleting `.device-id` only helps if the binary prioritizes the persisted file; old code reads MachineGuid first regardless. Resolution: identified root cause, committed proper fix (51a7e6c), used registry MachineGuid change as immediate workaround. +- **c347c6b (persisted wins over hardware) did not fully solve factory clone** — priority swap prevents reinstall collisions but not first-install collisions when `.device-id` is absent on both machines. Resolution: 51a7e6c removes hardware seeding entirely. + +### Configuration Changes + +- `agent/src/device_id.rs` — MODIFIED: removed all `get_hardware_device_id()` functions and hardware seeding path. `get_device_id()` now generates random UUID v4 on first install unconditionally. Committed `51a7e6c`. +- `HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid` on **SIF-Laptop554** — changed from factory value to `f0fae6b3-3dc8-4905-81f2-e63ead4741e3` (workaround for current binary). + +### Infrastructure & Servers + +- **Sif-oidak District — GuruRMM client:** `91dbd56d-ce59-4b98-8b09-22c6267f864c` +- **Sif-oidak Main Office — GuruRMM site:** `dfb6cf3e-8e12-4010-8330-9addf2b63ac2` | enrollment key: `CALM-STORM-1968` +- **SIF-Laptop554** — agent `ce868d0f`, device_id `win-f0fae6b3-3dc8-4905-81f2-e63ead4741e3`, online, v0.6.43 +- **SIF-Laptop555** — agent `acb14901`, device_id `win-83e84dca-0cac-4a02-83c7-5b13c2a85aea`, hostname will update to "Sif-Laptop555" on next heartbeat +- **GuruRMM server:** `http://172.16.3.30:3001` — running v0.3.31 + +### Commands & Outputs + +```powershell +# Workaround run on SIF-Laptop554 to force unique device ID +Stop-Service GuruRMMAgent -Force -ErrorAction SilentlyContinue +Stop-Service GuruRMMWatchdog -Force -ErrorAction SilentlyContinue +Get-Process gururmm-agent -ErrorAction SilentlyContinue | Stop-Process -Force +Start-Sleep -Seconds 2 +$g = [System.Guid]::NewGuid().ToString() +reg add "HKLM\SOFTWARE\Microsoft\Cryptography" /v MachineGuid /t REG_SZ /d $g /f +Remove-Item "C:\ProgramData\GuruRMM\.device-id" -Force -ErrorAction SilentlyContinue +Start-Service GuruRMMAgent +# Output: The operation completed successfully. +# New MachineGuid: f0fae6b3-3dc8-4905-81f2-e63ead4741e3 + +# Verified two separate agents under dfb6cf3e after workaround: +# ce868d0f Sif-Laptop554 win-f0fae6b3 created 18:21:47 online +# acb14901 (Sif-Laptop555) win-83e84dca created 17:26:59 online +``` + +``` +# GuruRMM commits (device_id fixes): +c347c6b fix(agent): persisted device ID wins over hardware ID to prevent factory-clone collisions +51a7e6c fix: drop hardware ID seeding — always generate random UUID on first install +``` + +### Pending / Incomplete Tasks + +- **SIF-Laptop555 hostname:** Record `acb14901` still shows "Sif-Laptop554" — will auto-correct to "Sif-Laptop555" on next 555 heartbeat. No action needed. +- **New agent binary deploy:** `51a7e6c` needs to build and deploy before fresh installs on new machines get the fully clean fix. Mike is handling CI/build pipeline. +- **localadmin password on both SIF laptops:** Still unknown. Need Howard to set it so UAC prompts work for "Sif" standard user and credentials can be vaulted. +- **UAC fix on both SIF laptops:** Standard user "Sif" gets a Close button instead of a credential prompt for admin actions. Root cause: blank localadmin password. Fix: set localadmin password → test UAC prompt works → vault credentials. +- **Make localadmin selectable at Windows login screen** on both laptops. +- **Vault SIF laptop credentials:** Sif / SifSif (user); localadmin / TBD (admin). Path TBD under `clients/sif-oidak/`. +- **Syncro assets:** Created for both laptops (from session-start context). Verify they are linked correctly. +- **MAINTENANCE-PC agent:** Still on v0.6.27; LHM fix pending agent binary update. + +### Reference Information + +- GuruRMM device_id fix commits: `c347c6b`, `51a7e6c` +- Coord message to Mike (device_id follow-up): `346ede45-b005-41b2-b066-bd7042a221c1` +- Sif-oidak GuruRMM client: `91dbd56d` | site: `dfb6cf3e` | enrollment key: `CALM-STORM-1968` +- Sif-Laptop554 new agent ID: `ce868d0f` | new device_id: `win-f0fae6b3-3dc8-4905-81f2-e63ead4741e3` +- Sif-Laptop555 agent ID: `acb14901` | device_id: `win-83e84dca-0cac-4a02-83c7-5b13c2a85aea` +- Syncro customer: `https://computerguru.syncromsp.com/customers/7694718`