From e08488ae5ec65a0a8016993b26e0f0a00c73e942 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Thu, 4 Jun 2026 19:08:16 -0700 Subject: [PATCH] sync: auto-sync from GURU-5070 at 2026-06-04 19:08:11 Author: Mike Swanson Machine: GURU-5070 Timestamp: 2026-06-04 19:08:11 --- .gitignore | 3 ++ ...026-06-03-website-security-assessment.docx | Bin 0 -> 69020 bytes .../session-logs/2026-06-04-session.md | 38 ++++++++++++++++++ wiki/index.md | 2 +- wiki/projects/guru-rmm.md | 29 +++++++++++++ wiki/projects/gururmm.md | 37 ++++++++++++----- 6 files changed, 98 insertions(+), 11 deletions(-) create mode 100644 clients/glaztech/reports/2026-06-03-website-security-assessment.docx create mode 100644 wiki/projects/guru-rmm.md diff --git a/.gitignore b/.gitignore index f7b3d7d..7f35f67 100644 --- a/.gitignore +++ b/.gitignore @@ -103,3 +103,6 @@ clients/internal-infrastructure/datto-bsod-case-2026-05-16.zip clients/internal-infrastructure/datto-bsod-case-2026-05-16/ temp/ + +# Microsoft Office temp/lock files +~$* diff --git a/clients/glaztech/reports/2026-06-03-website-security-assessment.docx b/clients/glaztech/reports/2026-06-03-website-security-assessment.docx new file mode 100644 index 0000000000000000000000000000000000000000..dde6e59b32eabf4eb36ced9f12ca0e9ad46507d9 GIT binary patch literal 69020 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

