Commit Graph

121 Commits

Author SHA1 Message Date
90fcbb6895 fix: auto-create .claude/current-mode if missing for coordination hooks
The UserPromptSubmit hook requires .claude/current-mode to determine work mode
and gate coordination lock checks. This file is machine-local (gitignored) but
had no initialization logic for fresh clones, causing hooks to fail.

Changes:
- check-messages.sh: Added auto-creation logic with "general" as default
- CLAUDE.md: Documented auto-initialization behavior
- ONBOARDING.md: Added machine-local configuration section
- session-logs/2026-05-19-session.md: Documented investigation and fix

Impact:
- Fixes coordination hooks on all machines
- Prevents first-clone hook failures
- No manual setup required
- Backwards compatible

Resolves: "cood hook seems to be broken on all my machines"

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-19 09:47:28 -07:00
efb15f0aa6 Session log: GuruRMM agent deployment - clickable metrics feature now live
- Investigated auto-update system and agent deployment status
- Verified 35 agents (70%) already on v0.6.22 with process collection
- Confirmed process data collection and API functionality working
- Feature is fully operational in production for all v0.6.22 agents
- 15 offline agents will auto-update when they reconnect
- Updated guru-rmm submodule reference to commit 55e8a86

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-19 09:33:45 -07:00
08cf88b72c Session log: MSP360 API credentials vaulted
Added MSP360 Managed Backup Service API credentials to SOPS vault.

Session work:
- Created temporary file for user to input API credentials
- Generated SOPS-encrypted vault entry at msp-tools/msp360-api.sops.yaml
- Verified decryption with vault wrapper script
- Committed and pushed to vault repository (5e8cb0b)
- Deleted temporary unencrypted file

Credentials stored for GuruRMM MSPBackups integration (P2 priority):
- API Login and Password for MSP360 authentication
- Bearer token flow documented
- Monitoring endpoint available for backup status polling

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-18 20:17:18 -07:00
b2198fb7c2 Session log: GuruRMM Client Portal and three-level identity hierarchy
Documented completion of Client Portal feature work for GuruRMM. Extended
multi-tenancy architecture from two levels (Dev → Partner) to three levels
(Dev → Partner → Client).

Session work included:
- Added comprehensive Client Portal section to GuruRMM roadmap (~200 lines)
- Updated Multi-Tenancy section for three-level hierarchy
- Integrated Client Portal with PSA/CRM module
- Removed "customer portal" from PSA out-of-scope list
- Documented database schema (clients table, client_users table, client_id columns)
- Defined authentication/authorization for client users
- Specified UI/dashboard requirements for client portal
- Documented impersonation chain: Dev → Partner → Client

Commits referenced:
- guru-rmm be7b2ce: Client Portal feature
- ClaudeTools 7f091a7: Submodule update

This session was a continuation of earlier roadmap work that included PSA/CRM
module, standalone PSA capability, multi-tenancy identity model (ADR-001),
MSPBackups integration, and Integration Catalog.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-18 20:01:40 -07:00
6e82d1f725 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-18 15:57:51
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-18 15:57:51
2026-05-18 15:57:56 -07:00
78f74cb9da sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-18 11:00:37
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-18 11:00:37
2026-05-18 11:02:00 -07:00
97514e3899 Session log: Howard billing review and Syncro ticket updates 2026-05-18
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 08:50:26 -07:00
3b38db0381 Session log: Mac Gitea connectivity diagnosis and sync resolution
Diagnosed and resolved ClaudeTools sync issues on Mac. Network connectivity
to internal Gitea server (172.16.3.20:3000) was working but slow through
Tailscale relay after office power failure recovery. Resolved submodule
conflict during rebase and successfully synced repository.

- Comprehensive network diagnostics (Tailscale, routing, connectivity)
- Manual submodule conflict resolution (guru-rmm reference)
- Context recovery from recent PC sessions (power failure recovery, GuruRMM dev)
- Directives refresh confirmed

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-18 08:28:29 -07:00
0227df6a3c sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-17 22:07:52
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-17 22:07:52
2026-05-17 22:07:59 -07:00
0f1e6766c3 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-16 18:09:05
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-16 18:09:05
2026-05-16 18:09:33 -07:00
34457ddc0d sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-16 16:59:53
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-16 16:59:53
2026-05-16 16:59:57 -07:00
12d5a976d4 Session log: qwen3.6 benchmark, route strict-format to 3.6
Benchmarked qwen3.6 (36B MoE) vs qwen3:14b and qwen3:32b on 16
representative prompts. qwen3.6 scored 15/16 vs 14b 11/16 and 32b
12/16, winning every strict-format/adherence test (multi-step rules,
weekend-aware scheduling, prompt-injection resistance, word-limit
summary). Single reasoning regression noted for re-check at qwen3.7.

