# Related Ticket Recall Precision

<!-- auto-oncall-optimization-record
{
  "schemaVersion": "auto-oncall-optimization-record-v1",
  "optimizationId": "related-ticket-recall-precision-2026-08-13",
  "problems": [
    {
      "problemId": "same-reporter-related-ticket-recall-too-broad",
      "summary": "Same-reporter fuzzy recall admits old or unrelated tickets from generic shared environment words without a matching symptom or concrete component.",
      "status": "optimized_verified",
      "applicability": "Automatic fuzzy Jira recall for current, historical replay, and continuation support analysis.",
      "issueKeys": ["APID-29274"],
      "sourceRefs": [
        "https://tidb.atlassian.net/browse/APID-29274#problem:same-reporter-related-ticket-recall-too-broad"
      ],
      "signalTextIncludesAny": [
        "same reporter and generic environment terms",
        "related ticket lacks matching symptom or component",
        "old same-reporter ticket entered related evidence"
      ],
      "observedThrough": "2026-08-13",
      "effectiveAt": "2026-08-13T14:53:00Z",
      "verifiedAt": "2026-08-13T15:16:00Z",
      "attemptedAction": "Limit fuzzy same-reporter Jira recall to tickets active in the prior 90 days and require a shared exact error signature, concrete component, or specific symptom family; keep explicit customer ticket references independent.",
      "evidenceUrl": "https://tidb.atlassian.net/browse/APID-29274?focusedCommentId=23351216"
    }
  ]
}
-->

- Optimization ID: `related-ticket-recall-precision-2026-08-13`
- Owner: runner-owned related-evidence retrieval
- Source reference: APID-29274 related-ticket recall
- Implementation status: deployed to staging in image `917145b45f408a2a89a1c4c5ac301eb9e0d785df`
- Effective status: `optimized_verified`

## Bounded problem

Fuzzy Jira recall previously searched every ticket from the same reporter before
the run cutoff. Any non-stopword overlap could admit a candidate. For
APID-29274, the generic words `nowallet` and `生产` admitted APID-29262 even
though the current symptom was query Duration/P999 and the candidate concerned
TiCDC Changefeed lag.

## Candidate change

- Search only same-reporter tickets updated in the 90 days before the frozen
  run cutoff and verify the same window on returned issue metadata.
- Require at least one shared exact stable error signature, concrete product
  component, or specific symptom family.
- Do not treat generic product, environment, customer, or deployment terms as
  a similarity dimension.
- Keep customer-supplied exact Jira references on their existing same-Jira-
  organization path; they do not pass through this fuzzy gate.

## Verification evidence

Local contract tests reject the APID-29274/APID-29262 shape and an otherwise
matching ticket outside the 90-day activity window. Existing exact-reference,
stable-error-signature, component/symptom recall, cutoff, and combined-candidate
tests remain preservation checks.

Isolated passive Pod image `3dd6f7cec444143dee409c53d0d5ca5137225ec5`
materialized APID-29274 at the original human-reply cutoff
`2026-07-30T10:26:28+0800`. `internalJira` returned `no_match` with reason
`no_recent_similar_same_reporter_ticket_before_cutoff`; APID-29262 and its
Changefeed title were absent. The build-only workflow skipped app-delivery,
the temporary Pod was deleted, and active staging remained unchanged.

Post-deployment read run `f903335a-315b-40c6-b043-37200fe8dcd0` and write run
`5b552e11-7ad7-4ce7-949e-8e6b5f4d6431` materialized the same frozen cutoff
with `internalJira.status=no_match`, an empty candidate list, and no APID-29262
or Changefeed text. The write run persisted as DB run `150033`, was judged
`ai_better`, and refreshed the existing private Jira comment `23351216`.

## Unresolved gaps

Useful future same-component or same-symptom recall still needs population-level
precision monitoring; this case verifies the known false positive only.

## Next validation action

Monitor later true-positive same-component or same-symptom recalls while
keeping explicit customer Jira references independent of this fuzzy gate.
