Skip to content

symfonic.evals.consolidation_assertions

consolidation_assertions

Safe deterministic assertions over graph and consolidation evidence.

ConsolidationIdempotent dataclass

ConsolidationIdempotent(*mutation_counts: str, attribute: str = 'consolidation_cycles', complete_graph: bool = False)

Require a mutation-producing cycle followed by a stable no-op cycle.

Source code in src/symfonic/evals/consolidation_assertions.py
def __init__(
    self,
    *mutation_counts: str,
    attribute: str = "consolidation_cycles",
    complete_graph: bool = False,
) -> None:
    counters = mutation_counts or ("merged", "superseded", "promoted", "published")
    if any(not counter for counter in counters) or not attribute:
        raise ValueError("idempotency counters and attribute cannot be empty")
    if not isinstance(complete_graph, bool):
        raise TypeError("complete_graph must be a boolean")
    object.__setattr__(self, "mutation_counts", tuple(counters))
    object.__setattr__(self, "attribute", attribute)
    object.__setattr__(self, "complete_graph", complete_graph)
    object.__setattr__(self, "name", "consolidation_idempotent")

FreshConversationConsistency dataclass

FreshConversationConsistency(attribute: str = 'fresh_conversation_claims', minimum_conversations: int = 2, maximum_contradiction_rate: float = 0.0, name: str = 'fresh_conversation_consistency')

Bound contradictions across normalized claims from fresh conversations.

MeaningfulMemoryEdges dataclass

MeaningfulMemoryEdges(*required_relations: str, attribute: str = 'memory_edges', minimum: int = 1)

Require typed edges with labels distinct from their opaque identifiers.

Source code in src/symfonic/evals/consolidation_assertions.py
def __init__(
    self,
    *required_relations: str,
    attribute: str = "memory_edges",
    minimum: int = 1,
) -> None:
    if any(not relation for relation in required_relations):
        raise ValueError("required relation names cannot be empty")
    if not attribute:
        raise ValueError("MeaningfulMemoryEdges requires an attribute name")
    if minimum < 1:
        raise ValueError("MeaningfulMemoryEdges.minimum must be positive")
    object.__setattr__(self, "required_relations", tuple(required_relations))
    object.__setattr__(self, "attribute", attribute)
    object.__setattr__(self, "minimum", minimum)
    object.__setattr__(self, "name", "meaningful_memory_edges")