core/evals/relational/__init__.py
Shay 2a3f422783 feat(measure): put the relational reader (#596) on the capability index
A1 of the refined sequencing — the binary-relation reader was inert w.r.t. the
yardstick (contributing 0). This adds a comprehension_relational_predicate domain:
binary-relation prose scored against hand-authored independent gold (predicate,
subject, object) triples — INV-25 independent / INV-27 reader-disjoint (the reader
never produced the gold). Index breadth 8->9, capability_score 0.937258->0.944030,
wrong_total still 0; baseline.json re-frozen to digest 1ea91c1e.

Rigor split: the index lane is POSITIVE-ONLY (clean coverage, consistent with the
other 8 lanes — mixing adversarial refuse-cases into the coverage denominator would
make 'added capability' read as a score drop). The #596 fabrication-catch lives in a
dedicated falsification test (evals/relational/v1/refusals.jsonl): the trailing-
qualifier / dangling-copula / negation / verb-form cases MUST refuse — bites if the
reader ever fabricates. Honest coverage gap recorded: overlaps_event has no copular
surface form (verb-form 'A overlaps B' refuses), so 17 positives cover 15/16 predicates.
2026-06-06 10:09:15 -07:00

8 lines
513 B
Python

"""Relational-predicate gold lane — binary-relation prose with independent gold.
The gold ``(predicate, subject, object)`` triples in ``v1/cases.jsonl`` are authored
by reading English semantics, INDEPENDENTLY of ``generate/meaning_graph/relational.py``
(INV-25 independent gold / INV-27 reader-disjoint): the reader never produced them.
``v1/refusals.jsonl`` holds adversarial inputs that must REFUSE (the #596 fabrication
class) — consumed by the dedicated falsification test, not the coverage metric.
"""