feat(onboard): burst picks likely-good videos, summarizes with stronger model (ADR-028)
Wire the onboarding burst to its quality-aware selection and a stronger model: - main.go onboard uses OnboardBurstVideoIDs (junk-avoiding) instead of pure newest-first, bounded by MinVideoSeconds / OnboardMaxVideoSeconds. - buildBurstProcessor builds a burst-only summarizer chain led by the onboard model (burstChainModels: onboard -> standard ADR-022 chain, deduped, NDA lever intact), over the same store/cache/sink. Collapses onto the shared Processor when the onboard model is empty/equal-to-primary or config is incomplete. - summarizerEndpoint + newYouTubeSource extracted so standard and burst wiring share one definition. - Remove now-superseded NewestUnsummarizedVideoIDs: OnboardBurstVideoIDs(.,0,0) is identical pure-newest behaviour and its test covers RLS + ordering.
This commit is contained in:
@@ -45,3 +45,65 @@ func TestBuildProcessorNilOnIncompleteConfig(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// TestBurstChainModelsLeadsWithOnboardModel: the onboarding burst chain (ADR-028)
|
||||
// leads with the stronger onboard model, then falls back through the standard
|
||||
// ADR-022 chain (primary -> local fallback -> cloud), deduped.
|
||||
func TestBurstChainModelsLeadsWithOnboardModel(t *testing.T) {
|
||||
got := burstChainModels(config.Config{
|
||||
OnboardSummarizerModel: "iguana/gemma4-26b",
|
||||
SummarizerModel: "koala/phi4-mini",
|
||||
FallbackModel: "iguana/gemma4-26b", // also the onboard model -> dedup
|
||||
CloudFallbackModel: "berget/mistral-small",
|
||||
})
|
||||
want := []string{"iguana/gemma4-26b", "koala/phi4-mini", "berget/mistral-small"}
|
||||
if len(got) != len(want) {
|
||||
t.Fatalf("burstChainModels = %v, want %v", got, want)
|
||||
}
|
||||
for i := range want {
|
||||
if got[i] != want[i] {
|
||||
t.Fatalf("burstChainModels = %v, want %v", got, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TestBurstChainModelsCloudAbsentWhenDisabled: the NDA lever holds for the burst
|
||||
// too — empty cloud fallback keeps the burst chain fully local.
|
||||
func TestBurstChainModelsCloudAbsentWhenDisabled(t *testing.T) {
|
||||
got := burstChainModels(config.Config{
|
||||
OnboardSummarizerModel: "iguana/gemma4-26b",
|
||||
SummarizerModel: "koala/phi4-mini",
|
||||
CloudFallbackModel: "",
|
||||
})
|
||||
for _, m := range got {
|
||||
if m == "" || m == "berget/mistral-small" {
|
||||
t.Fatalf("cloud model leaked into burst chain: %v", got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TestBuildBurstProcessorNilWhenCollapsed: an empty or primary-equal onboard model
|
||||
// collapses the burst onto the shared processor (buildBurstProcessor returns nil).
|
||||
func TestBuildBurstProcessorNilWhenCollapsed(t *testing.T) {
|
||||
base := config.Config{
|
||||
GatewayURL: "http://gw/v1",
|
||||
YTClientID: "id",
|
||||
YTClientSecret: "secret",
|
||||
SecretsFile: "/tmp/secrets.json",
|
||||
SummarizerModel: "koala/phi4-mini",
|
||||
}
|
||||
t.Run("empty onboard model", func(t *testing.T) {
|
||||
base.OnboardSummarizerModel = ""
|
||||
eng, err := buildBurstProcessor(base, nil)
|
||||
if err != nil || eng != nil {
|
||||
t.Fatalf("buildBurstProcessor = (%v, %v), want (nil, nil)", eng, err)
|
||||
}
|
||||
})
|
||||
t.Run("onboard model equals primary", func(t *testing.T) {
|
||||
base.OnboardSummarizerModel = "koala/phi4-mini"
|
||||
eng, err := buildBurstProcessor(base, nil)
|
||||
if err != nil || eng != nil {
|
||||
t.Fatalf("buildBurstProcessor = (%v, %v), want (nil, nil)", eng, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user