Simplify enemy event grounding ownership

This commit is contained in:
2026-08-03 22:54:11 +00:00
parent e6b7c61f45
commit e15007fffb
2 changed files with 41 additions and 27 deletions

View File

@@ -104,15 +104,27 @@ func TestGroundingResolvesGeneratedReferencesAndSceneEligibility(t *testing.T) {
if got := string(resolved.PromptInputs()[NPCRegistryReferenceSlot].Content); got != `{"npcs":[{"name":"Grimjaw"}]}` {
t.Fatalf("generated NPC projection = %s", got)
}
if resolved.SceneMatch(combatChunk()) != (sceneregistry.ChunkMatch{State: sceneregistry.MatchExact, Kind: dnd.SceneKindNarrative}) {
t.Fatalf("generated scene match = %#v", resolved.SceneMatch(combatChunk()))
match, err := resolver.SceneMatch(generated, combatChunk())
if err != nil {
t.Fatal(err)
}
if resolved.SceneMatch(&source.Chunk{ID: "other", Ref: combatChunk().Ref}).State != sceneregistry.MatchMissing {
if match != (sceneregistry.ChunkMatch{State: sceneregistry.MatchExact, Kind: dnd.SceneKindNarrative}) {
t.Fatalf("generated scene match = %#v", match)
}
match, err = resolver.SceneMatch(generated, &source.Chunk{ID: "other", Ref: combatChunk().Ref})
if err != nil {
t.Fatal(err)
}
if match.State != sceneregistry.MatchMissing {
t.Fatal("missing scene was not reported")
}
mismatched := combatChunk()
mismatched.Ref.EndUnitID++
if resolved.SceneMatch(mismatched).State != sceneregistry.MatchMismatched {
match, err = resolver.SceneMatch(generated, mismatched)
if err != nil {
t.Fatal(err)
}
if match.State != sceneregistry.MatchMismatched {
t.Fatal("mismatched scene was not reported")
}
@@ -123,8 +135,12 @@ func TestGroundingResolvesGeneratedReferencesAndSceneEligibility(t *testing.T) {
if got := string(static.PromptInputs()[NPCRegistryReferenceSlot].Content); got != `{"npcs":[{"name":"Ashfang"}]}` {
t.Fatalf("static NPC projection changed after generated resolution: %s", got)
}
if static.SceneMatch(combatChunk()) != (sceneregistry.ChunkMatch{State: sceneregistry.MatchExact, Kind: dnd.SceneKindCombat}) {
t.Fatalf("static scene match = %#v", static.SceneMatch(combatChunk()))
match, err = resolver.SceneMatch(contracts.ReferenceSet{}, combatChunk())
if err != nil {
t.Fatal(err)
}
if match != (sceneregistry.ChunkMatch{State: sceneregistry.MatchExact, Kind: dnd.SceneKindCombat}) {
t.Fatalf("static scene match = %#v", match)
}
}
@@ -144,8 +160,13 @@ func TestGroundingRejectsMissingAndInvalidReferences(t *testing.T) {
if err != nil {
t.Fatal(err)
}
if _, err := resolver.Resolve(contracts.ReferenceSet{}); err == nil || !strings.Contains(err.Error(), test.want) {
t.Fatalf("Resolve() error = %v, want missing %q reference", err, test.slot)
if test.slot == SceneDescriptionReferenceSlot {
_, err = resolver.SceneMatch(contracts.ReferenceSet{}, combatChunk())
} else {
_, err = resolver.Resolve(contracts.ReferenceSet{})
}
if err == nil || !strings.Contains(err.Error(), test.want) {
t.Fatalf("grounding error = %v, want missing %q reference", err, test.slot)
}
})
}