Commit Graph

97 Commits

Author SHA1 Message Date
70ba676176 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
c74e5bccbb 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
4828be10e2 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
859dd40db5 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
eb61157adc 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 b008b61 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
935b6995e5 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
bd3fac798e 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
1280f50ff8 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 ec98c6c)
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
833a662b0c 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
a0d955bcd5 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
03b51b7179 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
87789ed9bb 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
e000b8c3e8 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
45ca852a1f 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
175592f966 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
106c655dea 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
7785731c16 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
c5b64259a5 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
7128b9e57d 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
447b90e092 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
dbf4325c46 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
b3da922901 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
72b7996be4 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
ffe29b286f 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
daeea5f26c 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
af60f8231f 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
e2028fe6f8 session log: Intune enrollment check, sync/Howard messages, Cloudflare DNS toggle, profile migration fixes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 05:38:27 -07:00
a771d4ed11 Session log: Mac vault setup + remediation-tool validation
Complete vault and SOPS setup on Mac from scratch. Fixed critical
get-token.sh bugs (variable collision + directory depth), validated
vault sync from Windows, tested all 5 tiers.

Key accomplishments:
- Installed SOPS 3.12.2 + age 1.3.1 via Homebrew
- Configured age private key and SOPS environment
- Cloned vault repository with 6 SOPS files
- Fixed vault.sh line endings (CRLF → LF)
- Token acquisition working: 4/5 tiers (defender not consented)
- Created comprehensive VAULT-SETUP-GUIDE.md (522 lines)
- Removed guru-rmm submodule auto-update from sync script

Remediation-tool now portable across Mac/Windows. Ready for Howard setup.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-21 19:54:25 -07:00
3f94aefa57 ops: vault + age key setup instructions for Howard and Mac 2026-04-21 19:38:15 -07:00
924f326e7f sync: auto-sync from ACG-TECH03L at 2026-04-21 08:09:28
Author: Howard Enos
Machine: ACG-TECH03L
Timestamp: 2026-04-21 08:09:28
2026-04-21 08:09:38 -07:00
50140ac88c Session log: Cloudflare tunnel decommission + pfSense audit
Decommissioned cloudflared tunnel, migrated 9 services to direct CF proxy,
removed ~22 stale pfSense rules and 22 unused aliases.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 07:28:15 -07:00
7b068b1439 Session log: M365 tenant onboarding — 19 done, martylryan + grabblaw re-onboarded, Cascades admin renamed/vaulted 2026-04-21 05:28:15 -07:00
749a472089 Session log: BG Builders billing fix + OITVOIP API research
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:42:08 -07:00
06c53ee324 Session log: glaztech DMARC override + syncro skill billing fix
- clients/glaztech/session-logs/2026-04-20-session.md: Exchange Online
  transport rule created to bypass DMARC for clearcutglass.com
- session-logs/2026-04-20-session.md: update with 12:55 work
- .claude/commands/syncro.md: fix billing workflow — comment endpoint
  silently drops time fields; use timer_entry endpoint instead

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 12:56:31 -07:00
a8b4a7c324 Session log: CLAUDE.md optimization + python3/py fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 12:48:42 -07:00
056e36aeac refactor: optimize CLAUDE.md context footprint (-49%)
Extract Ollama docs and PROJECT_STATE locking protocol to on-demand
reference files. Trim Work Mode to detection table only. Remove verbose
anti-pattern examples and credential encryption details.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 12:09:17 -07:00
26df2c47b9 Session log: remediation skill rewrite (5-app tiered arch) + Cascades breach check John Trozzi
- Rewrote get-token.sh: tiered app system (investigator/exchange-op/user-manager/tenant-admin/defender)
- Updated SKILL.md, command, gotchas, checklist, graph-endpoints for new app suite
- Cascades breach check: mailbox clean, inbound phishing received by John, DMARC gap noted

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 11:35:18 -07:00
4eb0d208f2 session: Mac GuruRMM agent deployment + Grabb & Durando user provisioning started
Work completed on Mac:
- GuruRMM agent v0.6.1 deployed successfully
- Agent ID: 001d5198-7807-4d63-b46d-069c9c10ed75
- Root command execution verified (61ms)
- PROJECT_STATE.md updated with deployment details
- Passwordless sudo configured for GuruRMM operations

