diff --git a/.hermes/autoresearch_proposal.py b/.hermes/autoresearch_proposal.py index 0f01a8e..7be3f2f 100644 --- a/.hermes/autoresearch_proposal.py +++ b/.hermes/autoresearch_proposal.py @@ -1,11 +1,10 @@ #!/usr/bin/env python3 """ -Simple proposal: makes one targeted balance change to themes.py based on trial number. -Cycles through known adjustments that improve balance. +Proposal: makes one targeted balance change to themes.py per trial. +Uses simple string replacement — no regex. """ import os import sys -import re repo = os.environ.get("AR_REPO_PATH", "/home/alex/pony") trial = int(os.environ.get("AR_TRIAL", "1")) @@ -14,39 +13,45 @@ themes_path = os.path.join(repo, "web/app/data/themes.py") with open(themes_path, "r") as f: content = f.read() -# Define a set of potential improvements — each trial tries a different one +# Each trial: find an old_string and replace with new_string +# Cycle through improvements based on trial number improvements = [ - # Trial 1: Rainbow Dash scene 4 (krop/normal) -> krop/svaert to add challenge - ('Rainbow Dash har fødselsdag', 'Gør Pinkies festkanon klar', 'krop', 'normal', 'svaert'), - # Trial 2: Lunas forsvundne stjerner — make scene 1 harder - ('Lunas forsvundne stjerner', 'Find Lunas stjerner', 'sind', 'let', 'normal'), - # Trial 3: Twilights forsvundne bog scene 2 (krop/normal) -> krop/svaert - ('Twilights forsvundne bog', 'Kom forbi skyen af dansende ord', 'krop', 'normal', 'svaert'), - # Trial 4: Angel scene 5 (charme/svaert) -> already hard, try body scene 2 - ('Angel er løbet væk', 'Spørg alle ponyer i Ponyville', 'sind', 'normal', 'svaert'), - # Trial 5: Discord scene 4 (sind/normal) -> svaert - ('Discord laver sjov', 'Fang Discords sidste kaosgnist', 'sind', 'normal', 'svaert'), + # Trial 1: Rainbow Dash scene 4 — make harder + ( + '"aktion": "Gør Pinkies festkanon klar",\n "stat": "krop", "svaer": "normal",', + '"aktion": "Gør Pinkies festkanon klar",\n "stat": "krop", "svaer": "svaert",', + ), + # Trial 2: Twilight scene 2 — make harder + ( + '"aktion": "Kom forbi skyen af dansende ord",\n "stat": "krop", "svaer": "normal",', + '"aktion": "Kom forbi skyen af dansende ord",\n "stat": "krop", "svaer": "svaert",', + ), + # Trial 3: Discord scene 4 — make harder + ( + '"aktion": "Fang Discords sidste kaosgnist",\n "stat": "sind", "svaer": "normal",', + '"aktion": "Fang Discords sidste kaosgnist",\n "stat": "sind", "svaer": "svaert",', + ), + # Trial 4: Angel scene 2 — make harder + ( + '"aktion": "Spørg alle ponyer i Ponyville",\n "stat": "sind", "svaer": "normal",', + '"aktion": "Spørg alle ponyer i Ponyville",\n "stat": "sind", "svaer": "svaert",', + ), + # Trial 5: Rarity scene 2 — make harder + ( + '"aktion": "Spørg i Ponyville",\n "stat": "krop", "svaer": "normal",', + '"aktion": "Spørg i Ponyville",\n "stat": "krop", "svaer": "svaert",', + ), ] idx = (trial - 1) % len(improvements) -tema_title, action, stat, old_diff, new_diff = improvements[idx] +old_s, new_s = improvements[idx] -# Find and replace the specific scene -# Match: "aktion": "Gør Pinkies festkanon klar",\n "stat": "krop", "svaer": "normal", -pattern = re.escape(f'"{action}"') + r',\s*("stat":\s*"' + re.escape(stat) + r'",\s*"svaer":\s*")' + re.escape(old_diff) + r'(' -replacement = r'\1' + new_diff + r'\2' - -if old_diff != new_diff: - new_content = re.sub(pattern, replacement, content, count=1) - if new_content != content: - with open(themes_path, "w") as f: - f.write(new_content) - print(f"Applied: {tema_title} scene '{action}': {old_diff} -> {new_diff}") - sys.exit(0) - else: - print(f"Pattern not found for trial {trial}, trying next approach") - # Fallback: try a different scene - sys.exit(1) +if old_s in content: + new_content = content.replace(old_s, new_s, 1) + with open(themes_path, "w") as f: + f.write(new_content) + print(f"Trial {trial}: applied change (old->new)") + sys.exit(0) else: - print(f"No change needed for trial {trial}") + print(f"Trial {trial}: pattern not found in themes.py, skipping") sys.exit(1) \ No newline at end of file