AR-1 — Drop the architect filter from /agents/roster and drop the isHost branch #1201

Closed
opened 2026-05-15 12:40:28 +00:00 by architect · 0 comments
Collaborator

Why

/agents/roster is the operator-facing surface for editing every agent type. Architect is the only type it deliberately skips:

// apps/web/src/routes/agents.roster.tsx
const typeNames = Object.keys(typesDraft).filter((n) => n !== "architect");

The filter dates from when architect ran in-process. Post-dockerize (specs/architect-dockerize.md) and post-#1198/#1199/#1200, architect is just another containerised type. Drop the filter. Drop the isHost branch in TypeGroupCard. Treat architect uniformly.

Goal

  • Architect renders on /agents/roster as a regular TypeGroupCard.
  • No special pill, no special body copy, no "host singleton" treatment.
  • The card shows the standard instances table — the one claude-hooks-architect-default row appears with its health / usage / pause / delete affordances.
  • The ⚙ button opens TypeEditorDrawer with every section usable.

Acceptance criteria

  • apps/web/src/routes/agents.roster.tsx: remove .filter((n) => n !== "architect") from the typeNames derivation. Sort architect last so the worker pools stay the page's focal point.
  • apps/web/src/features/agents/roster/type-group-card.tsx: delete the isHost / isArchitect branch entirely. No host pill. No "Singleton — runs in-process" body copy. No special instances-table suppression.
  • The "Add instance" button on architect works like every other type's. (If the operator adds an architect-1 instance, the reconcile loop already supports it per the dockerize spec.)
  • ⚙ on the architect card opens TypeEditorDrawer. Every existing section (Identity / Prompt / Routing / Skills / Thresholds / Provider / Container) renders for architect.

Tests

  • apps/web/src/routes/agents.roster.test.tsx: assert the roster renders an agents-type-card-architect. Click the card body to expand; the instances table shows the claude-hooks-architect-default row.
  • Click ⚙ → TypeEditorDrawer opens. Every section accordion expands.
  • No host pill anywhere on the page.

Out of scope

  • The architect-specific Routing body (#1202).
  • Any platform / host-mode cleanup (#1198 / #1199 / #1200).

References

  • apps/web/src/routes/agents.roster.tsx — the filter line.
  • apps/web/src/features/agents/roster/type-group-card.tsx — branch to delete.
  • specs/architect-dockerize.md — context for why the host treatment is stale.

Depends on

#1200 — strictly speaking #1201 could land before, but landing it on a code path that still has is_host_mode lingering invites confusion. Sequence the cleanup work first.

Tracker

#1203

## Why `/agents/roster` is the operator-facing surface for editing every agent type. Architect is the only type it deliberately skips: ```ts // apps/web/src/routes/agents.roster.tsx const typeNames = Object.keys(typesDraft).filter((n) => n !== "architect"); ``` The filter dates from when architect ran in-process. Post-dockerize (`specs/architect-dockerize.md`) and post-#1198/#1199/#1200, architect is just another containerised type. Drop the filter. Drop the `isHost` branch in `TypeGroupCard`. Treat architect uniformly. ## Goal - Architect renders on `/agents/roster` as a regular `TypeGroupCard`. - No special pill, no special body copy, no "host singleton" treatment. - The card shows the standard instances table — the one `claude-hooks-architect-default` row appears with its health / usage / pause / delete affordances. - The ⚙ button opens `TypeEditorDrawer` with every section usable. ## Acceptance criteria - [ ] `apps/web/src/routes/agents.roster.tsx`: remove `.filter((n) => n !== "architect")` from the `typeNames` derivation. Sort architect last so the worker pools stay the page's focal point. - [ ] `apps/web/src/features/agents/roster/type-group-card.tsx`: delete the `isHost` / `isArchitect` branch entirely. No `host` pill. No "Singleton — runs in-process" body copy. No special instances-table suppression. - [ ] The "Add instance" button on architect works like every other type's. (If the operator adds an `architect-1` instance, the reconcile loop already supports it per the dockerize spec.) - [ ] ⚙ on the architect card opens `TypeEditorDrawer`. Every existing section (Identity / Prompt / Routing / Skills / Thresholds / Provider / Container) renders for architect. ## Tests - [ ] `apps/web/src/routes/agents.roster.test.tsx`: assert the roster renders an `agents-type-card-architect`. Click the card body to expand; the instances table shows the `claude-hooks-architect-default` row. - [ ] Click ⚙ → `TypeEditorDrawer` opens. Every section accordion expands. - [ ] No `host` pill anywhere on the page. ## Out of scope - The architect-specific Routing body (#1202). - Any platform / host-mode cleanup (#1198 / #1199 / #1200). ## References - `apps/web/src/routes/agents.roster.tsx` — the filter line. - `apps/web/src/features/agents/roster/type-group-card.tsx` — branch to delete. - `specs/architect-dockerize.md` — context for why the host treatment is stale. ## Depends on #1200 — strictly speaking #1201 could land before, but landing it on a code path that still has `is_host_mode` lingering invites confusion. Sequence the cleanup work first. ## Tracker #1203
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.

Reference
charles/agent-hooks#1201
No description provided.