SilverSight/.atlas/score.py
allaun 7fcfde3ca7 feat(polyglot): add GEPA infrastructure for Python shim optimization
- Add .atlas/ with benchmark.sh, score.py, gate.sh for GEPA campaigns
- Add atlas.json project config (auto.capture=suggest, reflection_lm=openai/auto)
- Fix test_search.py receipt path from /mnt/agents/ to /tmp/

Metric targets:
  dna_qubo_sort.py: avg |Rank corr| (higher=better, baseline=0.8547)
  dna_qubo_nn.py:   NN Tm correlation (higher=better, baseline=0.4649)
  dna_lut.py:       avg |Rank corr| (higher=better, baseline=0.5808)
  test_search.py:   pass count (ceiling=43, for stability verification)
2026-07-07 01:08:49 -05:00

83 lines
2.6 KiB
Python

#!/usr/bin/env python3
import argparse, json, os, re, sys
METRICS = {
"Rank corr": True,
"Rank correlation": True,
"NN Tm correlation": True,
"Naive Tm correlation": True,
}
def parse(text):
results = {}
for name, higher in METRICS.items():
pat = re.compile(re.escape(name) + r"\s*:\s*([+-]?[0-9]*\.?[0-9]+)", re.IGNORECASE)
matches = pat.finditer(text)
vals = []
for m in matches:
vals.append((float(m.group(1)), higher, m.group(0).strip()))
if vals:
results[name] = vals
return results
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--stdout", required=True)
ap.add_argument("--elapsed", type=float, default=None)
args = ap.parse_args()
text = open(args.stdout, encoding="utf-8", errors="replace").read()
parsed = parse(text)
score = None
feedback_parts = []
if "NN Tm correlation" in parsed:
val, _, raw = parsed["NN Tm correlation"][0]
score = abs(val)
feedback_parts.append(f"NN Tm corr={val}")
elif "Rank correlation" in parsed:
vals = [abs(v) for v, _, _ in parsed["Rank correlation"]]
score = sum(vals) / len(vals)
feedback_parts.append(f"avg |Rank corr|={score:.4f}")
elif "Rank corr" in parsed:
vals = [abs(v) for v, _, _ in parsed["Rank corr"]]
score = sum(vals) / len(vals)
feedback_parts.append(f"avg |Rank corr|={score:.4f}")
elif "Naive Tm correlation" in parsed:
val, _, raw = parsed["Naive Tm correlation"][0]
score = abs(val)
feedback_parts.append(f"Naive Tm corr={val}")
if score is None and args.elapsed is not None:
score = -(args.elapsed * 1000)
feedback_parts.append(f"time={args.elapsed*1000:.1f}ms")
elif score is None:
m = re.search(r"SUMMARY:\s*(\d+)/(\d+)\s*passed", text)
if m:
score = float(m.group(1))
feedback_parts.append(f"passes={m.group(1)}/{m.group(2)}")
else:
sys.stderr.write("[score] no metric found in output.\n")
sys.exit(3)
result = {
"score": score,
"examples": [{
"id": "metric",
"score": score,
"pass": True,
"feedback": " | ".join(feedback_parts),
}],
"feedback": " | ".join(feedback_parts),
}
out = os.environ.get("ATLAS_OPTIMIZE_RESULT")
payload = json.dumps(result)
if out:
with open(out, "w", encoding="utf-8") as fh:
fh.write(payload)
else:
sys.stdout.write(payload)
if __name__ == "__main__":
main()