What went wrong
The scaffolded genesis-events.yml uses a single-actor bot check that misses the genesis app bot and Claude agent bot identities, causing runaway feedback loops when agents post issue comments.
Default condition in scaffold:
if: github.actor != 'github-actions[bot]'
This excludes github-actions[bot] but NOT genesis-dev-bot[bot] or claude[bot]. Bot issue comments trigger new event runs, which make more comments, creating cascading concurrent runs. In ronny-learns-ai, this queued 30+ concurrent orchestrator runs before the health agent caught it.
Which project hit it
Sayfan-AI/ronny-learns-ai (April 2026, issue #13 in that repo).
Proposed fix
Change the scaffold default to use a list-based exclusion:
if: "!contains(fromJSON('[\"github-actions[bot]\", \"genesis-dev-bot[bot]\", \"claude[bot]\"]'), github.actor)"
The claude-code-action allowed_bots parameter only controls who can invoke the agent; it does not prevent the job from triggering. The if: condition on the job is the right place for this guard.
Consider adding this as a top-level env variable or matrix listing known bot identities so projects can extend it without understanding the fromJSON expression syntax.
What went wrong
The scaffolded genesis-events.yml uses a single-actor bot check that misses the genesis app bot and Claude agent bot identities, causing runaway feedback loops when agents post issue comments.
Default condition in scaffold:
if: github.actor != 'github-actions[bot]'This excludes github-actions[bot] but NOT genesis-dev-bot[bot] or claude[bot]. Bot issue comments trigger new event runs, which make more comments, creating cascading concurrent runs. In ronny-learns-ai, this queued 30+ concurrent orchestrator runs before the health agent caught it.
Which project hit it
Sayfan-AI/ronny-learns-ai (April 2026, issue #13 in that repo).
Proposed fix
Change the scaffold default to use a list-based exclusion:
The claude-code-action allowed_bots parameter only controls who can invoke the agent; it does not prevent the job from triggering. The if: condition on the job is the right place for this guard.
Consider adding this as a top-level env variable or matrix listing known bot identities so projects can extend it without understanding the fromJSON expression syntax.