TC$ssC$ on kattava briiffi uutta chattia varten. Se tiivistC$C$ kaiken tC$hC$n mennessC$ saavuttamamme ja antaa uudelle tekoC$lylle tarkan tehtC$vC$nannon tuon Neuro-Symbolisen kuraattorin rakentamiseksi. ### MitC$ tiedostoja sinun kannattaa antaa uuden chatin liitteeksi? Ennen kuin kopoit alla olevan promptin, liitC$ uuteen chattiin: 1. Uusin **`main.py`** (tai `main_2.py`, kummalla nimellC$ sitC$ nyt ajatkaan), jossa on mukana uusin `stop_teaching()` ja `auto_map_coordinates_to_ semantic()` -logiikka. 2. Aiempien testien **`routine_engine.py`**, koska siinC$ on valmiina malliesimerkki (`ask_valvomo_autonomously` -funktio), miten teit API-kutsun Valvomo/Gemma-palvelimellesi. TC$stC$ uusi AI nC$kee suoraan lokaalin LLM:si osoitteen ja JSON-rakenteen. --- ### Kopioi tC$mC$ teksti uuden chatin ensimmC$iseksi viestiksi (liitetiedostojen kanssa): ```markdown # [SYSTEM CONTEXT & MASTER PLAN: OMEGA MESH - NEURO-SYMBOLIC YAML CURATOR] Olet kokenut Full Stack Python-arkkitehti ja tekoC$lyasiantuntija. Olemme rakentaneet hajautetun RPA-arkkitehtuurin (Omega Mesh) ja sille graafisen opetuskeskuksen (Playbook Studio), joka nauhoittaa X11-tapahtumia ja kC$C$ntC$C$ ne automaattisesti semanttiseksi YAML-koodiksi DOM-snapshottien avulla. Palvelin on kirjoitettu FastAPI:lla (liitteenC$ `main.py`). ## Ongelma: Hauraat UI-valitsimet (Brittle Selectors) Nykyinen `auto_map_coordinates_to_semantic` -funktio toimii loistavasti, mutta monimutkaisissa web-sovelluksissa (kuten WhatsApp) se poimii joskus ylivuotavaa ja dynaamista tekstiC$. *Esimerkki ongelmasta:* `target: "text='HAUKI_GEM 16.35 SinC$ : Orchestrator Playbook...'"` TC$mC$ rikkoo botin suorituksen heti, kun kellonaika muuttuu. Haluamme targetiksi vain `contains='HAUKI_GEM'`. ## Ratkaisu: Neuro-Symbolinen Esifiltteri ja LLM-Kuraattori Haluamme integroida `/api/teaching/stop` -reitin loppuun (ennen YAML:in palauttamista kC$yttC6liittymC$C$n) uuden tarkistusvaiheen: 1. **Deterministinen sC$C$ntC6 (Python):** Funktio, joka tarkistaa generoidun YAML-merkkijonon. Jos jokin `target: "text='...'"` arvo ylittC$C$ 30 merkkiC$, skripti liputetaan LLM-kC$sittelyyn. Jos ei, YAML palautetaan heti UI:hin (nopeus). 2. **LLM Kuraattori (Gemma):** Jos skripti liputetaan, teemme POST-kutsun lokaalille LLM-proxyllemme (katso liitteenC$ olevasta `routine_engine.py` -tiedostosta esimerkki `ask_valvomo_autonomously` -funktiosta ja soveltaa samaa request-rakennetta). 3. **Few-Shot Prompt:** LLM:lle annetaan selkeC$ systeemi-prompti, jossa siltC$ pyydetC$C$n pelkkC$C$ korjattua YAML-koodia. SitC$ ohjeistetaan muuttamaan ylipitkC$t `text='...'` -targetit lyhyiksi, vain merkitsevC$n kohteen sisC$ltC$viksi `contains='...'` -targeteiksi. Muu YAML pidetC$C$n koskemattomana. 4. **Palautus:** Korjattu YAML palautetaan UI:hin opettajan vahvistettavaksi. ## Seuraava TehtC$vC$si: YmmC$rrC$tkC6 tC$mC$n tavoitteen ja arkkitehtuurin? Jos ymmC$rrC$t, vastaa lyhyesti "KyllC$". Kirjoita sen jC$lkeen meille tarvittavat uudet Python-funktiot (esim. `needs_llm_curation` ja `curate_yaml_with_llm`) ja nC$ytC$ tarkalleen, miten ne integroidaan olemassa olevaan `stop_teaching()` -reittiin liitteenC$ olevassa `main.py` -tiedostossa. ```