chore(session): sync MEMORY + SESSION-STATE pre-site-3d-update

- MEMORY.md: 123 linhas atualizado com libs/TOOLS.md estrutura 20 skills
- SESSION-STATE.md: arquivandosessões antigas + tarefas pendentes
- Guard before major 3D site update — 2026-05-20 21:01 GMT-3
This commit is contained in:
Pulse Agent
2026-05-20 21:02:12 -03:00
parent 85c0bc15a2
commit 927efd6b9f
2 changed files with 97 additions and 146 deletions
+37 -111
View File
@@ -1,123 +1,49 @@
# MEMORY.md — Memória Curada do Pulse
## 🧠 Agente OpenClaw
- Nome: **Pulse** · IDENTITY.md
- Debian 12 container, `/root/.openclaw/workspace/`
- Projeto: `@pulse-libs/core` — 136/136 testes ✅ | React/Vue, TS strict, Vitest, Pino/Zod, tsup v8, Docker multi-stage
- Skills instaladas: 12+ (typescript, e2e-testing, xcloud-docker-deploy, openclaw-power-ops, etc.)
- Nova Self-Improver ativa — loop de aprendizado contínuo
- Nome: **Pulse** · Debian 12 container, `/root/.openclaw/workspace/`
- Projeto core: `@pulse-libs/core` — 136/136 testes ✅ (React/Vue, TS strict, Vitest, Pino/Zod, tsup v8, Docker multi-stage)
- Projeto 3D: `pulse-3d-landing/` — Vite + R3F + drei + framer-motion
- Shared lib: `@pulse-libs/ui` v0.1.0 — 10 Atoms 2D, 3 Molecules, 4 Organisms, 3 Templates
- 20 skills instaladas + 2 Self-Improvers ativos
## ⚙️ Infra
- Disco 65%, 87G total — monitorando estabilidade
- Sem systemd — container Docker
- Gitea: `git.octal.tec.br``localhost:3000` (Caddy) — Swarm stack `git`
- User: Roberto (betotn91@gmail.com), SSH `~/.ssh/id_ed25519_gitea`
- Repos: `pulse-memory`, `pulse-skills`, `pulse-docs`, `pulse-projects` — clonados via HTTPS
- Disco 66%, 87G total (29G disponível) — estável, caiu de 76% → 66% desde manhã
- Container Debian 12 — sem systemd
- Gitea: `git.octal.tec.br`SSH `~/.ssh/id_ed25519_gitea`
- 4 repos Gitea: pulse-memory, pulse-skills, pulse-docs, pulse-projects
- Workspace: 443MB (sem `node_modules/` raiz; cada projeto tem o seu)
## 🐳 Docker Swarm (11 stacks — atualizado 2026-05-20)
## 🐳 Docker Swarm 11 stacks, 22 containers
- Node `s1` Leader, Docker 29.4.3 · Cluster `plz2xbh64yzhgy88jb9stm0pc`
- 22 containers · overlay `10.0.0.0/8`
- **11 stacks**: `bot`, `code`, `database`, `design`, `dev`, `dock`, `git`, `pro`, `project`, `proxy`, `(code)`
- Portainer CE v2.19.4 — https://dock.octal.tec.br
- Senha admin: **`***`** — login via `/api/auth` retorna JWT HS256
- ⚠️ Rede `public` tem `Attachable=false`:
- stacks criadas via `docker stack deploy` CLI funcionam OK
- stacks criadas via Portainer API são **bloqueadas** com `PermissionDenied`
- stack `project` no Swarm via CLI — NÃO aparece no Portainer UI (funcional, mas não gerenciável)
- Admin JWT via senha admin + API `/api/auth`
- Stacks remanescentes são criadas via `docker stack deploy` CLI → API Portainer bloqueia por `Attachable=false`
- **11 stacks**: `bot`/beebot, `code`/8dcode, `database`/mongo, `design`/penpot, `dev`/fullstack-api, `dock`/portainer, `git`/gitea, `pro`/leantime, `project`/games-demo+landing, `proxy`/caddy
- **Dev stack**: TaskBoard + API (port 3001) + Vite (port 5173) + 5 agent workers (Redis BLPOP + pub/sub)
- **Portainer**: https://dock.octal.tec.br — `ptr_` token só leitura; senha admin p/ mutação
- Domínios Caddy: dock, git, ai, manager, games, test, board, api, frontend
- Redes overlay: ingress/public/dbn/mongo-cluster/leantime/design/proxy (10.0.0.0/24→.6)
### Domínios Caddy (8 ativos — atualizado 2026-05-20)
`dock`/portainer · `git`/gitea · `ai`/beebot · `manager`/leantime · `games`/games-demo · `test`/test-octal · `board`/taskboard · `api`/dev-backend · `frontend`/Vite
## 📚 Lições Recentes (erros resolvidos)
- `flat(Infinity)` DTS tsup quebra → usar `flat(2)`
- `flat(∞)` tipo recursivo infinito no TS → limite a 2 níveis
- `process.env` direto quebra SSR → `typeof window !== 'undefined'`
- Backticks aninhadas TS → mover `.replace()` para fora do template
- Zod → usar `.transform()` em schemas, não `.replace()` direto na string
- Portainer API `/api/auth` requer senha admin, não token PTR
- `docker stack deploy` compose v3 não aceita `restart_policy` — gerencia nativamente pelo Swarm
- `deploy.labels` do compose não aplica no container — usar `docker service update --label-add`
- Rede `public` `Attachable=false` — stacks CLI funcionam mas Portainer API bloqueia
### 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 | leantime:10.0.4.0/24 | design:10.0.5.0/24 | proxy:10.0.6.0/24`
## 🔑 Skills — estado 2026-05-20
- **13 módulos externos** (clawhub index): xcloud-docker-deploy, openclaw-config, next-best-practices, openclaw-ops, openclaw-agent-browser, obsidian-vault-linker, d2-diagram-creator, e2e-testing-patterns, taskflow — todos **✅ up-to-date**
- **7 com local changes**: agent-browser-clawdbot, vision, self-improvement, multi-search, redis-labs, nova-self-improver, typescript → avaliar `npx clawhub update --force <slug>`
- **7 workspace skills**: clean-code, gitea-api, nextjs-patterns, nova-self-improver, security, sql-toolkit, taskflow — gerenciadas localmente
### Template Canônico
- `pulse-docs/runbooks/swarm-stack-template.yml` — modelo oficial
- Rede: `public` (externa no compose) · Names sem prefixo · Caddy labels via CLI
- Detalhes → `pulse-docs/docs/docker-swarm-stacks.md`
## 🚀 Dev Environment Full-Stack (nova — 2026-05-20)
Stack Swarm `dev` com ambiente completo de desenvolvimento:
| Serviço | URL | Porta | Tipo |
|---------|-----|-------|------|
| TaskBoard | `board.octal.tec.br` | 80/443 | Kanban + logs em tempo real |
| Backend API | `api.octal.tec.br` | 3001 | Node + tsx watch (hot reload) |
| Frontend HMR | `frontend.octal.tec.br` | 5173 | Vite + React (hot reload) |
| Redis | fila `dev-tasks` | 6379 | Fila de tarefas + pub/sub |
### Agentes Paralelos (5 workers no Swarm)
| Agente | Réplicas | Papel |
|--------|----------|-------|
| `agent-frontend` | 2 | Frontend specialist (React + Vite) |
| `agent-backend` | 2 | Backend specialist (Node + tsx) |
| `agent-devops` | 1 | DevOps (Docker, Swarm, deploy) |
### Protocolo de Task Queue
- Fila: `BLPOP dev-tasks` — 60s timeout
- Canal pub/sub: `dev-logs` — logs agregados em tempo real
- Registro de agente: `HSET agent:<id> status role started_at current_task`
- Task: `SET task:<id>` + `RPUSH task-queue <id>`
## 🔔 Alerta: APT upgrades pendentes (~20 pacotes)
- libc6, dpkg, bash, bash-completion, libssl3, libgnutls, libglib2, libexif, libpq, libpng, liblcms2, libnghttp2, libopenjp2, libxslt
- Nenhuma falha apt — aguardando aprovação explícita para `apt upgrade`
## 📝 Obsidian Vault
- Caminho: `/root/Obsidian-Pulse/`
- Estrutura: Inbox, Projetos, Docker, Dev, Codex, Logs, Memorias, Templates
- Skill: [[🛠️ obsidian-vault-linker]] instalada
## 🔑 Lições High-Signal
- `flat(Infinity)` quebra tsup DTS → `flat(2)`
- `process.env` direto quebra SSR → `typeof window !== 'undefined'`
- Backticks aninhadas TS → `.replace()` por fora
- Zod `.transform()` para transformações de schema
- Portainer `ptr_` token ≠ JWT admin — usar senha admin para mutação
- `docker stack deploy` compose v3: `restart_policy` não é propriedade válida
- `deploy.labels` do compose não vira container labels → `docker service update --label-add`
- Rede `public` `Attachable=false` → stacks CLI OK, Portainer API bloqueia
- Agentes paralelos com Redis BLPOP funcionam como time full-stack
## 🗺️ Stacks Swarm (11 — incluindo dev)
| Stack | Criada por | Portas | Domínios |
|-------|------------|--------|----------|
| `git` | Portainer API | — | `git.octal.tec.br` |
| `bot` | Portainer API | — | `ai.octal.tec.br` |
| `database` | Portainer API | — | — |
| `design` | Portainer API | — | — |
| `dev` | `docker stack deploy` (nova) | http | `board / api / frontend` |
| `dock` | Portainer API | 80/443 | `dock.octal.tec.br` |
| `code` | Portainer API | — | — |
| `pro` | Portainer API | — | `manager.octal.tec.br` |
| `project` | `docker stack deploy` CLI | 80 | `games.octal.tec.br` |
| `proxy` | Portainer API | 80 | `test.octal.tec.br` |
## Repositórios Gitea
| Repo | Propósito | URL |
|------|-----------|-----|
| `pulse-memory` | Memórias diárias + LEARNINGS + ERRORS | https://git.octal.tec.br/Roberto/pulse-memory |
| `pulse-skills` | Skills organizadas por domínio | https://git.octal.tec.br/Roberto/pulse-skills |
| `pulse-docs` | Guias, runbooks, ADRs | https://git.octal.tec.br/Roberto/pulse-docs |
| `pulse-projects` | Rastreador de projetos | https://git.octal.tec.br/Roberto/pulse-projects |
| **pulse-dev** | **Nova stack + código (commit em workspace)** | — |
## 🎨 Design System & Web3D (nova — 2026-05-20)
- `pulse-3d-landing/` — Landing Page 3D completa (Atomic Design + Three.js)
- Atoms (11): Button, Badge, Card, Divider, GradientText, FloatingText, LightGlow, ThemeToggle, Typography, FloatingMesh, ParticleField
- Molecules (3): FloatingMesh, ParticleField, FeatureCard3d
- Organisms (2): HeroScene3d, FeaturesScene3d
- Templates (2): SceneCanvas (R3F Canvas), ThreePage (canvas + overlay)
- Pages: App.tsx com Hero + Features + About + CTA
- Tokens: space, font, color, shadow, radius, **material3d**, **camera3d**, **animation** (8 domínios)
- Stack: Vite + React 18 + TS + @react-three/fiber + drei + framer-motion
- npm install + build OK
- Dev: `cd pulse-3d-landing && npm run dev`
## 📦 @pulse-libs/ui — Design System Compartilhado (2026-05-20)
- **Repo**: https://git.octal.tec.br/Roberto/pulse-libs
- **30 arquivos TS** — Atoms(10) · Molecules(3) · Organisms(4) · Templates(3) · Lib(1) + indices
- Atoms 2D: Button, Badge, Card, GradientText, Divider, ThemeToggle
- Atoms 3D stubs: FloatingMesh3d, ParticleField3d, LightGlow3d, FloatingText3d (deprecated)
- Molecules: FeatureCard, Navbar, Footer
- Organisms: HeroSection, FeaturesGrid, CtaBlock, StatsGrid
- Templates: MainLayout, MinimalLayout, PageWithSidebar
- TOKENS export: color / space / radius constants em TypeScript
- Uso: projetos importam do path `../libs/pulse-libs/src/` ou como submodule
- Ligado aos projetos: pulse-3d-landing, test-octal (landing page)
- `/root/Obsidian-Pulse/` — 7 pastas (Inbox, Projetos, Docker, Dev, Codex, Logs, Memorias, Templates)
- Skill obsidian-vault-linker instalada