Skip to content

Mapper: a rate-limit 429 is labelled "Waiting for capacity"; tell rate limits and capacity apart #2865

Closed
OpenConceptLab/oclmap
#93

Description

@paynejd

Since oclmap#86, Auto Match waits out every HTTP 429 and labels the wait "Waiting for capacity: results may take longer due to demand". That's right for the API's capacity limit (body error_code: "capacity_exceeded"), but not for an ordinary rate limit (the API's per-user request throttle), where the reason is the user's own request rate, not demand. This showed up in the overnight set test of oclapi2#922 + oclmap#86 (see the readout on OpenConceptLab/ocl_online#275), with the match rate limit lowered locally.

Acceptance criteria

  • The Mapper tells the two 429s apart by the response body's error_code: capacity_exceeded keeps today's wording; any other 429 says the user is sending requests too quickly and when it will retry.
  • Both still wait out Retry-After, as now. Only the label and the run log's reason change.
  • Tests cover a capacity 429, a rate-limit 429 with Retry-After, and one without.
  • Ships before oclmap#86 reaches production (that deploy is held until the capacity limit has run in shadow mode for a few days).

Notes

  • The server side, so that a capacity refusal doesn't count against the user's rate limit, is part of enforcement: OpenConceptLab/ocl_online#340.

Activity

  1. added this to the P2 · Mapper: Beta milestone on Oct 1, 2026
  2. ocl-automation commented on Oct 1, 2026

    @ocl-automation
    Collaborator

    Automated Triage — 2026-10-01

    Dimension Score
    Complexity 2
    Scope 2
    Clarity 5
    Dependency 2
    Risk 2

    Decision: decision/ai-ready
    Type: type/bug
    Signals: signal/quick-win, signal/low-risk, signal/small-scope, signal/well-specified

    The Mapper already waits out every 429, so the fix is to branch on the body's error_code and change the label and run-log reason. That is a small change in the retry/label logic plus tests. The issue lists explicit acceptance criteria, including the three test cases. The only loose dependency is that it must ship before oclmap#86 reaches production, and the server-side change (ocl_online#340) is stated as separate. Risk is low because only wording changes and the wait behavior stays the same. The existing type/bug label fits because the user-facing message is wrong. The linked cross-references (ocl_issues#86 and #922) are unrelated to this change.


    Generated by ticket-triage pipeline v3. Model: anthropic/claude-sonnet-5.5 (openrouter).

  3. self-assigned this
    on Oct 6, 2026
  4. snyaggarwal commented on Oct 6, 2026

    @snyaggarwal
    Contributor
  5. added 4 commits that reference this issue on Oct 8, 2026
  6. added a commit that references this issue on Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

program/platform-healthPlatform health program (ocl_online umbrella)signal/low-riskSafe to execute with minimal downsidesignal/quick-winLow complexity, high clarity — easy winsignal/small-scopeLimited to a small part of the codebasesignal/well-specifiedClear requirements and acceptance criteriastage/triagedAI triage complete — scored and classifiedtype/bugSomething is broken

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions