gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 188Rust 55Shell 30Markdown 281211 Sutichaykuna

SDD 26 §2.quinquies: la v0.3 destapó que la unidad 6 dependía de ésta sin decirlo

Tres mecanismos medidos para poner una página de inicio: `distribution/extensions/` no instala nada
(sideloading retirado, y el fallo es MUDO), `policies.json` sí se lee y falla nombrándose, y la pref
de firma no alcanza porque la exigencia viene compilada.

Lo que destrabó el diagnóstico fue un TESTIGO: `defaultPref` no deja rastro en prefs.js, así que un
autoconfig que no corre es indistinguible de uno que corre y no hace nada. Con una pref de usuario
escrita desde el .cfg se pudo separar las dos hipótesis sin abrir el navegador.

Y el hallazgo que cambia el plan: sin `MOZ_REQUIRE_SIGNING` vacío, el `sct` del §6.1 —el
diferenciador que nadie más tiene— tampoco se podría shipear nunca. La unidad 6 colgaba de ésta y el
documento no lo decía.

33f7c373123de6179347b86471f4774417c6dc72 · ruwaq Sergio · (1 killa ñawpaq) · tayta eb20e1d91 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

1 qillqakuna · +36 −1

diff --git a/docs/26-atuq-envoltorio-gecko.md b/docs/26-atuq-envoltorio-gecko.md
index 25cce09b..b4ea2753 100644
--- a/docs/26-atuq-envoltorio-gecko.md
+++ b/docs/26-atuq-envoltorio-gecko.md
@@ -326,6 +326,40 @@ receta, no de una medición.
 **La lección para el plan: ninguna unidad de este frente está cerrada hasta que algo se ABRE en una
 pantalla.** La clausura decía 100% con un navegador que no llegaba a pintar un píxel.
 
+### 2.quinquies La v0.3 y los tres mecanismos: dos muertos, uno vivo
+
+La página de inicio y la pestaña nueva parecían un `pref` y resultaron ser un frente. Lo que se
+midió, en orden:
+
+| Mecanismo | Resultado |
+|---|---|
+| `distribution/extensions/` — el clásico de las distros | **No instala nada.** Firefox retiró el *sideloading*. El `extensions.json` del perfil ni lo mencionaba y el log no dijo una palabra: fallo perfectamente silencioso |
+| `policies.json` → `ExtensionSettings` con `install_url` | **Se lee** (`browser.policies.applied=true` en el perfil) y falla nombrándose: `ERROR_SIGNEDSTATE_REQUIRED` |
+| `xpinstall.signatures.required = false` | **No alcanza** — la exigencia viene COMPILADA |
+
+**El instrumento que destrabó el diagnóstico fue un testigo.** `defaultPref` no deja rastro en
+`prefs.js` —sólo se guarda lo que difiere del default— así que un autoconfig que **no se ejecuta**
+es indistinguible de uno que sí y no hace nada. `atuq.cfg` escribe ahora `atuq.autoconfig.ok` como
+pref de **usuario**, legible desde fuera sin abrir el navegador. Salió `true` ⇒ el `.cfg` corría, y
+por lo tanto la pref de firma se estaba ignorando.
+
+De ahí `MOZ_REQUIRE_SIGNING` vacío en `recipes/firefox.toml`. Dos detalles que costaron cada uno su
+vuelta:
+
+1. El default sale del **milestone** (`milestone.is_release_or_beta`), no del canal de actualización.
+   El nuestro es `default` y la exigencia estaba activa igual.
+2. **Se desactiva con el valor VACÍO, no con cero.** `=0` muere con «takes 0 values»: es booleana y
+   el cero es un valor que no acepta. Leído del parser de mozbuild, no deducido.
+
+**El precio, escrito:** este Firefox deja de exigir la firma de Mozilla para cualquier complemento.
+La alternativa es firmar en AMO —cuenta y revisión de Mozilla por versión—, que es la dependencia
+externa que esta distro existe para no tener. Y no es un desvío: **sin esto, el `sct` del §6.1
+tampoco se podría shipear nunca**, así que la unidad 6 dependía de ésta sin que el plan lo dijera.
+
+**Método que conviene repetir:** la prueba del testigo se hizo **sin reconstruir**, montando el
+`.cfg` modificado con `--ro-bind` por encima del artefacto. Editar el fichero en el rootfs habría
+escrito sobre un **hardlink del store** y corrompido el artefacto sellado.
+
 ## 7. La costura: un host de native messaging en Rust
 
 Todo lo del §6 que no es CSS pasa por **un solo mecanismo**: un proceso Rust que habla native
@@ -351,7 +385,8 @@ siguiente.
 | 3.b | `wasi-sdk` + `wasi-compiler-rt` ⇒ RLBox encendido | cierra el hueco de seguridad del §3.bis | 2 |
 | 4 | **`atuq`: receta derivada + overlay de chrome** ✅ v0.1 escrita | el andamio de todo lo demás | 3 |
 | 4.b | Branding + re-empaque de `omni.ja` ✅ v0.2 | el chrome de verdad | — |
-| 4.d | **Abrirlo en pantalla** — destapó EXDEV, el lanzador y el `atk` envenenado; cadena re-sellada 4/4 | «usable», no sólo «sellado» | — |
+| 4.d | **Abrirlo en pantalla** — destapó EXDEV, el lanzador, el `atk` envenenado y la cadena GTK3 estática | «usable», no sólo «sellado» | — |
+| 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.c | **`MOZ_BUILD_DATE` determinista en `firefox`** — hoy el `BuildID` es la fecha del build ⇒ el artefacto **no reproduce bit a bit** | el invariante de reproducibilidad | otro build de 4 h + re-sellar atuq |
 | 5 | Host de native messaging (tawasuyu) | los verbos del §6 | 4 |
 | 6 | `sct` v1 (extensión + testigo) | el diferenciador que nadie tiene | 5 |