Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

descriptors.ts selectors ignore their `env` arg — silent wrong-descriptor risk if a second env is wired

Abierto Apto para principiantes
#469 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
68/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
typescript
Área
cli

Línea de trabajo

Comienza en src/utils/descriptors.ts leyendo los tres selectores y sus imports de descriptores de paseo; después, sigue la env pasada desde src/utils/connection.ts. Asegúrate de que los entornos inesperados fallen de forma explícita, mientras que el entorno paseo conectado siga siendo válido, y ejecuta tsc junto con la comprobación de divergencias de config.test.ts para verificar el cambio.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

task

Summary

Since #465, the three descriptor selectors in src/utils/descriptors.ts
(getAssetHubDescriptor / getBulletinDescriptor / getIndividualityDescriptor)
ignore their env parameter and unconditionally return the paseo-* descriptor.
This is safe today, but it is a latent footgun: the correctness of the selectors
depends on an implicit invariant enforced in a different file.

Background

@parity/[email protected] dropped the summit-* descriptor
subpaths (and summit was retired), so the selectors no longer branch per env —
they return the fixed paseo constants and discard the env arg:

export function getAssetHubDescriptor(_env: Env | undefined): AssetHubDescriptor {
    return paseo_asset_hub;
}
export function getBulletinDescriptor(_env: Env | undefined): BulletinDescriptor { … }
export function getIndividualityDescriptor(_env: Env | undefined): IndividualityDescriptor { … }

The risk

getConnection() (src/utils/connection.ts) builds the direct PAPI clients from
getAssetHubDescriptor(getChainConfig().env) (and the bulletin/individuality
equivalents). Because the env arg is discarded, "always return paseo" is only
correct while paseo-next-v2 is the sole env wired in CONFIGS.

If someone later wires a second env into CONFIGS (e.g. polkadot, which is
already present in ENV_IDS) without also editing descriptors.ts, direct
reads would decode that chain's state with the paseo descriptor — silently
wrong metadata, with no error raised. The only thing preventing this today is
getChainConfig() throwing for any env not in CONFIGS — an implicit safety net
one file away from the code that relies on it.

Proposed fix

Make the selectors fail loud instead of silently returning paseo for an
unexpected env: assert the requested env resolves to a paseo-family descriptor
(or that it is the wired default) and throw otherwise. ~3 lines; converts the
latent footgun into an immediate, obvious error the moment a second env is wired.
Restore real per-env selection here if/when another env ships dedicated
descriptors upstream.

Context

Surfaced by the #465 code review (altitude / latent-correctness finding).
Not a live bug — only paseo-next-v2 is wired today, and tsc + the
config.test.ts divergence guard both hold. Filed as hardening / tech-debt.

Lenguaje dominante
TypeScript
Estrellas
5
Forks
12
Merge medio
7 d 6 h
PR fusionados (30 d)
3

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de paritytech/playground-cli

Todos los issues de paritytech/playground-cli

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.