Carry evidence through built-in generation retries

This commit is contained in:
2026-10-13 16:56:56 +00:00
parent d91afc61a4
commit c5aed7a451
6 changed files with 372 additions and 27 deletions

View File

@@ -0,0 +1,27 @@
package observation
import (
"testing"
"gitea.maximumdirect.net/eric/promptkit/internal/domain"
)
func TestUsageAccumulatorPreservesPresenceAndNoAttemptSemantics(t *testing.T) {
var empty UsageAccumulator
zero := empty.Observed()
if !zero.PromptTokens.Known || !zero.PromptTokens.Complete || zero.PromptTokens.Value != 0 ||
!zero.CacheWriteTokens.Known || !zero.CacheWriteTokens.Complete || zero.CacheWriteTokens.Value != 0 {
t.Fatalf("zero-attempt usage = %+v", zero)
}
var usage UsageAccumulator
usage.Add(domain.TokenUsage{PromptTokens: 0}, &domain.TokenUsagePresence{PromptTokens: true})
usage.Add(domain.TokenUsage{PromptTokens: 3}, &domain.TokenUsagePresence{PromptTokens: true})
observed := usage.Observed()
if observed.PromptTokens.Value != 3 || !observed.PromptTokens.Known || !observed.PromptTokens.Complete {
t.Fatalf("reported prompt usage = %+v", observed.PromptTokens)
}
if observed.CompletionTokens.Known || observed.CompletionTokens.Complete {
t.Fatalf("unreported completion usage = %+v", observed.CompletionTokens)
}
}