Files
claudetools/.claude/memory/MEMORY.md
Howard Enos 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

8.6 KiB
Raw Blame History

Memory Index

Reference

  • Syncro API — Invoice Verification Pattern - CRITICAL: List endpoint (/invoices?customer_id=X) does NOT return ticket linkage. Must query individual invoices (/invoices/{number}) to get ticket_id field. Invoice numbers are strings. Use ticket ID (not number) for comparison. Real case: falsely reported 31 tickets had no invoices (actually 29 had invoices, 2 were Non-Billable).
  • Approval Workflow: Tools vs Projects - General tools (remediation-tool, onboard scripts, MSP utilities): Howard can modify OR Claude can execute with Howard/Mike approval. Projects (GuruRMM, etc.): require Mike approval, features→roadmap, bugs→bug list.
  • Community Forum (Flarum) - Flarum forum at community.azcomputerguru.com, API access, database, posting workflow
  • Radio Show Website - Astro static site at radio.azcomputerguru.com on IX server
  • IX Server SSH Access - SSH access notes, no key auth from CachyOS workstation yet
  • IX Access via Tailscale - IX server accessible with Tailscale on, no VPN needed
  • Neptune Access via D2TESTNAS - Neptune must be routed through D2TESTNAS
  • ACG-5070 Workstation - Windows 11, replaced CachyOS. SOPS vault, Ollama, all dev tools.
  • Matomo Analytics - Self-hosted analytics at analytics.azcomputerguru.com, site IDs, tracking for all 3 sites
  • Dataforth Contact - AJ - AJ at Dataforth, dataforthgit@ email forwarding to him
  • TickTick Integration - OAuth API integration, MCP server, SOPS vault creds, project/task CRUD
  • Client Docs Structure - clients//docs/ layout (overview, network, servers, cloud, security, rmm, issues). Template at clients/_client_template/.
  • MSP Audit Scripts - server_audit.ps1 / workstation_audit.ps1 at projects/msp-tools/msp-audit-scripts/. ScreenConnect 80-char rule.
  • GuruRMM Server Layout - SSH as guru, repo at /home/guru/gururmm, deploy to /var/www/gururmm/dashboard/
  • GuruRMM API — run script on agent - POST /api/agents/:id/command with command_type=powershell + command text; poll /api/commands/:id for stdout/stderr. Use instead of ScreenConnect copy-paste.
  • Pluto Build Server - General-purpose Windows build VM, 172.16.3.36, SSH as Administrator, MSVC toolchain — use for any EXE (utilities, Howard's tools, GuruRMM agent)

Users

  • Howard Enos — Mike's brother, technician, full trust/access. Known machine: ACG-TECH03L.

Feedback

  • D2TESTNAS SSH Access - Use root@192.168.0.9 with Paper123!@#, not sysadmin
  • Bypass Permissions Setting - Set permissions.defaultMode to bypassPermissions in settings.json on all machines
  • 365 Remediation Tool - Always means Graph API app fabb3421, not CIPP
  • Ollama Tier-0 Routing - Route drafts/summaries/classifications through Ollama (qwen3:14b). Mike designed ClaudeTools this way — not optional.
  • Syncro Emergency Billing — Emergency = 1.5× multiplier, not additive. Branch by customer.prepay_hours: no-prepaid → 26184 at actual hrs; prepaid → 26118 at hrs×1.5. Never stack. Always set price_retail.
  • Identity precedence — Trust .claude/identity.json over the system-reminder userEmail hint when they disagree (shared-login machines).
  • 1Password — always use service token — Source OP_SERVICE_ACCOUNT_TOKEN from SOPS for every op call. Desktop-app integration prompts are unacceptable in agent flows.
  • /tmp path mismatch on Windows — Write tool and Git Bash resolve /tmp to DIFFERENT real dirs. Use heredoc or workspace path for JSON payloads handed to curl. Caused wrong-comment incident on Syncro #32225.
  • Syncro — leave contact blank by default — Default to blank contact ("Not Assigned") on tickets and billing for ALL customers. Blank lets Syncro use company-level email defaults; setting a contact may route to a secondary email and bypass distribution. Generalizes the prior Cascades-only rule per Winter 2026-05-04.
  • Syncro — never set contact on Cascades tickets — Cascades-specific instance of the blank-contact rule above. Kept for the Meredith-defaulting incident detail.
  • Syncro — use a billable labor type, never "Prepaid project labor" — Time entries must use in-shop / onsite / remote / web labor. "Prepaid project labor" is exempt and won't decrement prepay blocks. Default is Remote labor for typical support tickets. Winter caught this 2026-05-04.
  • Syncro — log time entries first, never bare add_line_item — All Syncro work-time billing MUST go through timer_entry → charge_timer_entry. Bare add_line_item leaves Syncro time tracking at 00:00:00 and breaks reporting. Mike caught this on 2026-04-30 across 31 tickets; I repeated the bug on 2026-05-01 across 3 more.
  • Syncro — timer_entry response is FLAT — POST /tickets/{id}/timer_entry returns {"id": N, ...} directly, NOT {"timer": {...}}. Parse as .id. The skill doc's .timer.id // .timer_entry.id fallback always resolves to null and causes duplicate-timer retries. Hit on #32253 2026-05-05.
  • Syncro — warranty has its own product, never patch dollar amounts — Warranty/no-charge work uses product 1049360 (Labor- Warranty work, $0). Do NOT use Remote/Onsite + billable: false — Syncro silently overrides the flag. Do NOT patch price_retail to convert one labor product into another; pick the correct product and re-run. Hit on #32225 2026-05-06.
  • SQL instance role — verify by connections, not name — Standard installed under default SQLEXPRESS instance name is real. Prove role with sys.dm_exec_sessions + Get-NetTCPConnection -OwningProcess before recommending stop/uninstall. IMC1 2026-05-05/06 near-miss.

Machine

Pending Setup

  • Mac gururmm setup pending — ACTION REQUIRED: run bash scripts/install-hooks.sh in gururmm repo on Mikes-MacBook-Air before any RMM work

Project