# Support Follow-up Human Routing

<!-- auto-oncall-optimization-record
{
  "schemaVersion": "auto-oncall-optimization-record-v1",
  "optimizationId": "support-followup-human-routing-2026-09-03",
  "problems": [
    {
      "problemId": "support-followup-misclassified-internal-only",
      "summary": "A response pair that promised continued internal investigation and assigned concrete Support follow-up could remain internal_only.",
      "status": "optimized_verified",
      "applicability": "Final response pairs where the customer draft promises continued Support investigation or follow-up and the internal message assigns a concrete Support query, retry, check, or escalation.",
      "issueKeys": ["APID-29285", "ST-2933"],
      "sourceRefs": [
        "https://tidb.atlassian.net/browse/APID-29285#problem:current-support-followup-misclassified-internal-only",
        "https://tidb.atlassian.net/browse/ST-2933#problem:st-2933-support-followup-normalization"
      ],
      "signalTextIncludesAny": [
        "Support-owned follow-up remained internal_only",
        "continued internal investigation requires human handling"
      ],
      "observedThrough": "2026-09-03",
      "effectiveAt": "2026-09-03T07:07:53Z",
      "verifiedAt": "2026-09-03T07:07:53Z",
      "attemptedAction": "Promote the typed decision to human_required only when the customer message promises continued Support follow-up and the internal message assigns a concrete Support-owned action or escalation.",
      "evidenceUrl": "https://tidb.atlassian.net/browse/APID-29285"
    }
  ]
}
-->

- Optimization ID: `support-followup-human-routing-2026-09-03`
- Owner: Final Response runner output normalization
- Source references: `APID-29285`, finding `current-support-followup-misclassified-internal-only`;
  `ST-2933`, finding `st-2933-support-followup-normalization`
- Implementation status: deployed in staging image
  `f0b330ae3321d4b9b70f73b7e7a63523701ae352`
- Effective status: `optimized_verified`

## Bounded problem

The paired answer can promise that Support will continue an internal investigation and
list the exact Support query, retry, or escalation in the internal message while its typed
decision remains `internal_only`. That state incorrectly says no human handling or
Support-owned next action exists.

## Candidate change

Promote the normalized decision to `human_required` only when both sides of the pair are
present: the customer message promises continued Support follow-up and the internal
message assigns a concrete Support-owned action or escalation. A direct imperative at a
sentence boundary, such as `请继续核查`, is an assignment because the whole internal
message is addressed to Support; it does not require a redundant literal `Support`
subject. Preserve both messages, the empty customer `requestedContext`, and the
non-clarification state.

## Verification evidence

A deterministic runner regression covers replay and live normalization for the
ST-2933 imperative paired-message shape. Read replay
`9b08a1e2-6f18-4308-95e1-c6d88af61c6b` on the Ready staging image returned
`decision=human_required`, `requestedContext=null`, and an internal handoff with
an explicit `Support 下一步` action. Evidence acquisition completed without a
Provider failure, so the selected boundary is verified and this ticket will not
be sent through another optimization iteration for the same problem.

## Unresolved gaps

- The separate missing Provider attempt trace finding is outside this optimization.

## Next validation action

Do not re-optimize ST-2933 for this exact Support-follow-up routing problem. A
future distinct answer fingerprint or different earliest boundary remains a
separate problem signal.
