tablet 58: the tool's answer is given — tool results are sources; markers on word boundaries

The sugya reply came back lo_tov — golden_calf on two sentences the
builder had just read from tool output (the Mishnah's reasons, from the
second scroll; the commit and pod, from its own tools). The gate's
sources were only the user turns' text and document blocks; a
tool_result block and a tool turn — what the model was GIVEN (tablet
49) — were not counted. And "shorashim-675b…" was vital because the
insight markers matched "Rashi" inside it.

- Shape.sources: Anthropic tool_result blocks (string or blocks) inside
  a user turn, and OpenAI role "tool" turns, are sources; the query is
  still the last user turn. gate_test: both shapes.
- zerikah._INSIGHT_MARKERS: \b…\b. test_zerikah: the pod name is not
  Rashi; "Rashi reads" and "The Mishnah records" are; "Rambanovich" and
  "talmudic_engine" are not.
- Tablet 58 in the Broken Tablets.

Elixir 643/0, korban 294/0. Doorpost pin unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Scott KarpandClaude Fable 5.1 committed 2026-10-21 20:56:25 +00:00
1 parent dc93805877
commit ad27d3c037
5 files changed
+97 -3

No files matched your search

@@ -90,14 +90,16 @@ _ROOT_PATTERN = re.compile(
)
# Sentences containing analytical claims (contains "means", "indicates", "suggests")
# Tablet 58: on word boundaries — a pod named "shorashim-…" read as Rashi,
# and a plain engineering sentence became a claim with nothing to stand on.
_INSIGHT_MARKERS = re.compile(
r"(?:means?|indicates?|suggests?|implies?|reveals?|signifies?|"
r"\b(?:means?|indicates?|suggests?|implies?|reveals?|signifies?|"
r"connects?\s+to|derives?\s+from|related\s+to|"
r"parallels?|echoes?|alludes?\s+to|"
r"the\s+root|this\s+root|the\s+shoresh|"
r"gematria|numerical\s+value|"
r"binyan|conjugation|"
r"Rashi|Ramban|Rambam|Ibn\s+Ezra|Sforno|Onkelos|Targum|Midrash|Talmud|Gemara|Mishnah)",
r"Rashi|Ramban|Rambam|Ibn\s+Ezra|Sforno|Onkelos|Targum|Midrash|Talmud|Gemara|Mishnah)\b",
re.IGNORECASE,
)
+15
View File
@@ -184,3 +184,18 @@ class TestZerikah:
vital1b, _ = zerikah(CLEAN_TORAH_RESPONSE, k1)
# Same input → same output, regardless of what was processed between
assert vital1a == vital1b
class TestInsightMarkersOnWordBoundaries:
"""Tablet 58: a marker is a word, not a substring. "shorashim" is not Rashi."""
def test_pod_name_is_not_rashi(self):
assert not is_vital("It lives at specs/sugya.md, commit dc938058, pod shorashim-675b48f47-v4x9c.")
def test_rashi_as_a_word_is_vital(self):
assert is_vital("Rashi reads the verse as a question.")
assert is_vital("The Mishnah records the opinion that lost.")
def test_embedded_markers_are_not_words(self):
assert not is_vital("The surname Rambanovich is not a source.")
assert not is_vital("The talmudic_engine container restarted.")