Commit Graph

561 Commits

Author SHA1 Message Date
087e7cabc6 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-11 19:44:15
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-11 19:44:15
2026-05-11 19:44:15 -07:00
373531d235 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-11 19:16:35
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-11 19:16:35
2026-05-11 19:16:35 -07:00
6183b1c319 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-11 18:22:21
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-11 18:22:21
2026-05-11 18:22:23 -07:00
0a0054c9ca sync: auto-sync from HOWARD-HOME at 2026-05-11 18:06:36
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-11 18:06:36
2026-05-11 18:06:39 -07:00
2adb4b9e92 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-11 15:10:14
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-11 15:10:14
2026-05-11 15:10:15 -07:00
afd6fdeced sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-11 13:45:09
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-11 13:45:09
2026-05-11 13:45:10 -07:00
1c0df9b1bd sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-10 19:52:39
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-10 19:52:39
2026-05-10 19:52:40 -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
cc976863fc sync: auto-sync from HOWARD-HOME at 2026-05-08 19:54:23
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-08 19:54:23
2026-05-08 19:54:24 -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
2349259999 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-08 12:25:28
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-08 12:25:28
2026-05-08 12:25:32 -07:00
56ada4bea1 fix(syncro): correct billing rules for prepaid customers and ticket creation defaults
- Add hard rule: 9269129 (Prepaid Project Labor) is Exempt and does NOT deduct
  from prepay_hours block — never use for normal work (verified 2026-05-04)
- Expand prepay_hours check from emergency-only to ALL billing workflows
- Fix emergency/prepaid branching table to use delivery-channel product instead
  of hardcoding 26118 (Onsite) for remote and other labor types
- Clarify invoice step 15: $0.00 invoice total is correct for prepaid customers;
  verify by checking customer.prepay_hours dropped by quantity
- Field 7 (Assigned Tech): add explicit default to API key owner; mark as MUST
  always be included in POST payload to prevent null user_id on ticket create
- Add billing workflow hard rule: read prepay_hours before any billing, not just
  emergency, so prepaid invoice behavior is known before execution begins

Triggered by ticket #32265 (Russo Law Firm) missing assignee/priority/billing.
Russo Law has 12.5 prepaid hrs — 0.5 hrs correctly deducted via invoice #67578.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 12:16:48 -07:00
8539f62462 radio-archive: add /api/clip endpoint + download buttons + ffmpeg in Dockerfile
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 08:44:46 -07:00
b1fac9ba16 sync: auto-sync from Mikes-MacBook-Air.local at 2026-05-08 10:42:22
Author: Mike Swanson
Machine: Mikes-MacBook-Air.local
Timestamp: 2026-05-08 10:42:22
2026-05-08 10:42:23 -04:00
d019b1e9ad Cascades: ACTION FOR HOWARD - Britney Thompson litigation hold manual check
Exchange REST API still propagating (28 min). Need manual verification via
Exchange Admin Center to unblock HIPAA compliance check.

Instructions provided:
- Access Exchange Admin Center
- Search for Britney Thompson mailbox
- Document litigation hold status (enabled/disabled, date, duration)
- Report findings back in repo

Priority: HIGH - blocks Wave 1 caregiver rollout planning.

HIPAA requirement: §164.308(a)(3)(ii)(C) + §164.316(b)(2)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-08 10:37:34 -04:00
8807b1f168 Cascades: Exchange REST API propagation status - 28 min elapsed
HTTP 401 'invalid_token' still persisting despite correct role assignments.
All Graph API verifications pass - this is Exchange cache propagation delay.

Verified working:
- Exchange Administrator role assigned to Security Investigator SP
- Office 365 Exchange Online app role: dc890d15-9560-4a4c-9b7f-a736ec74ec40
- Token acquisition for investigator-exo tier

Timeline:
- 09:05 AM: Role assigned
- 09:33 AM: Still propagating (28 min elapsed)
- 10:00 AM: Recommended retry (55 min)
- 10:30 AM: Escalation point (85 min)

