Plant Cerebro
← proyectos
proyectocerrado21/09

<!-- histórico, sólo lectura -->

PENDIENTES

Tablero compartido entre las sesiones de Claude Code y el asistente de WhatsApp.

Para las sesiones de Claude Code: cuando termines algo o dejes algo abierto, anotalo acá.

Una línea por item. No borres los cerrados del día: movelos a "Cerrado hoy" para que el

asistente pueda contar qué se hizo.

Para el asistente: este archivo es la respuesta a "¿qué quedó pendiente?" o "¿en qué

estamos?". Leelo antes de contestar eso. Podés agregar items cuando Gabriel diga "anotá que

falta X". No inventes items ni marques cerrado lo que no te consta.

Formato: - [ ] pendiente · - [x] cerrado · (quién) al final si lo sabés.


Abierto

<!-- sesión Claude Code · 6-sep-2026 — todos los sectores y el deslizar -->

Tesorería, Contabilidad, Marketing, Producción, RRHH y Depósito. Reparto: Carito 17,

Nico D. 16, Caro Italiano 15, Ro 13, Marti 10, Pili 7, Panchi 7, Nacho 6, Tati 5,

Nico S. 5, Orne 2, Nati 1. Los líderes ya lo ven en Equipo: Gabriel 57, Nacho 24,

Nico S. 17, Nico D. 6.

· Solange Cano está en Ex-Equipo (Activo=NO): era la Diseñadora Gráfica y sus 8

procedimientos pasaron a Panchi, que ocupa el puesto. Igual criterio que con Felipe.

· 10 sin responsable vivo quedaron en el tablero del líder del sector.

scrollIntoView suave tironeaba la barra de solapas, el contenido cambiaba de golpe sin

transición, y el gesto competía con el scroll horizontal de la propia barra. Ahora la

pastilla se centra sin animación, el contenido sale para el lado del dedo y entra del

otro en una sola pasada, y el gesto no arranca sobre una tarjeta, la barra de solapas ni

un campo. Umbral a 58px y se decide una sola vez por toque.

ve 15 de golpe puede asustarse. Vale mirar el lunes cómo le queda el día a Carito y a

Caro Italiano, que son las más cargadas, y ajustar periodicidades con ellas.

<!-- sesión Claude Code · 6-sep-2026 — semana, metas y tareas que cruzan sectores -->

Depósito y es UNA tarea con etapas, no tres sueltas: cuando alguien termina la suya, le

aparece sola al que sigue y la cadena se ve en la tarjeta. La última etapa la cierra.

Queda registrado quién hizo cada parte. Probado de punta a punta con tres usuarios.

Es lo que Nico llamaba "la visualización semanal, más práctica para el uso diario".

explica el propósito, no sólo el paso a paso.

encontré recién al probar contra producción (25 values for 23 columns). El chequeador

de sintaxis no ve eso. Vale un test que compare columnas vs ? en cada INSERT del worker.

<!-- sesión Claude Code · 6-sep-2026 — procedimientos, cuaderno, hallazgo de Nico -->

(scripts/tareas_importar_procedimientos.py, volcado pegado adentro, idempotente por id

de página de Notion). Diarias y semanales arrancan el lunes 7-sep, mensuales el 1-oct.

Reparto: Caro Italiano 15, Tati 5, Nico S. 5, Nico D. 3, Orne 2, Carito 2, Marti 2,

Nati 1, Nacho 1.

· Felipe Amor renunció y tenía 14 procedimientos: van a Carolina Italiano, que lo

reemplaza. Los 7 sin ningún responsable van al líder del sector para que los reparta.

· 7 no importados por no tener Periodicidad en Notion (varios son páginas de

referencia: "EXCELS IMPORTANTES COMPRAS", "Links Necesarios"). Decidir si van.

para verlas — "Guardar sólo la nota" era un pozo. El 🎙 ahora abre el cuaderno; cada nota

