38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
from algebra.cga import cga_inner
|
|
from generate.proposition import FrameRegistry, Proposition, propose
|
|
from ingest.gate import inject
|
|
from packs.compiler import load_mounted_packs
|
|
from vault.store import VaultStore
|
|
|
|
|
|
def test_light_prompt_generates_structured_proposition_near_prompt():
|
|
vocab = load_mounted_packs(
|
|
("en_minimal_v1", "he_logos_micro_v1", "grc_logos_micro_v1")
|
|
)
|
|
state = inject(["light", "אוֹר", "φῶς"], vocab)
|
|
vault = VaultStore()
|
|
random_idx = vault.store(vocab.get_versor("λόγος"), {"kind": "random"})
|
|
registry = FrameRegistry.from_pack("grc", vocab)
|
|
|
|
proposition = propose(state, vault, vocab, registry)
|
|
|
|
assert isinstance(proposition, Proposition)
|
|
assert proposition.subject
|
|
assert proposition.predicate
|
|
assert proposition.surface
|
|
random_entry = vault.recall(vocab.get_versor("λόγος"), top_k=1)[0]["versor"]
|
|
prompt = state.F
|
|
|
|
assert cga_inner(proposition.subject_versor, prompt) > cga_inner(
|
|
proposition.subject_versor,
|
|
random_entry,
|
|
)
|
|
assert cga_inner(proposition.predicate_versor, prompt) > cga_inner(
|
|
proposition.predicate_versor,
|
|
random_entry,
|
|
)
|
|
stored = vault.recall(state.F, top_k=2)
|
|
assert any(hit["metadata"].get("kind") == "proposition" for hit in stored)
|
|
assert random_idx == 0
|