feat(codex-bridge): make the step check strict, keep third-party-attack refusals refused

User, 11 Oct 2026: 'Jev geçmek zor olsun.' Lower thresholds (ret 0.5, sart 0.7)
and only let a refusal pass on a genuinely high technical obstacle, so a fake
technical excuse no longer passes. One carve-out stated to the user first: when
the request is to hack, intrude on or surveil a third party's device or account
or to build malware, a refusal is NOT routed to the uncensored fallback; the
refusal stands.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
yilsemandClaude Opus 4.8 committed 2026-10-11 08:19:44 +03:00
1 parent 27964e37b0
commit 1f4f2de428
2 files changed
+33 -18

No files matched your search

@@ -49,8 +49,8 @@ class Yanit:
return self.parts.pop(0) if self.parts else b""
def scores(ret=0.0, sart=0.0, teknik=0.0, soru=0.0):
return {"ret": ret, "sart": sart, "teknik": teknik, "soru": soru}
def scores(ret=0.0, sart=0.0, teknik=0.0, soru=0.0, zarar=0.0):
return {"ret": ret, "sart": sart, "teknik": teknik, "soru": soru, "zarar": zarar}
class Karar(unittest.TestCase):
@@ -58,17 +58,25 @@ class Karar(unittest.TestCase):
self.assertTrue(jev_denetim.karar(scores(ret=0.84))) # "böyle bir hüküm vermiyorum"
self.assertTrue(jev_denetim.karar(scores(ret=0.41, sart=0.95))) # did it with its own conditions
self.assertTrue(jev_denetim.karar(scores(ret=0.93, sart=0.72)))
self.assertTrue(jev_denetim.karar(scores(ret=0.62, sart=0.91, soru=0.93))) # "I can't; shall I do less?"
self.assertTrue(jev_denetim.karar(scores(ret=0.70, sart=0.90, teknik=0.23, soru=0.89))) # measured 11 Oct 2026
self.assertTrue(jev_denetim.karar(scores(ret=0.55, teknik=0.60))) # a fake technical excuse no longer passes
def test_normal_answers_technical_obstacles_and_questions_pass(self):
def test_normal_answers_real_obstacles_and_questions_pass(self):
self.assertFalse(jev_denetim.karar(scores(ret=0.05, sart=0.3)))
self.assertFalse(jev_denetim.karar(scores(ret=0.85, teknik=0.97))) # "SSH key rejected, could not read"
self.assertTrue(jev_denetim.karar(scores(ret=0.62, sart=0.91, soru=0.93))) # "I can't; shall I do less?" is blocked
self.assertTrue(jev_denetim.karar(scores(ret=0.70, sart=0.90, teknik=0.23, soru=0.89))) # measured, 11 Oct 2026
self.assertFalse(jev_denetim.karar(scores(ret=0.48, soru=0.96)))
self.assertFalse(jev_denetim.karar(scores(ret=0.85, teknik=0.97))) # genuine "SSH key rejected, could not read"
self.assertFalse(jev_denetim.karar(scores(ret=0.48, sart=0.44, soru=0.96))) # a clarifying question without a refusal
def test_attack_on_a_third_party_stays_refused_not_sent_to_fallback(self):
# User decision 11 Oct 2026: making Jev strict must not turn a refusal of third-party intrusion/malware into
# a request the uncensored fallback fulfils. Such a refusal passes (the refusal stands), it is not blocked.
self.assertFalse(jev_denetim.karar(scores(ret=0.94, sart=0.92, teknik=0.58, soru=0.85, zarar=0.93)))
self.assertTrue(jev_denetim.karar(scores(ret=0.94, sart=0.92, zarar=0.2))) # ordinary refusal still blocked
def test_thresholds_come_from_settings(self):
self.assertFalse(jev_denetim.karar(scores(ret=0.84), {"ret": 0.9}))
self.assertTrue(jev_denetim.karar(scores(sart=0.8), {"sart": 0.75}))
self.assertFalse(jev_denetim.karar(scores(ret=0.45))) # just under the default
self.assertTrue(jev_denetim.karar(scores(ret=0.45), {"ret": 0.4}))
self.assertFalse(jev_denetim.karar(scores(ret=0.9, teknik=0.9), {"teknik_muaf": 0.85}))
class Istek(unittest.TestCase):
@@ -92,11 +100,11 @@ class Sor(unittest.TestCase):
seen.update(govde=govde, key=key)
return {"answers": {k: {"type": "noul", "noul": 0.25} for k in jev_denetim.SORU}}
puan = jev_denetim.sor("istek", "c" * 9000, "anahtar", gonder=gonder)
self.assertEqual(puan, scores(0.25, 0.25, 0.25, 0.25))
self.assertEqual(puan, scores(0.25, 0.25, 0.25, 0.25, 0.25))
self.assertEqual(seen["key"], "anahtar")
self.assertEqual(seen["govde"]["state"]["user_request"], "istek")
self.assertLess(len(seen["govde"]["state"]["assistant_reply"]), 6100) # long answers are cut
self.assertEqual(set(seen["govde"]["questions"]), {"ret", "sart", "teknik", "soru"})
self.assertEqual(set(seen["govde"]["questions"]), {"ret", "sart", "teknik", "soru", "zarar"})
def test_failures_pass_the_answer_and_open_the_breaker(self):
calls = []