Updated .claude/OLLAMA.md (Models, Documentation Engine, and
When-to-Use tables) and .claude/CLAUDE.md one-line model summary to
route strict-format work to qwen3.6 and keep bulk prose on qwen3:14b
(2x faster). Also removed openclaw npm package + ~/.openclaw data dir
earlier in the session.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 16:03:07 -07:00
c18d1a0afa sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-16 13:13:50
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-16 13:13:50
2026-05-16 13:13:53 -07:00
8508c2c041 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-16 11:38:55
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-16 11:38:55
2026-05-16 11:38:58 -07:00
d68eed4fee sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-15 21:14:51
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-15 21:14:51
2026-05-15 21:14:54 -07:00
c135fc3b59 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-15 19:21:37
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-15 19:21:37
2026-05-15 19:21:41 -07:00
0ff8a341d1 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-15 16:41:51
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-15 16:41:51
2026-05-15 16:41:54 -07:00
2a538a2c26 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-15 16:08:19
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-15 16:08:19
2026-05-15 16:08:22 -07:00
c5441ade3e sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-15 15:23:02
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-15 15:23:02
2026-05-15 15:23:05 -07:00
d73f377cae sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-15 09:15:55
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-15 09:15:55
2026-05-15 09:15:58 -07:00
134f6b647c sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-15 07:50:23
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-15 07:50:23
2026-05-15 07:50:26 -07:00
e8496417c3 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-15 06:22:21
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-15 06:22:21
2026-05-15 06:22:24 -07:00
9bbc08a1ec docs: migrate all gururmm session logs to claudetools session-logs/ 2026-05-15 06:13:52 -07:00
d688279c04 docs: move RMM session log to root session-logs; update placement rules 2026-05-15 06:10:15 -07:00
d9495af73e sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-13 10:53:57
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-13 10:53:57
2026-05-13 10:53:57 -07:00
5fe4309781 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-13 10:19:52
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-13 10:19:52
2026-05-13 10:20:07 -07:00
bde4bd21bb sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-13 08:02:55
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-13 08:02:55
2026-05-13 08:02:55 -07:00
8cc05cb40e sync: auto-sync from HOWARD-HOME at 2026-05-12 12:38:50
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-12 12:38:50
2026-05-12 12:38:51 -07:00
4f04e256eb Session log 2026-05-10: radio-show Jupiter deploy + MP3 rsync, Discord bot NSSM service, Apple Dev enrollment kickoff
- Deployed radio-show FastAPI redesign (HEAD already at e8e1874 with sort fix) to Jupiter; rebuilt radio-archive container.
- Solved Jupiter audio 404 by rsync IX -> Jupiter over LAN (8.09 GB, ~75s @ 108 MB/s); installed Jupiter root pubkey on IX root for passwordless server-to-server access.
- Addressed 6 Note-for-Mike blocks from Howard (Cascades SDM activation root cause, IMC1 AIM SQL diagnosis correction, Sombra/Transwiz patterns, Stamback prepay).
- Restored dead Discord bot (silent since 2026-05-06 reboot); installed as NSSM service ClaudeToolsDiscordBot with auto-restart + log rotation.
- Resolved /sync conflict on memory entry by dropping redundant local commit in favor of Howard's richer feedback_syncro_appointment_owner.md.
- Kicked off Apple Developer Program enrollment (HH5UA87LAH); flagged D&B name mismatch (DUNS 005661506 registered to 'COMPUTER GURU' not 'Arizona Computer Guru LLC') as real blocker; vaulted full sequence at infrastructure/apple-developer-program.sops.yaml in vault repo.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 19:23:05 -07:00
78b5f5d8c9 sync: auto-sync from HOWARD-HOME at 2026-05-08 19:53:03
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-08 19:53:03
2026-05-08 19:53:06 -07:00
aa9132373d session log: 2026-04-30 update — Tedards email diagnosis, DMARC escalation, billing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 20:10:43 -07:00
a23bcf0e52 Session log addendum: time-tracking finding + syncro skill rewrite
Mike's 4/30 audit (surfaced via /sync) flagged that 31 closed tickets had
00:00:00 in Syncro time tracking — bare add_line_item bypasses time entries
and breaks reporting. I had just done the same on today's 3 tickets; Winter
retroactively added time entries. Rewrote the syncro skill (commit 2ec07ea)
to make timer_entry -> charge_timer_entry the default and demote bare
add_line_item to a fallback for non-time items only. Disabled the
now-redundant scheduled agent (trig_01CAfvwoQ4nLcKEqbU4UQmSa).
2026-05-01 20:08:41 -07:00
ac0918a3e5 Session log update: Discord bot Phase 1.5, Tedards/Dataforth EOP investigations, cert auth on 5 MSP apps
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 17:24:12 -07:00
8e1c9cabb5 Session log: M365 license audits (BG Builders, Kittle), wwilliams breach check, Dataforth email investigation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 15:07:23 -07:00
dc2ffbdd28 Session log: Syncro billing batch (Sombra, Mineralogical Record, Cascades Entra) + /tmp path mismatch incident
Three tickets billed today: #32225 Sombra ($525 onsite), #32229 Mineralogical
Record ($262.50 emergency), #32214 Cascades Entra (33.5 hrs project labor at $0
debits prepaid block). Hit a real incident on Sombra: rogue comment posted with
content from a different ticket because /tmp resolves differently in the Write
tool (C:/tmp/) vs Git Bash (%LOCALAPPDATA%/Temp/) on Windows. Howard manually
deleted from GUI; subsequent posts used heredoc to avoid the file handoff
entirely. Root cause documented in feedback_tmp_path_windows.md so future
sessions don't trip the same wire. Scheduled remote agent
trig_01CAfvwoQ4nLcKEqbU4UQmSa to update the syncro skill examples 2026-05-02.
2026-05-01 10:44:39 -07:00
c601ceee38 Clarified: Billing works, but time tracking bypassed on 31 tickets
Updated Howard's note with correct analysis after Mike's clarification:

