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

pre-push blocks pushes on a typecheck error in unmodified src/bus/global.ts

Abierto
#1,165 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
bun, git, node.js, typescript

Línea de trabajo

Comienza con packages/opencode/src/bus/global.ts y la configuración de pre-push del repositorio; después ejecuta bun typecheck desde una instalación limpia mientras registras las versiones resueltas de TypeScript y @types/node. Compara los entornos afectados y limpios para separar el fallo del override de las diferencias de instalación. Se considera terminado cuando el typecheck de pre-push sea fiable para los colaboradores que utilicen la toolchain bloqueada, sin requerir --no-verify.

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

Descripción

What happens

git push is blocked by the pre-push hook because bun typecheck fails on code the contributor did not touch — packages/opencode/src/bus/global.ts:14, which is unmodified on origin/main:

Type 'any[]' is not assignable to type '[event: GlobalEvent]'.
  Target requires 1 element(s) but source may have fewer.

14   override emit(eventName: "event", event: GlobalEvent): boolean {
                   ~~~~~~~~~

Found 1 error in src/bus/global.ts:14

Failed:    @altimateai/altimate-code#typecheck
 ERROR  run failed: command  exited (2)
error: "turbo" exited with code 2
husky - pre-push script failed (code 2)
error: failed to push some refs to 'https://github.com/AltimateAI/altimate-code.git'
The code
class GlobalBusEmitter extends EventEmitter<{
  event: [GlobalEvent]
}> {
  override emit(eventName: "event", event: GlobalEvent): boolean {

With the generic EventEmitter<T> form, the base declares emit across a set of overloads including (eventName: string | symbol, ...args: any[]). An override has to be assignable to all of them, and this narrow one-event signature is not — hence any[] not assignable to [event: GlobalEvent].

Why it matters

The hook is the only pre-push gate in the repo, and this failure is indistinguishable from a real error introduced by the contributor. The natural workaround is git push --no-verify, which disables the gate entirely for that push. Anyone who hits it once tends to keep using it.

Important caveat: not universally reproducible

I could not reproduce it. On a clean worktree at origin/main:

bun typecheck 13 tasks successful, 0 errors
@types/node 24.12.2 (matches the catalog: pin)
typescript 7.29.7
@typescript/native-preview 7.0.0-dev.20251207.1
bun 1.3.14

Same pinned @types/node as the catalog specifies, and global.ts typechecks clean. So this is toolchain- or install-dependent, not a straightforward break on main — which also fits main's CI, where the TypeScript job passes.

That makes the version skew itself part of the bug: two contributors on the same commit get different answers from the same command, and the one who gets the error has no way to tell it apart from a real one.

Suggested direction

Two things worth separating:

  1. Make the override version-robust so it satisfies the base overload set regardless of which @types/node resolves — either by widening the override to the generic signature, or by dropping the emit override in favour of a named method (e.g. publish(event)) that stamps the id and delegates to super.emit("event", event).
  2. Work out why the resolved toolchain differs between machines on the same lockfile, since a non-deterministic typecheck undermines the hook whatever global.ts looks like.

Reproduction details from an affected machine (resolved @types/node, @typescript/native-preview, and whether node_modules predates the current lockfile) would pin down which of the two is doing the damage.

Unrelated, noticed while looking

There is no .husky/pre-commit. core.hooksPath is .husky/_, whose generated pre-commit shim exits 0 when no .husky/pre-commit exists, so commits currently run no checks at all. Flagging in case that is unintentional — happy to split it out.

Lenguaje dominante
TypeScript
Estrellas
813
Forks
134
Merge medio
2 d 2 h
PR fusionados (30 d)
67

Guía de contribución

Abrir la guía de contribución

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 AltimateAI/altimate-code

Todos los issues de AltimateAI/altimate-code

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.