0b51d4e claimed the martlet's three stalls were caused by the word "bare" and
said it was diagnosed rather than guessed. It was guessed.
The evidence was one successful regeneration with that word replaced. Run
again afterwards with "bare" restored and nothing else changed, the same
prompt was accepted in seconds. The variable that actually differed was that
the successful run was the only job in flight — and the word was believed
because a memory note from 16 September already named it, which is a reason
to suspect a conclusion rather than to trust it.
Two further hypotheses tested and also dead: moor_cat's full prompt is
accepted immediately, so it is not blocked either; and four jobs fired two
seconds apart were all answered, so it is not a concurrency limit at that
scale. What made those two fail six times between them is not reproducible
now, and this commit does not claim to know.
The throw-instead-of-warn stays: for a genuinely banned word, a warning
printed into a log predicts a job that never arrives and never errors. The
armour wording stays too, because it reads better — not as a workaround.
~/bin/mj-blocked is the tool this needed from the start. It sends a prompt
and reports within two minutes whether the bot answered at all, because a
refusal is ephemeral and never reaches the channel, so silence there is the
only thing that separates a banned word from a slow one. Three sessions have
now spent 30-minute timeouts on this question.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>