Files
Nick 11e4bd20d5 feat(contracts): close PARTIAL gaps — dichotomy wave
Name-preserving 1:1 port of the 7 audit-missing functions (_ct_core,
_resolve_and_project, _run_contract_python, capture_signatures,
save_signatures, load_signatures, main as contracts_main) into
src/rust/contracts with IO behind injectable seams (CoreProbe /
Invoker / Signaturer / MainIO); 8 new FFI kernels (ct_gate,
ct_resolve, ct_run_python, ct_run_all, ct_capture, ct_save, ct_load,
ct_main) wired in contracts_loader.

Frozen truth: src/rust/contracts/src/ct_gap_truth.json (127 rows,
freeze byte-identical + harness --verify 23/23 clean); battery
src/rust/contracts/src/gap_battery.rs 19/19 green; live parity
replay failures=0 (facade 30, kernel 15); clippy -D warnings clean;
Python both pins green. Audit: contracts 11/11 FULL.

One documented eager/lazy divergence (projection-crash row): crash on
the delegated path, PASS on the lazy oracle path — pinned both ways.
2026-10-13 18:48:11 +01:00

46 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""ct_rig.py — deterministic fixture modules for the contracts gap-close
frozen truth (dichotomy wave, #2479 tranche).
The contracts oracle resolves modules with a bare ``__import__``; two of
its branches need modules no stdlib provides:
* import-time crash (``except Exception -> crash`` on import): see
``ct_rig_badimport.py`` (raises RuntimeError at import).
* projection-time crash (``_project`` raising on a hostile result):
``make_bad_len`` returns an object whose ``__len__`` raises, so
``hasattr(result, "__len__")`` is True but ``len(result)`` explodes.
``make_ok`` / ``ATTR_VALUE`` cover the plain found paths without depending
on any third-party module. Everything here is pure and deterministic —
safe to import from both the freeze generator and ``--verify`` (both run
with ``scripts/`` on ``sys.path``).
"""
ATTR_VALUE = "ct-rig-stable-value"
class _BadLen:
def __len__(self):
raise RuntimeError("boom")
def make_bad_len():
"""Return an object that breaks ``_project``'s ``len()`` call."""
return _BadLen()
def make_ok():
"""Return a plain JSON-safe dict (the found-path control case)."""
return {"ok": True, "n": 3}
def make_none():
"""Return None (the expect_not_none-fail control case)."""
return None
def raise_on_call():
"""Raise on call (the call-crash control case)."""
raise ValueError("rig call failure")