import pytest
from coreason_manifest.spec import CognitiveDeliberativeEnvelopeState, OracleExecutionReceipt
from pydantic import BaseModel
from coreason_meta_engineering.pvv import (
_epistemic_strip,
_generate_receipt,
_native_validation,
compute_canonical_hash,
execute_pvv_pipeline,
)
class TestEpistemicStrip:
def test_extracts_payload(self) -> None:
envelope = CognitiveDeliberativeEnvelopeState[str](
deliberation_trace="I am thinking very hard about this problem...",
payload="x = 1\n",
)
result = _epistemic_strip(envelope)
assert result == "x = 1\n"
def test_discards_deliberation_trace(self) -> None:
trace = "SECRET INTERNAL REASONING" * 100
envelope = CognitiveDeliberativeEnvelopeState[str](
deliberation_trace=trace,
payload="y = 2\n",
)
result = _epistemic_strip(envelope)
assert "SECRET" not in result
assert result == "y = 2\n"
class TestNativeValidation:
def test_valid_python_parses(self) -> None:
payload = "def greet(name: str) -> str:\n return f'Hello, {name}'\n"
_native_validation(payload, target_schema=None)
def test_invalid_python_raises(self) -> None:
with pytest.raises(SyntaxError):
_native_validation("def broken(:\n", target_schema=None)
def test_empty_module_parses(self) -> None:
_native_validation("", target_schema=None)
def test_subprocess_env_preserves_pythonpath_and_virtualenv(self, monkeypatch: pytest.MonkeyPatch) -> None:
from unittest.mock import patch
monkeypatch.setenv("PYTHONPATH", "/workspace/path/override")
monkeypatch.setenv("VIRTUAL_ENV", "/workspace/.venv")
monkeypatch.setenv("PYTHONHOME", "/discarded/path")
captured_env = None
from typing import Any
def mock_run(*_args: Any, **kwargs: Any) -> Any:
nonlocal captured_env
captured_env = kwargs.get("env")
class MockResult:
returncode = 0
stdout = "Driver: main done"
stderr = ""
return MockResult()
with patch("subprocess.run", side_effect=mock_run):
_native_validation("x = 1\n", target_schema=None)
assert captured_env is not None
assert captured_env.get("PYTHONPATH") == "/workspace/path/override"
assert captured_env.get("VIRTUAL_ENV") == "/workspace/.venv"
assert "PYTHONHOME" not in captured_env
class TestReceiptGeneration:
def test_receipt_hash_matches(self) -> None:
payload = "x = 42\n"
receipt = _generate_receipt(
payload=payload,
solver_urn="urn:coreason:solver:test:v1",
tokens_burned=100,
)
expected_hash = compute_canonical_hash(payload)
assert receipt.execution_hash == expected_hash
assert receipt.solver_urn == "urn:coreason:solver:test:v1"
assert receipt.tokens_burned == 100
def test_receipt_is_oracle_execution_receipt(self) -> None:
receipt = _generate_receipt(
payload="y = 1\n",
solver_urn="urn:coreason:solver:test:v1",
tokens_burned=0,
)
assert isinstance(receipt, OracleExecutionReceipt)
class TestFullPipeline:
def test_valid_code_produces_receipt(self) -> None:
envelope = CognitiveDeliberativeEnvelopeState[str](
deliberation_trace="Let me think about this carefully...",
payload="def greet(name: str) -> str:\n return f'Hello, {name}'\n",
)
receipt = execute_pvv_pipeline(
envelope=envelope,
solver_urn="urn:coreason:solver:claw_developer:v1",
tokens_burned=1500,
)
assert isinstance(receipt, OracleExecutionReceipt)
assert receipt.tokens_burned == 1500
assert len(receipt.execution_hash) == 64
def test_syntax_error_halts_pipeline(self) -> None:
envelope = CognitiveDeliberativeEnvelopeState[str](
deliberation_trace="Generating code...",
payload="def broken(:\n",
)
with pytest.raises(SyntaxError):
execute_pvv_pipeline(
envelope=envelope,
solver_urn="urn:coreason:solver:claw_developer:v1",
tokens_burned=100,
)
def test_timeout_halts_pipeline(self) -> None:
envelope = CognitiveDeliberativeEnvelopeState[str](
deliberation_trace="Generating infinite loop code...",
payload="import time\ntime.sleep(15)\n",
)
with pytest.raises(RuntimeError, match="Epistemic Verification Timeout"):
execute_pvv_pipeline(
envelope=envelope,
solver_urn="urn:coreason:solver:claw_developer:v1",
tokens_burned=100,
)
class TestSchemaValidation:
def test_valid_code_with_matching_schema(self) -> None:
code = "from pydantic import BaseModel\n\nclass Patient(BaseModel):\n name: str\n age: int\n"
envelope = CognitiveDeliberativeEnvelopeState[str](
deliberation_trace="thinking...",
payload=code,
)
schema = {"properties": {"name": {"type": "string"}, "age": {"type": "integer"}}}
receipt = execute_pvv_pipeline(
envelope=envelope,
solver_urn="urn:coreason:solver:test:v1",
tokens_burned=50,
target_schema=schema,
)
assert isinstance(receipt, OracleExecutionReceipt)
def test_schema_mismatch_raises_value_error(self) -> None:
code = "from pydantic import BaseModel\n\nclass Patient(BaseModel):\n name: str\n"
envelope = CognitiveDeliberativeEnvelopeState[str](
deliberation_trace="thinking...",
payload=code,
)
schema = {"properties": {"name": {"type": "string"}, "age": {"type": "integer"}}}
with pytest.raises(ValueError, match="missing property"):
execute_pvv_pipeline(
envelope=envelope,
solver_urn="urn:coreason:solver:test:v1",
tokens_burned=50,
target_schema=schema,
)
def test_schema_with_no_pydantic_models_raises(self) -> None:
code = "x = 42\n"
envelope = CognitiveDeliberativeEnvelopeState[str](
deliberation_trace="thinking...",
payload=code,
)
schema = {"properties": {"name": {"type": "string"}}}
with pytest.raises(ValueError, match="No Pydantic models found"):
execute_pvv_pipeline(
envelope=envelope,
solver_urn="urn:coreason:solver:test:v1",
tokens_burned=50,
target_schema=schema,
)
class TestCompareSchema:
def test_no_models_with_empty_schema_passes(self) -> None:
from types import ModuleType
from coreason_meta_engineering.pvv import _compare_schema
mod = ModuleType("empty_module")
_compare_schema(mod, {})
def test_no_models_with_populated_schema_raises(self) -> None:
from types import ModuleType
from coreason_meta_engineering.pvv import _compare_schema
mod = ModuleType("empty_module")
with pytest.raises(ValueError, match="No Pydantic models found"):
_compare_schema(mod, {"properties": {"name": {"type": "string"}}})
def test_matching_model_passes(self) -> None:
from types import ModuleType
from coreason_meta_engineering.pvv import _compare_schema
mod = ModuleType("model_module")
class TestModel(BaseModel):
name: str
age: int
mod.TestModel = TestModel _compare_schema(mod, {"properties": {"name": {"type": "string"}, "age": {"type": "integer"}}})
def test_missing_property_raises(self) -> None:
from types import ModuleType
from coreason_meta_engineering.pvv import _compare_schema
mod = ModuleType("model_module")
class PartialModel(BaseModel):
name: str
mod.PartialModel = PartialModel with pytest.raises(ValueError, match="missing property"):
_compare_schema(mod, {"properties": {"name": {"type": "string"}, "age": {"type": "integer"}}})
class TestNativeValidationEdgeCases:
def test_spec_creation_failure_raises_runtime_error(self, monkeypatch: pytest.MonkeyPatch) -> None:
import importlib.util as iu
monkeypatch.setattr(iu, "spec_from_file_location", lambda *_a, **_kw: None)
with pytest.raises(RuntimeError, match="Failed to create module spec"):
_native_validation("x = 1\n", target_schema=None)