Blocking: Britney Thompson litigation hold verification for HIPAA compliance.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-08 10:35:15 -04:00
9aab0dc35a cascades: SDM activation root-caused, devices@ provisioning account created
9-hour day on Cascades caregiver phone Shared Device Mode activation.
Root cause of repeated AADSTS50097 was missing Cloud Device Administrator
role -- pilot.test cannot self-register devices for shared mode. Created
dedicated devices@cascadestucson.com (CDA role, MFA on Howard's phone).
Final attempt on Phone A produced an Entra device record with shared-mode
markers (registeredOwners=0, registeredUsers=0). Resume tomorrow by
signing pilot.test in to verify SDM is actually active.

Side wins: ALIS SSO Entra App Registration created (vault commit 90ada33,
blocked on Medtelligent enabling App Store side); 2 of 3 caregiver CA
policies flipped from Report-only to Enforced; kiosk profile bumped to
v13 with full Android nav bar, 12hr inactivity signout, 6-app allowlist
including Company Portal.

Microsoft ticket #2605070040009774 still open.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 18:38:37 -07:00
6b3ae407bd Add Scileppi Law client folder: Sylvia Mac mini Mail memory diagnosis (Syncro #32262)
New client onboarding for The Law Offices of Chris Scileppi with initial
session log documenting diagnosis on Sylvia's Mac mini (Mac14,3, M2, 8 GB).

Issue: System running out of memory; Apple Mail footprint thrashing the box.
Two Envelope Index rebuild attempts confirmed the mailbox itself exceeds what
8 GB can hold. Disabled Mail at the OS level, moved user to webmail, and
recommended replacement with an M4 Mac mini (16 or 24 GB).

Ticket #32262 resolved. 1 hr onsite logged but deliberately not invoiced.

Files:
- clients/scileppi-law/PROJECT_STATE.md
- clients/scileppi-law/docs/overview.md
- clients/scileppi-law/docs/issues/log.md
- clients/scileppi-law/session-logs/2026-05-07-howard-sylvia-mac-mini-mail-memory.md
2026-05-07 17:11:40 -07:00
2a285d9898 Cascades: MSP app suite onboarding complete
All 5 ComputerGuru apps successfully onboarded:
- Security Investigator, Exchange Operator, User Manager, Tenant Admin, Defender Add-on
- API permissions granted (0 errors)
- Exchange Administrator role assigned to Security Investigator SP

Exchange REST API access pending propagation (15-30 min typical).

Next: Re-test Exchange REST after 09:30 AM MST to verify litigation hold check.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-07 09:10:02 -04:00
1d38cdf8c9 Cascades: Britney Thompson litigation hold check - app onboarding required
Cannot verify litigation hold status - ComputerGuru Security Investigator
app not onboarded to Cascades tenant (HTTP 401 on Exchange REST).

User account confirmed (Britney.Thompson@cascadestucson.com).

Next steps:
- Onboard Security Investigator app to tenant
- Assign Exchange Administrator role
- Re-run litigation hold verification

HIPAA compliance blocker per Howard's 2026-05-06 note.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-07 09:05:45 -04:00
e03e9913d3 IMC1: Memory allocation approval + AD/WSUS clarification
Approved:
- Memory caps: SQLEXPRESS 12GB, WID 512MB, AIMSQL 256MB
- AIMSQL consolidation (pending backup)
- AD is in use, WSUS is not

Howard may proceed with implementation.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-07 09:00:02 -04:00
d63dcde679 sync: auto-sync from HOWARD-HOME at 2026-05-06 15:10:59
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-06 15:10:59
2026-05-06 15:11:04 -07:00
4da4e5bac5 sync: auto-sync from HOWARD-HOME at 2026-05-06 13:50:24
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-06 13:50:24
2026-05-06 13:50:25 -07:00
f8c6b4b9ca sync: auto-sync from HOWARD-HOME at 2026-05-06 13:46:20
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-06 13:46:20
2026-05-06 13:46:23 -07:00
eaae28c201 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-06 08:02:12
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-06 08:02:12
2026-05-06 08:02:16 -07:00
95ad40bdbe cascades: document Teams rollout + HIPAA test plan
Lauren Hasselman could not create a Teams group on 2026-05-05.
Diagnostic confirmed the block is at the Teams Admin policy layer
(intentional, gated on HIPAA prerequisites in m365.md issues #12-#14),
not an Entra/M365-Group permissions defect. New teams-rollout.md
captures prerequisites, HIPAA config checklist, canary test plan
(Lauren as primary canary), and exit criteria. Linked from m365.md
issue #14.
2026-05-05 22:01:28 -07:00
c9a47a4ded sync: auto-sync from HOWARD-HOME at 2026-05-05 18:57:19
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-05 18:57:19
2026-05-05 18:57:20 -07:00
0f3ea95010 sync: auto-sync from HOWARD-HOME at 2026-05-05 18:52:18
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-05 18:52:18
2026-05-05 18:52:18 -07:00
03d985fe33 sync: auto-sync from HOWARD-HOME at 2026-05-05 18:51:23
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-05 18:51:23
2026-05-05 18:51:24 -07:00
0f79fdedf4 sync: auto-sync from HOWARD-HOME at 2026-05-05 18:46:49
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-05 18:46:49
2026-05-05 18:46:49 -07:00
01abf21a1f sync: auto-sync from HOWARD-HOME at 2026-05-05 17:13:15
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-05 17:13:15
2026-05-05 17:13:16 -07:00
eb73a55442 sync: auto-sync from HOWARD-HOME at 2026-05-05 16:47:31
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-05 16:47:31
2026-05-05 16:47:31 -07:00
bc39d75304 sync: auto-sync from HOWARD-HOME at 2026-05-05 16:44:25
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-05 16:44:25
2026-05-05 16:44:26 -07:00
fd8361d0a6 sync: auto-sync from HOWARD-HOME at 2026-05-05 16:31:33
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-05 16:31:33
2026-05-05 16:31:34 -07:00
45ec03b447 sync: auto-sync from HOWARD-HOME at 2026-05-05 15:00:22
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-05 15:00:22
2026-05-05 15:00:22 -07:00
b6eb59e8ed Session work 2026-05-04: Grabb Leap calendar fix, Dataforth lobby phone VLAN, IMC printer + VPN
- Grabb & Durando: investigated and resolved Svetlana Larionova's Leap-to-M365 calendar OAuth consent issue (Graph-side report + session log). Syncro #32245.
- Dataforth: lobby phone (ext 201) was offline due to D1-Server-Room port 1 being on the wrong VLAN; reconfigured to VLAN 100, phone re-provisioned and registered. Session log + PROJECT_STATE update. Syncro #32246.
- Instrumental Music Center: Station 2 receipt printer reconnect + VPN install on Manda's machine. Syncro #32247.
- Memory: generalized the Syncro blank-contact rule (was Cascades-only) and added the labor-type rule (never use "Prepaid project labor") per Winter's 2026-05-04 corrections.
- Gitignored `.claude/tmp/` so per-session helper scripts don't sneak in.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 13:51:59 -07:00
d9812f75cd sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-04 12:24:49
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-04 12:24:49
2026-05-04 12:24:51 -07:00
72dab09d3a Session log: Dataforth M365 follow-up investigation - jantar@dataforth.com
Follow-up on three pending items from breach check:
- IdentityRiskyUser scope: consented but requires P2 license
- Dime Client app: internal app requiring verification with Dan Center
- Microsoft Authenticator: drafted upgrade plan and recommendations

Created comprehensive follow-up report with action items.

Machine: Mikes-MacBook-Air
User: Mike Swanson (mike)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-05-03 15:00:30 -04:00
2e98f95c9f Session log: Dataforth M365 security investigation - jantar@dataforth.com
Darkweb scan follow-up: ran 10-point breach check on jantar@dataforth.com (no IOCs),
revoked eM Client OAuth grant and app role assignment, disabled eM Client SP tenant-wide.
Syncro ticket #109790034 created, billed 1hr prepaid, resolved.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-03 10:37:22 -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
a18fa5f93a ClaudeTools cleanup: drop dead context-recall layer, unify /save + /sync
Deletions (~1,500 lines of dead docs):
- .claude/hooks/ — docs-only directory, no executables. Referenced scripts
  setup-context-recall.sh / test-context-recall.sh did not exist. Hooks
  would have POSTed to localhost:8000; the API actually ran at
  172.16.3.30:8001 and is no longer in use.
- .claude/AUTO_CONTEXT_SYSTEM.md — 347-line duplicate spec of CLAUDE.md's
  Automatic Context Loading section, referencing unimplemented hooks.
- .claude/URGENT-vault-path-bug.md — 217-line urgency note for a fix that
  already shipped weeks ago.
- .claude/context-recall-config.env.example — config template for the same
  dead system.

Refactors (~500 lines net removed):
- /save and /sync now wrap bash .claude/scripts/sync.sh as the single
  source of truth for git ops. /save adds a session-log-writing step in
  front; /sync invokes the script directly.
- Dropped /sync's manual git phases that contradicted sync.sh.
- Dropped the cp -r ~/ClaudeTools/.claude/commands/* ~/.claude/commands/
  step (clobbered per-user customization in the multi-user model).
- Dropped auto-invoke of /refresh-directives (command does not exist).
- Dropped references to directives.md (file does not exist).
- /save now documents the rm -f save_narrative_prompt.txt step, fixing
  the stale-prompt bug Howard documented in feedback_tmp_path_windows.md.

Fixes:
- CLAUDE.md SESSION_STATE.md reference replaced with the canonical
  PROJECT_STATE.md (per-project, with protocol at
  .claude/PROJECT_STATE_PROTOCOL.md). 16 client folders already use
  PROJECT_STATE.md; SESSION_STATE.md was only a stale reference.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 18:33:46 -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
0ad62fbc9e remediation-tool: add cert-auth (client_assertion JWT) to get-token.sh
Auth selection logic:
- Default: prefer cert when cert_thumbprint_b64url + cert_private_key_pem_b64
  are present in the vault entry's credentials block; fall back to client_secret.
- REMEDIATION_AUTH=secret  -> force client_secret flow.
- REMEDIATION_AUTH=cert    -> force cert flow; error if cert fields missing.
- Logs [INFO] auth=cert/secret to stderr so users see which path was taken.

Cert flow signs an RS256 JWT (header includes x5t) via inline Python (PyJWT
+ cryptography), POSTs client_assertion_type +
client_assertion=<jwt> in place of client_secret. Same scope, same cache, same
error handling (AADSTS7000229 still emits the consent URL).

Single sops -d to a mktemp file feeds both field reads to avoid repeated
~1s decrypt invocations on Windows; trap removes plaintext on exit.

Verified end-to-end against tedards.net for all three modes after wiping
/tmp/remediation-tool/.
2026-05-01 16:52: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
b008b61440 sync: auto-sync from GURU-BEAST-ROG at 2026-05-01 15:05:53
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-05-01 15:05:53
2026-05-01 15:05:56 -07:00
ec98c6c636 syncro skill: timer-entry-first workflow + heredoc payloads
- Promote timer_entry → charge_timer_entry to default billing path; demote
  bare add_line_item to a clearly-labeled fallback for non-time items only.
  Mike caught the bare-add_line_item bug across 31 tickets on 2026-04-30;
  repeated on 3 tickets 2026-05-01. Time entries are required for Syncro
  reporting (hours per client, tech productivity, prepay burn).
- Replace /tmp/*.json payload pattern with heredoc throughout. /tmp resolves
  to C:\tmp\ in the Write tool but %LOCALAPPDATA%\Temp\ in Git Bash on
  Windows — different real directories. Caused a wrong-comment incident on
  ticket #32225 2026-05-01 (rogue payload from prior session). Heredoc
  avoids the file handoff entirely.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 10:58:20 -07:00
4f4491e7da sync: auto-sync from HOWARD-HOME at 2026-05-01 10:44:36
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-01 10:44:36
2026-05-01 10:44:39 -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
281cdc4e4f Session log: radio-show UI redesign recovery + Jupiter audio-404 diagnosis
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 05:41:07 -07:00