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).
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 ofeval-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:
- Restore from git
- 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) - Reconnect to either cron or webhook.py invocation
- Test against
living-ip/decision-enginenot 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.