fix(ci): silence English translation noise and harden related-issue matches - #458
Merged
Conversation
…ssue matches Stop posting visible English translation control comments (keep rate-limit state invisible on the issue body), and drop weak "somewhat related" triage links like lidge-jun#452->lidge-jun#420.
This comment was marked as outdated.
This comment was marked as outdated.
Address Codex/CodeRabbit review: stop trusting author-editable issue-body markers for rate limits, keep markers-only bot comments (no visible English bookkeeping), and stop rejecting concrete 'both involve' related reasons.
Persist English/no-translation rate-limit state in a bot-owned Actions cache file instead of marker-only issue comments, preserve orphan-marker whitespace, require concrete related-issue signatures, and unify the no-translation prompt contract.
Keep silent file state local until Actions cache upload succeeds, then remove verified bot control comments so cancelled or failed cache saves cannot erase cooldown history.
Issue-triggered workflows cannot durably save Actions cache entries, so keep cooldown history in a github-actions control comment without visible English bookkeeping and drop the non-durable file/cache path.
Require per-related shared-failure reasons, strip orphan body markers only at EOF, and reject far-future cooldown timestamps so poisoned bot comments cannot lock rate limits.
Require shared-failure wording (not use/call/involve overlap) and drop reasons that carry multiple HTTP statuses or contrast attributions.
Reject related reasons where generic both-fail wording borrows a one-issue errno/status/Field required token, while keeping clause-bound shared signatures.
…lity Tighten errno/HTTP signature matching, pass injected now into control-comment selection, improve persist-failure observability, and cover the paginate cleanup path.
Cover phrasing where a shared verb binds both issues to another ticket number rather than a real failure or HTTP status code.
Treat HTTP status plus errno as distinct failures, and stop generic both-fail wording from binding later issue-specific tokens as shared evidence.
…utions Extend ISSUE_SPECIFIC_ATTR_RE so generic both-fail wording cannot bind tokens attributed to this, current, or present issue.
This was referenced Jul 25, 2026
7 tasks
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
detected_languagestays the source language (normally English) with empty translation fields.English-state contract
github-actions[bot]control comment)..ocx-translation-statefile path (issue-triggered workflows cannot durably save cache entries).Test plan
node --test .github/scripts/issue-translation.test.cjsnode --test .github/scripts/issue-triage.test.cjsnode --test .github/scripts/parse-issue-translation-response.test.cjsnode --test .github/scripts/issue-quality.test.cjsbun test tests/ci-workflows.test.ts.github/**changes before mergeSummary by CodeRabbit