Skip to content

Epistemic Operations Protocol (retired)

The Epistemic Operations Protocol was a second, Python-side projection of durable graph state: twelve strict JSON Schemas plus generated Python/Rust DTOs, shipped from agent_utilities.protocols.epistemic_operations alongside the engine's own generated client.

Retiring the second projection deleted the catalog, the generator (scripts/check_epistemic_operations_protocol.py), and every generated DTO that had a direct equivalent in the engine's own generated client (epistemic_graph.generated.models): RequestContext, MutationBatch, ChangeEnvelope, WorkItem, Artifact, KnowledgeBatch, AnalyticsJob, TraceOutcome, ClaimWorkItem, EvidenceBundle, the ResourceReservation*/ResourceHostUpdate* families, and the DevelopmentLane* operation request/result types. Every caller that used one of these now imports epistemic_graph.generated.models directly, so the engine client is the sole Python-side graph projection.

What remains

agent_utilities.protocols.epistemic_operations still exports a handful of hand-written types that are not a second graph projection — each adds behavior the engine client does not provide, or deliberately narrows a wire shape the engine client exposes more broadly, and each still has a caller in retained Agent Utilities code:

Type Why it stays Caller
ProtocolModel A reusable fail-closed Pydantic base (extra="forbid", frozen=True, strict=True); the engine client inlines its own model_config per class instead of exporting a shared base. data_prep/**, orchestration/resource_pool_authority.py, orchestration/service_scale_units.py
OperationResult / OperationError / OperationRedirect AU's own generic success/failure/placement-redirect envelope for public REST/MCP/streaming surfaces; the engine client returns a typed result per method instead of one generic envelope. security/error_surface.py
PlacementRoute A narrower, extra="forbid" view that deliberately rejects the engine client's additive endpoints field (see knowledge_graph/core/placement_catalog.py's _validate_answer docstring). knowledge_graph/core/placement_catalog.py
DevelopmentLaneCleanupIntent A small internal intent value with no matching request/result shape in the engine client. orchestration/repository_work_item.py

None of these carry a network call, a schema catalog, or a generator; they are plain, hand-maintained types. A follow-up requirement can retire each individually once its caller moves or the engine client grows a direct equivalent.