generated from coulomb/repo-seed
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
import json
|
|
from pathlib import Path
|
|
|
|
from phase_memory.activation import activation_action, plan_activation
|
|
from phase_memory.contracts import graph_from_markitect
|
|
from phase_memory.models import LifecycleActionKind
|
|
|
|
|
|
def test_activation_planner_emits_markitect_selection_under_budget() -> None:
|
|
graph_data = json.loads((Path(__file__).parent / "fixtures" / "memory-graph.json").read_text(encoding="utf-8"))
|
|
graph = graph_from_markitect(graph_data).value
|
|
|
|
plan = plan_activation(
|
|
graph,
|
|
max_items=2,
|
|
max_tokens=18,
|
|
profile_id="phase-memory-fixture-profile",
|
|
priority_node_ids=("decision.boundary",),
|
|
)
|
|
|
|
assert plan.selected_node_ids[0] == "decision.boundary"
|
|
assert len(plan.selected_node_ids) <= 2
|
|
assert plan.token_estimate <= 18
|
|
assert plan.selection["schema_version"] == "markitect.memory.selection.v1"
|
|
assert plan.selection["profile"] == "phase-memory-fixture-profile"
|
|
assert plan.omitted
|
|
|
|
|
|
def test_activation_action_wraps_selection_for_context_package_boundary() -> None:
|
|
graph = graph_from_markitect(json.loads((Path(__file__).parent / "fixtures" / "memory-graph.json").read_text(encoding="utf-8"))).value
|
|
plan = plan_activation(graph, max_items=1, max_tokens=20)
|
|
|
|
action = activation_action(plan)
|
|
|
|
assert action.action == LifecycleActionKind.ACTIVATE
|
|
assert action.metadata["selection"]["id"] == plan.plan_id
|