Matriz de pruebas del núcleo (TEST-01)

La matriz de M1 es ejecutable y no depende de credenciales, motores externos ni datos reales. Su fuente de escenarios es escenarios/manifest.json; el ejecutor es backend/tests/test_core_matrix.py.

Cobertura de reglas

Regla/caso Camino positivo Camino negativo Limitación/evidencia Frontera
TYPE_MISMATCH tipo incompatible en edad nombre ya es string capability field_types ausente 0/50/80 %
FIELD_MISSING obligatoriedad sobre edad nombre siempre presente evidencia incompleta 0/50/80 %
FIELD_NULL obligatoriedad sobre edad con nulls campo sin null evidencia incompleta 0/50/80 %
FIELD_REMOVAL_IMPACT / CRITICAL_DELETION eliminar nombre eliminar campo inexistente evidencia incompleta 80 %
FIELD_RENAME_IMPACT renombrar nombre renombrar campo inexistente evidencia incompleta 50/80 %
NESTING_SHAPE_CHANGE mover edad a ruta anidada ruta inexistente Cassandra: NESTING_UNSUPPORTED 50/80 %
INDEX_UNSUPPORTED propuesta de índice adapter con capability adapter sin capability limitación visible
VALIDATION_UNSUPPORTED propuesta de validación adapter con capability adapter sin capability limitación visible
CONSTRAINT_UNSUPPORTED endurecer restricción operación sin evidencia de cambio capability ausente limitación visible
NULLABILITY_CHANGE requerir no-null campo completo sin null evidencia incompleta 0/50/80 %
ARRAY_SHAPE_CHANGE tags mixto colección uniforme capability de tipos ausente 50/80 %
HIGH_IMPACT severidad en 50/79 % 0 % evidencia incompleta 50/79 %
CRITICAL_DELETION borrado al 80 % o más borrado sin presencia capability/evidencia ausente 80 %
INCOMPLETE_EVIDENCE snapshot parcial snapshot completo limitación obligatoria métricas nulas
READ_ONLY_GUARD propuesta compatible sin incompatibilidad — no ejecuta escritura 0 %

Las siete capabilities (field_types, requiredness, nesting, indexes, validations, constraints, engine_specific) también tienen casos parametrizados que verifican regla explícita, affected_count: null e impact_percentage: null cuando falta soporte. ANALYSIS-01 agrega test_analysis_rules.py: valida las 15 reglas analíticas y los cuatro hallazgos estables de capability, categoría/severidad/motores, HIGH_IMPACT, contexto de motor y que rules_applied sea exactamente la secuencia de hallazgos activados.

ANALYSIS-02 agrega test_analysis_evidence.py: exactitud con denominador único y porcentaje, dataset vacío sin porcentaje fabricado, muestra al límite con métricas globales nulas y timeout con duración/limitación visibles. test_mongodb_inspection.py y test_couchdb.py confirman que los adaptadores publiquen evidence_scope, observation_limit y inspection_duration_ms sin secretos.

Cobertura del manifest

La matriz parametriza las 50 entradas del manifest, exige IDs únicos, los tres motores, versión 1.0 y al menos diez escenarios críticos. Los escenarios críticos deben producir riesgo ALTO o CRÍTICO; cada ejecución conserva engine, solo las rules_applied activadas y hallazgos para que la salida sea trazable. La ejecución de conectores live y el gate end-to-end permanecen fuera de TEST-01.

Gate integrado E2E-02

scripts/run_e2e_scenarios.py consolida los tres runners de motor sin cambiar el contrato del núcleo. backend/tests/test_e2e_scenarios.py cubre el camino correcto de 50 escenarios/14 críticos y el error cuando un crítico pierde su riesgo alto o crítico. El gate conserva reglas, riesgo y evidencia en JSON y Markdown versionados, y CI ejecuta --check para rechazar resultados obsoletos.

Release candidate E2E-03

scripts/run_e2e_release.py consume el smoke Docker aislado y verifica que el análisis local del fixture queda bajo dos segundos y no cambia el hash de la colección sintética. El timeout live se controla contra un puerto local sin servicio y debe conservar evidencia incompleta y una limitación explícita. backend/tests/test_e2e_release.py cubre el camino correcto, evidencia faltante y el límite de dos segundos; los artefactos no incluyen el hash, URIs, credenciales ni documentos.

Cobertura específica de MONGO-04

scripts/run_mongodb_scenarios.py filtra las 17 entradas MongoDB, conserva el fixture-first del MVP y escribe resultados deterministas en escenarios/resultados/mongodb-scenarios.json. backend/tests/test_mongodb_scenarios.py verifica que las 15 operaciones de ChangeOperation tengan caso, que los escenarios mongo-01, mongo-03, mongo-04, mongo-05 y mongo-10 sean ALTO o CRÍTICO, y que cross-01 fuerce evidencia incompleta, métricas nulas y REQUIERE REVISIÓN. Cada finding debe conservar rule_id, evidence y recommendation.