Compare commits
3 Commits
4093028e01
...
62d8babad1
| Author | SHA1 | Date | |
|---|---|---|---|
| 62d8babad1 | |||
| e9dac6580c | |||
| 11647cbf09 |
@@ -63,7 +63,8 @@ py -c "import datetime; d = datetime.date(YYYY, M, D); print(d.strftime('%A %Y-%
|
|||||||
1. Every line item requested by the user has been added to the estimate and price-fixed via PUT (verify with GET /estimates/{id} — check `.estimate.line_items[]`)
|
1. Every line item requested by the user has been added to the estimate and price-fixed via PUT (verify with GET /estimates/{id} — check `.estimate.line_items[]`)
|
||||||
2. Every line item has a corresponding private note on the linked ticket (hidden: true, do_not_email: true) containing: item name, source/retailer, cost, retail price, and any markup
|
2. Every line item has a corresponding private note on the linked ticket (hidden: true, do_not_email: true) containing: item name, source/retailer, cost, retail price, and any markup
|
||||||
3. The estimate total (subtotal + tax) matches the sum of all line items after recalc
|
3. The estimate total (subtotal + tax) matches the sum of all line items after recalc
|
||||||
4. A bot alert has been posted to #bot-alerts
|
4. The linked ticket subject starts with `Estimate - ` (verify with GET /tickets/{id} — check `.ticket.subject`). If it does not, PUT the ticket with the corrected subject before reporting done.
|
||||||
|
5. A bot alert has been posted to #bot-alerts
|
||||||
|
|
||||||
If any check fails, complete the missing step before reporting done. This rule fires on initial estimate creation AND on every subsequent "add X to the estimate" request. Incident: 2026-05-22, UPS added to estimate #7189 without a ticket note — caught by Winter.
|
If any check fails, complete the missing step before reporting done. This rule fires on initial estimate creation AND on every subsequent "add X to the estimate" request. Incident: 2026-05-22, UPS added to estimate #7189 without a ticket note — caught by Winter.
|
||||||
|
|
||||||
@@ -606,7 +607,7 @@ TICKET_RESP=$(curl -s -X POST "${BASE}/tickets?api_key=${API_KEY}" \
|
|||||||
--data-binary @- <<JSON
|
--data-binary @- <<JSON
|
||||||
{
|
{
|
||||||
"customer_id": ${CUST_ID},
|
"customer_id": ${CUST_ID},
|
||||||
"subject": "Estimate: <subject>",
|
"subject": "Estimate - <subject>",
|
||||||
"status": "New",
|
"status": "New",
|
||||||
"problem_type": "Estimate"
|
"problem_type": "Estimate"
|
||||||
}
|
}
|
||||||
@@ -707,7 +708,8 @@ echo "$VERIFY_TKT" | jq '[.ticket.comments[]? | select(.hidden == true) | {subje
|
|||||||
# [1] estimate line_items count matches number of items user requested
|
# [1] estimate line_items count matches number of items user requested
|
||||||
# [2] ticket has at least one hidden comment per line item (or one combined note covering all)
|
# [2] ticket has at least one hidden comment per line item (or one combined note covering all)
|
||||||
# [3] estimate subtotal/total match expected values
|
# [3] estimate subtotal/total match expected values
|
||||||
# [4] bot alert posted
|
# [4] ticket subject starts with "Estimate - " (fix with PUT /tickets/{id} if not)
|
||||||
|
# [5] bot alert posted
|
||||||
# If any check fails, add the missing note or fix the missing item before completing.
|
# If any check fails, add the missing note or fix the missing item before completing.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -588,3 +588,71 @@ None. Estimate, ticket, and both private notes complete. Skill updated.
|
|||||||
- Estimate subtotal: $1,144.99 | Total with tax: $1,244.60
|
- Estimate subtotal: $1,144.99 | Total with tax: $1,244.60
|
||||||
- Skill updated: `.claude/commands/syncro.md` (Hard Rules + workflow step 7)
|
- Skill updated: `.claude/commands/syncro.md` (Hard Rules + workflow step 7)
|
||||||
- Bot alert message IDs: 1507505776221094060 (estimate), 1507506879792939048 (UPS update), 1507507122286362656 (ticket note)
|
- Bot alert message IDs: 1507505776221094060 (estimate), 1507506879792939048 (UPS update), 1507507122286362656 (ticket note)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Update: 15:28 PT — Estimate ticket subject prefix rule + success criteria
|
||||||
|
|
||||||
|
### User
|
||||||
|
- **User:** Winter (@winterguru, ID: 624666486362996755) + Mike Swanson (ID: 264814939619721216) — via Discord Bot
|
||||||
|
- **Machine:** GURU-BEAST-ROG (Discord Bot service)
|
||||||
|
- **Role:** Full trust (Winter), admin (Mike)
|
||||||
|
- **Session Span:** ~15:20–15:28 PT (Discord thread: #create new test estimate for an i5 laptop with 16G...)
|
||||||
|
|
||||||
|
### Session Summary
|
||||||
|
|
||||||
|
Winter directed the bot to enforce a standard subject line format for estimate-linked tickets: always start with `"Estimate - "` followed by the estimate subject. The syncro.md skill was updated — the estimate ticket creation payload changed from `"subject": "Estimate: <subject>"` (colon) to `"subject": "Estimate - <subject>"` (dash). The change was committed (commit `11647cb`).
|
||||||
|
|
||||||
|
Winter then requested that ticket #32318 (created in the prior session without any prefix) be updated retroactively. The current subject was confirmed as `"Lenovo V15 Gen 4 Laptop - i5 / 16GB / 512GB / Win 11 Pro"`. After Winter confirmed the proposed new subject, a PUT updated it to `"Estimate - Lenovo V15 Gen 4 Laptop - i5 / 16GB / 512GB / Win 11 Pro"`. Bot alert posted to #bot-alerts.
|
||||||
|
|
||||||
|
Mike then asked why the subject was wrong the first time. The answer: the prefix rule (`"Estimate: <subject>"`) was already in the skill when the ticket was created — the bot simply did not follow it. Bot execution error, not a missing rule.
|
||||||
|
|
||||||
|
Mike then directed the prefix check to be added as a formal success criterion. The rule was added in two places in syncro.md: (1) the Hard Rules "Estimate task success criteria" block as criterion [4] (with a self-correction step: PUT the ticket subject if the check fails), and (2) the inline workflow checklist at step 7 as `[4]`. Bot-alert criterion renumbered to [5]. Committed (commit `e9dac65`).
|
||||||
|
|
||||||
|
### Key Decisions
|
||||||
|
|
||||||
|
- Subject prefix uses a dash (`Estimate - `) not a colon — Winter's explicit format preference.
|
||||||
|
- Self-correction included in the success criterion: if the subject check fails at completion time, the skill corrects it with a PUT before reporting done rather than just surfacing a warning.
|
||||||
|
- Criterion added to both the Hard Rules block (fires on every estimate, catches add-item requests) and the inline workflow checklist (enforces at completion time) for redundancy.
|
||||||
|
|
||||||
|
### Problems Encountered
|
||||||
|
|
||||||
|
- None this sub-session. Root cause of the original missing prefix was bot non-compliance with an existing rule.
|
||||||
|
|
||||||
|
### Configuration Changes
|
||||||
|
|
||||||
|
- **Modified:** `.claude/commands/syncro.md`
|
||||||
|
- Estimate ticket creation payload: `"Estimate: <subject>"` → `"Estimate - <subject>"` (commit `11647cb`)
|
||||||
|
- Hard Rules: estimate success criteria block — added criterion [4] (ticket subject starts with `Estimate - `, self-correct if not); bot-alert criterion renumbered to [5]
|
||||||
|
- Estimate workflow step 7 checklist: added `[4]` (ticket subject check); bot-alert renumbered to `[5]` (commit `e9dac65`)
|
||||||
|
|
||||||
|
### Credentials & Secrets
|
||||||
|
|
||||||
|
- Syncro API key: Mike's key (`T259810e5c9917386b-52c2aeea7cdb5ff41c6685a73cebbeb3`). No vault paths accessed.
|
||||||
|
|
||||||
|
### Infrastructure & Servers
|
||||||
|
|
||||||
|
- Syncro PSA: `https://computerguru.syncromsp.com/api/v1`
|
||||||
|
- Ticket #32318: https://computerguru.syncromsp.com/tickets/110847587
|
||||||
|
|
||||||
|
### Commands & Outputs
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ticket subject before
|
||||||
|
GET /tickets/110847587 -> subject: "Lenovo V15 Gen 4 Laptop - i5 / 16GB / 512GB / Win 11 Pro"
|
||||||
|
|
||||||
|
# Subject corrected
|
||||||
|
PUT /tickets/110847587 {"subject": "Estimate - Lenovo V15 Gen 4 Laptop - i5 / 16GB / 512GB / Win 11 Pro"}
|
||||||
|
-> .ticket.subject: "Estimate - Lenovo V15 Gen 4 Laptop - i5 / 16GB / 512GB / Win 11 Pro" [OK]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pending / Incomplete Tasks
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
### Reference Information
|
||||||
|
|
||||||
|
- Commits: `11647cb` (subject format: colon → dash), `e9dac65` (success criteria: subject check)
|
||||||
|
- Ticket #32318: https://computerguru.syncromsp.com/tickets/110847587
|
||||||
|
- Skill: `.claude/commands/syncro.md`
|
||||||
|
- Bot alert message ID: 1507509925939777709
|
||||||
|
|||||||
Reference in New Issue
Block a user