返回 DeepSeek-Reasonix
projection_pinned_compat_test.go
根目录 / internal / agent / projection_pinned_compat_test.go
1 package agent
2
3 import (
4 "testing"
5
6 "reasonix/internal/provider"
7 )
8
9 func TestLegacyProjectionCannotCoverPinnedContextRevision(t *testing.T) {
10 canonical := []provider.Message{
11 {Role: provider.RoleSystem, Content: "system"},
12 {Role: provider.RoleUser, Origin: provider.MessageOriginHost, Content: "<pinned_context_revision>private pinned body</pinned_context_revision>"},
13 {Role: provider.RoleUser, Content: "visible question"},
14 }
15 legacy := CompactionState{
16 SchemaVersion: compactionStateSchemaV3,
17 Projection: ContextProjection{
18 Messages: []provider.Message{{Role: provider.RoleUser, Content: "legacy summary"}},
19 CoveredCount: len(canonical),
20 CoveredPrefixHash: coveredPrefixHash(canonical, len(canonical)),
21 },
22 }
23 if projectionContentValid(legacy, canonical) {
24 t.Fatal("legacy projection covering a pinned revision must be rebuilt")
25 }
26
27 withoutRevision := []provider.Message{
28 {Role: provider.RoleSystem, Content: "system"},
29 {Role: provider.RoleUser, Content: "visible question"},
30 }
31 legacy.Projection.CoveredCount = len(withoutRevision)
32 legacy.Projection.CoveredPrefixHash = coveredPrefixHash(withoutRevision, len(withoutRevision))
33 if !projectionContentValid(legacy, withoutRevision) {
34 t.Fatal("legacy projection without pinned revisions should remain compatible")
35 }
36 }
37
37 lines GO