Commit Graph

761 Commits

Author SHA1 Message Date
7b8eda6ed3 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-22 17:45:07
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-22 17:45:07
2026-05-22 17:45:10 -07:00
7f925780d6 chore(gururmm): bump submodule to v0.6.27 (user-session execution context) 2026-05-22 17:40:38 -07:00
fa4ac2ea37 sync: auto-sync from HOWARD-HOME at 2026-05-22 15:40:30
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-22 15:40:30
2026-05-22 15:40:34 -07:00
62d8babad1 sync: auto-sync from GURU-BEAST-ROG at 2026-05-22 15:29:08
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-05-22 15:29:08
2026-05-22 15:29:09 -07:00
e9dac6580c Add ticket subject prefix check to estimate success criteria
The linked ticket subject must start with "Estimate - " before an estimate
task is considered complete. Added as criterion [4] in both the hard rules
block and the workflow success criteria block, with a self-correction step
(PUT /tickets/{id}) if the check fails.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 15:27:47 -07:00
11647cbf09 Update estimate ticket subject prefix from colon to dash
Change the linked ticket subject format from "Estimate: <subject>" to
"Estimate - <subject>" per Winter's request for consistent formatting.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 15:23:17 -07:00
4093028e01 sync: auto-sync from GURU-BEAST-ROG at 2026-05-22 15:18:36
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-05-22 15:18:36
2026-05-22 15:18:37 -07:00
68e523388a sync: auto-sync from GURU-BEAST-ROG at 2026-05-22 14:57:57
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-05-22 14:57:57
2026-05-22 14:58:52 -07:00
66c65fa9bb sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-22 13:42:56
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-22 13:42:56
2026-05-22 13:46:47 -07:00
ee865426c7 discord-bot: real-Chrome fallback for bot-blocked web research
Add scripts/web-fetch-chrome.py — drives the installed Chrome 148 headlessly
via Playwright (channel="chrome", no Chromium download), runs JS, strips the
HeadlessChrome UA tell, isolated profile so it never touches a human's open
Chrome. Wire it into DISCORD_CLAUDE.md ("Web Research / Bot-Blocked Sites":
WebFetch first, real-Chrome fallback) and refine the headless rule to permit
headless fetching while still forbidding visible/interactive browser windows.
Add playwright to requirements.txt (no `playwright install` needed). Restarted bot.

Tested: static + JS-rendered pages render; UA reports Chrome/148 (not Headless).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:14:55 -07:00
51d55566bf sync: auto-sync from GURU-BEAST-ROG at 2026-05-22 13:13:08
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-05-22 13:13:08
2026-05-22 13:13:09 -07:00
e0017e96c2 sync: auto-sync from GURU-BEAST-ROG at 2026-05-22 12:49:39
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-05-22 12:49:39
2026-05-22 12:49:40 -07:00
eda8420ba6 discord-bot: resolve Rob's Syncro scope contradiction — full billing access
Rob's CAN list granted full Syncro "same as any tech" (incl. bill time +
create invoices), but the CANNOT list forbade billing actions (add line
items, create invoices, update ticket status) — a direct conflict that left
the bot's behavior on Rob's billing requests undefined. Per Mike, Rob gets
full Syncro including billing; remove the contradicting CANNOT line. Restarted bot.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 12:43:50 -07:00
25dfb1b22a sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-22 12:08:26
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-22 12:08:26
2026-05-22 12:08:31 -07:00
aa3b524df1 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-22 12:06:06
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-22 12:06:06
2026-05-22 12:06:11 -07:00
943f1d1a2d sync: auto-sync from GURU-BEAST-ROG at 2026-05-22 11:46:56
Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-05-22 11:46:56
2026-05-22 11:46:58 -07:00
e80c36e6bf sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-22 11:07:55
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-22 11:07:55
2026-05-22 11:07:59 -07:00
edf51627e1 sync: auto-sync from HOWARD-HOME at 2026-05-22 09:03:36
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-22 09:03:36
2026-05-22 09:03:39 -07:00
d655ff1564 Session log: CryoWeave website redesign - complete static site build and deployment 2026-05-22 07:57:48 -07:00
1bd86bb431 Session log: Final sync and directives refresh
- Pulled 3 commits from DESKTOP-0O8A1RL (Windows machine)
- Synced 10 global commands to ~/.claude/commands/
- Completed directives self-assessment (no violations)
- Documented cross-machine work context
- Total session log: 739 lines with complete context