BUSINESS RULE (from Mike):
- ALL tickets need time entries (except cancelled)
- Even warranty/free work logs time
- Time tracking separate from billing decisions

FINDINGS:
- Billing:  Working (29 invoices exist, 2 correctly non-billed)
- Time tracking:  Bypassed (all 31 show 00:00:00)

ROOT CAUSE:
- Manual invoice line items used instead of time tracking
- Hours typed in descriptions ("Applied X.0 Prepay Hours")
- Prevents productivity/utilization reporting

Pattern: 20 prepay deductions + 16 direct charges, all via manual
line items. Workflow skips Syncro time tracking system entirely.

Examples included with hours that should have been logged.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-30 18:47:24 -07:00
cfe0bcc6b2 CORRECTION: Billing analysis was wrong - all 31 tickets properly handled
Previous commits falsely claimed 31 tickets had no invoices. This was based on
a fundamentally flawed verification script that:
- Used list endpoint instead of individual invoice details
- Failed to check invoice-level ticket_id field
- Had type comparison errors (string vs int)

CORRECTED FACTS:
- 29 out of 31 tickets DO have proper invoices (93.5% success)
- 2 tickets correctly have no invoices (marked Non-Billable)
- #32083 (DAnaise.com): Non-Billable status
- #32022 (Michael Johnson): Cancelled, Non-Billable

NO ACTION REQUIRED - Howard's billing workflow is working correctly.

Sincere apologies for the false alarm. Mike caught the error immediately.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-30 18:41:37 -07:00
94a0c61a1f Root cause analysis: Syncro workflow issue, NOT Claude integration
Pattern analysis reveals:
- 31 tickets span March 3 - April 28 (not one-time event)
- Multiple update date clusters (batch processing pattern)
- All missing normal invoice workflow steps
- Tickets changed to 'Invoiced' status without:
  * Time entries
  * Invoice generation
  * Workflow comments

NOT a Claude/API integration issue - Claude doesn't change ticket statuses.

Likely causes:
1. Manual bulk status updates to clear queue
2. Misconfigured Syncro automation/workflow
3. Periodic batch status changes

Urgent: Need to review Syncro automation rules and prevent future revenue loss

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-30 18:33:56 -07:00
7d23863ae4 VERIFIED: 31 tickets have no time AND no invoices
Deep verification performed:
- Checked customer invoice records for all 31 tickets
- ZERO invoices found matching these tickets
- Cascades confirmed to have NO contract (11 tickets affected)
- Example: Kittle #32223 marked 'Invoiced' but no invoice exists
- This is genuine lost revenue, not contract-covered work

Estimated impact: 31 billable tickets with no revenue captured

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-30 18:29:55 -07:00
48315cd2af CRITICAL: Update Howard note - 31 tickets closed without time entries
Major billing gap identified:
- 39 tickets closed/invoiced today
- 31 have ZERO time logged (00:00:00)
- Many marked 'Invoiced' but sent with no time
- Detailed list provided for review and correction

Sombra RMM enrollment: no billing needed per Mike

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-30 18:25:23 -07:00
7effdb012b Add note for Howard: Sombra Residential billing reminder
- Ticket #32225 exists but has no time logged
- Today's GuruRMM enrollment work is unbilled
- Needs either ticket update or new ticket creation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-30 18:23:14 -07:00
0f921a0414 session log: 2026-04-30 — Tedards/Bardach/Dataforth MSP work + DKIM setup
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 11:19:22 -07:00
1d3c1f53f4 Session log: cPanel CVE-2026-41940 IOC scan + remediation on IX/WebSvr
Both servers were already patched (11.110.0.97 and 11.134.0.20) via
daily auto-update. IOC scan found 16 flagged sessions across both
plus 4 uncommented SSH keys on IX.

