SV Documentación de laboratorios
Abrir Playground · Panel de pruebas

DOCUMENTACIÓN / VIGILANCIA DEL BUS Y COSTE DE LAS COMPUERTAS

Vigilancia del bus y coste de las compuertas

Continuación material · 018

La comparación local .NET/FFI y WebAssembly ya está ejecutada: paridad de 79 casos, 36000 muestras y contención de fallos. La integración completa con el bus y R1 sigue pendiente. Los estados anteriores se conservan como antecedentes. Ver resultado, costes y límites actuales.

Comprobación concluida, arquitectura abierta

14 criterios verificados y 54000 muestras. El núcleo conserva sus fuentes exactas. Esta ficha distingue validación intrínseca, ligadura sintética externa y coste observado.

Fecha: 6 de septiembre de 2026. Dictamen: COMPROBACION_ACOTADA_REALIZADA; arquitectura definitiva y viabilidad operacional abiertas.

Resultado y decisión técnica propuesta

El núcleo real rechaza una infracción intrínseca, pero su función de compilación acepta una petición sustituida que sigue siendo válida para SV. Una comprobación externa de identidad rechaza esa sustitución. Repetir la validación del Lenguaje en otra compuerta no añade protección frente a ese ataque respecto de una compuerta que ya verifica identidad y validez. En esta realización aproximadamente duplica la latencia mediana y aumenta los recursos observados.

El coste absoluto de una comprobación aislada es pequeño en los casos ensayados; no se ha constituido un presupuesto que permita declararlo asumible para cualquier uso. Se conserva como candidata la comprobación puntual mediante el núcleo protegido. No se justifica añadir al núcleo vigilancia de tráfico, supervisión de procesos ni decisiones del dominio CYB. Tampoco se justifica promover la doble validación ensayada a requisito general.

El resultado no refuta todas las posibles esclusas ni prueba que todo sv_core carezca de autoridad. Esta tanda usa compile_svp y serialización IR; no ejerce las decisiones, mediaciones y ejecuciones trazadas R1. El encaje operacional de esas capacidades sigue abierto y requiere un contrato representable y pruebas propias.

La siguiente comparación de integración puede centrarse en una frontera mínima: núcleo nativo mediante ABI C/FFI desde .NET frente al mismo núcleo compilado a WebAssembly. Se entiende «Assembly» en el sentido de WebAssembly debatido en el chat. Ninguna de esas rutas sustituye las obligaciones de autoridad y aislamiento; ninguna ha sido medida aquí. El ensayo de dos compuertas queda detenido en este corte, sin ampliar su alcance automáticamente.

Identidades y lecturas

La producción y los archivos funcionales del Playground no se modifican. La copia del núcleo es una entrada inmutable del ensayo, no una bifurcación semántica ni una actualización del repositorio canónico.

Qué se ejecutó

Tres rutas con el mismo compile_svp y la misma serialización IR: llamada directa; una compuerta persistente que comprueba identidad sintética y validez; dos compuertas persistentes, la primera de validez y la segunda de identidad y validez. El controlador confiado coordina las tuberías. Los trabajadores usan UID 65534 y 65533 cuando procede. No se realiza una cámara de esclusa con todos sus estados, ni se conecta un hospital, un modelo de IA o el bus experimental 0.2 a R1.

La referencia de identidad es el texto exacto fijado previamente en una fixture sintética. No acredita consentimiento humano, procedencia remota, revocación, repetición ni dominio o agente constituidos. La primera compuerta recibe entradas que la segunda puede rechazar; la omisión de la segunda demuestra que no son defensas equivalentes e independientes ante todos los fallos.

Comprobaciones adversariales observadas

TestigoResultado observado
V01El núcleo acepta la fixture original.
V02Rechaza la modificación b=2.
V03Acepta cambiar Zero por One cuando el programa sigue siendo válido: control que distingue validez de identidad.
V04Detecta una infracción después de una escritura sintética, pero los bytes del efecto permanecen: control de observación tardía.
V05–V06Una compuerta admite el original y rechaza la sustitución válida por comparación externa exacta.
V07–V08Dos compuertas admiten el original; la segunda rechaza la sustitución aunque se omita la primera.
V09Al omitir la segunda, la primera acepta la sustitución válida: control de dependencia de la comprobación de identidad.
V10–V11Se rechazan UTF-8 inválido y una longitud superior a 131072 bytes; esta última antes de reservar el cuerpo.
V12Se observan UID distintos en los dos procesos.
V13–V14El actor UID 65534 no termina mediante SIGTERM al proceso 65533 ni lee un centinela root 0600.

Los 14 criterios producen el resultado esperado. V03, V04 y V09 son controles de sensibilidad: su PASS no acredita seguridad de la variante defectuosa. Las dos denegaciones de acceso no prueban un sandbox completo. El controlador root, el kernel y el hipervisor pertenecen a la base confiada o quedan fuera del adversario ensayado.

Métricas observadas

Ubuntu 24.04 x86-64 alojado; AMD EPYC 7763 expuesto, dos CPU lógicas disponibles y 8128876 KiB de memoria visible. Rust/Cargo 1.98.0; binario SHA-256 f8886e91f5dbe14b4ee24d7f3c801b5bcbbba767b7a39b510d3c9815e287635c. Compilación release con overflow-checks, --locked y --offline. Cero dependencias nuevas de registro; cero API remotas durante el ensayo.

