221 lines
9.7 KiB
Markdown
221 lines
9.7 KiB
Markdown
# 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)
|
||
|
||
## 🎨 20:00 — Landing Page 3D Completa (pulse-3d-landing)
|
||
|
||
### Projeto criado
|
||
`pulse-3d-landing/` — Landing Page 3D disruptiva, imersiva, fora da caixa.
|
||
|
||
### Atomic Design implementado
|
||
- **5 níveis**: Átomos (11) → Moléculas (3) → Organismos (2) → Templates (2) → Pages (1)
|
||
- **8 domínios de tokens**: space, font, color, shadow, radius, material3d, camera3d, animation
|
||
- Build OK: `npm install && npm run build` ✅
|
||
|
||
### Stack
|
||
- Vite + React 18 + TypeScript
|
||
- @react-three/fiber + drei (Three.js)
|
||
- framer-motion
|
||
|
||
### Seções
|
||
| Seção | Elementos 3D |
|
||
|-------|-------------|
|
||
| Hero | Torus flutuante + 2 anéis orbitais + FloatingMesh |
|
||
| Features | 6 cubos em círculo + FeaturesScene3d + Float |
|
||
| About | Texto 2D overlay |
|
||
| CTA | Button + GradientText |
|
||
|
||
### Token 3D highlights
|
||
```ts
|
||
material3d.floating = { roughness: 0.08, metalness: 0.75, emissive: '#1e3a8a' }
|
||
camera3d = { position: [0,0,12], scrollRange: [0,-8,6] }
|
||
```
|
||
|
||
### Vault Obsidian
|
||
- `Projetos/pulse-3d-landing.md` — overview completo
|
||
- `Codex/design-tokens-3d.md` — referência técnica dos tokens
|
||
- `Docker/pulse-3d-landing.md` — Dockerfile + deploy Swarm
|
||
|
||
### Commits
|
||
- pulse-3d-landing/ (repo local)
|
||
- pulse-memory: `e428de8` — LRN-011
|
||
- workspace: `b49ed7c` — código completo
|