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