feat(sprint1-pr4): PSA integration — ConnectWise/Autotask adapter pattern #4

Merged
andre merged 1 commit from a1/sentinel-v3-psa into main 2026-06-13 08:31:20 +00:00
Owner

Summary

  • PSA_TYPE=connectwise|autotask|none ENV-driven adapter — no vendor lock-in at deploy time
  • Change-window verdict downgrade: REANALYZEPROCEED_WITH_WARNING when drift falls inside an approved PSA change ticket window
  • Auto-ticket scheduler: PSA_AUTO_TICKET=true triggers ticket creation for unresolved findings after daily integrity check
  • Non-blocking business context enrichment on analysis.started (customer tier, SLA, breach risk stored on job)
  • Additive DB migrations: customer_tier, sla_breach_risk, sla_response_h on jobs; psa_ticket_id on scheduled_findings
  • 23 new tests (psa-client + psa-ticket-creator)

Test plan

  • 267/267 tests green
  • PSA disabled by default (PSA_TYPE unset → all functions no-op)
  • Change-window downgrade logic verified
  • Auto-ticket gate (PSA_AUTO_TICKET=true) tested

🤖 Generated with Claude Code

## Summary - `PSA_TYPE=connectwise|autotask|none` ENV-driven adapter — no vendor lock-in at deploy time - Change-window verdict downgrade: `REANALYZE` → `PROCEED_WITH_WARNING` when drift falls inside an approved PSA change ticket window - Auto-ticket scheduler: `PSA_AUTO_TICKET=true` triggers ticket creation for unresolved findings after daily integrity check - Non-blocking business context enrichment on `analysis.started` (customer tier, SLA, breach risk stored on job) - Additive DB migrations: `customer_tier`, `sla_breach_risk`, `sla_response_h` on jobs; `psa_ticket_id` on scheduled_findings - 23 new tests (psa-client + psa-ticket-creator) ## Test plan - [x] 267/267 tests green - [x] PSA disabled by default (`PSA_TYPE` unset → all functions no-op) - [x] Change-window downgrade logic verified - [x] Auto-ticket gate (`PSA_AUTO_TICKET=true`) tested 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
andre merged commit 8438ca4f53 into main 2026-06-13 08:31:20 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
andre/ticketflow-sentinel!4
No description provided.