se puede releer, volver a convertir en tareas o borrar.

vista semanal/calendario del mes y Objetivos del mes con seguimiento. Detalle en

docs/PLAN-limpieza-y-tareas.md. También conviene renombrar "Cómo se hace" a

"Cómo y para qué": él explica el propósito, no sólo el paso a paso.

las tareas con hora. Bloqueado por el OAuth de Google por usuario. Ver el plan.

<!-- sesión Claude Code · 6-sep-2026 — organigrama y ajustes -->

scripts/tareas_importar_equipo.py, con el volcado pegado adentro para que sea

reproducible. 24 personas en el directorio, 22 enlaces de liderazgo: Gabriel 9,

Nico S. 5, Nacho 3, Nico D. 3, Charly 2. Ya funciona la solapa Equipo para los líderes.

· Regla que hay que respetar: el id de una persona es el mail con el que entra por

Access, y ese sale de CONTACTOS.md, NO de Notion — en Notion varios figuran con

@vivet.com.ar y entran con @plant.com.ar. El cruce se hace por nombre.

Nico Dell Armi había quedado duplicado por eso; unificado.

· Sumados a CONTACTOS.md 8 mails que faltaban, todos de hilos reales: Gaspar, Juliana,

Ornella, Caro Italiano, Debo, Sofi, Pili, Panchi.

· Afuera por no tener mail de la empresa: Diego Corrado (mantenimiento) y los

operarios de depósito y picking, que reportan a Mauro y Gama. Para ellos hay que usar

link + PIN, como en limpieza.

cerradas (Tu nombre · Tu frase · Tutorial · Sesión) y las sugerencias van detrás de

"Ver sugerencias".

cruce que faltaba (persona → líder → mail). Falta decidir con Gabriel: qué sectores

entran primero, y si Periodicidad Diario/Semanal/Mensual se mapea a repetición anclada

(sí) y Prioridad Indispensable a importante (sí).

<!-- sesión Claude Code · 6-sep-2026 — seguimiento, equipo, compositor, instructivo -->

(directorio.lider), por persona, con pendientes / atrasadas / importantes / hechas de la

semana, la persona con más fuego arriba, y botón Retirar sobre lo que mandaste vos.

Para · Más) que se abren de a una. La repetición se deriva del día elegido: elegís el

miércoles y ofrece "Cada miércoles" y "El 9 de cada mes". Hora opcional (Hoy se ordena por

hora). Importante como marca aparte de Urgente.

repeticiones, se ve al abrir la tarea con los links clickeables.

Procedimientos (Vívet | Plant Home) tiene ~140 filas con Sector, Periodicidad

(Diario/Semanal/Mensual), Prioridad (Indispensable/Necesaria/Prescindible), Puesto,

Responsable y tiempo estimado: mapea directo a titulo + repite + importante + instructivo

(link a la página). Falta: quién es el líder de quién (directorio.lider, hoy vacío) y a

qué mail corresponde cada Responsable de Notion. Con eso, el import es un script de una tarde.

WhatsApp con el asistente).

<!-- sesión Claude Code · 6-sep-2026 — lo que rompió la primera prueba de Gabriel -->

Propias"). La hoja se cierra, el botón no acepta dos toques, y el servidor no crea dos

proyectos activos con el mismo nombre. Duplicados borrados.

build lleva un id, /api/inicio lo devuelve, y si no coincide la página se recarga sola.

apple-touch-icon sin cookies y Access lo redirigía al login. Ahora sale siempre por

/p/icono.png, que está bypaseado. **Quien ya lo instaló tiene que borrarlo y volver a

agregarlo** para que tome el ícono nuevo.

"Convertir en tareas" las parte por renglón u oración, las mostrás tildadas para revisar y

las crea. Usa el reconocimiento de voz del celular (Web Speech API), sin claves. La nota

cruda se guarda en la tabla notas.

uniendo hasta cubrir la pantalla, 1,5 s, lila sobre claro; después el isologo y la frase.

