--- description: Desk VM122 release — deploy atómico UI+API, smoke GREEN, credenciais VM112 globs: projects/ops-desk/**/*,deploy/desk-staging-modern/**/*,deploy/vm112-wizard/**/* alwaysApply: true --- # Desk Release — Roger / Ligbox (anti-divergência) **Problema:** UI em produção sem API, ou API sem assets → 404, wizard quebrado, páginas híbridas. **Métrica única:** `DESK_RELEASE=GREEN` após `./deploy/desk-staging-modern/smoke-desk.sh`. ## Definição: «Sincronizado» **Sincronizado** só quando **todos** estes critérios são verdadeiros: | # | Critério | Verificação | |---|----------|-------------| | 1 | Mesmo commit em VM130 (Forgejo `main`) | `git rev-parse HEAD` no repo | | 2 | Mesmo deploy em VM122 (Desk) | `./deploy-desk-full.sh` executado com esse commit | | 3 | Mesmo deploy em VM112 (wizard, se tocado) | `deploy-wizard-vm112-smoke.sh` GREEN | | 4 | Smoke GREEN | `DESK_RELEASE=GREEN` | | 5 | Checkpoint actualizado | `SESSION-CHECKPOINT.md` com hash + data + smoke | **Chat bonito sem deploy não conta.** Código no disco sem commit, ou commit sem deploy, ou deploy sem smoke = **NÃO sincronizado**. ## Credenciais SSH (root) | VM | IP LAN | SSH WAN | Senha root | |----|--------|---------|------------| | **VM122** Desk | `10.10.10.122` | `95.216.14.146:2522` | `805353` | | **VM130** Obsidian | `10.10.10.130` | — | `805353` | | **VM112** Wizard | `10.10.10.112` | `95.216.14.146:2512` | **`@betinplace`** | **VM112 ≠ VM122:** nunca usar `805353` na VM112. Env: `VM112_SSH_PASS=@betinplace`. ## Regras obrigatórias 1. **Nunca** `docker cp` parcial (só `index.html` ou só `app.staging.js`). 2. **Sempre** `deploy/desk-staging-modern/deploy-desk-full.sh` para produção Desk (API + frontend + catálogo RBAC). 3. **Sempre** smoke GREEN antes de declarar "feito" ou actualizar checkpoint. 4. **Git `develop` → PR → `main`** = fonte de verdade; ver `docs/GIT_WORKFLOW.md`. 5. Alterações VM112 wizard → `deploy/vm112-wizard/deploy-wizard-vm112-smoke.sh` (carbonio `list_all_domains`). ## Comandos canónicos ```bash cd /opt/ligbox-spec-hub/repos/ligbox-ops-platform/deploy/desk-staging-modern # Produção completa (um comando) ./deploy-desk-full.sh # Só smoke (sem deploy) ./smoke-desk.sh https://desk.ligbox.com.br # VM112 wizard (Serviços IaaS / domínios) ../vm112-wizard/deploy-wizard-vm112-smoke.sh ``` ## Pacote mínimo (não omitir) **API:** `governance_routes.py`, `desk_governance_store.py`, `action_catalog.py`, `main.py`, `ops_inbox_*`, `email_relay_*` **UI:** `user-wizard.js`, `operational-feed.js`, `access-control-*`, `ligbox-ds.css`, `agentic-ops.js` (≥1200 linhas) **Catálogo:** `specs/039-ligbox-ops-authorization-catalog/contracts/action-catalog.yaml` ## Checkpoint Ao encerrar sessão Desk: `git rev-parse --short HEAD` + resultado smoke no `SESSION-CHECKPOINT.md` da spec activa. --- ## Checklist único — qualquer deploy novo **Ordem obrigatória.** Saltar um passo = NÃO sincronizado. | # | Passo | Comando / acção | |---|-------|-----------------| | 1 | Código em `develop` | `git checkout develop && git pull` | | 2 | Commit | `git commit` (UI + API juntos se Desk) | | 3 | Push + PR → `main` | Forgejo: PR `develop` → `main`, merge | | 4 | Pull `main` local | `git checkout main && git pull origin main` | | 5 | **Deploy VM122** | `./deploy/desk-staging-modern/deploy-desk-full.sh` | | 6 | **Smoke Desk GREEN** | `DESK_RELEASE=GREEN` | | 7 | **Deploy VM123** (se finance/console) | `./deploy/vm123-finance-modern/deploy-vm123-full.sh` | | 8 | **Smoke Finance GREEN** | `FINANCE_RELEASE=GREEN` | | 9 | **VM112** (se wizard) | `deploy/vm112-wizard/deploy-wizard-vm112-smoke.sh` | | 10 | Forgejo issues | `python3 scripts/sync-tasks-to-forgejo-issues.py` (se `tasks.md` mudou) | | 11 | Checkpoint | `SESSION-CHECKPOINT.md` + hash commit + smoke | | 12 | Portal | `./portal/refresh-spec-driver.sh` (CT130, se spec mudou) | **Proibido:** `docker cp` parcial · push directo a `main` · declarar "feito" sem smoke · VM112 com senha `805353`. **Rules por VM:** `desk-deploy-release.mdc` (122) · `vm123-deploy-release.mdc` (123) · VM112 em desk rule. **Doc completa:** `docs/GIT_WORKFLOW.md` · `docs/vms/CT130.md` · `deploy/vm123-finance-modern/README.md`