Skip to content

fix(deps): ship harbor[cloud] extras by default#48

Merged
szjanikowski merged 1 commit into
mainfrom
fix/harbor-cloud-extras
May 9, 2026
Merged

fix(deps): ship harbor[cloud] extras by default#48
szjanikowski merged 1 commit into
mainfrom
fix/harbor-cloud-extras

Conversation

@szjanikowski
Copy link
Copy Markdown
Contributor

Summary

  • Switch harbor>=0.6,<0.7harbor[cloud]>=0.6,<0.7 in pyproject.toml
  • uv.lock refreshed: daytona, e2b, modal, runloop, kubernetes, tensorlake, islo + transitive deps now locked
  • Resolves the cloud-sandbox setup wall: nasde run --harbor-env daytona|modal|e2b|runloop|gke works after a plain uv tool install nasde-toolkit, no --with 'harbor[daytona]' workaround needed

Context

Issue (Severity: High): any --harbor-env other than docker failed at runtime with Harbor's MissingExtraError, because pyproject.toml declared harbor without the [cloud] extra. Cross-platform issue, but compounded with the Windows path bug from #43 it produced a particularly opaque crash.

We considered dynamic post-install fetching of cloud SDKs (the way uv run --with works ad-hoc), but for uv tool install the venv is closed and isolated — there is no clean runtime path that doesn't either reinstall the entire tool venv or reimplement pip-style resolution. Trading 113 MB of disk for "it just works" was the right call.

Trade-off

~113 MB extra in the tool venv (measured: 550 MB → 663 MB in a Python 3.13 baseline). Local-Docker users pay the disk cost they don't directly use, but the alternative — every cloud user hitting a setup wall on first run — was worse.

Test plan

  • uv sync succeeds against the new lockfile
  • Smoke import: daytona, e2b, modal, runloop_api_client, kubernetes import cleanly
  • harbor.environments.daytona.DaytonaEnvironment imports without MissingExtraError
  • CI quality-gate passes (Linux + Windows × Python 3.12 + 3.13)
  • CHANGELOG entry follows in a separate PR off main after this merges (kept apart to avoid changelog-branch conflicts)

🤖 Generated with Claude Code

Use harbor[cloud] instead of bare harbor so --harbor-env
daytona|modal|e2b|runloop|gke works out-of-the-box after
`uv tool install nasde-toolkit`. Previously these flags raised
Harbor's MissingExtraError at runtime and required users to know
the `uv tool install --reinstall --with 'harbor[daytona]' nasde-toolkit`
workaround.

Trade-off: ~113 MB extra in the tool venv (daytona-sdk, e2b, modal,
runloop, kubernetes, tensorlake, islo and their transitive deps).
Local-Docker users pay the disk cost too, but surfacing a setup wall
to every cloud user was worse.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@szjanikowski szjanikowski merged commit ac53fa4 into main May 9, 2026
9 checks passed
@szjanikowski szjanikowski deleted the fix/harbor-cloud-extras branch May 9, 2026 11:53
szjanikowski pushed a commit that referenced this pull request May 9, 2026
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@szjanikowski szjanikowski mentioned this pull request May 9, 2026
9 tasks
szjanikowski added a commit that referenced this pull request May 9, 2026
* docs(changelog): record Windows compat + skill bundling under [Unreleased]

Captures everything that landed since v0.3.2 (PRs #42, #43, #44, #45) so
the release notes are queued up. Keeps the section under [Unreleased]
deliberately — more fixes are still expected before cutting v0.3.3, and
release docs say the version header should be added at release-cut time.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(changelog): record .gitattributes LF enforcement (#47)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(changelog): record harbor[cloud] dependency switch (#48)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore: release v0.3.3

Cuts v0.3.3 from the accumulated [Unreleased] section. Patch bump
(pre-1.0 policy): no breaking changes to user-facing CLI, nasde.toml
schema, or benchmark project layout — Windows compat, OAuth-script
bundling, harbor[cloud] dep switch are all transparent to users.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Szymon Janikowski <szymon.janikowski@itlibrium.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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