pbakaus/impeccable · error · Error
concept-seed: --register must be safer or bolder
Error message
concept-seed: --register must be safer or bolder
What it means
Thrown when `register` is set to anything other than null, 'safer', or 'bolder'. Register steers a direction re-roll toward a safer or bolder posture; it is optional (default null) and admits exactly two non-null values. Typos and synonyms are rejected.
Source
Thrown at skill/scripts/concept-seed.mjs:313
scope = 'surface',
key = process.env.IMPECCABLE_CONCEPT_SEED || crypto.randomBytes(4).toString('hex'),
reroll = 0,
register = null,
mode = null,
grain = null,
platform = null,
candidateCount = 7,
catalogDir = CATALOG_DIR,
_resolvedData = undefined,
} = {}) {
if (scope !== 'surface' && scope !== 'direction') {
throw new Error('concept-seed: --scope must be direction or surface');
}
if (!Number.isInteger(reroll) || reroll < 0) {
throw new Error('concept-seed: --reroll must be a non-negative integer');
}
if (register !== null && register !== 'safer' && register !== 'bolder') {
throw new Error('concept-seed: --register must be safer or bolder');
}
if (register !== null && reroll < 1) {
throw new Error('concept-seed: --register steers a re-roll round; pass --reroll <n> with it');
}
if (register !== null && scope !== 'direction') {
throw new Error('concept-seed: --register applies to direction rounds only');
}
if (mode !== null && !SEED_MODES.has(mode)) {
throw new Error('concept-seed: --mode must be persuade, operate, read, or experience');
}
// Grain needs no mode: how much of the product is in play is independent of
// which register of work it is.
if (grain !== null && !COMPOSITION_GRAINS.includes(grain)) {
throw new Error(`concept-seed: --grain must be one of ${COMPOSITION_GRAINS.join(', ')}`);
}
if (platform !== null && !COMPOSITION_PLATFORMS.includes(platform)) {
throw new Error(`concept-seed: --platform must be one of ${COMPOSITION_PLATFORMS.join(', ')}`);
}View on GitHub (pinned to d14711ae3d)
Solutions
- Use exactly 'safer' or 'bolder', or omit register / pass null for an unsteered round.
- Normalize input to lowercase and trim before passing, then validate.
Example fix
// before
await seedConcepts({ scope: 'direction', reroll: 1, register: 'bold' });
// after
await seedConcepts({ scope: 'direction', reroll: 1, register: 'bolder' }); // or 'safer' Defensive patterns
Strategy: type-guard
Type guard
const REGISTERS = new Set(['safer', 'bolder']);
function isValidRegister(v) {
return v == null || REGISTERS.has(v);
} Prevention
- Use exactly 'safer' or 'bolder' (lowercase), or omit / pass null.
- Normalize case and trim before validating.
- Avoid synonyms like 'safe'/'bold'/'medium'.
When it happens
Trigger: Passing 'safe', 'bold', 'medium', 'conservative', 'aggressive'; passing an empty string instead of null; case mismatch like 'Safer'.
Common situations: A caller using natural-language synonyms; config loaded from YAML where the value was hand-typed; confusion with a separate 'register' concept elsewhere.
Related errors
- concept-seed: --scope must be direction or surface
- concept-seed: --mode must be persuade, operate, read, or exp
- concept-seed: --grain must be one of ${COMPOSITION_GRAINS.jo
- concept-seed: --platform must be one of ${COMPOSITION_PLATFO
- concept-seed: --reroll must be a non-negative integer
AI-assisted analysis of pbakaus/impeccable@d14711ae3d (2026-08-13).
Data as JSON: /api/errors/c4a2ebe1d37f343e.
Report an issue: GitHub.