diff --git a/apps/control-api/src/harbor-revision.ts b/apps/control-api/src/harbor-revision.ts index c8eb4c0a..44b00ce8 100644 --- a/apps/control-api/src/harbor-revision.ts +++ b/apps/control-api/src/harbor-revision.ts @@ -1 +1 @@ -export const HARBOR_REVISION = "fcf27e5502e30436b067ef2d655368e86cc42cf9"; +export const HARBOR_REVISION = "3c82380859d187957cfd5cd64802b076d9779550"; diff --git a/apps/control-api/test/api.test.ts b/apps/control-api/test/api.test.ts index dc42ae6c..bf6eefef 100644 --- a/apps/control-api/test/api.test.ts +++ b/apps/control-api/test/api.test.ts @@ -1142,7 +1142,7 @@ describe("configurable launch", () => { ], }; const validation = { - harbor_revision: "fcf27e5502e30436b067ef2d655368e86cc42cf9", + harbor_revision: "3c82380859d187957cfd5cd64802b076d9779550", tasks: 3, agents: 2, trials: 6, diff --git a/apps/control-api/test/launch.test.ts b/apps/control-api/test/launch.test.ts index aef25897..d8893857 100644 --- a/apps/control-api/test/launch.test.ts +++ b/apps/control-api/test/launch.test.ts @@ -25,7 +25,7 @@ vi.mock("../src/huggingface-models.js", () => ({ lookupHuggingFaceModelProviders: vi.fn(async () => ["provider"]), })); const roots: string[] = []; -const revision = "fcf27e5502e30436b067ef2d655368e86cc42cf9"; +const revision = "3c82380859d187957cfd5cd64802b076d9779550"; const input = { datasets: [{ name: "example/dataset", ref: `sha256:${"a".repeat(64)}` }], agents: [ diff --git a/packages/control-core/test/run-inference-review.test.ts b/packages/control-core/test/run-inference-review.test.ts index 9b8f2609..3356d5d6 100644 --- a/packages/control-core/test/run-inference-review.test.ts +++ b/packages/control-core/test/run-inference-review.test.ts @@ -15,7 +15,7 @@ afterEach(async () => { ); }); const id = `run-${"a".repeat(24)}`; -const revision = "fcf27e5502e30436b067ef2d655368e86cc42cf9"; +const revision = "3c82380859d187957cfd5cd64802b076d9779550"; const currentImage = image.replace(/a{64}$/, "b".repeat(64)); async function setup() { const root = await mkdtemp(join(tmpdir(), "run-inference-")); diff --git a/packages/harbor-hf-agents/pyproject.toml b/packages/harbor-hf-agents/pyproject.toml index 47dea6bc..7595947d 100644 --- a/packages/harbor-hf-agents/pyproject.toml +++ b/packages/harbor-hf-agents/pyproject.toml @@ -5,7 +5,7 @@ description = "Harbor parent runner and temporary ATIF converters for Harbor-HF. requires-python = ">=3.12" dependencies = [ "huggingface-hub==1.28.0+terminal.f1c01f0", - "harbor[hf-sandbox] @ git+https://github.com/harbor-framework/harbor.git@fcf27e5502e30436b067ef2d655368e86cc42cf9", + "harbor[hf-sandbox] @ git+https://github.com/harbor-framework/harbor.git@3c82380859d187957cfd5cd64802b076d9779550", ] [project.scripts] diff --git a/packages/harbor-hf-agents/src/harbor_hf_agents/launch.py b/packages/harbor-hf-agents/src/harbor_hf_agents/launch.py index a7486373..b9abe20d 100644 --- a/packages/harbor-hf-agents/src/harbor_hf_agents/launch.py +++ b/packages/harbor-hf-agents/src/harbor_hf_agents/launch.py @@ -32,7 +32,7 @@ from harbor.registry.client.package import PackageDatasetClient from pydantic import ValidationError -REVISION = "fcf27e5502e30436b067ef2d655368e86cc42cf9" +REVISION = "3c82380859d187957cfd5cd64802b076d9779550" COMMIT = re.compile(r"[0-9a-f]{40}") CONTENT = re.compile(r"sha256:[0-9a-f]{64}") HF_DATASET_GIT_PATH = re.compile( diff --git a/packages/harbor-hf-agents/src/harbor_hf_agents/scrub_before_upload.py b/packages/harbor-hf-agents/src/harbor_hf_agents/scrub_before_upload.py index 75ad960f..6f795fe2 100644 --- a/packages/harbor-hf-agents/src/harbor_hf_agents/scrub_before_upload.py +++ b/packages/harbor-hf-agents/src/harbor_hf_agents/scrub_before_upload.py @@ -2,11 +2,13 @@ Reviewed Harbor trial/trial.py, trial/hooks.py, trial/queue.py and job.py at SCRUB_REVISION (scrubbing introduced in 046e2a6d). Re-verified at the current -pin: ``Trial._emit`` and ``Trial._scrub_jobs_dir`` are unchanged, END is still -the last trial event, and the added ``trial/sync_trajectory.py`` and the -refactored ``trial/artifact_handler.py`` write into the trial directory or the -trial environment only. Replace this integration at the first reviewed pin with -a supported post-sanitization hook or pre-END scrub. +pin: ``Trial._emit`` and ``Trial._scrub_jobs_dir`` are unchanged, ``trial/hooks.py`` +is unchanged so END is still the last trial event, and the new trial writes +(``stream.json`` from ``_write_stream_handle`` and injected skills from +``_upload_injected_skills``) go into the trial directory or the trial environment +only, like ``trial/sync_trajectory.py`` and ``trial/artifact_handler.py``. +Replace this integration at the first reviewed pin with a supported +post-sanitization hook or pre-END scrub. Use one context around Job creation, execution, and final file uploads in an otherwise exclusive parent process. All trial tasks must finish before exit. @@ -30,7 +32,7 @@ from harbor_hf_agents import launch -SCRUB_REVISION = "fcf27e5502e30436b067ef2d655368e86cc42cf9" +SCRUB_REVISION = "3c82380859d187957cfd5cd64802b076d9779550" _NATIVE_EMIT = Trial._emit _PATCH_LOCK = Lock() diff --git a/packages/harbor-hf-agents/tests/test_inference_config_contract.py b/packages/harbor-hf-agents/tests/test_inference_config_contract.py index 5ea437c4..d026cbbc 100644 --- a/packages/harbor-hf-agents/tests/test_inference_config_contract.py +++ b/packages/harbor-hf-agents/tests/test_inference_config_contract.py @@ -6,7 +6,7 @@ from harbor.models.job.config import JobConfig -PIN = "fcf27e5502e30436b067ef2d655368e86cc42cf9" +PIN = "3c82380859d187957cfd5cd64802b076d9779550" def test_public_config_preserves_native_model_and_unresolved_reference(monkeypatch): diff --git a/packages/harbor-hf-agents/uv.lock b/packages/harbor-hf-agents/uv.lock index 7daa1be5..1161a6f3 100644 --- a/packages/harbor-hf-agents/uv.lock +++ b/packages/harbor-hf-agents/uv.lock @@ -687,7 +687,7 @@ wheels = [ [[package]] name = "harbor" version = "0.23.0" -source = { git = "https://github.com/harbor-framework/harbor.git?rev=fcf27e5502e30436b067ef2d655368e86cc42cf9#fcf27e5502e30436b067ef2d655368e86cc42cf9" } +source = { git = "https://github.com/harbor-framework/harbor.git?rev=3c82380859d187957cfd5cd64802b076d9779550#3c82380859d187957cfd5cd64802b076d9779550" } dependencies = [ { name = "dirhash" }, { name = "fastapi" }, @@ -705,6 +705,7 @@ dependencies = [ { name = "pyyaml" }, { name = "requests" }, { name = "rich" }, + { name = "semver" }, { name = "shortuuid" }, { name = "supabase" }, { name = "tenacity" }, @@ -737,7 +738,7 @@ dev = [ [package.metadata] requires-dist = [ - { name = "harbor", extras = ["hf-sandbox"], git = "https://github.com/harbor-framework/harbor.git?rev=fcf27e5502e30436b067ef2d655368e86cc42cf9" }, + { name = "harbor", extras = ["hf-sandbox"], git = "https://github.com/harbor-framework/harbor.git?rev=3c82380859d187957cfd5cd64802b076d9779550" }, { name = "huggingface-hub", path = "sdk-backport/dist/huggingface_hub-1.28.0+terminal.f1c01f0-py3-none-any.whl" }, ] @@ -1969,6 +1970,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/93/ce/828467ddfa0d2fe473673026442d2032d552a168e42cfbf25fd0e5264e0c/scantree-0.0.4-py3-none-any.whl", hash = "sha256:7616ab65aa6b7f16fcf8e6fa1d9afaa99a27ab72bba05c61b691853b96763174", size = 20690, upload-time = "2024-08-03T20:08:58.137Z" }, ] +[[package]] +name = "semver" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/f5/e1dfe8e1d91c54ce212fd93916eb01fd1c590f413be0a0978c39a97aa1bb/semver-3.1.0.tar.gz", hash = "sha256:14bc073439513d7773662a338f4db9829cf16c12b74b9568e2d2689975fbd7fc", size = 304162, upload-time = "2026-09-12T18:38:14.045Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/02/bce7a1d70e9d0f6ea8623c16386138c251b5855af6cd3a11433d3fba4e66/semver-3.1.0-py3-none-any.whl", hash = "sha256:6e4998f8b4762acdfea85f9bfd5b4032e0bb50038dc04bf82011b42d5d1145c5", size = 18783, upload-time = "2026-09-12T18:38:12.457Z" }, +] + [[package]] name = "shellingham" version = "1.5.4"