diff --git a/clients/grabb-durando/session-logs/2026-06/2026-06-23-mike-laptopninja-debloat-vpn-fix-fail2ban.md b/clients/grabb-durando/session-logs/2026-06/2026-06-23-mike-laptopninja-debloat-vpn-fix-fail2ban.md index 96672698..ce7710a1 100644 --- a/clients/grabb-durando/session-logs/2026-06/2026-06-23-mike-laptopninja-debloat-vpn-fix-fail2ban.md +++ b/clients/grabb-durando/session-logs/2026-06/2026-06-23-mike-laptopninja-debloat-vpn-fix-fail2ban.md @@ -75,3 +75,16 @@ Diagnosed application crashes on LapTopNinja (SystemSettings/TabTip/Explorer-Tas - fail2ban: `clients/grabb-durando/vpn-fail2ban.ps1` (deployed at C:\Scripts\ on GND-SERVER). - Vault: clients/grabb-durando/gd-local-domain-admin.sops.yaml, infrastructure/uos-server-network-api-rw.sops.yaml. - gw-control: `.claude/skills/unifi-wifi/scripts/gw-control.sh "Grabb and Durando" pf-list|fw-list|block-ips`. + +## Update: ~14:15 PT — Billed #32455 + systemic Syncro prepay fix + +**Billing.** Created Syncro ticket **#32455 "Jeff Laptop Setup"** (Grabb & Durando Law Office, cust 14232794), posted a customer-visible resolution comment (emailed, do_not_email:false), billed **2.0 h remote** (product 1190473 @ $150), invoiced, marked Invoiced, #bot-alerts posted. Ticket id 113001195, invoice id 1650779485. + +**Prepay correction.** My preview said "no block -> $300 real charge" — WRONG. The customer SEARCH endpoint returned `prepay_hours: null`, but the full `GET /customers/{id}` showed a real prepaid block. The 2.0 h were correctly debited from the block (**20.5 -> 18.5**) and the invoice netted **$0.00** ("Applied 2.0 Prepay Hours") — the correct outcome. Fixed the invoice note from the wrong upsell to "Block hours remaining: 18.5." + +**Systemic fix (Mike: this keeps recurring, make it reliable).** Root cause: reading `prepay_hours` off the customer search/list endpoint (returns null/stale) instead of the full customer GET. Durable fixes: +- `.claude/commands/syncro.md` — new HARD RULE: `prepay_hours` is ONLY reliable from `GET /customers/{id}`; never read it from search/list; never assert "no block / real charge / $N" in a preview from search data; the Step-1 full GET must precede the PREVIEW (not just the invoice). Also annotated the customers search snippet. +- New feedback memory `.claude/memory/feedback_syncro_prepay_full_get_only.md` + MEMORY.md index line. +- errorlog friction entry (syncro/billing-prepay). + +**Refs:** ticket #32455 (id 113001195, invoice 1650779485). Skill commit 7b252335. Earlier this-session commits: 373883fb (GND log + fail2ban script).