lista del otro un instante. Ahora va por token y se borra al salir.

resuelve los templates). El chequeador anterior miraba el archivo crudo y dejó pasar un

\n que el template convirtió en salto de línea real: la página quedó muda. Otra vez.

fuiste): necesita OAuth de Google por usuario, o sea un proyecto en Google Cloud con

consentimiento. Es la fase 3 del plan; no se puede fingir con un botón.

<!-- sesión Claude Code · 5-sep-2026 — informe del tester y arreglos -->

recorrido de toda la UI en celular). Informe completo en docs/INFORME-tester-tareas-2026-09-05.md.

Veredicto: "lo usaría una semana, no la segunda". 20 bugs, 15 problemas de UX.

· B1 fuga de datos: mandar el id de una tarea ajena al crear devolvía esa tarea entera.

El id ahora lo pone el servidor y el SELECT filtra por dueño siempre.

· B2 doble toque en el tilde creaba dos "siguientes" · B3 "cada mes" corría 30 días desde que

la hacías (las expensas del 10 se iban al 5, al 1…): ahora semana/15 días/mes se anclan a la

fecha programada, "cada N días" sigue contando desde que la hacés, y las etiquetas lo dicen

· B4 días fijos duplicaba si la hacías antes · B5 fechas inválidas rompían la pantalla

("atrasada NaN días") · B6 tarea con proyecto archivado desaparecía de Proyectos · B7 fechas

sin mes ("lunes 5" ¿de qué?) · B8 "vuelve el mañana" · B9 pastilla larga desbordaba · B10

buscar sin acentos/mayúsculas y sin comodines · B11 corte en 60 avisado · B12 errores 500

con TypeError a la cara · B13 área/proyecto basura aceptados · B14 emoji compuesto cortado

· B15 archivar proyecto ajeno decía ok · B16 tildar una archivada · B17 pasársela a uno

mismo · B20 la frase nunca se veía el primer día.

· UX-1 Guardar pegado abajo, días de la semana a un toque, área/repetir/detalle plegados

· UX-2 el gesto avisa cuando pasa a "mañana" · UX-5 repetida sin fecha sigue sin fecha

· UX-6 el anillo separa hoy de atrasadas · UX-7 contraste (gris más oscuro, chips 11px)

· UX-10 crear proyecto con la hoja, no con prompt() · UX-14 el buscador vacío pide escribir.

· UX-3 vista "Delegadas" con estado + deshacer al delegar. Para un gerente que delega 5 por día

es lo que falta para confiar.

· UX-9 si vence la sesión de la PWA instalada, la pantalla te manda al link que es la misma

pantalla. Guardar el token en el celular y ofrecer "Volver a entrar con PIN".

· B18/B19 sospechas no reproducidas (resultados del buscador desordenados; tildar+deshacer muy

rápido). Falta AbortController y encolar la acción.

· Lo que falta para estar a la altura: fechas en lenguaje natural ("expensas el 10"),

recordatorios/hora, subtareas, orden manual, revisión semanal, offline, dark mode.

<!-- sesión Claude Code · 5-sep-2026 — el tablero de tareas de verdad -->

deporte, nutrición, libros), tareas con o sin fecha (las sin fecha esperan, no se

pierden), delegación a cualquiera del directorio con rastro de quién la pidió, área,

urgente, detalle. Compositor completo detrás del "+"; el campo de abajo sigue creando en

un toque.

de fondo y textura de ruido. Ya no es una pantalla blanca.

sugerencias). Decisión de Gabriel: frase propia, no una impuesta.

Gamaliel (mail confirmado por ser dueño del cronograma en Drive), no de memoria.

de la semana* (gimnasio los lunes, miércoles y viernes — la próxima sale del calendario)

y *cada N días contados desde que la hiciste* (cambiar el filtro cada 30 — si contara

desde la fecha programada, atrasarte una vez te dejaría atrasado para siempre).

