Expose checked-AST output type from cel.Engine/CompiledExpression
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- go
- Área
- backend-api-design
Línea de trabajo
Comienza en cel.Engine.Compile y en el CompiledExpression opaco; después, compara la información disponible de cel.Ast.OutputType(). Revisa la documentación de compileActorMatcher y la API propuesta de OutputType o CompileBool. El trabajo está terminado cuando los llamadores pueden rechazar expresiones no booleanas durante la compilación, en lugar de hacerlo en cada evaluación en tiempo de ejecución.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
cel.Engine.Compile type-checks an expression against the declared variables but only returns an opaque *CompiledExpression — there's no way for a caller to ask "does this expression statically return bool?"
This matters for callers who want config validated at admission/reconcile time rather than discovering a wrong-type expression on the first live evaluation. Concretely: ToolHive's operator lets admins author a CEL expression (actorMatcher) that must evaluate to bool. Something like "engineering" or 1 type-checks fine (any expression over the declared variables compiles), so it passes config validation, gets reported as valid, and then fails on every runtime evaluation via EvaluateBool's runtime type assertion — a config mistake that could have been caught once at reconcile time instead surfaces as an operational failure repeatedly.
cel-go's own cel.Ast.OutputType() already exposes this from the checked AST — cel.Engine.Compile just doesn't surface it. Proposed API, e.g.:
func (ce *CompiledExpression) OutputType() *cel.Type
or a narrower Engine.CompileBool(expr string) (*CompiledExpression, error) that rejects non-bool statically in one call.
Reference: stacklok/toolhive#6364 (review comment) — code currently documents this gap in compileActorMatcher's doc comment rather than working around it.
- Lenguaje dominante
- Go
- Estrellas
- 2
- Forks
- 5
- Merge medio
- 1 d 16 h
- PR fusionados (30 d)
- 84
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de stacklok/toolhive-core
-
needs-triage
Dificultad 5/5 Más de una semana Aptitud para principiantes 8/100
stacklok/toolhive-core#343 ·
Los mantenedores suelen responder en 1 día
-
needs-triage
Dificultad 5/5 Más de una semana Aptitud para principiantes 12/100
stacklok/toolhive-core#342 ·
Los mantenedores suelen responder en 1 día
-
needs-triage
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
stacklok/toolhive-core#341 ·
Los mantenedores suelen responder en 1 día
-
needs-triage
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
stacklok/toolhive-core#231 ·
Los mantenedores suelen responder en 1 día
-
needs-triage
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
stacklok/toolhive-core#198 ·
Los mantenedores suelen responder en 1 día
Todos los issues de stacklok/toolhive-core
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
JakeChampion/lang#13132 ·
Los mantenedores suelen responder en 1 día
-
[BUG] deploy.restart_policy without condition drops the restart policyPosiblemente ocupada @akshat-lakhera la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
docker/compose#14383 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
Azure/azure-storage-fuse#2429 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
AvengeMedia/dank-greeter#39 · 1 comentario ·
-
bug: dataplane client ignores SERVER_BASEPATH, so create/delete topic miss the subpathPosiblemente ocupada @bhataprameya la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
redpanda-data/console#2693 ·
Los mantenedores suelen responder en 2 días