# Validator Notification Chinese Reason

<!-- auto-oncall-optimization-record
{
  "schemaVersion": "auto-oncall-optimization-record-v1",
  "optimizationId": "validator-notification-chinese-reason-2026-08-13",
  "problems": [
    {
      "problemId": "validator-notification-exposes-raw-model-reason",
      "summary": "Feishu completion notifications copied the Validator's free-form English explanation verbatim, producing a long and difficult-to-read Public denial reason instead of a stable Chinese operational category.",
      "status": "optimized_unverified",
      "applicability": "Auto-oncall Public candidates denied by the customer reply Validator.",
      "issueKeys": ["APID-29338"],
      "sourceRefs": [
        "https://tidb.atlassian.net/browse/APID-29338#problem:validator-notification-exposes-raw-model-reason"
      ],
      "signalTextIncludesAny": [
        "Public：Validator 拒绝（The",
        "fail-closed publication review therefore requires denial",
        "validator reason is raw English"
      ],
      "observedThrough": "2026-08-13",
      "effectiveAt": "2026-08-13T01:15:45Z",
      "verifiedAt": null,
      "attemptedAction": "Have the Validator return one closed reason category for audit and render only a bounded Chinese summary plus confidence in Feishu; retain the free-form explanation in internal gate details without displaying it in the completion notification.",
      "evidenceUrl": "https://tidb.atlassian.net/browse/APID-29338"
    }
  ]
}
-->

- Optimization ID: `validator-notification-chinese-reason-2026-08-13`
- Owner: Customer Reply Validator and Feishu completion notification
- Source reference: `APID-29338`, job `150062`
- Implementation status: deployed to staging in image
  `e9c0f68cda3d48315ffa8fd6563623d7018bbca9`
- Effective status: `optimized_unverified`

## Bounded problem

The notification rendered the free-form `validatorReason` directly. That text
is useful as an internal audit explanation, but it is not a stable operator
status: wording and language vary by model run and it can repeat the very
internal detail that caused denial.

## Candidate change

- Add one closed primary reason category to the Validator output.
- Keep the raw explanation in gate details for internal audit.
- Render a concise Chinese summary from the category in Feishu and never copy
  the raw explanation into the completion notification.

## Verification status

Source PR [#849](https://github.com/tidbcloud/aisupport/pull/849), its complete
CI, and app-delivery PR
[#77077](https://github.com/tidbcloud/app-delivery/pull/77077) succeeded. The
staging Deployment read back the exact image SHA above, with one ready replica
and no restart. Notification mapping and raw-reason exclusion are covered by
regression tests, but no post-deployment denied Public candidate has yet
produced a live Feishu notification. The bounded status is therefore
`optimized_unverified`, not verified.

## Next validation action

Read back the next naturally denied Public-candidate notification plus its
`customer_reply_gate` details, proving that the notification uses the mapped
Chinese summary while the raw audit reason and category remain available only
internally.
