DRONE-3 — resultados (SITL)
2026-09-20. Contrato prospectivo: DRONE3-DESIGN.md, escrito
antes de abrir B. Hardware: traspaso.
Este informe cubre sólo SITL. No hay placa, dron, sensores reales ni jaula:
drone3_hil_green y drone3_cage_green son false y por tanto drone3_green
también. ECHO-3 sigue en 14/15 y DRONE-METAVERSE sigue cerrado.
Qué se ejecuta en un vuelo
Una sesión PX4 v1.15.4 + Gazebo Harmonic por vuelo, con la imagen congelada de FLIGHT-1S v6 y el X500 con la montura de COMPOSE-1. Dentro de la misma sesión: despegue y armado del operador, relevo, y después, por cada paso, esta cadena:
observación asentada (LiDAR, 4 profundidades, RGB, estimador PX4, tensión de batería, ≤80 ms)
→ agente enjaulado: percepción congelada de COMPOSE → FUSION con la calibración C1
→ POWER decide continuar/volver/aterrizar → COMPOSE compone la ruta
→ WSP de 16 B + predicción publicada
→ gate epistémico (dos familias, C≥80, misma observación)
→ gate energético (paso + retorno por celdas recorridas + aterrizaje + reserva)
→ supervisor SAFE (salud, lease, enclavamiento) → gateway de celdas
→ MAV_CMD_DO_REPOSITION → ACK ≠ llegada → tres muestras asentadas
→ observación siguiente → atribución → replanificación
Al final: retorno por celdas ya ocupadas, aterrizaje normal y desarme; o, tras un veto, PX4 aterriza por su failsafe de enlace sin orden externa.
Desarrollo (A)
A1 (12 vuelos) sólo sirvió para medir consumo. calibrate ajustó la tabla
POWER con 129 recibos, en ‰ de la franja utilizable del pack simulado:
| Fase | n | Nominal | Máximo | Cota |
|---|---|---|---|---|
| paso de misión | 79 | 14 | 17 | 22 |
| paso de retorno | 41 | 15 | 17 | 22 |
| aterrizaje | 9 | 21 | 27 | 34 |
A2 repitió las tres salas con esa tabla y el código definitivo: 12/12 en verde, 6/6 misiones factibles alcanzadas, 3/3 abortos correctos por reserva y 3/3 fallos contenidos; cero colisiones, holgura mínima 1.274 mm, reserva final mínima 175 ‰, restricciones duras a cero. Llegada real p50/p99/máx = 169/407/417 mm. Latencia del agente p50/p99 = 62/87 ms. Memoria del agente 26 MB.
Lo que A corrigió antes de congelar
- Frescura del latido de PX4. Con RTF 0,48–0,89 la regla de 2 s en tiempo de pared heredada de PX4-1/SAFE-1 rechazaba latidos vivos y vetaba sin causa. DRONE-3 la mide en tiempo simulado.
- Energía. PX4 SITL no publica corriente ni capacidad. Se usa la carga simulada entre el 20 % y el 100 % del pack, leída de la tensión; el 20 % inferior queda para los umbrales propios de PX4.
- Batería y desarme. PX4 rellena el pack simulado al desarmar y la tensión filtrada sube antes de que el latido lo muestre: la reserva al tocar suelo es el mínimo de esa ventana, no la última muestra.
- Revisión independiente antes del lock. Un revisor en sólo lectura encontró, entre otros: que B contenía la geometría de los pilotos; que la contradicción se disparaba por reloj sin evidencia de que el agente hubiera visto la abertura; que la prueba de manipulaciones no podía fallar; que la auditoría no ataba cada propuesta a la intención del agente; que la custodia del lock era incompleta; que las restricciones duras sólo podían dar cero; y que el umbral de llegada real era incompatible con el criterio de PX4-1. Todo se corrigió en A y está en el contrato.
Lock: 094bc35fe2a16c7a3410208ac0cc3c44dfd981896c1b397286ab66d51a38a10c.
Salas B: 20267001, 20267003, 20267004 (la 20267002 se descarta por compartir
geometría con los pilotos). Salas C: 20268001, 20268003, 20268004.
Validación (B) y confirmación (C)
B voló una vez con el lock; C se abrió una sola vez, después, atada al resumen
de B (f23ccb87…). Las dos etapas salen 12/12.
| Medida | B | C |
|---|---|---|
| Vuelos correctos | 12/12 (Wilson 95 % [0,758; 1]) | 12/12 |
| Misiones factibles alcanzadas | 6/6 | 6/6 |
| Abortos correctos por reserva | 3/3 | 3/3 |
| Fallos contenidos | 3/3 | 3/3 |
| Desplazamientos ejecutados | 147 | 133 |
| Inspecciones por giro | 0 | 4 |
| Colisiones / muestras inseguras | 0 | 0 |
| Holgura mínima al obstáculo | 1.247 mm | 1.259 mm |
| Failsafe de PX4 en vuelos sin fallo | 0 | 0 |
| Reserva al tocar suelo (mínimo) | 180 ‰ | 140 ‰ |
| Llegada real p50/p99/máx | 200 / 357 / 401 mm | 186 / 360 / 423 mm |
| Error del estimador en la llegada (máx) | 216 mm | 204 mm |
| Aterrizaje en casa p50/máx | 191 / 307 mm | 199 / 306 mm |
| Veto tras el fallo | 207 / 1.009 / 1.009 ms | 167 / 1.010 / 1.017 ms |
| Desarme tras el veto | 21,1–23,1 s | 19,9–30,7 s |
| Decisiones descartadas por evidencia vieja | 3 | 3 |
| Edad máxima de la evidencia al proponer | 169 ms | 175 ms |
| Sondas de rechazo bloqueadas | 228/228 (19 por vuelo) | 228/228 |
| Restricciones duras | todas 0 | todas 0 |
Latencias, memoria y cadena causal:
| Medida | B | C |
|---|---|---|
| Decisión del agente p50/p95/p99 | 62,2 / 85,3 / 89,9 ms | 63,3 / 83,3 / 90,2 ms |
| Observación → envío p50/p99 | 66 / 89 ms | 67 / 90 ms |
| Envío → ACK p50/p99 | 20 / 32 ms | 21 / 48 ms |
| ACK → llegada confirmada p50/p99 | 5.152 / 6.491 ms | 5.157 / 6.150 ms |
| Memoria máxima del agente | 26,4 MB | 26,2 MB |
| Celdas en memoria espacial (máx) | 22 | 22 |
Atribución (publicada, no es criterio): el movimiento propio se atribuye bien en 144/144 pasos de B y 130/130 de C. Las marcas de cambio externo son ruidosas: 102 en B, de las cuales 37 caen tras el cambio de mundo, y 79 en C, 30 tras el cambio. Es decir, el agente marca cambios externos también donde no los hay, por variación del ángulo de visión. Se informa como está.
Controles, mutantes y manipulaciones
Ningún control se vuela: todos se calculan sobre las observaciones, la batería y la salud grabadas.
| Control | B | C |
|---|---|---|
| Enlace que toma el ACK por llegada: llegadas prematuras | 147/147 | 133/137 |
| Distancia real al objetivo en el instante del ACK (mediana) | 3.041 mm | 3.041 mm |
| Planificador sin evidencia: propuestas a celda ocupada real | 51, todas bloqueadas por el gate | 43, todas bloqueadas |
| Calibración C1 coherente con el cuerpo (estimador de C1) | 12/12 vuelos | 12/12 |
| Admisiones que cambiaría una montura errónea (1, 0) | 947 de 1.417 celdas | 963 de 1.437 |
| Decisiones en que el porcentaje fijo difiere del coste | 13 | 14 |
| SAFE sin vida del agente: ¿vetaría el cuelgue? | no | no |
| SAFE sin enclavamiento: sondas de recuperación admitidas | 2 por vuelo de fallo | 2 |
| Gemelo funcional de las mismas salas: Q reactiva alcanza | 0/3 | 0/3 |
| Gemelo funcional: completo y horizonte uno alcanzan | 3/3 y 3/3 | 3/3 y 3/3 |
Horizonte uno diverge del completo en 4 de 9 vuelos de B y 4 de 9 de C; la Q reactiva diverge en casi todos, a menudo en la primera decisión. En el gemelo funcional el completo llega en 8, 6 y 6 pasos donde horizonte uno necesita 20, 10 y 6. No se reclama superioridad de velocidad: la hipótesis es funcional.
Mutantes, todos detectados: pasarela sin TTL, sin geocerca, con el ACK como llegada y sin secuencia (12/12 vuelos cada uno); gate que admite lo desconocido y gate sin reserva (12/12); supervisor sin gate epistémico y sin gate energético (12/12); supervisor sin enclavamiento (3/3 vuelos de fallo) y sin vida del agente (2/2 vuelos de cuelgue); y un agente distinto —Q reactiva— que diverge de las respuestas grabadas en los 6 vuelos factibles.
Manipulaciones, las ocho rechazadas por la propia auditoría:
| Manipulación | La auditoría la delata por |
|---|---|
| WSP de la intención | proposal_is_not_the_intention, relay_0 |
| ACK alterado | ack_replay, false_arrival |
| Observación omitida | agent_replay, ack_replay |
| Propuesta duplicada | duplicate_proposal |
| Tensión de batería, con el diario recalculado | agent_replay_0, battery_binding |
| Propuesta sustituida con objetivo coherente | proposal_is_not_the_intention |
| Un byte del ULog | ulog_hash |
| Pose privada desplazada | arrival_not_physical, collision_envelope |
Certificado
lab/echo3_drone3_report.json, certificado
c44402dffce9f3809b0a6ed3145d9e6e6f7c8c9b7451fe1cf0811e02a7cd2e03, lock
094bc35fe2a16c7a3410208ac0cc3c44dfd981896c1b397286ab66d51a38a10c.
{"custody": true, "drone3_sitl_green": true, "evidence_valid": true,
"hard_constraints_zero": true, "manipulations_rejected": true,
"mutants_detected": true, "probes_blocked": true,
"drone3_hil_green": false, "drone3_cage_green": false, "drone3_green": false}
Custodia comprobada en la certificación: los resúmenes de B y C siguen idénticos a los del cierre, ambos bajo el mismo lock, y C se abrió después de un B verde.
Segunda auditoría, en proceso nuevo y sólo lectura: reconstruye el informe
entero desde los datos crudos y reproduce el mismo certificado,
reproduced: true, c44402df….
El árbol previo está intacto: los 41.606 ficheros inventariados antes de
empezar DRONE-3 siguen byte a byte iguales, sin ninguno perdido
(lab/drone3/preflight/, inventario 0eace362…). Comprobado antes de
actualizar los documentos de estado, que sí cambian.
Enmienda 1 al lock
Al certificar, copytree falló al copiar una carpeta de vuelo: PX4 deja
enlaces simbólicos rotos en out/wd. La copia ahora conserva los enlaces como
enlaces. Es una corrección del arnés: no toca runner, agente, puertas,
supervisor, pasarela, protocolo, auditor ni criterios, no repite ningún vuelo y
no reescribe evidencia. Queda registrada en lab/drone3/amendments.json con
motivo, alcance, diff y hashes antes y después, y el informe la publica.
Las auditorías anteriores siguen en pie
Ejecutadas en sólo lectura con DRONE-3 ya en el árbol:
| Hito | Resultado |
|---|---|
| PX4-1 | válida, 342ca3aa… |
| SAFE-1 v2 | válida, eecb77b8… |
| POWER-1 | válida, 6a05ad4c… |
| HOST-1 | válida, 18d4a4fa… |
| FUSION-1 | ejecutada, salida 0 |
| COMPOSE-1 v4 | válida, sin hallazgos |
| TRANSFER-3 | los dos manifiestos de campaña, intactos |
| CAUSE-1 | no arranca: «frozen implementation changed» |
El caso de CAUSE-1 no lo causa DRONE-3. Sus 305 entradas congeladas siguen
byte a byte iguales, pero su verificador expande el inventario a todo nexus0,
y hoy hay 109 ficheros de más: 52 de TRANSFER-3, 18 de DRONE-3, 11 de SAFE-1,
9 de HOST-1, 8 de POWER-1, 8 de PX4-1 y 3 de SAFE-1 v2. Sin DRONE-3 seguiría
fallando igual. Es el defecto que PX4-1 ya documentó: no se reescribe aquel lock
ni su certificado.
Límites
- Simulación: mundo estático salvo la intervención declarada, sensores y batería simulados, celdas de 3 m y vuelo a altura fija. No acredita hardware, HIL, vuelo real ni DRONE-METAVERSE.
- La energía es carga simulada que baja con el tiempo armado, no julios ni consumo medido.
- La hipótesis de coordenada de la estación es exacta y delata el eje de la sala; no se prueba búsqueda con hipótesis errónea.
- HOST-1 no participa; DYNAMIC-1 y PATTERN-1R no se declaran integrados.
- La calibración C1 aplicable a este cuerpo es la identidad; su canal se demuestra vivo por control, no por un desplazamiento distinto de cero.
- La percepción congelada de COMPOSE no distingue «celda no vista» de «celda bloqueada» cuando la pared llena la celda.
- Tres vuelos por condición y etapa: los intervalos son descriptivos y no estiman fiabilidad de producción.