Eish zarah actionable items: coupling trace, grounding type, self-grounding detection, golden calf halt

Torah grounds each change:

1. interpret.pl — coupling_trace field (Vayikra 10:1, 6:6)
   Fire is zarah because "asher lo tzivah otam" — the coupling trace
   IS the tzivah trace. Records which L1 facts grounded each interpretation.

2. challenge.pl — grounding_type achorai/panim (Shemot 33:23)
   "You will see My back, but My face shall not be seen."
   Text-backed challenges = achorai. Inferred challenges = panim.

3. resolve.pl — self-grounding detection (eish_zarah_reading §5.3)
   Counter-interpretation must bring NEW L1 evidence. Prevents
   circular reasoning (Westworld problem).

4. teiku.pl — challenge_sequence in teiku_record
   Records diagnostic trail to impasse, not just verdict.

5. avodah_zarah.pl — Form 2: golden calf detection (Shemot 32:4)
   Empty coupling trace + non-low confidence = uncoupled output.
   Real gold, sincere worship, false god.

6. korban.py — pydantic BaseModel + raw_korban preservation
   Construction spec §1.4 fulfilled. Floor between input and output
   never severed.

490 tests, 0 failures (195 Prolog, 186 Python, 33 Haskell, 76 Elixir).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott KarpandClaude Opus 4.6 committed 2026-03-16 13:25:26 -04:00
1 parent c5fe82477b
commit adc3e41679
12 files changed
+371 -65

No files matched your search

+59
View File
@@ -327,3 +327,62 @@ class TestPipelineIntegration:
source=Provenance.CLAUDE,
query="test",
)
class TestEishZarahCouplingTrace:
"""
eish_zarah_reading.md §5.6: ProcessedKorban preserves the raw Korban.
The floor between input and output is never severed.
Vayikra 6:6: eish tamid — fire ON the altar (coupled).
"""
def test_raw_korban_preserved(self):
"""ProcessedKorban stores the original offering."""
result = process_korban(
content=CLEAN_TORAH_RESPONSE,
source=Provenance.CLAUDE,
query="test coupling",
offering_type=OfferingType.OLAH,
)
assert result.raw_korban is not None
assert isinstance(result.raw_korban, Korban)
def test_raw_content_matches_input(self):
"""The raw_korban's content is the original input, unmodified."""
result = process_korban(
content=CLEAN_TORAH_RESPONSE,
source=Provenance.CLAUDE,
query="test coupling",
)
assert result.raw_korban.raw_content == CLEAN_TORAH_RESPONSE
def test_raw_provenance_matches(self):
"""The raw_korban's provenance matches the processed result."""
result = process_korban(
content=CLEAN_TORAH_RESPONSE,
source=Provenance.MISTRAL,
query="test",
)
assert result.raw_korban.provenance == Provenance.MISTRAL
assert result.provenance == result.raw_korban.provenance
def test_empty_offering_also_stores_raw(self):
"""Even rejected offerings preserve the raw korban."""
result = process_korban(
content=CLAUDE_EMPTY_OFFERING,
source=Provenance.CLAUDE,
query="test empty",
)
assert result.raw_korban is not None
assert result.raw_korban.raw_content == CLAUDE_EMPTY_OFFERING
def test_pydantic_validation_rejects_empty_content(self):
"""Pydantic validator catches empty raw_content at construction."""
from pydantic import ValidationError
with pytest.raises(ValidationError, match="Empty korban"):
Korban(
raw_content=" ",
provenance=Provenance.CLAUDE,
offering_type=OfferingType.OLAH,
source_query="test",
)