4ef62f28bb
Labelling a PR is two webhook events. AI-REVIEW arrives first, the review claims (repo, index, sha) and starts; the AI-USAGE event that follows a moment later hits the in-flight dedupe and is dropped. `report_usage` was snapshotted from the first payload, which had not seen AI-USAGE yet, so the review posted without its usage block even though the label was on the PR by the time it finished — observed on gitea_admin/pragent#9 (`usage=False` in the pod log, no <details> section in the posted review). Re-read the labels from the API at review start and upgrade the flag. The read is best-effort: any failure logs and returns [], leaving the payload's verdict intact, because a usage section is not worth failing a review over. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B11e8TZZxJyzHW7jj7KWUN