denied_queue is two mechanisms under one label, so #1083 cannot answer its own first question #1105

Closed
opened 2026-08-22 22:14:20 +00:00 by coilyco-ops · 0 comments
Member

Split out of #1083, which asks "which bound is actually rejecting" as the first thing worth checking. Read against the source, the recorded data cannot say, and that is a defect in its own right rather than a step of the measurement.

The two refusals

Both increment denied_queue, and on the Discord path both go out with transport=discord, so no query separates them.

  • internal/community/ratelimit.go refuses at admission when SIRENS_ECHO_MAX_PENDING is reached. The turn never waits at all, and the caller is told busy immediately.
  • internal/community/agent.go, in runSerialized, refuses a turn that was already admitted, waited for an execution slot, and gave up at the queue timeout. It gets noticeQueueTimeout rather than a cooldown notice, which is the giveaway that it is a different thing.

Why it matters rather than being untidy

They are opposite findings with opposite fixes. A backlog refusal is an admission-sizing problem. A slot-wait refusal is a turn that ran long, which #995's slot pool and #1076's iteration cap both move and which admission sizing does not touch.

#1083 measured a 7.3% denial share on dowel and 11.7% on echo. Either mechanism could produce those numbers, and its own text reaches for the distinction: "whether the denials correlate with turn duration ... it would make this a symptom of turn latency rather than an admission-sizing problem." That is the question the label collapse makes unanswerable from the data already collected.

Acceptance

  • The two refusals carry distinct closed-set outcomes.
  • Neither still emits denied_queue.
  • A test observes what sirens_echo.admissions actually recorded rather than what the code appears to record.

Not this issue

The post-deploy re-measurement stays on #1083, since it needs the slot pool to reach the cluster first.

Refs #1083, #976, #995, #1076

Split out of #1083, which asks "which bound is actually rejecting" as the first thing worth checking. Read against the source, **the recorded data cannot say**, and that is a defect in its own right rather than a step of the measurement. ## The two refusals Both increment `denied_queue`, and on the Discord path both go out with `transport=discord`, so no query separates them. * `internal/community/ratelimit.go` refuses at admission when `SIRENS_ECHO_MAX_PENDING` is reached. **The turn never waits at all**, and the caller is told busy immediately. * `internal/community/agent.go`, in `runSerialized`, refuses a turn that **was already admitted**, waited for an execution slot, and gave up at the queue timeout. It gets `noticeQueueTimeout` rather than a cooldown notice, which is the giveaway that it is a different thing. ## Why it matters rather than being untidy They are opposite findings with opposite fixes. A backlog refusal is an admission-sizing problem. A slot-wait refusal is a turn that ran long, which #995's slot pool and #1076's iteration cap both move and which admission sizing does not touch. #1083 measured a 7.3% denial share on dowel and 11.7% on echo. **Either mechanism could produce those numbers**, and its own text reaches for the distinction: "whether the denials correlate with turn duration ... it would make this a symptom of turn latency rather than an admission-sizing problem." That is the question the label collapse makes unanswerable from the data already collected. ## Acceptance * The two refusals carry distinct closed-set outcomes. * Neither still emits `denied_queue`. * A test observes what `sirens_echo.admissions` actually recorded rather than what the code appears to record. ## Not this issue The post-deploy re-measurement stays on #1083, since it needs the slot pool to reach the cluster first. Refs #1083, #976, #995, #1076
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/sirens-echo#1105
No description provided.