core/evals/constraint_oracle
Shay e1e8426d97 feat(verified): P1-C — split bound_slots_digest into a separate VERIFIED obligation
Proof-object hardening before any serving wiring (review of #663): the "from the
stated quantities" obligation is now THREE separable digests, not folded into
derivation_digest — for replay, audit, and failure localization.

core/epistemic_disclosure/verified_contract.py:
- VerificationProof gains bound_slots_digest (the answer binds to a STATED slot — the
  asked unknown — not a phantom), between derivation_digest and back_substitution_digest.
- VerificationObligation gains requires_bound_slots (VERIFICATION_OBLIGATION strict);
  evaluate_verification adds the REASON_NO_BOUND_SLOTS check.

evals/constraint_oracle/verified_producer.py: populates bound_slots_digest from
unknowns_signature + query_signature + the bound solution, ONLY when the asked unknown
is in the solution (empty for a phantom answer).

A complete derivation does NOT imply the answer bound to a declared slot, so the two are
distinct obligations: test_derivation_digest_alone_is_insufficient_without_bound_slots
proves it (relaxing requires_bound_slots is what admits the gap — load-bearing).

All 7 real r2_gold 'solved' problems still VERIFY (bound_slots populated); wrong=0.
Contract+producer suites 106/0; smoke 90/0. Still off-serving.
2026-06-08 17:04:45 -07:00
..
__init__.py feat(constraint): R2 setup oracle + gold + ADR-0211 — the ruler (R2 C2) 2026-06-07 07:19:29 -07:00
__main__.py feat(constraint): two-category reader — prose to ConstraintProblem (R2 C5-C9) 2026-06-07 07:34:55 -07:00
r2_gold.jsonl feat(constraint): R2 setup oracle + gold + ADR-0211 — the ruler (R2 C2) 2026-06-07 07:19:29 -07:00
runner.py feat(constraint): two-category reader — prose to ConstraintProblem (R2 C5-C9) 2026-06-07 07:34:55 -07:00
signature.py feat(constraint): R2 setup oracle + gold + ADR-0211 — the ruler (R2 C2) 2026-06-07 07:19:29 -07:00
verified_producer.py feat(verified): P1-C — split bound_slots_digest into a separate VERIFIED obligation 2026-06-08 17:04:45 -07:00