Skip to content

deps path gh <name>: resolve a gh release's install dir from the lock - #176

Merged
JPDuchesne merged 1 commit into
mainfrom
jpd/deps-path-gh
Sep 23, 2026
Merged

JPDuchesne merged 1 commit into
mainfrom
jpd/deps-path-gh

Conversation

@JPDuchesne

@JPDuchesne JPDuchesne commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Why

Consumers of gh-provisioned engines hardcode ~/.dev/engines/<x>/current. That broke the moment the agent-host bootstrap re-rooted the data root onto /Users/Shared/dev — cellbound-3d's dev editor now fails on every bootstrapped Mac (tooling/editor/lib/editor/editor_host.rb:24, bin/ue-bake:26). The consumer knows dev's layout convention but not dev's data-root resolution, and dev exposes no way to ask.

What

dev deps path gh <name> — the accessor answers for gh deps the way it already does for xcode: locked version → DataRoot.expand(install_dir) → the immutable version-keyed dir, verified by the .dev-gh-release marker. Missing/half-published → NotInstalledError ("run dev up"); not in lock → NotLockedError; no name → UsageError.

Resolved from the lock, not the current pointer: a checkout gets the tag its lockfile names, not whatever the machine installed last. current is untouched here; it becomes retirable once consumers migrate (#177).

Accessor gains an injectable data_root: (same pattern as xcode_install_root:) so tests run against a tmpdir.

Tests

6 new cases in test/dev/deps/accessor_test.rb, written first. srb tc and rubocop clean. Full suite: the 4 BuildContainerTest failures are #165 (pre-existing on main, reproduced with this change stashed).

Sequence

  1. This PR → release
  2. cellbound-3d: migrate editor_host.rb, bin/ue-bake, and the four bin/*.sh current fallbacks to dev deps path gh …
  3. dev: delete GhIntegration#publish_current (gh integration: retire the current symlink once consumers resolve through dev deps path gh #177)

Made with Cursor

Consumers of gh-provisioned engines hardcode `~/.dev/engines/<x>/current`,
which broke the moment the agent-host bootstrap re-rooted the data root
onto /Users/Shared/dev (cellbound-3d's `dev editor`). The accessor now
answers for gh deps the way it already does for xcode: from the locked
version, through DataRoot, to the immutable version-keyed dir — verified
by the publish marker, so a half-published or missing install surfaces
as NotInstalledError ("run dev up") instead of a wrong engine.

Resolving from the lock rather than the `current` pointer means a
checkout always gets the tag its lockfile names, not whatever this
machine installed last; `current` becomes retirable once consumers
migrate.

Co-authored-by: Cursor <cursoragent@cursor.com>
@codecov

codecov Bot commented Sep 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@JPDuchesne
JPDuchesne merged commit 2bf5251 into main Sep 23, 2026
6 checks passed
@JPDuchesne
JPDuchesne deleted the jpd/deps-path-gh branch September 23, 2026 17:11
JPDuchesne added a commit that referenced this pull request Sep 23, 2026
deps path gh <name>: resolve a gh release's version-keyed install dir from the lockfile through the data root (#176)
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