diff --git a/docs/26-atuq-envoltorio-gecko.md b/docs/26-atuq-envoltorio-gecko.md index 2913f1c9..77561c7c 100644 --- a/docs/26-atuq-envoltorio-gecko.md +++ b/docs/26-atuq-envoltorio-gecko.md @@ -816,6 +816,30 @@ proyecto nuevo. El binario vive en tawasuyu (es suite, no build system); `atuq` dep y le deja el manifiesto de native messaging en su sitio. **El nombre del crate se decide en tawasuyu y con su regla 10 puesta** — acá no se bautiza nada de allá. +### 7.bis El camino EXISTE, y tres cosas que no eran obvias (2026-09-07) + +Antes de escribir un crate contra un mecanismo hay que saber si el mecanismo funciona en NUESTRO +build —propio, rebrandeado, con `MOZ_REQUIRE_SIGNING` vacío—, así que se puso una **sonda**: +extensión de diez líneas con permiso `nativeMessaging` y un host de tres que contesta `{"ok":true}`. +Vive en `scripts/test-atuq-nativo.py`, con control negativo: + + positivo MENSAJE {"ok":true} + control DESCONECTADO No such native application puente_atuq + +El control no sólo falla: **nombra la causa**, que es lo que confirma que la ruta del manifiesto es +la que se probó. Lo que hay que saber para escribir el host: + +| Qué | Medido | +|---|---| +| Dónde va el manifiesto | **`/usr/lib/mozilla/native-messaging-hosts/`**, NO el appdir. Sale de `XRESysNativeManifests`, un `/usr/lib/mozilla` compilado; el rebranding a `atuq` no lo mueve | +| Cómo se instala la extensión | por el **escaneo de `distribution/extensions/`**. `ExtensionSettings.install_url` con `file://` no instala nada, ni con `force_installed` ni con el XPI dentro del appdir, y **sin una línea de log** | +| Forma del host | un proceso **largo**: si escribe la respuesta y sale, Gecko cierra el puerto sin entregarla — `onDisconnect` «sin error y sin mensaje», el peor informe posible | +| Con qué diagnosticar | el error del puerto de `connectNative`. `sendNativeMessage` devuelve «An unexpected error occurred» para todo y no distingue nada | + +⚠ La tercera fila del cuadro corrige una lectura fácil de `policies.json`: los dos mecanismos +apuntan a los mismos ficheros y se tapan uno al otro, así que la política PARECE ser la que instala. +Fija y configura; instalar, no. + ## 8. Plan, por unidades de trabajo Cada una cierra sola, se commitea y se pushea. El orden no es preferencia: cada una destraba a la @@ -834,7 +858,7 @@ siguiente. | 4.e | **v0.3: página de inicio y pestaña nueva** por extensión de sistema; exigió `MOZ_REQUIRE_SIGNING` vacío | y con eso queda destrabada la unidad 6 (`sct`) | rebuild de firefox | | 4.f | **Los códecs, medidos** ✅ 2026-09-07 — H.264+AAC, VP9+Opus, AV1, MP3 y FLAC reproducen; arreglado el `LD_LIBRARY_PATH` que dejaba al RDD sin ffvpx (AV1 muerto en silencio) y nacido `scripts/test-atuq-codecs.sh` con control negativo | «se ve el vídeo», que ningún auditor de ELF podía responder | — | | 4.c | `MOZ_BUILD_DATE` determinista ✅ — `BuildID=19700101000001`, con guardián en install y **`why-differs` 56/56 sobre dos builds reales** | el invariante de reproducibilidad | — | -| 5 | Host de native messaging (tawasuyu) | los verbos del §6 | 4 | +| 5 | Host de native messaging (tawasuyu) — **camino COMPROBADO 2026-09-07** (§7.bis): sonda extensión↔proceso nativo con control negativo, y las tres trampas medidas (dónde va el manifiesto, qué instala de verdad, y que el host tiene que ser un proceso largo) | los verbos del §6 | 4 | | 6 | `sct` v1 (extensión + testigo) | el diferenciador que nadie tiene | 5 | | 7 | Descargas al CAS | 6.2, y alimenta 6.9 | 5 | | 8 | Archivo + RAG | 6.3 | 5, 7 |