task: refactor-match-filter
intent: Extraer la lógica de evaluación de operadores lógicos y relacionales a funciones auxiliares puras para reducir la complejidad masiva del motor de consultas.
target: js-doc-store.js
language: javascript
signature: "function matchFilter(doc, filter)"
tests: test-docstore.js
test_command: "node test-docstore.js"
budget:
cyclomatic_max: 15
nesting_max: 4
Descripción del Problema
Un análisis estático de CCDD Gate determinó que el archivo js-doc-store.js sufre de extrema deuda técnica en su motor de consultas. Específicamente, la función matchFilter tiene una complejidad ciclomática de 54. Esta función evalúa operadores estilo MongoDB ($eq, $gt, $in, $and, $or), y al tener todo hardcodeado en una sola función gigante, es un "God Object" que se vuelve imposible de mantener o testear de manera exhaustiva.
Regla de Parada y Verificación
- Refactorización Segura: Crea un
Dispatch Table u objeto de estrategias para los operadores de MongoDB (ej. const operators = { $gt: (a,b) => a > b, ... }) para eliminar el Switch/If masivo dentro de matchFilter.
- Validación Determinista: El agente debe correr
python runners/complexity_gate.py js-doc-store.js. El ticket se considera cerrado única y exclusivamente cuando el validador retorne PASS para matchFilter (cyclomatic <= 15).
- Tests Congelados: Todos los tests existentes en
test-docstore.js deben seguir pasando en verde. Ejecuta el test_command estricto del frontmatter para validar tu trabajo sin modificar el test original.
task: refactor-match-filter
intent: Extraer la lógica de evaluación de operadores lógicos y relacionales a funciones auxiliares puras para reducir la complejidad masiva del motor de consultas.
target: js-doc-store.js
language: javascript
signature: "function matchFilter(doc, filter)"
tests: test-docstore.js
test_command: "node test-docstore.js"
budget:
cyclomatic_max: 15
nesting_max: 4
Descripción del Problema
Un análisis estático de CCDD Gate determinó que el archivo
js-doc-store.jssufre de extrema deuda técnica en su motor de consultas. Específicamente, la funciónmatchFiltertiene una complejidad ciclomática de 54. Esta función evalúa operadores estilo MongoDB ($eq,$gt,$in,$and,$or), y al tener todo hardcodeado en una sola función gigante, es un "God Object" que se vuelve imposible de mantener o testear de manera exhaustiva.Regla de Parada y Verificación
Dispatch Tableu objeto de estrategias para los operadores de MongoDB (ej.const operators = { $gt: (a,b) => a > b, ... }) para eliminar el Switch/If masivo dentro dematchFilter.python runners/complexity_gate.py js-doc-store.js. El ticket se considera cerrado única y exclusivamente cuando el validador retornePASSparamatchFilter(cyclomatic <= 15).test-docstore.jsdeben seguir pasando en verde. Ejecuta eltest_commandestricto del frontmatter para validar tu trabajo sin modificar el test original.