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
This commit is contained in:
2026-05-27 11:24:50 -07:00
parent e2b77c489b
commit f94c0dfbe1
4 changed files with 100 additions and 1 deletions

View File

@@ -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.

View File

@@ -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.

View File

@@ -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`