🚪 cosmic: las cinco interfaces del portal, sondeadas — y `Access` no es un hueco
Del lado CLIENTE (org.freedesktop.portal.Desktop): Screenshot 2, FileChooser 3, ScreenCast 5, Settings 2. `org.freedesktop.portal.Access` NO EXISTE, y está bien: Access vive sólo como org.freedesktop.impl.portal.Access, del lado del BACKEND — es como el frontend le pide al escritorio que muestre el diálogo de permiso. Mi primer sondeo la pidió al frontend y el «No such interface» era un error DEL SONDEO, no del portal. Del lado BACKEND (impl.portal.desktop.cosmic): Screenshot 2, ScreenCast 4, Settings 2; Access y FileChooser devuelven UnknownProperty 'version'. Ese error PRUEBA que la interfaz está: si faltara, D-Bus contestaría «No such interface». UnknownProperty = la encontró y esa implementación no publica esa propiedad. Y el ListNames muestra impl.portal.desktop.cosmic ACTIVADO junto a impl.portal.PermissionStore: el frontend levantó al backend por D-Bus activation, que es el eslabón que habilita el .service con @libexecdir@ sustituido. ALCANCE HONESTO: esto prueba DISPONIBILIDAD y ENRUTADO, no los flujos completos. La única ejercida de punta a punta —con fichero en disco— sigue siendo Screenshot. Próximo: ejercer FileChooser desde una app que use el portal (cosmic-store se compiló con la feature xdg-portal; cosmic-edit NO la usa, va con el selector propio de cosmic-files como crate) y ScreenCast, que es la que ejercita pipewire de verdad. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Semántico sayk'uy
Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.
2 qillqakuna · +36 −4
diff --git a/docs/evidencia/cosmic-portal-interfaces-2026-08-05.png b/docs/evidencia/cosmic-portal-interfaces-2026-08-05.png
new file mode 100644
index 00000000..7fc00a13
Binary files /dev/null and b/docs/evidencia/cosmic-portal-interfaces-2026-08-05.png differ
diff --git a/docs/runbooks/cosmic-desktop.md b/docs/runbooks/cosmic-desktop.md
index 05985059..7a1c258b 100644
--- a/docs/runbooks/cosmic-desktop.md
+++ b/docs/runbooks/cosmic-desktop.md
@@ -869,12 +869,44 @@ fallar el pull, no destruyó el worker.)
subproyecto de internet y, sin red, el error no dice «te falta glib» sino `Unhandled python
exception / This is a Meson bug`. **Deuda anotada.**
+### Las cinco interfaces, sondeadas por D-Bus
+
+`docs/evidencia/cosmic-portal-interfaces-2026-08-05.png`. Del lado del CLIENTE, contra
+`org.freedesktop.portal.Desktop`:
+
+| interfaz | versión |
+|---|---|
+| `Screenshot` | 2 |
+| `FileChooser` | 3 |
+| `ScreenCast` | 5 |
+| `Settings` | 2 |
+| `Access` | **no existe, y está bien** |
+
+**`org.freedesktop.portal.Access` no es una interfaz de cliente**: `Access` vive sólo como
+`org.freedesktop.impl.portal.Access`, o sea del lado del BACKEND — es como el frontend le pide al
+escritorio que muestre el diálogo de permiso. Pedirla al frontend devuelve `No such interface`, que
+es el comportamiento correcto y no un hueco. (El sondeo inicial la pidió mal; el error era del
+sondeo, no del portal.)
+
+Del lado del BACKEND, contra `org.freedesktop.impl.portal.desktop.cosmic`: `Screenshot` 2,
+`ScreenCast` 4, `Settings` 2, y `Access` + `FileChooser` responden
+`UnknownProperty 'version'`. **Ese error prueba que la interfaz ESTÁ**: si faltara, D-Bus contestaría
+`No such interface`; `UnknownProperty` significa que la encontró y que esa implementación no publica
+la propiedad `version`.
+
+Y el `ListNames` del bus muestra `org.freedesktop.impl.portal.desktop.cosmic` **activado** junto a
+`org.freedesktop.impl.portal.PermissionStore`: el frontend levantó al backend por D-Bus activation,
+que es justamente el eslabón que el `.service` con `@libexecdir@` sustituido hace posible.
+
+⚠ **Alcance honesto de esta medición**: prueba DISPONIBILIDAD y ENRUTADO, no los flujos completos.
+La única interfaz ejercida de punta a punta —con fichero en disco— es `Screenshot`.
+
## Lo que falta, en orden
-1. **Probar las otras cuatro interfaces del portal.** La captura está verificada con fichero; faltan
- `FileChooser` (abrir un fichero desde una aplicación), `ScreenCast` (compartir pantalla, que es la
- que ejercita pipewire de verdad), `Settings` y `Access`. El andamiaje ya está: se manejan desde
- `cosmic-term` por QMP igual que la captura.
+1. **Ejercer los flujos, no sólo sondear**: `FileChooser` desde una aplicación que use el portal
+ (`cosmic-store` se compiló con la feature `xdg-portal`; `cosmic-edit` NO la usa, va con el
+ selector propio de `cosmic-files` como crate) y `ScreenCast`, que es la que ejercita pipewire de
+ verdad.
2. **Decidir `gvfs`** (ver la corrección de arriba: las piezas ya están selladas, lo que falta es la
decisión sobre la segunda glib). Destrabaría los montajes remotos de cosmic-files y su applet.
3. **Enchufar la tienda a `.swm`**: servir `org.freedesktop.PackageKit` y encender la feature