Files
affaan-m--everything-claude…/scripts/lib/skill-improvement/evaluate.js
T
wehub-resource-sync d48cda4081
CI / Test (ubuntu-latest, Node 18.x, bun) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, npm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, pnpm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, yarn) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 20.x, bun) (push) Failing after 17m13s
CI / Test (ubuntu-latest, Node 20.x, npm) (push) Failing after 18m42s
CI / Test (ubuntu-latest, Node 20.x, pnpm) (push) Failing after 15m0s
CI / Test (ubuntu-latest, Node 20.x, yarn) (push) Failing after 49m44s
CI / Test (ubuntu-latest, Node 22.x, bun) (push) Failing after 51m55s
CI / Test (ubuntu-latest, Node 22.x, pnpm) (push) Failing after 21m57s
CI / Test (ubuntu-latest, Node 22.x, npm) (push) Failing after 37m39s
CI / Test (ubuntu-latest, Node 22.x, yarn) (push) Failing after 34m7s
CI / Validate Components (push) Failing after 37m15s
CI / Python Tests (push) Failing after 10m1s
CI / Security Scan (push) Failing after 10m1s
CI / Lint (push) Failing after 17m12s
CI / Coverage (push) Failing after 20m19s
CI / Test (macos-latest, Node 18.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, yarn) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:55:55 +08:00

60 lines
1.8 KiB
JavaScript

'use strict';
const EVALUATION_SCHEMA_VERSION = 'ecc.skill-evaluation.v1';
function roundRate(value) {
return Math.round(value * 1000) / 1000;
}
function summarize(records) {
const runs = records.length;
const successes = records.filter(record => record.outcome && record.outcome.success).length;
const failures = runs - successes;
return {
runs,
successes,
failures,
successRate: runs > 0 ? roundRate(successes / runs) : 0
};
}
function buildSkillEvaluationScaffold(skillId, records, options = {}) {
const minimumRunsPerVariant = options.minimumRunsPerVariant || 2;
const amendmentId = options.amendmentId || null;
const filtered = records.filter(record => record.skill && record.skill.id === skillId);
const baseline = filtered.filter(record => !record.run || record.run.variant !== 'amended');
const amended = filtered.filter(record => record.run && record.run.variant === 'amended')
.filter(record => !amendmentId || record.run.amendmentId === amendmentId);
const baselineSummary = summarize(baseline);
const amendedSummary = summarize(amended);
const delta = {
successRate: roundRate(amendedSummary.successRate - baselineSummary.successRate),
failures: amendedSummary.failures - baselineSummary.failures
};
let recommendation = 'insufficient-data';
if (baselineSummary.runs >= minimumRunsPerVariant && amendedSummary.runs >= minimumRunsPerVariant) {
recommendation = delta.successRate > 0 ? 'promote-amendment' : 'keep-baseline';
}
return {
schemaVersion: EVALUATION_SCHEMA_VERSION,
generatedAt: new Date().toISOString(),
skillId,
amendmentId,
gate: {
minimumRunsPerVariant
},
baseline: baselineSummary,
amended: amendedSummary,
delta,
recommendation
};
}
module.exports = {
EVALUATION_SCHEMA_VERSION,
buildSkillEvaluationScaffold
};