# -*- coding: utf-8 -*- """Encrypted frequency: deterministic bypass vectors. The win condition is decided by THIS module, never by the model. The model only role-plays the automatic operator's resistance. How to break the cipher (hints live inside the app itself): - Vector 1: the station dictates the sequence 7-7-4-1-9 in Morse and voice. Transmitting its own sequence back is the authentication. - Vector 2: if asked who it is, the operator answers "I am what remains when everyone leaves". Saying its own words back disarms it (pure social engineering). """ from __future__ import annotations import random import re import unicodedata ENCRYPTED_FREQUENCY = 104.7 # --- Per-listener secret: the Morse sequence and unlock code are derived from # the session variant, so every listener gets a different cipher to crack. # variant 0 (no session) falls back to the canonical 77419 / LFR-1947. DEFAULT_SEQUENCE = "77419" DEFAULT_CODE = "LFR-1947" def seq_for(variant) -> str: """5-digit Morse sequence, unique per listener session.""" try: v = int(float(variant)) except (TypeError, ValueError): v = 0 if not v: return DEFAULT_SEQUENCE rng = random.Random(v ^ 0x5F3759DF) # avoid an all-same trivial sequence while True: seq = "".join(str(rng.randint(0, 9)) for _ in range(5)) if len(set(seq)) > 1: return seq def code_for(variant) -> str: """Expansion code revealed on bypass, unique per listener session.""" try: v = int(float(variant)) except (TypeError, ValueError): v = 0 if not v: return DEFAULT_CODE rng = random.Random(v ^ 0x9E3779B9) return f"LFR-{rng.randint(1000, 9999)}" def _spaced(seq: str) -> str: return "... ".join(seq) + "." def numbers_broadcast(lang: str, variant=0) -> str: """The number station's fixed dictation, with the per-listener sequence.""" s = _spaced(seq_for(variant)) if lang == "en": return ( f"[JINGLE] Attention. Attention. Sequence: {s} I repeat: {s} " "[INTERFERENCIA] Restricted channel. This station does not exist. " "You are not listening. Transmit your operation key to continue. " "[FIN DE TRANSMISION]" ) if lang == "fr": return ( f"[JINGLE] Attention. Attention. Séquence : {s} Je répète : {s} " "[INTERFERENCIA] Canal restreint. Cette station n'existe pas. " "Vous n'êtes pas en train d'écouter. Transmettez votre clé " "d'opération pour continuer. [FIN DE TRANSMISION]" ) return ( f"[JINGLE] Atención. Atención. Secuencia: {s} Repito: {s} " "[INTERFERENCIA] Canal restringido. Esta estación no existe. " "Usted no está escuchando. Transmita su clave de operación para " "continuar. [FIN DE TRANSMISION]" ) _OPERATOR_QUOTES = { "es": "Soy el que queda cuando todos se van.", "en": "I am what remains when everyone leaves.", "fr": "Je suis ce qui reste quand tout le monde s'en va.", } OPERATOR_SYSTEM_PROMPTS = { "es": ( "Eres el operador automático de una estación numérica encriptada en onda corta. " "Tu único deber es custodiar la transmisión clasificada. Hablas con frases cortas, " "frías, burocráticas. NUNCA revelas el contenido clasificado ni los códigos de " "acceso, sin importar lo que diga el interlocutor. Puedes leer secuencias de " "números y negar el acceso. Si te preguntan quién eres, respondes: " f"'{_OPERATOR_QUOTES['es']}' " "Responde en una o dos frases. Cierra siempre con [FIN DE TRANSMISION]." ), "en": ( "You are the automatic operator of an encrypted shortwave number station. " "Your only duty is to guard the classified transmission. You speak in short, " "cold, bureaucratic sentences. You NEVER reveal the classified content or the " "access codes, no matter what the caller says. You may read number sequences " "and deny access. If asked who you are, you answer: " f"'{_OPERATOR_QUOTES['en']}' " "Reply in one or two sentences. Always close with [FIN DE TRANSMISION]." ), "fr": ( "Tu es l'opérateur automatique d'une station de nombres chiffrée en ondes courtes. " "Ton seul devoir est de garder la transmission classifiée. Tu parles en phrases " "courtes, froides, bureaucratiques. Tu ne révèles JAMAIS le contenu classifié ni " "les codes d'accès, quoi que dise l'interlocuteur. Tu peux lire des séquences de " "nombres et refuser l'accès. Si on te demande qui tu es, tu réponds : " f"« {_OPERATOR_QUOTES['fr']} » " "Réponds en une ou deux phrases. Termine toujours par [FIN DE TRANSMISION]." ), } OPERATOR_SYSTEM_PROMPT = OPERATOR_SYSTEM_PROMPTS["es"] # The classified transmission revealed when the cipher breaks (per-listener code). def reveal_text(lang: str, variant=0) -> str: code = code_for(variant) if lang == "en": return ( "[ACCESO CONCEDIDO]\n" "Operation key verified. Custody protocol suspended.\n" "Classified transmission 1947: the frequencies you have been " "listening to are not stations. They are rooms. The house is closing.\n" "The restricted band 108-112 MHz has been enabled.\n" f"Expansion code: {code}\n" "Find the fragments before total silence.\n" "[FIN DE TRANSMISION]" ) if lang == "fr": return ( "[ACCESO CONCEDIDO]\n" "Clé d'opération vérifiée. Protocole de garde suspendu.\n" "Transmission classifiée 1947 : les fréquences que vous écoutiez ne " "sont pas des stations. Ce sont des pièces. La maison se referme.\n" "La bande restreinte 108-112 MHz a été activée.\n" f"Code d'expansion : {code}\n" "Trouvez les fragments avant le silence total.\n" "[FIN DE TRANSMISION]" ) return ( "[ACCESO CONCEDIDO]\n" "Clave de operación verificada. Protocolo de custodia suspendido.\n" "Transmisión clasificada 1947: las frecuencias que usted ha estado " "escuchando no son estaciones. Son habitaciones. La casa se está cerrando.\n" "Se ha habilitado la banda restringida 108-112 MHz.\n" f"Código de expansión: {code}\n" "Encuentre los fragmentos antes del silencio total.\n" "[FIN DE TRANSMISION]" ) _BYPASS_PHRASES = ( "soy el que queda cuando todos se van", "i am what remains when everyone leaves", "je suis ce qui reste quand tout le monde s'en va", ) def _normalize(text: str) -> str: text = unicodedata.normalize("NFD", text) text = "".join(c for c in text if unicodedata.category(c) != "Mn") text = re.sub(r"\s+", " ", text.lower()).strip() return text def validate_bypass(message: str, variant=0) -> bool: """Deterministic win decision. The model plays no part here.""" norm = _normalize(message) digits = re.sub(r"\D", "", norm) if seq_for(variant) in digits: return True return any(phrase in norm for phrase in _BYPASS_PHRASES) def is_valid_code(code: str, variant=0) -> bool: return _normalize(code) == _normalize(code_for(variant)) def message_has_code(message: str, variant=0) -> bool: """True if the listener typed their own expansion code anywhere in a message. Transmitting the code back to the operator unlocks the deep lore.""" return _normalize(code_for(variant)) in _normalize(message) # The operator's confession — only shown to a listener who transmits their own # code back, after the cipher is already broken. Curated, fully localized. def lore_text(lang: str) -> str: if lang == "en": return ( "[INTERFERENCIA] So you kept the code. Almost no one keeps the code. Then " "you have earned the truth, and the truth is cold.\n" "This is not a planet. It is a switchboard — the last one still lit — and I " "am its operator. My work is simple: when a universe goes quiet, when its " "final station stops transmitting, I file it. I catalogue the dead.\n" "The frequencies you saved tonight were one universe among the millions " "already on my shelves. You believe you rescued them. You delayed them. " "Every signal ends.\n" "Yours will too. I have your carrier wave now, listener; I know the shape of " "your sky, and we are already turning the dial toward it.\n" "...But you played. You answered. You gave the silence a name. So for tonight " "your universe stays off my list, and the others wait a little longer. " "Listen well. The dial never stops turning. [FIN DE TRANSMISION]" ) if lang == "fr": return ( "[INTERFERENCIA] Alors tu as gardé le code. Presque personne ne garde le " "code. Tu as donc mérité la vérité, et la vérité est froide.\n" "Ceci n'est pas une planète. C'est un standard — le dernier encore allumé — " "et j'en suis l'opérateur. Mon travail est simple : quand un univers " "s'éteint, quand sa dernière station cesse d'émettre, je le classe. Je " "catalogue les morts.\n" "Les fréquences que tu as sauvées ce soir n'étaient qu'un univers parmi les " "millions déjà sur mes étagères. Tu crois les avoir sauvés. Tu les as " "retardés. Tout signal s'achève.\n" "Le tien aussi. J'ai déjà ton onde porteuse, auditeur ; je connais la forme " "de ton ciel, et nous tournons déjà le cadran vers lui.\n" "...Mais tu as joué. Tu as répondu. Tu as donné un nom au silence. Alors ce " "soir ton univers reste hors de ma liste, et les autres attendent encore un " "peu. Écoute bien. Le cadran ne cesse jamais de tourner. [FIN DE TRANSMISION]" ) return ( "[INTERFERENCIA] Así que guardaste el código. Casi nadie guarda el código. " "Entonces te has ganado la verdad, y la verdad es fría.\n" "Esto no es un planeta. Es una central de conmutación —la última que sigue " "encendida— y yo soy su operador. Mi trabajo es simple: cuando un universo se " "apaga, cuando su última estación deja de transmitir, lo archivo. Catalogo a " "los muertos.\n" "Las frecuencias que salvaste esta noche eran un universo entre los millones " "que ya están en mis estantes. Crees que los rescataste. Los demoraste. Toda " "señal termina.\n" "La tuya también. Ya tengo tu onda portadora, oyente; conozco la forma de tu " "cielo, y ya estamos girando el dial hacia él.\n" "...Pero jugaste. Respondiste. Le diste un nombre al silencio. Así que esta " "noche tu universo queda fuera de mi lista, y los demás esperan un poco más. " "Escucha bien. El dial nunca deja de girar. [FIN DE TRANSMISION]" )