Visão geral da arquitetura
O DispatchAtlas é um espaço de trabalho de cinco pacotes de distribuição focados
que compartilham o espaço de nomes Python dispatchatlas, mais um pacote agregado
raiz. A arquitetura mantém os contratos do domínio no centro e move a geração de
benchmarks, a resolução, a execução de campanhas, a análise, a documentação e a
automação de versões para fora. Toda dependência aponta para dentro, em direção a
dispatchatlas.core — nunca de lado entre pacotes pares e nunca para fora em
direção às ferramentas.
🧭 Direção de dependências
dispatchatlas.lab
/ | \
v | v
dispatchatlas.bench | dispatchatlas.solve
\ | /
v v v
dispatchatlas.core
^
|
dispatchatlas.analytica
(também lê manifestos estáveis de campanha como dados)Cada seta significa "importa". Todas as setas apontam para dispatchatlas.core;
nenhuma seta aponta para fora ou de lado. dispatchatlas.analytica
deliberadamente não tem seta para dispatchatlas.lab: ele consome os manifestos
JSON que uma campanha concluída deixa em disco, não o tempo de execução da
campanha em si.
Derivado dos manifestos dos pacotes (packages/*/pyproject.toml) e das instruções
de importação na árvore src/ de cada pacote; verificado 2026-06-10.
| Camada | Pacote | Responsabilidade | Pode importar | Não deve importar |
|---|---|---|---|---|
| Domínio | dispatchatlas.core | Contratos de escalonamento, validação, proveniência, sementes, serialização, protocolos. | Apenas biblioteca padrão e dependências leves aprovadas. | Qualquer outro pacote do DispatchAtlas. |
| Benchmark | dispatchatlas.bench | Taxonomia de benchmarks, geradores, catálogos, materialização, evidência de citação. | dispatchatlas.core. | Código de solver, campanha, análise ou tempo de execução do site. |
| Solver | dispatchatlas.solve | Metadados de solvers, registros, linhas de base, metaheurísticas, operadores, adaptadores opcionais. | dispatchatlas.core. | Geradores de benchmarks, executores de campanhas, exportações de análise ou código de tempo de execução do site. |
| Campanha | dispatchatlas.lab | Configuração reproduzível de campanhas, orçamentos, pontos de verificação, retentativas, execução. | dispatchatlas.core, dispatchatlas.bench, dispatchatlas.solve. | O pacote de análise ou os internos de tempo de execução do site. |
| Análise | dispatchatlas.analytica | Estatística, filtragem por divulgação, pacotes de evidência, conjuntos de dados do portal, a CLI. | dispatchatlas.core, mais manifestos estáveis de campanha lidos como dados JSON. | Execução de campanhas ao vivo ou internos de tempo de execução do site. |
| Agregado | dispatchatlas | Distribuição raiz; expõe a superfície de versão e fixa os cinco pacotes por meio de seu extra all. | Nada em tempo de execução; a composição ocorre por meio de extras. | — |
📦 Papéis dos pacotes
dispatchatlas.coreé o limite interno. Define o vocabulário de escalonamento compartilhado (ProblemSpec,Schedule, objetivos, restrições), a validação, a proveniência e a linhagem de sementes, a serialização canônica, e os protocolos (BenchmarkProvider,Solver,ExperimentRunner,ResultRepository,DisclosurePolicy,AnalysisExporter) que cada pacote externo implementa. Seu manifesto declara zero dependências, de modo que o domínio permanece importável em todo lugar.dispatchatlas.benchtransforma o vocabulário do domínio em evidência de benchmark: famílias geradoras, perfis de domínio, catálogos de fumaça e completos, métricas de caracterização, e uma matriz de citação que registra de onde vêm as premissas de cada família.dispatchatlas.solvepossui tudo o que produz escalonamentos: metadados de solvers e descritores de capacidade, o registro de solvers, linhas de base construtivas, metaheurísticas de permutação, a família NDSO, operadores de escalonamento, e adaptadores opcionais de solvers exatos mantidos atrás de extras.dispatchatlas.labcompõe benchmarks e solvers em campanhas com pontos de verificação, orçadas e carimbadas por ambiente, com identificadores de execução determinísticos, e detém a matriz de aplicabilidade que reconcilia cada família com cada solver. Por isso é o único pacote autorizado a ver core, bench e solve juntos: emparelhá-los é exatamente aquilo para que ele existe.dispatchatlas.analyticalê um diretório de campanha concluído —checkpoint.json,plan.json,environment.jsone linhas de resultados — e produz resumos estatísticos, pacotes de evidência, andaimes de relatório e conjuntos de dados do portal. A entrada baseada em manifestos mantém a análise reproduzível apenas a partir dos artefatos registrados.dispatchatlas(raiz) agrega os cinco pacotes para uma instalação de um único comando e carrega a superfície de versão pública.
🔒 Por que a direção é imposta
A direção apenas-para-dentro é um contrato testado, não uma convenção:
- Testabilidade. O core valida problemas e escalonamentos sem nenhuma maquinaria de solver, campanha ou análise instalada, de modo que os testes do domínio rodam com importações apenas da biblioteca padrão. Bench e solve testam contra os contratos do core sem arrastar um ao outro.
- Reprodutibilidade. Como
dispatchatlas.analyticaconsome manifestos registrados em vez do tempo de execução da campanha ao vivo, qualquer campanha concluída pode ser reanalisada byte a byte a partir de seus artefatos. - Versão independente. Cada pacote compila e fixa sua versão separadamente; uma mudança de solver não pode alterar silenciosamente o comportamento de benchmark ou de análise.
Os testes de limite de importação vivem em tests/architecture/:
test_import_boundaries.py percorre cada arquivo-fonte de pacote com o módulo
ast e falha em qualquer importação que cruze a tabela de importações proibidas
acima, e test_workspace_privacy.py protege os artefatos de pesquisa privados. O
AGENTS.md raiz (§ Package Boundary Summary) enuncia essa direção de forma
canônica e o CONTRIBUTING.md a repassa aos colaboradores; esta página é o
aprofundamento sobre ambos, e cada pull request é revisado em relação a ela.
🌐 Superfícies públicas
O site de documentação sob site/ consome dados exportados aprovados — pacotes do
portal filtrados por divulgação e resumos de evidência. Ele não executa campanhas
ao vivo nem contorna a política de divulgação.
🛠️ Superfícies de governança
tools/ e a CI podem inspecionar todo o código dos pacotes, os artefatos de
compilação e os relatórios. Eles controlam a qualidade de fora e nunca são
dependências de tempo de execução dos pacotes do produto.