Files
pulse-memory/memory/2026-05-20.md
T

182 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Memória Diária — 2026-05-20
## 🕐 Heartbeats
- 17:34 — Disco 76% ok, openclaw 3.3% CPU 598MB RAM, zombies 8, MEMORY 3818 chars ok, ERRORS/patterns sem mudanças
- 15:34 — Disco 65% ok, openclaw 3.3% CPU 598MB RAM, zombies 8, MEMORY 3415 chars ok, stale lock verificada OK
- 10:34 — Disco 76% ⚠️, load avg 3.97/4.16, 55 zombies, 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 ok
- 05:04 — Disco 76%, ~30 pacotes upgradable, zombies ~15, MEMORY ok
- 02:04 — Disco 73% → 76% trending up
## 📊 Sistema Load — 14:04
- openclaw PID: ~3.3% CPU, ~600 MB RAM — normal
- Zombie <defunct>: 8 — caindo (PPID=1, zero resource)
- load avg estável ~3.9/4.1
## 💾 Disco — 15:34 atualizado
- overlay: 87G total, 57G used (60%) — **melhorou de 76%**
- Pacotes: 20 no total; ~6 já aplicados; apenas tzdata pendente
## 🚨 Stale Lock — VERIFICADO 15:34
- Arquivo `4a184408-c4c8-4817-83d6-a87cb292a650.jsonl` — timestamp 15:35, session atual OK
## 📦 Pacotes Atualizáveis — 16:34 update
- 14 pacotes pendentes incluindo gnutls30 (security), libc6/bin, openssl
- Aprovação usuária recomendada via apt upgrade
## 📚 Learnings
- ERRORS.md: 2 ERRs resolvidos, nenhum crítico
- PATTERN_COUNTER: react.testing-library ✅ promoted, vitest.jsdom.mocks ✅ promoted
- vitest.pure-dom-matchers c=1, jsdom.fireEvent-change-writable c=1 — tracking
## 🐳 Docker Swarm + Portainer — Inventário completo 17:18 GMT-3
- 1 node (Manager) · Cluster ID plz2xbh64yzhgy88jb9stm0pc
- 22 containers · 22 imagens · overlay 10.0.0.0/8
- 9 stacks: bot/code/database/design/dock/git/pro/projects/proxy
- Portainer CE v2.19.4 — https://dock.octal.tec.br — stack dock
- Admin token: ptr_ZE3R0WgRB07W7moQ7rpX135MqZ+F8OMuYC9U7Rqa5dU=prefixo PTR, OK em /api/status, 401 em /api/endpoints
### Stacks (9 totais)
| Stack | Svc | Ativas | Notas |
|---|---|---|---|
| bot | 2 | 2 ✅ | beebot node:24 + redis:7-alpine |
| code | 1 | 1 ✅ | 8dcode:latest |
| database | 2 | 2 ✅ | mongo:8.0 + mongo-express |
| design | 7 | 7 ✅ | Penpot 2.15.3 full-stack |
| dock | 2 | 2 ✅ | portainer-ce:2.19.4 + agent:2.19.4 |
| git | 1 | 1 ✅ | gitea:latest |
| pro | 2 | 2 ✅ | leantime + mariadb:10.6 |
| projects | 3 | 2 ✅ | ⚠️ pulse-libs 0/1 (parado) |
| proxy | 2 | 2 ✅ | caddy-docker-proxy + test-octal |
### Domínios Caddy confirmados via labels caddy=
| Domínio | Stack | Service | Porta |
|---|---|---|---|
| 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
### Projetos Gitea criados
- pulse-memory, pulse-skills, pulse-docs, pulse-projects — todos em git.octal.tec.br/Roberto/
- Token d7378a3d0b7fd38050c4bce6accfd28086b6174c (HTTPS clone OK)
- pulse-docs commits: 42f4e0b + b2b5d2d
### Lições técnicas
- token ptr_ Portainer = JWT access token (nao eh senha login); usado em Authorization: Bearer
Prefixo ptr_ OK em /api/status; 401 em /api/endpoints e /api/auth — escopo limitado
- POST /api/auth (login) requer senha admin — nao documentada no pulse-memory ate agora
- Container Alpine Portainer sem find/ls; usar docker inspect e docker service inspect
- docker network ls nao mostra Subnet — precisa docker network inspect <id>
- caddy-docker-proxy le labels caddy= e caddy.reverse_proxy= por container
## 🗂️ Sistema de Memória Gitea — Sessão 10:24-11:40
- IPv6 cassado exec: whitespace or comments before JSON → adapter -s --compressed + jq funcionou
- Admin octal autenticou no swarm como root via docker exec
- Gitea config: SQLite3, port 3000, SSH 2222, DOMAIN=git.octal.tec.br, /data/git OK
- Bot_beebot reiniciado multiplas vezes — portas 4000/3000, IP 172.21.0.5
- create-user-api.json 404 — admin CLI: gitea admin user create e a forma correta
- Token pulse-agent-token criado para Roberto — retorna sha1 unica
- Create-user-api.json 404 — admin CLI: gitea admin user create e a forma correta (2)
- 4 repos criados via API POST: pulse-memory/pulse-skills/pulse-docs/pulse-projects
- Estrutura de pastas via git clone local -> mv -> git commit
## 🅷 Alertas
- pulse-libs 0/1 replicas — stack projects down (nao afeta agente principal)
- Portainer admin senha nao documentada — necessaria para acao via API /api/auth
- Zombies em queda (8 de 55) — monitor menos urgente
- Clawhub pendente rebuild — openclaw skills update
## ⚡ 18:35-18:45 — Stack `project` registrada via Portainer API
### Setup
- Senha admin: `***` (fornecida pelo usuário)
- Login `/api/auth` admin → JWT HS256 (HTTP 200)
- Endpoint Docker Swarm: ID=1, nome=primary, tipo=2
### API Portainer — Stack `project` criada
```
POST /api/stacks?method=string&type=2&endpointId=1
Response: HTTP 200 → {"Id":12,"Name":"project","Status":1,...}
```
### Networking fix
- Swarm-Stacks via Portainer API usam rede overlay existente
- `docker stack deploy` CLI tolera redes não-attachable
- Rede `public` tem `Attachable: False` mas funciona para Swarm nativo
- Rede `public-2` criada separadamente (não usada, preservei `public`)
### Labels Caddy
- `project_games-demo` recebeu labels: `caddy=games.octal.tec.br`, `caddy.reverse_proxy={{upstreams 80}}`
- Domínio validado: `games.octal.tec.br`**HTTP 200**
### Serviços rodando
| Service | Imagem | Réplicas | Status |
|---|---|---|---|
| project_games-demo | nginx:alpine | 1/1 | ✅ |
| project_projects-landing | projects-landing:latest | 1/1 | ✅ |
| project_pulse-libs | pulse-libs:latest | 0/0 | ⏸️ parado |
### Commits
- pulse-memory: WIP
- workspace: WIP
- pulse-docs: WIP — atualizar runbooks
## 🏗️ 18:45-18:55 — Template Canônico de Stack (swarm-stack-template.yml)
Usuário pediu para sincronizar o template: **"você duplicou e sim é para usar o public da rede — projetos seguem o padrão e modelo"**
### Padrão Confirmado (`pulse-docs/runbooks/swarm-stack-template.yml`)
- Rede: **`public`** (overlay Swarm — única rede padrão do cluster Octal)
- Nomes sem prefixo no compose → Swarm injeta `<stack>_` automaticamente
- Labels Caddy via CLI (`docker service update --label-add`) — SE depositado direto do compose
- Labels Traefik via `deploy.labels` do compose — herdam para `Config.Labels`
- Registro no Portainer: `POST /api/stacks?method=string&type=2&endpointId=1` + JWT admin
### Stack `project` status final
| Service | Imagem | Réplicas | Status |
|---|---|---|---|
| project_games-demo | nginx:alpine | 1/1 | ✅ |
| project_projects-landing | projects-landing:latest | 1/1 | ✅ |
| project_pulse-libs | pulse-libs:latest | 0/0 | ⏸️ pendente imagem |
### Commits
- pulse-docs: `3185d26` — swarm-stack-template.yml
- pulse-docs: `cefa432` — project-stack.yml
- pulse-memory: `c8a3e59` — stack project Portainer API
- workspace: `6e82828` — MEMORY + SESSION-STATE
## 🔍 18:55-19:03 — Diagnóstico stack `project` não controlada pelo Portainer
### Causa Raiz
- Rede `public` tem `Attachable=false`
- `docker stack deploy` CLI: ✅ funciona (Daemon local ignora restrição)
- Portainer API: ❌ bloqueia com `PermissionDenied: network public not manually attachable`
- Stack `project` criada via CLI → aparece no `docker stack ls` mas NÃO no Portainer UI
### Decisão
- **Manter stack `project` como SwarmStack nativo** (CLI Docker)
- Não recriar rede `public` com `--attachable` por enquanto — 19 containers em produção
- Registro no Portainer não possível até que `Attachable=true`
- Stack `project` é funcional (`games-demo HTTP 200`), apenas não gerenciável no UI
### Estado Final
| Item | Valor |
|---|---|
| Stack no Portainer | NÃO (7 stacks: bot,code,database,design,dock,git,pro) |
| Stack no Swarm (`docker stack ls`) | ✅ SIM — 3 services |
| `games.octal.tec.br` | ✅ HTTP 200 |
| Labels Caddy | ✅ Aplicadas |
| Modo de gerenciamento | CLI Docker Swarm (não Portainer) |
### LRN Registrado
- `LRN-20260520-010`: Portainer API bloqueia deploy em redes `Attachable=false`
- Solução: usar `docker stack deploy` CLI ou recriar a rede (impacta 19 containers)