aaif-goose / aaif-goose/goose

Define canonical identity for imported extensions

Abierto
#11,735 0 comentarios 0 reacciones 1 asignado Asignado a @jbg Ver en GitHub
Lenguaje dominante
Rust
Estrellas
54.2k
Forks
6.2k
Merge medio
3 d 2 h
PR fusionados (30 d)
262

Descripción

**What problem would this solve?**

Imported extension mappings can contain an outer configuration key and an embedded extension name that disagree. Different listing, lookup, enablement, and removal paths currently treat different values as authoritative, making compatibility and mutation behavior ambiguous.

**What would a good outcome look like?**

Every extension has one stable identity across import, display, lookup, enable, disable, removal, and session startup. Existing mismatched configurations have an explicit migration or rejection path, and collisions cannot silently select or retain a different executable extension.

**Possible approaches**

- Reject mismatched mappings during import and parsing.
- Canonicalize and migrate legacy mappings with collision checks and clear diagnostics.
- Preserve raw storage IDs internally while exposing an immutable separate canonical ID.
- Define how built-ins, normalized aliases, and duplicate embedded names interact.

**Additional context**

Acceptance tests should cover lookup precedence, failed-revocation cases, legacy migration or rejection, collisions, and both legacy and state-machine session startup.

- [x] I have verified this does not duplicate an existing feature request

Do not begin implementation until the issue reaches **Ready** on the [Goose Issues board](https://github.com/orgs/aaif-goose/projects/1).

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.