Commit Graph

507 Commits

Author SHA1 Message Date
a1bda2dc5b Session log: MSI deploy fix + migration registration
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 12:28:56 -07:00
b678af00fa Session log: desertrat.com Mailprotector SBR repair + Syncro API corrections
- Added desertrat.com to /etc/mailprotector_domains on Websvr (outbound SBR now active)
- Created Mailprotector bulk user import CSV (38 desertrat.com accounts/forwarders)
- Created Syncro ticket #32181 + invoice #67437 for Furrier (30 min remote, $81.53)
- Corrected syncro.md skill doc: add_line_item for billing, remove_line_item to delete,
  charge_timer_entry to convert timers, comment DELETE impossible via API
- Created clients/furrier/ with session log

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 12:24:15 -07:00
3dd0de4d0d Session log: GuruRMM MSI build fix + DESIGN.md + BirthBiologic onboarding
- Fixed MSI build on Pluto (missing WixToolset.Util.wixext in install.rs)
- Created docs/DESIGN.md in gururmm repo (per-component design guide)
- Saved BirthBiologic GuruRMM site credentials to vault
- Added birth-biologic and mvan-inc client session logs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 12:02:23 -07:00
06a3b779e0 sync: auto-sync from Mikes-MacBook-Air.local at 2026-04-21 09:15:48
Author: Mike Swanson
Machine: Mikes-MacBook-Air.local
Timestamp: 2026-04-21 09:15:48
2026-04-21 09:15:52 -07:00
c5418c1c5b sync: onboard Howard-Home machine
Added Howard-Home hostname to Howard's known_machines list.
Identity.json created locally (gitignored).

Author: Howard Enos
Machine: Howard-Home
2026-04-21 08:36:24 -07:00
71af8b1a78 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
9ba77a61b4 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
f2d2000180 sync: auto-sync from ACG-TECH03L at 2026-04-21 06:46:11
Author: Howard Enos
Machine: ACG-TECH03L
Timestamp: 2026-04-21 06:46:11
2026-04-21 06:46:24 -07:00
b03c85cdbe Session log: M365 tenant onboarding — 19 done, martylryan + grabblaw re-onboarded, Cascades admin renamed/vaulted 2026-04-21 05:28:15 -07:00
7a86fe15f3 docs: mark martylryan.com and grabblaw.com as done after successful re-onboard 2026-04-20 21:04:02 -07:00
23c63ffaba docs: update tenant-consent.html — 17 tenants marked done after batch sweep 2026-04-20 20:16:44 -07:00
f9950f889f fix: add sleep after SP creation + handle null appRoleAssignments in jq
New SPs need ~5s to replicate before appRoleAssignments can be granted.
Also fixes jq null iterator error when SP has no existing assignments.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 18:51:48 -07:00
f443ba7536 docs: add tenant-consent.html — clickable consent links for all 41 tenants
Dark-theme HTML page with one-click consent URLs for each tenant.
Tracks done/pending state in localStorage. Re-consent tenants (martylryan,
grabblaw) highlighted separately. No copy-paste needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 17:39:00 -07:00
24a0bb4f0a feat: onboard-tenant.sh now programmatically consents full app suite
After Tenant Admin is consented by customer admin, the script automatically:
- Creates SPs for Security Investigator, Exchange Operator, User Manager,
  and Defender Add-on (programmatic consent, no extra customer clicks needed)
- Grants all required Graph, Exchange Online, and Defender ATP appRoleAssignments
- Idempotent: skips any permissions already granted

Also added AppRoleAssignment.ReadWrite.All to Tenant Admin manifest so
fresh consents include this permission. Existing tenants (martylryan.com,
grabblaw.com) need a one-time Tenant Admin re-consent to pick it up.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 17:33:50 -07:00
24cc40e680 docs: add tenants.md with full partner tenant list + Tenant Admin consent URLs
41 CIPP-managed tenants sourced from ListTenants API. Includes onboarding
status, tenant IDs, and pre-built Tenant Admin consent URLs for each.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 17:23:13 -07:00
e8dc9a2a92 docs: mark Grabblaw fully onboarded — all three directory roles assigned
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 17:07:06 -07:00
265097d752 fix: remediation tool onboarding — add RoleManagement.ReadWrite.Directory + auto role assignment
Root cause: app-only Graph operations (password reset, Exchange REST) require
directory roles on each SP in the customer tenant, not just admin consent.
RoleManagement.ReadWrite.Directory was missing from all app manifests, making
role assignment impossible without manual portal work that was never being done.

