Dossiê — E10 (pacote de validação e baseline)
Fonte: auditoria "Manus AI" (2026-09-01), seção 3, entregável E10. Veredito da auditoria: Parcial — correções prontas, mas o baseline de desempenho (concorrência, latência, throughput) não foi medido.
Este dossiê separa o que já existe (tooling de benchmark + dashboard que consome o catálogo) do que falta executar (a medição real contra o ambiente, que exige acesso ao cluster Enverge).
1. O que a auditoria exige (E10)
Correções, reexecução limpa, concorrência, latência, throughput, relatório assinado.
2. O que já existe (tooling pronto, sem medição)
2.1 Ferramenta de benchmark
scripts/operator/enverge-model-bench.sh (dev-machine) mede throughput e concorrência de um modelo que o router já sabe servir, e grava num catálogo TSV append-only que o dashboard do small-pine renderiza.
| Aspecto | Detalhe |
|---|---|
| Concorrência | varre BENCH_STREAMS (default 1 4 8 16 32) |
| Tokens | BENCH_TOKENS (default 128), temperature 0, ignore_eos |
| Métricas por linha | streams, ok/n, tokens, wall_s, agg_tok_s, per_stream_tok_s, ttft_s |
| Prefill | --prefill mede prompt_tokens × total_s (slope cancela o token constante) |
| Gravação | --record anexa ao catálogo (/var/db/small-infer/throughput.tsv) |
| Comparabilidade | ignore_eos + temperature 0 = mesmo shape dos números históricos em small-infer/docs/vllm-dgx-spark-mxfp4.md |
Fonte:
~/dev-machine/scripts/operator/enverge-model-bench.sh.
2.2 Consumo do catálogo (dashboard)
O small-pine já renderiza o catálogo de throughput/prefill no dashboard de matriz, sem 500 quando o arquivo está ausente (estado normal de um deploy nunca benchmarkado).
| Local | O que faz |
|---|---|
src/small_pine/service/dashboard.clj | parse-throughput (colunas BENCH), parse-prefill (colunas PREFILL), throughput-row/prefill-row |
src/small_pine/service/matrix_dashboard.clj | catalogue-text lê ::config/throughput-path; dashboard-state expõe ::dashboard/throughput e ::dashboard/prefill (mais recente primeiro) |
src/small_pine/config.clj:247 | ::throughput-path "/var/db/small-pine/throughput.tsv" |
Fonte:
apps/small-pine/src/small_pine/service/{dashboard,matrix_dashboard}.clj,config.clj.
2.3 Correções dos bloqueadores (E8/E9)
Já implementadas e verificadas nesta sessão (ver REPORT-MVP-V1.md §3):
- E8 — Stop Chain no output do chat (carimbo de egress obrigatório).
- E9 — integridade criptográfica da auditoria (hash encadeado + raiz + endpoint).
3. O que falta executar (medição real)
O baseline de desempenho não foi medido — é a única parte de E10 que exige execução real contra o cluster Enverge, não código. O comando exato:
# No host NeoTek (o /prewarm e /backends são loopback-only, ADR-0005):
scp scripts/operator/enverge-model-bench.sh neotek.wg:/tmp/
ssh -t neotek.wg "doas sh /tmp/enverge-model-bench.sh --record gpt-oss-20b"
# varredura de concorrência customizada:
ssh neotek.wg "BENCH_STREAMS='1 8 32' sh -s" < scripts/operator/enverge-model-bench.sh gpt-oss-120b qwen3-8b-fp4
Template de medição a preencher
| # | Métrica exigida (E10) | Como obter | Valor a registrar |
|---|---|---|---|
| 1 | Concorrência | BENCH_STREAMS (1/4/8/16/32) | ⬜ |
| 2 | Latência (TTFT) | coluna ttft_s do BENCH | ⬜ |
| 3 | Throughput agregado | coluna agg_tok_s | ⬜ |
| 4 | Throughput por stream | coluna per_stream_tok_s | ⬜ |
| 5 | Prefill (slope) | --prefill (120/600/2400 tokens) | ⬜ |
| 6 | Taxa de erro | coluna ok/n (deve ser n/n) | ⬜ |
| 7 | p50/p95/p99 | não coberto pelo bench atual (só wall/ttft) — requer instrumentação adicional | ⬜ |
| 8 | Relatório assinado | consolidar os números acima em REPORT-MVP-V1.md §E10 | ⬜ |
Nota sobre p50/p95/p99: o
enverge-model-bench.shmede wall-time e TTFT por varredura, mas não produz percentis. Se a auditoria exigir p50/p95/p99 explícitos, é preciso estender o script (ou usarenverge-hang-soak.shpara estabilidade) — um gap de *tooling*, não de *execução*.
4. Conclusão
O tooling de baseline (benchmark + dashboard que consome o catálogo) já existe e está pronto. O que falta para fechar E10 é executar a medição real contra o cluster Enverge e registrar os números na tabela da seção 3 — uma ação de operador com acesso ao host NeoTek, não uma mudança de código.
Próximo passo: rodar enverge-model-bench.sh --record para os modelos do catálogo prod, preencher a tabela da seção 3, e (se exigido) estender o script para percentis p50/p95/p99.