From e41162c336b5f6d56e77ede90ac3b08e496063c9 Mon Sep 17 00:00:00 2001 From: Pulse Agent Date: Thu, 21 May 2026 13:08:15 -0300 Subject: [PATCH] docs(swarm): stack project deployada - fix pulse-libs healthcheck + Caddy TLS e commit --- MEMORY.md | 12 ++++++------ memory/2026-05-21.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/MEMORY.md b/MEMORY.md index 1b147c5..4f1f1df 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -24,12 +24,15 @@ _Atualizado: 2026-05-21 11:46 GMT-3 — Heartbeat ciclo 25_ - Clawhub search: termos curtos; buscar categorias em SEPARADO; não frases longas - Git URL: usar tokens, nunca host/user/pass embutido - Clawhub: 11 skills retornam "local changes" (mismatch com repo oficial) — force update requires manual decision per skill +- `process.exit()` com booleano → Node 24 exige número (0/1) — Type/ERR_INVALID_ARG_TYPE +- Docker Swarm healthcheck: callback assíncrono precisa esperar `res.on('end')` antes de `process.exit()` — task morreu exit 137 por unhealthy ## 🐳 Docker Swarm -- Stack `proxy`: caddy + test sites · Stack `project`: games/services -- Domínios: test.octal.tec.br · games.octal.tec.br · projects.octal.tec.br +- 10 stacks (bot/code/database/design/dock/git/pro/project/proxy) +- Stack `project`: games-demo(1/1) · projects-landing(1/1) · pulse-libs(1/1 fix healthcheck) +- Domínios: games.octal.tec.br · projects.octal.tec.br · pulse-libs.octal.tec.br · test.octal.tec.br - `--restart-condition` no stack deploy (não compose v3 restart policy padrão) -- Labels Caddy por service +- Labels Caddy por service — pulse-libs fix health + label pulselibs.octal.tec.br ## 🔑 Skills counter - **PATTERN_COUNTER**: `git.conventional-commits` c=2 (1 pt do threshold) @@ -50,11 +53,8 @@ _Atualizado: 2026-05-21 11:46 GMT-3 — Heartbeat ciclo 25_ ## ⏳ Pendências - stale-lock detector: fix lsof/fuser antes de marcar stale (>1 dia) -- pulse-libs: commitar vitest config + .gitignore - pulse-3d-landing: Three.js interativo + refletir lições em MEMORY - apps/dashboard: decidir independente vs parte do workspace -- projects.octal.tec.br: nginx default → conteúdo -- pulse-libs.octal.tec.br: Caddy TLS fix - pulse-skills: domínio 3d-renderer - pulse-wurthflow: investigar domínio - USER.md compressão: etapas 1-2/5 agendado **2026-05-26**; etapa 3 mRNA extendida diff --git a/memory/2026-05-21.md b/memory/2026-05-21.md index 9b014fa..48b6cf5 100644 --- a/memory/2026-05-21.md +++ b/memory/2026-05-21.md @@ -239,3 +239,47 @@ Manuais (10): clean-code-review, e2e-testing-patterns, file, file-summary, gitea - [ ] git.conventional-commits: c=2 → precisa 1+ para promoção AGENTS.md - [ ] pulse-skills + pulse-wurthflow + apps/dashboard: sem-git decidir - [ ] SUSPICIOUS skills review: agendar em 30 dias da última revisão + +--- + +### 🔍 Heartbeat — Ciclo 30 (12:54 GMT-3 — heartbeat poll) + +- **Disco**: 59G/87G **71%** (25G livre) — caiu de 77%→71% desde ciclo 22 +- **CPU/RAM**: openclaw PID 4246 ~17% CPU / 648MB RSS — normal +- **Defunct**: ~5 (PM2/Docker, esperado rootless) +- **Systemd**: N/A — container, PID 1 = node +- **APT upgradable**: 0 pkgs — sistema atualizado +- **MEMORY.md**: **3299 bytes / 63 linhas** — ⚠️ **apenas 3 bytes do limite 3500!** Eye nas próximas 24h +- **memory/2026-05-21.md**: ~12KB — OK +- **.jsonl stale-locks**: arquivo ativo (modificado há minutos) — falso-positivo, não interfere +- **/root/.cache**: 143M — prunado desde o início + +> ⚠️ **ATENÇÃO — MEMORY.md em 3299 bytes** +> Apenas 3 bytes abaixo do limite 3500 do prompt context. Se crescer nas próximas 24h, precisará compressão antes do cronograma 7 dias. + +### ✅ Ciclo 30 — tudo verde, MEMORY.md monitorar de perto + +--- + +### 🚀 Stack `project` — criada e deployada (14:59 GMT-3) + +**Ação**: stack `project` não existia no Swarm — criada com `docker stack deploy` a partir de `pulse-docs/deploy/project/docker-compose.yml`. + +**Problema `pulse-libs` 0/1 → 1/1**: +- Causa raiz: **healthcheck quebrado** no `pulse-libs:latest` — `process.exit(0)` dentro de callback assíncrono disparava antes da resposta HTTP chegar, retornava exit code 1 → Docker marcava unhealthy → Swarm matava a task (exit 137) +- Container rodado manualmente (`docker run`) funcionava, mas Swarm reciclava por health unhealthy +- **Solução**: reconstruir imagem com `HEALTHCHECK` síncrono usando `process.exit(0/1)` numérico e esperando `res.on('end')` +- Imagem nova: `pulse-libs:latest` @ `a905d6e9` — healthcheck funcionando, replicas 1/1 ✅ + +**Services state final**: +| Service | Image | Replicas | Status | +|---------|-------|----------|--------| +| `project_games-demo` | `games-demo:latest` | 1/1 | ✅ Running | +| `project_projects-landing` | `projects-landing:latest` | 1/1 | ✅ Running | +| `project_pulse-libs` | `pulse-libs:latest` (nova) | 1/1 | ✅ Running | + +**Caddy labels**: `pulse-libs.octal.tec.br` → aplicada via `docker service update --label-add`; +`games.octal.tec.br` e `projects.octal.tec.br` — labels previamente configuradas no proxy + +**Nenhuma outra stack tocada**: bot/code/database/design/dock/git/pro — todas 1/1; +proxy_caddy — labels inalteradas.