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>
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>
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>
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>
- 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.
- 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
- 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
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>
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>
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>
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>
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>
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>
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>
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>
- 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>