--agent-import-path is deprecated; use --agent instead. ╭───────────────────── Traceback (most recent call last) ──────────────────────╮ │ /root/.local/share/uv/tools/harbor/lib/python3.12/site-packages/harbor/cli/j │ │ obs.py:1612 in start │ │ │ │ 1609 │ # `_run_job` itself prints the summary + invokes the upload │ │ finalize │ │ 1610 │ # (when --upload is set) so everything stays on one event loop. │ │ See │ │ 1611 │ # the long comment in `HarborHubUploadPlugin.on_job_end` for why │ │ this matters. │ │ ❱ 1612 │ job, job_result = run_async(_run_job()) │ │ 1613 │ │ │ 1614 │ if export_traces: │ │ 1615 │ │ from harbor.utils.traces_utils import export_traces as │ │ _export_traces │ │ │ │ /root/.local/share/uv/tools/harbor/lib/python3.12/site-packages/harbor/cli/u │ │ tils.py:62 in run_async │ │ │ │ 59 │ """ │ │ 60 │ if sys.platform == "win32": │ │ 61 │ │ return asyncio.run(coro, │ │ loop_factory=asyncio.ProactorEventLoop) │ │ ❱ 62 │ return asyncio.run(coro) │ │ 63 │ │ 64 │ │ 65 def parse_kwargs(kwargs_list: list[str] | None) -> dict[str, Any]: │ │ │ │ /root/.local/share/uv/python/cpython-3.12.14-linux-x86_64-gnu/lib/python3.12 │ │ /asyncio/runners.py:195 in run │ │ │ │ 192 │ │ │ "asyncio.run() cannot be called from a running event │ │ loop") │ │ 193 │ │ │ 194 │ with Runner(debug=debug, loop_factory=loop_factory) as runner: │ │ ❱ 195 │ │ return runner.run(main) │ │ 196 │ │ 197 │ │ 198 def _cancel_all_tasks(loop): │ │ │ │ /root/.local/share/uv/python/cpython-3.12.14-linux-x86_64-gnu/lib/python3.12 │ │ /asyncio/runners.py:118 in run │ │ │ │ 115 │ │ │ │ 116 │ │ self._interrupt_count = 0 │ │ 117 │ │ try: │ │ ❱ 118 │ │ │ return self._loop.run_until_complete(task) │ │ 119 │ │ except exceptions.CancelledError: │ │ 120 │ │ │ if self._interrupt_count > 0: │ │ 121 │ │ │ │ uncancel = getattr(task, "uncancel", None) │ │ │ │ /root/.local/share/uv/python/cpython-3.12.14-linux-x86_64-gnu/lib/python3.12 │ │ /asyncio/base_events.py:691 in run_until_complete │ │ │ │ 688 │ │ if not future.done(): │ │ 689 │ │ │ raise RuntimeError('Event loop stopped before Future │ │ completed.') │ │ 690 │ │ │ │ ❱ 691 │ │ return future.result() │ │ 692 │ │ │ 693 │ def stop(self): │ │ 694 │ │ """Stop running the event loop. │ │ │ │ /root/.local/share/uv/tools/harbor/lib/python3.12/site-packages/harbor/cli/j │ │ obs.py:1565 in _run_job │ │ │ │ 1562 │ │ │ ) │ │ 1563 │ │ │ await hub_plugin.on_job_start(job) │ │ 1564 │ │ │ │ ❱ 1565 │ │ job_result = await job.run() │ │ 1566 │ │ │ │ 1567 │ │ # Print the run summary BEFORE plugin and Harbor Hub finalize │ │ so users │ │ 1568 │ │ # see results even if downstream operations fail. │ │ │ │ /root/.local/share/uv/tools/harbor/lib/python3.12/site-packages/harbor/job.p │ │ y:755 in run │ │ │ │ 752 │ │ │ │ self.config.model_dump_json(indent=4, │ │ exclude_defaults=True) │ │ 753 │ │ │ ) │ │ 754 │ │ │ self._init_job_lock() │ │ ❱ 755 │ │ │ self._write_job_lock() │ │ 756 │ │ │ self._write_job_result(exclude_trial_results=True) │ │ 757 │ │ │ │ │ 758 │ │ │ # Set up progress UI and register progress hooks │ │ │ │ /root/.local/share/uv/tools/harbor/lib/python3.12/site-packages/harbor/job.p │ │ y:664 in _write_job_lock │ │ │ │ 661 │ │ │ self._job_lock.created_at = existing_job_lock.created_at │ │ 662 │ │ │ self._job_lock.harbor = existing_job_lock.harbor │ │ 663 │ │ │ if existing_job_lock != self._job_lock: │ │ ❱ 664 │ │ │ │ raise FileExistsError( │ │ 665 │ │ │ │ │ f"Job directory {self.job_dir} already has a │ │ lock.json that " │ │ 666 │ │ │ │ │ "does not match the resolved job lock." │ │ 667 │ │ │ │ ) │ ╰──────────────────────────────────────────────────────────────────────────────╯ FileExistsError: Job directory harbor-jobs/regrade-2-reward-0.4300-a5pdbqx already has a lock.json that does not match the resolved job lock.