# 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 ```bash # 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.