generated from coulomb/repo-seed
feat(memory): add audit export surface
This commit is contained in:
@@ -13,6 +13,7 @@ from kontextual_engine import (
|
||||
MemoryRefreshRequest,
|
||||
MemoryRetentionRequest,
|
||||
MemoryQueryRequest,
|
||||
MemoryRuntimeExportRequest,
|
||||
MemoryRuntimeService,
|
||||
MemoryUpdateRequest,
|
||||
OperationContext,
|
||||
@@ -73,6 +74,7 @@ def test_memory_runtime_service_imports_contracts_and_reports_audit_context() ->
|
||||
assert summary.audit_event is not None
|
||||
assert summary.audit_event.actor_id == "agent-codex"
|
||||
assert summary.audit_event.correlation_id == "corr-memory"
|
||||
assert repo.get_memory_audit_event(summary.audit_event.event_id) == summary.audit_event
|
||||
assert repo.get_memory_profile(summary.profile_id).memory_kinds == (
|
||||
"reasoning",
|
||||
"knowledge",
|
||||
@@ -283,6 +285,53 @@ def test_memory_package_export_emits_markitect_context_package_inputs_without_de
|
||||
assert export.audit_event.operation == "memory.package.export"
|
||||
|
||||
|
||||
def test_memory_runtime_export_includes_persisted_audit_and_event_traces() -> None:
|
||||
repo = InMemoryMemoryGraphRepository()
|
||||
service = MemoryRuntimeService(repo)
|
||||
context = operation_context()
|
||||
summary = service.import_markitect_graph(_graph_contract(), context=context)
|
||||
|
||||
query = service.query_memory(MemoryQueryRequest(graph_id=summary.graph_id), context)
|
||||
retention = service.apply_retention(
|
||||
MemoryRetentionRequest(graph_id=summary.graph_id, stale_after_days=0),
|
||||
context,
|
||||
)
|
||||
audit_operations = {
|
||||
event.operation
|
||||
for event in repo.list_memory_audit_events(
|
||||
graph_id=summary.graph_id,
|
||||
correlation_id=context.correlation_id,
|
||||
)
|
||||
}
|
||||
export = service.export_runtime_envelope(
|
||||
MemoryRuntimeExportRequest(
|
||||
graph_id=summary.graph_id,
|
||||
event_kinds=("recorded", "retention"),
|
||||
operations=("memory.query", "memory.retention.apply"),
|
||||
),
|
||||
context,
|
||||
)
|
||||
|
||||
assert query.success is True
|
||||
assert retention.appended_events[0].kind == "retention"
|
||||
assert {"memory.import_markitect_graph", "memory.query", "memory.retention.apply"} <= audit_operations
|
||||
assert export.success is True
|
||||
assert export.envelope["schema_version"] == "kontextual.memory.runtime-export.v1"
|
||||
assert export.envelope["metadata"]["counts"] == {
|
||||
"nodes": 2,
|
||||
"edges": 1,
|
||||
"events": 2,
|
||||
"audit_events": 2,
|
||||
}
|
||||
assert {event["kind"] for event in export.envelope["events"]} == {"recorded", "retention"}
|
||||
assert {event["operation"] for event in export.envelope["audit_events"]} == {
|
||||
"memory.query",
|
||||
"memory.retention.apply",
|
||||
}
|
||||
assert export.audit_event is not None
|
||||
assert repo.get_memory_audit_event(export.audit_event.event_id) == export.audit_event
|
||||
|
||||
|
||||
def test_memory_runtime_service_rejects_invalid_edge_contracts() -> None:
|
||||
repo = InMemoryMemoryGraphRepository()
|
||||
service = MemoryRuntimeService(repo)
|
||||
|
||||
Reference in New Issue
Block a user