GROUND-1 — resultados
Estado: ROJO bajo v1. Validación A verde. Banco rojo en un solo grupo,
latency, heredado de SENSOR-1S: 2 registros de 435 875 salen sellados 1 ms
antes de su llegada. Todos los grupos de GROUND-1 (traducción física → WSP)
quedan verdes en las dos etapas. Evidencia válida; la auditoría independiente,
en un proceso nuevo, coincide. Contrato: GROUND1-DESIGN.md,
con las enmiendas 1–3. Lock c7d14645…1286; informe final
lab/echo3_ground1_report.json (38c71dad…).
Veredicto
| Etapa | Vuelos | Grupos | Auditoría | Reinicios PX4 |
|---|---|---|---|---|
| Validación A | 16 + 4 controles sin fuerza | 22/22 verdes | 169 comprobaciones, 0 hallazgos | 0 |
| Banco | 24 + 6 mutantes | 22/23: latency rojo |
249 comprobaciones, 0 hallazgos | 0 |
Mutaciones del informe 7/7 detectadas (incluidas forge_wsp y forge_cable).
Mutantes del banco 6/6. Cada uno pone rojo su caso concreto en un vuelo sano,
y su gemelo honesto del mismo mundo pasa.
El rojo
| Vuelo | Fuente | Mensaje | delivered_ns |
arrive privado |
|---|---|---|---|---|
clean-e6da9ac91abd450b-r1 (honesto) |
LiDAR | n 357 | 37.348 s | 37.349 s |
mutant-seq_counter-a15b6f99a2cee25a |
RGB | n 712 | 48.784 s | 48.785 s |
Ninguno de los dos mensajes tenía fallo inyectado ni estaba congelado. Las esperas quedaron dentro de sus cotas (máximo 6 ms, límite 30 ms).
Recuento exacto, cruzando cada cabecera enviada con la llegada privada del mismo mensaje: 0 de 1 105 383 envíos en SENSOR-1S v2, 0 de 749 296 en v3, 0 de 292 945 en la validación A de GROUND-1, 0 de 436 668 en desarrollo y 2 de 435 875 en el banco. En total, 2 de 3 020 167.
Causa, leída en el código y todavía no reproducida. Está en el canal de
SENSOR-1S v2 (sensor1s_v2/assets/sensor_runner.py), que GROUND-1 hereda:
- el hilo emisor lee
now(línea 240) antes de tomar el cerrojo con el que saca mensajes de la cola (línea 242); - un callback de Gazebo que entra en ese hueco lee un tic posterior como
arrive(línea 155) y encola su mensaje (línea 185); - el emisor lo saca en la misma tanda y lo sella con el
nowanterior.
Es una carrera de un tic dentro de un solo proceso, no dos relojes. Por qué aparece sólo en este banco no está medido. Hipótesis: el consumidor de GROUND-1 carga más la CPU del host.
Medidas
| A | Banco | |
|---|---|---|
| Distancia: barridos juzgados acertados | 9 574 / 9 574 | 11 724 / 11 724 |
| Distancia: cobertura mínima por episodio (juzgados / barridos) | 0.802 | 0.759 |
Barridos no utilizables, todos dichos DESCONOCIDO |
24 | 36 |
Primer CAMBIAR tras el empuje (ventana 400 ms) |
3–98 ms en 16 perturbados | 11–82 ms en 24 |
CAMBIAR en la ventana de toque, por vuelo |
1–4 | 0–5 |
CAMBIAR fuera de las ventanas; certeza C equivocada |
0; 0 | 0; 0 |
| Cable: una línea canónica, 0 bytes de vuelta, salida 0 | todos | todos los honestos |
| CAM: paquetes distintos por vuelo; distancia mínima de vértice | ≤ 8; 2 bits | ≤ 8; 1 bit |
| Espera máxima IMU / RGB / profundidad / LiDAR | 6 / 7 / 3 / 3 ms | 6 / 4 / 3 / 4 ms |
| Tramas, canarios | 292 945, 0 | 435 875, 0 |
Qué significa y qué no
Significa que, en SITL, la traducción dentro de la jaula (una regla entera cerrada, 10 paquetes posibles) se comportó así en los 44 vuelos honestos:
- dijo la banda de distancia verdadera en todos los barridos juzgados;
- marcó
CAMBIARtras cada empuje y sólo alrededor del toque; - bajó la certeza exactamente en las ventanas con marcadores de fallo;
- salió por un único cable;
- dependió sólo de lo recibido y nunca del futuro.
Seis consumidores mentirosos, cada uno de una manera, fueron detectados.
No significa verde. El protocolo exige los grupos de SENSOR-1S en el mismo
vuelo, y uno cayó. Tampoco significa percepción de objetos, decisiones del
agente, vuelo de echoAI (agent_in_gazebo=false, cortex_calls=0) ni sensores
reales. La CAM es una comprobación estructural (enmienda 1): los vértices del
conjunto cerrado colisionan.
Historia
- Contrato aprobado, con dos enmiendas previas al evaluador:
- la CAM separa por clave exacta, no por vértice;
- el toque de aterrizaje es un cambio real.
- Un revisor independiente, en tres pasadas, encontró 16 problemas antes del lock (5 dejaban pasar a un consumidor mentiroso). Se arreglaron (enmienda 3) y se volaron tres tandas de desarrollo; sólo la última corre el código final.
- La cadena voló una vez, sin reintentos. El lock no se toca.
Reproducir
PYTHONPATH=.. python3 -m echoai.nexus0.ground1.campaign audit
Log: lab/ground1-run.log. Evidencia: lab/ground1/.