🤖 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
🤖 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.yamlis a stale duplicate ofkelos-fake-strategist.yaml(name collision)self-development/self-development.yamlandself-development/kelos-fake-strategist.yamlboth define aTaskSpawnerwith the same identity:Evidence (
grep -n "^ name:" self-development/*.yaml):diffof 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 namedself-development.yamlbut contains the strategist spawner, and it is not listed in the README TaskSpawner table.Proposal: delete
self-development/self-development.yaml. The canonical definition iskelos-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-readonlyAgentConfig is defined and documented but never referencedself-development/agentconfig.yamldefines two AgentConfigs:claude-agent-config— for agents that modify codeclaude-agent-config-readonly— for agents that only analyze and reportThe README documents the intended convention explicitly:
But every TaskSpawner currently points at the code-modifying config (
grep -n "name: claude-agent-config$" self-development/*.yaml):So
claude-agent-config-readonlyis dead configuration, and the two agents that should be read-only (they onlygh 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-readonlykelos-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-readonlyfromagentconfig.yamland update the README — but the convention text + PR #1238 indicate read-only is the intended design.Scope / non-overlap
self-development/.Acceptance criteria
self-development/self-development.yamlremoved; no two manifests share aname+namespace.kelos-fake-strategist.yamlandkelos-fake-user.yamlreferenceclaude-agent-config-readonly(or the readonly config + README convention are removed instead).