Changes:
- patch-tenant-admin-manifest.sh: adds RoleManagement.ReadWrite.Directory to
  Tenant Admin app manifest via Management app, grants home-tenant consent
- onboard-tenant.sh: new script — resolves tenant, acquires Tenant Admin token,
  assigns Exchange Administrator to Security Investigator SP and User/Auth
  Administrator to User Manager SP; --dry-run supported; idempotent
- get-token.sh: detects AADSTS7000229, emits consent URL + onboard-tenant.sh
  reminder instead of silent failure
- gotchas.md: onboarding steps at top, tenant table expanded with role columns,
  all known tenants updated including martylryan.com (first fully onboarded)

Verified: martylryan.com fully onboarded, password reset to MLR2026!! succeeded

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 16:56:47 -07:00
a72e2e12d5 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
0a70aad0d2 sync: auto-sync from ACG-TECH03L at 2026-04-20 14:15:01
Author: Howard Enos
Machine: ACG-TECH03L
Timestamp: 2026-04-20 14:15:01
2026-04-20 14:15:07 -07:00
9924e0cfed 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
41e1f1f22f 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
391178ef02 fix: replace python3 with py/jq throughout scripts and docs
Windows Store python3 stub returns exit 49 instead of running Python.
Replace with: py (Windows launcher) for actual Python code, jq for
simple JSON extraction. Reorder fallback loops to try py first.
Add Bash(py:*) to settings.local.json allowlist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 12:14:43 -07:00
a50af7faf1 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
30af2d31c7 fix: update submodules to latest remote before staging in sync.sh
git add -A captured the stale submodule pointer on Howard's machine
(April 18 init, not updated) and committed it, causing a conflict.
Now sync always runs git submodule update --remote first so the pointer
is current before staging.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 11:49:52 -07:00
b3d15cb199 sync: auto-sync from DESKTOP-0O8A1RL at 2026-04-20 11:47:09
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-04-20 11:47:09
2026-04-20 11:47:32 -07:00
3d03de7b47 sync: auto-sync from ACG-TECH03L at 2026-04-20 11:42:02
Author: Howard Enos
Machine: ACG-TECH03L
Timestamp: 2026-04-20 11:42:02
2026-04-20 11:42:05 -07:00
2eb2d2f9dc 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
a7afd52c76 Remediation report: breach check john.trozzi@cascadestucson.com — mailbox clean, phishing received
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 11:35:18 -07:00
52e625f102 report: Cascades Tucson phishing sweep - deleted 14 phish across 7 users
Triggered by John Trozzi reporting a spoof email. Single-user check
confirmed him clean (reported, not compromised). Tenant-wide sweep
found a sustained ~1 month campaign from 4 external IPs (UA/US/DE/AT
- deltahost + ColoCrossing) plus a compromised-M365-tenant relay
vector. Deleted 14 messages (Groups A+B) per Mike's explicit
authorization. Preserved legitimate HR thread (HRPYDBRUN xlsx) and
user outbound forwards as evidence.

Recommendations in report: DMARC p=quarantine/reject for
cascadestucson.com (biggest leverage), TABL IP blocks, zoom.nl
URL block, Defender impersonation protection.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 09:39:22 -07:00
545496c22a sync: auto-sync from DESKTOP-0O8A1RL at 2026-04-20 08:05:31
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-04-20 08:05:31
2026-04-20 08:05:34 -07:00
b2d58bbbf0 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
687f33146e merge: sync from Howard's laptop - Cascades Intune MDM work + submodule update
Merged Howard's work from ACG-TECH03L:
- Cascades Tucson PROJECT_STATE updated with Intune MDM enrollment
- New session log: Howard's Intune prerequisites and enrollment profile setup
- GuruRMM submodule updated to b91ac5e (parallel build improvements)

Resolved submodule conflict by taking latest origin/main (b91ac5e).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-20 05:44:29 -07:00
596b4e65ae sync: auto-sync from Mikes-MacBook-Air.local at 2026-04-20 05:43:53
Author: Mike Swanson
Machine: Mikes-MacBook-Air.local
Timestamp: 2026-04-20 05:43:53
2026-04-20 05:43:54 -07:00
41f5b6a21c sync: auto-sync from ACG-TECH03L at 2026-04-20 00:02:36
Author: Howard Enos
Machine: ACG-TECH03L
Timestamp: 2026-04-20 00:02:36
2026-04-20 00:02:38 -07:00
27c2df201e sync: auto-sync from DESKTOP-0O8A1RL at 2026-04-19 20:31:28
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-04-19 20:31:28
2026-04-19 20:31:28 -07:00
eb27a5e8e4 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
e5f4bbc105 docs: update GuruRMM agent PROJECT_STATE with Mac deployment (v0.6.1)
- macOS ARM64 agent deployed to Mikes-MacBook-Air.local
- Agent ID: 001d5198-7807-4d63-b46d-069c9c10ed75
- Authenticated successfully with site code SWIFT-CLOUD-6910
- Remote command execution verified (root privileges)
- LaunchDaemon service configured
- Passwordless sudo rules created for manual operations
- Fixed authentication issue (api_key vs site_code)
- Deleted stale agent entry from April 3 crash

