# Códigos de error

Cada error tiene un código estable, un mensaje y una solución. Los códigos nunca se traducen.

## E_INTERNAL

HTTP 500 · exit 1

Algo falló dentro de GenPM.

**Solución:** Reintenta con --verbose y, si persiste, reporta el problema con su requestId.

## E_BAD_REQUEST

HTTP 400 · exit 2

La petición no es válida: …

**Solución:** Revisa los parámetros e inténtalo de nuevo.

## E_USAGE

HTTP 400 · exit 2

Uso incorrecto: …

**Solución:** Ejecuta genpm --help para ver las opciones disponibles.

## E_CONFIRM_REQUIRED

HTTP 400 · exit 2

Hace falta confirmación: …

**Solución:** Ejecútalo en una terminal interactiva o pasa … para confirmar.

## E_PAYLOAD_TOO_LARGE

HTTP 413 · exit 2

El cuerpo de la petición es demasiado grande.

**Solución:** Envía como máximo 16 KB.

## E_NOT_FOUND

HTTP 404 · exit 3

No se encontró ….

**Solución:** Revisa el nombre o busca con genpm search <consulta>.

## E_NO_MATCHING_VERSION

HTTP 404 · exit 3

Ninguna versión de … cumple ….

**Solución:** Ejecuta genpm info … para ver las versiones publicadas.

## E_DEST_CONFLICT

HTTP 409 · exit 4

… existe y no está vacío.

**Solución:** Usa --dest <dir> o --force (hace una copia de seguridad antes).

## E_RANGE_UNSATISFIED

HTTP 409 · exit 4

Ninguna versión cumple todos los rangos: …

**Solución:** Instala antes una versión compatible del paquete en conflicto o fija otra versión.

## E_ALREADY_INSTALLED

HTTP 409 · exit 4

… … ya está instalado.

**Solución:** No hay nada que hacer. Usa genpm list para ver los paquetes instalados.

## E_VERSION_EXISTS

HTTP 409 · exit 4

…@… ya está publicado.

**Solución:** Las versiones son inmutables: sube la versión en genpm.json y crea un tag nuevo.

## E_DRIFT

HTTP 409 · exit 4

… tiene cambios locales en ….

**Solución:** Usa --keep-code para conservar tu código o --force para borrarlo igualmente.

## E_REQUIRED_BY

HTTP 409 · exit 4

… es necesario para ….

**Solución:** Elimina primero los paquetes que dependen de él.

## E_BUSY

HTTP 409 · exit 4

Otro proceso de GenPM está modificando este proyecto.

**Solución:** Espera a que termine. Si no hay ninguno en marcha, borra .genpm/.lock.

## E_PLAN_STALE

HTTP 409 · exit 4

El proyecto cambió desde que se calculó el plan.

**Solución:** Vuelve a calcular el plan (simulación) y confírmalo.

## E_NETWORK

HTTP 502 · exit 5

No se pudo conectar con ….

**Solución:** Revisa tu conexión, el proxy o GENPM_REGISTRY y reintenta.

## E_UPSTREAM_GIT

HTTP 502 · exit 5

Falló el host de Git: …

**Solución:** Comprueba que el repositorio es accesible con tus credenciales de Git y reintenta.

## E_RATE_LIMITED

HTTP 429 · exit 5

Demasiadas peticiones.

**Solución:** Espera … y reintenta.

## E_READ_ONLY

HTTP 503 · exit 5

El registry está en modo solo lectura por mantenimiento.

**Solución:** Instalar sigue funcionando. Vuelve a publicar más tarde; hay novedades en genpm.net.

## E_INTEGRITY

HTTP 422 · exit 6

Falló la verificación de integridad de …: …

**Solución:** No uses este paquete. Repórtalo en genpm.net/report si persiste.

## E_SIGNATURE

HTTP 422 · exit 6

La firma del registry para … no es válida.

**Solución:** No lo instales. Actualiza GenPM (claves de firma nuevas) y repórtalo si persiste.

## E_PATH_UNSAFE

HTTP 422 · exit 6

Ruta insegura … (…).

**Solución:** Usa una ruta relativa dentro del proyecto, sin .., rutas absolutas ni carpetas reservadas.

## E_AUTORUN_FILE

HTTP 422 · exit 6

… contiene archivos que se ejecutan solos: ….

**Solución:** Estos archivos nunca se instalan. Pide al autor que los quite o usa --allow-autorun solo con publishers verificados.

## E_SCAN_FAILED

HTTP 422 · exit 6

El escaneo de seguridad rechazó …: …

**Solución:** Corrige los hallazgos que muestra genpm validate y publica una versión nueva.

## E_INSECURE_PERMS

HTTP 400 · exit 6

Otros usuarios pueden leer ….

