# WSP hacia ECHO-5.8: revisión de viabilidad

17 de octubre de 2026. **Investigación y propuesta; no implementación ni release.**
Solicitud: revisar las dos propuestas aportadas por Roger, atribuidas a Gemini,
y estudiar comunicación por bits, logits y frecuencias. La atribución no se usa
como prueba de corrección. La investigación no modifica ni evalúa la ejecución
ARC/Kaggle en curso.

**Conclusión:** WSP tiene una base reutilizable como lenguaje estructurado entre
componentes. Su mejor oportunidad inmediata es representar observaciones,
hipótesis y referencias a evidencia de forma económica y comprobable. La
especificación propuesta no es compatible ni segura para integrarla tal cual.
Tampoco demuestra ahorro del 90 %, superioridad cognitiva o mejora en ARC.

[Roadmap y puertas de decisión](ROADMAP.md) · [mediciones](measurements.json) ·
[auditoría reproducible](audit.py).

## 1. Qué existe realmente

Inspección de `navywakura/wiredsymbolicprotocol`, commit
`0274927388b351669fed757fabe95008fadcf147`, versión declarada 0.5.0, Apache-2.0.
[Árbol fijado](https://github.com/navywakura/wiredsymbolicprotocol/tree/0274927388b351669fed757fabe95008fadcf147).
ECHO inspeccionado en `research/echo-5.5-arc3`, base `9b490e5`.

| Componente inspeccionado | Hallazgo |
|---|---|
| WSP `rogex_wsp/primitives.py` | 32 átomos con IDs iguales a los primitivos de ECHO |
| WSP `symbol.py`, `docs/BINARY_FORMAT.md` | Mensajes binarios de longitud variable; derivados incluyen composición/nombre; `meta` no viaja en ese formato |
| WSP `compact.py` | Parser textual; **no** empaquetador fijo de 16 bytes |
| WSP `roundtrip_audio.py` | Máscara musical más tráiler FSK con longitud y CRC32; tiene decodificador exacto y fallback heurístico |
| WSP `multiphonic.py` | Acordes con etiqueta de 4 bits, carga de 5 y paridad; E se cuantiza |
| WSP `discovery.py`, `examples/hail_mary.py` | Asociación de firmas acústicas con conceptos usando una lección contextual etiquetada; no descubrimiento autónomo de semántica universal |
| ECHO `core/wsp.py` | Postal fija de 16 bytes, E entero ±100; formato `<BBBBbbbbbbBBBBBB` |
| ECHO `nexus0/encoder.py` | Encoder semántico separado; FNV queda como baseline, no interpretación causal |
| ECHO `core/cam.py` | CAM existente de 4096 ranuras, comparación/probing acotados; no CAM hardware ni lookup garantizado de tres ciclos |
| ECHO `pcworld/receipts.py` | Recibos encadenados con secuencia, digest y HMAC-SHA256 verificados |

La fórmula `L = G[S(M,I,E)]` organiza el diseño, pero por sí sola no demuestra
compresión, aprendizaje ni comprensión. Compartir símbolos requiere un contrato
común de significado y referencias observables.

## 2. Comprobaciones CPU efectuadas

Sin inferencia ni nuevas dependencias: tokenizer local existente
`Qwen/Qwen2.5-Coder-32B-Instruct`, revisión
`381fc969f78efac66bc87ff7ddeadb7e73c218a7`, `tokenizers==0.23.3`.
SHA256 del `tokenizer.json`:
`c0382117ea329cdf097041132f6d735924b697924d6f6fc3945713e96ce87539`.
Los tamaños siguientes son lexicales, sin plantilla de chat ni leyenda.

| Mismo evento y mismos campos | Bytes UTF-8 | Tokens |
|---|---:|---:|
| Línea WSP aportada: `YO -> DYN:PUSH(2) ...` | 77 | 49 |
| JSON compacto con nombres | 131 | 62 |
| JSON posicional, orden compartido | 81 | 47 |

En este ejemplo WSP usa **21,0 % menos tokens que JSON con nombres**, pero
**4,3 % más que JSON posicional**. No es un corpus representativo ni una medida
de calidad del razonamiento. Ambos lenguajes compactos requieren explicar sus
convenciones; ese coste debe contarse y amortizarse. La línea aún es una
hipótesis sintáctica, no un comando autorizado. El vocabulario cargado contiene
151.665 entradas contando tokens añadidos; no se asumió el de otro modelo.

Otros resultados reproducidos:

- El formato citado `>BBBB6bBBBB` mide **14 bytes**, no 16. El real de ECHO sí mide 16.
- Dos mensajes del WSP público miden **16 y 13 bytes**: no existe tamaño fijo
  universal de 16 para ese formato.
- La tabla CORE propuesta cambia **23 de las 32 posiciones** existentes.
  Por ejemplo, `AQUI=4`, `AHORA=8`, `UNIR=11` en ambos repositorios actuales.
- El ejemplo mínimo de `typedef struct alignas(32)` propuesto falla con
  `cc -std=c11 -pedantic-errors`. Es comprobación de esa declaración, no de toda la cabecera.
- Las fórmulas C y Python propuestas para la clave CAM dan números diferentes
  sobre los mismos bytes. `ctypes.c_uint8(999)` da **231**, sin rechazo.
- La polifonía transforma `C=0.95` en `0.933333…` por cuantización a 5 bits.
  No es pérdida cero para el vector original.
- FSK actual: duración nominal de bit 18 ms + pausa 4 ms, aproximadamente
  **45,45 bit/s**. Solo 32 bytes ocupan **5,632 s**, antes de cabecera, CRC,
  marcadores y melodía. Cálculo del formato, no medición de un enlace físico.
- **33 pruebas originales seleccionadas pasan**: núcleo, roundtrip FSK y
  polifonía. No se ejecutó la suite completa ni pruebas de altavoz/micrófono.

Reproducción, con el repositorio WSP fijado al commit indicado y un entorno
gestionado con `tokenizers==0.23.3`:

```bash
python docs/research/wsp58-20261017/audit.py \
  --wsp-repo /ruta/a/wiredsymbolicprotocol \
  --tokenizer /ruta/a/tokenizer.json \
  --output /tmp/wsp58-measurements.json
```

## 3. Correcciones científicas necesarias

### Comparar información equivalente

Un frame arbitrario de 64×64 con 16 colores requiere hasta
`64 × 64 × log2(16) = 16.384 bits = 2.048 bytes` para codificar sus píxeles.
Un evento de 32 bytes no puede sustituirlo sin pérdida para todos los frames.
Los deltas o diccionarios aprovechan estado compartido; los handles trasladan
la geometría a otro almacenamiento, no la eliminan. En ARC, perder un píxel
puede cambiar la solución. La comparación correcta contabiliza también
diccionario, geometría recuperada, evidencia, sincronización y reintentos.

Los anchos de campos acotan capacidad de representación; no miden la entropía
de una distribución de eventos. Los hashes y MAC no añaden comprensión. Incluso
con las cifras propuestas, `168/256 = 65,625 %`, no 100 %. El significado no se
mide contando espacios JSON. El marco de información relevante exige especificar
qué tarea debe conservarse bajo compresión.
[Shannon](https://www.nokia.com/bell-labs/publications-and-media/publications/a-mathematical-theory-of-communication/),
[Tishby, Pereira y Bialek](https://arxiv.org/abs/physics/0004057).

### Emergencia y coste real

RIAL/DIAL estudian aprendizaje de comunicación en tareas concretas; no prueban
que el lenguaje humano sea siempre un despilfarro ni que quitar su penalización
produzca necesariamente un código ortogonal. Una ontología escrita a mano no es
un idioma emergente ni un VQ-VAE entrenado. Las películas son buenas fuentes de
preguntas, no teoremas sobre el óptimo de MARL.
[Foerster et al.](https://arxiv.org/abs/1605.06676),
[Lazaridou y Baroni](https://arxiv.org/abs/2006.02419),
[van den Oord et al.](https://arxiv.org/abs/1711.00937).

El coste total incluye percepción, prefill, decode, transporte y entorno.
Reducir tokens de salida puede ayudar; no garantiza una aceleración proporcional
de todo el episodio. `mmap` local no sustituye el enlace local–Kaggle ni la
inferencia. Los supuestos 15 ns, tres ciclos, 20× y 90 % necesitan medición.
La gramática puede restringir sintaxis, no determinar si un sprite es una llave.
[Guía GBNF de llama.cpp](https://github.com/ggml-org/llama.cpp/blob/master/grammars/README.md).

### Confianza no equivale a prueba

`C=1` o un MAC válido no hacen verdadera una hipótesis. El MAC acredita custodia
del mensaje; verificar una predicción requiere observar consecuencias bajo sus
precondiciones. La actualización exponencial propuesta es una heurística de
soporte, no un posterior bayesiano. Repetir el mismo recibo no debe incrementar
evidencia. En observación parcial una contradicción afecta a una hipótesis
contextual; no demuestra que toda relación del mismo tipo sea falsa.

Los otros ejes también necesitan definición operacional: distancia a trampa y
meta pueden ser desconocidas; porcentaje de acciones seguras no es
*empowerment* informacional; Jensen–Shannon requiere base 2 para esa escala y
consenso no implica verdad. Penalizar una arista exponencialmente no la poda.
Cambiar costes de A* cambia el objetivo y exige reconsiderar admisibilidad;
no garantiza minimizar acciones físicas.

## 4. Fallos de integración de la referencia propuesta

| Problema | Consecuencia y corrección requerida |
|---|---|
| IDs y escalas modificados | Rompe historial/ABI. Conservar IDs y ±100; extensión versionada mediante adaptador explícito |
| `DOMAIN_GRID=0x20` | Colisiona con derivados actuales: AMOR=32, COMUNICAR=34, etc. No reservar rangos sin registro de compatibilidad |
| Tipos usados como entidades | `SPRITE` no identifica dos sprites distintos. IDs de instancia, episodio, época y seguimiento con incertidumbre |
| `FLAG_KERNEL_VERIF` aceptado del emisor | Bandera falsificable. Autoridad derivada del canal/verificador, nunca del bit recibido |
| Clave HMAC fija y sin verificación al consumir | Cualquier poseedor fabrica mensajes. Reutilizar autoridad y comprobación de ReceiptStore; ninguna clave por defecto |
| HMAC reducido a 64 bits | No es «mitad de SHA256», son 8 de 32 bytes. Conservar recibos completos; hash corto solo como índice con comprobación de identidad |
| Sin secuencia/episodio autenticados | Replay y confusión entre ejecuciones. Vincular emisor, versión, contexto, índice y payload al recibo |
| Hashes observados aportados por el llamador | Compararlos no acredita transición real. Observación y firma solo en el supervisor autorizado |
| CAM nueva, mutable y sin límites | Duplica memoria y altera registros compartidos. Reutilizar CAM existente y evidencia inmutable; separar hipótesis de hechos |
| `alignas`, `ctypes`, endian y claves distintos | Igual tamaño no implica igual ABI ni alineación. Wire canónico explícito y vectores C/Python, sin casts ambiguos |
| Ring sin atómicos ni orden de memoria | No es lock-free validado. `ctypes` y el GIL no sincronizan procesos; empezar por IPC existente, perfilado antes de optimizar |
| `memmove` en ambos extremos | Hay copias. No llamar zero-copy; justificar cualquier optimización con mediciones y propiedad de buffers |
| Offset en lugar de hash | Pierde vinculación y puede apuntar a memoria mutable. Handle tipado con tamaño, digest y generación; remoto requiere servicio de recuperación |
| Parser permisivo | Validar límites, enums, ejes repetidos, valores no finitos y tags. No envolver 999 a uint8; distinguir ausente de cero |
| Ejemplos y gramática inconsistentes | `DYN:MOVER` no está en DYN; formatter omite ceros/redondea. Exigir roundtrip definido antes de decodificación restringida |

Para criptografía, la referencia técnica es HMAC con claves secretas y
verificación real; la recomendación de truncado de RFC 2104 tampoco respalda
el recorte propuesto. CRC y XXH3 no sustituyen autenticidad.
[RFC 2104](https://www.rfc-editor.org/rfc/rfc2104.html).
Para concurrencia, alineación no implica atomicidad de 256 bits, y falta un
contrato SPSC/MPMC con backpressure, cierre y orden de memoria comprobables.
[Modelo de memoria WG14](https://open-std.org/jtc1/sc22/wg14/www/docs/n1479.htm).

El WSP público también necesita endurecimiento antes de recibir mensajes no
confiables: `compact.py` tolera partes no reconocidas; `_decode_concept` resuelve
un nombre ya conocido sin contrastar siempre la composición recibida; el
decoder acústico puede degradar a interpretación heurística. En un agente ese
fallback debe señalar «no verificado», nunca autorizar efectos silenciosamente.

## 5. Diseño recomendado, pendiente de implementación

La decisión propuesta es **evolucionar la representación WSP en las fronteras
existentes**, manteniendo representación, epistemología y control separados.
No añadir bus, CAM o LLM dentro de NEXUS-0. No convertir E en sustituto de Q,
extractos o verificadores. El formato externo puede ser variable: no forzar
toda evidencia a 32 bytes solo por estética.

```mermaid
flowchart LR
    O[Observación pública] --> P[Percepción con incertidumbre]
    P --> S[Proyección WSP o JSON tipada]
    S --> L[Neocórtex externo: programa e hipótesis]
    L --> G[Supervisor existente: validación y cuotas]
    G --> A[Acción autorizada]
    A --> O
    G --> R[ReceiptStore y thought.jsonl existentes]
    R --> S
```

Contrato mínimo a diseñar: versión/diccionario, tipo de mensaje, emisor,
episodio/época/secuencia, entidades, relación, argumentos tipados, precondiciones,
predicción, estado epistémico y referencias a evidencias. Tipos separados para
observación, hipótesis, propuesta de acción y resultado de verificación.
Un objeto observado puede tener color y bbox; `GOAL`, `KEY` o `TRAP` siguen
siendo roles hipotéticos mientras no haya soporte suficiente.

Ejemplo conceptual, no gramática entregada: «hipótesis H7: la acción legal 3
desplaza el objeto o142 seis píxeles bajo contexto c9; soporte recibo r12;
próxima prueba una acción; resultado aún desconocido». Aporta una predicción
refutable. `YO -> PUSH -> GOAL` por sí solo omite identidad y precondiciones.
Los handles de evidencia son emitidos por el padre; el hijo no inventa hechos
mediante referencias arbitrarias.

La ruta de compatibilidad preserva los 16 bytes históricos y los registros
firmados. Un sobre externo puede referenciarlos junto con datos adicionales;
el adaptador debe declarar qué campos se pierden al proyectar al núcleo.
El intérprete Python continúa disponible para bucles y experimentos: WSP puede
transportar sus hipótesis/resultados sin reemplazar toda programación por triples.
Una instrucción compacta nunca evita la autorización por acción del padre.

## 6. Bits, logits y frecuencias: tres investigaciones distintas

| Vía | Utilidad plausible | Límite y prioridad |
|---|---|---|
| Símbolos tipados en texto | Intercambio entre modelos heterogéneos, feedback compacto, errores detectables | Comparar con JSON posicional; prioridad inmediata de investigación |
| Bytes binarios | Serialización local, replay determinista, telemetría de robots | Reutilizar transportes; no asumir que IPC sea cuello de botella |
| Logits y gramática | Elegir mensajes sintácticamente válidos de un contrato conocido | Los logits son preferencias de tokens, no evidencia; requiere validación posterior |
| Latentes aprendidos/VQ | Canal entrenado entre módulos de percepción y decisión | Necesita entrenamiento, codebook versionado, datos y pruebas fuera de distribución; no compatible gratis entre LLMs |
| Frecuencias | Enlace físico sin red, demostración audible, accesibilidad y diagnóstico | Requiere módem/decoder; más lento que IPC local; rama independiente de ARC |

Enviar todo el vector de logits puede ser más caro que texto: sobre las 151.665
entradas cargadas, float32 requeriría **606.660 bytes por paso**, sin metadatos.
No se confunde tamaño de vocabulario cargado con forma exacta del head del
modelo. Top-k o un alfabeto pequeño podrían reducirlo, pero necesitan un contrato
compartido. Qwen2.5-Coder de texto no interpreta ondas sonoras directamente.

Las ideas de *Close Encounters* y *Hail Mary* encajan especialmente con la
distinción entre **portadora** y **significado**, y con aprender correspondencias
mediante observaciones compartidas. En el repositorio ya hay ejemplos inspirados
en ambas. Un acorde transmite un código; no demuestra que dos agentes sin
contexto común comprendan espontáneamente su significado.

Para audio, comparar el FSK existente con un módem conocido como
[ggwave](https://github.com/ggerganov/ggwave), que implementa transmisión de datos
por sonido. Medir errores de paquete/bit, sincronización, ruido, reverberación,
deriva de frecuencia y latencia total; CRC detecta corrupción, MAC autentica.
Una prueba WAV limpia no demuestra robustez acústica. La cota de canal
`C = B log2(1 + S/N)` requiere las hipótesis de canal correspondientes, no deriva
de que las frecuencias sean armónicas. La sonificación de diagnóstico puede ser
útil aunque no compita como transporte.

## 7. Potencial en ARC y otras tareas

En ARC, WSP puede conservar feedback útil y abaratar intercambios. **No arregla
por sí solo percepción incompleta, correspondencias de objetos, reglas ocultas
o planificación con física incorrecta.** Una compresión que impida ver formas
o movimientos puede empeorar la puntuación. Mantener acceso a frame/crop y
vincular deltas a un frame base exacto es condición inicial.

En robótica/Unity, un contrato común para sensores, precondiciones y efectos
puede facilitar trazabilidad. En software, compactar diagnóstico, ubicación y
resultados de tests ayuda a coordinar; los fragmentos fuente y contraejemplos
siguen siendo necesarios. En agentes heterogéneos, la mejora candidata es
interoperabilidad comprobable. Ninguna de estas hipótesis prueba todavía mayor
resolución ni «menos alucinaciones» semánticas.

La evaluación debe distinguir hablar de comunicar: retirar o permutar mensajes
y medir si cambia la decisión del receptor, además de tokens y éxito. Esto
evita atribuir ventaja a un canal que el agente ignora.
[Lowe et al., On the Pitfalls of Measuring Emergent Communication](https://arxiv.org/abs/1903.05168).

## Decisión de investigación

Conservar ontología versionada, mensajes tipados, formatos intercambiables y
posibilidad de sonido. Revisar por completo autoridad, ABI, evidencia, medición
de compresión y concurrencia antes de integrar. Empezar con auditoría y
comparación offline a igualdad de información; avanzar a ARC solo con una
hipótesis predefinida y una mejora que sobreviva a controles. El resultado de
esta revisión es una línea viable de investigación, no una ventaja demostrada.
