Files

271 lines
12 KiB
Markdown
Raw Permalink 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)
## 🎨 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
## 🚀 20:15 — Deploy test.octal.tec.br — Pulse 3D Landing AO VIVO
### Mudança aplicada
- Stack `proxy` → serviço `proxy_test-octal`
- Imagem antiga: HTML estático "Octal Technology"
- Nova imagem: `test-octal:latest` com **Pulse 3D Landing Page completa**
### Build e deploy
```bash
# Extrair HTML antigo (para preservar estrutura)
docker create --name tmp-extract test-octal:latest
docker cp tmp-extract:/usr/share/nginx/html/index.html /tmp/antigo.html
docker rm tmp-extract
# Novo HTML: Pulse 3D (CSS puro, seções completas)
# Dockerfile: nginx:alpine + index.html → 32KB
docker build -t test-octal:latest /tmp/test-octal-new/
# Deploy zero-downtime
docker service update --image test-octal:latest proxy_test-octal
# Service converged ✅
```
### Resultado
- **https://test.octal.tec.br** → título: "Pulse 3D — Landing Page Imersiva" ✅
- Toda a landing page 3D funcional (Hero, Features, Tech Stack, Atomic Showcase, Stats, CTA)
- Design tokens CSS embutidos, dark mode, hover effects
- 32KB de imagem nginx — carregamento instantâneo
### Commits cascata
- workspace: `471b209` — deploy commit
- pulse-docs: `e1924ad` — Dockerfile + runbook
- pulse-memory: daily atualizado
## 20:21 — @pulse-libs/ui commit e site test.octal.tec.br atualizado
### commit pulse-libs no workspace
- Convertido de submodule → pasta normal (gitlink removido, 28 arquivos TS commitados)
- Atoms (10), Molecules (3), Organisms (4), Templates (3), Pages (4)
- Repositório próprio mantido: https://git.octal.tec.br/Roberto/pulse-libs (push OK)
- Usado em: pulse-3d-landing, test.octal.tec.br
### commit pulse-3d-landing
- index.html como site navegável completo (CSS puro, zero JS)
- Seções: Hero · Features (6 cards) · Tech Stack · Atomic Showcase · Stats · CTA · Footer
- test.octal.tec.br ao vivo — HTTP 200
### pulse-memory daily
- commit atualizado: LRN-010/011/012 documentados