**Solución:** Ejecuta chmod 600 ….

## E_QUARANTINED

HTTP 451 · exit 6

… está en revisión de seguridad.

**Solución:** Inténtalo más tarde o elige otro paquete. Las revisiones tardan menos de 24 horas hábiles.

## E_REF_MUTABLE

HTTP 422 · exit 6

… no es una referencia inmutable.

**Solución:** Usa un tag de Git o un SHA de commit completo de 40 caracteres, nunca una rama.

## E_ADVISORY

HTTP 409 · exit 6

… … tiene un aviso de seguridad de severidad ….

**Solución:** Actualiza a … o posterior.

## E_TOO_LARGE

HTTP 422 · exit 6

… supera el límite de tamaño: …

**Solución:** Excluye archivos con .genpmignore o sube el límite con --max-size si el paquete es legítimo.

## E_MANIFEST_INVALID

HTTP 422 · exit 6

genpm.json no es válido.

**Solución:** Corrige los campos indicados en los detalles. Ejecuta genpm validate para ver el informe completo.

## E_LOCK_INVALID

HTTP 422 · exit 6

genpm.lock no es válido o está dañado.

**Solución:** Restáuralo desde Git; nunca edites genpm.lock a mano.

## E_NAME_MISMATCH

HTTP 422 · exit 6

El nombre del manifiesto … no coincide con ….

**Solución:** Publica con el nombre declarado en genpm.json.

## E_REF_NOT_FOUND

HTTP 422 · exit 3

… no existe en ….

**Solución:** Crea y sube el tag: git tag … && git push --tags.

## E_REF_NOT_PUSHED

HTTP 422 · exit 4

… no está en el remoto o apunta a otro commit.

**Solución:** Sube el tag con git push origin ….

## E_REPO_NOT_ALLOWED

HTTP 422 · exit 7

… no pertenece al scope @….

**Solución:** Publica desde un repositorio del owner de GitHub vinculado al scope.

## E_REPO_CHANGED

HTTP 422 · exit 6

El repositorio de … cambió (posible repojacking).

**Solución:** Escribe a hello@genpm.net con asunto [SECURITY] para transferir el paquete.

## E_CONTEXT_MISSING

HTTP 422 · exit 6

No existe el archivo de reglas de IA ….

**Solución:** Crea … (genpm init genera una plantilla) o define x en genpm.json.

## E_CONTEXT_TOO_LARGE

HTTP 422 · exit 6

El archivo de reglas de IA … supera los 16 KB.

**Solución:** Acórtalo: céntralo en propósito, mapa, integración, convenciones y qué no hacer.

## E_AUTH

HTTP 401 · exit 7

No has iniciado sesión o tu token no es válido o ha caducado.

**Solución:** Ejecuta genpm login (o define GENPM_TOKEN en CI).

## E_FORBIDDEN_SCOPE

HTTP 403 · exit 7

No puedes publicar en @….

**Solución:** Pide permiso de publicación a un owner de @… o usa tu propio scope.

## E_GIT_MISSING

HTTP 500 · exit 8

Git no está instalado o es anterior a la 2.25.

**Solución:** Instala Git 2.25 o posterior y reintenta.

## E_NODE_VERSION

HTTP 500 · exit 8

GenPM necesita Node.js 20.11 o posterior (encontrado …).

**Solución:** Actualiza Node.js o instala el binario independiente de genpm, que no lo necesita: genpm.net/docs/install

## E_UPGRADE_UNSUPPORTED

HTTP 400 · exit 8

Esta copia de GenPM se instaló con …: genpm upgrade solo actualiza el binario independiente.

**Solución:** Actualízala con … o instala el binario desde genpm.net/docs/install.

## E_UPGRADE_PERMISSION

HTTP 500 · exit 8

No se puede reemplazar …: permiso denegado.

**Solución:** Ejecuta genpm upgrade con el usuario dueño de ese archivo o reinstala con el script de genpm.net/docs/install.

## E_UPGRADE_INTEGRITY

HTTP 422 · exit 6

El … descargado no coincide con su checksum SHA-256 publicado.

**Solución:** No se cambió nada. Reinténtalo más tarde; si se repite, avísanos en hello@genpm.net con el asunto [SECURITY].

## E_MCP_SERVE_UNAVAILABLE

HTTP 500 · exit 8

genpm mcp serve solo viene incluido en el binario independiente de genpm.

**Solución:** Usa npx -y @genpm/mcp como comando MCP (genpm mcp setup lo hace por ti) o instala el binario desde genpm.net/docs/install.

## E_NOT_A_PROJECT

HTTP 400 · exit 8

No se encontró un proyecto en ….

**Solución:** Ejecuta el comando dentro de un proyecto (con package.json o .git) o pasa --cwd <dir>.
