diff --git a/tools/mj-queue.mjs b/tools/mj-queue.mjs index 86e7f04..23cd228 100644 --- a/tools/mj-queue.mjs +++ b/tools/mj-queue.mjs @@ -80,12 +80,21 @@ export const TOKENS = { * and twenty minutes of wondering whether the account is out of fast hours. Cheaper to * catch here than to sit through. */ -/* Learned in production, one silent stall at a time. "bare" was added on 2026-09-23 after - the martlet failed three times over ninety minutes: the gryphon succeeded in the same - run, so it was not the service, and replacing that single word made the martlet return - immediately. A moderation refusal never appears in the channel, so this is the only - record that the word costs half an hour. */ -const BANNED = ["gore", "bust", "corpse", "mutilat", "blood-soaked", "bare"]; +/* Learned in production, one silent stall at a time. + * + * "bare" was added here on 2026-09-23 and REMOVED the same night. The martlet had failed + * three times over ninety minutes; regenerating it with that one word replaced brought it + * back, and that was published as the diagnosis. It was wrong. 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, not to trust it. + * + * Nothing in this list should be added from a single successful retry. Use ~/bin/mj-blocked, + * which sends the prompt and reports in two minutes whether the bot answered at all: a + * refusal is ephemeral and never reaches the channel, so silence there is the only + * evidence that distinguishes a banned word from a slow one. */ +const BANNED = ["gore", "bust", "corpse", "mutilat", "blood-soaked"]; /* ---------------------------------------------------------------- derivation */ @@ -121,10 +130,10 @@ const buildWords = ch => bandOf((Number(ch?.str) || 12) / (Number(ch?.siz) || 12 armour to be left out, because a word choice is an argument and a --no is closer to a guarantee. */ const armourWords = (n, era = "antique") => bandOf(Number(n) || 0, [ - /* NOT "bare". Midjourney's moderation refuses that word — it reads as nudity — and a - refusal is ephemeral, so the job simply never arrives. The martlet stalled for thirty - minutes three times; changing this one word and nothing else made it return. Thirteen - creatures carried it, every one of them a creature with no natural armour. */ + /* This band said "bare, unprotected" and was changed on the belief that "bare" was + blocking the martlet. That belief did not survive testing — the prompt with "bare" is + accepted — so the change is kept only because the wording is better, and NOT as a + workaround for anything. */ [0, "thin-skinned, nothing between it and a blow"], [3, "tough hide"], [6, "thick natural plating, part of the animal"],