Skip to content

fix: run parents locally and consolidate dashboard refresh feedback - #218

Merged
evalstate merged 13 commits into
mainfrom
fix/parent-local-storage-sdk
Sep 11, 2026
Merged

evalstate merged 13 commits into
mainfrom
fix/parent-local-storage-sdk

Conversation

@evalstate

@evalstate evalstate commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Run the Harbor parent on ordinary local /data storage; remove its Bucket volume and use acknowledged Hub SDK copies to the existing artifact Bucket.
  • Restore native files before Job.create()/native resume. Keep control-owned records read-only to the parent; refresh control intent through the API.
  • Preserve dashboard observations with native job metadata, trial config/lock identity, completed-trial results, and attempt-cost receipts. No new result schema, progress engine, scheduler, or resource.
  • Invoke Harbor's existing scrubber on the actual trial before END callbacks using the separately approved, revision-pinned private integration. Retain native final scrubbing; do not serialize unsanitized hook results.
  • Publish each copied subtree's result last. Use Harbor's native completion lock for aggregate snapshots/cost checks. Withhold failed retry-enabled terminal results until final publication so interrupted native backoff cannot restore an obsolete completed attempt.
  • Exclude the global job.log, which is outside native trial-directory sanitization. Preserve scrubbed per-trial logs.

Additional committed work

  • Includes all six additional local commits requested for this PR: the stable,
    consolidated Run detail refresh strip, cancellation-test cleanup, and their
    authorization history.
  • The strip observes existing query-cache state without adding polling or
    reinterpreting native Harbor evidence. Error details and retry access remain
    available in a collapsed overlay without page movement.
  • Concurrent uncommitted provider-display and starter-version implementations
    are not part of this PR; their approval records are included without silently
    publishing the in-progress edits.

Harbor boundary review

Pinned dcd0a7ac74b7bd417780d9cb27cd819c7ec82e4e:

  • src/harbor/job.py: Job.create, Job.run, on_trial_started, on_trial_ended, native resume and _trial_completion_lock.
  • src/harbor/trial/trial.py, trial/hooks.py, trial/queue.py: actual Trial lifecycle, _emit, _scrub_jobs_dir, TrialHookEvent, and retry cleanup/backoff.
  • src/harbor/models/job/config.py, models/job/result.py, models/trial/result.py, models/job/plugin.py: authoritative configuration/results and plugin contract.
  • src/harbor/verifier/verifier.py, environments/hf_sandbox.py, environments/tar_transfer.py: awaited transfer followed by local reward lookup.
  • src/harbor/cli/plugins/harbor_hub.py, cli/job_plugins.py, upload/uploader.py, upload/storage.py, storage/base.py: native hosted upload is tied to Harbor's service; it is not an HF Bucket transport for the existing file layout.

Relevant pinned history was reviewed; the trial source at e1be9bd39c368f88a27fee4cbd26655e9994ee5a still dispatches END before scrubbing. Replace this private integration when a reviewed pin supplies a supported post-sanitization hook or equivalent native ordering. Revision mismatches fail explicitly. Native configurations, identities, costs, rewards, and resume remain authoritative; durable schemas are unchanged.

For the console change, also checked native JobResult, JobStats,
update_progress_counts(), TrialResult, and TimingInfo in the model files
above, plus src/harbor/viewer/scanner.py (get_job_result, get_trial_result,
configuration readers) and viewer/server.py job/trial GET endpoints. The new
UI represents browser fetch feedback only; no schema, API, persisted value, or
Harbor progress meaning changes.

Validation

Combined GitHub CI passed at 0ec09b0c2d94fdfe3d545dc38d3c22487cfb6f87.
Combined local validation excludes concurrent uncommitted workspace edits:

  • Root Ruff, formatting, ty; 102 tests, 89.10% coverage; pip-audit.
  • Agent Ruff, formatting, ty; 321 tests; changed runtime modules 91.44% coverage.
  • TypeScript formatting/lint/typecheck, 1,458 tests, build, generated-contract check, npm audit.
  • 73 Playwright tests.
  • Both combined Dockerfiles built for linux/amd64; offline Python 3.12 native-binding smoke passed.
  • Normal Slophammer check and DRY check; public privacy and full diff review.

Disclosed validation limitations

  • Package-wide agent coverage is 71.84%, below the requested 85% target; the existing broader coverage gap remains. No threshold was weakened.
  • slophammer-py check . --baseline cannot run successfully because the repository has no slophammer-baseline.json. The ordinary check reports no findings; DRY reports zero candidates.
  • No paid Job, remote canary, deployment, credential movement, or upstream publication performed.

Operational trade-offs

Transfers are acknowledged snapshots, not a cross-object transaction or streaming log service. Abrupt termination can lose unacknowledged outputs/cost evidence. Errored retry-enabled trial diagnostics are conservatively delayed until final publication, and incomplete snapshots can repeat work under native resume. Native text scrubbing retains its existing best-effort limits, including skipped binary/unreadable files.

Deploy a matching reviewed worker image and control launch template together; mixed versions fail early. No compatibility mount or dual writer is added. Merge and matched parent-image publication/control deployment were separately
authorized. Cutover remains gated on idle execution; no running benchmark may
be interrupted and no benchmark launch or credential movement is authorized.

@evalstate evalstate changed the title fix: run Harbor parents locally with scrubbed artifact persistence fix: run parents locally and consolidate dashboard refresh feedback Sep 11, 2026
@evalstate
evalstate marked this pull request as ready for review September 11, 2026 16:41
@evalstate
evalstate merged commit ec1020c into main Sep 11, 2026
1 check passed
@evalstate
evalstate deleted the fix/parent-local-storage-sdk branch September 11, 2026 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant