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.
This commit is contained in:
@@ -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 |
|
||||
|
||||
Reference in New Issue
Block a user