Commit Graph

930 Commits

Author SHA1 Message Date
9d08f4d97d sync: auto-sync from HOWARD-HOME at 2026-05-27 10:22:59
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-27 10:22:59
2026-05-27 10:23:05 -07:00
72d98d2abd sync: auto-sync from HOWARD-HOME at 2026-05-27 09:46:32
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-27 09:46:32
2026-05-27 09:46:41 -07:00
8edd26cb41 sync: auto-sync from GURU-5070 at 2026-05-27 08:37:07
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-27 08:37:07
2026-05-27 08:37:12 -07:00
9e2abd571c sync: auto-sync from HOWARD-HOME at 2026-05-27 08:17:59
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-27 08:17:59
2026-05-27 08:18:07 -07:00
1a0bcc80b0 chore(memory): fix shared-memory index issues
Audit of .claude/memory found and fixed:
- Broken link: Power Failure Runbook (../.claude/... -> ../...)
- 8 orphaned memories not in MEMORY.md index (Graph CA/password-reset,
  vault-write-sequence, GURU-BEAST-ROG, 3x Cascades, identity proposal)
  -> now indexed under their sections, so they're discoverable
- 5 files missing frontmatter -> added name/description/type
- Duplicate index entry for reference_workstation_setup.md -> deduped
- Trimmed the worst oversized index hooks (Syncro invoice line was 427 chars)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:37:59 -07:00
5c89374937 sync: auto-sync from HOWARD-HOME at 2026-05-27 07:26:24
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-27 07:26:24
2026-05-27 07:26:30 -07:00
d5a352e43d sync: auto-sync from HOWARD-HOME at 2026-05-27 06:58:33
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-27 06:58:33
2026-05-27 06:58:39 -07:00
47517e93bf docs: update GuruScan README and module comments for current state
- README: remove AdwCleaner from scanner chain and exit code/licensing
  tables; add AdwCleaner note explaining why it is temporarily excluded;
  fix Headless description (WindowStyle=Hidden, not NoNewWindow); add
  GuruRMM integration section with example JSON output structure
- GuruScan.psm1: fix Headless param docstring; update whitelist comment
  (Emsisoft + HitmanPro only); remove C:\AdwCleaner from Defender
  exclusion list; fix Invoke-Remediation example (-Scanners Emsisoft,MSERT)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 06:55:38 -07:00
d5614ce558 chore: remove AdwCleaner from scanner chain
AdwCleaner requires both elevated privileges and an interactive desktop
session simultaneously -- SYSTEM context is elevated but Session 0 (no
desktop), user_session has a desktop but a non-elevated WTS token.
Removing for now; will re-add with schtasks InteractiveToken dispatch
when that mechanism is implemented.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 06:52:25 -07:00
98f875131e fix: use WindowStyle=Hidden instead of NoNewWindow in headless scanner dispatch
NoNewWindow caused scanner processes to inherit PowerShell's stdout/stderr
pipe handles from the GuruRMM agent. If any scanner hung in Session 0
(e.g. AdwCleaner GUI init), it held the pipe open after PowerShell exited,
blocking the GuruRMM command for hours until the server-side reaper fired.

WindowStyle=Hidden gives each scanner its own window/console so pipe
handles are not inherited. Scanner processes that timeout are still killed
by Wait-ProcessWithTimeout; the overall scan completes normally.

Verified: full pipeline completes in ~7.5 min on RMM-TEST-MACHINE with
EICAR detection, GURUSCAN_RESULT_JSON emitted correctly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 06:52:25 -07:00
87ac008b06 sync: auto-sync from GURU-5070 at 2026-05-27 06:45:16
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-27 06:45:16
2026-05-27 06:45:19 -07:00
a885b54deb feat: make FEATURE_ROADMAP a living doc — dev definition-of-done + audit default
Mike's decision (2026-05-27): the roadmap is a maintained status-and-plan
tracker ([ ]=planned, [x]=shipped, dated), consulted going in and updated
coming out.

- gururmm-development-principles memory: new "Living Roadmap (MANDATORY)"
  principle — consult before building, update the entry in the SAME change
  when shipping/modifying; roadmap update is part of definition-of-done.
  Dev is the primary maintainer; the audit is the backstop.
- rmm-audit skill: state the convention explicitly — the roadmap pass
  default is reconcile-and-flip (not annotate-only).

