From c65bbd2b99d70727d1ba51e15c503f5fec674edf Mon Sep 17 00:00:00 2001 From: JSap0914 Date: Sun, 5 Jul 2026 11:31:32 +0900 Subject: [PATCH] fix(core): score empty traces as incomplete --- packages/core/src/scoring/index.test.ts | 7 +++++++ packages/core/src/scoring/index.ts | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/core/src/scoring/index.test.ts b/packages/core/src/scoring/index.test.ts index 1c8c73a..2489741 100644 --- a/packages/core/src/scoring/index.test.ts +++ b/packages/core/src/scoring/index.test.ts @@ -38,6 +38,13 @@ function withHashChain(events: CanonicalEvent[], withSignature: boolean): Canoni // computeProvenanceIntegrity via computeRiskScore // --------------------------------------------------------------------------- +describe('computeRiskScore — trace_completeness scoring', () => { + it('returns zero trace completeness when the trace has no events', async () => { + const score = await computeRiskScore([], 'empty-run'); + expect(score.components.trace_completeness).toBe(0); + }); +}); + describe('computeRiskScore — provenance_integrity scoring', () => { it('returns 100 when all events have ed25519 signatures (no AEP provenance)', async () => { const events = withHashChain([makeToolCall('e1'), makeToolCall('e2')], true); diff --git a/packages/core/src/scoring/index.ts b/packages/core/src/scoring/index.ts index a3af03d..1270bc2 100644 --- a/packages/core/src/scoring/index.ts +++ b/packages/core/src/scoring/index.ts @@ -19,7 +19,7 @@ function toGrade(score: number): Grade { } function computeTraceCompleteness(events: CanonicalEvent[]): number { - if (events.length === 0) return 100; + if (events.length === 0) return 0; let score = 100;