Files
pulse-libs/MEMORY.md
T
Roberto 6b6c706979 docs: Portainer + swarm inventory (9 stacks, 6 domains caddy, pulse-memory sync)
- TOOLS.md: nova secao Docker Swarm com tabela completa das 9 stacks
- MEMORY.md: adiciona Portainer v2.19.4 + admin token info + dominio map
- memory/2026-05-20.md: inventario completo pessoal (22 containers, redes overlay)
2026-05-20 17:28:22 -03:00

82 lines
4.0 KiB
Markdown

# MEMORY.md — Memória Curada
## 🧠 Agente OpenClaw
- Debian 12 container, `/root/.openclaw/workspace/`
- Projeto ativo: `@pulse-libs/core` — 136/136 testes ✅
- Stack: React/Vue, TS strict, Vitest, Pino/Zod, tsup v8, Docker multi-stage
## ⚙️ Infra
- Disco 76% (↑ de 66%), 87G total — **monitorar** (tendência de alta)
- Sem systemd no container
- Gitea: `git.octal.tec.br``localhost:3000` (Caddy proxy) — Docker Swarm stack `git`
- User: Roberto (betotn91@gmail.com), SSH key em `~/.ssh/id_ed25519_gitea`
- Repos Gitea: `pulse-memory`, `pulse-skills`, `pulse-docs`, `pulse-projects` — clonados via HTTPS
## 🐳 Docker Swarm — Stack Real (inventariado 2026-05-20)
- **Node**: `s1` · ID `x3fm004yzn3j7pvhz0fuuskez` (Leader) · Docker 29.4.3
- **Cluster ID**: `plz2xbh64yzhgy88jb9stm0pc`
- **22 containers** · **22 imagens** · **9 stacks**
- **Stacks**: `bot`, `code`, `database`, `design`, `dock`, `git`, `pro`, `projects`, `proxy`
- **Portainer CE v2.19.4** — https://dock.octal.tec.br — stack `dock`
- **Admin portainer token**: `ptr_ZE3R0WgRB07W7moQ7rpX135MqZ+F8OMuYC9U7Rqa5dU=`
### Domínios / Rotas Caddy (confirmados)
| 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` | — |
### Serviços por Stack
| Stack | #svc | Serviços ativos |
|---|---|---|
| `bot` | 2 | ✅ beebot (node:24), ✅ redis:7-alpine |
| `code` | 1 | ✅ 8dcode |
| `database` | 2 | ✅ mongo:8.0, ✅ mongo-express |
| `design` | 7 | ✅ Penpot 2.15.3 *(backend+frontend+postgres+valkey+exporter+mcp+mailcatch)* |
| `dock` | 2 | ✅ portainer-ce:2.19.4, ✅ agent:2.19.4 |
| `git` | 1 | ✅ gitea:latest |
| `pro` | 2 | ✅ leantime, ✅ mariadb:10.6 |
| `projects` | 3 | ✅ games-demo, ✅ projects-landing, ⚠️ pulse-libs **0/1** (down) |
| `proxy` | 2 | ✅ caddy-docker-proxy, ✅ test-octal |
### Redes Overlay
| Rede | Subnet | GW | Containers |
|---|---|---|---|
| `ingress` | 10.0.0.0/24 | 10.0.0.1 | 3 |
| `public` | 10.0.1.0/24 | 10.0.1.1 | 14 |
| `dbn` | 10.0.2.0/24 | 10.0.2.1 | 2 |
| `mongo-cluster` | 10.0.3.0/24 | 10.0.3.1 | 3 |
| `pro_leantime_net` | 10.0.4.0/24 | 10.0.4.1 | 3 |
| `design_internal` | 10.0.5.0/24 | 10.0.5.1 | 8 |
| `proxy_proxy-net` | 10.0.6.0/24 | 10.0.6.1 | 0 |
## Docs externas coletadas
- Portainer: https://docs.portainer.io/user/docker/stacks.md
- Portainer add stack: https://docs.portainer.io/user/docker/stacks/add.md
- Portainer edit stack: https://docs.portainer.io/user/docker/stacks/edit.md
- Portainer full corpus: https://docs.portainer.io/llms-full.txt (truncado às 6k chars)
- Armazenadas em `pulse-docs/docs/`
## 🔑 Lições High-Signal
- `flat(Infinity)` quebra tsup DTS — usar `flat(2)`
- `process.env` direto quebra SSR — `typeof window !== 'undefined'`
- Backticks aninhadas em TS → usar `.replace()` por fora
- Zod: `.transform(v => v.replace(...))` não `.replace()` direto
- `vi.useFakeTimers()` não usar globalmente (quebra outros hooks)
- `fireEvent.change` jsdom: `value` precisa `writable` via `Object.defineProperty`
- `getByRole('textbox')` não funciona no jsdom puro — usar `container.querySelector`
- Portainer API token `ptr_...` prefixo PTR — funciona para UI, não para endpoint `/api/endpoints` (401)
→ Senha admin necessário para login via POST `/api/auth` — não documentada em pulse-memory
## Decisões Recentes
- `react.testing-library` e `vitest.jsdom.mocks` promoted → AGENTS.md (count≥3)
- `tsup.flat2-not-flatinfinity` pattern criada
- Docker Swarm proxy modelo replicado na stack `proxy`
- Dominio live: `https://test.octal.tec.br` (Caddy + Let's Encrypt)
- **Domínios mapeados via labels Caddy**: 6 confirmados (dock/git/ai/manager/games/test)
- **pulse-memory clonado via HTTPS** (credenciais fornecidas pelo usuário)