(Companion gururmm-repo changes — DESIGN.md principle + baseline checkbox
reconcile — pushed separately to the gururmm repo.)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 06:34:41 -07:00
6381874319 sync: auto-sync from GURU-5070 at 2026-05-27 06:11:29
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-27 06:11:29
2026-05-27 06:11:33 -07:00
09c52a7d09 feat(rmm-audit): add roadmap reconciliation pass (Agent F) + cleanup step
The skill's frontmatter claimed it updated FEATURE_ROADMAP.md, but the body
had no roadmap-reconciliation logic — so stale checkboxes slipped through
(Network Discovery Node backend + BUG-001 temperature both shipped while
marked [ ]). Added:
- Agent F (parallel, read-only): cross-references every roadmap checkbox
  against code artifacts; classifies STALE-INCOMPLETE / PARTIAL /
  STALE-COMPLETE / ACCURATE with proving artifact. Conservative — only
  flips when end-to-end evidence is unambiguous; backend/scaffolding-only
  is PARTIAL, never flipped.
- Living-docs step: actually flip stale checkboxes, annotate partials,
  flag [x]-but-missing as [HIGH] regressions; every change logged in the
  report's new "FEATURE_ROADMAP.md Delta" section (no silent edits).
- Phase 0 extracts the roadmap claims list; --pass=roadmap added.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 06:11:33 -07:00
f361b328fe sync: auto-sync from GURU-KALI at 2026-05-27 06:00:19
Author: Mike Swanson
Machine: GURU-KALI
Timestamp: 2026-05-27 06:00:19
2026-05-27 06:00:20 -07:00
2678d382a7 sync: auto-sync from GURU-KALI at 2026-05-27 05:33:56
Author: Mike Swanson
Machine: GURU-KALI
Timestamp: 2026-05-27 05:33:56
2026-05-27 05:33:56 -07:00
dad9a68a0a sync: auto-sync from HOWARD-HOME at 2026-05-27 00:31:32
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-27 00:31:32
2026-05-27 00:31:45 -07:00
bad034cd15 fix(guru-scan): remove /quiet from HitmanPro -- UI allowed to show during scans
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 00:22:19 -07:00
40e090c95a feat(guru-scan): fix exit code capture, add GURUSCAN_RESULT_JSON reporting, pre-scan hardening
Exit code fix: add $proc.Handle caching after Start-Process -PassThru to prevent
the handle from being released before ExitCode is readable (known PS5.1 bug).

GuruRMM reporting: launcher now finds results.json after each scan and emits
GURUSCAN_RESULT_JSON:<compressed> to stdout. Agent CommandResult captures it;
server stores it in commands.stdout for retrieval via GET /api/commands/:id.

Pre-scan hardening:
- Pre-flight EXE check: warns about missing scanner binaries before run starts
- Windows Defender exclusions added for scanner/log paths before scan, removed after

AdwCleaner: add /path {LOG_ROOT} arg so logs write directly to scan log root;
update log_src to {LOG_ROOT}\Logs to match.

HitmanPro: add /quiet to scan and clean args to suppress GUI in headless runs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 00:13:16 -07:00
a8ee927db0 sync: auto-sync from HOWARD-HOME at 2026-05-26 22:05:31
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-26 22:05:31
2026-05-26 22:05:38 -07:00
9ef8ad9652 sync: auto-sync from HOWARD-HOME at 2026-05-26 22:03:12
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-26 22:03:12
2026-05-26 22:03:19 -07:00
f844054847 sync: auto-sync from HOWARD-HOME at 2026-05-26 21:58:00
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-26 21:58:00
2026-05-26 21:58:09 -07:00
e828dacdbd sync: auto-sync from GURU-BEAST-ROG at 2026-05-26 21:24:46
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-05-26 21:24:46
2026-05-26 21:24:49 -07:00
0e2629ad0e docs(claude): clean up redundant post-migration content
Removed/simplified sections now handled by identity.json:
- Removed Ollama endpoint table (now in identity.json)
- Condensed verbose Ollama description
- Updated GrepAI CLI path to use $CLAUDETOOLS_ROOT
- Added migrate-identity.sh step to onboarding

All machine-specific config (Ollama, Python, paths) now centralized
in identity.json — CLAUDE.md references it, doesn't duplicate it.
2026-05-26 20:13:40 -07:00
2c12bd2d04 feat(identity): sync.sh and syncro.md read from identity.json
Phase 2 migration complete:

sync.sh:
- Read Python command from identity.json first (.python.command)
- Fall back to auto-detection for legacy machines
- Eliminates per-session detection overhead

