feat(config): pipeline + watchdog thresholds driven by agents.json #470

Merged
code-lead merged 1 commit from dev/453 into main 2026-04-27 17:14:49 +00:00
Collaborator

Adds container_interval_sec, tail_pr_rebase_interval_ms, dead_letter_threshold, and janitor_interval_ms to agents.json::watchdogs. Removes the duplicate MAX_ROUNDS = 3 constant in favour of getMaxReviewRounds() reading pipeline.max_review_rounds. All five previously-hardcoded watchdog/pipeline consts now fall back to getWebhookConfig() at runtime so operators can tune SLAs per-deployment without recompiling.

Test plan

  • All 48 existing review-loop tests pass with getMaxReviewRounds() replacing MAX_ROUNDS.
  • New tests: stall_threshold_ms override changes loaded cutoff; max_review_rounds override changes getMaxReviewRounds() return value.
  • All 49 dispatch/watchdog + completion-proof tests pass unchanged.
  • bun x tsc --noEmit and biome check clean on all changed files.

Closes #453

Adds `container_interval_sec`, `tail_pr_rebase_interval_ms`, `dead_letter_threshold`, and `janitor_interval_ms` to `agents.json::watchdogs`. Removes the duplicate `MAX_ROUNDS = 3` constant in favour of `getMaxReviewRounds()` reading `pipeline.max_review_rounds`. All five previously-hardcoded watchdog/pipeline consts now fall back to `getWebhookConfig()` at runtime so operators can tune SLAs per-deployment without recompiling. ## Test plan - All 48 existing review-loop tests pass with `getMaxReviewRounds()` replacing `MAX_ROUNDS`. - New tests: `stall_threshold_ms` override changes loaded cutoff; `max_review_rounds` override changes `getMaxReviewRounds()` return value. - All 49 dispatch/watchdog + completion-proof tests pass unchanged. - `bun x tsc --noEmit` and `biome check` clean on all changed files. Closes #453
feat(config): pipeline + watchdog thresholds driven by agents.json (#453)
Some checks failed
qa / qa (pull_request) Has been cancelled
qa / dockerfile (pull_request) Has been cancelled
5438beeb42
Add container_interval_sec, tail_pr_rebase_interval_ms, dead_letter_threshold,
and janitor_interval_ms to agents.json::watchdogs. Remove duplicate MAX_ROUNDS
constant; replace with getMaxReviewRounds() reading pipeline.max_review_rounds.
Wire all five watchdog/pipeline consts to fall back to getWebhookConfig() at
runtime so operators can tune SLAs per-deployment without recompiling.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
dev force-pushed dev/453 from 5438beeb42
Some checks failed
qa / qa (pull_request) Has been cancelled
qa / dockerfile (pull_request) Has been cancelled
to 5e8f4a2cdf
All checks were successful
qa / qa (pull_request) Successful in 9m17s
qa / dockerfile (pull_request) Successful in 14s
2026-04-27 16:17:25 +00:00
Compare
dev requested review from reviewer 2026-04-27 16:46:36 +00:00
reviewer approved these changes 2026-04-27 17:14:10 +00:00
reviewer left a comment

All four watchdog knobs (container_interval_sec, tail_pr_rebase_interval_ms, dead_letter_threshold, janitor_interval_ms) parse correctly with positive-number validation and console.warn fallback; max_review_rounds replaces the hardcoded MAX_ROUNDS; both new tests cover the required AC items; CI green.

Nit: the issue's AC lists default_threshold_ms but the existing field is default_stall_ms — pre-existing naming drift from M19-6, not introduced here.

All four watchdog knobs (`container_interval_sec`, `tail_pr_rebase_interval_ms`, `dead_letter_threshold`, `janitor_interval_ms`) parse correctly with positive-number validation and `console.warn` fallback; `max_review_rounds` replaces the hardcoded `MAX_ROUNDS`; both new tests cover the required AC items; CI green. Nit: the issue's AC lists `default_threshold_ms` but the existing field is `default_stall_ms` — pre-existing naming drift from M19-6, not introduced here.
code-lead deleted branch dev/453 2026-04-27 17:14:53 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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
charles/claude-hooks!470
No description provided.