!ug0ihN@?|i9Kle7MBd6rag3N*l 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 Kg$A}V!2bhqQ(&6_ literal 0 HcmV?d00001 diff --git a/clients/glaztech/session-logs/2026-06-04-session.md b/clients/glaztech/session-logs/2026-06-04-session.md index 01b68b7..746ebbd 100644 --- a/clients/glaztech/session-logs/2026-06-04-session.md +++ b/clients/glaztech/session-logs/2026-06-04-session.md @@ -106,3 +106,41 @@ Ran a collaborative gap-analysis loop (Claude + Grok CLI, 4 Grok turns on sessio ### Reference Information - Grok session `019e9351-ed1c-7bc3-b171-b4cf4b53745d`; SQL host `GTI-INV-SQL` `192.168.8.62,3436` (instance `GTISQL`). - Coord todos `6d15fc88-db4f-4a35-a76a-a5a6a9f50795`, `aebaf751-d778-423f-a84b-314fbb294f30`. + +--- + +## Update: 19:07 PT — Glaztech infra remediation blitz via RMM (dev-tool removal, web hardening, domain time fix, ACL, sa) + +### Session Summary +Executed a large batch of Glaztech remediation through GuruRMM. WWW was already enrolled; mid-session Mike enrolled the **DCs + SQL server**, which unlocked the domain/SQL-side work. All actions were RMM-driven, verified, and caused **no outages**. Several changes were scheduled (off-hours) with backup + health-check + auto-rollback. One acute item (msdb plaintext domain-admin removal) is **paused awaiting method approval**. + +### Completed (all verified, no outage) +- **Dev tooling removed from WWW (H1):** VS 2015 + 2022 (~15.6 GB reclaimed, via bootstrapper `/uninstall /quiet /norestart`), IIS Express, Notepad++, OpenSSL, RealDownloader (+ scheduled task). Archived D7x (`D:\d7`, `D:\d7x Resources`), `D:\3rd Party Tools`, `D:\Scripts`, `D:\bin` (CyberSource SDK sample), and web-root `Old_code`/`Old_bin`/26 `.pdb` to **`D:\_removed_devtools_2026-06-04\`** (reversible). One-time reboot finalized the VS `PendingFileRenameOperations` (cleared). +- **WWW Web.config hardening** (scheduled task `ACG-WebConfigHarden-20260604` @ box-17:05, applied + survived the 17:15 reboot): `debug=false`; security headers `X-Content-Type-Options: nosniff`, `X-Frame-Options: SAMEORIGIN`, `Referrer-Policy: strict-origin-when-cross-origin`, `Strict-Transport-Security: max-age=31536000`; `httpCookies httpOnlyCookies=true requireSSL=true`; **CORS scoped to `` (Origin:* Methods:GET)** and the site-wide wildcard CORS removed. Backup `D:\web\glaztech_4\Web.config.bak-20260604-170500`. Live headers verified. +- **Domain time fixed end-to-end:** PDC **GTI-INV-DC** was syncing from the Hyper-V host (VM IC provider) and drifting → re-pointed to **external NTP (pool.ntp.org)**, `VMICTimeProvider` disabled, marked reliable. **GTI-INV-DC1** → follows PDC. **WWW** (was `Local CMOS Clock`/free-running, ~8 min slow) re-registered (`w32tm /unregister`+`/register`) → PDC, clock **stepped +8 min**. **GTI-INV-SQL** → DC1. All four converged within ~3 s. Kerberos-skew resolved. +- **WWW `Everyone:(R)` ACL (E1):** removed from **`Web.config` + `bin`** (granted `IIS_IUSRS` + `IIS APPPOOL\glaztech_new` RX first; site stayed HTTP 301). Public static content (`emails/`,`images/`) left as a low-priority slower sweep. +- **GTI-INV-SQL: built-in `sa` disabled** (re-check showed **0 real user sessions**; the 29 "active" sessions were all `is_user_process=0` system sessions). Done via WWW's app `tom` connection (SYSTEM-on-SQL is not sysadmin). + +### Key Findings +- **WWW clock** was never syncing (free-running) — ~6–8 min slow; surfaced when Mike noticed it. **PDC** itself was VM-host-timed, not NTP. +- **Forest = `glaztech.local` (root) + `glaztech.com` (child).** **NS4.glaztech.local holds the Schema-master FSMO but is a DEAD server** (per Mike) → orphaned FSMO; external NTP on GTI-INV-DC is correct (can't chain to dead root). +- **CORS:** the wildcard `Access-Control-Allow-Origin: *` was only used by cross-origin loads of `/emails/` assets (IIS logs: 188 OPTIONS, 181 → `/emails/`; none to the API/payment surface) → scoped to `/emails`. +- **msdb cleartext cred:** **11 TSQL backup-copy job steps** embed `net use \\192.168.8.52|.212\sql_backup\... /user:glaztech\administrator /persistent:yes` + a `copy`. They run as the SQL **engine** service account (machine acct, no share access) → can't just blank the creds. **0 existing SQL credentials/proxies; SQL Agent service account = `Administrator@glaztech.com` (domain admin).** + +### Key Decisions +- **Web.config / ACL health checks must hit the real binding `http://192.168.8.72/` (Host: www.glaztech.com), NOT `127.0.0.1`** — the site binds to the LAN IP only. Caught + fixed the scheduled apply's health check at box-17:03, ~90 s before the 17:05 run (the 127.0.0.1 check would have false-rolled-back the change). **Reusable rule for future WWW scripts.** +- ACL fix scoped to `Web.config`+`bin` (the secrets/assemblies) instead of a slow full-tree `/T` (static content is public anyway). +- All scheduled/unattended changes built with backup + post-change health-check + auto-rollback; reachability-gated for the PDC NTP change (rollback to host time if NTP unreachable — it was reachable). + +### PENDING — pick up next session +- **msdb plaintext removal — AWAITING GO on method.** Recommended: **SQL Credential + Agent CmdExec proxy** (encrypt the pw in `sys.credentials`, convert the 11 steps to CmdExec-under-proxy, drop inline creds; decoupled from Agent privilege; `ALTER CREDENTIAL` after rotation). Alt: `cmdkey` + strip inline. Test-first + snapshot originals to admin-only file (deleted after) + verify a copy works. +- **Rotate `glaztech\administrator`** — Mike coordinating with **Steve** (deferred). Identify all consumers first. +- Gated/heavier: **disable `xp_cmdshell`** (blocked until the 11 backup-copy steps are reworked — they depend on it); **disable TLS 1.0/1.1 on WWW** (needs reboot); **full web-root `Everyone` sweep** (low pri); **seize/clean Schema-master FSMO off dead NS4**; de-privilege the SQL Agent account. +- WWW one-time scheduled tasks `ACG-WebConfigHarden-20260604` + `ACG-Reboot-VSCleanup-20260604` both fired Result=0 (can be deleted or left). + +### Infrastructure / Reference +- **Glaztech RMM agents** (client "Glaztech Industries"): `WWW` 455a1bc7 (site TUS-Tucson), `GTI-INV-DC` 0337e973 (**PDC**, INV-Involta), `GTI-INV-DC1` ffcaafac, `GTI-INV-SQL` 869e56b4. (NOT Glaztech: `SAGE-SQL`=Dataforth, `ACG-DC16`=ACG, `VWP-DC1`=VWP.) +- Domain `glaztech.com` (member servers); forest root `glaztech.local` (NS4, dead). Backup file servers `\\192.168.8.52\sql_backup`, `\\192.168.8.212\sql_backup`. SQL instance `GTISQL` @ `192.168.8.62,3436`. +- On-WWW logs: `C:\temp\{vs_uninstall, devtools_groupB, groupC, acl_fix, acl_fix2, sa_via_tom, webconfig_apply}.log`; on DCs/SQL: `C:\temp\timefix_*.log`. +- Local scripts (this machine): `C:\Users\guru\AppData\Local\Temp\grok_glaztech\*.ps1`. +- Coord locks held: `clients/glaztech:glaztech/domain-time` (61cd25f2), `clients/glaztech:WWW/devtools-removal` (c4226bac). diff --git a/wiki/index.md b/wiki/index.md index 6f8c09e..7faee52 100644 --- a/wiki/index.md +++ b/wiki/index.md @@ -54,7 +54,7 @@ Run `/wiki-lint` to check for stale entries and broken backlinks. | Article | Summary | Last Compiled | |---|---|---| -| [GuruRMM](projects/gururmm.md) | RMM platform, Rust/Axum server + React dashboard + cross-platform agent; agent v0.6.51 / server v0.3.37; 55 enrolled agents; Windows BSOD detection shipped; server build wired into webhook; active development | 2026-06-02 | +| [GuruRMM](projects/gururmm.md) | RMM platform, Rust/Axum server + React dashboard + cross-platform agent; stable fleet pinned v0.6.47; lone beta agent GURU-5070 on v0.6.54 (per-agent channel override); server v0.3.37; 55 enrolled agents; tray BUG-020 (duplicate/ghost icons) fixed to beta (commit 137dd85); active development | 2026-06-04 | | [Dataforth DOS — Test Datasheet Pipeline](projects/dataforth-dos.md) | DOS update system + TestDataDB pipeline (Node.js, PostgreSQL, Hoffman API); 469K records, 458.5K live on website; 2025 crypto attack recovery; security incident 2026-03-27; SCMVAS/SCMHVAS extension; email notifications via Graph API | 2026-05-24 | | [ClaudeTools Discord Bot](projects/discord-bot.md) | Claude Agent SDK bot in Discord; one persistent session per thread; Phase 1.5 complete (native tools, no hand-written tools); Phases 2-4 (API integration, remediation, UX) pending; runs as NSSM service on BEAST | 2026-05-24 | | [The Computer Guru Show](projects/radio-show.md) | Radio show archive processing pipeline (Whisper + pyannote + SQLite FTS5) + post-show content workflow; 572 episodes indexed; FastAPI UI redesigned; Jupiter audio-file gap open | 2026-05-24 | diff --git a/wiki/projects/guru-rmm.md b/wiki/projects/guru-rmm.md new file mode 100644 index 0000000..600941e --- /dev/null +++ b/wiki/projects/guru-rmm.md @@ -0,0 +1,29 @@ +--- +type: redirect +name: guru-rmm +display_name: "GuruRMM (redirect → gururmm)" +canonical: gururmm +tombstone: true +last_compiled: 2026-06-04 +compiled_by: GURU-5070/claude-main +--- + +# guru-rmm → **gururmm** (redirect) + +**This is not the article. The GuruRMM project article is [[gururmm]] (`wiki/projects/gururmm.md`).** + +## Why this file exists + +There are two spellings of the project slug, and they do not match: + +| Context | Spelling | +|---|---| +| On-disk project directory / submodule | `projects/msp-tools/guru-rmm/` (**hyphenated**) | +| Gitea repo | `azcomputerguru/gururmm` (**no hyphen**) | +| Wiki article slug | `gururmm` (**no hyphen**) | + +Anyone (human or Claude) who infers the wiki slug from the directory name searches +`guru-rmm` and gets nothing — the article is at `gururmm.md`. This tombstone makes the +hyphenated lookup resolve instead of dead-ending. + +**Go to [[gururmm]].** diff --git a/wiki/projects/gururmm.md b/wiki/projects/gururmm.md index 474ac7a..519a998 100644 --- a/wiki/projects/gururmm.md +++ b/wiki/projects/gururmm.md @@ -2,8 +2,10 @@ type: project name: gururmm display_name: GuruRMM -last_compiled: 2026-06-02 +last_compiled: 2026-06-04 compiled_by: GURU-5070/claude-main +aliases: + - guru-rmm sources: - "gururmm@main: server/src/api/*.rs (REST API surface, ~30 route modules)" - "gururmm@main: agent/src/ (agent capabilities; transport/CommandContext, ohw.rs, watchdog/wts.rs, bsod.rs)" @@ -14,6 +16,7 @@ sources: - "gururmm@main: agent/src/bsod.rs" - "gururmm@main: deploy/build-pipeline/webhook-handler.py" - "gururmm@main: deploy/build-pipeline/build-server.sh" + - "gururmm@main: commit 137dd85 (BUG-020 tray fix: single-instance mutex + WTSEnumerateProcessesW reconciliation + graceful shutdown event)" - projects/msp-tools/guru-rmm/CONTEXT.md - projects/msp-tools/guru-rmm/docs/FEATURE_ROADMAP.md - projects/msp-tools/guru-rmm/docs/UI_GAPS.md @@ -46,6 +49,7 @@ sources: - session-logs/2026-05-24-GURU-KALI-session.md - session-logs/2026-05-31-howard-gururmm-roadmap-and-features.md - session-logs/2026-06-02-mike-bsod-detection-and-pipeline.md + - "live GuruRMM Postgres query 2026-06-04: agents/sites/update_rollouts/agent_updates tables (channel verification)" backlinks: - clients/cascades-tucson - systems/gururmm-build @@ -59,7 +63,9 @@ backlinks: GuruRMM is a Remote Monitoring & Management platform built by Arizona Computer Guru LLC for internal MSP operations and eventual productization. The server (Rust/Axum) and dashboard (React/TypeScript) are production-deployed at https://rmm.azcomputerguru.com with approximately 55 enrolled agents across multiple client sites. The agent runs on managed Windows, Linux, and macOS endpoints. -**Current version:** agent 0.6.51 / server 0.3.37 as of 2026-06-02. Fleet converged to 0.6.51. Note: committed changelogs are stale (stop at agent v0.6.22 / server v0.3.1) — migrations + commit log are the authoritative feature record, not changelogs. +**Current version:** agent 0.6.54 (beta) / 0.6.47 (stable) / server 0.3.37 as of 2026-06-04. Fleet on stable target 0.6.47 (pinned 2026-05-28); GURU-5070 is the lone beta agent (explicit per-agent override), running 0.6.54 and auto-riding each new beta build. Note: committed changelogs are stale (stop at agent v0.6.22 / server v0.3.1) — migrations + commit log are the authoritative feature record, not changelogs. + +**See also:** `wiki/projects/guru-rmm.md` is a redirect tombstone pointing here (slug disambiguation: on-disk directory is `guru-rmm` hyphenated; wiki and Gitea repo use `gururmm` no-hyphen). **Repo:** `azcomputerguru/gururmm` on Gitea (internal: http://172.16.3.20:3000). The copy at `D:\claudetools\projects\msp-tools\guru-rmm` is a git submodule tracking the active `azcomputerguru/gururmm` repo; the pinned pointer normally lags `main` (expected). Development happens in the submodule working tree and changes are committed and pushed to Gitea from there. @@ -135,7 +141,7 @@ Agent↔server communication is a persistent authenticated WebSocket with auto-r |---|---|---|---| | Server | 172.16.3.30:3001, systemd `gururmm-server`, binary `/usr/local/bin/gururmm-server` | Rust, Axum | deployed, production | | Dashboard | https://rmm.azcomputerguru.com, nginx at `/var/www/gururmm/dashboard/` | React + TypeScript + Vite, shadcn/ui, Tailwind CSS v4 | deployed, production | -| Agent (Windows) | Endpoints, installed as `GuruRMMAgent` Windows service via WiX MSI | Rust, Windows MSVC | deployed, fleet on 0.6.51 | +| Agent (Windows) | Endpoints, installed as `GuruRMMAgent` Windows service via WiX MSI | Rust, Windows MSVC | deployed; stable fleet on 0.6.47; GURU-5070 (beta) on 0.6.54 | | Agent (Linux) | Endpoints, systemd `gururmm-agent`, binary `/usr/local/bin/gururmm-agent` | Rust, musl static | deployed | | Agent (macOS) | Endpoints, LaunchDaemon `com.azcomputerguru.gururmm-agent.plist` | Rust, aarch64/x86_64 | Phase 1 deployed 2026-05-12; code signing issue on Apple Silicon | | Tray (Windows) | System tray, named pipe IPC | Rust | deployed | @@ -204,8 +210,9 @@ gururmm/ ### Current Focus -As of 2026-06-02 (agent 0.6.51 / server 0.3.37): +As of 2026-06-04 (agent 0.6.54 beta / 0.6.47 stable / server 0.3.37): +- **BUG-020 — tray duplicate/ghost icons (fixed to beta, 2026-06-04):** Commit `137dd85` shipped to main → beta. Fix #1: per-session `Local\GuruRMM_Tray` single-instance mutex in the tray binary. Fix #2: `TrayLauncher` reconciliation via `WTSEnumerateProcessesW` (idempotent across watchdog restarts). Fix #3: graceful `Global\GuruRMM_TrayShutdown_{sid}` event → 3s wait → `TerminateProcess` fallback (so `NIM_DELETE` fires and ghost icon is cleaned). [NOTE: Fix #3 is implemented but dormant — `terminate_all` has no caller in the agent yet. Tracked in coord todo `25fdf31a` to wire into the watchdog policy-disable/uninstall path.] - **BSOD detection Phase 2/3 (deferred):** Dashboard "Crashes" tab + BSOD in Alerts stream (issue #10, dashboard bullets unchecked); `fetch_bsod_dump` on-demand upload; full ~350-entry bugcheck name table (Phase 1 ships a 10-code map). - **Linux fleet unit drift:** Auto-updater replaces the binary but does NOT refresh the systemd unit file. Pre-BUG-016-fix Linux agents have new binary + old unit (missing `StateDirectory=gururmm`). Needs an ops-script pass via `/rmm` or organic at next reinstall. - **Tray IPC + peer authorization** — Linux tray merged (PR #13+#14). Open: Windows peer authz (#16), logind console-user resolution (#17), macOS tray (#18), subscriber broadcast (#19). @@ -254,7 +261,7 @@ As of 2026-06-02 (agent 0.6.51 / server 0.3.37): - **`interrupt_running_commands()` at reconnect** — flips all `status='running'` commands for reconnecting agent to `status='interrupted'`. - **Build change-gate + backup/rollback in `build-server.sh`** — skips rebuild when `server/` is unchanged (marker `last-built-commit-server`); backs up previous binary; restores it if the new binary fails `is-active`. Prevents unnecessary rebuilds and covers the BUG-003 no-rollback gap for server. - **Server's own root RMM agent for privileged ops** — the server (172.16.3.30) runs the GuruRMM Linux agent as root (hostname `gururmm`); it can read/write `/var/www/gururmm/downloads`, re-tag `.channel` sidecars, and trigger `build-server.sh` without SSH or `sshpass`. -- **GURU-5070 as permanent beta-channel canary** — always on `beta`, gets new builds first; meaningful now that builds default to beta. +- **GURU-5070 as permanent beta-channel canary** — per-agent `update_channel = 'beta'` override (only agent in the fleet with an explicit channel; site/all-other-agents default to `NULL` = stable). Gets every new beta build immediately; stable fleet is protected by the explicit `update_rollouts` pin. ### Build & Deploy @@ -311,10 +318,11 @@ Gitea push to main ## Active State -**Fleet (as of 2026-06-02, live API verified):** -- 55 enrolled agents total; fleet converged to 0.6.51 -- GURU-5070 on beta channel (permanent canary) -- Stragglers still catching up as they reconnect +**Fleet (as of 2026-06-04, live Postgres verified):** +- 55 enrolled agents total +- Stable channel: pinned at 0.6.47 windows/amd64 (promoted 2026-05-28); 0.6.46 linux. All 39 sites and 118 agents are on stable (channel NULL = stable default). +- Beta channel: **GURU-5070 only** — per-agent `update_channel = 'beta'` override (site "Mike's Car" / `103c10b9-c1de-4dd8-b382-b8362ed3143e` has `update_channel = NULL`, so stable is the site default; GURU-5070 is the explicit per-agent exception). Beta has no `update_rollouts` pin — server dispatches the newest signed beta artifact straight from the build pipeline. +- GURU-5070 running 0.6.54 (beta). Permanent canary; gets every new beta build immediately upon reconnect. **Enrolled clients/sites (live API, 2026-05-24 baseline; no removals since):** @@ -358,6 +366,13 @@ Agents management, Clients/Sites CRUD, Commands execution + terminal, Logs + AI - #18 — macOS tray - #19 — subscriber broadcast +**BUG-020 — tray duplicate/ghost icons (fixed to beta 2026-06-04; dormant follow-up open):** +- Symptom: duplicate AND ghost `gururmm-tray.exe` tray icons. Live evidence: 5 stacked tray processes in Session 1 on GURU-5070 (one per watchdog restart over 6/1–6/2). +- Root cause: `TrayLauncher` (`agent/src/watchdog/wts.rs`) tracked launches only in an in-memory `HashMap` that resets on watchdog restart (esp. agent auto-update), so it relaunched trays into sessions that already had one; no single-instance guard in the tray; `terminate_all` hard-killed via `TerminateProcess` skipping the tray's `Drop` → `NIM_DELETE` (ghost). +- Fix (commit `137dd85`, gururmm@main → beta): (1) per-session `Local\GuruRMM_Tray` single-instance mutex; (2) launcher reconciliation via `WTSEnumerateProcessesW` (idempotent); (3) graceful `Global\GuruRMM_TrayShutdown_{sid}` event → 3s wait → `TerminateProcess` fallback. +- Verified: independent Grok review + Code Review Agent APPROVE. +- Follow-up (coord todo `25fdf31a`): wire `terminate_all` graceful-shutdown into the watchdog policy-disable/uninstall path so fix #3 becomes active. + **Security backlog (HIGH):** - `credentials/:id/reveal` — horizontal privilege escalation (no ownership scope check) - `internal_err()` — ~130 call sites returning raw DB errors to callers @@ -399,7 +414,8 @@ These decisions are locked. Do not reverse without explicit user approval. | 2026-05-24 | Linux tray IPC + GTK (PR #13+#14) and peer-cred authz (PR #14) merged. PR #21 (ReadWritePaths fix) merged. Build pipeline split into per-platform scripts. Pluto known-hosts pinned. Fleet converged to 0.6.38. | | 2026-05-31 | Roadmap reconciliation (17 corrections — roadmap understated built state). MSPBackups mapping/verify UI + dev-admin impersonation UI deployed (dashboard v0.2.32). BUG-008/013/014 status corrected to fixed. SPEC-021 (logged-in user domain detection) written after Howard feature request. | | 2026-06-01 | BUG-016 (Linux systemd missing StateDirectory=gururmm) + BUG-017 (device_id OnceLock cache) fixed (commit 30da053). GURU-KALI had 11 ghost agent rows from repeated UUID churn — fixed and verified. BSOD forensics: GURU-5070 bluescreened with `0x116 VIDEO_TDR_FAILURE` (nvlddmkm.sys, NVIDIA driver 32.0.15.9201 on RTX 5070 Ti Laptop GPU); GuruConnect cleared on three grounds; root cause one-off driver TDR. BSOD detection feature (issue #10 Phase 1) implemented: bsod.rs + migration 048 + ws/mod.rs handler; code review caught and fixed SF-1 (watermark before send) + SF-2 (non-atomic watermark write); merged to main (0ec55cf), agent versioned 0.6.51. | -| 2026-06-02 | Server 0.3.37 + migration 048 deployed. Build channel default-beta fix applied to build-windows.sh + build-linux.sh (macOS already correct). Webhook wired to dispatch build-server.sh with change-gate (last-built-commit-server) + backup/rollback. Fleet converged to 0.6.51; GURU-5070 promoted to stable after beta soak was effectively lost due to auto-update race. GURU-KALI BUG-016 unit file refreshed, override removed, verified clean. | +| 2026-06-02 | Server 0.3.37 + migration 048 deployed. Build channel default-beta fix applied to build-windows.sh + build-linux.sh (macOS already correct). Webhook wired to dispatch build-server.sh with change-gate (last-built-commit-server) + backup/rollback. Fleet converged to 0.6.51. GURU-KALI BUG-016 unit file refreshed, override removed, verified clean. [NOTE: the session log recorded "GURU-5070 promoted to stable" — contradicted by live DB; see 2026-06-04 entry.] | +| 2026-06-04 | Channel correction confirmed via live Postgres query: GURU-5070 `agents.update_channel = 'beta'` (explicit per-agent override). Site "Mike's Car" and all 39 sites are `update_channel = NULL` (stable default); GURU-5070 is the only beta agent in the 119-agent fleet. Stable channel pinned at 0.6.47 windows/amd64 + 0.6.46 linux via `update_rollouts` (promoted 2026-05-28); beta channel has 0 `update_rollouts` rows (server dispatches newest signed beta artifact directly). GURU-5070 running 0.6.54. BUG-020 (duplicate/ghost tray icons) fixed in commit `137dd85` to beta: per-session single-instance mutex + `WTSEnumerateProcessesW` reconciliation + graceful shutdown event (fix #3 dormant pending `terminate_all` wiring — coord todo `25fdf31a`). Verified by Grok + Code Review Agent. | --- @@ -411,6 +427,7 @@ These decisions are locked. Do not reverse without explicit user approval. - Pre-commit hook on 172.16.3.30 lacks execute bit (noted 2026-05-23) — likely still unfixed. [unverified] - Auto-update reliability fix for BB-SERVER and RECEPTIONIST-PC was incomplete at 2026-05-24 save. [unverified] - **2026-06-02 recompile:** Folded in BSOD detection feature (Phase 1 shipped — agent/src/bsod.rs, migration 048, ws handler, always-Critical alerts, verified against real 0x116 dump); server build now wired into webhook (change-gated + rollback); build channel default changed to beta (stable is explicit promote); versions updated to agent 0.6.51 / server 0.3.37; fleet converged. Corrected submodule framing (tracks active repo, develop here + push to Gitea — not "stale, do not develop"). Added build-server.sh change-gate marker and server build log to Key Files. Added server's root RMM agent as a good pattern. Updated Current Focus with BSOD Phase 2/3 and Linux fleet unit drift. Added four new anti-patterns (minidump crate, default-stable builds, webhook agent-only gap, auto-update race). Migration count updated 46 → 48. +- **2026-06-04 recompile:** Corrected GURU-5070 channel state — live Postgres confirms `update_channel = 'beta'` per-agent (not stable as the 2026-06-02 session log implied). Stable fleet pinned at 0.6.47 (not 0.6.51). GURU-5070 on 0.6.54 beta. Beta channel has no `update_rollouts` pin. Added BUG-020 (tray duplicate/ghost icons) — symptom, root cause, fix commit `137dd85`, dormant follow-up for fix #3 wiring. Updated Summary, Components table, Active State, Current Focus, History, Good Patterns, and Compilation Notes. Added sources entry for live Postgres query + commit 137dd85. Added `aliases: [guru-rmm]` frontmatter to cross-reference the tombstone at `wiki/projects/guru-rmm.md`. ## Backlinks