Work in progress (continue on Windows):
- Grabb & Durando user provisioning for Svetlana Larionova
- Email: slarionova@grabblaw.com
- Start date: Tuesday, April 22, 2026 (tomorrow)
- Admin credentials: sysadmin@grabblaw.com / r3tr0gradE99!
- Tenant: 032b383e-96e4-491b-880d-3fd3295672c3
- Consent link issues - will create manually in Admin Center

Session log: 331 lines, comprehensive documentation for context recovery

Machine: Mikes-MacBook-Air.local
Timestamp: 2026-04-20 07:59:00

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-20 08:04:27 -07:00
5c59e7c57e session: log PROJECT_STATE rollout + GuruRMM overnight work summary
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 19:42:57 -07:00
41b7648133 scc: Session save and push from Mikes-MacBook-Air.local at 2026-04-19 08:34:23
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-19 08:34:23 -07:00
6a135ac111 Session log: Claude Code model selection Q&A + complexity-based sub-agent routing system
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 08:54:20 -07:00
975adda092 Session log update: Mythos integration + Claude Code version inquiry 2026-04-18 08:41:41 -07:00
5b8813af4d Session log: Radio show fresh news prep (Artemis II, quantum, cancer detection, AI Index)
Created comprehensive show prep using breaking news from April 9-18, 2026:
- Artemis II post-flight news conference (April 16)
- IonQ quantum 'Holy Grail' breakthrough (April 14)
- 90% cancer detection from stool samples via AI (April 9)
- Stanford AI Index 2026 findings
- RAM shortage hitting consumers today

Replaced recycled CES content with current, timely stories.
File: projects/radio-show/episodes/2026-04-18-tech-that-makes-life-fun/show-prep-fresh.html

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-18 08:03:34 -07:00
c957ef33ef Session log: Syncro bulk ticket closure (179), Howard GuruRMM account, AT Trebesch review
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 07:29:43 -07:00
a80ea236ba Session log: SC redirect page, SAGE-SQL session manager, Howard GuruRMM account, AT Trebesch review, shared work items
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 20:50:28 -07:00
fe3b5b0382 Add SAGE-SQL session manager app, shared work items board, update session log
- Session manager: self-service RDP session reset for Dataforth users (Default.aspx + web.config)
- WORKITEMS.md: shared task board for Mike/Howard with @tagging, syncs via Gitea
- Session log: deployment deferred due to VPN connectivity issues

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 20:05:54 -07:00
e695743149 Session log: Cascades vault fix, Ollama Tailscale sharing, Howard review
Fixed Cascades pfSense password in vault (a6A6c6fe→Th1nk3r^99, moved from
dataforth to cascades-tucson). Ollama exposed via Tailscale for Howard
(100.92.127.64:11434, firewall restricted to 100.0.0.0/8). Reviewed
Howard's first full day of work on shared system.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 13:09:29 -07:00
68d9836245 Session log: Glaztech/MVAN phishing remediation, Syncro integration, DNS hardening
Glaztech: 32 phishing messages purged, MX/DMARC/EFC hardened, incident report.
MVAN: DMARC p=reject added. Syncro /syncro command built (comment+time flow).
GoDaddy API onboarded. jparkinsonaz.com DNS fixed (A→Neptune, DMARC, autodiscover).
desertrat.com audited (needs DMARC + SPF fix on Route 53).
Jupiter OwnCloud migration confirmed complete.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 12:43:09 -07:00
32888ea9d4 sync: auto-sync from ACG-TECH03L at 2026-04-17 11:26:41
Author: Howard Enos
Machine: ACG-TECH03L
Timestamp: 2026-04-17 11:26:41
2026-04-17 11:26:46 -07:00
f190f7813f Session log: OwnCloud cache migration completed successfully
589G OwnCloud data moved from cache SSD to disk7 array (2h49m rsync).
Cache dropped from 82% to 34%. MariaDB + Discourse recovered and running
7h+ healthy. Share config changed to no-cache permanently.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 05:39:39 -07:00