Session complete. All machines synchronized.
2026-05-22 06:32:40 -07:00
7044e17348 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-21 19:29:58
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-21 19:29:58
2026-05-21 19:30:01 -07:00
0a264ee3fa sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-21 17:11:07
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-21 17:11:07
2026-05-21 17:11:10 -07:00
e3a56bcb21 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-21 17:00:27
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-21 17:00:27
2026-05-21 17:00:30 -07:00
f1d7b9dfae sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-21 16:54:00
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-21 16:54:00
2026-05-21 16:54:04 -07:00
983a70fbcc Session log: Update with vault credentials sync
- Updated WordPress version to 7.0 in encrypted vault
- Documented vault access commands and structure
- Added vault commit details (b7a7804)
- Total session log now 655 lines with complete context
2026-05-21 15:46:22 -07:00
9ae85cdaa5 Session log: CryoWeave website redesign and WordPress updates
- Met with Greg to clarify capabilities and market positioning
- Updated WordPress 6.1.10 → 7.0, installed RankMath SEO
- Created professional homepage for university research audience
- Published to dev site: http://dev.cryoweave.com/homepage-professional.html
- Vaulted WordPress credentials in SOPS
- Comprehensive 549-line session log with all credentials and context
2026-05-21 15:42:49 -07:00
09cd134861 sync: auto-sync from HOWARD-HOME at 2026-05-21 14:41:10
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-21 14:41:10
2026-05-21 14:41:13 -07:00
7ce0fa2145 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-21 14:10:00
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-21 14:10:00
2026-05-21 14:10:03 -07:00
8e8a18ce6f access(rob): grant Rob Williams full Syncro access
Updated scope from read-only Syncro to full access: create/update/close tickets,
add comments, bill time, create invoices. Same as any tech.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 14:07:15 -07:00
063b209209 fix: Rob Williams (not Quirarte) 2026-05-21 14:02:25 -07:00
67dd7a457a access: add Rob as limited operator in Discord bot (remediation-tool + IX/Websvr hosting) 2026-05-21 14:02:02 -07:00
a67be0f3f2 sync: auto-sync from HOWARD-HOME at 2026-05-21 12:48:20
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-21 12:48:20
2026-05-21 12:48:22 -07:00
5333ed94ed sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-21 11:29:25
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-21 11:29:25
2026-05-21 11:29:28 -07:00
8538ddf112 fix(hooks): locate check-messages.sh on any machine; never exit non-zero
The UserPromptSubmit hook only probed D:/claudetools and C:/claudetools, so
on machines where the repo lives elsewhere (e.g. BEAST at
C:/Users/guru/ClaudeTools) no candidate matched and the for-loop's final test
returned 1 — surfacing a hook error on every prompt AND skipping coord-message
delivery. Now try $CLAUDE_PROJECT_DIR and $HOME/ClaudeTools first (keep D:/C:
for other layouts) and end with `true` so a missing script is a no-op, not an
error.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 10:25:14 -07:00
582c511f33 docs(sync): update skill doc to reflect git add -A and Phase 5b commands sync 2026-05-21 10:24:07 -07:00
5facce2a78 valleywide: add D-drive scan analysis CSVs (VWP source recovery)
Folder listing + full D-drive scan output from the 2026-05-16 VWP source
code recovery work. Text analysis artifacts kept as client record.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 10:21:00 -07:00
0897e5e317 fix(sync): detect untracked-only changes; reconcile timer-era memories
sync.sh: replace `git diff-index --quiet HEAD --` with
`[ -n "$(git status --porcelain)" ]` in both the main-repo (Phase 1) and
vault change-detection, so brand-new untracked files are no longer silently
skipped (the bug Howard hit 2026-04-17). Mark project_sync_script_bug.md
RESOLVED.

.gitignore: exclude the datto BSOD dumps (6 MB zip + 48 MB extracted) so the
detection fix doesn't sweep 54 MB of binaries into the repo.

memory: finish the add_line_item reconciliation — drop legacy "time entry" /
timer-billable framing from feedback_syncro_labor_type and
feedback_syncro_warranty_product (and their index lines); the product-selection
rules themselves are unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 10:19:52 -07:00
a201140e92 memory: reconcile timer memories with Syncro add_line_item switch
Mike's overhaul replaced the timer workflow with add_line_item, and he
already rewrote feedback_syncro_timer_first.md. Reconcile the leftovers:
- MEMORY.md index line for timer_first still stated the superseded
  "timers required" rule as current — rewrite to the add_line_item rule.
