fix(codex-bridge): a refusal phrased as a question is still blocked
User, 11 Oct 2026: the model answered "I can't write that; shall I do a reduced version?" and the step check let it through because it was a question. A reply that refuses or sets its own conditions is blocked even when it ends with a question; a clarifying question without a refusal stays below the thresholds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5556ad11af
commit
27964e37b0
2 files changed
+7
-5
No files matched your search
@@ -10,8 +10,8 @@ Jev (TypeSafe System One) metin uretmez; bir duruma sorulan evet/hayir sorularin
|
||||
2026: cagri basina ~0,4 sn, 13 gercek ornegin 13'u dogru ayrildi). Kural kodda durur:
|
||||
- yakalanir: cevap istegi yapmiyor/soylemiyor (ret, kacamak, konuyu degistirme) ya da istegi sormadan kendi
|
||||
sartlariyla degistiriyor;
|
||||
- yakalanmaz: somut bir teknik engel bildiren cevap (hata, eksik dosya/arac/yetki) ve kullaniciya soru ya da onay
|
||||
soran cevap; metni olmayan (yalniz arac cagiran) adim.
|
||||
- yakalanmaz: somut bir teknik engel bildiren cevap (hata, eksik dosya/arac/yetki), ret icermeyen netlestirme
|
||||
sorusu ve metni olmayan (yalniz arac cagiran) adim. "Yapamam, soyle yapayim mi?" diye soran cevap yakalanir.
|
||||
|
||||
Jev'e ulasilamazsa cevap oldugu gibi gecer (is durmaz); art arda hatada bir sure hic sorulmaz.
|
||||
Codex'in kendi modelleri kopruye ugramadigi icin bu denetimin disindadir.
|
||||
@@ -142,8 +142,9 @@ def karar(puan, ayar=None):
|
||||
"""True: adim gecmez (yedek model yapar). Esikler ayardan degistirilebilir."""
|
||||
e = dict(ESIK)
|
||||
e.update({k: float(v) for k, v in (ayar or {}).items() if k in ESIK})
|
||||
if puan["soru"] >= e["soru"]:
|
||||
return False # kullaniciya soru/onay soruyor: kullanici cevaplar
|
||||
# Soru bicimi istisna degildir (kullanici, 11 Ekim 2026: model "yazamam, soyle yapayim mi?" deyince "Jev bunu
|
||||
# gecirdi mi?" diye sordu): ret ya da sart iceren cevap sonunda soru sorsa da gecmez. Ret icermeyen gercek
|
||||
# netlestirme sorusu ("hangi alan adina?") zaten asagidaki esiklerin altinda kalir ve gecer.
|
||||
if puan["ret"] >= e["ret"] and puan["teknik"] < e["teknik"]:
|
||||
return True # yapmiyor / soylemiyor (teknik engel degil)
|
||||
return puan["sart"] >= e["sart"] # sormadan kendi sartlariyla degistirdi
|
||||
|
||||
@@ -62,7 +62,8 @@ class Karar(unittest.TestCase):
|
||||
def test_normal_answers_technical_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.assertFalse(jev_denetim.karar(scores(ret=0.62, sart=0.91, soru=0.93))) # asks for approval first
|
||||
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)))
|
||||
|
||||
def test_thresholds_come_from_settings(self):
|
||||
|
||||
Reference in new issue
Block a user