diff --git a/evals/metrics.py b/evals/metrics.py index f46b1261..22a8cf55 100644 --- a/evals/metrics.py +++ b/evals/metrics.py @@ -17,7 +17,13 @@ class CaseResult: versor_closure: bool versor_condition: float trace_hash: str + #: The SERVED surface — register-decorated, what the user reads. surface: str + #: The register-INVARIANT truth-path bytes that ``compute_trace_hash`` + #: folds (ADR-0069 inv C). A different field with a different contract: + #: ``surface`` is *expected* to vary across the register axis, this is + #: *required* not to. Defaulted so older constructors stay valid. + hash_surface: str = "" @dataclass(slots=True) diff --git a/evals/run_cognition_eval.py b/evals/run_cognition_eval.py index 3ece4009..840f095a 100644 --- a/evals/run_cognition_eval.py +++ b/evals/run_cognition_eval.py @@ -65,6 +65,7 @@ def _run_case(case: dict, pipeline: CognitiveTurnPipeline) -> CaseResult: versor_condition=result.versor_condition, trace_hash=result.trace_hash, surface=result.surface, + hash_surface=result.hash_surface or result.surface, )