ligbox-ops-platform/.cursor/rules/spec-driver-sync.mdc
Ligbox Spec Hub 6c94a77277 feat(forgejo): 47 milestones por spec + sync issues
Script sync-forgejo-milestones.py; redirect /milestones no Forgejo;
docs CT130 e spec-driver-sync actualizados.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-02 17:07:24 +00:00

102 lines
3.8 KiB
Text

---
description: Sincronização imediata Spec → Spec Driver, chat-bruto, Forgejo e GitHub
globs: specs/**/*,chat-bruto/**/*,portal/**/*
alwaysApply: true
---
# Spec Driver — sincronização imediata (Roger)
**Spec Driver** = portal [spec.ligbox.com.br](https://spec.ligbox.com.br) + browser `/specs/` + sidebars + inventário VMs.
Sempre que **criar, ampliar ou modificar** qualquer spec (`specs/NNN-*`), **na mesma sessão**, antes de encerrar a tarefa:
## 1. Spec Kit (conteúdo)
- Atualizar artefatos SDD: `spec.md`, `tasks.md`, `plan.md`, `quickstart.md`, `contracts/` conforme a mudança.
- Em `spec.md`, secção **Decisões** / **Histórico** com o que foi decidido (data + resumo).
- Se houve discussão em chat: **salvar chat bruto** em `chat-bruto/` e referenciar na spec.
## 2. Chat bruto (obrigatório se existir discussão)
- Salvar em `chat-bruto/CHAT_BRUTO_<TEMA>_SPEC<NNN>_YYYYMMDD.txt` (e `.jsonl` se disponível).
- Atualizar ou criar `chat-bruto/CHAT_BRUTO_*_INDICE.txt` com link para a spec e ficheiros.
- Na spec, link explícito: `Ver chat bruto: chat-bruto/...`
- Copiar espelho para `obsidian-vault/ligbox-ops-platform/chat-bruto/` no CT130 quando aplicável.
## 3. Spec Driver (portal CT130) — imediato
No CT130 (`10.10.10.130`), após alterações no repo:
```bash
cd /opt/ligbox-spec-hub
./portal/refresh-spec-driver.sh
```
O script deve:
1. `generate-sidebars.sh` → `_sidebar.md`
2. `generate-specs-portal.py` → `/specs/index.html` (menu com **todas** as specs que têm `spec.md`, auto-descoberta)
3. Incluir **todos** os ficheiros em `chat-bruto/` no menu lateral
4. Atualizar contagem na homepage se existir placeholder estático
**Nunca** deixar specs novas só no disco sem regenerar o portal.
## 4. Git — Forgejo (fonte de verdade primária)
Repositório: `https://git.spec.ligbox.com.br/ligbox/ligbox-ops-platform`
**Branches:** trabalho em `develop` · release via **PR → `main`** (push directo a `main` bloqueado).
Ver `docs/GIT_WORKFLOW.md`.
```bash
git checkout develop && git pull origin develop
# ... commits ...
git push origin develop
# PR develop → main no Forgejo após smoke GREEN
```
Incluir no commit (quando aplicável):
- `specs/NNN-*/`
- `chat-bruto/`
- `contracts/`
- `docs/vms/` se VM inventário mudou
- `_sidebar.md` gerado
- `portal/html/specs/index.html` gerado
```bash
git add specs/ chat-bruto/ contracts/ docs/vms/ _sidebar.md portal/html/specs/index.html
git commit -m "spec NNN: <resumo da decisão>"
git push origin main
```
Esta regra **autoriza commit automático** para mudanças de spec (exceção à regra geral de só commitar quando pedido).
## 5. GitHub (espelho / segunda fonte de verdade)
Após push Forgejo, espelhar para GitHub (modelo de suporte + backup):
```bash
git push github main # remote `github` — mirror ligbox-ops-platform
```
Se `github` remote não existir, criar mirror ou `git push` para repo `itecnologys/ligbox-ops-platform` (confirmar URL com Roger).
GitHub **não substitui** Forgejo; é réplica read-only ou bidirecional acordada.
## 6. Checklist de saída (não dispensar)
- [ ] `SESSION-CHECKPOINT.md` actualizado (ver `spec-session-handoff.mdc`)
- [ ] `tasks.md` sincronizado (`[x]` / `[ ]`)
- [ ] Spec reflete decisões do chat
- [ ] Chat bruto salvo e linkado (se houve discussão)
- [ ] `refresh-spec-driver.sh` executado no CT130
- [ ] Spec visível em https://spec.ligbox.com.br/specs/
- [ ] Commit + push Forgejo
- [ ] Se `tasks.md` mudou → `python3 scripts/sync-tasks-to-forgejo-issues.py`
- [ ] Se spec nova → `python3 scripts/sync-forgejo-milestones.py`
- [ ] Push/mirror GitHub
## 7. Falhas conhecidas a evitar
- Menu `/specs/` com lista hardcoded sem auto-descoberta → corrigir em `generate-specs-portal.py`
- Spec no repo mas portal mostra contagem antiga → regenerar portal
- Chat bruto só no laptop → não conta; tem de estar no repo + portal