Compare commits

..

1 Commits

Author SHA1 Message Date
ealmeida 3c85d03e70 fix: excluir interrupções longas da taxa de erro de skills
Sessões com outcome=interrupted e ≥10 eventos são redirects naturais
do utilizador, não falhas da skill. O detector contava todas as
interrupções como falhas, gerando falsos positivos para skills
conversacionais como superpowers:brainstorming.

Fix: só contar como falha erros reais (outcome=error) ou interrupções
precoces (<10 eventos).

Resolve ticket #10407.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 11:15:09 +01:00
2 changed files with 8 additions and 4 deletions
+5 -1
View File
@@ -92,7 +92,11 @@ export function detectSkillsHighErrorRate(ctx: DetectCtx): Pattern[] {
for (const sk of skills) { for (const sk of skills) {
const entry = bySkill.get(sk) ?? { total: 0, fail: 0, ids: [] } const entry = bySkill.get(sk) ?? { total: 0, fail: 0, ids: [] }
entry.total++ entry.total++
if (r.outcome === 'error' || r.outcome === 'interrupted') { // Interrupções em sessões longas (≥10 eventos) são redirects naturais do utilizador,
// não falhas da skill. Só contar erros reais ou interrupções muito precoces.
const isRealFailure = r.outcome === 'error' ||
(r.outcome === 'interrupted' && (r.event_count ?? 0) < 10)
if (isRealFailure) {
entry.fail++ entry.fail++
if (entry.ids.length < 5) entry.ids.push(r.session_id) if (entry.ids.length < 5) entry.ids.push(r.session_id)
} }
+3 -3
View File
@@ -7967,9 +7967,9 @@
} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.5.6", "version": "8.5.12",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {