Skip to content

llm.fence — Perimeter / Schema Validation

Auto-documented module: spanforge.namespaces.fence

The llm.fence.* namespace records the outcome of structured-output validation, retry attempts, and hard failures when a schema fence rejects model output (RFC-0001 §4).

Payload classes

ClassEvent typeDescription
FenceValidatedPayloadllm.fence.validatedAn output passed schema validation
FenceRetryTriggeredPayloadllm.fence.retry.triggeredValidation failed and a retry was issued
FenceMaxRetriesExceededPayloadllm.fence.max_retries.exceededMax retry limit was reached

FenceValidatedPayload — key fields

FieldTypeRequiredDescription
fence_idstrIdentifier of the fence rule or schema
schema_namestrName of the JSON Schema / Pydantic model validated against
attemptint1-based attempt number (1 = first try, no retry)
output_typestr | NoneOne of "json_schema", "pydantic", "regex", "xml", "custom"
span_idstr | NoneParent span identifier
validation_duration_msfloat | NoneValidation latency in milliseconds

Example

from spanforge import Event, EventType
from spanforge.namespaces.fence import FenceValidatedPayload

payload = FenceValidatedPayload(
    fence_id="customer-reply-schema-v2",
    schema_name="CustomerReplyResponse",
    attempt=1,
    output_type="pydantic",
    validation_duration_ms=1.8,
)

event = Event(
    event_type=EventType.FENCE_VALIDATED,
    source="my-app@1.0.0",
    org_id="org_01HX",
    payload=payload.to_dict(),
)