# Contexto — checkpoint deepseek v4 (2026-08-27)

## Objetivo
Dos pruebas E2E a **ritmo humano lento** (`slowMo: 450`, tipeo 450 ms/caráctor) que
validen los **valores límite de corte** de la nota académica de RA3 CDT1:

- **E4 → 59 puntos (reprueba)**: nota justo bajo el corte de 60.
- **E5 → 60 puntos (aprueba)**: nota justo en el corte.

Ambas sin incidentes ni alertas IA (ritmo constante, perfil aislado, videos ON).

## Cálculo deliberado de puntajes

Ponderaciones del examen:

| Serie | Pts | Ítems |
|---|---|---|
| I  | 10 | 5 V/F (2 c/u) |
| II | 10 | 5 múltiple (2 c/u) |
| III| 20 | 5 preguntas modelo (4 c/u) |
| IV | 40 | 8 subítems (4,4,4,4,3+3,8,10) → %H(3)/%O(3) fraccionado |
| V  | 20 | masa(4)+moles(4)+moléculas(4)+pasos(8) |

**E4 = 59**: I=2 (1 V/F ok) + II=0 (todo "D", ninguno coincide) + III=0 (en blanco) +
IV=37 (100,5,132,moléculas ok =16; %H 11.11 ok =3; %O errado =0; SO2=8; C3H6=10) +
V=20 (18, 4, 2.4088e24 + los 8 pasos ordenados) → `2+0+0+37+20 = 59`.

**E5 = 60**: I=0 + II=0 + III=0 (todo en blanco) + IV=40 (todo correcto) + V=20 →
`0+0+0+40+20 = 60`. La única diferencia frente a E4 es el ítem de %O (88.89) que en
E4 se dejó errado → la diferencia entre ambos es un único subítem.

> 59 es posible al fraccionar el ítem 5 de composición (3+3): si %O se marca mal se
> pierden exactamente 3 pts, y la combinación 37+20+2 = 59 es alcanzable.

## Cambios realizados

`e2e_video/tests/evidencia.spec.js`:
- Restaurado `test("E3 - participante reprobado pierde el examen")` cuya declaración
  se había perdido tras la inserción de E4/E5.
- Agregado `E4` y `E5` (ver archivo, líneas ~164-221).

## Resultados de ejecución

- Corrida combinada `--grep 'E4|E5'` (run6.log): **2 passed (1.4 m)**.
- Corrida completa E1–E5 (run_full.log): **5/5 passed (6.1 m)** — E1=100, E2 tramposo→incidentes,
  E3 reprobado, **E4=59 ✅**, **E5=60 ✅**. Sin regresiones.
- Videos en `e2e_video/salidas/`:
  - E1 8,24 MB · E2 0,87 MB · E3 2,69 MB · E4 2,15 MB · E5 2,24 MB.

## Limpieza post-prueba

CSV de producción reseteado a solo encabezado (verificado tras corrida completa):
`resultados_ra3_cdt1.csv` → `No,Apellidos,Nombres,Carrera,Nota`
`incidencias_ra3_cdt1.csv` → `fecha,token,estudiante,tipo`

## Pendientes (backlog)

1. **Documentar E4/E5 en `evaluacion_ra3/qa_informe.md`** (sección 5, QA-005): el
   informe actual dice "tres evidencias" / "3/3 passed" y no incluye los tests de
   límite. → **continuar acá**.
2. **Validar regresión**: correr la spec completa E1–E5 en un solo job (5/5).
3. **Nota flaqueza ambiental**: E5 falló 1× con "Sesión inválida" al correr justo
   tras E4 (handshake 502 de Tailscale intermitente, defecto QA-002). En la corrida
   limpia (run6) pasó sin errores.

## Estado de producción

- `https://adoniz-acer.tail60dd6a.ts.net/quimica/ra3-cdt1` verificada 200.
- Acceso LAN: `http://192.168.0.150:8081/ra3-cdt1`.
- Servicio: `screen -S quimica`, `python3 app.py >> app.log`.

## Módulo adicional: Reacciones Químicas (4.1)

### Descripción
Módulo de aprendizaje sobre reacciones químicas con teoría, evaluación interactiva y calificación automática. Incluye 4 temas con 25 puntos totales.

### Temas
- 4.1.1 Concepto de reacción química (1 h, 5 pts)
- 4.1.2 Evidencias de las reacciones químicas (1 h, 5 pts)
- 4.1.3 Representación simbólica de las reacciones (1 h, 5 pts)
- 4.1.4 Clasificación de las reacciones químicas (3 h, 10 pts)

### Sistema de calificación
- **Nota unificada**: Se suman los puntos obtenidos y se divide entre 25, multiplicando por 100
- Anti-trampa: −5 pts por incidente (cambio pestaña, copiar/pegar, atajos, etc.)
- Nota final = max(0, nota académica − 5 × incidentes)

### URLs de producción
- Funnel: `https://adoniz-acer.tail60dd6a.ts.net/quimica/reacciones-quimicas`
- LAN: `http://192.168.0.150:8081/reacciones-quimicas`

### QA
- 32/32 pruebas unitarias+integración pasan
- 19/19 pruebas funnel pasan en producción
- Informe detallado en `reacciones_quimicas/qa_informe.md`
