Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,10 @@ When changing Go source files under any Go module (`cli/common`, `cli/dispatcher
equivalent of Go CLI CI (format, vet, lint, tests, binary rebuild). Use `scripts/build-go-cli.sh`
to refresh `dist` binaries; they are git-ignored and must not be committed.

To validate an unreleased project runner from an external Unity project, set the
`ULOOP_PROJECT_RUNNER_PATH` environment variable to a locally built binary — it overrides the
pin-based resolution entirely (see `docs/project-runner-pin.md`).

## Unity Freeze Prevention

Unity EditMode tests can freeze the Editor. Never run multiple `uloop run-tests` commands in
Expand Down
21 changes: 21 additions & 0 deletions docs/project-runner-pin.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,27 @@ There is no dispatcher⇄package integer contract generation; the pin's semver
floor is the only dispatcher gate. The IPC `protocolVersion` pair (see
`docs/protocol-version.md`) is the only integer generation in the system.

## Local override: `ULOOP_PROJECT_RUNNER_PATH`

The environment variable `ULOOP_PROJECT_RUNNER_PATH` (defined in
`cli/dispatcher/internal/nativepath/path.go`) makes the dispatcher run the
project runner binary at that path instead of resolving one from the pin.
`resolveDispatcherRealCLI` checks it before everything else — pin validation,
the sibling binary next to the dispatcher, the version cache, and the GitHub
release download are all skipped. The path must point at an existing executable
file, or the dispatcher fails with an explicit error rather than falling back.

This override exists for dogfooding checkouts: release-please stamps
`projectRunnerVersion` ahead of the matching GitHub release, so the normal
download path 404s until the release is published. Pointing the variable at a
locally built binary (e.g. `dist/darwin-arm64/uloop-project-runner`, refreshed
via `scripts/build-go-cli.sh`) lets you exercise unreleased project-runner and
`cli/common` changes against real Unity projects before merge. Unset the
variable to return to normal pin-resolved behavior.

Related overrides in the same file: `ULOOP_INSTALL_DIR` (dispatcher install
directory) and `ULOOP_CACHE_DIR` (project runner download cache).

## Pin format discipline

The pin evolves additively only — never delete or rename an existing field.
Expand Down