Hay tres repeticiones con orden de rutas alternado. Cada repetición y ruta tiene 100 calentamientos y 2000 muestras útiles por tamaño: 54000 muestras crudas en total. Los tamaños de 8 y 64 KiB se obtienen mediante comentarios; no representan programas de mayor complejidad semántica ni un corpus hospitalario.

La columna central es la mediana de las tres medianas. El intervalo p99 comprende los tres p99 observados; no es un intervalo de confianza. Cada p99 se recalculó desde el CSV por rango más próximo. La latencia incluye ida, comprobación y respuesta verificada, pero excluye el arranque de procesos persistentes.

EntradaRutaMediana central, µsIntervalo de p99, µsMáximo observado, µs
510 bytesDirecta11,39120,568–21,21053,029
510 bytesUna compuerta50,60555,554–61,846202,429
510 bytesDos compuertas107,883117,891–132,7191722,952
8 KiBDirecta45,33558,960–87,534132,338
8 KiBUna compuerta91,89297,352–102,843174,517
8 KiBDos compuertas192,270208,802–223,439440,900
64 KiBDirecta297,488333,946–478,237534,723
64 KiBUna compuerta372,228428,925–649,1581031,448
64 KiBDos compuertas775,604833,083–933,0611519,030

No hay cota temporal garantizada: el máximo es sólo el observado. La llamada directa carece del aislamiento del llamante de las otras rutas; es una referencia de coste, no una alternativa de seguridad equivalente.

EntradaCPU amortizada una/dos compuertas, µs por operaciónSuma RSS una/dos compuertas, MiB
510 bytes40–50 / 95–1055,09–5,12 / 7,55–7,55
8 KiB95–95 / 190–2055,14–5,17 / 7,61–7,67
64 KiB390–410 / 815–8255,43–5,47 / 8,06–8,07

CPU incluye controlador y trabajadores, usuario+sistema. CLK_TCK=100 implica granularidad de 10 ms por proceso; los valores por operación son estimaciones amortizadas, no ciclos de hardware. RSS se captura al final de cada tanda y se suma por proceso: puede contar páginas compartidas varias veces; no es memoria física exclusiva ni pico simultáneo. El máximo de vida del controlador incluye tandas anteriores y no se utiliza como pico atribuible a una variante.

La segunda compuerta añade aproximadamente 57, 100 y 403 µs a las medianas centrales respectivas, y unos 2,4–2,6 MiB a la suma RSS observada. Es una diferencia de esta implementación, con coordinación y copias concretas. No se extrapola a .NET, WebAssembly, una red hospitalaria o una esclusa optimizada.

No se comparan estas cifras con los 4,313 ms del registro 012: allí había otro procesador y otro objeto, con criptografía, transporte y efecto SQLite. Una diferencia entre esas campañas no sería una mejora causal de rendimiento del núcleo.

Custodia y verificación

El paquete de esta tanda tiene 801259 bytes y SHA-256 6f388ac52a78fee263c47e57cbff0f21fb1bf2508d899fd87706038b967f7c90; objeto Git d5f7613e837c9ae0f39473ab5eaeca69eaeb012d. Contiene 71 entradas manifestadas más manifest.json. Se comprobaron CRC, pertenencia exacta al manifiesto, tamaños y todas las huellas; se cotejaron los 34 objetos fuente y se recalcularon los 27 grupos y las 54000 muestras.

Las regresiones de la misma ejecución verifican 17 testigos históricos, 24 de fase 0.2 y 7 de limpieza. Su paquete separado tiene 5280415 bytes, 4060 entradas manifestadas y SHA-256 3ec9b05a7fa01ae73a1b717625f4057c7d60235c361357dea836fc77cfaedaca; objeto Git f520cd0a3366317b8a5e6bdaf68c7a132260dabe. También se verificaron CRC y manifiesto completo. Ningún fallo histórico se borra ni se convierte en éxito.

La descarga directa del artefacto desde este entorno devolvió HTTP 403. La ejecución de recuperación 34029155349, fuente 27e83f5bef9b784ad74ca96259766fd28af3e53e, recuperó exclusivamente el ZIP original mediante logs, contrastando previamente su SHA-256. El job de laboratorio quedó omitido: no se repitieron las pruebas. La credencial de Actions no se envía al servidor de la redirección ni se imprime. La permanencia en el mismo proveedor no constituye copia externa independiente.

Corrección documental de la vía pública R1

La descripción del registro 014 y del apartado de siguiente tanda en Correspondencia nombra funciones internas como secuencia productiva pública. Se corrige expresamente: en el corte leído, la vía externa es decide_permit_traced → TracedPermitDecision::Granted → mediate_traced_permit → execute_traced_mediated → EffectExecutor::execute, bajo ProtectedDecisionContinuity. Las funciones crudas permanecen internas; no se pueden importar como API pública ordinaria. Sus errores se envuelven en los tipos trazados correspondientes.

La descripción funcional interna conserva utilidad para entender la ejecución, pero no es una receta compilable de API externa. Esta corrección no ejecuta CS01–CS09 ni acredita la constitución pública de una fixture R1; sus requisitos y exclusiones permanecen pendientes.

Qué queda abierto

Se cierra únicamente esta comprobación material. El núcleo permanece sin cambios, las garantías generales siguen abiertas y no se inicia una nueva campaña por inercia.