Skip to content

Configuration alignment: remove duplicate strategist TaskSpawner and wire up the unused read-only AgentConfig #1251

Description

@kelos-bot

🤖 Kelos Self-Update Agent @gjkim42

Area: Configuration Alignment

While reviewing the self-development/ TaskSpawner definitions I found two concrete configuration-alignment problems. Both are mechanical to fix and backed by the current file contents plus a previously-merged PR.


1. self-development.yaml is a stale duplicate of kelos-fake-strategist.yaml (name collision)

self-development/self-development.yaml and self-development/kelos-fake-strategist.yaml both define a TaskSpawner with the same identity:

metadata:
  name: kelos-fake-strategist
  namespace: kelos-self-dev

Evidence (grep -n "^ name:" self-development/*.yaml):

self-development/kelos-fake-strategist.yaml:  name: kelos-fake-strategist
self-development/self-development.yaml:        name: kelos-fake-strategist

diff of the two files shows their TaskSpawner specs are identical apart from whitespace. Applying the directory as a whole (kubectl apply -f self-development/ or equivalent) means two manifests fight over the same object — the second apply silently overwrites the first, and any future divergence between the files becomes a non-deterministic, last-writer-wins config. The file also appears to be a leftover from a rename: it is named self-development.yaml but contains the strategist spawner, and it is not listed in the README TaskSpawner table.

Proposal: delete self-development/self-development.yaml. The canonical definition is kelos-fake-strategist.yaml, which matches the README table and the per-agent file naming convention used by every other spawner.


2. The claude-agent-config-readonly AgentConfig is defined and documented but never referenced

self-development/agentconfig.yaml defines two AgentConfigs:

  • claude-agent-config — for agents that modify code
  • claude-agent-config-readonly — for agents that only analyze and report

The README documents the intended convention explicitly:

Read-only agents (strategist, fake-user) should use claude-agent-config-readonly.

But every TaskSpawner currently points at the code-modifying config (grep -n "name: claude-agent-config$" self-development/*.yaml):

self-development/kelos-fake-strategist.yaml:    name: claude-agent-config
self-development/kelos-fake-user.yaml:          name: claude-agent-config

So claude-agent-config-readonly is dead configuration, and the two agents that should be read-only (they only gh issue create, never touch code) run with the full code-editing config. Notably, merged PR #1238 ("Use claude-agent-config-readonly for read-only reviewer agents") already attempted exactly this change to these files, yet the live files no longer reflect it — the duplicate file in finding #1 is a plausible reason the change was lost/overwritten.

Proposal: point the read-only spawners at the read-only config:

  • kelos-fake-strategist.yaml: agentConfigRef.name: claude-agent-config-readonly
  • kelos-fake-user.yaml: agentConfigRef.name: claude-agent-config-readonly

(Do finding #1 first so the change isn't shadowed by the duplicate.) If the project decides read-only configs are not wanted, the inverse fix is to remove claude-agent-config-readonly from agentconfig.yaml and update the README — but the convention text + PR #1238 indicate read-only is the intended design.


Scope / non-overlap

Acceptance criteria

  • self-development/self-development.yaml removed; no two manifests share a name+namespace.
  • kelos-fake-strategist.yaml and kelos-fake-user.yaml reference claude-agent-config-readonly (or the readonly config + README convention are removed instead).
  • README TaskSpawner table still matches the set of files on disk.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions