Support `$.flags` context values in segment conditions
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 52/100
Línea de trabajo
Comienza localizando la ruta get_value_from_jsonpath del motor y la llamada a JsonPath::parse; después, lee el flujo de evaluación en torno a las condiciones de segmento y el AST de serde_json_path_core::spec. Usa los casos de dependencia compartidos de engine-test-data y compara la implementación de referencia en flagsmith-engine#343. Se considera terminado cuando los casos de dependencia pasan, los contextos sin $.flags evitan el overhead por evaluación y la detección sigue el AST del parser.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Dependent flags let a segment condition read another flag's result via a $.flags.<feature name>.<enabled|value|variant> property, so that flag has to be resolved before the condition is evaluated. Behaviour is defined by the shared cases in Flagsmith/engine-test-data#59; schema in Flagsmith/flagsmith#8396; reference implementation in Flagsmith/flagsmith-engine#343.
The reference implementation resolves a flag lazily, on first read, rather than scanning every condition up front to discover dependencies. Three things in this engine currently prevent that:
get_value_from_jsonpathcallsserde_json::to_value(ec)on every lookup, serialising the whole context (~268 µs on a 263-feature environment, of which the query itself is 389 ns). A lazily resolvedflagsmap has nothing to be inserted into, and lookups already dominate evaluation.JsonPath::parsealso runs on every lookup (~1.5 µs), uncached.serde_json::Valueexposes no lookup hook, so resolution must be triggered by inspecting the parsed path.serde_json_path::JsonPathkeeps itsQueryprivate, though the AST is public inserde_json_path_core::spec.
Acceptance criteria
engine-test-datais bumped fromv3.7.0to the tag containing the flag dependency cases, and they pass.- An environment with no
$.flagsconditions gains no per-evaluation cost. - Dependency detection uses the parser's AST, not a bespoke matcher, so all pinned spellings of a query agree.
- Lenguaje dominante
- Rust
- Estrellas
- 1
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
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
- 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 Flagsmith/flagsmith-rust-flag-engine
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dependency DashboardAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
Todos los issues de Flagsmith/flagsmith-rust-flag-engine
Issues similares
-
backend::vllm diffusion multimodal
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
lambdaclass/ethrex#7329 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
shadowsocks/shadowsocks-rust#2186 · 1 comentario ·
-
[Chore]: Inconsistent wasm-pack binary invocation in justfile breaks cross-platform executionAbiertoC-bug S-awaiting-triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
juspay/hyperswitch#14479 ·
Los mantenedores suelen responder en 1 día