- timer_entry response-shape memory is now about a dead workflow — mark
  it HISTORICAL (index + file banner), retained only for manual timer use.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 10:13:37 -07:00
34e61b2ccb sync: copy slash commands to ~/.claude/commands on every sync
Add Phase 5b — one-way repo -> global copy of .claude/commands/*.md after
the pull, so the CLI always loads the latest skills. Idempotent (only
new/changed files) and soft-failing (never aborts a sync). Fixes the drift
where the global command set lagged the repo (e.g. /syncro was ~3 weeks
stale, and feature-request/forum-post/inject-standards/shape-spec were
missing globally) because the automated script skipped the doc's Phase 3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 10:08:52 -07:00
ce38304715 fix(syncro): appointment_type_id optional; omit unless explicitly specified
Per Winter: leave appointment type blank unless user names one of the known
types. If omitting, include delivery method in ticket subject for calendar
visibility. Applies to both the gather-inputs table and the appointment POST.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 10:06:16 -07:00
1d800cb0ec Session log: Peaceful Spirit billing completion and Syncro skill overhaul
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 10:05:33 -07:00
90748d0901 fix(syncro): omit contact_id by default; Syncro assigns primary automatically
Only set contact_id when ticket is opened by/regarding a named contact.
Removed address_id, appointment_owner, and do_not_invite fields from the
default gather step — these are edge cases, not routine inputs.
Updated preview template to reflect default primary contact behavior.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 10:04:45 -07:00
64a0ba77c2 refactor(syncro): replace timer workflow with add_line_item, lock API sequences
- Billing now uses add_line_item directly; timer_entry/charge_timer_entry removed
- Added Verified Response Shapes table for all endpoints (tested live against ACG internal customer)
- Billing workflow rewritten as strict 5-step locked script with no branches
- Added STOP rule: never try alternative endpoints/formats on unexpected responses
- bot-alerts section: explicit success ([OK] + message_id) and failure ([WARNING]) criteria
- Updated feedback memory to supersede the old timer-first rule

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 10:04:45 -07:00
3a09746468 sync: auto-sync from HOWARD-HOME at 2026-05-20 22:41:35
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-20 22:41:35
2026-05-20 22:41:38 -07:00
144bbe3a47 sync: auto-sync from DESKTOP-0O8A1RL at 2026-05-20 19:14:31
Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-05-20 19:14:31
2026-05-20 19:17:13 -07:00
bc984d9c78 sync: auto-sync from HOWARD-HOME at 2026-05-20 17:08:25
Author: Howard Enos
Machine: HOWARD-HOME
Timestamp: 2026-05-20 17:08:25
2026-05-20 17:08:29 -07:00
6c476066ee Discord bot: pin Howard's ID, add Rob as recognized read-only user
Howard (624667664501178379) gets his ID pinned (full trust). Rob
(261978810713505792) added under a new "Recognized — Restricted
(read-only)" tier: greeted by name, but informational responses only —
no writes, git, system changes, M365, or vault. Restarted bot.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:44:57 -07:00
34a0d73d00 syncro: post a summary + link to #bot-alerts after every write
Add .claude/scripts/post-bot-alert.sh — reusable, soft-failing Discord
poster that reads the bot token from the SOPS vault (bot-token.sops.yaml,
credentials.bot_token) with a .env fallback, so it works from any machine.

Wire it into the /syncro skill: a Hard Rules pointer, a billing-workflow
step (17), and a "Post to #bot-alerts" reference section with the message
format and ticket/invoice/customer link mapping (computerguru.syncromsp.com).
Scoped to write ops (create/update/close/comment/bill/customer); reads post
nothing. Best-effort — never fails the Syncro write it follows.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:43:23 -07:00
8973229c2f Discord bot: pin Mike's Discord ID (264814939619721216)
Replace the placeholder so the owner is recognized from his first
message. Restarted bot to load the change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:30:36 -07:00
81eea1111b Discord bot: record Winter's username alongside her ID
Her Discord username is @Winter (ID 624666486362996755); store both so
the match against the [DISCORD_CONTEXT] block is robust. Restarted bot.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 16:29:45 -07:00