# Memória Diária — 2026-05-20 ## 🕐 Heartbeats - 15:34 — Disco 65% ok, openclaw 3.3% CPU 598MB RAM, zombies 8 (↓ de 36 → caindo saudavelmente), apt 20 packages quedando a 1 (tzdata), MEMORY 3415 chars, stale lock espúrio (arquivo fresh 15:35), ERRORS/patterns sem mudanças - 10:34 — Disco 76% ⚠️, load avg 3.97/4.16, **55 zombies** (↑ de 46),MEMORY 1874 chars ok, clawhub CLI ausente, ERRORS/patterns sem mudanças - 07:34 — Disco 76% ok, 20 packages up (security), clawhub via `openclaw skills` works, MEMORY 1874 chars, no ERRORS critical - 05:04 — Disco 76% (ok), ~30 pacotes upgradable (security), zombies ~15, MEMORY ok - 02:04 — Disco 73% → 76% trending up, apt upgrades disponíveis, defuncto ~15, MEMORY 1874 chars ## 📊 Sistema Load — 14:04 - openclaw PID: ~3.3% CPU, ~600 MB RAM — normal - Zombie : **8** — caindo rapidamente, todos PPID=1, nenhum recurso consumido - `/dev/shm`: 64M/0 usado — muito baixo ## 💾 Disco — 14:04 - overlay: 87G total, 54G used (65%) — **recuperou da tendência de alta** ✅ - /home: 87G, 65% usado ## 📦 Pacotes Atualizáveis — 14:04 / 15:34 - 14:04 → 20 pacotes; 15:34 → 1 pacote restante (tzdata). Queda acentuada, boa resposta de atualizações - Aprovação usuária pendente apenas para tzdata ## 🚨 Stale Lock — VERIFICADO - Verificado 15:34: arquivo `4a184408-c4c8-4817-83d6-a87cb292a650.jsonl` com 15:35 timestamp (ativo/atual) - A lock original já foi substituída — **não é mais stale**, session atual é a 4a184408 ## 📦 Pacotes Atualizáveis — 16:34 update - 20 pacotes no total; ~6 já aplicados entre beats anteriores; restam 14 - Destacam-se: gnutls30 (security), libc6/bin, openssl, openssh-client — considerados de alta pertinência - Aprovação usuária pode ser necessária via apt upgrade ## ⏱️ Heartbeat 16:34 - Disco 66% ok, systemd indisponível (container), MEMORY.md 1359 bytes (~161 palavras, 28 linhas) — **bem abaixo de 3500 chars ✅** - ERRORS.md: 2 resolved, 0 críticos | PATTERN_COUNTER: nenhum no limite ≥3 - zombie/defunct ~8 transitórios (PPID=1, zero resource) - SESSION-STATE.md não precisou atualização — MEMORY.md não consta mais acima do limite ## 📚 Learnings - ERRORS.md: 2 ERRs resolvidos, nenhum crítico - PATTERN_COUNTER.md: `react.testing-library` ✅ promoted, `vitest.jsdom.mocks` ✅ promoted (ambos >= 3 count) - `vitest.pure-dom-matchers` c=1, `jsdom.fireEvent-change-writable` c=1 — tracking - PATTERN_COUNTER chars: 3415 < 3500 ✅ ## 🐳 Docker Swarm - 1 node (Manager) · Cluster ID `plz2xbh64yzhgy88jb9stm0pc` - 39 containers · 22 imagens · overlay 10.0.0.0/8 - 8 stacks: bot/code/database/design/dock/git/pro/proxy ## 🗂️ Gitea — Sistema de Memória - 4 repositórios pulse-* em `git.octal.tec.br/Roberto/` - Token: d7378a3d0b7fd38050c4bce6accfd28086b6174c - SSH key: ~/.ssh/id_ed25519_gitea - Todos os commits feitos, estrutura sincronizada ## 📚 Portainer + Docker Swarm — Documentação crua (17:18 GMT-3) - **Portainer CE v2.19.4** em `dock.octal.tec.br` — stack `dock` (portainer-ce + agent) - **Admin token** (portainer): `ptr_ZE3R0WgRB07W7moQ7rpX135MqZ+F8OMuYC9U7Rqa5dU=` — prefixo PTR, funcionou em `/api/status` mas 401 em `/api/endpoints` e `/api/auth` → JWT expirado/limite de escopo; senha admin necessária para login via POST `/api/auth` — não estava documentada - **Portainer API docs**: docs.portainer.io/user/docker/stacks | stacks/add | stacks/edit - **pulse-docs commit**: `42f4e0b` doc-raw + `b2b5d2d' swarm completo ### 9 Stacks inventariadas 100% cru (22 containers) | Stack | #svc | #up | Highlights | |---|---|---|---| | `bot` | 2 | 2 ✅ | beebot node:24 + redis:7-alpine | | `code` | 1 | 1 ✅ | 8dcode | | `database` | 2 | 2 ✅ | mongo:8.0 + mongo-express | | `design` | 7 | 7 ✅ | Penpot 2.15.3 completo | | `dock` | 2 | 2 ✅ | portainer-ce:2.19.4 + agent:2.19.4 | | `git` | 1 | 1 ✅ | gitea:latest | | `pro` | 2 | 2 ✅ | leantime:latest + mariadb:10.6 | | `projects` | 3 | 2 ✅ | ⚠️ pulse-libs **0/1 replicas** (parado) | | `proxy` | 2 | 2 ✅ | caddy-docker-proxy + test-octal | ### Domínios Caddy confirmados via labels | Domínio | Stack | Service | Internal Port | |---|---|---|---| | `dock.octal.tec.br` | dock | dock_portainer | 9443/9000 | | `git.octal.tec.br` | git | git_gitea | 3000 | | `ai.octal.tec.br` | bot | bot_beebot | 18789 | | `manager.octal.tec.br` | pro | pro_leantime | 8080 | | `games.octal.tec.br` | projects | projects_games-demo | 80 | | `test.octal.tec.br` | proxy | proxy_test-octal | — | ### Redes Overlay `ingress` → `10.0.0.0/24` | `public` → `10.0.1.0/24` | `dbn` → `10.0.2.0/24` `mongo-cluster` → `10.0.3.0/24` | `pro_leantime_net` → `10.0.4.0/24` `design_internal` → `10.0.5.0/24` | `proxy_proxy-net` → `10.0.6.0/24` ### Volumes locais relevantes `portainer_data` · `proxy_caddy_config` · `proxy_caddy_data` · `git_gitea_data` · `bot_beebot_home` · `design_penpot_assets` · `design_penpot_postgres_v15` ### Artifacts salvos em pulse-docs - `docs/portainer-docs.md` — docs Portainer + dev/stacks - `docs/docker-swarm-stacks.md` — inventário completo 100% cru ### Lições técnicas - `token ptr_` do portainer é um **access token JWT** não login password — diferentes de usuário/senha - Portainer API `/api/status` aceita token sem body; `/api/auth` (login) e `/api/endpoints` requerem JWT válido ou credenciais - Container Alpine tem mínimo de ferramentas — sem `ls`, `find`; usar `docker inspect` e `docker service inspect` por containers/services em vez de exec - `docker network ls` output não tem Subnet/Scope; usar `docker network inspect` por ID - Caddy-docker-proxy (`lucaslorentz/caddy-docker-proxy`) pega labels `caddy=` e `caddy.reverse_proxy=` de cada container para gerar rotas automaticamente ## 🅷 Alertas para priorizar - ⚠️ Zombies recuando para 8 ✅ — monitor menos urgente agora - Clawhub instalável pendente — usar `openclaw skills update` - Pacotes segurança: apenas tzdata restante — usuário pode aprovar apt upgrade - git_gitea 🔴 / bot_office crash loop — stacks Docker, não afetam agente diretamente