Cópia estática
Copiado de docs/architecture/overview.md em https://github.com/poppy-team/prumo (MIT). Fixado na revisão e91694d3959be1ed92757b34063efe0b2191821f, blob d088485fbed6537970c3e35cd8a14374d6cfa812. O repositório de origem permanece canônico; esta cópia é atualizada por um pull request de sincronização, não em tempo real.
flowchart LR
H[Human / Agent Request] --> HA[Harness Adapter]
HA --> CORE[Prumo Core - Go]
CORE --> PP[Protocol & Policy Engine]
CORE --> DE[Documentation Engine]
CORE --> PL[Planning Engine]
CORE --> AD[Adoption Engine]
CORE --> EX[Experience Engine]
CORE --> KN[Knowledge Engine]
CORE --> VG[Evidence & Gate Engine]
CORE --> CP[Control Plane]
PP --> STORE[(Canonical Repository: Git + Markdown + JSON + Schemas)]
DE --> STORE
PL --> STORE
AD --> STORE
EX --> IDX[(Derived Index: SQLite / Search)]
KN --> IDX
VG --> STORE
CP --> IDX
CP --> EP[Execution Plane]
EP --> IP[Integration Plane]
IP --> HOs principais componentes são Protocol Domain, Project Service, Resolution Service, Documentation Engine, Planning Engine, Adoption Engine, Knowledge Engine, Experience Engine, Evidence/Gate Engine, Control Plane, Execution Plane e Integration Plane.
| Serviço | Responsabilidade |
|---|---|
RunService | Ciclo de vida de execuções (run), checkpoints, retry, resume, cancelamento, detecção de livelock |
BudgetService | Envelopes de orçamento hierárquicos, governança de custo, rate limits |
ContextService | Pipeline do Context Compiler, orçamentos de tokens, consciência de cache, compactação |
ModelRoutingService | Model Registry, roteador guiado por evals, detecção de drift, fallback |
ToolGateway | Descritores de ferramentas, descoberta lazy, journal de efeitos colaterais, governança de MCP |
EnvironmentService | Contrato de sandbox, requisitos de isolamento, ambientes de execução |
AutomationService | Regras orientadas a eventos, DLQ, idempotência, chaves de concorrência |
ObservabilityService | Telemetria estruturada, explicabilidade, incident bundles |
PackageRuntimeService | prumo.lock, isolamento de providers, verificação da cadeia de suprimentos (supply chain) |
| Engine | Responsabilidade |
|---|---|
| Goals | Ciclo de vida, locks, emendas, transições de estado |
| Documentation | Contratos, profiles, readiness, delta, contradições |
| Planning | Entrevista, decisões, questões em aberto, confiança |
| Adoption | Scanner, mapeamento semântico, detecção de lacunas, migração |
| Experience | Eventos de sessão, resumos, handoffs, propostas |
| Traceability | Arestas tipadas: req↔dec↔code↔test↔doc↔evidence |
| Componente | Responsabilidade |
|---|---|
| Test Providers | Baseados em contrato: Playwright, ZAP, CodeQL, fuzzers, sanitizers, UIA/AX/AT-SPI, KUnit, syzkaller |
| Quality Orchestrator | Plano determinístico a partir de impacto da mudança + risco + capacidades |
| Evidence Normalization | Schema comum para execuções, achados, artefatos, fingerprint do ambiente |
| Security Verifier | Verificação independente para risco alto/crítico |
Modelos, ferramentas/MCPs, sandboxes/runtimes, providers externos. Nunca importam regras canônicas.
OpenCode, Codex, Claude Code, Gemini CLI, Copilot CLI, Kiro, Generic. Apenas adapters finos — nenhuma lógica canônica.
flowchart TD
IP[Integration Plane] --> CP[Control Plane]
CP --> KP[Knowledge Plane]
CP --> QP[Quality Plane]
CP --> EP[Execution Plane]
QP --> EP
KP --> CR[(Canonical Repository)]
CP --> DS[(Derived Runtime State)]
QP --> DSRegras:
Interfaces existem somente em fronteiras reais com múltiplas implementações:
Repository (filesystem Git)EventSink (arquivo local, OTLP, in-memory)DerivedIndex (SQLite, in-memory, futuro)HarnessTransport (stdio, HTTP, MCP)Clock (testes)EmbeddingProvider (futuro)Evite interfaces prematuras durante a migração para Go.
Comandos versionados e estáveis para plugins/adapters:
prumo internal project-status --json
prumo internal resolve --json
prumo internal validate-tool --json
prumo internal docs-impact --json
prumo internal context --json
prumo internal handoff --jsonTodo adapter declara:
O Prumo recusa o enforcement "strict" quando o harness não tem primitivas suficientes.
Invariantes são fixados no código; políticas são configuradas; heurísticas são avaliadas.
- Invariantes: lock de Goal, validação de schema, exigências de evidência
- Políticas: verificador independente para risco crítico, limites de orçamento
- Heurísticas: tamanho da workforce, roteamento de modelos, empacotamento de contexto (sujeito a evals)