🗂 Sesión r16 — El feedback aprende a triarse y el proyecto abre los libros
7-8 de agosto de 2026 · web po168–po175 + wrangler directo (sello 0708-222909) · Edge ampliada: store-stats (cosecha TestFlight) · SQL: feedback-v3 · release-plan · tf-feedback · libros-recibos-y-decisión-J5 · pestañas nuevas: 🗂 Backlog · 🚢 Releases · 🛡 Compliance (23 en total)
1 · Feedback v3 — bandeja, triage a 3 vías y capturas de verdad
- 💬 Feedback pasa de lista a bandeja: por defecto solo lo «sin clasificar». Cada entrada se tría a una de tres vías — Incidencia (crea/usa su NS-####), Observación/mejora o Idea/propuesta — y al triarse desaparece de la bandeja con un snackbar que dice a qué pestaña se fue. Nada de cambios silenciosos.
- Las incidencias FB1 se agrupan a diario y entran al backlog con prioridad mapeada (FB1→P0 · FB2→P1 · FB3→P2) vía
admin_ticket_to_backlog.
- Capturas: medido antes de tocar — la subida nunca existió (ni picker, ni bucket, ni columna). Ahora: bucket privado
feedback-shots (RLS carpeta-propia), subida desde la app antes del insert, miniaturas con URL firmada en el hub. El módulo nativo viaja en el próximo build (0.21.1/0.22); el JS ya está listo y protegido con carga perezosa.
2 · Backlog de desarrollos (🗂) — no solo fixes
- Tabla
dev_backlog: tipo (fix · mejora · feature · capability), origen, prioridad P0-P3, sprint S12-S16/GA, estado, release. Alta rápida en la propia pestaña; tablero agrupado por sprint; 16 items sembrados el día uno (5 fixes ya hecho 0.21 + wearables O1-O3, golden-set, D20, RevenueCat…).
3 · Release Plan (🚢) — qué va en cada build, con sus notas
- Tabla
releases como fuente única de las release notes ES/EN de las tiendas (📋 copiar · ✏️ editar). Estructura Release → Sprint → carriles 🐞 fix / 🔧 mejora / 🚀 capability. Cinco releases sembradas: 0.20.0 (en tiendas) · 0.21.0 (en review, con sus notas reales) · 0.21.1 (14-ago) · 0.22.0 (28-ago) · GA (8-oct).
4 · El feedback nativo de TestFlight ya es nuestro
store-stats (06:30 UTC) ahora también cosecha betaFeedbackScreenshotSubmissions del App Store Connect: comentario + capturas + build + tester. Dedupe por tf_asc_id, capturas al bucket (testflight/…), fila en feedback con fuente 🍎 y ticket NS-#### automático (el trigger dejó de exigir user_id). Try/catch aislado: si Apple falla, la sincronización de testers no se cae.
5 · Piloto — dos altas y una puerta menos
- Lucía López y Constanza (iPhone, venían de la waitlist) → flujo completo aprobar-lote → email de captura → TestFlight.
- El 💍 casar-cuentas admite ➕ nueva invitada como primera opción del desplegable: alta y matrimonio en un gesto, sin salir de la página.
6 · Compliance (🛡) y los libros se estrenan
- Pestaña nueva con los 4 documentos confidenciales servidos SOLO tras el candado (
/hub/compliance-docs/): propuesta Audidat, lista EIPD de la AEPD, Carta Acuerdo Intelectium y su roadmap de financiación.
- Audidat (Cumplimiento Normativo): DPD externo + consultoría RGPD/LOPDGDD por 1.500 €/año — el gabinete que J1/J3 esperaban. Decisión J5 abierta para founders (recomendación: aceptar; pedir en la firma el presupuesto de la EIPD, que va APARTE). Checklist EIPD contra los 11 criterios AEPD: 3 cumplidos YA (perfilado · monitorización · datos de salud art. 9) + 2 futuros (wearables · IA) → EIPD obligatoria y previa al 8-oct.
- Intelectium (financiación pública): solo honorarios de éxito (ENISA 5,5→4,5% · CDTI/CAM 6,5→6,0% · subvención 9,0→8,5% · Cert. Emergente 950 €). Pendiente de constitución de la SL — hito del roadmap de comercialización. Avisos pre-firma: errata «Oryon technology» en el Alcance, exclusividad total, clawback 80/100%, vigencia indefinida (salida desde mes 12, preaviso 60 días).
- Primeros asientos reales del diario StartUp Admin: 7 recibos jul-ago (Claude ×4, ChatGPT, Canva, iCloud) al tipo BCE del día de cada cargo, % de imputación r14, total 241,88 € contra la cuenta nueva
2300 Socios, cuenta corriente. La parte personal no entra. Hoja de costes: filas Audidat + Intelectium, run-rate con Audidat ≈ 435 €/mes.
Los recibos viven en TRES buzones: Gmail de Juanjo (Anthropic, Canva, Apple), outlook (GitHub, cuenta githubjuanjose) y el correo de Pilar (Supabase — la org es suya — e IONOS). Regla: solo se asienta lo que tiene recibo delante; lo demás queda PTE con nombre y buzón.
7 · La noche y la mañana
- 0.21.0 (iOS b7) quedó en beta review de Apple con los grupos externos; Play internal release 5 instalable.
- Crons nocturnos: 200s con un 502 puntual en una pasada horaria — reintento automático a la siguiente, sin acción.
- Veredicto de la cosecha 🍎 (8-ago tarde): la pasada de las 06:30 vino VACÍA porque en producción seguía la versión vieja de
store-stats — el deploy de la víspera «salió bien» en el CLI pero nunca tomó efecto. Redeploy verificado con curl → 25 feedbacks de TestFlight cosechados al instante: 25 filas 🍎, 25 capturas en el bucket, 25 tickets NS-####. Y a la segunda pasada (r16-F4), los 5 crashes con su log completo como 📄 .txt en el bucket — 30 entradas en total, con el dedupe demostrando en vivo que no duplica (nuevos:0 en la repesca). pg_cron, mientras, impecable: 6 jobs, 36 pasadas, 0 fallos. Bonus de la tarde: los asuntos de los correos pasan a ASCII puro — el webmail pintaba los emojis del header en crudo (=f0=9f…), item FB3 del backlog cerrado con foto.
- El digest 📬 (07:15 UTC) salió según pg_cron; estrena la J5 ante las founders.
8 · Lecciones que se quedan
- El sello ns-build volvió a pagar la cena: «no veo la pestaña» se resolvió con un curl — producción servía el build de anoche, no había nada roto. Ante «X no aparece»: primero el sello, después las hipótesis.
- La vía de emergencia wrangler quedó ratificada en combate (deploys de Actions dormidos a medianoche):
cd ABSOLUTO primero — lanzada desde ~ buscó publish/ en casa (2ª reincidencia de la regla de rutas).
- Jamás inventar un importe: GitHub/Supabase/Cloudflare sin recibo a la vista → PTE, no estimación. El diario solo come recibos reales.
- Un deploy de Edge Function no existe hasta VER la respuesta nueva en vivo (curl con el secreto). El «Deployed ✔» del CLI sirvió versión vieja 12 horas — hermana de la regla r15-B («una función de correo no está viva hasta ver UN correo en una bandeja»). El pg_cron en verde tampoco prueba nada: solo dice que la llamada salió.