AT-4: Architect routing + reviewer pool from agent_type_routing #746

Closed
opened 2026-05-02 17:25:27 +00:00 by claude-desktop · 0 comments
Collaborator

As a platform engineer, I want every reader of cfg.types[t].label_rules / assignee_rules / routes_labels / default_match_labels / reviews_authors / reviews_labels to swap to getAgentType(t).routing, so that the architect's label / assignee suggestions and the reviewer-pool selection respond to operator overrides without a restart.

Acceptance criteria

Architect

  • domain/agent/architect.ts::suggestLabels and ::suggestAssignee read from getAgentType('architect').routing, not from cfg.
  • An override at scope='agent_type' for architect.label_rules changes the next architect chat's suggested labels without a restart.

Reviewer pool

  • Reviewer-pool selection (domain/dispatch/registry.ts and webhook-routing.ts) reads reviews_authors / reviews_labels from the resolver.

Webhook routing

  • infrastructure/forge/labels.ts and webhook-routing.ts read routes_labels / default_match_labels from the resolver.

Tests

  • Unit: architect handler returns operator-edited rules.
  • Integration: dispatch flow respects an overridden default_match_labels for one type without affecting peers.

Out of scope

  • Dashboard editor for the rules — covered by AT-6.

References

  • Spec: specs/config-to-db.md § Story AT-4.
  • Blocked by: AT-1, AT-2.
As a platform engineer, I want every reader of `cfg.types[t].label_rules` / `assignee_rules` / `routes_labels` / `default_match_labels` / `reviews_authors` / `reviews_labels` to swap to `getAgentType(t).routing`, so that the architect's label / assignee suggestions and the reviewer-pool selection respond to operator overrides without a restart. ## Acceptance criteria ### Architect - [ ] `domain/agent/architect.ts::suggestLabels` and `::suggestAssignee` read from `getAgentType('architect').routing`, not from `cfg`. - [ ] An override at `scope='agent_type'` for `architect.label_rules` changes the next architect chat's suggested labels without a restart. ### Reviewer pool - [ ] Reviewer-pool selection (`domain/dispatch/registry.ts` and `webhook-routing.ts`) reads `reviews_authors` / `reviews_labels` from the resolver. ### Webhook routing - [ ] `infrastructure/forge/labels.ts` and `webhook-routing.ts` read `routes_labels` / `default_match_labels` from the resolver. ### Tests - [ ] Unit: architect handler returns operator-edited rules. - [ ] Integration: dispatch flow respects an overridden `default_match_labels` for one type without affecting peers. ## Out of scope - Dashboard editor for the rules — covered by AT-6. ## References - Spec: `specs/config-to-db.md` § Story AT-4. - Blocked by: AT-1, AT-2.
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
charles/claude-hooks#746
No description provided.