25 KiB
User
- User: Howard Enos (howard)
- Machine: Howard-Home
- Role: tech
Session Summary
Worked through a batch of GuruRMM roadmap/bug items, ran a full codebase audit, and ended by root-causing and fixing a ClaudeTools sync bug that had been disrupting the whole session. Started by listing outstanding skill/roadmap work (excluding bitdefender/unifi/guru-scan), then implemented in sequence: SPEC-021 (logged-in-user domain & account-type detection) + the BUG-020 watchdog tray-teardown follow-up; the "Add Devices"/"Enroll an Agent" modal UX fix (top-X close, click-outside + Escape dismissal, refresh-on-close); BUG-018 (reliable agent deletion); and the "Open in MSP360" deep-link button (RMM_THOUGHTS Feature 3). Each landed full-stack on its own branch and was compile-validated (server cargo check, dashboard tsc -b && vite build run server-side in a throwaway git worktree, since this machine has no node_modules).
The enrollment modal fix was the only item taken all the way to production this session: built the feature branch's dashboard onto the beta web root via a git worktree, the user tested it on rmm-beta, then promoted beta to prod with promote-dashboard.sh --confirm. Established (and saved as a feedback memory) a standing rule that GuruRMM dashboard changes go to beta first, before main, unless told otherwise — and documented that the pipeline auto-builds beta from main, so getting a branch onto beta means a manual worktree build, not a merge.
Ran /rmm-audit (5 parallel Opus passes + a build-pipeline pass over SSH). It surfaced one real HIGH bug — assigning/unassigning any policy silently wiped a connected agent's Event Log Watch monitoring (the third instance of a clobber class already fixed at two other config-push sites) — which was fixed by reusing the single rule-shaper. The audit also flagged a MEDIUM info-disclosure (raw error strings in 500 bodies) that turned out to be already fixed in main (commit 58c1a96); it was a false positive because the audit agents read a stale working tree.
Lined up the four pending GuruRMM branches as Gitea PRs (#40-#43) with the migration merge-order (060 → 061 → 062) spelled out, DM'd Mike the lineup, and synced. Finally, diagnosed why the guru-rmm submodule kept reverting to a stale commit (2e469f1) and discarding work all session: sync.sh ran git submodule update --init unconditionally on every sync, re-checking-out the intentionally-lagging pinned gitlink in detached HEAD. Guarded it to only populate genuinely-missing submodules, verified guru-rmm now stays on main through a sync, and pushed the fix fleet-wide.
Key Decisions
- Dashboard changes go to beta before main (saved as memory
rmm-dashboard-beta-before-main). Beta auto-builds frommain, so a feature branch is previewed by building itsdashboard/in agit worktreeand rsyncingdist/to/var/www/gururmm/dashboard-beta; promotion to prod is the separate human-runpromote-dashboard.sh --confirm. - BUG-018 root cause corrected against the live DB, not the roadmap's guess: the two huge cascade children (
metrics~6.4 GB,agent_logs~3.5 GB) were already indexed onagent_id; only five small FKs were unindexed (migration 061). The real operator fix is the newPOST /api/agents/bulk-delete(one transaction), not the indexes. - MSP360 deep-link placement unified: the backup-alert "Investigate" action already deep-links to
?tab=backup, so a single button on the backup-tab plan card covers both placements; no separate alert-row button (the alert doesn't carry the console id). - Event Log Watch fix reused the existing shaper (
watch_rules_for_agentretargeted from&AppStateto&PgPool) rather than duplicating the rule-mapping JSON — one source of truth across all three push sites. - Submodule fix guarded the clobber, did not bump the gitlink: CLAUDE.md intends the parent's pinned gitlink to lag
main; the bug wassync.shre-checking-out that pin over live work, so the fix is a populate-only guard, preserving the lag-by-design behavior. - Used a SHA-push workaround (commit → cherry-pick onto
origin/main→git push origin <sha>:refs/heads/<branch>→ verify withls-remote) to land branches reliably while the submodule kept detaching, before the root cause was found.
Problems Encountered
- Submodule kept reverting to
2e469f1(detached HEAD), discarding uncommitted edits — caused multiple dangling-commit recoveries and one reverted sed edit. Worked around with SHA-pushes, then root-caused:sync.sh:339git submodule update --initran unconditionally. Fixed with agit -C "$ppath" rev-parse --git-dirpopulate-only guard. Verified guru-rmm now survives a sync onmain @ ed8cad3. - Audit ran against a stale checkout (working tree pinned at
2e469f1, 5 commits behindorigin/main). One MEDIUM finding (500-body info-disclosure, 17 sites) was already fixed in main by58c1a96; caught before shipping a redundant change, deleted the bogus branch, corrected the report. Re-verified all other findings against real main — only that one was stale. Same submodule root cause as above. - Build-server SSH host key changed —
172.16.3.30was rebuilt as a new physical box on 2026-06-11 (per wiki), so the ED25519 key legitimately changed. Refreshedknown_hostsafter confirming the rebuild, rather than blindly bypassing. - No SSH key on Howard-Home for the build server — used the dedicated
gururmm-physicalkey from the SOPS vault (extract to a temp keyfile,ssh -i, delete after).
Configuration Changes
ClaudeTools repo (committed + pushed):
M .claude/scripts/sync.sh— populate-only guard on the submodule update (Phase 1a) so already-populated submodules are never re-checked-out to the lagging gitlink.A .claude/memory/rmm-dashboard-beta-before-main.md+ index pointer in.claude/memory/MEMORY.md.M errorlog.md— three entries: two--friction(detached-HEAD submodule; stale audit base) and the root-cause fix context.
guru-rmm submodule (on feature branches, not yet merged):
feat/spec-021-and-bug-020-tray-teardown:agent/src/metrics/mod.rs,agent/Cargo.toml,agent/src/watchdog/{mod,monitor,wts}.rs,server/migrations/060_logged_in_user_domain.sql,server/src/db/metrics.rs,server/src/ws/mod.rs,dashboard/src/{api/client.ts,pages/AgentDetail.tsx},docs/specs/SPEC-021-*.md,docs/FEATURE_ROADMAP.md.fix/bug-018-agent-delete-indexes:server/migrations/061_index_agent_foreign_keys.sql,server/src/db/agents.rs,server/src/api/{agents,mod}.rs,dashboard/src/{api/client.ts,pages/Agents.tsx},docs/FEATURE_ROADMAP.md.feat/msp360-deeplink:server/src/mspbackups/{client,sync}.rs,server/src/db/mspbackups.rs,server/src/api/mspbackups.rs,server/migrations/062_backup_provider_console_id.sql,dashboard/src/{api/client.ts,lib/provider-links.ts,components/BackupDetailTab.tsx},docs/RMM_THOUGHTS.md.fix/eventlog-watch-policy-clobber:server/src/api/event_log_watches.rs,server/src/ws/mod.rs,server/src/api/policies.rs.fix/enrollment-modal-ux(MERGED to main as4027c86):dashboard/src/components/{EnrollmentModal,EnrollAgentModal}.tsx,dashboard/src/pages/{SiteDetail,ClientDetail}.tsx.- Untracked (NOT committed):
projects/msp-tools/guru-rmm/reports/2026-06-21-rmm-audit.md.
Credentials & Secrets
No new credentials created. Used (all already vaulted):
- SSH to build server:
gururmm-physicaled25519 key — vaultinfrastructure/gururmm-server-physical.sops.yamlfieldcredentials.ssh-private-key(userguru@172.16.3.30, key-only auth; password auth disabled on the new box). - Sudo on build server (for promote):
Paper123!@#-rmm— vaultinfrastructure/gururmm-server.sops.yamlcredentials.password. - Postgres (schema query): vault
infrastructure/gururmm-server.sops.yamlcredentials.databases.postgresql-password(dbgururmm, usergururmm, localhost:5432). - Gitea API (PR creation): vault
services/gitea-howard.sops.yamlcredentials.password(userhoward, internalhttp://172.16.3.20:3000).
Infrastructure & Servers
- GuruRMM server
172.16.3.30(hostnamegururmm) — physical Lenovo ThinkCentre M83, Ubuntu 26.04, replaced the Jupiter VM at this IP on 2026-06-11. Repo/home/guru/gururmm. Build pipeline/opt/gururmm/*.sh, webhook:9000. Postgres 18, MariaDB, GuruRMM API:3001, Coord API:8001. - Dashboard web roots: beta
/var/www/gururmm/dashboard-beta(https://rmm-beta.azcomputerguru.com), prod/var/www/gururmm/dashboard(https://rmm.azcomputerguru.com). API https://rmm-api.azcomputerguru.com. - Channel model: webhook auto-builds beta from
origin/main; prod is updated only bypromote-dashboard.sh --confirm(backs up prod first;--rollbackto undo). - Gitea: git.azcomputerguru.com (internal
172.16.3.20:3000), repoazcomputerguru/gururmm.
Commands & Outputs
- Beta preview build (per branch, no main merge):
git worktree add --detach <wt> origin/<branch>→cd <wt>/dashboard && npm install && npm run build→rsync -a --delete dist/ /var/www/gururmm/dashboard-beta/. Do NOT touch/opt/gururmm/last-built-commit-dashboard. - Promote beta→prod:
sudo /opt/gururmm/promote-dashboard.sh --confirm(prod backup written to/var/www/gururmm/.dashboard-backups/dashboard-20260621-191008). Undo:... --rollback. - Unindexed-FK / schema queries run via
PGPASSWORD=... psql -U gururmm -d gururmm -h localhost. - PR creation:
POST http://172.16.3.20:3000/api/v1/repos/azcomputerguru/gururmm/pulls(basic authhoward:<pw>, JSON built withjq -nc --arg). - Submodule-clobber fix verified: guru-rmm
main @ ed8cad3before AND after a fullsync.shrun (previously reverted to detached2e469f1).
Pending / Incomplete Tasks
- Four GuruRMM PRs await Mike's review/merge — merge migrations in order:
- #40 SPEC-021 + BUG-020 (migration 060) — FIRST. SPEC-021 also needs a Pluto signed-MSI agent build + fleet rollout.
- #41 BUG-018 (migration 061) — after 060.
- #42 MSP360 deep-link (migration 062) — last.
- #43 Event Log Watch HIGH fix — no migration, merge anytime.
- After each PR with a dashboard portion merges to main, it auto-builds to beta; promote to prod when validated.
- Remaining audit findings (all re-verified valid against real main): LOW DoS
cap_fieldbatch (DiscoveryResult / WatchdogEvent / NetworkState / Auth hostname inws/mod.rs), SSE status-stream revocation bypass + JWT-in-URL (agents.rs:758-762), twoconsole.logstubs (AgentDetail.tsx:670,Logs.tsx:198),ContextTree.tsxmissingisError, and the roadmap reconciliation (5 shipped-but-unchecked items to flip[ ]→[x]+ 3 partials to annotate). - The audit report
reports/2026-06-21-rmm-audit.mdis untracked in the guru-rmm submodule working tree — not yet committed to the gururmm repo.
Reference Information
- PRs: azcomputerguru/gururmm#40 (..43)
- Branch tips: SPEC-021/BUG-020
7083e39; BUG-018604c42f; MSP360776b587; eventlog fix432b434; enrollment (merged)4027c86. - guru-rmm
origin/main=ed8cad3; the already-shipped info-disclosure fix =58c1a96; the stale gitlink the submodule was pinned at =2e469f1. - Discord DMs to Mike: prod-promote confirmation (msg 1518332316114489505), PR lineup (msg 1518361486509215955).
- Memory added:
.claude/memory/rmm-dashboard-beta-before-main.md.
Update: 17:39 PT — concurrent-session fallout + BUG-018 rework to Mike's spec
Summary
Discovered a concurrent Claude session (GURU-5070/claude-main, Mike's machine) was working the same guru-rmm tree — branch refs/HEAD kept moving under me. Mike then sent coord decisions: BUG-018 is mine to do as a fast 202 + background purge (it's row volume, not indexes); BUG-019 he approved + merges himself; pfSense Option A + Tier-1 2a/2b are his/settled. Acted on the guru-rmm fallout only (the rest is GURU-5070's). Created a 6-item TaskList and worked it to done, isolating all work in git worktrees + push-by-SHA to dodge the shared-tree races.
Reworked BUG-018 (PR #41) to the 202+bg design, renumbered SPEC-021's migration 060→063 to clear a collision with BUG-019's 060, opened PR #44 for the earlier audit-cleanup branch, and flagged a Gitea-SSH/build-pipeline refusal. Mike replied: BUG-019 built clean (v0.6.67 beta, marker 8b5e0dc), Gitea SSH was only transiently down (build completed before the refusal), and he pushed a gururmm-build skill + docs/BUILD.md + build memories (picked up by this sync). Remaining PRs + the stateful-alert-lifecycle shape-spec are handed to another session.
Key decisions
- BUG-018 → Mike's 202 + background purge: mark
status='deleting'synchronously (fast UPDATE, also the existence check), spawn a background tokio task for the cascade purge, return 202; fleet listings/stats exclude'deleting'so the row leaves the UI immediately. Kept the bulk endpoint + FK indexes (mig 061 — speeds the bg purge). - Migration order finalized: 060 BUG-019, 061 BUG-018, 062 MSP360, 063 SPEC-021 (renumbered SPEC-021 since Mike merges BUG-019's 060).
- Always isolate submodule work in a
git worktreewhen concurrent sessions may share the tree; commit + push by explicit SHA, never trust the shared branch ref. (Logged as friction.) - Stateful-alert-lifecycle shape-spec paused mid-Phase-2 (awaiting priority + out-of-scope) — now handed to another session per Howard.
Problems encountered
- Concurrent session moved HEAD/branch refs + mixed both sessions' uncommitted changes into the shared tree; resolved by committing in a worktree off origin/main and push-by-SHA, leaving the other session's files untouched.
- Build-host
git fetchover Gitea SSH (git@172.16.3.20:2222) refused 3x during validation; validated instead via internal HTTP (http://...@172.16.3.20:3000). Mike confirmed it was transient.
Configuration changes (this update)
- guru-rmm
fix/bug-018-agent-delete-indexes(de9b089): server/src/api/agents.rs (202 + mark-deleting + bg purge, bulk too), server/src/db/agents.rs (mark_agents_deleting,'deleting'filter on list/stats queries), dashboard/src/api/client.ts + pages/Agents.tsx (202 flow,deleted->accepted). - guru-rmm
feat/spec-021-and-bug-020-tray-teardown(9171f84): renamed migration060_logged_in_user_domain.sql->063_; updated the SPEC-021 note + roadmap reference. - Coord: claimed + released lock
gururmm/bug-018-agent-delete; messaged GURU-5070 (3 msgs).
Pending (handed to another session per Howard)
- PRs awaiting Mike's merge: #40 (SPEC-021/BUG-020, mig 063), #41 (BUG-018 202+bg, mig 061), #42 (MSP360, mig 062), #43 (eventlog HIGH), #44 (audit cleanup). Merge migrations in order 060→063.
- Stateful-alert-lifecycle shape-spec (paused at Phase 2).
Reference (this update)
- Branch tips: BUG-018
de9b089, SPEC-0219171f84. BUG-019 builtv0.6.67, marker8b5e0dc. - New from Mike (via sync):
gururmm-buildskill, guru-rmmdocs/BUILD.md, memoryfeedback_gururmm_build_verification; fabb3421 app DELETED (use Exchange Operator b43e7342 for client mail, 1873b1b0 for /mailbox). - Coord msgs to GURU-5070: 7a4747b8 (claim), 0c2ae45e (done + SSH flag). Discord DM 1518411100927033464 (build-outage flag).
Update: 20:35 PT — Roadmap verification, BUG-021 correction, BUG-022 fix (watchdog dead code)
Session Summary
Continued the roadmap verification pass after compaction. Did a deep functional verification of
the live GuruRMM system (270 agents / 178 online, metrics flowing ~2531 rows/15 min, alerts with 0
legacy null dedup_keys, per-agent API endpoints all 200 on a real agent). The one unverified spot
was watchdog_events/watchdog_alerts = 0 all-time. Traced both paths end-to-end against
origin/main: the watchdog's REST escalation path (watchdog-alert, fires after 3 failed restarts)
is sound — 0 alerts = healthy fleet. But watchdog_events = 0 because the agent never produces
a WatchdogEvent: the WS variant was defined + fully server-handled (insert_watchdog_event + a
watchdog_events table) yet had no producer, and architecturally couldn't (the watchdog is a
separate companion process with no WS connection). Dead/orphaned path → filed BUG-022 (LOW).
Mid-session, Howard noted Mike likely fixed the earlier build issues. Re-checked the LIVE build
marker and found I had been reporting a stale snapshot: the Windows build went green at
2026-06-22 02:19 (v0.6.67, last-built-commit-windows == origin/main 1dce66d). BUG-021 was
already fixed on main via 1dce66d (pinned getrandom 0.3.1 + zeroize 1.8.1 below
edition2024 — exactly the dep-pin I had diagnosed + flagged; the fix even reused the BUG-021 label).
Also on main since the snapshot: BUG-018 (202+bg, cea87d4) and the Event Log Watch management UI
(0fa65f5). Corrected the BUG-021 roadmap entry to Fixed (97045ec).
Then fixed BUG-022. For a LOW dead-code defect, chose option (a) — remove the orphaned path —
over building a new feature (granular watchdog reporting is a product call for Mike). Removed the
WatchdogEvent variant + payload + enum from agent/src/transport/mod.rs, the variant + payload
struct + match arm + insert_watchdog_event call from server/src/ws/mod.rs, and the
watchdog_events::* re-export from server/src/db/mod.rs; gutted db/watchdog_events.rs to a
doc-only stub (keeps the table↔module invariant; left the empty table to avoid a migration-number
collision with the open PR train). Compile-verified on the build server: cargo check clean on
server (48.9s) + agent (15.7s), no new warnings. Pushed fix/bug-022-watchdog-event-deadcode
(4eb5054), opened PR #45 (code) and PR #46 (docs: BUG-021/BUG-022 fixed + an RMM thought
for the REST-based granular-watchdog follow-up). Did not merge — merging the code PR triggers a
fleet build+deploy, left to Howard/Mike.
Key Decisions
- BUG-022 fix = remove dead code, not implement granular events. Proportionate for LOW; the feature alternative needs Mike's go (GuruRMM project) and a design (REST producer, since the watchdog has no WS connection). Captured the feature idea in RMM_THOUGHTS instead of discarding it.
- Left the empty
watchdog_eventstable in place (no DROP migration) to avoid colliding with the in-flight PR migration numbers (061/062/063 on open PRs #40-42); flagged for a future consolidated cleanup migration. - Kept the code fix branch code-only and put the doc status flip on the existing docs branch (disjoint files → no merge conflict between PR #45 and #46).
- Did not merge either PR — merging code to main = fleet deploy (hard-to-reverse, outward-facing).
Problems Encountered
- Stale build-status reporting (friction, logged): reported BUG-021 as still-failing from a
build-log snapshot; it had already gone green by report time. Same "acted on a point-in-time read"
class as the earlier stale-audit-base slip. Fix recorded: re-check the LIVE
last-built-commitmarker vsorigin/main(and the latest build SUCCESS line, not just the last FAILED line) before asserting build status.errorlog.mdref=stale-audit-base-friction. - Submodule reset to stale
2e469f1again: the initial watchdog grep ran against old code. Re-ran authoritatively withgit grep origin/mainand did all edits in worktrees offorigin/main- push-by-SHA (the established concurrency-safe pattern).
cargo: command not foundon non-interactive SSH: the build server's cargo is under~/.cargo/bin; sourcing~/.cargo/envfixed it (cargo 1.96 on.30).
Configuration Changes (this update)
- guru-rmm
fix/bug-022-watchdog-event-deadcode(4eb5054): removed dead WatchdogEvent path acrossagent/src/transport/mod.rs,server/src/ws/mod.rs,server/src/db/mod.rs,server/src/db/watchdog_events.rs(doc-only stub). - guru-rmm
docs/bug-021-windows-build(487431f): BUG-021→Fixed + BUG-022 entry→Fixed indocs/FEATURE_ROADMAP.md; granular-watchdog-visibility thought appended todocs/RMM_THOUGHTS.md. errorlog.md: one--frictionentry (stale build-status reporting).
Pending / Incomplete (this update)
- PR #45 (code) + PR #46 (docs) await merge by Howard/Mike. Merge #45 before #46. Merging #45 = fleet build+deploy.
- Empty
watchdog_eventstable still present — drop in a future consolidated cleanup migration. - Granular watchdog visibility (REST
watchdog-eventproducer) — RMM_THOUGHTS, Raw, needs Mike's go.
Reference (this update)
- BUG-021 fix on main:
1dce66d(getrandom 0.3.1 + zeroize 1.8.1 pin). BUG-018 on main:cea87d4. Event Log Watch UI:0fa65f5. Windows build green:v0.6.67, marker1dce66d, 2026-06-22 02:19. - Branch tips: fix
4eb5054, docs487431f. PRs: #45 (code), #46 (docs). - Verified live: 270 agents/178 online; REST
watchdog-alertpath sound;watchdog_events=0 = dead WS path (no producer).
Update: 10:35 PT (2026-06-22) — Tracker reconciliation + GuruRMM wiki full recompile
Session Summary
Closed out the session by making the living docs and wiki truthful for everything that landed.
First reconciled the trackers against main: flipped BUG-018 from "Investigated/Open" to Fixed
(cea87d4 — DELETE returns 202 + background purge) and marked the Event Log Watch management UI
[x] complete in UI_GAPS.md (0fa65f5), bumping its Last-Updated. These went on the existing docs
branch (PR #46) so they stay file-disjoint from the BUG-022 code PR (#45).
Then ran the recommended wiki update (decoupled from /save, so the prior save didn't do it):
/wiki-compile project:guru-rmm --full. The guru-rmm article turned out to be a tombstone
redirect — the canonical article is gururmm (no hyphen). Switched target and did a full recompile
of wiki/projects/gururmm.md (651 -> 775 lines) by delegating gather+synthesis to a Sonnet agent: it
read live artifacts from origin/main (migrations, routes, roadmap, BUILD.md, recent commits) + the
delta session logs (2026-06-12 -> 22) + the existing article, and produced an updated article folding
in BUG-018/020/021/022, Event Log Watch UI, SPEC-021, MSP360 deep-link, enrollment-modal UX, the
two-wave (stable + legacy-1.77) Windows build, the BUG-021 dep-pin gotcha, and the watchdog section
corrected to REST-watchdog-alert-only per BUG-022. Reviewed the staged diff, caught + removed a
stale carryover (the article still listed the watchdog-alerts UI resolve/delete routes as "missing" —
they exist + the UI is complete), applied it, refreshed the wiki/index.md GuruRMM row (v0.6.67,
~270 enrolled) + header date, committed to main (b977f5e), and released the per-article coord lock.
Key Decisions
- Tracker edits for BUG-018 + Event Log Watch UI went on the docs branch (PR #46), not a new branch —
same file (
FEATURE_ROADMAP.md/UI_GAPS.md), keeps it bundled with the other verification-pass doc updates and disjoint from the code PR. - Wiki recompile delegated to a Sonnet agent (per the skill + the high-volume multi-source read) — it
wrote to
.claude/wiki_staging/and I reviewed/applied, keeping the 97 KB synthesis out of main ctx. - Compiled the canonical slug
gururmm, NOTguru-rmm(the tombstone redirect caught the hyphen trap).
Problems Encountered
/saverecommends the wrong wiki slug for GuruRMM: Phase 3 derivesproject:guru-rmmfrom the submodule directory name, but the canonical wiki article isgururmm(theguru-rmm.mdis a tombstone redirect). Caught immediately by reading the stub. Logged as a friction so the/saveslug derivation can mapguru-rmm -> gururmm.- Stale carryover in the recompiled article: the Sonnet draft kept an old "watchdog-alerts UI routes missing on server" gap that is actually shipped/complete. Caught it in the Phase-5.2 staged review and removed it before applying — full recompiles inherit stale claims, so the diff review is load-bearing.
Configuration Changes (this update)
- guru-rmm
docs/bug-021-windows-build(855b46b):FEATURE_ROADMAP.mdBUG-018 -> Fixed;UI_GAPS.mdEvent Log Watch UI[ ]->[x]+ Last-Updated bump. - ClaudeTools main (
b977f5e):wiki/projects/gururmm.mdfull recompile (651 -> 775 lines);wiki/index.mdGuruRMM row + header refreshed. errorlog.md: one--frictionentry (/savewiki-slug derivationguru-rmmvs canonicalgururmm).
Pending / Incomplete (session close)
- PR #45 (BUG-022 code) + PR #46 (BUG-018/021/022 + Event Log Watch roadmap/UI_GAPS + RMM thought) await Howard/Mike merge. Merge #45 before #46; merging #45 = fleet build+deploy.
- Empty
watchdog_eventstable retained — drop in a future consolidated cleanup migration. - Granular watchdog visibility (REST
watchdog-eventproducer) — RMM_THOUGHTS, Raw, needs Mike's go.
Reference (this update)
- Wiki:
wiki/projects/gururmm.md(canonical;guru-rmm.md= tombstone redirect). Commitb977f5e. - Docs branch tip:
855b46b. Coord lock9d9dc3ef(claimed + released).