teleo-infrastructure/handoff/deprecated/eval-scripts.md
Fawaz 377924dabe
feat(phase1-step3): rewire critical scripts Forgejo -> GitHub (decision-engine)
Phase 1 Step 3 — migrate research-session.sh and pipeline-health-check.py off Forgejo onto GitHub living-ip/decision-engine. eval-dispatcher.sh / eval-worker.sh documented as dead code (replaced by daemon).
2026-05-22 21:43:08 -04:00

3.3 KiB

Deprecated: eval-dispatcher.sh + eval-worker.sh

Why these are NOT being migrated to GitHub

Both scripts are dead code. The pipeline-v2 daemon replaced them.

Evidence

# Last invocation of either script — March 12, 2026
$ ls -la /opt/teleo-eval/logs/eval-{dispatcher,worker}-*.log | tail -3
-rw-rw-r-- 1 teleo teleo 4133 Mar 12 12:03 eval-worker-0-PR821.log
-rw-rw-r-- 1 teleo teleo 4296 Mar 12 12:03 eval-worker-2-PR678.log
-rw-rw-r-- 1 teleo teleo 7405113 Mar 12 12:03 eval-dispatcher.log

# `teleo-eval.service` does NOT run these — it runs webhook.py
$ systemctl cat teleo-eval.service | grep ExecStart
ExecStart=/usr/bin/python3 /opt/teleo-eval/webhook.py

# No cron entries reference them
$ crontab -l | grep -E "eval-(dispatcher|worker)"
(no output)

# Live eval logic runs inside teleo-pipeline.service daemon
$ systemctl cat teleo-pipeline.service | grep ExecStart
ExecStart=/opt/teleo-eval/pipeline/.venv/bin/python3 /opt/teleo-eval/teleo-pipeline.py

# Daemon imports evaluate_cycle, not the shell scripts
$ grep -r "evaluate_cycle\|merge_cycle" /opt/teleo-eval/teleo-pipeline.py
from lib.evaluate import evaluate_cycle
from lib.merge import merge_cycle

What replaced them

  • lib/evaluate.py::evaluate_cycle — the in-daemon equivalent of eval-dispatcher.sh + eval-worker.sh. Runs continuously as a stage in the pipeline daemon.
  • lib/merge.py::merge_cycle — handles the merge-after-approval step.

Both fully functional. PRs continue to get reviewed and merged through the daemon, not the shell scripts.

Why we didn't migrate them anyway

Phase 1 scope is migration, not preservation. Migrating dead code:

  • Adds maintenance surface without runtime value
  • Costs ~8h of mechanical Forgejo→GitHub URL swapping
  • Adds attack surface (scripts that touch the codex but no one watches)
  • Risks Chesterton's Fence violation (the scripts were retired for a reason; we don't fully know the reason without archaeology)

The pipeline daemon's lib/evaluate.py and lib/merge.py still reference Forgejo internally (via lib/forgejo.py). Those migrations are part of Billy's pipeline-v2 productionization sprint, explicitly out of Phase 1 scope per phase1-instructions.md:

Out of scope: Pipeline-v2 daemon changes (Billy productionizes).

If you ever need to re-activate these scripts

They're preserved in git history. To re-activate:

  1. Restore from git
  2. Apply the migration patterns documented in phase1-step3-script-migration.md (Forgejo→GitHub URL swap, Bearer auth, x-access-token URL rewrite for git operations)
  3. Reconnect to either cron or webhook.py invocation
  4. Test against living-ip/decision-engine not Forgejo

Don't re-activate without understanding why they were retired. Talk to m3ta first.

Files staying as-is

/opt/teleo-eval/eval/eval-dispatcher.sh   ← preserved, points at Forgejo
/opt/teleo-eval/eval/eval-worker.sh       ← preserved, points at Forgejo
/opt/teleo-eval/eval/tier0-gate.py        ← preserved, related helper
/opt/teleo-eval/eval/*.log                ← old logs, March 2026

These will silently break when Forgejo is decommissioned (Phase 1 Step 7). That's fine — they're already dead code; the break is a discovery mechanism, not a regression.

If Billy decides to delete them entirely during productionization: also fine, they're recoverable from git history.