Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ab8bf1d9be | ||
|
|
f335e83ec3 | ||
|
|
75041136d2 | ||
|
|
0ff519f554 | ||
|
|
066dfbfeb8 |
+12
@@ -41,6 +41,18 @@ yarn-error.log*
|
||||
*.tsbuildinfo
|
||||
next-env.d.ts
|
||||
|
||||
# Estado local de ferramentas
|
||||
.aionrs/
|
||||
.claude/settings.local.json
|
||||
.claude/cache/
|
||||
.claude/skills/
|
||||
.gemini/
|
||||
.ijfw/
|
||||
graphify-out/
|
||||
|
||||
# Backups do editor draw.io
|
||||
.xdp-*
|
||||
|
||||
# IJFW — working memory por-hook (Tier 1), nunca versionada
|
||||
.ijfw/
|
||||
ijfw/
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
---
|
||||
type: Document
|
||||
title: Agents
|
||||
description: Este documento define o papel, limites e responsabilidades dos agentes
|
||||
de IA (Gemini CLI, Claude Code, Hermes) a operar …
|
||||
timestamp: 2026-05-13 11:28:03.523803+00:00
|
||||
tags:
|
||||
- dev
|
||||
- codigo
|
||||
- governance
|
||||
- 5w2h
|
||||
- roles
|
||||
- escalacao
|
||||
- relacionamentos
|
||||
---
|
||||
# AGENTS.md — Governance de Agentes IA
|
||||
|
||||
## Definição
|
||||
Este documento define o papel, limites e responsabilidades dos agentes de IA (Gemini CLI, Claude Code, Hermes) a operar neste repositório.
|
||||
|
||||
## Identidade do Projecto
|
||||
- **Repositório**: bi-descomplicar
|
||||
- **Localização**: `/media/ealmeida/Dados/Dev/bi-descomplicar/`
|
||||
- **CRM**: Ver `desk.project` para referência do projecto
|
||||
- **Domínio CARL**: `BI-DESCOMPLICAR` (ou conforme CRM)
|
||||
|
||||
## Directrizes de Operação
|
||||
|
||||
### 1. PT-PT e Precisão
|
||||
Toda a interacção, comentários, commits e documentação devem ser em português europeu, com acentos e cedilhas.
|
||||
|
||||
### 2. MCP-first
|
||||
- **CRM (Desk Project Minimal)**: Consultar/actualizar task #2134 via MCP
|
||||
- **Gitea (MCP Gitea)**: Commits e gestão de versões via MCP
|
||||
- **CARL (MCP CARL)**: Consultar domínio `MODELO-ORGANIZACAO` para regras do modelo
|
||||
- **SSH (MCP SSH Unificado)**: Apenas se necessário para validação remota
|
||||
|
||||
### 3. Ciclo de Trabalho Obrigatório
|
||||
1. **Validar contexto** — ler AGENTS.md + MEMORY.md + desk.project
|
||||
2. **Consultar CARL** — verificar regras do domínio `MODELO-ORGANIZACAO`
|
||||
3. **Executar** — seguir o standard ESTRUTURA.md
|
||||
4. **Validar** — correr `scripts/validate-structure.sh` se disponível
|
||||
5. **Registar** — actualizar MEMORY.md e CRM
|
||||
|
||||
### 4. Validação Obrigatória
|
||||
Nunca dar uma tarefa como concluída sem validar o estado via shell ou MCP.
|
||||
Este projecto é o modelo canónico — qualquer alteração aqui propaga-se a todos os outros.
|
||||
|
||||
### 5. CARL
|
||||
Respeitar o domínio `MODELO-ORGANIZACAO` no CARL. As regras lá definidas têm precedência sobre documentação local em caso de conflito.
|
||||
|
||||
## O Que Este Projecto Contém
|
||||
|
||||
| Ficheiro | Função |
|
||||
|---|---|
|
||||
| `ESTRUTURA.md` | Standard de hierarquia obrigatório para projectos |
|
||||
| `GOVERNANCA.md` | Manifesto de qualidade e conduta DEV |
|
||||
| `PROTOCOLO-CRM.md` | Integração Lean Gitea & Desk CRM |
|
||||
| `INSTRUCOES.md` | Visão geral e próximos passos |
|
||||
| `MEMORY.md` | Registo cronológico de sessões |
|
||||
| `AGENTS.md` | (Este ficheiro) Governance de agentes |
|
||||
| `desk.project` | Ancoragem CRM (task #2134) |
|
||||
| `scripts/validate-structure.sh` | Validação automática de conformidade |
|
||||
|
||||
## Regra Anti-Pattern
|
||||
- **Não** criar pastas `docs/PROC` ou `docs/RUNBOOK` — vivem no Hub centralizado
|
||||
- **Não** duplicar procedimentos que existem em `06-Operacoes/Procedimentos/`
|
||||
- **Não** saltar a validação MEMORY.md no final da sessão
|
||||
|
||||
## Relacionamentos Direccionais
|
||||
|
||||
### Depende De
|
||||
- [[../../Hub/06-Operacoes]] - Hub operacional central com procedimentos
|
||||
- [[../../Hub/04-Stack]] - Decisões técnicas e stack Descomplicar
|
||||
|
||||
### Suporta
|
||||
- [[../../Hub/05-Projectos/Modelo-Organizacao-Proc-Dev/ESTRUTURA.md]] - Modelo de projectos
|
||||
|
||||
### Documenta
|
||||
- [[../../Hub/06-Operacoes/Procedimentos/]] - Procedimentos operacionais
|
||||
|
||||
### Implementação
|
||||
- [[.]] - Código-fonte e implementação do projecto
|
||||
### Relacionado Com
|
||||
- [[../../Hub/04-Stack]] - Stack técnico partilhado
|
||||
|
||||
### Procedimento
|
||||
- [[../../Hub/06-Operacoes/Procedimentos/D7-Tecnologia/Sistema/PROC-Desk-Subtarefas-Dependencias.md]] - Modelo de subtarefas
|
||||
|
||||
### Herança
|
||||
- [[../../Hub/05-Projectos/Modelo-Organizacao-Proc-Dev/ESTRUTURA.md]] - Estrutura canónica
|
||||
|
||||
## Histórico de Intervenções
|
||||
|
||||
| Data | Agente | Acção |
|
||||
|---|---|---|
|
||||
| 2026-05-13 | Gemini CLI | Criação da estrutura base de governance |
|
||||
| 2026-05-13 | Izito (Hermes) | Correção estrutural, criação CARL, script de validação |
|
||||
+35
-15
@@ -52,22 +52,42 @@ e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/).
|
||||
- Audit Report: `AUDIT-REPORT.md`
|
||||
- Security Fix Details: `SECURITY-FIX.md`
|
||||
- Regra #47: Security Audit Pre-Commit (CLAUDE.md v9.12)
|
||||
|
||||
---
|
||||
layer: wiki
|
||||
type: Changelog
|
||||
tags: [projecto, modelo, organizacao, changelog]
|
||||
title: Changelog
|
||||
description: >-
|
||||
`docs/audit/audit.md` — log de auditorias (AUDIT-ECO #001 registada)
|
||||
timestamp: 2026-05-16T19:22:44.218347+00:00
|
||||
---
|
||||
# CHANGELOG — Modelo-Organizacao-Proc-Dev
|
||||
|
||||
## [0.1.0] - 2026-02-13
|
||||
|
||||
## 1.1.0 — 2026-05-16
|
||||
### Adicionado
|
||||
- Dashboard inicial com métricas GA4 e GSC
|
||||
- Integração Prisma multi-schema (staging/production)
|
||||
- Componentes shadcn/ui customizados
|
||||
- Dockerfile multi-stage optimizado
|
||||
- Health check endpoint
|
||||
- ESLint + TypeScript strict mode
|
||||
- `docs/audit/audit.md` — log de auditorias (AUDIT-ECO #001 registada)
|
||||
- `docs/audit/findings/F-001-hermes-mcps-incompletos.md` (High)
|
||||
- `docs/audit/findings/F-002-gemini-mcps-parciais.md` (Medium)
|
||||
- `scripts/propagate-structure.sh` — script idempotente de propagação da estrutura standard
|
||||
|
||||
### Infraestrutura
|
||||
- Next.js 16 App Router
|
||||
- React 19
|
||||
- Tailwind CSS 4
|
||||
- Recharts para gráficos
|
||||
- PostgreSQL com Prisma ORM
|
||||
### Modificado
|
||||
- `STATUS.md` v1.1 — próximos passos focados nos findings F-001/F-002
|
||||
- `MEMORY.md` — entrada da sessão de auditoria
|
||||
- `CARL` MODELO-ORGANIZACAO — recall expandido 7 → 27 keywords
|
||||
|
||||
## 1.0.0 — 2026-05-16
|
||||
### Adicionado
|
||||
- `ECOSYSTEM.md` — fonte de verdade comum do ecossistema multi-agente
|
||||
- `PROC-DEV-STANDARD.md` (D7-SIS-006) — protocolo de desenvolvimento ciclo completo
|
||||
- `PROC-AUDIT-STANDARD.md` (D7-SIS-007) — protocolo de auditoria (4 tipos)
|
||||
- `docs/SPECS/PROC-DEV-STANDARD-ref.md` — referência rápida do PROC
|
||||
- `STATUS.md` — estado vivo do projecto
|
||||
- `CHANGELOG.md` — este ficheiro
|
||||
|
||||
### Modificado
|
||||
- `GEMINI.md` — worklog markdown, STATUS.md, Gitea/Desk, Regra 48
|
||||
- `Hermes/AGENTS.md` — STATUS.md, CARL, worklog, Regra 48
|
||||
- `OpenCode/AGENTS.md` — protocolo completo + `opencode.json` desk-crm-v3 activado
|
||||
- `CLAUDE.md` — Regra 20 STATUS.md adicionada
|
||||
- `MEMORY.md` — entrada 2026-05-16
|
||||
- `CARL` — domínio `MODELO-ORGANIZACAO` com 9 regras
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Document
|
||||
title: "Ciclo de Vida de Projecto — Sequência Obrigatória"
|
||||
description: >-
|
||||
Sequência canónica de todas as fases de um projecto Descomplicar — da ideia
|
||||
ao deploy. Obrigatória para todos os projectos, com ou sem código.
|
||||
tags: [projecto, ciclo-vida, sequencia, obrigatorio, spec, brainstorming, deploy]
|
||||
timestamp: 2026-06-29T23:00:00+01:00
|
||||
status: active
|
||||
---
|
||||
|
||||
# Ciclo de Vida de Projecto — Sequência Obrigatória
|
||||
|
||||
> **Regra de ouro:** Nunca saltar fases. Cada fase produz um artefacto concreto.
|
||||
> Sem artefacto → fase não concluída → não avançar.
|
||||
|
||||
---
|
||||
|
||||
## A Sequência
|
||||
|
||||
```
|
||||
1. IDEIA
|
||||
↓
|
||||
2. BRIEFING
|
||||
↓
|
||||
3. PESQUISA ← obrigatória (Web + NLM + Mem0 + Wiki)
|
||||
↓
|
||||
4. BRAINSTORMING
|
||||
↓
|
||||
5. SPEC (aprovada por Emanuel)
|
||||
↓
|
||||
6. PLAN (validado antes de tocar em código)
|
||||
↓
|
||||
7. REPO GIT (se projecto com código)
|
||||
↓
|
||||
8. IMPLEMENTAÇÃO
|
||||
↓
|
||||
9. CI/CD (se aplicável — paralelo ao deploy)
|
||||
↓
|
||||
10. DEPLOY
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Detalhe por Fase
|
||||
|
||||
### 1. Ideia
|
||||
- Capturar em `00-Inbox/` do Hub ou comentário Desk
|
||||
- **Artefacto:** nota de ideia (1 parágrafo mínimo)
|
||||
|
||||
### 2. Briefing
|
||||
- Definir: contexto, problema, objectivo, stakeholders, restrições
|
||||
- Registar no Desk CRM como tarefa ou ticket
|
||||
- **Artefacto:** `docs/SPECS/BRIEF.md` ou comentário Desk
|
||||
|
||||
### **3. Pesquisa — OBRIGATÓRIA** ⚠️
|
||||
Antes de qualquer decisão de arquitectura ou implementação:
|
||||
|
||||
| Fonte | O que pesquisar |
|
||||
|-------|----------------|
|
||||
| **Web** | Estado da arte, soluções existentes, benchmarks |
|
||||
| **NotebookLM** | Notebooks temáticos relevantes |
|
||||
| **Mem0** | `search_memories("contexto do projecto")` — o que já sabemos |
|
||||
| **Wiki IJFW** | Conhecimento curado existente |
|
||||
| **Hub** | PROCs, QRs, decisões anteriores relacionadas |
|
||||
|
||||
> **Regra:** Se a pesquisa revelar que a solução já existe → usar o que existe, não reinventar.
|
||||
- **Artefacto:** notas de pesquisa em `docs/` ou resumo no BRIEF
|
||||
|
||||
### 4. Brainstorming
|
||||
- Explorar abordagens alternativas
|
||||
- Avaliar trade-offs com evidência da pesquisa
|
||||
- Envolver Mem0 para contexto de decisões passadas
|
||||
- **Artefacto:** `docs/PLANS/BRAINSTORM.md` com opções e decisão
|
||||
|
||||
### 5. SPEC
|
||||
- Especificação completa: arquitectura, componentes, interfaces, critérios de aceitação
|
||||
- **Aprovação explícita por Emanuel antes de avançar**
|
||||
- **Artefacto:** `docs/SPECS/SPEC.md` com status `approved`
|
||||
|
||||
### 6. Plan
|
||||
- Plano de implementação detalhado: fases, tarefas, dependências, estimativas
|
||||
- Validação humana antes de tocar em código
|
||||
- Registar tarefas no Desk CRM
|
||||
- **Artefacto:** `docs/PLANS/PLAN.md` + tarefas Desk
|
||||
|
||||
### 7. Repo Git
|
||||
- Criar repositório em `git.descomplicar.pt` (Gitea)
|
||||
- Seguir PROC INF-EZP-001 para deploy no EasyPanel
|
||||
- Configurar `.desk-project` na raiz
|
||||
- **Artefacto:** repo criado, README.md inicial, estrutura XDP-PRJ-001
|
||||
|
||||
### 8. Implementação
|
||||
- Seguir o PLAN por fases
|
||||
- Registar progresso em `MEMORY.md` por sessão
|
||||
- Cada decisão arquitectural → comentário Desk
|
||||
- **Artefacto:** código funcional + testes
|
||||
|
||||
### 9. CI/CD *(se aplicável)*
|
||||
- Configurar via Gitea Actions → EasyPanel webhook
|
||||
- Ver `PROC-Gitea-Runners-CICD.md`
|
||||
- **Artefacto:** pipeline funcional com deploy automático
|
||||
|
||||
### 10. Deploy
|
||||
- Seguir PROC INF-EZP-001 (EasyPanel) ou PROC adequado
|
||||
- Validar com E2E após deploy
|
||||
- Actualizar `STATUS.md` → estado `deployed`
|
||||
- **Artefacto:** serviço em produção + STATUS.md actualizado
|
||||
|
||||
---
|
||||
|
||||
## Artefactos por Fase (resumo)
|
||||
|
||||
| Fase | Artefacto obrigatório |
|
||||
|------|----------------------|
|
||||
| Ideia | Nota capturada |
|
||||
| Briefing | BRIEF.md ou comentário Desk |
|
||||
| **Pesquisa** | **Notas de pesquisa (Web + NLM + Mem0 + Wiki)** |
|
||||
| Brainstorming | BRAINSTORM.md com decisão |
|
||||
| SPEC | SPEC.md aprovada |
|
||||
| Plan | PLAN.md + tarefas Desk |
|
||||
| Repo Git | Repositório Gitea + estrutura |
|
||||
| Implementação | Código + testes + MEMORY.md |
|
||||
| CI/CD | Pipeline funcional |
|
||||
| Deploy | Serviço em produção + STATUS.md |
|
||||
|
||||
---
|
||||
|
||||
## Anti-Padrões (proibido)
|
||||
|
||||
- ❌ Começar a implementar sem SPEC aprovada
|
||||
- ❌ Saltar a pesquisa — "já sei o que fazer"
|
||||
- ❌ Deploy sem testes passados
|
||||
- ❌ Criar repositório antes do PLAN estar validado
|
||||
- ❌ Reinventar o que já existe (Mem0 evita isto)
|
||||
|
||||
---
|
||||
|
||||
## Referências
|
||||
|
||||
- `PROC-Estrutura-Pasta-Projecto.md` (XDP-PRJ-001) — ficheiros obrigatórios por pasta
|
||||
- `06-Operacoes/Procedimentos/D7-Tecnologia/Infraestrutura/PROC-EasyPanel-Deployment.md` — deploy
|
||||
- `06-Operacoes/Procedimentos/D7-Tecnologia/Infraestrutura/PROC-Gitea-Runners-CICD.md` — CI/CD
|
||||
|
||||
---
|
||||
|
||||
*Criado: 29-06-2026 | Descomplicar® | Sequência obrigatória para todos os projectos*
|
||||
@@ -0,0 +1,89 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Document
|
||||
tags: [projecto, modelo, organizacao, estrutura]
|
||||
title: Estrutura
|
||||
description: >-
|
||||
Este documento define a estrutura de pastas e ficheiros obrigatória para todos os projectos do ecossistema Descomplicar®…
|
||||
timestamp: 2026-05-13T11:27:31.572569+00:00
|
||||
---
|
||||
# ESTRUTURA.md — Standard de Hierarquia de Projectos
|
||||
|
||||
## Introdução
|
||||
Este documento define a estrutura de pastas e ficheiros obrigatória para todos os projectos do ecossistema Descomplicar®. A consistência da estrutura permite que agentes de IA e programadores transitem entre projectos com atrito zero.
|
||||
|
||||
## Hierarquia Base (Root)
|
||||
|
||||
```text
|
||||
/ (root)
|
||||
├── docs/ # Documentação específica do projecto
|
||||
│ ├── PLANS/ # Planos de acção e roadmaps específicos
|
||||
│ └── SPECS/ # Especificações técnicas e requisitos do projecto
|
||||
├── scripts/ # Scripts de automação local (opcional)
|
||||
├── tests/ # Testes globais ou de integração
|
||||
├── index.md # Navegação OKF — links only, minúsculas (Obsidian + Wayland)
|
||||
├── AGENTS.md # Contexto para agentes IA — 5W2H + relacionamentos (Wayland, Hermes, Claude, OpenCode)
|
||||
├── CLAUDE.md # Instruções específicas para Claude Code
|
||||
├── GEMINI.md # Instruções específicas para Gemini CLI
|
||||
├── STATUS.md # Estado actual — PDCA (Plan/Do/Check/Act)
|
||||
├── CHANGELOG.md # Histórico de versões e decisões
|
||||
├── MEMORY.md # Factos duráveis, decisões, workarounds (append-only)
|
||||
├── README.md # Visão geral humana — o que é, porquê existe
|
||||
├── desk.project # Ligação ao Desk CRM (JSON)
|
||||
└── ... # Ficheiros de código (src, backend, frontend, etc.)
|
||||
```
|
||||
|
||||
**Nota:** PROCs e RUNBOOKs NÃO residem aqui. Consultar `06-Operacoes/Procedimentos/` e `06-Operacoes/Runbooks/` no Hub — são a fonte de verdade centralizada.
|
||||
|
||||
## Definição de Directórios e Ficheiros Críticos
|
||||
|
||||
### 1. `/docs`
|
||||
Documentação que vive e morre com o projecto.
|
||||
- **PLANS/**: Documentos que descrevem "o que vamos fazer" neste projecto (ex: `PLANS/PLAN-MIGRACAO-DB.md`).
|
||||
- **SPECS/**: Definições técnicas, diagramas de arquitectura e contratos de API específicos.
|
||||
|
||||
### 2. Documentação Centralizada (Externo ao Projecto)
|
||||
Os procedimentos operacionais e manuais de manutenção não residem na pasta do projecto para evitar duplicação e garantir que todos seguem a versão mais recente (Single Source of Truth).
|
||||
|
||||
- **PROCs** no Hub em `06-Operacoes/Procedimentos/`
|
||||
- **Runbooks** no Hub em `06-Operacoes/Runbooks/`
|
||||
- **Quick References** no Hub em `06-Operacoes/Documentacao/Quick-Reference/`
|
||||
|
||||
**Nunca** criar pastas `docs/PROC` ou `docs/RUNBOOK` num projecto. A referência correcta é sempre o Hub.
|
||||
|
||||
---
|
||||
|
||||
### 3. Ficheiros de Governance de IA (`AGENTS.md`, `GEMINI.md`, `CLAUDE.md`)
|
||||
Servem para alinhar o comportamento dos agentes neste repositório. Devem conter regras de estilo, convenções de código e restrições de segurança específicas do projecto. Pelo menos `AGENTS.md` é obrigatório.
|
||||
|
||||
### 4. `MEMORY.md`
|
||||
**Obrigatório.** Deve ser actualizado no final de cada sessão.
|
||||
- Formato: Secções por data (ordem cronológica inversa).
|
||||
- Conteúdo: O que foi feito, problemas encontrados e o que ficou pendente.
|
||||
|
||||
### 4. `desk.project`
|
||||
Ficheiro JSON que mapeia o repositório local à tarefa ou projecto correspondente no Desk CRM.
|
||||
|
||||
## Regras de Nomenclatura
|
||||
- Pastas: `UPPERCASE` para categorias de documentação (`PLANS`, `SPECS`), `lowercase` para código.
|
||||
- Ficheiros: `kebab-case.md` (letras minúsculas e hífens).
|
||||
- Excepções: Ficheiros de sistema como `README.md`, `CHANGELOG.md` ou ficheiros de governance em `UPPERCASE`.
|
||||
|
||||
## Validação de Estrutura
|
||||
Um projecto é considerado "em conformidade" se contiver, no mínimo:
|
||||
1. `docs/` com as pastas `PLANS/` e `SPECS/` (mesmo que vazias).
|
||||
2. `AGENTS.md` com directrizes específicas do projecto.
|
||||
3. `MEMORY.md` com registo de sessões.
|
||||
4. `desk.project` com task_id válido no Desk CRM.
|
||||
|
||||
> **Validação automática:** Executar `scripts/validate-structure.sh` na raiz do projecto para verificar conformidade.
|
||||
|
||||
---
|
||||
|
||||
## Convenção para Pastas Hub (Sistemas e Aplicações)
|
||||
|
||||
Para pastas de documentação no Hub (`04-Stack/02.04-Sistemas/`, `04-Stack/02.05-Aplicações/`, etc.) aplica-se uma convenção própria:
|
||||
|
||||
→ Ver **`06-Operacoes/Procedimentos/Cross-Departamental/PROC-Estrutura-Pasta-Projecto.md`** (XDP-PRJ-001)
|
||||
|
||||
**Diferença principal:** pastas Hub não têm `docs/`, `scripts/` nem `tests/` — são documentação pura. O `AGENTS.md` contém o 5W2H do sistema e os relacionamentos com o ecossistema.
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Document
|
||||
tags: [projecto, modelo, organizacao, governanca]
|
||||
title: Governanca
|
||||
description: >-
|
||||
Este documento estabelece as regras de ouro para o desenvolvimento de software na Descomplicar®. A conformidade com esta…
|
||||
timestamp: 2026-05-13T10:46:34.903096+00:00
|
||||
---
|
||||
# GOVERNANCA.md — Manifesto de Qualidade e Conduta DEV
|
||||
|
||||
## Introdução
|
||||
Este documento estabelece as regras de ouro para o desenvolvimento de software na Descomplicar®. A conformidade com estas regras é obrigatória para todos os contribuidores (humanos e agentes).
|
||||
|
||||
## 1. Regras de Ouro (Core Rules)
|
||||
1. **PT-PT Strictly**: Código (comentários), documentação e mensagens de commit devem ser em Português Europeu.
|
||||
2. **Zero Breaking Deploys**: Nenhum deploy pode ser efectuado com testes falhados ou vulnerabilidades críticas.
|
||||
3. **Single Source of Truth**: Procedimentos (`PROC`) e `RUNBOOKS` são consultados centralmente no Hub. Não se criam cópias locais.
|
||||
4. **Audit-First**: Todo o projecto deve ser auditado mensalmente seguindo o `DEV-AUDIT-001`.
|
||||
|
||||
O desenvolvimento segue a sequência obrigatória de 10 fases:
|
||||
|
||||
**Ideia → Briefing → Pesquisa (Web + NLM + Mem0 + Wiki) → Brainstorming → SPEC → Plan → Repo Git → Implementação → CI/CD → Deploy**
|
||||
|
||||
> ⚠️ **A Pesquisa é obrigatória antes de qualquer decisão.** Consultar sempre Mem0 (`search_memories`), NotebookLM, Wiki IJFW e Hub antes de arquitectar.
|
||||
|
||||
Ver detalhe completo em **`CICLO-VIDA-PROJECTO.md`** — artefactos, anti-padrões e referências por fase.
|
||||
|
||||
## 3. Gestão de Dependências e Upgrades
|
||||
- Upgrades de frameworks seguem obrigatoriamente o `DEV-UPGRADE-001`.
|
||||
- Proibida a utilização de dependências "stale" ou sem licença activa em projectos de produção.
|
||||
|
||||
## 4. Interacção com o ecossistema (CRM & Git)
|
||||
- Toda a alteração técnica deve ter um rastro no Desk CRM (Comentário na tarefa correspondente).
|
||||
- Commits devem ser atómicos e descritivos.
|
||||
- Uso obrigatório de ficheiros `desk.project` para ancorar o contexto.
|
||||
|
||||
## 5. Compliance de Agentes IA
|
||||
Agentes devem reportar o seu estado e decisões em `MEMORY.md` e respeitar as directrizes em `AGENTS.md`. Em caso de falha repetida (3x), o agente deve parar e solicitar intervenção humana.
|
||||
|
||||
## 6. Penalizações e Bloqueios
|
||||
O incumprimento da governação (especialmente deploys sem auditoria) resulta no bloqueio imediato do pipeline de produção até à resolução da causa raiz.
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Document
|
||||
tags: [projecto, modelo, organizacao, instrucoes]
|
||||
title: Instrucoes
|
||||
description: >-
|
||||
Este diretório é a fonte de verdade para o modelo de organização de projetos. A partir de agora, todas as definições est…
|
||||
timestamp: 2026-05-13T10:34:35.758090+00:00
|
||||
---
|
||||
# Instruções para o Modelo de Organização (HUB)
|
||||
|
||||
Este diretório é a fonte de verdade para o modelo de organização de projetos. A partir de agora, todas as definições estruturais e procedimentos padrão do ecossistema Descomplicar® devem ser mantidos e versionados aqui.
|
||||
|
||||
## Próximos Passos
|
||||
1. **Documentação Master:** Criar os ficheiros ESTRUTURA.md, GOVERNANCA.md e PROTOCOLO-CRM.md baseados no modelo aprovado.
|
||||
2. **Templates:** Criar templates de documentos em docs/SPECS e docs/PLANS.
|
||||
3. **Sincronização:** Manter a paridade entre este diretório e os repositórios individuais dos projetos (via git submodules ou simples cópia/script de deploy).
|
||||
|
||||
## Como editar
|
||||
Pode editar este repositório diretamente com o agente de IA, desde que a sessão esteja configurada com o root correto no Hub.
|
||||
@@ -0,0 +1,69 @@
|
||||
---
|
||||
type: Document
|
||||
title: Memory
|
||||
description: 'AUDIT-ECO #001 executada: 4 agentes validados. 2 findings abertos'
|
||||
timestamp: 2026-05-16 19:22:27.808202+00:00
|
||||
tags:
|
||||
- dev
|
||||
- codigo
|
||||
- historico
|
||||
- sessoes
|
||||
- proximos-passos
|
||||
- '2026-06-30'
|
||||
- reorganizacao
|
||||
layer: wiki
|
||||
---
|
||||
# MEMORY.md
|
||||
|
||||
## 2026-05-16 (sessão Claude — auditoria pós-OpenCode)
|
||||
- **AUDIT-ECO #001 executada:** 4 agentes validados. 2 findings abertos.
|
||||
- F-001 (High): Hermes sem `desk-crm-v3`, `mcp-time`, `memory-supabase`, `ssh-unified`, `notebooklm` — só tem `mcp-gitea` local
|
||||
- F-002 (Medium): Gemini sem `desk-crm-v3` (usa `desk-project-minimal`) e sem `mcp-time`
|
||||
- **CARL recall expandido:** 7 → 27 keywords no domínio MODELO-ORGANIZACAO (backup `.carl/carl.json.bak-2026-05-16`)
|
||||
- **Script criado:** `scripts/propagate-structure.sh` — aplica estrutura standard a outro projecto, idempotente, com dry-run. Testado: CONFORME
|
||||
- **Estrutura audit/:** `docs/audit/audit.md` + `docs/audit/findings/F-001.md` + `F-002.md`
|
||||
- **Worklog HTML:** zero ocorrências em todos os 4 agentes — confirmado migrado para markdown
|
||||
- **Permissões 600:** confirmadas em opencode-secrets, claude.json, claude/settings.json, opencode.json, hermes/config.yaml
|
||||
|
||||
## 2026-05-16
|
||||
- **Auditoria ecossistema:** questionários directos a Gemini, Hermes, OpenCode via aionui. Relatório em `docs/SPECS/2026-05-16-ecosystem-audit.md`
|
||||
- **Segurança OpenCode:** credenciais NotebookLM movidas para `~/.opencode-secrets` (600). Wrapper em `~/.opencode-wrappers/`. Permissões claude.json + settings.json corrigidas para 600.
|
||||
- **ECOSYSTEM.md criado:** `Hub/06-Operacoes/Documentacao/ECOSYSTEM.md` — fonte de verdade comum
|
||||
- **PROC-DEV-STANDARD criado:** D7-SIS-006 em `Hub/06-Operacoes/Procedimentos/D7-Tecnologia/Sistema/`
|
||||
- **PROC-AUDIT-STANDARD criado:** D7-SIS-007 em `Hub/06-Operacoes/Procedimentos/D7-Tecnologia/Sistema/`
|
||||
- **PROC-DEV-STANDARD-ref criado:** em `docs/SPECS/PROC-DEV-STANDARD-ref.md`
|
||||
- **Configs actualizadas:** GEMINI.md, Hermes/AGENTS.md, OpenCode/AGENTS.md + desk-crm-v3 activado, CLAUDE.md
|
||||
- **Task Desk #2134:** Em Curso
|
||||
|
||||
## 2026-05-13
|
||||
- **Formalização de Estrutura**: Criado `ESTRUTURA.md` definindo a hierarquia padrão.
|
||||
- **Centralização de Documentação**:
|
||||
- Movidos procedimentos locais (`DEV-AUDIT`, `DEV-UPGRADE`, `PROC-DEPLOY`) para `06-Operacoes/Procedimentos/D7-Tecnologia/Sistema/`.
|
||||
- Criada estrutura central de `Runbooks` no Hub com guia de utilização.
|
||||
- Removidas pastas locais `docs/PROC` e `docs/RUNBOOK`.
|
||||
- **Governação**: Criado `GOVERNANCA.md` como manifesto de qualidade.
|
||||
- **Protocolo de Gestão**: Criado `PROTOCOLO-CRM.md` definindo a integração Lean entre Gitea (execução) e Desk CRM (visibilidade).
|
||||
- **Identidade**: Criado `AGENTS.md` e `desk.project` (Tarefa #2134).
|
||||
|
||||
## 2026-05-13 (Sessão 2 — Correções Izito)
|
||||
- **Análise Crítica:** Identificados 8 problemas estruturais no modelo, incluindo falta de dogfooding, contradição interna no ESTRUTURA.md, CRM desactualizado, e ausência de integração CARL.
|
||||
- **Correções Aplicadas:**
|
||||
- `ESTRUTURA.md` — removida contradição docs/PROC e docs/RUNBOOK vs Hub centralizado, corrigida numeração de secções, actualizada validação para 2 subpastas (PLANS + SPECS).
|
||||
- `AGENTS.md` — reescrito com directrizes específicas, referência ao CARL, tabela de projectos, e histórico de intervenções.
|
||||
- `scripts/validate-structure.sh` — criado script de validação automática (exit code 0 = conforme).
|
||||
- `docs/PLANS/` e `docs/SPECS/` — criadas pastas em falta.
|
||||
- **CARL:** Criado domínio `MODELO-ORGANIZACAO` com 6 regras e 9 recall keywords para descoberta por agentes.
|
||||
- **CRM:** Task #2134 actualizada de "Não iniciado" para "Em Curso". Comentário de registo adicionado.
|
||||
- **Validação:** Script corre contra o próprio projecto — **CONFORME** (0 falhas, 0 avisos).
|
||||
- **Pendente:** Templates em docs/PLANS e docs/SPECS, sincronização com outros projectos via script/hook.
|
||||
- **PROC-DEPLOY-STANDARD:** Criado standard genérico de deploy (PROC-DEPLOY-STANDARD.md) extraído do PROC-DEPLOY-PROD (WhatSMS v2). O WhatSMS-specific foi simplificado e passou a referenciar o standard como base.
|
||||
- **Diagrama:** Adicionado F5 (Deploy) ao workflow.drawio — fluxo branch → CI → PR → merge → auto-deploy → validação + rollback.
|
||||
|
||||
## 2026-05-13 (Sessão 3 — Fecho)
|
||||
- **MCP EasyPanel:** Instalado no Hermes (`~/.hermes/config.yaml`). Endpoint: `gateway.descomplicar.pt/v1/easypanel/mcp` (type: http). Disponível após restart de sessão.
|
||||
- **Diagrama:** Fontes uniformizadas para sans-serif (Helvetica) em todo o Workflow-Fluxo.drawio. Adicionado F5 (Deploy) com Deploy Guard + Rollback Plan.
|
||||
- **PROC-DEPLOY-STANDARD:** Criado `PROC-DEPLOY-STANDARD.md` como standard genérico de deploy. `PROC-DEPLOY-PROD.md` simplificado com referência ao standard e apenas detalhes WhatSMS.
|
||||
- **CARL:** Adicionada regra #7 ao domínio MODELO-ORGANIZACAO — deploy segue PROC-DEPLOY-STANDARD.
|
||||
- **Pendente:** Templates docs/PLANS e docs/SPECS. Sincronização com outros projectos.
|
||||
|
||||
---
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Document
|
||||
tags: [projecto, modelo, organizacao, protocolo]
|
||||
title: Protocolo Crm
|
||||
description: >-
|
||||
No ecossistema Descomplicar®, a gestão de projectos segue uma hierarquia de granularidade distinta:
|
||||
timestamp: 2026-05-13T11:01:24.047410+00:00
|
||||
---
|
||||
# PROTOCOLO-CRM.md — Integração Lean Gitea & Desk CRM
|
||||
|
||||
## Princípio Fundamental: O Contentor de Tempo
|
||||
No ecossistema Descomplicar®, a gestão de projectos segue uma hierarquia de granularidade distinta:
|
||||
- **Desk CRM**: É o **Contentor de Tempo e Custos**. Utiliza-se apenas uma (ou poucas) "Tarefa Master" para registar horas e dar visibilidade financeira.
|
||||
- **Gitea**: É a **Oficina Técnica**. É aqui que reside a complexidade granular (Issues, Milestones, Projects).
|
||||
|
||||
## 1. Mapeamento de Entidades
|
||||
|
||||
| Entidade Desk CRM | Entidade Gitea | Finalidade |
|
||||
| :--- | :--- | :--- |
|
||||
| **Tarefa Master** | Repositório / Milestones | Registo de horas (Timer) e Faturação. |
|
||||
| **Comentário de Task** | Resumo de Sessão | Visibilidade para o Cliente/Gestor. |
|
||||
| **(Inexistente)** | **Issues / Pull Requests** | Detalhe técnico, bugs e histórico de código. |
|
||||
|
||||
## 2. Fluxo Operacional Simplificado
|
||||
|
||||
### A. Início da Sessão
|
||||
1. O Agente/Developer identifica a **Tarefa Master** no CRM via `desk.project`.
|
||||
2. Inicia o timer: `mcp__desk-project-minimal__start_task_timer(task_id=XXXX)`.
|
||||
3. Toda a exploração de tarefas granulares é feita no Gitea.
|
||||
|
||||
### B. Durante a Execução
|
||||
- As discussões técnicas, especificações de bugs e estados de desenvolvimento (To Do/Done) ocorrem exclusivamente nas **Issues** e **Projects** do Gitea.
|
||||
|
||||
### C. Final da Sessão (Obrigatório)
|
||||
1. Parar o timer no CRM.
|
||||
2. Adicionar um comentário de fecho no CRM que faça a ponte entre os mundos:
|
||||
*"Concluída sessão de desenvolvimento. No Gitea, foram fechadas as Issues #10 e #11 relativas à Milestone [Nome]."*
|
||||
3. Actualizar o `MEMORY.md` local.
|
||||
|
||||
## 3. Onde Documentar o Quê?
|
||||
|
||||
- **Hub (`06-Operacoes/`)**: Padrões que se aplicam a TODOS os projectos (ex: "Como configurar um servidor").
|
||||
- **Gitea Wiki**: Documentação específica deste código (ex: "Esquema da API deste projecto").
|
||||
- **`MEMORY.md`**: Registo cronológico da vida do repositório.
|
||||
|
||||
## 4. Conclusão
|
||||
Este protocolo elimina a necessidade de duplicar o quadro de tarefas do Gitea no Desk CRM. O CRM mantém-se limpo, focado em resultados e tempo, enquanto o Gitea retém toda a riqueza técnica.
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Status
|
||||
tags:
|
||||
- dev
|
||||
- codigo
|
||||
- estado
|
||||
- versao
|
||||
- conformidade
|
||||
- '2026-06-30'
|
||||
- reorganizacao
|
||||
title: Status
|
||||
description: 'Versão: 1.1 | Data: 2026-05-16 | Agente: Claude Code'
|
||||
timestamp: 2026-05-16 19:22:18.276118+00:00
|
||||
---
|
||||
# STATUS.md — bi-descomplicar
|
||||
|
||||
**Versão:** 1.0 | **Data:** 2026-06-30 | **Agente:** DevStructure-WorkerC
|
||||
|
||||
- **Em curso:** Estruturação inicial — cópia de modelo Descomplicar
|
||||
- **Bloqueios:** Nenhum
|
||||
- **Próximos passos:**
|
||||
- Validar estrutura conforme ESTRUTURA.md
|
||||
- Revisar frontmatter em AGENTS.md
|
||||
- Próxima revisão: TBD
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"task_id": 2134,
|
||||
"project_name": "Modelo-Organizacao-Proc-Dev",
|
||||
"rel_type": "project_documentation",
|
||||
"updated_at": "2026-05-13"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,10 @@
|
||||
---
|
||||
type: Brainstorm
|
||||
title: 'Brainstorm — bi-descomplicar'
|
||||
timestamp: 2026-06-30
|
||||
layer: wiki
|
||||
---
|
||||
|
||||
# BRAINSTORM — bi-descomplicar
|
||||
|
||||
Estrutura padrão aplicada.
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
type: Plan
|
||||
title: 'PLAN — bi-descomplicar'
|
||||
timestamp: 2026-06-30
|
||||
layer: wiki
|
||||
---
|
||||
|
||||
# PLAN — bi-descomplicar
|
||||
|
||||
1. Estruturação\n2. Validação\n3. Manutenção
|
||||
@@ -0,0 +1,106 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Document
|
||||
tags: [projecto, modelo, organizacao, ecosystem]
|
||||
title: 2026 05 16 Ecosystem Audit
|
||||
description: >-
|
||||
Auditoria de ecossistema multi-agente — questionário directo a cada agente, alinhamento de MCPs e skills.
|
||||
timestamp: 2026-05-16T17:54:53.917476+00:00
|
||||
---
|
||||
# Auditoria de Ecossistema — Alinhamento Multi-Agente
|
||||
|
||||
**Data:** 2026-05-16
|
||||
**Método:** Questionário directo a cada agente (dados reais, sem interpretação)
|
||||
**Agentes auditados:** Gemini CLI, Hermes/Izito, OpenCode
|
||||
|
||||
---
|
||||
|
||||
## Quadro Consolidado
|
||||
|
||||
| | Gemini | Hermes | OpenCode |
|
||||
|--|--------|--------|----------|
|
||||
| MEMORY.md lê/escreve | ✅ | ✅ (se existir) | ❌ |
|
||||
| Cria MEMORY.md se não existe | ❌ | ❌ | ❌ |
|
||||
| STATUS.md | ❌ | ❌ | ❌ |
|
||||
| Gitea vs Desk (regras explícitas) | ❌ | ❌ | ❌ |
|
||||
| Worklog format | ⚠️ HTML | ❌ ausente | ❌ ausente |
|
||||
| CARL (carl.json) | ✅ path correcto | ⚠️ só MCP | ❌ |
|
||||
| Regra 48 (dev local) | ❌ | ❌ | ❌ |
|
||||
| Refs extintas | ✅ limpo | ✅ limpo | ⚠️ dify-kb |
|
||||
| Credenciais plaintext | — | — | 🔴 resolvido |
|
||||
|
||||
---
|
||||
|
||||
## Achados por Prioridade
|
||||
|
||||
### P1 — Crítico
|
||||
|
||||
**1. STATUS.md — ausente em todos os agentes**
|
||||
Nenhum agente conhece ou tem protocolo para o ficheiro de estado vivo do projecto.
|
||||
Impacto: cada agente começa sessão sem saber o que o anterior fez.
|
||||
|
||||
**2. MEMORY.md — nenhum cria se não existir**
|
||||
Gemini e Hermes lêem/escrevem se existir. OpenCode não menciona de todo.
|
||||
Impacto: projectos novos ficam sem memória até alguém criar manualmente.
|
||||
|
||||
**3. Gitea vs Desk CRM — sem regras de routing**
|
||||
Todos os agentes sabem que os sistemas existem mas nenhum tem regras explícitas
|
||||
sobre o que vai para cada um.
|
||||
Impacto: duplicação de registos, informação dispersa, dessincronia.
|
||||
|
||||
**4. OpenCode sem contexto de ecossistema**
|
||||
Zero referências a MEMORY.md, CARL, Regra 48, Desk CRM activo.
|
||||
Impacto: o OpenCode opera isolado do ecossistema.
|
||||
|
||||
### P2 — Médio
|
||||
|
||||
**5. Worklog divergente**
|
||||
- Gemini: HTML (`<h4>`, `<ul>`, `<hr>`) — o único com formato diferente
|
||||
- Hermes: sem template definido
|
||||
- OpenCode: sem template definido
|
||||
- Claude: markdown com /worklog — standard do ecossistema
|
||||
|
||||
**6. CARL incompleto**
|
||||
- Gemini: conhece o caminho `/media/ealmeida/Dados/.carl/carl.json` ✅
|
||||
- Hermes: apenas como nome de MCP, não conhece os domínios
|
||||
- OpenCode: ausente
|
||||
|
||||
**7. Regra 48 ausente em todos**
|
||||
Nenhum agente sabe que o CT 102 foi extinto em 20-04-2026 e que o
|
||||
desenvolvimento é local em `/media/ealmeida/Dados/Dev/`.
|
||||
|
||||
### P3 — Melhoria
|
||||
|
||||
**8. Boas práticas únicas a standardizar**
|
||||
- Tabela de delegação multi-agente (Hermes SOUL.md) → todos deviam conhecer
|
||||
- LLM Wiki protocolo 3 passos (Gemini) → standardizar
|
||||
- Perfil do utilizador PHDA+INFJ (Hermes) → adicionar ao Gemini e OpenCode
|
||||
- Redução activa de opções (Hermes) → comportamento a standardizar
|
||||
|
||||
---
|
||||
|
||||
## Segurança — Resolvido em Sessão
|
||||
|
||||
| Acção | Estado |
|
||||
|-------|--------|
|
||||
| `opencode.json` → 600 | ✅ |
|
||||
| `~/.claude/settings.json` → 600 | ✅ |
|
||||
| Credenciais NotebookLM → `~/.opencode-secrets` (600) | ✅ |
|
||||
| Wrapper `notebooklm-mcp-wrapper.sh` | ✅ |
|
||||
| `dify-kb` removido do opencode.json | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## Ficheiros a Criar/Actualizar
|
||||
|
||||
| Ficheiro | Acção | Prioridade |
|
||||
|----------|-------|------------|
|
||||
| `ECOSYSTEM.md` (Hub) | Criar — fonte de verdade comum | P1 |
|
||||
| `~/.gemini/GEMINI.md` | Actualizar — STATUS.md, MEMORY.md criar, Gitea/Desk, worklog, Regra 48 | P1 |
|
||||
| `~/.hermes/AGENTS.md` | Actualizar — STATUS.md, MEMORY.md criar, Gitea/Desk, worklog, CARL domínios, Regra 48 | P1 |
|
||||
| `~/.config/opencode/AGENTS.md` | Actualizar — tudo: MEMORY.md, STATUS.md, Gitea/Desk, CARL, Regra 48, sistema triangular | P1 |
|
||||
| `~/.claude/CLAUDE.md` | Actualizar — adicionar STATUS.md ao protocolo de sessão | P2 |
|
||||
|
||||
---
|
||||
|
||||
**Próximo passo:** implementar alinhamento — writing-plans
|
||||
@@ -0,0 +1,347 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Document
|
||||
tags: [projecto, modelo, organizacao, proc]
|
||||
title: 2026 05 16 Proc Dev Standard Design
|
||||
description: >-
|
||||
Design do PROC-DEV-STANDARD (D7-SIS-006) — standard de procedimentos de desenvolvimento, aprovado 2026-05-16.
|
||||
timestamp: 2026-05-16T16:40:14.554151+00:00
|
||||
---
|
||||
# Design — PROC-DEV-STANDARD (D7-SIS-006)
|
||||
|
||||
**Data:** 2026-05-16
|
||||
**Status:** Aprovado
|
||||
**Autor:** Emanuel Almeida + Claude Code
|
||||
**Baseado em:** WhatSMS v2 (`/media/ealmeida/Dados/Dev/WhatSMS/whatsms-v2`)
|
||||
|
||||
---
|
||||
|
||||
## Objectivo
|
||||
|
||||
Criar o `PROC-DEV-STANDARD` — protocolo de desenvolvimento de ciclo completo (ideia → produção) para todos os projectos Descomplicar®. Agnóstico de stack. Garante que qualquer agente (Claude, Gemini, Hermes, OpenCode, Antigravity) compreende o estado do projecto, nunca perde contexto e partilha toda a informação disponível.
|
||||
|
||||
---
|
||||
|
||||
## Localização
|
||||
|
||||
- **Fonte de verdade:** `Hub/06-Operacoes/Procedimentos/D7-Tecnologia/Sistema/PROC-DEV-STANDARD.md` (código D7-SIS-006)
|
||||
- **Resumo/referência:** `Modelo-Organizacao-Proc-Dev/docs/SPECS/PROC-DEV-STANDARD-ref.md`
|
||||
|
||||
---
|
||||
|
||||
## Estrutura do Documento
|
||||
|
||||
```
|
||||
1. Princípios
|
||||
2. Fluxo Completo (visão geral)
|
||||
3. Estrutura de Projecto Obrigatória
|
||||
4. Ficheiros de Contexto Cross-Agent
|
||||
5. Fase 1 — Ideia
|
||||
6. Fase 2 — Pesquisa (deep research + NLM)
|
||||
7. Fase 3 — Spec
|
||||
8. Fase 4 — Plan
|
||||
9. Fase 5 — Desenvolvimento (branch + commits)
|
||||
10. Fase 6 — Quality Gates
|
||||
11. Fase 7 — Code Review & PR
|
||||
12. Fase 8 — Deploy & Validação
|
||||
13. Gestão de Ferramentas: Gitea vs Desk CRM
|
||||
14. Gates Obrigatórios (Issue-First, Deploy Guard)
|
||||
15. Excepções (hotfix, re-deploy)
|
||||
16. Referências
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fluxo Completo
|
||||
|
||||
```
|
||||
Ideia
|
||||
→ Pesquisa (deep research + NLM existente ou novo se domínio novo)
|
||||
→ Spec (SPEC.md aprovado)
|
||||
→ Plan (implementação detalhada)
|
||||
→ Desenvolvimento (feat/* → commits atómicos)
|
||||
→ Quality Gates (pre-commit → pre-push → CI)
|
||||
→ Code Review & PR (Gitea)
|
||||
→ Deploy & Validação (PROC-DEPLOY-STANDARD)
|
||||
```
|
||||
|
||||
Excepções ao pipeline completo: bugfix, operação unitária, continuação de plano existente.
|
||||
|
||||
---
|
||||
|
||||
## Estrutura de Projecto Obrigatória
|
||||
|
||||
```
|
||||
/ (root)
|
||||
├── docs/
|
||||
│ ├── PLANS/ # Planos de acção e roadmaps
|
||||
│ └── SPECS/ # Specs técnicas + notas de pesquisa
|
||||
├── scripts/ # Automação local (opcional)
|
||||
├── AGENTS.md # Directrizes por agente (obrigatório)
|
||||
├── CHANGELOG.md # Histórico de versões
|
||||
├── CLAUDE.md # Instruções Claude Code (se aplicável)
|
||||
├── MEMORY.md # Contexto cross-agent (obrigatório)
|
||||
├── STATUS.md # Estado vivo do projecto (obrigatório)
|
||||
└── .desk-project # Ligação Desk CRM (JSON, obrigatório)
|
||||
```
|
||||
|
||||
Validação automática: `scripts/validate-structure.sh` (já existente no modelo).
|
||||
|
||||
---
|
||||
|
||||
## Ficheiros de Contexto Cross-Agent
|
||||
|
||||
### MEMORY.md
|
||||
- Partilhado entre Claude, Gemini, Hermes, OpenCode, Antigravity e outros
|
||||
- Formato: secções por data, ordem cronológica inversa
|
||||
- Conteúdo: decisões, paths, IDs, workarounds, factos de sessão
|
||||
- **Não** usar `projects/*/memory/*.md` do Claude Code — usar sempre `MEMORY.md` local
|
||||
|
||||
### STATUS.md
|
||||
- Estado instantâneo do projecto — actualizado no início e fim de cada sessão
|
||||
- Conteúdo: sprint actual, versão, bloqueios, próximos passos, agente activo
|
||||
- Formato sugerido:
|
||||
```
|
||||
# STATUS.md — [Nome Projecto]
|
||||
**Versão:** vX.Y.Z | **Sprint:** #N | **Data:** YYYY-MM-DD
|
||||
**Agente activo:** [nome] | **Sessão iniciada:** HH:MM
|
||||
|
||||
## Estado
|
||||
- Em curso: [o que está a ser feito]
|
||||
- Bloqueios: [impedimentos activos]
|
||||
- Próximos passos: [próxima acção concreta]
|
||||
```
|
||||
|
||||
### AGENTS.md
|
||||
- Directrizes específicas do projecto para cada família de agentes
|
||||
- Conteúdo: o que cada agente pode/não pode fazer, ferramentas disponíveis, restrições
|
||||
- Actualizado pelo owner quando as regras mudam
|
||||
|
||||
### CHANGELOG.md
|
||||
- Histórico de versões com data, sprint e impacto
|
||||
- Actualizado pelo agente activo a cada versão/sprint concluído
|
||||
- Formato: Conventional Changelog (## vX.Y.Z — YYYY-MM-DD)
|
||||
|
||||
### Protocolo de sessão (qualquer agente)
|
||||
1. **Início** → ler `MEMORY.md` + `STATUS.md` + `.desk-project`
|
||||
2. **Durante** → registar decisões relevantes em `MEMORY.md` em tempo real
|
||||
3. **Fim** → actualizar `STATUS.md` + `MEMORY.md` com factos novos
|
||||
|
||||
---
|
||||
|
||||
## Fase 1 — Ideia
|
||||
|
||||
**Entrada:** ideia ou pedido de funcionalidade
|
||||
**Saída:** decisão de avançar ou descartar + âmbito inicial definido
|
||||
|
||||
Verificar antes de avançar:
|
||||
- Não existe já funcionalidade equivalente no projecto
|
||||
- Alinhado com o MASTER-PLAN / objectivos do projecto
|
||||
- Âmbito claro o suficiente para pesquisar
|
||||
|
||||
---
|
||||
|
||||
## Fase 2 — Pesquisa
|
||||
|
||||
**Entrada:** ideia com âmbito definido
|
||||
**Saída:** nota de pesquisa em `docs/SPECS/research-YYYY-MM-DD-tema.md`
|
||||
|
||||
### Processo
|
||||
1. Identificar domínio da ideia
|
||||
2. Verificar NLMs existentes via `/knowledge` (65 notebooks inventariados)
|
||||
- Se domínio coberto → usar NLM existente (adicionar fontes se necessário)
|
||||
- Se domínio novo **e** pesquisa extensa → criar NLM dedicado ao projecto
|
||||
- Criar NLM apenas se estritamente necessário
|
||||
3. Executar deep research: WebSearch + WebFetch + NLM
|
||||
4. Sintetizar: decisões técnicas, alternativas avaliadas, alternativas descartadas e porquê, riscos identificados
|
||||
5. Guardar nota de pesquisa em `docs/SPECS/`
|
||||
|
||||
### Output mínimo da nota de pesquisa
|
||||
- Pergunta de investigação
|
||||
- Fontes consultadas
|
||||
- Conclusões (o que fazer e porquê)
|
||||
- Alternativas descartadas (com justificação)
|
||||
- Riscos e mitigações
|
||||
|
||||
---
|
||||
|
||||
## Fase 3 — Spec
|
||||
|
||||
**Entrada:** nota de pesquisa aprovada
|
||||
**Saída:** `SPEC.md` ou ficheiro em `docs/SPECS/` aprovado pelo owner
|
||||
|
||||
- Seguir skill `/brainstorm` → `/spec` para trabalho não-trivial (>3 ficheiros ou sistema novo)
|
||||
- Excepções: bugfix, operação unitária, continuação de plano existente
|
||||
- A spec é o contrato bilateral — nada entra em código sem spec aprovada
|
||||
|
||||
---
|
||||
|
||||
## Fase 4 — Plan
|
||||
|
||||
**Entrada:** spec aprovada
|
||||
**Saída:** plano de implementação em `docs/PLANS/`
|
||||
|
||||
- Seguir skill `/writing-plans` para decompor em tarefas executáveis
|
||||
- Cada tarefa com critério de aceitação claro
|
||||
- Registar plano em `docs/PLANS/PLAN-YYYY-MM-DD-tema.md`
|
||||
|
||||
---
|
||||
|
||||
## Fase 5 — Desenvolvimento
|
||||
|
||||
**Entrada:** plano aprovado
|
||||
**Saída:** commits atómicos em branch dedicada
|
||||
|
||||
### Branch strategy
|
||||
- `main` — produção (protegida)
|
||||
- `dev` — desenvolvimento (se aplicável)
|
||||
- `feat/N-descricao` — novas funcionalidades
|
||||
- `fix/N-descricao` — correções de bugs (N = número da issue Gitea)
|
||||
|
||||
### Commits
|
||||
Formato Conventional Commits com referência à issue:
|
||||
```
|
||||
tipo(scope): descrição breve (#N)
|
||||
|
||||
Corpo opcional com contexto adicional.
|
||||
|
||||
Closes #N
|
||||
Co-Authored-By: [Agente] <noreply@anthropic.com>
|
||||
```
|
||||
|
||||
Tipos válidos: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`
|
||||
|
||||
**Regras:**
|
||||
- Um commit = uma alteração lógica
|
||||
- `#N` obrigatório (ref à issue Gitea)
|
||||
- Pre-commit hooks automáticos: formatação + lint (apenas staged)
|
||||
|
||||
---
|
||||
|
||||
## Fase 6 — Quality Gates
|
||||
|
||||
**Entrada:** código desenvolvido
|
||||
**Saída:** código validado pronto para PR
|
||||
|
||||
| Gate | Momento | Responsável | O que verifica |
|
||||
|------|---------|-------------|----------------|
|
||||
| Pre-commit | Automático | Hook | Formatação, lint |
|
||||
| Pre-push | Manual | Agente | Build, testes, cobertura, auditoria segurança |
|
||||
| CI | Automático (push) | Gitea Actions | Tudo + report cobertura |
|
||||
|
||||
Thresholds de cobertura e comandos concretos definidos por projecto no `CONTRIBUTING.md` do projecto — não no PROC genérico.
|
||||
|
||||
**Regra:** nunca fazer push sobre CI vermelho. Nunca fazer PR sem quality gates verdes.
|
||||
|
||||
---
|
||||
|
||||
## Fase 7 — Code Review & PR
|
||||
|
||||
**Entrada:** branch com CI verde
|
||||
**Saída:** PR aprovado e merged para `main`
|
||||
|
||||
### Checklist PR
|
||||
- [ ] Branch actualizada com `main`
|
||||
- [ ] Todos os testes passam localmente
|
||||
- [ ] Cobertura acima do threshold do projecto
|
||||
- [ ] Build sem erros
|
||||
- [ ] Auditoria de segurança sem vulnerabilidades críticas/altas
|
||||
- [ ] `CHANGELOG.md` actualizado
|
||||
- [ ] Documentação actualizada (se aplicável)
|
||||
- [ ] `STATUS.md` reflecte o novo estado
|
||||
|
||||
### Reviewers verificam
|
||||
- Código segue convenções do projecto (CLAUDE.md / AGENTS.md)
|
||||
- Testes cobrem casos críticos
|
||||
- Sem código duplicado
|
||||
- Sem secrets hardcoded, inputs validados
|
||||
- `MEMORY.md` actualizado com decisões relevantes
|
||||
|
||||
---
|
||||
|
||||
## Fase 8 — Deploy & Validação
|
||||
|
||||
**Entrada:** PR merged para `main`
|
||||
**Saída:** versão em produção validada
|
||||
|
||||
Seguir `PROC-DEPLOY-STANDARD.md` (D7-SIS-005) na íntegra.
|
||||
|
||||
Após deploy:
|
||||
- Actualizar `STATUS.md` com versão deployada
|
||||
- Registar em `MEMORY.md`: versão, data, o que foi deployado
|
||||
- Fechar task Desk CRM correspondente + registar tempo
|
||||
|
||||
---
|
||||
|
||||
## Gestão de Ferramentas: Gitea vs Desk CRM
|
||||
|
||||
### Divisão de responsabilidades
|
||||
|
||||
| O quê | Onde | Nunca em |
|
||||
|-------|------|----------|
|
||||
| Bugs, issues técnicas, PRs, releases | **Gitea** | Desk CRM |
|
||||
| Projectos, sprints, tempo, facturação | **Desk CRM** | Gitea |
|
||||
| Código, commits, CI/CD | **Gitea** | — |
|
||||
| Cliente 360, propostas, pagamentos | **Desk CRM** | — |
|
||||
|
||||
**Regra geral:** Gitea = tracker técnico. Desk CRM = gestão de projecto e facturação.
|
||||
|
||||
### Sincronização manual (regras)
|
||||
|
||||
1. **Bug descoberto** → criar issue Gitea (Issue-First Gate) → comentar na task Desk com URL da issue Gitea
|
||||
2. **Feature concluída** → fechar issue Gitea com `Closes #N` no commit → actualizar task Desk para "concluído" + registar tempo
|
||||
3. **PR merged** → `CHANGELOG.md` actualizado → `STATUS.md` actualizado
|
||||
4. **Deploy prod** → task Desk fechada → `MEMORY.md` regista versão deployada
|
||||
|
||||
### Referências cruzadas obrigatórias
|
||||
|
||||
- `.desk-project` contém: `task_id` Desk + `gitea_repo` + `gitea_project_id`
|
||||
- `MEMORY.md` regista IDs relevantes de ambos os sistemas
|
||||
- Commits referenciam `(#N)` da issue Gitea
|
||||
- Comentários Desk referenciam URL completa da issue/PR Gitea
|
||||
|
||||
---
|
||||
|
||||
## Gate Obrigatório — Issue-First (Bugs)
|
||||
|
||||
**Regra não-negociável:** todo o bug passa por issue Gitea **antes** de qualquer commit de fix.
|
||||
|
||||
**Fluxo:**
|
||||
1. Descoberta → criar issue com labels: `Bug` + severidade (`P: Critical/High/Medium/Low`) + área
|
||||
2. Branch `fix/N-descricao-curta`
|
||||
3. Commits com `(#N)` + `Fixes #N` no commit que fecha
|
||||
4. **Excepção hotfix:** fix cirúrgico urgente em prod → criar issue *post-hoc* com label `Backfill`, fechada à criação, com link ao commit
|
||||
|
||||
---
|
||||
|
||||
## Gate Obrigatório — Deploy Guard
|
||||
|
||||
Ver `PROC-DEPLOY-STANDARD.md` (D7-SIS-005) — secção "Deploy Guard".
|
||||
|
||||
**Regra:** CI tem de estar verde no último commit de `main` antes de qualquer deploy. Se abortar, não fazer override — investigar, corrigir, empurrar, esperar verde.
|
||||
|
||||
---
|
||||
|
||||
## Excepções Documentadas
|
||||
|
||||
| Situação | Excepção permitida | Condições |
|
||||
|----------|-------------------|-----------|
|
||||
| Bug crítico em prod | Hotfix sem PR (push directo main) | Fix trivial e reversível; issue criada post-hoc |
|
||||
| Re-deploy sem código novo | workflow_dispatch | Após mudança de env vars |
|
||||
| Bugfix simples | Sem spec/plan | Apenas 1-2 ficheiros, causa raiz clara |
|
||||
| Continuação de plano | Sem nova spec | Plano existente aprovado, âmbito inalterado |
|
||||
|
||||
---
|
||||
|
||||
## Referências
|
||||
|
||||
- `PROC-DEPLOY-STANDARD.md` — D7-SIS-005 (deploy para produção)
|
||||
- `ESTRUTURA.md` — hierarquia de projecto standard
|
||||
- `GOVERNANCA.md` — manifesto de qualidade
|
||||
- `PROTOCOLO-CRM.md` — integração Lean Gitea ↔ Desk CRM
|
||||
- `scripts/validate-structure.sh` — validação automática de estrutura
|
||||
- WhatSMS v2 `CONTRIBUTING.md` — implementação de referência
|
||||
|
||||
---
|
||||
|
||||
**Criado:** 2026-05-16 | **Aprovado por:** Emanuel Almeida | **Próximo passo:** writing-plans
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
type: Brief
|
||||
title: 'Briefing — bi-descomplicar'
|
||||
timestamp: 2026-06-30
|
||||
layer: wiki
|
||||
---
|
||||
|
||||
# BRIEF — bi-descomplicar
|
||||
|
||||
Projecto bi-descomplicar do ecossistema Descomplicar.
|
||||
@@ -0,0 +1,120 @@
|
||||
---
|
||||
layer: wiki
|
||||
title: PROC-DEV-STANDARD — Referência Rápida
|
||||
description: >-
|
||||
> Este ficheiro é um resumo/índice do PROC-DEV-STANDARD.md completo
|
||||
type: Reference
|
||||
code: D7-SIS-006
|
||||
date: 2026-05-16
|
||||
timestamp: 2026-05-16T00:00:00+01:00
|
||||
tags: [protocolo, referência, desenvolvimento]
|
||||
---
|
||||
|
||||
# PROC-DEV-STANDARD — Referência Rápida
|
||||
|
||||
> Este ficheiro é um resumo/índice do PROC-DEV-STANDARD.md completo.
|
||||
> **Versão completa:** `Hub/06-Operacoes/Procedimentos/D7-Tecnologia/Sistema/PROC-DEV-STANDARD.md`
|
||||
|
||||
---
|
||||
|
||||
## Código & Versão
|
||||
|
||||
- **Código:** D7-SIS-006
|
||||
- **Versão:** 1.0
|
||||
- **Data:** 2026-05-16
|
||||
|
||||
---
|
||||
|
||||
## Princípios Core
|
||||
|
||||
1. Pesquisa antes de spec
|
||||
2. Spec antes de código
|
||||
3. CI verde é gate obrigatório
|
||||
4. Issue-First para bugs
|
||||
5. Contexto partilhado (MEMORY.md + STATUS.md)
|
||||
6. Causa raiz — resolver sempre a causa, não o sintoma
|
||||
|
||||
---
|
||||
|
||||
## Fluxo Completo
|
||||
|
||||
```
|
||||
Ideia → Pesquisa → Spec → Plan → Desenvolvimento → Quality Gates → Code Review → Deploy
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Estrutura Obrigatória de Projecto
|
||||
|
||||
```
|
||||
docs/
|
||||
├── PLANS/ # Planos de implementação
|
||||
├── SPECS/ # Specs + notas de pesquisa
|
||||
└── audit/ # Auditorias (se activo)
|
||||
├── audit.md
|
||||
├── security.md
|
||||
├── tech-debt.md
|
||||
└── findings/
|
||||
|
||||
AGENTS.md, CHANGELOG.md, MEMORY.md, STATUS.md, .desk-project
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ficheiros Cross-Agent
|
||||
|
||||
| Ficheiro | Acção no Início | Acção no Fim |
|
||||
|----------|-----------------|--------------|
|
||||
| `MEMORY.md` | Ler/Criar | Escrever decisão |
|
||||
| `STATUS.md` | Ler/Criar | Actualizar estado |
|
||||
| `CHANGELOG.md` | — | Actualizar versão |
|
||||
|
||||
---
|
||||
|
||||
## 8 Fases do Desenvolvimento
|
||||
|
||||
| Fase | Input | Output |
|
||||
|------|-------|--------|
|
||||
| 1. Ideia | Pedido | Decisão avançar |
|
||||
| 2. Pesquisa | Âmbito | `docs/SPECS/research-*.md` |
|
||||
| 3. Spec | Nota pesquisa | `SPEC.md` aprovado |
|
||||
| 4. Plan | Spec | `docs/PLANS/YYYY-MM-DD-*.md` |
|
||||
| 5. Desenvolvimento | Plano | Commits atómicos |
|
||||
| 6. Quality Gates | Código | CI verde |
|
||||
| 7. Code Review | PR | Aprovação |
|
||||
| 8. Deploy | PR merge | Produção |
|
||||
|
||||
---
|
||||
|
||||
## Gitea vs Desk CRM
|
||||
|
||||
| Gitea | Desk CRM |
|
||||
|-------|----------|
|
||||
| Bugs, issues, PRs, código | Projectos, sprints, tempo, facturação |
|
||||
|
||||
---
|
||||
|
||||
## Auditoria (PROC-AUDIT-STANDARD — D7-SIS-007)
|
||||
|
||||
| Tipo | Frequência | Gatilho |
|
||||
|------|------------|---------|
|
||||
| AUDIT-CODE | Mensal | Pre-deploy prod |
|
||||
| AUDIT-SEC | Mensal | Pre-deploy prod |
|
||||
| AUDIT-ECO | Trimestral | Mudança agente |
|
||||
| AUDIT-PROJ | Semanal/sprint | Início sprint |
|
||||
|
||||
**Ver:** `Hub/06-Operacoes/Procedimentos/D7-Tecnologia/Sistema/PROC-AUDIT-STANDARD.md`
|
||||
|
||||
---
|
||||
|
||||
## Referências
|
||||
|
||||
- `PROC-DEV-STANDARD.md` — D7-SIS-006 (completo)
|
||||
- `PROC-AUDIT-STANDARD.md` — D7-SIS-007
|
||||
- `PROC-DEPLOY-STANDARD.md` — D7-SIS-005
|
||||
- `ECOSYSTEM.md` — regras partilhadas
|
||||
|
||||
---
|
||||
|
||||
**Modelo-Organizacao-Proc-Dev** — Template canónico
|
||||
**Desk CRM:** Task #2134
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
type: Spec
|
||||
title: 'SPEC — bi-descomplicar'
|
||||
status: draft
|
||||
timestamp: 2026-06-30
|
||||
layer: wiki
|
||||
---
|
||||
|
||||
# SPEC — bi-descomplicar
|
||||
|
||||
Projecto em estruturação.
|
||||
@@ -0,0 +1,353 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="pt">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Modelo-Organizacao-Proc-Dev — Workflow</title>
|
||||
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body {
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
background: #020617;
|
||||
min-height: 100vh;
|
||||
padding: 2rem;
|
||||
color: white;
|
||||
}
|
||||
.container { max-width: 1300px; margin: 0 auto; }
|
||||
.header { margin-bottom: 2rem; }
|
||||
.header-row { display: flex; align-items: center; gap: 1rem; margin-bottom: 0.5rem; }
|
||||
.pulse-dot {
|
||||
width: 12px; height: 12px; background: #22d3ee;
|
||||
border-radius: 50%; animation: pulse 2s infinite;
|
||||
}
|
||||
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.5} }
|
||||
h1 { font-size: 1.5rem; font-weight: 700; letter-spacing: -0.025em; }
|
||||
.subtitle { color: #94a3b8; font-size: 0.875rem; margin-left: 1.75rem; }
|
||||
.diagram-container {
|
||||
background: rgba(15, 23, 42, 0.5);
|
||||
border-radius: 1rem; border: 1px solid #1e293b;
|
||||
padding: 1.5rem; overflow-x: auto;
|
||||
}
|
||||
svg { width: 100%; min-width: 1050px; display: block; }
|
||||
.cards {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
gap: 1rem; margin-top: 2rem;
|
||||
}
|
||||
.card {
|
||||
background: rgba(15, 23, 42, 0.5);
|
||||
border-radius: 0.75rem; border: 1px solid #1e293b; padding: 1.25rem;
|
||||
}
|
||||
.card-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; }
|
||||
.card-dot { width: 8px; height: 8px; border-radius: 50%; }
|
||||
.card-dot.cyan { background: #22d3ee; }
|
||||
.card-dot.emerald { background: #34d399; }
|
||||
.card-dot.violet { background: #a78bfa; }
|
||||
.card-dot.amber { background: #fbbf24; }
|
||||
.card-dot.rose { background: #fb7185; }
|
||||
.card h3 { font-size: 0.875rem; font-weight: 600; }
|
||||
.card ul { list-style: none; color: #94a3b8; font-size: 0.75rem; }
|
||||
.card li { margin-bottom: 0.375rem; }
|
||||
.footer { text-align: center; margin-top: 1.5rem; color: #475569; font-size: 0.75rem; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<!-- Header -->
|
||||
<div class="header">
|
||||
<div class="header-row">
|
||||
<div class="pulse-dot"></div>
|
||||
<h1>Modelo-Organizacao-Proc-Dev — Fluxo de Trabalho</h1>
|
||||
</div>
|
||||
<p class="subtitle">Workflow de projectos Descomplicar®: iniciação, sessão, registo e governança</p>
|
||||
</div>
|
||||
|
||||
<!-- Main Diagram -->
|
||||
<div class="diagram-container">
|
||||
<svg viewBox="0 0 1050 780">
|
||||
<defs>
|
||||
<marker id="arrow" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#64748b" />
|
||||
</marker>
|
||||
<marker id="arrow-cyan" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#22d3ee" />
|
||||
</marker>
|
||||
<marker id="arrow-emerald" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#34d399" />
|
||||
</marker>
|
||||
<marker id="arrow-violet" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#a78bfa" />
|
||||
</marker>
|
||||
<marker id="arrow-rose" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
||||
<polygon points="0 0, 10 3.5, 0 7" fill="#fb7185" />
|
||||
</marker>
|
||||
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
|
||||
<path d="M 40 0 L 0 0 0 40" fill="none" stroke="#1e293b" stroke-width="0.5"/>
|
||||
</pattern>
|
||||
<filter id="glow">
|
||||
<feGaussianBlur stdDeviation="2" result="blur"/>
|
||||
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<!-- Background Grid -->
|
||||
<rect width="100%" height="100%" fill="url(#grid)" />
|
||||
|
||||
<!-- ================================================================
|
||||
SECTION 1: FLUXO DE INICIAÇÃO DE PROJECTOS
|
||||
================================================================ -->
|
||||
<rect x="20" y="20" width="1010" height="155" rx="10" fill="transparent" stroke="#fbbf24" stroke-width="1" stroke-dasharray="8,4"/>
|
||||
<text x="30" y="42" fill="#fbbf24" font-size="11" font-weight="600">F1: Iniciação de Projecto</text>
|
||||
|
||||
<!-- Step boxes -->
|
||||
<rect x="40" y="60" width="100" height="50" rx="6" fill="rgba(30,41,59,0.5)" stroke="#94a3b8" stroke-width="1.5"/>
|
||||
<text x="90" y="78" fill="white" font-size="10" font-weight="600" text-anchor="middle">Novo Projecto</text>
|
||||
<text x="90" y="96" fill="#94a3b8" font-size="8" text-anchor="middle">Repositório</text>
|
||||
|
||||
<line x1="140" y1="85" x2="175" y2="85" stroke="#22d3ee" stroke-width="1.5" marker-end="url(#arrow-cyan)"/>
|
||||
|
||||
<rect x="180" y="60" width="130" height="50" rx="6" fill="rgba(8,51,68,0.4)" stroke="#22d3ee" stroke-width="1.5"/>
|
||||
<text x="245" y="78" fill="white" font-size="10" font-weight="600" text-anchor="middle">desk.project</text>
|
||||
<text x="245" y="96" fill="#94a3b8" font-size="8" text-anchor="middle">+ AGENTS.md</text>
|
||||
|
||||
<line x1="310" y1="85" x2="345" y2="85" stroke="#22d3ee" stroke-width="1.5" marker-end="url(#arrow-cyan)"/>
|
||||
|
||||
<rect x="350" y="60" width="140" height="50" rx="6" fill="rgba(8,51,68,0.4)" stroke="#22d3ee" stroke-width="1.5"/>
|
||||
<text x="420" y="78" fill="white" font-size="10" font-weight="600" text-anchor="middle">docs/PLANS/</text>
|
||||
<text x="420" y="96" fill="#94a3b8" font-size="8" text-anchor="middle">+ docs/SPECS/</text>
|
||||
|
||||
<line x1="490" y1="85" x2="525" y2="85" stroke="#22d3ee" stroke-width="1.5" marker-end="url(#arrow-cyan)"/>
|
||||
|
||||
<!-- Validation step -->
|
||||
<rect x="530" y="55" width="130" height="60" rx="6" fill="rgba(136,19,55,0.2)" stroke="#fb7185" stroke-width="1.5" stroke-dasharray="4,3"/>
|
||||
<text x="595" y="76" fill="#fb7185" font-size="10" font-weight="600" text-anchor="middle">validate-structure</text>
|
||||
<text x="595" y="94" fill="#fb7185" font-size="8" text-anchor="middle">scripts/ .sh</text>
|
||||
|
||||
<line x1="660" y1="85" x2="695" y2="85" stroke="#34d399" stroke-width="1.5" marker-end="url(#arrow-emerald)"/>
|
||||
|
||||
<rect x="700" y="60" width="110" height="50" rx="6" fill="rgba(6,78,59,0.4)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<text x="755" y="80" fill="#34d399" font-size="11" font-weight="600" text-anchor="middle">CONFORME</text>
|
||||
<text x="755" y="96" fill="#94a3b8" font-size="8" text-anchor="middle">Exit 0</text>
|
||||
|
||||
<!-- Error branch -->
|
||||
<path d="M 595 115 L 595 130 Q 595 140 585 140 L 460 140 Q 450 140 450 130 L 450 112" fill="none" stroke="#fb7185" stroke-width="1.2" stroke-dasharray="4,3" marker-end="url(#arrow-rose)"/>
|
||||
<text x="530" y="135" fill="#fb7185" font-size="8">FALHA (exit 1)</text>
|
||||
|
||||
<!-- Phase indicator -->
|
||||
<circle cx="845" cy="85" r="20" fill="rgba(6,78,59,0.3)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<text x="845" y="90" fill="#34d399" font-size="12" font-weight="700" text-anchor="middle">DONE</text>
|
||||
|
||||
<!-- ================================================================
|
||||
SECTION 2: FLUXO DE SESSÃO (Ciclo PDCA)
|
||||
================================================================ -->
|
||||
<rect x="20" y="195" width="1010" height="185" rx="10" fill="transparent" stroke="#34d399" stroke-width="1" stroke-dasharray="8,4"/>
|
||||
<text x="30" y="217" fill="#34d399" font-size="11" font-weight="600">F2: Sessão de Trabalho (Agente/Humano)</text>
|
||||
|
||||
<!-- P - Plan -->
|
||||
<rect x="40" y="240" width="130" height="55" rx="6" fill="rgba(8,51,68,0.4)" stroke="#22d3ee" stroke-width="1.5"/>
|
||||
<text x="105" y="260" fill="white" font-size="10" font-weight="600" text-anchor="middle">1. PLAN</text>
|
||||
<text x="105" y="278" fill="#94a3b8" font-size="8" text-anchor="middle">Contexto: AGENTS.md</text>
|
||||
<text x="105" y="290" fill="#94a3b8" font-size="7" text-anchor="middle">+ MEMORY.md + CARL</text>
|
||||
|
||||
<line x1="170" y1="267" x2="205" y2="267" stroke="#22d3ee" stroke-width="1.5" marker-end="url(#arrow-cyan)"/>
|
||||
|
||||
<!-- D - Do -->
|
||||
<rect x="210" y="240" width="130" height="55" rx="6" fill="rgba(6,78,59,0.4)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<text x="275" y="260" fill="white" font-size="10" font-weight="600" text-anchor="middle">2. DO</text>
|
||||
<text x="275" y="278" fill="#94a3b8" font-size="8" text-anchor="middle">Executar (MCP/SSH)</text>
|
||||
<text x="275" y="290" fill="#94a3b8" font-size="7" text-anchor="middle">Procurar dados reais</text>
|
||||
|
||||
<line x1="340" y1="267" x2="375" y2="267" stroke="#34d399" stroke-width="1.5" marker-end="url(#arrow-emerald)"/>
|
||||
|
||||
<!-- C - Check -->
|
||||
<rect x="380" y="235" width="130" height="65" rx="6" fill="rgba(136,19,55,0.2)" stroke="#fb7185" stroke-width="1.5" stroke-dasharray="4,3"/>
|
||||
<text x="445" y="256" fill="#fb7185" font-size="10" font-weight="600" text-anchor="middle">3. CHECK</text>
|
||||
<text x="445" y="274" fill="#fb7185" font-size="8" text-anchor="middle">Validação estrutural</text>
|
||||
<text x="445" y="286" fill="#94a3b8" font-size="7" text-anchor="middle">Testes / QG</text>
|
||||
<text x="445" y="295" fill="#fb7185" font-size="7" text-anchor="middle">validate-structure.sh</text>
|
||||
|
||||
<line x1="510" y1="267" x2="545" y2="267" stroke="#fb7185" stroke-width="1.5" marker-end="url(#arrow-rose)"/>
|
||||
|
||||
<!-- Check fail branch back to Do -->
|
||||
<path d="M 445 300 L 445 330 Q 445 345 435 345 L 275 345 Q 265 345 265 335 L 265 297" fill="none" stroke="#fb7185" stroke-width="1.2" stroke-dasharray="4,3" marker-end="url(#arrow-rose)"/>
|
||||
<text x="340" y="340" fill="#fb7185" font-size="7">FALHA — corrigir</text>
|
||||
|
||||
<!-- A - Act -->
|
||||
<rect x="550" y="240" width="150" height="55" rx="6" fill="rgba(76,29,149,0.4)" stroke="#a78bfa" stroke-width="1.5"/>
|
||||
<text x="625" y="260" fill="white" font-size="10" font-weight="600" text-anchor="middle">4. ACT</text>
|
||||
<text x="625" y="278" fill="#94a3b8" font-size="8" text-anchor="middle">REGISTAR: MEMORY.md</text>
|
||||
<text x="625" y="290" fill="#94a3b8" font-size="7" text-anchor="middle">+ Comentário CRM</text>
|
||||
|
||||
<line x1="700" y1="267" x2="735" y2="267" stroke="#a78bfa" stroke-width="1.5" marker-end="url(#arrow-violet)"/>
|
||||
|
||||
<!-- Done -->
|
||||
<circle cx="810" cy="267" r="20" fill="rgba(6,78,59,0.3)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<text x="810" y="272" fill="#34d399" font-size="12" font-weight="700" text-anchor="middle">OK</text>
|
||||
|
||||
<!-- ================================================================
|
||||
SECTION 3: SEPARAÇÃO CRM | GITEA | HUB
|
||||
================================================================ -->
|
||||
<rect x="20" y="400" width="1010" height="165" rx="10" fill="transparent" stroke="#a78bfa" stroke-width="1" stroke-dasharray="8,4"/>
|
||||
<text x="30" y="422" fill="#a78bfa" font-size="11" font-weight="600">F3: Separação de Responsabilidades (PROTOCOLO-CRM.md)</text>
|
||||
|
||||
<!-- CRM Column -->
|
||||
<rect x="40" y="445" width="280" height="100" rx="8" fill="rgba(136,19,55,0.15)" stroke="#fb7185" stroke-width="1.5"/>
|
||||
<rect x="40" y="445" width="280" height="22" rx="8" fill="rgba(136,19,55,0.3)"/>
|
||||
<rect x="40" y="459" width="280" height="8" fill="rgba(136,19,55,0.3)"/>
|
||||
<text x="180" y="461" fill="#fb7185" font-size="11" font-weight="600" text-anchor="middle">DESK CRM</text>
|
||||
<text x="180" y="485" fill="#fb7185" font-size="10" font-weight="600" text-anchor="middle">Contentor de Tempo e Custos</text>
|
||||
<text x="60" y="505" fill="#94a3b8" font-size="8">• Task Master (poucas, por projecto)</text>
|
||||
<text x="60" y="519" fill="#94a3b8" font-size="8">• Timer — registo de horas</text>
|
||||
<text x="60" y="533" fill="#94a3b8" font-size="8">• Comentários — visibilidade gestor/cliente</text>
|
||||
|
||||
<!-- Divider -->
|
||||
<text x="340" y="495" fill="#475569" font-size="14" text-anchor="middle">|</text>
|
||||
<text x="340" y="509" fill="#475569" font-size="14" text-anchor="middle">|</text>
|
||||
<text x="340" y="523" fill="#475569" font-size="14" text-anchor="middle">|</text>
|
||||
|
||||
<!-- Gitea Column -->
|
||||
<rect x="370" y="445" width="280" height="100" rx="8" fill="rgba(6,78,59,0.15)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<rect x="370" y="445" width="280" height="22" rx="8" fill="rgba(6,78,59,0.3)"/>
|
||||
<rect x="370" y="459" width="280" height="8" fill="rgba(6,78,59,0.3)"/>
|
||||
<text x="510" y="461" fill="#34d399" font-size="11" font-weight="600" text-anchor="middle">GITEA / REPO</text>
|
||||
<text x="510" y="485" fill="#34d399" font-size="10" font-weight="600" text-anchor="middle">Oficina Técnica</text>
|
||||
<text x="390" y="505" fill="#94a3b8" font-size="8">• Código, branches, PRs</text>
|
||||
<text x="390" y="519" fill="#94a3b8" font-size="8">• Issues — detalhe técnico</text>
|
||||
<text x="390" y="533" fill="#94a3b8" font-size="8">• Milestones + CI/CD</text>
|
||||
|
||||
<!-- Divider -->
|
||||
<text x="670" y="495" fill="#475569" font-size="14" text-anchor="middle">|</text>
|
||||
<text x="670" y="509" fill="#475569" font-size="14" text-anchor="middle">|</text>
|
||||
<text x="670" y="523" fill="#475569" font-size="14" text-anchor="middle">|</text>
|
||||
|
||||
<!-- Hub Column -->
|
||||
<rect x="690" y="445" width="320" height="100" rx="8" fill="rgba(120,53,15,0.15)" stroke="#fbbf24" stroke-width="1.5"/>
|
||||
<rect x="690" y="445" width="320" height="22" rx="8" fill="rgba(120,53,15,0.3)"/>
|
||||
<rect x="690" y="459" width="320" height="8" fill="rgba(120,53,15,0.3)"/>
|
||||
<text x="850" y="461" fill="#fbbf24" font-size="11" font-weight="600" text-anchor="middle">HUB OBSIDIAN (06-Operacoes)</text>
|
||||
<text x="850" y="485" fill="#fbbf24" font-size="10" font-weight="600" text-anchor="middle">Fonte de Verdade Centralizada</text>
|
||||
<text x="710" y="505" fill="#94a3b8" font-size="8">• Procedimentos (PROC-*)</text>
|
||||
<text x="710" y="519" fill="#94a3b8" font-size="8">• Quick References (QR-*)</text>
|
||||
<text x="710" y="533" fill="#94a3b8" font-size="8">• Runbooks — troubleshooting</text>
|
||||
|
||||
<!-- ================================================================
|
||||
SECTION 4: ECOSSISTEMA DE GOVERNANÇA
|
||||
================================================================ -->
|
||||
<rect x="20" y="585" width="1010" height="180" rx="10" fill="transparent" stroke="#fb7185" stroke-width="1" stroke-dasharray="8,4"/>
|
||||
<text x="30" y="607" fill="#fb7185" font-size="11" font-weight="600">F4: Ecossistema de Governança</text>
|
||||
|
||||
<!-- CARL -->
|
||||
<rect x="40" y="630" width="220" height="55" rx="6" fill="rgba(76,29,149,0.4)" stroke="#a78bfa" stroke-width="1.5"/>
|
||||
<text x="150" y="650" fill="white" font-size="10" font-weight="600" text-anchor="middle">CARL — Regras Activas</text>
|
||||
<text x="150" y="668" fill="#94a3b8" font-size="8" text-anchor="middle">MODELO-ORGANIZACAO</text>
|
||||
|
||||
<line x1="260" y1="657" x2="295" y2="657" stroke="#a78bfa" stroke-width="1.5" marker-end="url(#arrow-violet)"/>
|
||||
|
||||
<!-- ESTRUTURA.md -->
|
||||
<rect x="300" y="630" width="160" height="55" rx="6" fill="rgba(8,51,68,0.4)" stroke="#22d3ee" stroke-width="1.5"/>
|
||||
<text x="380" y="650" fill="white" font-size="10" font-weight="600" text-anchor="middle">ESTRUTURA.md</text>
|
||||
<text x="380" y="668" fill="#94a3b8" font-size="8" text-anchor="middle">Hierarquia Standard</text>
|
||||
|
||||
<line x1="460" y1="657" x2="495" y2="657" stroke="#22d3ee" stroke-width="1.5" marker-end="url(#arrow-cyan)"/>
|
||||
|
||||
<!-- AGENTS.md -->
|
||||
<rect x="500" y="630" width="160" height="55" rx="6" fill="rgba(8,51,68,0.4)" stroke="#22d3ee" stroke-width="1.5"/>
|
||||
<text x="580" y="650" fill="white" font-size="10" font-weight="600" text-anchor="middle">AGENTS.md</text>
|
||||
<text x="580" y="668" fill="#94a3b8" font-size="8" text-anchor="middle">Directrizes de Agentes</text>
|
||||
|
||||
<line x1="660" y1="657" x2="695" y2="657" stroke="#22d3ee" stroke-width="1.5" marker-end="url(#arrow-cyan)"/>
|
||||
|
||||
<!-- Script -->
|
||||
<rect x="700" y="625" width="150" height="65" rx="6" fill="rgba(136,19,55,0.2)" stroke="#fb7185" stroke-width="1.5" stroke-dasharray="4,3"/>
|
||||
<text x="775" y="646" fill="#fb7185" font-size="10" font-weight="600" text-anchor="middle">validate-structure.sh</text>
|
||||
<text x="775" y="664" fill="#fb7185" font-size="8" text-anchor="middle">Validação automática</text>
|
||||
<text x="775" y="676" fill="#94a3b8" font-size="7" text-anchor="middle">Exit 0 = OK</text>
|
||||
|
||||
<line x1="850" y1="657" x2="885" y2="657" stroke="#fb7185" stroke-width="1.5" marker-end="url(#arrow-rose)"/>
|
||||
|
||||
<!-- MEMORY.md -->
|
||||
<rect x="890" y="630" width="120" height="55" rx="6" fill="rgba(6,78,59,0.4)" stroke="#34d399" stroke-width="1.5"/>
|
||||
<text x="950" y="650" fill="white" font-size="10" font-weight="600" text-anchor="middle">MEMORY.md</text>
|
||||
<text x="950" y="668" fill="#94a3b8" font-size="8" text-anchor="middle">Registo Final</text>
|
||||
|
||||
<!-- Bottom: AGENTS.md validation link -->
|
||||
<path d="M 580 685 L 580 705 Q 580 715 570 715 L 150 715 Q 140 715 140 705 L 140 687" fill="none" stroke="#fb7185" stroke-width="1.2" stroke-dasharray="4,3" marker-end="url(#arrow-rose)"/>
|
||||
<text x="360" y="712" fill="#fb7185" font-size="7">AGENTS.md referência o domínio CARL correspondente</text>
|
||||
|
||||
<!-- ================================================================
|
||||
LEGEND
|
||||
================================================================ -->
|
||||
<rect x="20" y="780" width="1000" height="45" rx="8" fill="transparent" stroke="#1e293b" stroke-width="1"/>
|
||||
<text x="36" y="797" fill="white" font-size="9" font-weight="600">Legenda:</text>
|
||||
|
||||
<rect x="120" y="787" width="14" height="9" rx="2" fill="rgba(8,51,68,0.4)" stroke="#22d3ee" stroke-width="1"/>
|
||||
<text x="139" y="795" fill="#94a3b8" font-size="8">Governance</text>
|
||||
|
||||
<rect x="230" y="787" width="14" height="9" rx="2" fill="rgba(6,78,59,0.4)" stroke="#34d399" stroke-width="1"/>
|
||||
<text x="249" y="795" fill="#94a3b8" font-size="8">Execução</text>
|
||||
|
||||
<rect x="330" y="787" width="14" height="9" rx="2" fill="rgba(76,29,149,0.4)" stroke="#a78bfa" stroke-width="1"/>
|
||||
<text x="349" y="795" fill="#94a3b8" font-size="8">Registo</text>
|
||||
|
||||
<rect x="420" y="787" width="14" height="9" rx="2" fill="rgba(136,19,55,0.2)" stroke="#fb7185" stroke-width="1" stroke-dasharray="2,2"/>
|
||||
<text x="439" y="795" fill="#94a3b8" font-size="8">Validação / Segurança</text>
|
||||
|
||||
<line x1="570" y1="791" x2="584" y2="791" stroke="#fb7185" stroke-width="1.2" stroke-dasharray="3,3"/>
|
||||
<text x="589" y="795" fill="#94a3b8" font-size="8">Correcção (feedback loop)</text>
|
||||
|
||||
<rect x="710" y="787" width="14" height="9" rx="2" fill="transparent" stroke="#fbbf24" stroke-width="1" stroke-dasharray="4,2"/>
|
||||
<text x="729" y="795" fill="#94a3b8" font-size="8">Fluxo/Fase</text>
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
<!-- Info Cards -->
|
||||
<div class="cards">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-dot cyan"></div>
|
||||
<h3>F1: Iniciação</h3>
|
||||
</div>
|
||||
<ul>
|
||||
<li>• Criar repositório e desk.project</li>
|
||||
<li>• Scaffold docs/PLANS + docs/SPECS</li>
|
||||
<li>• AGENTS.md com directrizes do projecto</li>
|
||||
<li>• Validar com scripts/validate-structure.sh</li>
|
||||
<li>• Só é "conforme" com exit 0</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-dot emerald"></div>
|
||||
<h3>F2: Sessão PDCA</h3>
|
||||
</div>
|
||||
<ul>
|
||||
<li>• PLAN: Carregar AGENTS.md + MEMORY.md + CARL</li>
|
||||
<li>• DO: Executar MCP/SSH — nunca assumir</li>
|
||||
<li>• CHECK: validate-structure.sh + testes</li>
|
||||
<li>• ACT: REGISTAR em MEMORY.md + CRM</li>
|
||||
<li>• Se FALHA: loop back ao DO</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-dot violet"></div>
|
||||
<h3>F3+F4: Governança</h3>
|
||||
</div>
|
||||
<ul>
|
||||
<li>• CRM = tempo e custos (não granular)</li>
|
||||
<li>• Gitea = código, issues, milestones</li>
|
||||
<li>• Hub (06-Operacoes) = PROCs + Runbooks</li>
|
||||
<li>• CARL regista decisões com recall keywords</li>
|
||||
<li>• AGENTS.md aponta para CARL + MEMORY.md</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer -->
|
||||
<p class="footer">
|
||||
Modelo-Organizacao-Proc-Dev • Descomplicar® • Task CRM #2134 • Domínio CARL: MODELO-ORGANIZACAO
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,195 @@
|
||||
1|<mxfile host="Electron">
|
||||
2| <diagram name="Workflow - Modelo Organizacao" id="elohOo-F_ihNlNyifD_3">
|
||||
3| <mxGraphModel dx="1178" dy="733" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="960" math="0" shadow="0">
|
||||
4| <root>
|
||||
5| <mxCell id="0" />
|
||||
6| <mxCell id="1" parent="0" />
|
||||
7| <mxCell id="3" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Helvetica;fontColor=#FBBF24;" value="F1: Iniciação de Projecto" vertex="1">
|
||||
8| <mxGeometry height="30" width="280" x="60" y="30" as="geometry" />
|
||||
9| </mxCell>
|
||||
10| <mxCell id="4" parent="1" style="rounded=1;arcSize=12;fillColor=none;strokeColor=#FBBF24;strokeWidth=1;dashed=1;dashPattern=8 4;fontFamily=Helvetica;" value="" vertex="1">
|
||||
11| <mxGeometry height="130" width="920" x="40" y="20" as="geometry" />
|
||||
12| </mxCell>
|
||||
13| <mxCell id="5" parent="1" style="rounded=1;arcSize=8;fillColor=#1E293B;strokeColor=#94A3B8;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" value="Novo Projecto" vertex="1">
|
||||
14| <mxGeometry height="50" width="110" x="60" y="65" as="geometry" />
|
||||
15| </mxCell>
|
||||
16| <mxCell id="6" parent="1" style="rounded=1;arcSize=8;fillColor=#082B44;strokeColor=#22D3EE;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" value="desk.project + AGENTS.md" vertex="1">
|
||||
17| <mxGeometry height="50" width="130" x="220" y="65" as="geometry" />
|
||||
18| </mxCell>
|
||||
19| <mxCell id="7" parent="1" style="rounded=1;arcSize=8;fillColor=#082B44;strokeColor=#22D3EE;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" value="docs/PLANS/ + docs/SPECS/" vertex="1">
|
||||
20| <mxGeometry height="50" width="140" x="400" y="65" as="geometry" />
|
||||
21| </mxCell>
|
||||
22| <mxCell id="8" parent="1" style="rounded=1;arcSize=8;fillColor=#2D0A13;strokeColor=#FB7185;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;dashed=1;dashPattern=4 3;" value="validate-structure.sh" vertex="1">
|
||||
23| <mxGeometry height="56" width="140" x="590" y="62" as="geometry" />
|
||||
24| </mxCell>
|
||||
25| <mxCell id="9" parent="1" style="rounded=1;arcSize=8;fillColor=#0A4E3B;strokeColor=#34D399;fontColor=#FFFFFF;fontSize=11;fontStyle=1;fontFamily=Helvetica;" value="CONFORME" vertex="1">
|
||||
26| <mxGeometry height="50" width="110" x="790" y="65" as="geometry" />
|
||||
27| </mxCell>
|
||||
28| <mxCell id="10" edge="1" parent="1" source="5" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="6" value="">
|
||||
29| <mxGeometry relative="1" as="geometry" />
|
||||
30| </mxCell>
|
||||
31| <mxCell id="11" edge="1" parent="1" source="6" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="7" value="">
|
||||
32| <mxGeometry relative="1" as="geometry" />
|
||||
33| </mxCell>
|
||||
34| <mxCell id="12" edge="1" parent="1" source="7" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="8" value="">
|
||||
35| <mxGeometry relative="1" as="geometry" />
|
||||
36| </mxCell>
|
||||
37| <mxCell id="13" edge="1" parent="1" source="8" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="9" value="">
|
||||
38| <mxGeometry relative="1" as="geometry" />
|
||||
39| </mxCell>
|
||||
40| <mxCell id="14" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=8;fontFamily=Helvetica;fontColor=#FB7185;" value="FALHA" vertex="1">
|
||||
41| <mxGeometry height="16" width="60" x="630" y="128" as="geometry" />
|
||||
42| </mxCell>
|
||||
43| <mxCell id="15" edge="1" parent="1" source="8" style="endArrow=classic;endFill=1;strokeColor=#FB7185;strokeWidth=1;rounded=1;dashed=1;dashPattern=4 3;exitX=0.5;exitY=1;entryX=0.5;entryY=1;" target="6" value="">
|
||||
44| <mxGeometry relative="1" as="geometry" />
|
||||
45| </mxCell>
|
||||
46| <mxCell id="16" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Helvetica;fontColor=#34D399;" value="F2: Sessão de Trabalho (PDCA)" vertex="1">
|
||||
47| <mxGeometry height="30" width="340" x="60" y="180" as="geometry" />
|
||||
48| </mxCell>
|
||||
49| <mxCell id="17" parent="1" style="rounded=1;arcSize=12;fillColor=none;strokeColor=#34D399;strokeWidth=1;dashed=1;dashPattern=8 4;fontFamily=Helvetica;" value="" vertex="1">
|
||||
50| <mxGeometry height="160" width="920" x="40" y="170" as="geometry" />
|
||||
51| </mxCell>
|
||||
52| <mxCell id="18" parent="1" style="rounded=1;arcSize=8;fillColor=#082B44;strokeColor=#22D3EE;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" value="1. PLAN
Carregar contexto AGENTS.md
+ MEMORY.md + CARL" vertex="1">
|
||||
53| <mxGeometry height="60" width="150" x="60" y="220" as="geometry" />
|
||||
54| </mxCell>
|
||||
55| <mxCell id="19" parent="1" style="rounded=1;arcSize=8;fillColor=#0A4E3B;strokeColor=#34D399;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" value="2. DO
Executar MCPs
Procurar dados reais" vertex="1">
|
||||
56| <mxGeometry height="60" width="140" x="260" y="220" as="geometry" />
|
||||
57| </mxCell>
|
||||
58| <mxCell id="20" parent="1" style="rounded=1;arcSize=8;fillColor=#2D0A13;strokeColor=#FB7185;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;dashed=1;dashPattern=4 3;" value="3. CHECK
validate-structure.sh
Testes / Quality Gate" vertex="1">
|
||||
59| <mxGeometry height="64" width="150" x="450" y="218" as="geometry" />
|
||||
60| </mxCell>
|
||||
61| <mxCell id="21" parent="1" style="rounded=1;arcSize=8;fillColor=#4C1D95;strokeColor=#A78BFA;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" value="4. ACT
REGISTAR MEMORY.md
+ CRM" vertex="1">
|
||||
62| <mxGeometry height="60" width="140" x="660" y="220" as="geometry" />
|
||||
63| </mxCell>
|
||||
64| <mxCell id="22" parent="1" style="ellipse;fillColor=#0A4E3B;strokeColor=#34D399;fontColor=#34D399;fontSize=12;fontStyle=1;fontFamily=Helvetica;" value="OK" vertex="1">
|
||||
65| <mxGeometry height="40" width="46" x="850" y="230" as="geometry" />
|
||||
66| </mxCell>
|
||||
67| <mxCell id="23" edge="1" parent="1" source="18" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="19" value="">
|
||||
68| <mxGeometry relative="1" as="geometry" />
|
||||
69| </mxCell>
|
||||
70| <mxCell id="24" edge="1" parent="1" source="19" style="endArrow=classic;endFill=1;strokeColor=#34D399;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="20" value="">
|
||||
71| <mxGeometry relative="1" as="geometry" />
|
||||
72| </mxCell>
|
||||
73| <mxCell id="25" edge="1" parent="1" source="20" style="endArrow=classic;endFill=1;strokeColor=#FB7185;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="21" value="">
|
||||
74| <mxGeometry relative="1" as="geometry" />
|
||||
75| </mxCell>
|
||||
76| <mxCell id="26" edge="1" parent="1" source="21" style="endArrow=classic;endFill=1;strokeColor=#A78BFA;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="22" value="">
|
||||
77| <mxGeometry relative="1" as="geometry" />
|
||||
78| </mxCell>
|
||||
79| <mxCell id="27" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=8;fontFamily=Helvetica;fontColor=#FB7185;" value="FALHA — corrigir" vertex="1">
|
||||
80| <mxGeometry height="16" width="100" x="490" y="300" as="geometry" />
|
||||
81| </mxCell>
|
||||
82| <mxCell id="28" edge="1" parent="1" source="20" style="endArrow=classic;endFill=1;strokeColor=#FB7185;strokeWidth=1;rounded=1;dashed=1;dashPattern=4 3;exitX=0.5;exitY=1;entryX=0.5;entryY=1;" target="19" value="">
|
||||
83| <mxGeometry relative="1" as="geometry" />
|
||||
84| </mxCell>
|
||||
85| <mxCell id="29" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Helvetica;fontColor=#A78BFA;" value="F3: Separação de Responsabilidades" vertex="1">
|
||||
86| <mxGeometry height="30" width="340" x="60" y="370" as="geometry" />
|
||||
87| </mxCell>
|
||||
88| <mxCell id="30" parent="1" style="rounded=1;arcSize=12;fillColor=none;strokeColor=#A78BFA;strokeWidth=1;dashed=1;dashPattern=8 4;fontFamily=Helvetica;" value="" vertex="1">
|
||||
89| <mxGeometry height="160" width="920" x="40" y="360" as="geometry" />
|
||||
90| </mxCell>
|
||||
91| <mxCell id="31" parent="1" style="rounded=1;arcSize=6;fillColor=#881337;strokeColor=#FB7185;fontColor=#FB7185;fontSize=11;fontStyle=1;fontFamily=Helvetica;" value="DESK CRM" vertex="1">
|
||||
92| <mxGeometry height="24" width="260" x="60" y="400" as="geometry" />
|
||||
93| </mxCell>
|
||||
94| <mxCell id="32" parent="1" style="rounded=1;arcSize=6;fillColor=#1A0A0E;strokeColor=#FB7185;fontColor=#94A3B8;fontSize=8;fontFamily=Helvetica;align=left;verticalAlign=top;whiteSpace=wrap;" value=" Contentor de Tempo e Custos • Task Master (poucas, por projecto) • Timer — registo de horas • Comentários — visibilidade" vertex="1">
|
||||
95| <mxGeometry height="80" width="260" x="60" y="424" as="geometry" />
|
||||
96| </mxCell>
|
||||
97| <mxCell id="33" parent="1" style="rounded=1;arcSize=6;fillColor=#0A4E3B;strokeColor=#34D399;fontColor=#34D399;fontSize=11;fontStyle=1;fontFamily=Helvetica;" value="GITEA / REPO" vertex="1">
|
||||
98| <mxGeometry height="24" width="260" x="370" y="400" as="geometry" />
|
||||
99| </mxCell>
|
||||
100| <mxCell id="34" parent="1" style="rounded=1;arcSize=6;fillColor=#0A1F0F;strokeColor=#34D399;fontColor=#94A3B8;fontSize=8;fontFamily=Helvetica;align=left;verticalAlign=top;whiteSpace=wrap;" value=" Oficina Técnica • Código, branches, PRs • Issues — detalhe técnico • Milestones + CI/CD" vertex="1">
|
||||
101| <mxGeometry height="80" width="260" x="370" y="424" as="geometry" />
|
||||
102| </mxCell>
|
||||
103| <mxCell id="35" parent="1" style="rounded=1;arcSize=6;fillColor=#3D2800;strokeColor=#FBBF24;fontColor=#FBBF24;fontSize=11;fontStyle=1;fontFamily=Helvetica;" value="HUB OBSIDIAN 06-Operacoes/" vertex="1">
|
||||
104| <mxGeometry height="24" width="260" x="680" y="400" as="geometry" />
|
||||
105| </mxCell>
|
||||
106| <mxCell id="36" parent="1" style="rounded=1;arcSize=6;fillColor=#0F2D0A;strokeColor=#FBBF24;fontColor=#94A3B8;fontSize=8;fontFamily=Helvetica;align=left;verticalAlign=top;whiteSpace=wrap;" value=" Fonte de Verdade Centralizada • Procedimentos (PROC-*) • Quick References (QR-*) • Runbooks — troubleshooting" vertex="1">
|
||||
107| <mxGeometry height="80" width="260" x="680" y="424" as="geometry" />
|
||||
108| </mxCell>
|
||||
109| <mxCell id="37" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Helvetica;fontColor=#FB7185;" value="F4: Ecossistema de Governança" vertex="1">
|
||||
110| <mxGeometry height="30" width="300" x="60" y="560" as="geometry" />
|
||||
111| </mxCell>
|
||||
112| <mxCell id="38" parent="1" style="rounded=1;arcSize=12;fillColor=none;strokeColor=#FB7185;strokeWidth=1;dashed=1;dashPattern=8 4;fontFamily=Helvetica;" value="" vertex="1">
|
||||
113| <mxGeometry height="150" width="920" x="40" y="550" as="geometry" />
|
||||
114| </mxCell>
|
||||
115| <mxCell id="39" parent="1" style="rounded=1;arcSize=8;fillColor=#4C1D95;strokeColor=#A78BFA;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" value="CARL MODELO-ORGANIZACAO" vertex="1">
|
||||
116| <mxGeometry height="50" width="160" x="60" y="600" as="geometry" />
|
||||
117| </mxCell>
|
||||
118| <mxCell id="40" parent="1" style="rounded=1;arcSize=8;fillColor=#082B44;strokeColor=#22D3EE;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" value="ESTRUTURA.md" vertex="1">
|
||||
119| <mxGeometry height="50" width="140" x="270" y="600" as="geometry" />
|
||||
120| </mxCell>
|
||||
121| <mxCell id="41" parent="1" style="rounded=1;arcSize=8;fillColor=#082B44;strokeColor=#22D3EE;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" value="AGENTS.md" vertex="1">
|
||||
122| <mxGeometry height="50" width="130" x="460" y="600" as="geometry" />
|
||||
123| </mxCell>
|
||||
124| <mxCell id="42" parent="1" style="rounded=1;arcSize=8;fillColor=#2D0A13;strokeColor=#FB7185;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;dashed=1;dashPattern=4 3;" value="validate-structure.sh" vertex="1">
|
||||
125| <mxGeometry height="54" width="140" x="640" y="598" as="geometry" />
|
||||
126| </mxCell>
|
||||
127| <mxCell id="43" parent="1" style="rounded=1;arcSize=8;fillColor=#0A4E3B;strokeColor=#34D399;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" value="MEMORY.md" vertex="1">
|
||||
128| <mxGeometry height="50" width="110" x="830" y="600" as="geometry" />
|
||||
129| </mxCell>
|
||||
130| <mxCell id="44" edge="1" parent="1" source="39" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="40" value="">
|
||||
131| <mxGeometry relative="1" as="geometry" />
|
||||
132| </mxCell>
|
||||
133| <mxCell id="45" edge="1" parent="1" source="40" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="41" value="">
|
||||
134| <mxGeometry relative="1" as="geometry" />
|
||||
135| </mxCell>
|
||||
136| <mxCell id="46" edge="1" parent="1" source="41" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="42" value="">
|
||||
137| <mxGeometry relative="1" as="geometry" />
|
||||
138| </mxCell>
|
||||
139| <mxCell id="47" edge="1" parent="1" source="42" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" target="43" value="">
|
||||
140| <mxGeometry relative="1" as="geometry" />
|
||||
141| </mxCell>
|
||||
142| <mxCell id="48" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=8;fontFamily=Helvetica;fontColor=#FB7185;" value="AGENTS.md referencia CARL" vertex="1">
|
||||
143| <mxGeometry height="16" width="140" x="510" y="665" as="geometry" />
|
||||
144| </mxCell>
|
||||
145| <mxCell id="49" edge="1" parent="1" source="41" style="endArrow=classic;endFill=1;strokeColor=#FB7185;strokeWidth=1;rounded=1;dashed=1;dashPattern=4 3;exitX=0.5;exitY=1;entryX=0.5;entryY=1;" target="39" value="">
|
||||
146| <mxGeometry relative="1" as="geometry" />
|
||||
147| </mxCell>
|
||||
148| <!-- ===== SECTION 5: DEPLOY ===== -->
|
||||
<mxCell id="50" value="F5: Deploy para Produção" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=14;fontStyle=1;fontFamily=Helvetica;fontColor=#34D399;" vertex="1" parent="1">
|
||||
<mxGeometry x="60" y="730" width="300" height="30" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="51" value="" style="rounded=1;arcSize=12;fillColor=none;strokeColor=#34D399;strokeWidth=1;dashed=1;dashPattern=8 4;fontFamily=Helvetica;" vertex="1" parent="1">
|
||||
<mxGeometry x="40" y="720" width="920" height="150" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="52" value="Feature Branch" style="rounded=1;arcSize=8;fillColor=#1E293B;strokeColor=#94A3B8;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" vertex="1" parent="1">
|
||||
<mxGeometry x="60" y="760" width="100" height="50" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="53" value="CI (lint + testes + segurança)" style="rounded=1;arcSize=8;fillColor=#082B44;strokeColor=#22D3EE;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" vertex="1" parent="1">
|
||||
<mxGeometry x="210" y="760" width="130" height="50" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="54" value="" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="52" target="53">
|
||||
<mxGeometry relative="1" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="55" value="PR → Merge (branch protection)" style="rounded=1;arcSize=8;fillColor=#082B44;strokeColor=#22D3EE;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" vertex="1" parent="1">
|
||||
<mxGeometry x="390" y="760" width="150" height="50" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="56" value="" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="53" target="55">
|
||||
<mxGeometry relative="1" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="57" value="Deploy Automático" style="rounded=1;arcSize=8;fillColor=#0A4E3B;strokeColor=#34D399;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" vertex="1" parent="1">
|
||||
<mxGeometry x="590" y="760" width="120" height="50" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="58" value="" style="endArrow=classic;endFill=1;strokeColor=#22D3EE;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="55" target="57">
|
||||
<mxGeometry relative="1" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="59" value="Validar + Smoke Tests" style="rounded=1;arcSize=8;fillColor=#2D0A13;strokeColor=#FB7185;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;dashed=1;dashPattern=4 3;" vertex="1" parent="1">
|
||||
<mxGeometry x="760" y="758" width="150" height="54" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="60" value="" style="endArrow=classic;endFill=1;strokeColor=#34D399;rounded=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="57" target="59">
|
||||
<mxGeometry relative="1" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="61" value="Deploy Guard (CI verde)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=8;fontFamily=Helvetica;fontColor=#FB7185;" vertex="1" parent="1">
|
||||
<mxGeometry x="430" y="830" width="140" height="16" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="62" value="REGRA: nunca deployar sobre CI vermelho" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=8;fontStyle=2;fontFamily=Helvetica;fontColor=#FB7185;" vertex="1" parent="1">
|
||||
<mxGeometry x="630" y="830" width="200" height="16" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="63" value="Rollback Plan" style="rounded=1;arcSize=8;fillColor=#4C1D95;strokeColor=#A78BFA;fontColor=#FFFFFF;fontSize=9;fontStyle=1;fontFamily=Helvetica;" vertex="1" parent="1">
|
||||
<mxGeometry x="60" y="830" width="120" height="24" as="geometry"/>
|
||||
</mxCell>
|
||||
</root>
|
||||
149| </mxGraphModel>
|
||||
150| </diagram>
|
||||
151|</mxfile>
|
||||
152|
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
type: Note
|
||||
title: 'Pesquisa — bi-descomplicar'
|
||||
timestamp: 2026-06-30
|
||||
layer: wiki
|
||||
---
|
||||
|
||||
# Pesquisa
|
||||
|
||||
Documentar pesquisa aqui.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Document
|
||||
tags: [projecto, modelo, organizacao, audit]
|
||||
title: Audit
|
||||
description: >-
|
||||
Registo cronológico de todas as auditorias executadas. Findings detalhados em `findings/`
|
||||
timestamp: 2026-05-16T19:21:21.662617+00:00
|
||||
---
|
||||
# Audit Log — Modelo-Organizacao-Proc-Dev
|
||||
|
||||
Registo cronológico de todas as auditorias executadas. Findings detalhados em `findings/`.
|
||||
|
||||
---
|
||||
|
||||
## 2026-05-16 — AUDIT-ECO #001 (1ª trimestral)
|
||||
|
||||
**Auditor:** Claude Code (staff_id=25)
|
||||
**Método:** validação directa de ficheiros de config + permissões + MCPs declarados
|
||||
**Âmbito:** 4 agentes (Claude, Gemini, Hermes, OpenCode)
|
||||
|
||||
### Resultado global
|
||||
|
||||
| Dimensão | Estado |
|
||||
|----------|--------|
|
||||
| Protocolo de sessão (STATUS/MEMORY) | ✅ 4/4 agentes |
|
||||
| Regra 48 (dev local) | ✅ 4/4 |
|
||||
| Gitea vs Desk CRM | ✅ 4/4 |
|
||||
| Worklog markdown (não HTML) | ✅ 4/4 |
|
||||
| Credenciais com permissões 600 | ✅ 5/5 ficheiros |
|
||||
| MCPs essenciais completos | ⚠️ 2/4 agentes |
|
||||
| CARL domínio MODELO-ORGANIZACAO | ✅ 9 regras, 27 keywords |
|
||||
|
||||
### Findings
|
||||
|
||||
- **F-001** — Hermes sem MCPs essenciais (`desk-crm-v3`, `mcp-time`, `memory-supabase`, `ssh-unified`, `notebooklm`). Severidade: **High**.
|
||||
- **F-002** — Gemini sem `desk-crm-v3` (tem apenas `desk-project-minimal`) e sem `mcp-time`. Severidade: **Medium**.
|
||||
|
||||
### Conformes
|
||||
|
||||
- Claude Code: protocolo completo, CARL activo, MCPs completos.
|
||||
- OpenCode: protocolo adicionado nesta sessão, todos MCPs essenciais activos, credenciais movidas para `~/.opencode-secrets` (600).
|
||||
- Worklog HTML eliminado em todos os agentes.
|
||||
|
||||
### Próxima AUDIT-ECO
|
||||
|
||||
Trimestral → **2026-08-16** (ou antes se mudança de agente/config).
|
||||
|
||||
---
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Document
|
||||
tags: [projecto, modelo, organizacao, audit]
|
||||
title: F 001 Hermes Mcps Incompletos
|
||||
description: >-
|
||||
Finding F-001: Hermes sem MCPs essenciais — desk-crm-v3, mcp-time, ssh-unified em falta, severidade High.
|
||||
timestamp: 2026-05-16T19:21:33.900726+00:00
|
||||
---
|
||||
# F-001 — Hermes sem MCPs essenciais
|
||||
|
||||
**Data:** 2026-05-16
|
||||
**Tipo:** ECO
|
||||
**Severidade:** High
|
||||
**Estado:** Open
|
||||
|
||||
## Descrição
|
||||
|
||||
O `~/.hermes/config.yaml` declara apenas `mcp-gitea` (local Node.js). Faltam:
|
||||
|
||||
- `desk-crm-v3` (planeado no ECOSYSTEM.md — "✅" para Hermes)
|
||||
- `mcp-time`
|
||||
- `memory-supabase`
|
||||
- `ssh-unified`
|
||||
- `notebooklm`
|
||||
|
||||
Apenas `memory_enabled: true` (memória interna do Hermes, não Supabase).
|
||||
|
||||
## Impacto
|
||||
|
||||
Hermes não consegue:
|
||||
- Criar/actualizar tasks Desk CRM (Sistema Triangular comprometido)
|
||||
- Consultar timestamps via MCP (cai para `date` local — sem timezone garantido)
|
||||
- Persistir conhecimento no Supabase (memória só interna)
|
||||
- Executar comandos em servidores remotos via SSH (operações de infra impossíveis)
|
||||
- Consultar os 65 notebooks NotebookLM
|
||||
|
||||
## Resolução
|
||||
|
||||
Adicionar entradas MCP no `~/.hermes/config.yaml`. Endpoints já existem no gateway:
|
||||
- `gateway.descomplicar.pt/v1/desk-crm/mcp` (3150)
|
||||
- `gateway.descomplicar.pt/v1/memory/mcp` (3151)
|
||||
- `gateway.descomplicar.pt/v1/mcp-time/mcp`
|
||||
- `gateway.descomplicar.pt/v1/ssh-unified/mcp`
|
||||
- `gateway.descomplicar.pt/v1/notebooklm/mcp`
|
||||
|
||||
Tipo: `http` (mesmo padrão do MCP EasyPanel adicionado em 2026-05-13 sessão 3).
|
||||
|
||||
## Referências
|
||||
|
||||
- Issue Gitea: a criar
|
||||
- ECOSYSTEM.md §9 (tabela MCPs por agente)
|
||||
- MEMORY.md (Hub) — `mcp-gateway.md`
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
layer: wiki
|
||||
type: Document
|
||||
tags: [projecto, modelo, organizacao, audit]
|
||||
title: F 002 Gemini Mcps Parciais
|
||||
description: >-
|
||||
Finding F-002: Gemini sem desk-crm-v3 e mcp-time — MCPs parciais no agente Gemini, severidade Medium.
|
||||
timestamp: 2026-05-16T19:21:44.099816+00:00
|
||||
---
|
||||
# F-002 — Gemini sem desk-crm-v3 e mcp-time
|
||||
|
||||
**Data:** 2026-05-16
|
||||
**Tipo:** ECO
|
||||
**Severidade:** Medium
|
||||
**Estado:** Open
|
||||
|
||||
## Descrição
|
||||
|
||||
`~/.gemini/settings.json` declara 8 MCP servers, mas:
|
||||
|
||||
- Usa `desk-project-minimal` (Node.js local) em vez de `desk-crm-v3` (gateway HTTP, ferramentas completas)
|
||||
- Não tem `mcp-time` (ECOSYSTEM.md §9 marca como "adicionar")
|
||||
|
||||
Restantes essenciais OK: `gitea`, `memory-supabase`, `notebooklm`, `filesystem`, `carl`.
|
||||
|
||||
## Impacto
|
||||
|
||||
- `desk-project-minimal` expõe ~10 ferramentas vs `desk-crm-v3` com >150. Gemini não consegue gerir leads, propostas, facturas, analytics CRM.
|
||||
- Sem `mcp-time`, Gemini cai para `date` local — risco de timezone em conversões.
|
||||
|
||||
## Resolução
|
||||
|
||||
Adicionar ao `~/.gemini/settings.json > mcpServers`:
|
||||
|
||||
```json
|
||||
"desk-crm-v3": {"httpUrl": "https://gateway.descomplicar.pt/v1/desk-crm/mcp"},
|
||||
"mcp-time": {"httpUrl": "https://gateway.descomplicar.pt/v1/mcp-time/mcp"}
|
||||
```
|
||||
|
||||
Manter `desk-project-minimal` se for ainda usado para projectos locais — caso contrário remover.
|
||||
|
||||
## Referências
|
||||
|
||||
- ECOSYSTEM.md §9
|
||||
@@ -0,0 +1,9 @@
|
||||
# bi-descomplicar
|
||||
|
||||
## Documentação
|
||||
|
||||
- [README](README.md)
|
||||
- [AGENTS](AGENTS.md)
|
||||
- [STATUS](STATUS.md)
|
||||
- [MEMORY](MEMORY.md)
|
||||
- [CHANGELOG](CHANGELOG.md)
|
||||
Reference in New Issue
Block a user