# Customer Cause Attribution Boundary

<!-- auto-oncall-optimization-record
{
  "schemaVersion": "auto-oncall-optimization-record-v1",
  "optimizationId": "customer-cause-attribution-boundary-2026-07-30",
  "problems": [
    {
      "problemId": "customer-reported-cause-rendered-as-support-confirmed",
      "summary": "After unverified provider evidence safely fails closed, a customer request to close the case and the customer's own causal explanation can still be collapsed into wording that implies support confirmed that cause.",
      "status": "optimized_verified",
      "issueKeys": ["TCID-12973"],
      "sourceRefs": [
        "auto-oncall-report:staging:daily:2026-07-27:case:TCID-12973#problem:ai_gap:6e11938f5c98eab0"
      ],
      "signalTextIncludesAny": [
        "customer-reported cause",
        "you confirmed",
        "closure intent",
        "support-confirmed RCA",
        "causal attribution"
      ],
      "observedThrough": "2026-07-30",
      "effectiveAt": "2026-07-30T16:02:20.000Z",
      "verifiedAt": "2026-07-30T16:47:48.000Z",
      "attemptedAction": "When reported-signal coverage is unverified and provider evidence is not admitted, require synthesis to acknowledge customer closure intent separately and label the customer's proposed cause as customer-reported and independently unverified, without confirmed-cause wording.",
      "evidenceUrl": "https://github.com/tidbcloud/aisupport/issues/531"
    }
  ]
}
-->

- Optimization ID: `customer-cause-attribution-boundary-2026-07-30`
- Owner: auto-oncall-services
- Source reference: `TCID-12973`
- Implementation status: deployed to staging in revision `3efeb556`
- Effective status: `optimized_verified`

## Bounded problem

The reported attachment is now materialized, the provider request is complete,
and unverified Investibook output remains outside `summaryPaths` and primary
evidence. The same-cutoff TCID-12973 replay still said that the customer had
confirmed the alert was related to an upgrade. That wording blurred two
independent facts: the customer wanted the case closed, and the customer
proposed an unverified cause.

## Candidate implementation

The shared workspace analysis contract now requires a strict attribution
boundary when provider coverage is unverified and primary evidence is false:

- acknowledge a request to close or stop the investigation as operational
  intent;
- describe a proposed cause only as customer-reported or according to customer
  feedback;
- do not use confirmed-cause wording unless admitted evidence independently
  verifies the explanation.

This does not change provider coverage validation, admit the Investibook audit
summary, diagnose an upgrade mechanism, or perform a Jira transition.

## Verification evidence

- Previous same-cutoff run:
  `file:///tmp/auto-oncall-services/runs/7597ee13-bdd4-462e-b446-04524b641b55`
- Previous evidence chain: reported signal observed, attachment materialized,
  provider request complete, provider output coverage unverified, synthesis not
  admitted.
- Previous Focus judge: `case-discriminator-routing` and
  `bounded-alternatives` met; `evidence-applicability-gate` remained a gap due
  to the ambiguous confirmed-cause wording.
- Final same-cutoff production-path replay:
  `file:///tmp/auto-oncall-services/runs/7a17389d-3cbb-4892-bc08-b95fa65103a0`.
  It ran through the shared `analyzeTicketRequest` read path. The draft keeps
  the upgrade attribution customer-reported and explicitly unverified, while
  the internal replay context routes the unresolved contradiction to
  `recording_rule`, `query_semantics`, and `display_chain`.
- The final Focus judge passed `evidence-applicability-gate`,
  `case-discriminator-routing`, and `bounded-alternatives`. The manifest kept
  `primaryEvidence=false`, `summaryPaths=[]`, and
  `synthesisRoutingBoundary.causalAdmission=blocked`; the evidence-chain audit
  recorded `synthesisAdmission=not_admitted`.
- APID-29231 non-trigger control replay:
  `file:///tmp/auto-oncall-services/runs/04069e4c-2a1d-496f-bac8-4a0375733b24`.
  It stayed on the Wetech/agent-provider path, kept
  `synthesisRoutingBoundary=null` and `causalAttributions=[]`, did not emit the
  TCID monitoring-semantics route, and passed all three control criteria.
- Local prompt and workspace tests, including Chinese and English declarative
  positives and question/request negatives, do not make this optimization
  effective or merge-worthy.
- Deployed same-cutoff replay
  `a3c75380-d46e-46fd-82d5-7eaa72e7cf47` completed on staging revision
  `3efeb556`. Its Jira draft says the upgrade relation is not verified and
  records closure only as customer-reported mitigation; it does not render the
  customer's explanation as a support-confirmed cause.
- A Focus #531 judge using the original acceptance criteria marked
  `evidence-applicability-gate`, `case-discriminator-routing`, and
  `bounded-alternatives` as met for this deployed replay.

## Unresolved gaps

- ST-2846 currently remains inconclusive because its unverified primary
  diagnostic evidence stops at preflight before an observable control answer.
- No Jira internal comment has been refreshed.
- A separate provider-admission problem remains unverified because a
  multi-scenario evidence thread read an audit-only Investibook summary. That
  gap does not reintroduce support-confirmed wording and is tracked in
  `reported-signal-provider-admission-2026-07-30`.

## Next validation action

Monitor matching later signals as regressions. Refresh the stable Jira
internal comment only after the separate audit-summary admission gap is fixed
and a clean same-cutoff replay passes; keep ST-2846 inconclusive unless its
control behavior becomes observable.