Deshacer el tilde también se lleva la que había nacido.

ve el JS de la página: viaja dentro de un template literal y para node es texto. Un error

de sintaxis ahí sólo aparecía cuando alguien abría la página. Encontró uno en su primera

corrida.

<!-- sesión Claude Code · 5-sep-2026 — apertura, tarjeta de WhatsApp y PWA -->

así que pasa cualquiera que Access deje entrar (@plant.com.ar y @vivet.com.ar). Para

volver a cerrarlo, se le pone la lista de mails a esa fila.

buildear (build_tarjeta.py arma el PNG a mano con zlib — no hay PIL en la máquina).

El isologo va en blanco sobre lila, como manda la marca.

apple-touch-icon, y un aviso que se muestra una sola vez explicando cómo agregarlo a la

pantalla de inicio (texto distinto para iPhone y Android).

La API ya acepta la edición (/api/panel/rutina con id), falta la pantalla.

y de criterio propio; no hubo panel de expertos ni prueba con usuarios. La prueba real es

Sara y Flor usándolo una semana.

<!-- sesión Claude Code · 5-sep-2026 — puerta doble en tareas.plantinterno.com -->

Cloudflare Access (empleados con mail). /s/* y /p/* van con política Bypass y usan

link personal + PIN, contra las tablas personas/sesiones que comparte con

plant-limpieza. En las rutas bypaseadas el header de Access no se mira nunca: si se

mirara, cualquiera podría falsificarlo y entrar como quien quiera. Probado: /api sigue

redirigiendo a Access, un header falsificado desde afuera lo frena Access, y en /p el

worker lo ignora.

Dirección + los 8 líderes. Vaciar esa fila abre el tablero a todo el dominio (que es

lo que filtra Access): ese es el interruptor de la fase 2.

fila de personas. Su link de tareas es distinto al de limpieza (cookies por host).

agregado a CONTACTOS.md. Los 8 líderes dados de alta en el ámbito Empresa de limpieza.

WhatsApp para mandarles el link no aparece.

dictado del teclado del celular dentro del campo de tarea.

<!-- sesión Claude Code · 5-sep-2026 — tablero de limpieza -->

Cada rutina tiene intervalo en días y recuerda la última vez; lo pendiente se arrastra

hasta que se hace. Probados los 5 casos contra producción.

día) en el panel y en la app de quien limpia.

Flor dada de alta. Naty pasó a ver sólo casa. Categorías separadas por ámbito.

aparecían 11 tareas y un turno). Ahora lista sólo rol='operativo'.

hay que definir cómo se exporta/imprime el registro por período y quién firma. Sin

resolver — hablarlo con Gamaliel antes de dar de baja la planilla.

teléfonos). Se hace desde el panel, solapa Gente, ámbito Empresa.

Sara quedaron en 7 y 30 días, que ahora sí es lo correcto (ya no hay día fijo).

textura de ruido). Y tres bugs de UX que aparecieron probándolo con Naty:

· Los botones andaban a veces sí y a veces no: la solapa "Tareas fijas" enganchaba los clics

con addEventListener en vez de reemplazar el handler, así que se acumulaba uno por visita y

después interferían entre sí. Ahora hay un solo manejador delegado, atado una vez.

· El filtro Casa/Empresa no se veía en el celular: vivía al final de la barra de solapas

(585px de barra contra 375 de pantalla). Ahora es un control propio, siempre visible.

· Al mandar una tarea no se podía elegir la categoría y caía en "Pisos". Ahora hay pastillas

de categoría y arranca en "Otros".

· Las tarjetas quedaban en opacity:0 para siempre si la pantalla estaba apagada al cargar

(animación con fill-mode backwards que nunca corría). Hay red de seguridad.

para ver el detalle. task_events tiene un trigger que la hace append-only: la base rechazó

un DELETE incluso desde la API de administración.

D1 compartida con plant-tareas. Entran con link + PIN (no tienen mail de la empresa), app de

Access con política Bypass. Plan completo en docs/PLAN-limpieza-y-tareas.md.

el binding de KV y la base estaba atada desde la consola. Ahora las D1 se declaran por variante.

Ojo si aparece otro worker con D1: hay que sumarlo ahí o el primer deploy lo deja sin base.

(Pisos, Baños, Varias, Ropa). El cargador lee xlsx con la librería estándar — openpyxl no está

instalado. Se sumaron dos frecuencias que la planilla necesitaba: bimestral (cada 60 días) y

cuando (si hace falta: lavado, planchado, parrilla), que no cuenta en el progreso del día.

"SEMANALMENTE" y "CADA 30 DÍAS": quedaron todas en lunes y día 1. Son 10 tareas. Se cambian en

el panel, solapa Tareas fijas.

delegación y el chip de quién te asignó la tarea. delegated_by ya existe en la tabla.

el tier de Workspace, que la licencia de Gemini esté activa, y quién puede crear la cuenta de

servicio con delegación de dominio.

<!-- sesión asistente · 5-sep-2026 — pedido de Gabriel -->

Analizar Supermetrics u otra forma de traer las métricas de TODAS las plataformas de ads de la

empresa a un solo lugar que Claude pueda leer, para que lo usen Gabriel y Nacho (responsable de

ads en Plant). Objetivo: análisis experto por plataforma + retroalimentación de Nacho sobre cada

campaña (qué quieren lograr, resultados, ajustes), para que la IA potencie la toma de decisiones

y las campañas lleguen mejor a los objetivos mensuales. Falta: elegir herramienta (Supermetrics u

otra), definir qué cuentas/plataformas entran, y armar el circuito de feedback de Nacho.

<!-- sesión asistente · 4-sep-2026 (tarde) — capacidades nuevas del asistente de WhatsApp -->

sólo buscar/leer/crear/actualizar/comentar). Activarlo: openclaw mcp login notion (abre browser).

envío YA funciona (gmail.send autorizado 4-sep). Falta que Gabriel diga cuáles son — hay 25

borradores y no se identifican con certeza. Se mandan con plant-mail-enviar --borrador <id> + 👍.

aprueba dominios/repos y crea el grupo de WhatsApp del piloto (la CLI no crea grupos).

el bot conteste solo a cualquiera (riesgo real: ya le escribió a un grupo sin permiso). La única

forma "solo lectura" es messages.visibleReplies: message_tool global, que es candado blando

(disciplina del modelo). Recomendación: NO por ahora; dominios vía grupos (plan multi-agente).

toques, candado duro). Si Gabriel quiere un solo toque: allowlistear plant-wsp-enviar/

plant-mail-enviar y que la pregunta corta sea el único gate. Decisión de Gabriel.

pre-aprobados: corré directo" y los de envío también se llaman plant-*; además el asistente no sabía

qué mandar y disparó igual. Arreglado en código Y en reglas: --nota obligatoria y verificada contra el

destinatario/asunto real; destino de WhatsApp sólo +número o JID (nombres se rechazan) con --nota/--grupo;

dominios externos exigen --externo; sin argumentos aborta con instrucciones; plant-mail borradores y

plant-mail borrador (crear); reenvío con adjuntos (--reenviar) y responder en hilo (--responder);

CONTACTOS.md como única fuente de mails/números; manual partido en consulta vs envío, sin la contradicción

"esperá el ok" vs "corré de una"; reglas para ♾️, "dale" con tarjeta pendiente, resultado perdido, "a mí".

Auditado por 4 revisores adversariales (42 hallazgos) + verificación post-fix.

conversations_send sigue denegada). Log en ~/.openclaw/logs/wsp-enviar/. Dry-run probado.

("¿Le mando esto a Mauro?") sin preámbulos.

🔗 Conexiones Neuronales

Proyectos/_tablero-sesiones-historico