Skip to content

fix(zsh): la función cortex() shadowea el binario del CLI de cortex #35

Closed

Description

@barbatdev

zsh/zshrc define:

cortex()      { _go_dev_dir "$CORTEX_ROOT"; }

En zsh una función gana sobre un binario del PATH, así que esto hace inalcanzable al CLI: en cualquier shell interactiva, cortex admin delete-branch ... no invoca ~/.local/bin/cortex, hace un cd al repo y listo.

Cómo se manifiesta

Desde una terminal con los dotfiles cargados:

$ cortex admin delete-branch feat/mi-branch
zsh: command not found: _go_dev_dir

El error es engañoso: parece un problema de _go_dev_dir, pero la causa es que cortex nunca fue el CLI. Con la ruta absoluta funciona perfecto:

$ ~/.local/bin/cortex admin delete-branch feat/mi-branch --dry-run   # anda

Fix

Renombrar la función. Ya existe cortex-repo() en el mismo archivo, que hace exactamente lo mismo, así que lo más limpio es eliminar cortex() y quedarse con cortex-repo().

Ojo, hay un fix WIP sin commitear

En la copia instalada (~/.cortex/cortex-dotfiles, branch fix/herdr-starship-hotfixes) ya está hecho el rename, sin commitear ni pushear. Rescatarlo antes de que se pierda, en vez de rehacerlo.

El mismo bug está en cortex-dots

cortex-dots define la misma función (zsh/zshrc:119). Se abre issue espejo allá. Los tres repos no pueden pisarse entre sí: el nombre cortex pertenece al CLI.

Activity

  1. barbatdev commented on Jul 15, 2026

    @barbatdev
    OwnerAuthor

    Como seguimiento de este bug, el contrato entre ambos proyectos se está definiendo en cortex#1259.

    Criterio acordado para la integración:

    • Cortex es dueño de ~/.cortex/shell/cortex.zsh, del comando cortex y de las variables core CORTEX_*.
    • cortex-dotfiles debería tener su propio entrypoint estable, por ejemplo ~/.config/cortex-dotfiles/shell/cortex-dotfiles.zsh.
    • Las variables públicas propias de dotfiles deben vivir bajo CORTEX_DOTFILES_*, sin reutilizar CORTEX_HOME, CORTEX_ROOT u otras variables core.
    • .zshrc solamente compone ambos fragments: dotfiles primero y Cortex al final, para que Cortex pueda observar la resolución definitiva del shell.
    • Ninguno de los proyectos modifica archivos gestionados por el otro, y no se vuelve a definir un alias o función llamados cortex.
    • Ambos source deben ser opcionales y tolerantes a ausencia o error para no romper el inicio de Zsh.

    PR #37 ya avanzó con la carga del fragmento de Cortex. Cuando alineemos el entrypoint propio de dotfiles, conviene aplicar este namespace y mantener la implementación interna separada del contrato core.

    Dejo el issue cerrado; esto es referencia para la evolución posterior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions