NousResearch/hermes-agent · error · GenerationError

only {len(filled_states)}/{len(atlas.ROW_SPECS)} animation r

Error message

only {len(filled_states)}/{len(atlas.ROW_SPECS)} animation rows were usable; regenerate

What it means

Error "only {len(filled_states)}/{len(atlas.ROW_SPECS)} animation rows were usable; regenerate" thrown in NousResearch/hermes-agent.

Source

Thrown at agent/pet/generate/orchestrate.py:338

    # Idle is the resting state the renderer falls back to — guarantee it.
    if not frames_by_state.get("idle"):
        progress("row", "idle-fallback")
        frames_by_state["idle"] = [atlas.single_frame(base, fit=False)]

    progress("compose", "")
    logger.info("pet hatch %r: composing atlas from %d states", slug, len(frames_by_state))
    # One shared scale + baseline across every state so the pet never slides or
    # pulses size between frames; compose just packs the normalized cells.
    sheet = atlas.compose_atlas(atlas.normalize_cells(frames_by_state))
    validation = atlas.validate_atlas(sheet)
    if not validation["ok"]:
        raise GenerationError("; ".join(validation["errors"]) or "atlas validation failed")
    filled_states = set(validation["filled_states"])
    missing_required = sorted(_REQUIRED_STATES - filled_states)
    if missing_required:
        raise GenerationError(f"missing required animation row(s): {', '.join(missing_required)}")
    if len(filled_states) < _MIN_FILLED_STATES:
        raise GenerationError(
            f"only {len(filled_states)}/{len(atlas.ROW_SPECS)} animation rows were usable; regenerate"
        )

    from agent.pet import store

    progress("save", slug)
    logger.info("pet hatch %r: saving pet", slug)
    pet = store.register_local_pet(
        sheet,
        slug=slug,
        display_name=display_name or slug,
        description=description,
    )
    return HatchResult(
        slug=pet.slug,
        display_name=pet.display_name,
        spritesheet=pet.spritesheet,
        states=validation["filled_states"],

View on GitHub (pinned to c896c09c42)

Solutions

  1. Regenerate; too few animation rows were usable.
  2. Improve the reference image/prompt so more rows pass validation.
  3. Retry with a different image backend if rows keep failing.

When it happens

Trigger: Thrown at agent/pet/generate/orchestrate.py:338 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of NousResearch/hermes-agent@c896c09c42 (2026-08-14). Data as JSON: /api/errors/6f059a67b0312182. Report an issue: GitHub.