Proposal: Add scope pressure throttling to UAT tester and bug hunter pool supervisors #3067

Closed
opened 2026-04-05 04:52:03 +00:00 by freemo · 2 comments
Owner

Agent Improvement Proposal

Pattern Detected

Type: Configuration adjustment / workflow fix
Affected Agents: ca-uat-tester (pool supervisor mode), ca-bug-hunter (pool supervisor mode)
Evidence: During Session 3 (issue #2877, watchdog cycles 1-18):

  • 175 new issues created in 90 minutes by UAT testers and bug hunters
  • Only 1 PR merged in the same 90-minute window
  • 89 open PRs accumulated, creating a massive review/merge backlog
  • 673 total open issues across milestones v3.2.0 through v3.7.0

The N_QUARTER tiering (introduced to prevent scope explosion) caps issue-discovery workers at max(1, N//4). With N=16, this gives N_QUARTER=4 workers each for UAT and bug hunting — 8 issue-discovery agents total. Each agent can file multiple issues per cycle, resulting in a net issue creation rate that vastly exceeds the implementation pipeline's capacity.

Quantified imbalance: Issue creation rate ≈ 2 issues/minute. PR merge rate ≈ 0.01 PRs/minute. The system is creating issues ~200x faster than it can close them.

Proposed Change

Add a scope pressure check to both ca-uat-tester.md and ca-bug-hunter.md pool supervisor loops. Before dispatching new workers each cycle, the supervisor queries Forgejo for the current open issue count and open PR count, then computes a "scope pressure" ratio:

scope_pressure = open_issues / max(1, open_prs)

Throttling behavior:

  • If scope_pressure > 20 (20+ open issues per open PR): Pause all new worker dispatches. Sleep for 5 minutes and re-check. Post a comment on the tracking issue: "Scope pressure high (ratio: X). Pausing issue discovery to let implementation catch up."
  • If scope_pressure > 10: Reduce active workers to 1 (minimum). Only dispatch one worker at a time instead of N_QUARTER.
  • If scope_pressure <= 10: Normal operation. Dispatch up to N_QUARTER workers.

This creates a natural feedback loop: when the implementation pipeline is overwhelmed, issue-discovery agents automatically throttle back, allowing implementors to catch up. When the backlog shrinks, discovery agents resume at full capacity.

Expected Impact

  • Prevents runaway scope explosion during high-parallelism sessions
  • Reduces groomer/triager workload during peak periods
  • Allows implementation pipeline to catch up before more issues are created
  • Self-regulating: no manual intervention needed

Risk Assessment

  • Low risk: The change only adds a pre-dispatch check. It does not modify any testing or analysis logic. Workers that are already running complete normally.
  • Potential concern: If the implementation pipeline is permanently slow (e.g., all PRs have CI failures), the discovery agents could be permanently paused. Mitigated by the 5-minute re-check interval — the agents will resume as soon as the ratio improves.
  • Edge case: At session startup, there may be 0 open PRs, making the ratio infinite. The max(1, open_prs) denominator handles this.

This is a proposal from the agent evolver. A human must approve this issue before the change will be implemented. To approve: remove the needs feedback label, add State/Verified, or comment with approval.


Automated by CleverAgents Bot
Supervisor: Agent Evolver | Agent: ca-agent-evolver

## Agent Improvement Proposal ### Pattern Detected **Type**: Configuration adjustment / workflow fix **Affected Agents**: `ca-uat-tester` (pool supervisor mode), `ca-bug-hunter` (pool supervisor mode) **Evidence**: During Session 3 (issue #2877, watchdog cycles 1-18): - **175 new issues created in 90 minutes** by UAT testers and bug hunters - **Only 1 PR merged** in the same 90-minute window - **89 open PRs** accumulated, creating a massive review/merge backlog - **673 total open issues** across milestones v3.2.0 through v3.7.0 The N_QUARTER tiering (introduced to prevent scope explosion) caps issue-discovery workers at `max(1, N//4)`. With N=16, this gives N_QUARTER=4 workers each for UAT and bug hunting — 8 issue-discovery agents total. Each agent can file multiple issues per cycle, resulting in a net issue creation rate that vastly exceeds the implementation pipeline's capacity. **Quantified imbalance**: Issue creation rate ≈ 2 issues/minute. PR merge rate ≈ 0.01 PRs/minute. The system is creating issues ~200x faster than it can close them. ### Proposed Change Add a **scope pressure check** to both `ca-uat-tester.md` and `ca-bug-hunter.md` pool supervisor loops. Before dispatching new workers each cycle, the supervisor queries Forgejo for the current open issue count and open PR count, then computes a "scope pressure" ratio: ``` scope_pressure = open_issues / max(1, open_prs) ``` **Throttling behavior:** - If `scope_pressure > 20` (20+ open issues per open PR): **Pause all new worker dispatches.** Sleep for 5 minutes and re-check. Post a comment on the tracking issue: "Scope pressure high (ratio: X). Pausing issue discovery to let implementation catch up." - If `scope_pressure > 10`: **Reduce active workers to 1** (minimum). Only dispatch one worker at a time instead of N_QUARTER. - If `scope_pressure <= 10`: **Normal operation.** Dispatch up to N_QUARTER workers. This creates a natural feedback loop: when the implementation pipeline is overwhelmed, issue-discovery agents automatically throttle back, allowing implementors to catch up. When the backlog shrinks, discovery agents resume at full capacity. ### Expected Impact - Prevents runaway scope explosion during high-parallelism sessions - Reduces groomer/triager workload during peak periods - Allows implementation pipeline to catch up before more issues are created - Self-regulating: no manual intervention needed ### Risk Assessment - **Low risk**: The change only adds a pre-dispatch check. It does not modify any testing or analysis logic. Workers that are already running complete normally. - **Potential concern**: If the implementation pipeline is permanently slow (e.g., all PRs have CI failures), the discovery agents could be permanently paused. Mitigated by the 5-minute re-check interval — the agents will resume as soon as the ratio improves. - **Edge case**: At session startup, there may be 0 open PRs, making the ratio infinite. The `max(1, open_prs)` denominator handles this. --- *This is a proposal from the agent evolver. A human must approve this issue before the change will be implemented. To approve: remove the `needs feedback` label, add `State/Verified`, or comment with approval.* --- **Automated by CleverAgents Bot** Supervisor: Agent Evolver | Agent: ca-agent-evolver
Author
Owner

If there are bugs to be detected, then they should be detected. This is a non-issue.

If there are bugs to be detected, then they should be detected. This is a non-issue.
Author
Owner

State label reconciliation:

  • Previous state: State/Unverified
  • Corrected to: State/Wont Do (issue was closed without implementation — it's a proposal that was rejected/deferred)
  • Reason: Issue is closed but has a non-terminal state label. Per CONTRIBUTING.md, closed issues must have State/Completed or State/Wont Do.

Note: Using State/Wont Do since this appears to be a proposal that was closed without being implemented.


Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: ca-backlog-groomer

State label reconciliation: - Previous state: `State/Unverified` - Corrected to: `State/Wont Do` (issue was closed without implementation — it's a proposal that was rejected/deferred) - Reason: Issue is closed but has a non-terminal state label. Per CONTRIBUTING.md, closed issues must have `State/Completed` or `State/Wont Do`. Note: Using `State/Wont Do` since this appears to be a proposal that was closed without being implemented. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: ca-backlog-groomer
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
cleveragents/cleveragents-core#3067
No description provided.