Contexto
Adotar o padrão autoresearch do Karpathy (referência: https://github.com/balukosuri/Andrej-Karpathy-s-Autoresearch-As-a-Universal-Skill e o autoresearch-agent do bundle ECC) como skill de primeira classe do ecossistema: mutar um alvo → avaliar contra critérios fixos → manter se o score melhora (commit) → reverter se não (git reset) → repetir, com plateau-break após N runs estagnados.
Por que aqui: este repo já hospeda as skills do ecossistema (.claude/skills/), a infra de paridade (scripts/sync_plugin.py + claims_audit.py) e o gate local (scripts/check.py). A skill vira a 7ª do pacote.
Por que agora: o programa de benchmark/telemetria em andamento (mapper#148, runtime#2775, dev-cli#88, loop#92) cria exatamente as funções-objetivo que este otimizador consome. Cada harness deixa de ser só "prova" e vira eval — o ecossistema passa de medir economia para otimizá-la automaticamente.
NÃO instalar a skill upstream crua — adaptações obrigatórias
A versão upstream conflita com regras deste ecossistema. A nossa skill DEVE incorporar:
1. Guardrails yool §11 (MANDATÓRIO — regra do Victor Genaro)
O "roda indefinidamente" upstream viola a spec. Registrar como agent com:
- yool_id: `agent.dev.autoresearch`
- authority: dev
- lane: background
- agent_terms:
cpu_quota_pct: 60
disk_quota_mb: 100
timeout_s: <cap por run>
max_iterations: <cap>
max_token_budget: <cap>
Loop sem cap de iteração/orçamento = bloqueado no review.
2. Isolamento git + disciplina de commit
- Roda sempre em branch de trabalho isolado (ex.:
autoresearch/<alvo>-<data>), nunca em main.
- O eval inclui o gate do repo alvo (lint + testes) — o loop nunca commita vermelho (regra "commit com vermelho" + hooks pre-commit).
- Ao final: squash num commit conventional único; o run inteiro é UMA task para o DoD (o diff final + o log de scores é a evidência), não N micro-tasks.
hooks/action_gate.py continua ativo dentro do loop (mutação é edição de arquivo alvo, nunca op destrutiva).
3. Eval composto anti-Goodhart (a regra central)
Score nunca é métrica única. Estrutura obrigatória:
- Gate binário de correção PRIMEIRO — round-trip lossless, fixtures de conformidade (mapper#149), suíte de testes do alvo. Falhou o gate → score = rejeitado, independente da métrica.
- Score DEPOIS — a métrica de otimização (tokens, pass-rate, latência), medida com tokenizador rotulado (política do runtime#2775). Hill-climbing sobre os 5 estimadores divergentes atuais (~30% de desacordo) é passeio aleatório — métrica sem rótulo é inválida.
- Critérios binários fixos + validation set fixo (3–5 itens), como no upstream; melhoria só é aceita acima de margem de confiança.
4. Mutação barata (economia primeiro)
O passo de mutação deve preferir o ladder local do simplicio-runtime (qwen 64→600); modelo remoto pago só como stage 5 explícito (--remote + evidência de escalação). Um otimizador que queima tokens frontier indefinidamente contradiz a tese do ecossistema.
5. Receipt por run (dogfooding da telemetria)
Cada run emite um simplicio.savings-event/v1 (runtime#2775): source=autoresearch, baseline = score/tokens do estado inicial, actual = do vencedor, proof.kind + tokenizer id. O log de iterações (score por tentativa, mutações rejeitadas, plateau-breaks) é artefato de evidência em .orchestrator/autoresearch/<run>/.
Entregáveis
Pilotos (issues-irmãs)
- mapper — heurísticas do encoder TOON como primeiro alvo (eval = fixtures round-trip + tokens medidos nos artefatos reais)
- dev-cli — template de prompt contra o bench A/B
- runtime — ladder local como motor de mutação
- Fase 2: prompt (textos/few-shot) e marketing (copy compliance-gated)
Fora de escopo por fit baixo: sprint (eval seria pytest → gaming), agent em produção (cache-is-sacred).
Refs: mapper#148, mapper#149, dev-cli#88, runtime#2774, runtime#2775, loop#92, loop#93.
Contexto
Adotar o padrão autoresearch do Karpathy (referência: https://github.com/balukosuri/Andrej-Karpathy-s-Autoresearch-As-a-Universal-Skill e o
autoresearch-agentdo bundle ECC) como skill de primeira classe do ecossistema: mutar um alvo → avaliar contra critérios fixos → manter se o score melhora (commit) → reverter se não (git reset) → repetir, com plateau-break após N runs estagnados.Por que aqui: este repo já hospeda as skills do ecossistema (
.claude/skills/), a infra de paridade (scripts/sync_plugin.py+claims_audit.py) e o gate local (scripts/check.py). A skill vira a 7ª do pacote.Por que agora: o programa de benchmark/telemetria em andamento (mapper#148, runtime#2775, dev-cli#88, loop#92) cria exatamente as funções-objetivo que este otimizador consome. Cada harness deixa de ser só "prova" e vira
eval— o ecossistema passa de medir economia para otimizá-la automaticamente.NÃO instalar a skill upstream crua — adaptações obrigatórias
A versão upstream conflita com regras deste ecossistema. A nossa skill DEVE incorporar:
1. Guardrails yool §11 (MANDATÓRIO — regra do Victor Genaro)
O "roda indefinidamente" upstream viola a spec. Registrar como agent com:
Loop sem cap de iteração/orçamento = bloqueado no review.
2. Isolamento git + disciplina de commit
autoresearch/<alvo>-<data>), nunca emmain.hooks/action_gate.pycontinua ativo dentro do loop (mutação é edição de arquivo alvo, nunca op destrutiva).3. Eval composto anti-Goodhart (a regra central)
Score nunca é métrica única. Estrutura obrigatória:
4. Mutação barata (economia primeiro)
O passo de mutação deve preferir o ladder local do simplicio-runtime (qwen 64→600); modelo remoto pago só como stage 5 explícito (
--remote+ evidência de escalação). Um otimizador que queima tokens frontier indefinidamente contradiz a tese do ecossistema.5. Receipt por run (dogfooding da telemetria)
Cada run emite um
simplicio.savings-event/v1(runtime#2775):source=autoresearch, baseline = score/tokens do estado inicial, actual = do vencedor,proof.kind+ tokenizer id. O log de iterações (score por tentativa, mutações rejeitadas, plateau-breaks) é artefato de evidência em.orchestrator/autoresearch/<run>/.Entregáveis
.claude/skills/simplicio-autoresearch/SKILL.mdcom o contrato acima (inputs: alvo, comando de eval, critérios binários, validation set, caps)scripts/autoresearch.py(mutate/eval/keep-revert/plateau) comselftest, registrado emclaims_audit.pySELFTEST_SCRIPTSetests/sync_plugin.pyrodado; paridadeplugin/verde nocheck.pyPilotos (issues-irmãs)
Fora de escopo por fit baixo: sprint (eval seria pytest → gaming), agent em produção (cache-is-sacred).
Refs: mapper#148, mapper#149, dev-cli#88, runtime#2774, runtime#2775, loop#92, loop#93.