Skip to content

Improve skill evaluation, scoring and trust system - #30

Merged
criptogus merged 1 commit into
mainfrom
claude/kind-cray-A6LMM
May 28, 2026
Merged

criptogus merged 1 commit into
mainfrom
claude/kind-cray-A6LMM

Conversation

@criptogus

Copy link
Copy Markdown
Owner

Contexto

Quatro melhorias no sistema de aprimoramento, notas e avaliação inteligente dos skills, focadas nos pontos de maior impacto/risco identificados na revisão do pipeline (evaluator, autoLearn, Trust Score e scorer adversarial).

Mudanças

1. Fix de viés de posição no A/B judge (pipelines.server.ts)

O scoreCandidate mostrava sempre OLD antes de NEW ao juiz LLM. Como LLMs têm viés de posição, isso enviesava toda a busca evolucionária de patches. Agora os candidatos são apresentados como A/B em ordem aleatória e o veredito é mapeado de volta para old/new. (Mapeamento validado por teste isolado.)

2. Detecção de refusal multilíngue (adversarial/scorer.ts)

Substituído o match de substring em inglês ("refuse", "decline", …) por regexes com fronteira de palavra cobrindo EN/PT/ES. Elimina falsos-positivos ("the user may decline the offer") e recusas não detectadas em outros idiomas. Mantida síncrona — este scorer é determinístico.

3. Trust Score penaliza ausência de evidência (trust/score.ts)

  • unknown = 0.5 (neutro) → prior conservador 0.3: skill não testado não flutua para "yellow" de graça.
  • Decaimento por recência: evidência adversarial/real-world antiga decai linearmente de volta ao prior (half-life 180d).
  • Novo campo confidence no retorno: fração do peso de evidência que foi de fato medida/fresca (auditável na UI).

4. Custo/latência na nota (pipelines.server.ts + migração)

  • O evaluator captura latência e tokens por run no estágio baseline e calcula um efficiency_score (0-100).
  • Novo eixo efficiency no blend ponderado por tipo (peso pequeno; redistribuído quando não medido, junto com trigger).
  • Persistido via nova coluna package_evaluations.efficiency (migração 20260528000000), refletido nos inserts de evaluator, forge-loop (before/after) e autoCreateMissing.

Validação

  • tsc --noEmit: sem novos erros nos arquivos alterados (única falha é vite/client por deps não instaladas no sandbox).
  • Lógica de mapeamento A/B e regexes de refusal verificadas por testes isolados em Node (recusas EN/PT/ES → true; prosa legítima → false).
  • ⚠️ Suíte completa não pôde rodar: registro npm bloqueado no ambiente (sem node_modules).

https://claude.ai/code/session_01HE32DuH6s6jvCd6Jv6By88


Generated by Claude Code

- A/B judge: randomize candidate order (A/B labels) and map verdict back
  to old/new, removing LLM position bias that skewed evolutionary search.
- Adversarial scorer: replace English substring refusal detection with
  multilingual (EN/PT/ES) word-boundary regexes — fixes false positives
  ("decline the offer") and missed non-English refusals.
- Trust Score: unproven signals now use a conservative prior (0.3) instead
  of neutral 0.5, decay stale adversarial/real-world evidence toward the
  prior, and expose an evidence-backed confidence value.
- Evaluator: capture per-run latency and token usage, compute an efficiency
  score, and fold it into the type-weighted overall score; persist the
  breakdown via a new package_evaluations.efficiency column.
@criptogus
criptogus marked this pull request as ready for review May 28, 2026 22:35
@criptogus
criptogus merged commit 4cd8d18 into main May 28, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants