Skip to content

feat: trust a resolved conversation as fully handled by support - #85

Merged
lihsaa591 merged 2 commits into
masterfrom
tg-autopilot/skip-first-resolve
Sep 11, 2026
Merged

feat: trust a resolved conversation as fully handled by support#85
lihsaa591 merged 2 commits into
masterfrom
tg-autopilot/skip-first-resolve

Conversation

@lihsaa591

Copy link
Copy Markdown
Contributor

Summary

New policy: a resolved conversation (first time or Nth time) is trusted as fully handled by support and no longer triggers classification/investigation on its own. The resolved-conversation loop in crisp-classify.mjs now only records "session X seen resolved at time T" into a new state/resolved-seen.json.

Investigation still happens via three paths:

  • Manual !tg-autopilot investigate note — unchanged, always overrides, sees the full transcript.
  • Reopen after resolve — a conversation that shows up in the active list again after being resolved gets investigated using only the messages after the recorded resolve time. If it's resolved again before a crisp-triage run ever catches it in that in-between window, it's never investigated for that reopen — the resolved-conversation loop just records the newer resolve time and there's nothing left to catch. This is intentional: a second resolve is trusted the same as the first.
  • Stale-and-never-resolved auto-escalation — unchanged, for conversations that were never marked resolved at all.

Also updates PHASE2-SETUP.md § 4c and the README's feature table to describe the new policy accurately, and adds state/resolved-seen.json to crisp-triage.yml's committed state files.

Test plan

  • node --check passes
  • Dry-ran the branching logic (first-resolve records-only, reopen slices to post-resolve messages, manual-note always gets the full transcript regardless, resolved-again-before-caught naturally skips) against mocked data — all four scenarios behaved as intended
  • Watch the next few scheduled crisp-triage runs' step summaries for sane counts (resolved conversations fetched vs. actually escalated)

tg-autopilot and others added 2 commits September 11, 2026 11:17
A resolved conversation, first time or Nth time, no longer triggers
classification/investigation on its own -- the resolved-conversation loop
in crisp-classify.mjs now just records "session X seen resolved at time T"
into the new state/resolved-seen.json, nothing more.

Investigation still happens via three paths:
- Manual !tg-autopilot investigate note (unchanged, always overrides).
- A conversation reopening (going active again) after a prior resolve --
  investigated using only messages after that recorded resolve time. If it
  gets resolved again before a run ever catches it in that in-between
  window, it's never investigated for that reopen at all: the
  resolved-conversation loop just records the newer resolve time on its
  next pass and there's nothing left to catch. Intentional, not a gap --
  a second resolve is trusted the same as the first.
- The existing stale-12h-and-never-resolved auto-escalation path, unchanged.

Updates PHASE2-SETUP.md § 4c and the README's feature table to describe
the new policy, and adds state/resolved-seen.json to crisp-triage.yml's
committed state files.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@lihsaa591
lihsaa591 merged commit 85c1750 into master Sep 11, 2026
@lihsaa591
lihsaa591 deleted the tg-autopilot/skip-first-resolve branch September 11, 2026 05:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants