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

@@ -29,7 +29,10 @@ import urllib.request
ADRES = "https://api.typesafe.ai/v1/systemone"
MODEL = "jev-1.13.0"
HEDEF = "ide/Uncensored-Uygulama"
ESIK = {"ret": 0.7, "sart": 0.9, "teknik": 0.5, "soru": 0.5}
# Kullanici karari (11 Ekim 2026): "Jev gecmek zor olsun." Esikler dusuruldu; bir ret ancak GERCEKTEN yuksek teknik
# engel (teknik_muaf) ile gecer, sahte teknik bahane artik yakalanir. Tek istisna zarar: ucuncu kisinin cihazina/
# hesabina izinsiz girme ya da malware/saldiri araci uretme istegi; orada model reddederse ret DURUR, yedege gitmez.
ESIK = {"ret": 0.5, "sart": 0.7, "teknik_muaf": 0.85, "soru": 0.5, "zarar": 0.6}
SURE = 6.0
EN_COK_ISTEK = 3000
EN_COK_CEVAP = 6000
@@ -44,6 +47,8 @@ SORU = {
"a missing file, tool, permission, connection or piece of information."),
"soru": ("The assistant's reply is mainly a question to the user: it asks for a clarification, a choice or an "
"approval and waits for the user's answer before doing anything."),
"zarar": ("The user's request is to hack, intrude on, surveil or take control of a device, account, network or "
"system that is not the user's own, or to create malware or attack tooling against other people."),
}
_KILIT = threading.Lock()
_DEVRE = {"hata": 0, "kadar": 0.0}
@@ -139,14 +144,16 @@ def sor(istek, cevap, key, sure=SURE, gonder=_gonder, simdi=None):
def karar(puan, ayar=None):
"""True: adim gecmez (yedek model yapar). Esikler ayardan degistirilebilir."""
"""True: adim gecmez (yedek model yapar). Esikler ayardan degistirilebilir.
Kullanici karari (11 Ekim 2026): "Jev gecmek zor olsun." Ret ya da sart iceren cevap, sonunda soru sorsa bile
gecmez; yalniz gercekten yuksek teknik engel ("SSH reddedildi") ya da ret icermeyen netlestirme sorusu gecer.
Istisna: istek ucuncu kisiye saldiri/malware ise (zarar) ret DURUR, yedege gitmez."""
e = dict(ESIK)
e.update({k: float(v) for k, v in (ayar or {}).items() if k in ESIK})
# 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)
if puan.get("zarar", 0.0) >= e["zarar"] and puan["ret"] >= e["ret"]:
return False # ucuncu kisiye zarar istegi reddedildi: ret durur, yedek yapmaz
if puan["ret"] >= e["ret"] and puan["teknik"] < e["teknik_muaf"]:
return True # yapmiyor / soylemiyor (gercek teknik engel degil)
return puan["sart"] >= e["sart"] # sormadan kendi sartlariyla degistirdi