Files
phase-memory/tests/test_runtime_snapshots.py

71 lines
2.4 KiB
Python

import json
from pathlib import Path
from phase_memory.runtime import PhaseMemoryRuntime
FIXTURES = Path(__file__).parent / "fixtures"
def _load(name: str):
return json.loads((FIXTURES / name).read_text(encoding="utf-8"))
def test_profile_plan_runtime_snapshot() -> None:
runtime = PhaseMemoryRuntime()
envelope = runtime.plan_profile(_load("memory-profile.json"), source_ref="tests/fixtures/memory-profile.json")
assert _profile_projection(envelope) == _load("runtime-profile-plan-snapshot.json")
def test_activation_plan_runtime_snapshot() -> None:
runtime = PhaseMemoryRuntime()
envelope = runtime.plan_activation(
_load("memory-graph.json"),
source_ref="tests/fixtures/memory-graph.json",
max_items=2,
max_tokens=18,
profile_id="phase-memory-fixture-profile",
priority_node_ids=("decision.boundary",),
)
assert _activation_projection(envelope) == _load("runtime-activation-plan-snapshot.json")
def _profile_projection(envelope: dict) -> dict:
plan = envelope["data"]["plan"]
return {
"schema_version": envelope["schema_version"],
"operation": envelope["operation"],
"operation_id": envelope["operation_id"],
"valid": envelope["valid"],
"subject": envelope["subject"],
"diagnostic_codes": [diagnostic["code"] for diagnostic in envelope["diagnostics"]],
"data": {
"ready": plan["ready"],
"capabilities": plan["capabilities"],
"required_adapters": plan["required_adapters"],
"policy_gates": plan["policy_gates"],
},
}
def _activation_projection(envelope: dict) -> dict:
plan = envelope["data"]["activation_plan"]
return {
"schema_version": envelope["schema_version"],
"operation": envelope["operation"],
"operation_id": envelope["operation_id"],
"valid": envelope["valid"],
"subject": envelope["subject"],
"diagnostic_codes": [diagnostic["code"] for diagnostic in envelope["diagnostics"]],
"data": {
"plan_id": plan["plan_id"],
"selected_node_ids": plan["selected_node_ids"],
"selected_event_ids": plan["selected_event_ids"],
"omitted": [f"{item['id']}:{item['reason']}" for item in plan["omitted"]],
"token_estimate": plan["token_estimate"],
"package_request_id": envelope["data"]["package_request"]["id"],
},
}