fix: autoresearch proposal uses string replace instead of regex

This commit is contained in:
2026-08-09 22:51:32 +00:00
parent c329db1068
commit 3157b2193d

View File

@@ -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)