Files
phase-memory/tests/test_activation.py

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