Machine: Mikes-MacBook-Air.local
Timestamp: 2026-04-20 19:45:00

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-19 19:39:43 -07:00
9af84b2f47 sync: auto-sync from Mikes-MacBook-Air.local at 2026-04-19 19:34:27
Author: Mike Swanson
Machine: Mikes-MacBook-Air.local
Timestamp: 2026-04-19 19:34:27
2026-04-19 19:34:27 -07:00
80a3e3cca4 sync: update gururmm submodule pointer 2026-04-19 18:57:36 -07:00
a6354e306f sync: auto-sync from DESKTOP-0O8A1RL at 2026-04-19 18:56:33
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-04-19 18:56:33
2026-04-19 18:56:34 -07:00
d4157cd883 chore: add Ollama Tier 0 routing — delegate low-stakes work to local models
- Tier 0 (Ollama): summarize, classify, extract, draft, format — free/fast/private
- qwen3:14b for general tasks; codestral:22b for code suggestions
- Falls back to Haiku if Ollama unreachable or task needs agent tool use
- Bump rule extended: Ollama → Haiku on security/auth/migration/production
- Delegation pattern: direct Bash curl, not an agent spawn
- Per-task model guidance and review policy documented

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 18:55:50 -07:00
0726de4c9a chore: add PROJECT_STATE.md to all active projects and clients
Establishes inter-session coordination for 29 projects/clients:
- Full lock/component format for active projects (dataforth-dos,
  radio-show, cascades-tucson, valleywide, instrumental-music-center,
  lens-auto-brokerage, msp-audit-scripts)
- Light format for complete/stalled/planning (msp-pricing, pavon,
  wrightstown-*, gururmm-agent, community-forum, glaztech, etc.)
- Onboarding stubs for recently added clients

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 18:53:34 -07:00
d1059d92f4 chore: add PROJECT_STATE.md action protocol to CLAUDE.md
Formalizes the read → lock → act → release cycle for any project
that has a PROJECT_STATE.md. Every Claude instance must:
- Re-read state before any action (not just at session start)
- Claim a lock row before touching any component
- Release lock + log result on completion or failure
- Clear stale locks (>2h) before proceeding
Applies to code edits, git ops, SSH/deploy, DB migrations, builds.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 18:52:15 -07:00
dac7043bdf chore: add GuruRMM inter-session coordination system + PROJECT_STATE hook
- CONTEXT.md: static reference (infra, build pipeline, arch decisions, anti-patterns)
- PROJECT_STATE.md: live inter-session state tracker (locks, changelog, pending)
- CLAUDE.md: auto-read PROJECT_STATE.md alongside CONTEXT.md on GuruRMM context load
- Session log 2026-04-20: enrollment Option 3, installer Option B, no-TOML prohibition
- installer/gururmm-agent.wxs + README.txt committed in submodule

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 18:37:22 -07:00
99c28d2d66 chore: update gururmm submodule to f827ab4 (v0.6.2 bump) 2026-04-19 17:29:37 -07:00
b93a9b1bf1 chore: update gururmm submodule to e93b56f (fix #7 Windows .old cleanup)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 17:19:08 -07:00
70bc3ad8c5 chore: update gururmm submodule to 5872a72 (BUG-001 temperature doc) 2026-04-19 16:25:17 -07:00
10677ae919 chore: update gururmm submodule to c80e1f1 (shadcn/ui migration + fixes)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 16:16:34 -07:00
ea3c03f340 docs: restore full /sync command documentation to repo
Restored the complete 504-line sync.md documentation from global
commands directory to the repo version. This ensures:
- Single source of truth for /sync documentation
- Documentation syncs across all machines
- PC and Mac have identical command reference

Previous simplified 39-line stub has been replaced with full
documentation including phases, examples, conflict resolution,
and troubleshooting.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-19 16:02:47 -07:00
61e940ad63 chore: update gururmm submodule to 69ed647 (server-triggered log upload) 2026-04-19 15:55:53 -07:00