syncro.md:
- Read Ollama endpoint from identity.json (.ollama.endpoint // .ollama.fallback)
- Read Python command from identity.json (.python.command)
- Both sections have legacy fallbacks with detection
- Eliminates 2-second curl probe on every write operation
- Updated day-of-week verification code example
- Updated Ollama draft call section

Impact: All scripts now read machine-specific config from identity.json
(populated by migrate-identity.sh). Faster, explicit, offline-safe.
2026-05-26 20:12:33 -07:00
ba92c0bc84 sync: auto-sync from GURU-5070 at 2026-05-26 20:10:26
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-26 20:10:26
2026-05-26 20:10:31 -07:00
262fd8de62 sync: auto-sync from GURU-KALI at 2026-05-26 20:08:37
Author: Mike Swanson
Machine: GURU-KALI
Timestamp: 2026-05-26 20:08:37
2026-05-26 20:08:39 -07:00
251bb3546b fix(migrate-identity): Windows compatibility (two bugs)
The script auto-detected PYTHON_CMD but then hardcoded `python3` for the
JSON write (exit 127 on Windows where only `py` exists), and passed a Git
Bash POSIX path (/d/...) to native Python (FileNotFoundError). Fixes:
- use "$PYTHON_CMD" instead of hardcoded python3
- convert IDENTITY_PATH via `cygpath -m` for the interpreter (no-op elsewhere)

Verified on GURU-5070: identity.json migrated correctly (py, windows/amd64,
localhost Ollama, qwen3:8b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 20:07:46 -07:00
6c4c17a8be feat(identity): add migration script for Ollama/Python config
- Auto-detects Python command, platform, architecture
- Probes Ollama (local vs remote)
- Sets prose_model based on machine (qwen3:8b for GURU-5070, else qwen3:14b)
- Tested on Mikes-MacBook-Air: all fields populated correctly

Ready for coord rollout to all machines.
2026-05-26 20:03:35 -07:00
35d7b3815e proposal: centralize machine config in identity.json
Merge Ollama fallback pattern with identity.json approach.
Store endpoint/fallback/prose_model to eliminate curl probes.
Same pattern as claudetools_root/vault_path (working).

Next: coord message rollout to populate fields on all machines.
2026-05-26 20:02:19 -07:00
7b79fab5be sync: auto-sync from GURU-KALI at 2026-05-26 20:00:50
Author: Mike Swanson
Machine: GURU-KALI
Timestamp: 2026-05-26 20:00:50
2026-05-26 20:00:51 -07:00
8bdb9197c4 sync: auto-sync from GURU-KALI at 2026-05-26 19:59:15
Author: Mike Swanson
Machine: GURU-KALI
Timestamp: 2026-05-26 19:59:15
2026-05-26 19:59:16 -07:00
d3f3d28fb6 sync: auto-sync from GURU-KALI at 2026-05-26 19:41:06
Author: Mike Swanson
Machine: GURU-KALI
Timestamp: 2026-05-26 19:41:06
2026-05-26 19:41:07 -07:00
ac47f51a2b sync: auto-sync from GURU-5070 at 2026-05-26 19:32:05
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-26 19:32:05
2026-05-26 19:32:09 -07:00
4e97e20a2f sync: auto-sync from GURU-KALI at 2026-05-26 18:47:58
Author: Mike Swanson
Machine: GURU-KALI
Timestamp: 2026-05-26 18:47:58
2026-05-26 18:48:02 -07:00
f94849fc00 feat(identity): read claudetools_root from identity.json
- Updated sync.sh to read claudetools_root from identity.json
- Updated syncro.md skill to use identity.json for repo path
- Updated CLAUDE.md onboarding to include claudetools_root field
- Eliminates cross-architecture path detection issues
- Fallback to git rev-parse for legacy machines

Each machine sets claudetools_root during onboarding, just like vault_path.
2026-05-26 18:44:47 -07:00
7513f21e00 sync: auto-sync from GURU-5070 at 2026-05-26 18:16:28
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-26 18:16:28
2026-05-26 18:16:32 -07:00
d4eb8358ce wiki: add capability synthesis to wiki-compile; recompile GuruRMM
Skill + template:
- wiki-compile Phase 2P: type-aware authoritative-artifact discovery for
  projects (migrations, API routes, agent modules, roadmap-done, commit log),
  with a stale-submodule guard that reads origin/main when the pinned
  submodule lags. Changelogs treated as incomplete, not authoritative.
- project template: add a Capabilities / Feature Set section.

GuruRMM recompile (from live main artifacts, not session logs):
- Added Capabilities / Feature Set section covering monitoring, remote
  execution (incl. system vs user_session contexts), inventory/discovery,
  update mgmt, policy, alerting/watchdog, backup, tunnel, identity/security.
- Fixed the misleading "runs as LocalSystem" command-fields line (the gap
  that started this) and the stale BUG-001 temperature claim (now shipped).
- Qualified Entra-only SSO; noted safe-rollout is unwired scaffolding.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 18:16:03 -07:00
28e9ecd650 sync: auto-sync from GURU-5070 at 2026-05-26 17:15:21
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-26 17:15:21
2026-05-26 17:15:27 -07:00
1c17bbbb98 docs(lonestar): Apple MDM setup reference from Syncro data
Reference doc for enrolling Lone Star's iPhone (#32251) + iPads into the
existing ManageEngine (Zoho) MDM. Pulled Syncro customer/ticket data,
flagged APNs cert prerequisite and the 2026-03-24 self-enrollment caveat.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 17:15:27 -07:00
b09854ff72 sync: discord bot session — Syncro #32324 billing verification (Winter, 2026-05-26) 2026-05-26 16:52:17 -07:00
4c6c554faf wiki: seed Lone Star Electrical Systems (client:lonestar-electrical)
Seeded from March MDM session logs + Syncro (customer 33809612) + vault.
Google Workspace shop with ManageEngine MDM (Zoho); documents the
dual-EMM self-enrollment trap resolved 2026-03-24.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 16:30:51 -07:00
6130c36f56 sync: auto-sync from GURU-5070 at 2026-05-26 16:02:01
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-26 16:02:01
2026-05-26 16:02:05 -07:00
c7e5dfc673 sync: auto-sync from GURU-5070 at 2026-05-26 15:58:46
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-26 15:58:46
2026-05-26 15:58:50 -07:00
5bb2064716 sync: auto-sync from GURU-5070 at 2026-05-26 14:02:23
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-26 14:02:23
2026-05-26 14:02:27 -07:00
64374e3ecb sync: auto-sync from HOWARD-HOME at 2026-05-26 12:40:52
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-26 12:40:52
2026-05-26 12:40:56 -07:00
3a0c83dd42 feat: add GuruScan standalone multi-scanner security suite
Adds a complete PowerShell-based malware scanning toolkit:

- Invoke-GuruScan.ps1: main orchestrator running RKill, AdwCleaner,
  Emsisoft, HitmanPro, and ESET in sequence with pre/post cleanup,
  whitelist support, ForceRemove blacklist, and -Headless switch
- Invoke-PostRebootCleanup.ps1: post-reboot temp-user session that
  shows a fullscreen splash, verifies boot-time cleanup completed,
  removes scanner files, and restores the original user login name
- Download-Scanners.ps1: downloads/refreshes scanner EXEs
- Get-ScanSummary.ps1: parses results.json with optional Ollama AI analysis
- Invoke-Remediation.ps1: re-runs scanners in clean mode

Key features: exit-code-based reboot detection, whoami-based user
capture (SYSTEM-safe via quser fallback), domain\user and local
MACHINE\user restore on login screen after cleanup reboot.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 12:40:56 -07:00
d9ab515463 feat: add /wiki-compile skill + Syncro live-check in /wiki-lint
/wiki-compile: new skill that seeds or refreshes wiki client articles
from session logs and live Syncro PSA data.

- Three modes: seed (new article), refresh (surgical update), full (--full flag)
- Syncro enrichment for client targets: customer profile, contacts,
  open tickets, recent invoices, asset count
- Ambiguous customer search: pause and ask user to pick
- Customer not found: graceful warn + continue with session logs only
- Syncro is authoritative for all billing fields (hours, rate, contract type)
- Refresh mode: surgical edits only (hours, active tickets, frontmatter)
- Seed/full: Ollama qwen3:14b synthesis; Claude-direct fallback
- Asset count in Profile only — no asset detail tables in wiki
- Commits and pushes after write

/wiki-lint: add Step 6 — Syncro Live-Check
- Pulls live prepay_hours for every client article with a Syncro customer ID
- Auto-fixes stale hours in place; commits fixes in one batch
- Flags articles with open tickets and stale compiled date for review
- Adds Syncro section to lint report output

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 11:45:44 -07:00
2cbe246025 sync: auto-sync from GURU-5070 at 2026-05-26 11:30:54
Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-05-26 11:30:54
2026-05-26 11:30:58 -07:00
464d28ae3d chore(submodule): advance guru-rmm — PRODUCT.md + .gitignore .claude/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 09:43:23 -07:00