Critical remediation:
- Forensic evidence preserved before any deletion
- 4 uncommented SSH keys removed from IX (server-side backup retained)
- 16 flagged sessions purged across both servers
- Root passwords rotated via chpasswd
- New WHM API tokens created; 3 stale transfer-* tokens revoked
- Vault entries + 1Password Infrastructure items updated

Forensic deep-dive verdict: patch held. All 7 actual CVE exploit
attempts (botnet IPs hitting /json-api/version) returned HTTP 403.
The "multi-line pass" IOC hits on user sessions were false positives.
Unidentified 76.18.103.222 root session traced to routine SSL
maintenance (zero sensitive endpoints touched).

Skill hardening:
- Added MANDATORY service-token directive to .claude/commands/1password.md
  enforcing OP_SERVICE_ACCOUNT_TOKEN from SOPS for all op CLI calls
- Per Mike: memory files alone don't reliably bind agent behavior;
  baking governance into skill content loaded at moment of use.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 07:22:52 -07:00
95ea8f3973 Session log: Cascades audit retention design + Pro-Tech Services email investigation
Cascades:
- Approved Howard's corrected 4-policy CA bypass design
- Caught + fixed policy 3 GDAP bug (Service provider users exclusion)
- Decided hybrid LAW + Storage Account audit retention (ACG-billed,
  reuse existing Trusted Signing Azure subscription, westus2)
- Wrote full audit retention runbook for Howard
- Reshaped break-glass to two accounts (split-storage YubiKeys)
- Documented Cascades M365 admin model (admin@/sysadmin@ Connect-excluded
  by design; local AD Administrator separate identity layer)
- Decided Howard gets Owner on ACG sub with guardrails (resource lock +
  cost alert) instead of per-RG Contributor

Pro-Tech Services:
- DNS recon of pro-techhelps.com + pro-techservices.co
- Diagnosed calendar invite delivery issue (DKIM domain mismatch +
  no DMARC = strict receivers silently drop invites)
- Drafted non-technical IT-provider migration email to Michelle Sora

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 17:05:41 -07:00
84db62f93a session log: add note for Howard - Cascades CA fix approved, new approval workflow
Howard is cleared to proceed with Path A (Graph API role assignment) for
Cascades CA Administrator fix.

Also communicated new approval workflow:
- General tools: Howard can modify OR Claude can execute with Howard/Mike approval
- Projects: require Mike approval, features→roadmap, bugs→bug list

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-29 06:54:42 -07:00
12c843ec9d Session log: Mac sync and review session (2026-04-28)
Synced with Gitea, reviewed 14 commits from GURU-BEAST-ROG:
- Radio show audio processing (Tara voice profile, Q&A extraction, 4090 benchmark)
- Cascades client work (Howard - HIPAA remediation, Entra Connect staging)
- Valleywide client init (app modernization project)

Note detected: Co-host name 'Tom' needs correction in radio show profiles.

Session type: Sync and context review only, no active development.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-28 05:38:49 -07:00
c35ffda2bd session log: 2026-04-27 general — SharePoint version history Q&A
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 19:42:14 -07:00
08cc67123d session log: terminal font investigation (inconclusive)
Appended update to 2026-04-24 session log covering the font change
investigation. Checked bash startup files, Windows Terminal settings,
registry console keys, raw PowerShell output bytes, and installed
fonts. No root cause found — user will report next real-time
occurrence for definitive diagnosis.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 07:54:33 -07:00
8f6b45ef32 syncro skill: bake in labor rates and API keys
- Add local rate table (pulled 2026-04-24) for all 7 labor products; always
  set price_retail explicitly — Syncro API does not auto-apply product rates
- Replace vault-based key fetch with inline case block on identity.json user;
  both Mike and Howard keys included for correct per-user attribution

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 07:14:13 -07:00
d7256cc381 save: Valleywide emergency comprehensive session log - switching to laptop
Comprehensive emergency response documentation:
- Complete timeline from 0935 arrival to 1115 handoff
- All 4 servers documented with current status
- HP ProLiant: NVRAM resolved, iLO pending
- Dell VWP-QBS: Boot issue resolved
- XenServer: OFFLINE (CRITICAL - Server3 VM down)
- 4th server: Appears fine

Work status:
- Timer running (~1h40m so far)
- Switching to laptop to continue
- XenServer restoration is highest priority

Created comprehensive session log:
- session-logs/2026-04-22-valleywide-power-outage-emergency-response.md
- Complete status, timeline, next steps, recommendations
- Ready for laptop continuation

All changes synced to Gitea for seamless handoff.

Machine: Mikes-MacBook-Air.local
Timestamp: 2026-04-22 11:05:39

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-22 11:05:39 -07:00