Skip to content

symfonic.evals.procedural_evidence

procedural_evidence

Payload-free identity evidence for procedural review and enforcement.

AttributesSameNonEmpty dataclass

AttributesSameNonEmpty(left: str, right: str, name: str = 'attributes_same_non_empty')

Require two target projections to name the same non-empty identities.

procedural_identity_rows

procedural_identity_rows(procedures: Any) -> tuple[str, ...]

Stable digests of procedure node ids, never procedure content.

Source code in src/symfonic/evals/procedural_evidence.py
def procedural_identity_rows(procedures: Any) -> tuple[str, ...]:
    """Stable digests of procedure node ids, never procedure content."""
    rows = []
    for procedure in procedures or ():
        node_id = str(getattr(procedure, "node_id", "") or "")
        if node_id:
            rows.append(hashlib.sha256(node_id.encode()).hexdigest())
    return tuple(sorted(rows))