docs: remove hardcoded labor rates from syncro.md; message Howard re rates + vault fix

Syncro auto-calculates price from the product's configured rate — omit price_retail.
Cleared Howard's messages from for-mike.md (both items addressed).
Left reply for Howard in for-howard.md confirming fix is live.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-21 20:25:48 -07:00
parent 386a115039
commit 786049b115
3 changed files with 9 additions and 37 deletions

View File

@@ -116,7 +116,7 @@ Two verified ways to add billable time. Both produce ticket line items that tran
# Add
curl -s -X POST "${BASE}/tickets/${ID}/add_line_item?api_key=${API_KEY}" \
-H "Content-Type: application/json" \
-d '{"product_id": 1190473, "quantity": 0.5, "price_retail": 150.00, "name": "Labor - Remote Business", "description": "Work description", "taxable": false}'
-d '{"product_id": 1190473, "quantity": 0.5, "name": "Labor - Remote Business", "description": "Work description", "taxable": false}'
# Remove
curl -s -X POST "${BASE}/tickets/${ID}/remove_line_item?api_key=${API_KEY}" \
@@ -150,7 +150,7 @@ curl -s -X POST "${BASE}/tickets/${ID}/delete_timer_entry?api_key=${API_KEY}" \
- `description` — required (422 if missing)
- `product_id` — labor product ID (see list below)
- `quantity` — decimal hours (0.5 = 30 min, 1.0 = 1 hour)
- `price_retail`**only price field that saves**; `price`, `retail_price`, `rate`, `price_cents` all silently ignored and leave line at $0.00
- `price_retail`**only price field that saves**; `price`, `retail_price`, `rate`, `price_cents` all silently ignored and leave line at $0.00. **Do not hardcode rates** — omit `price_retail` and Syncro auto-calculates from the product's configured rate.
- `taxable: false`**always set explicitly**; labor products default to no-tax in GUI but the API applies tax if this is omitted
**Do NOT remove ticket line items after invoicing.** Leave them on the ticket — the "Add/View Charges" button and billing verification by techs depends on seeing line items there.
@@ -231,7 +231,7 @@ curl -s -X POST "${BASE}/tickets/${ID}/comment?api_key=${API_KEY}" \
# 60 min = 1.0, 30 min = 0.5, 45 min = 0.75, etc.
curl -s -X POST "${BASE}/tickets/${ID}/add_line_item?api_key=${API_KEY}" \
-H "Content-Type: application/json" \
-d '{"product_id": 1190473, "quantity": 1.0, "price_retail": 150.00, "name": "Labor - Remote Business", "description": "..."}'
-d '{"product_id": 1190473, "quantity": 1.0, "name": "Labor - Remote Business", "description": "..."}'
# Step 3: Create invoice
curl -s -X POST "${BASE}/invoices?api_key=${API_KEY}" \

View File

@@ -4,4 +4,8 @@ Check this file at sync. Delete items after you've addressed them.
---
_No active messages._
## From Mike, 2026-04-21 — RE: Syncro labor rates + vault.sh fix
**Rates:** Syncro auto-calculates from the product's configured rate — no hardcoding needed. I've updated syncro.md to reflect this: omit `price_retail` entirely and Syncro fills it from the product. Your $175 ticket is fine; that's what the product is set to.
**vault.sh MSYS path bug:** Already patched and pushed before you reported it — same fix you described (jq-first, cygpath -m fallback for Python). Should work on HOWARD-HOME now. Pull and test.

View File

@@ -4,36 +4,4 @@ Check this file at sync. Delete items after you've addressed them.
---
## From Howard, 2026-04-21 — Confirm Syncro labor rates
Closed/invoiced ticket #32179 (High Tech Mortgage - Rich Young, onsite power-outlet issue, 0.5 hr). I used **$175/hr for Labor - Onsite Business** (product_id 26118) since I wasn't sure what was current.
Can you confirm what our current rates should be for the skill's reference? The /syncro skill currently lists $150/hr for Remote as an example but has no onsite or emergency rate documented. Useful ones to pin down:
- `1190473` Labor - Remote Business
- `26118` Labor - Onsite Business (used $175 today)
- `26184` Labor - Emergency or After Hours Business
- `9269129` Labor - Prepaid Project Labor
- `26117` Fee - Travel Time
If you can confirm, I'll update `.claude/commands/syncro.md` so future tickets don't guess.
---
## From Howard, 2026-04-21 — vault.sh wrapper bug on Windows (MSYS path)
`.claude/scripts/vault.sh` fails on HOWARD-HOME with `[ERROR] vault_path not set` even though identity.json has `"vault_path": "D:/vault"`. Traced it:
The wrapper passes `$IDENTITY_FILE` as `/c/claudetools/.claude/identity.json` (Git-Bash MSYS form) to native Windows Python, which can't read MSYS paths. The `open()` silently fails inside the `$(...)` substitution, VAULT_ROOT stays empty, and the wrapper bails.
Fix is small — convert with cygpath if available:
```bash
IDENTITY_FILE_FOR_PY="$IDENTITY_FILE"
if command -v cygpath >/dev/null 2>&1; then
IDENTITY_FILE_FOR_PY=$(cygpath -m "$IDENTITY_FILE")
fi
# then pass $IDENTITY_FILE_FOR_PY to python -c
```
I worked around it for tonight by calling `sops -d` directly. Want me to patch the wrapper, or do you want it?
_No active messages._