feat: Project runner releases now use clearer names#1427
Conversation
Rename the project-local runner binary, release tag, assets, and pin contract to uloop-project-runner so dispatcher-owned and project-local CLI surfaces are no longer conflated. Update release automation, dispatcher resolution, Unity pin synchronization, and documentation to use the new project runner naming while keeping the global uloop dispatcher command unchanged.
Allow release guards to compare against v3-beta refs that still declare the legacy CLI minimum constant and to validate existing minimum project runner releases from the old cli-v tag namespace. Raise the package minimum dispatcher version to the dispatcher build that understands the renamed project-runner pin contract.
Keep legacy cli-v installer tags normalized to dispatcher releases during the project runner rename and update EditMode pin synchronization tests to assert the renamed project-runner pin file.
Ensure the first uloop-project-runner tag for an existing cli-v version targets the rename build commit, while keeping legacy cli-v JSON and update inputs readable during setup and self-update flows.
Keep reading legacy cliVersion metadata when projectRunnerVersion is absent so pre-rename clients still receive accurate update-required error details.
Keep the global dispatcher able to read existing cli-pin.json contracts and download their cli-v runner assets while isolating legacy cache entries from renamed project-runner releases.
Continue publishing cli-pin.json alongside the renamed project-runner pin so existing dispatchers can read the project contract and self-update before switching to the new pin name.
Keep the recommended .uloop gitignore pattern aligned with the temporary legacy cli-pin bootstrap path required by existing dispatchers.
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe PR renames project-runner versioning, pins, release tags, binaries, and entrypoints across code, tests, workflows, scripts, and docs. It also updates related version guards, packaging, and release automation to use the new metadata and artifact names. ChangesProject runner versioning and packaging
Possibly related PRs
Estimated code review effort🎯 5 (Critical) | ⏱️ ~90 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 12
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
scripts/test-resolve-native-cli-release-target.sh (1)
72-79: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winModel legacy
cli-v*releases with legacy asset names.The
cli-v$CURRENT_VERSIONbranch now reusesasset_json(), which only emitsuloop-project-runner-*files. Real legacy releases were published under the old asset names, so this fixture can falsely make a legacy release look complete for the renamed asset set and miss regressions in the bootstrap path. Add a separate legacy asset payload for thecli-v*case.Also applies to: 111-113
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/test-resolve-native-cli-release-target.sh` around lines 72 - 79, The shared asset_json() fixture only returns the new uloop-project-runner asset names, so the cli-v* legacy release path is using the wrong payload and can hide bootstrap regressions. Add a separate legacy asset JSON helper for the cli-v$CURRENT_VERSION branch that emits the old cli-v* asset names, and keep the existing asset_json() behavior for the renamed release assets. Update the legacy release handling in test-resolve-native-cli-release-target.sh so the cli-v* case selects the legacy payload instead of reusing asset_json().
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@cli/contract_test.go`:
- Around line 41-45: The dispatcher contract test only guards against the
renamed release metadata fields, so it can miss a reintroduced legacy cliVersion
key. Update TestDispatcherContractDoesNotDeclareCliReleaseFields to also assert
that requireContractFieldMissing is called for the legacy cliVersion field in
the dispatcher contract field map, alongside the existing checks for
projectRunnerVersion and protocolVersion.
In `@cli/contract.go`:
- Around line 27-28: The IPC contract rename in Contract is breaking
compatibility because it replaces the legacy runtime-version field instead of
keeping it additive. Update the contract to either continue emitting/accepting
cliVersion as a compatibility alias alongside ProjectRunnerVersion, or bump the
protocol generation by incrementing both cli/contract.json protocolVersion and
CliConstants.REQUIRED_CLI_PROTOCOL_VERSION together; use the Contract struct and
CliConstants as the key symbols to update.
In `@cli/contract.json`:
- Around line 3-4: The IPC contract version is still on the old generation, so
update the protocol bump in both places: increase cli/contract.json’s
protocolVersion and change CliConstants.REQUIRED_CLI_PROTOCOL_VERSION to the
same new value. Make sure the new protocol number reflects the incompatible
wire-contract change introduced by the project-runner naming update, so the
compatibility gate only accepts matching peers.
In `@cli/internal/automation/dispatcher_minimum_version_guard.go`:
- Around line 19-20: The minimum-version guard currently only validates the new
project-runner pin, so the legacy cli-pin contract can drift unnoticed during
the transition. Update the guard logic that uses unityPackageCliPinFile and
unityProjectCliPinFile to also load and compare the legacy
Packages/src/cli-pin.json path alongside the new pins. Keep the existing
bootstrap/update compatibility checks for cliVersion and cli-v formats in place
until legacy dispatchers are removed.
In `@cli/internal/automation/protocol_minimum_version_guard.go`:
- Around line 286-295: The release fallback logic in protocolMinimumVersionGuard
is returning too early from verifyMinimumCliReleaseIsPublished, which prevents
trying the legacy cli-v release when a uloop-project-runner-v release exists but
is not yet published or is missing assets. Update the loop in
protocolMinimumVersionGuard to only return after a release has passed both
verifyMinimumProjectRunnerReleaseProtocol and the publish check, and if
verifyMinimumCliReleaseIsPublished fails, continue to the next candidate instead
of exiting so the legacy fallback path remains available.
In `@cli/internal/cli/dispatcher_pin.go`:
- Around line 129-133: Preserve the legacy-release flag when a migrated
dispatcher pin still contains a cli-v tag, not just when the old field name is
used. Update both dispatcher pin parsing paths in
readDispatcherPinFromCliConstants and the existing pin normalization flow in
dispatcher_pin.go so that LegacyRelease is set before normalizeDispatcherVersion
runs whenever the version value itself matches the cli-v pattern. Make sure the
checks around pin.ProjectRunnerVersion, pin.LegacyCliVersion, and
versionMatch[1] all apply the same legacy detection logic.
In `@cli/internal/cli/update_test.go`:
- Around line 120-126: The test in update_test.go only checks that the URL does
not contain the project-runner-prefixed version, so it can still pass if the
normalized installer path is correct but ULOOP_VERSION remains unnormalized.
Tighten the assertion in the test around the args/joinedArgs check to verify the
exact installer version string emitted by the update flow, using the relevant
update/install path identifiers in the test setup and the normalized version
value expected from the installer URL.
In `@cli/protocol_version_consistency_test.go`:
- Around line 17-18: The consistency test currently covers only the new
project-runner pin files, but it still needs to enforce the legacy cli-pin files
while they are supported. Update the contract-version assertions in
protocol_version_consistency_test.go to include the legacy project/package pin
paths alongside unityProjectCliPinPath and unityPackageCliPinPath, so the
existing v3 beta pin files stay aligned with cli/contract.json.
In `@release-please-config.json`:
- Around line 22-29: The release-please config currently stops updating the
legacy cli-pin.json bootstrap contracts, so restore those pin entries alongside
project-runner-pin.json until old dispatchers are retired. Update the
release-please configuration blocks that manage the pin JSON paths so release
PRs continue bumping cli-pin.json as well as the newer project-runner pin files,
keeping the migration path consistent for bootstrap consumers.
In `@scripts/resolve-native-cli-release-target.sh`:
- Around line 255-257: The RELEASE_TAG validation in
resolve-native-cli-release-target.sh now only accepts uloop-project-runner-v*
and blocks legacy cli-v* tags before the existing fallback logic can handle
them. Update the case statement around RELEASE_TAG to accept both tag prefixes
during the transition, keeping the current fallback path intact for legacy
releases. Make sure the check still routes through the existing release
resolution flow after matching cli-v* so manual publishes on older tags continue
to work.
In `@scripts/sync-release-please-package-releases.sh`:
- Line 8: The release sync script now only points at
Packages/src/project-runner-pin.json, which drops the legacy cli-pin.json update
that still needs to stay in sync. Update the sync flow in
scripts/sync-release-please-package-releases.sh so it continues to include
Packages/src/cli-pin.json alongside the project-runner pin, matching the
behavior expected by CliPinSynchronizer.SyncProjectPinFile(...). Keep the legacy
pin covered during the transition so older dispatcher/bootstrap paths receive
the latest published pin.
In `@scripts/test-sync-release-please-package-releases.sh`:
- Around line 197-203: The pin-fixture setup in the release sync test script
only writes the new project-runner pin, which drops coverage for the legacy
v3-beta compatibility path. Update the fixture generation near the pin creation
block to keep a legacy cli-pin.json fixture alongside project-runner-pin.json,
and make sure it still uses cliVersion so the transition path remains tested
until migration is complete.
---
Outside diff comments:
In `@scripts/test-resolve-native-cli-release-target.sh`:
- Around line 72-79: The shared asset_json() fixture only returns the new
uloop-project-runner asset names, so the cli-v* legacy release path is using the
wrong payload and can hide bootstrap regressions. Add a separate legacy asset
JSON helper for the cli-v$CURRENT_VERSION branch that emits the old cli-v* asset
names, and keep the existing asset_json() behavior for the renamed release
assets. Update the legacy release handling in
test-resolve-native-cli-release-target.sh so the cli-v* case selects the legacy
payload instead of reusing asset_json().
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 799fc083-a4ca-46a6-9917-535e18a3d20e
⛔ Files ignored due to path filters (2)
Packages/src/cli-pin.json.metais excluded by none and included by nonePackages/src/project-runner-pin.json.metais excluded by none and included by none
📒 Files selected for processing (58)
.github/workflows/build-and-test.yml.github/workflows/native-cli-publish.yml.uloop/cli-pin.json.uloop/project-runner-pin.jsonAssets/Tests/Editor/CliPinSynchronizerTests.csPackages/src/Editor/Domain/CliConstants.csPackages/src/Editor/Infrastructure/Api/JsonRpcProcessor.csPackages/src/Editor/Infrastructure/Api/JsonRpcRequest.csPackages/src/Editor/Infrastructure/CLI/CliInstallationDetector.csPackages/src/Editor/Infrastructure/CLI/CliPinSynchronizer.csPackages/src/Editor/Infrastructure/CLI/NativeCliInstaller.csPackages/src/Editor/Presentation/Setup/SetupWizardWindow.csPackages/src/Editor/Presentation/UnityCliLoopSettingsWindow.csPackages/src/Editor/ToolContracts/UnityCliLoopConstants.csPackages/src/cli-pin.jsonPackages/src/project-runner-pin.jsonREADME.mdcli/cmd/dispatcher/main.gocli/cmd/project-runner/main.gocli/cmd/uloop-cli/main.gocli/contract.gocli/contract.jsoncli/contract_test.gocli/dispatcher-contract.jsoncli/internal/architecture/architecture_test.gocli/internal/automation/dispatcher_minimum_version_guard.gocli/internal/automation/dispatcher_minimum_version_guard_test.gocli/internal/automation/dispatcher_version_bump_guard.gocli/internal/automation/protocol_minimum_version_guard.gocli/internal/automation/protocol_minimum_version_guard_test.gocli/internal/automation/release_pr_checks_test.gocli/internal/cli/dispatcher.gocli/internal/cli/dispatcher_download.gocli/internal/cli/dispatcher_pin.gocli/internal/cli/dispatcher_test.gocli/internal/cli/dispatcher_update_version.gocli/internal/cli/help_test.gocli/internal/cli/run.gocli/internal/cli/tools.gocli/internal/cli/update_test.gocli/internal/projectrunner/projectrunner.gocli/internal/unityipc/client.gocli/internal/unityipc/client_test.gocli/internal/update/command.gocli/internal/update/installer.gocli/internal/update/installer_test.gocli/protocol_version_consistency_test.gorelease-please-config.jsonscripts/build-go-cli.shscripts/package-go-cli.shscripts/resolve-native-cli-release-target.shscripts/sync-release-please-package-releases.shscripts/test-release-please-config.shscripts/test-resolve-native-cli-release-target.shscripts/test-sync-release-please-package-releases.shscripts/test-verify-native-cli-release-assets.shscripts/verify-go-cli-dist.shscripts/verify-native-cli-release-assets.sh
💤 Files with no reviewable changes (1)
- cli/cmd/uloop-cli/main.go
There was a problem hiding this comment.
7 issues found across 60 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="scripts/resolve-native-cli-release-target.sh">
<violation number="1" location="scripts/resolve-native-cli-release-target.sh:257">
P2: Validate the release tag suffix as SemVer, not just “starts with digit”. This prevents malformed manual `INPUT_RELEASE_TAG` values from driving release automation under the new project-runner tag namespace.
(Based on your team's feedback about validating release tag/version inputs in CI shell scripts.) [FEEDBACK_USED]</violation>
</file>
<file name="cli/internal/architecture/architecture_test.go">
<violation number="1" location="cli/internal/architecture/architecture_test.go:91">
P3: Function name and comment still reference old 'ProjectCli' naming after the paths were updated to 'projectrunner'/'project-runner'. Rename to TestProjectRunnerCommandOnlyDependsOnProjectRunnerEntrypoint and update the comment for grep-friendly test output.</violation>
</file>
<file name="cli/internal/automation/dispatcher_minimum_version_guard.go">
<violation number="1" location="cli/internal/automation/dispatcher_minimum_version_guard.go:19">
P2: Dispatcher minimum-version guard no longer validates legacy cli-pin.json files that are still shipped and consumed during the rename. A stale legacy pin can let older dispatchers bootstrap/update with the wrong minimumDispatcherVersion while CI passes.</violation>
</file>
<file name="cli/internal/automation/protocol_minimum_version_guard.go">
<violation number="1" location="cli/internal/automation/protocol_minimum_version_guard.go:295">
P2: Legacy fallback is skipped when the renamed tag has a contract but is not publishable. Continue trying the next candidate on publication failure so existing cli-v minimum pins can still pass when their legacy release is complete.</violation>
</file>
<file name="release-please-config.json">
<violation number="1" location="release-please-config.json:22">
P2: Keep legacy `cli-pin.json` files in release-please bump targets during migration; otherwise legacy pins can silently fall behind renamed pins.</violation>
</file>
<file name="cli/contract_test.go">
<violation number="1" location="cli/contract_test.go:44">
P3: Also assert `cliVersion` is absent here so reintroducing the legacy field cannot silently bypass this contract test.</violation>
</file>
<file name="scripts/test-sync-release-please-package-releases.sh">
<violation number="1" location="scripts/test-sync-release-please-package-releases.sh:197">
P3: Add a legacy `cli-pin.json` fixture here so release-sync tests continue covering the migration compatibility path.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
Drop the transitional cli-pin, cliVersion, cli-v, and uloop-cli asset fallbacks so the renamed project runner contract is the only supported path. Keep only the pre-rename base parser needed for this rename PR's release guard comparison.
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
cli/internal/cli/dispatcher_pin.go (1)
24-24: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick winRestore legacy pin/version fallback for transition projects.
This now only discovers/decodes project-runner pins and only accepts
MINIMUM_REQUIRED_PROJECT_RUNNER_VERSIONfromCliConstants.cs. Existing v3 beta projects that still havecli-pin.json,cliVersion, orMINIMUM_REQUIRED_CLI_VERSIONwill fail bootstrap/update despite the migration goal. Keep the legacy discovery/decode path and map it intoProjectRunnerVersionbefore validation.Also applies to: 70-85, 147-150
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@cli/internal/cli/dispatcher_pin.go` at line 24, The dispatcher pin handling in ProjectRunnerVersion currently drops legacy transition-project sources, so restore the old discovery/decode path alongside the new project-runner pin flow. In the pin loading/validation logic around ProjectRunnerVersion, keep accepting cli-pin.json, cliVersion, and MINIMUM_REQUIRED_CLI_VERSION, map any legacy value into ProjectRunnerVersion before validation, and preserve the existing project-runner source as the preferred path for newer projects.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@cli/internal/cli/dispatcher_pin.go`:
- Line 24: The dispatcher pin handling in ProjectRunnerVersion currently drops
legacy transition-project sources, so restore the old discovery/decode path
alongside the new project-runner pin flow. In the pin loading/validation logic
around ProjectRunnerVersion, keep accepting cli-pin.json, cliVersion, and
MINIMUM_REQUIRED_CLI_VERSION, map any legacy value into ProjectRunnerVersion
before validation, and preserve the existing project-runner source as the
preferred path for newer projects.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: d1db66d6-ecfb-46f0-b41f-0a0c294faf16
📒 Files selected for processing (19)
.coderabbit.yamlAssets/Tests/Editor/CliPinSynchronizerTests.csAssets/Tests/Editor/JsonRpcProcessorCliVersionGateTests.csAssets/Tests/Editor/NativeCliInstallerTests.csPackages/src/Editor/Domain/CliConstants.csPackages/src/Editor/Infrastructure/Api/JsonRpcProcessor.csPackages/src/Editor/Infrastructure/CLI/CliPinSynchronizer.csPackages/src/Editor/Infrastructure/CLI/NativeCliInstaller.csPackages/src/Editor/ToolContracts/UnityCliLoopConstants.csREADME.mdcli/internal/automation/protocol_minimum_version_guard.gocli/internal/automation/protocol_minimum_version_guard_test.gocli/internal/cli/dispatcher.gocli/internal/cli/dispatcher_download.gocli/internal/cli/dispatcher_pin.gocli/internal/cli/dispatcher_test.gocli/internal/cli/update_test.gocli/internal/update/command.gocli/internal/update/installer.go
💤 Files with no reviewable changes (11)
- Packages/src/Editor/ToolContracts/UnityCliLoopConstants.cs
- cli/internal/update/command.go
- Packages/src/Editor/Infrastructure/CLI/NativeCliInstaller.cs
- Assets/Tests/Editor/NativeCliInstallerTests.cs
- Packages/src/Editor/Domain/CliConstants.cs
- cli/internal/cli/update_test.go
- cli/internal/update/installer.go
- Assets/Tests/Editor/CliPinSynchronizerTests.cs
- Assets/Tests/Editor/JsonRpcProcessorCliVersionGateTests.cs
- cli/internal/cli/dispatcher_test.go
- README.md
🚧 Files skipped from review as they are similar to previous changes (2)
- cli/internal/cli/dispatcher.go
- cli/internal/automation/protocol_minimum_version_guard_test.go
There was a problem hiding this comment.
1 issue found across 22 files (changes from recent commits).
You’re at about 90% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="cli/internal/automation/protocol_minimum_version_guard.go">
<violation number="1" location="cli/internal/automation/protocol_minimum_version_guard.go:295">
P2: Legacy fallback is skipped when the renamed tag has a contract but is not publishable. Continue trying the next candidate on publication failure so existing cli-v minimum pins can still pass when their legacy release is complete.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
Address review feedback by keeping legacy cliVersion metadata out of the dispatcher contract, finishing project runner naming in architecture tests, validating release tag SemVer suffixes, and normalizing v-prefixed minimum runner versions before constructing release tags.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/resolve-native-cli-release-target.sh`:
- Around line 29-31: Tighten the SemVer validation in is_semver_version so
malformed explicit INPUT_RELEASE_TAG values cannot pass; update the regex to
fully enforce SemVer prerelease/build rules, especially rejecting numeric
prerelease identifiers with leading zeroes and empty identifiers such as double
dots. Make the same validation change in the other matching is_semver_version /
release-tag guard location referenced by the diff so both paths use the stricter
check.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 03bdce4a-f73f-4f1e-81fb-466d7bef10aa
📒 Files selected for processing (6)
cli/contract_test.gocli/internal/architecture/architecture_test.gocli/internal/automation/protocol_minimum_version_guard.gocli/internal/automation/protocol_minimum_version_guard_test.goscripts/resolve-native-cli-release-target.shscripts/test-resolve-native-cli-release-target.sh
🚧 Files skipped from review as they are similar to previous changes (3)
- cli/contract_test.go
- cli/internal/architecture/architecture_test.go
- cli/internal/automation/protocol_minimum_version_guard.go
Reject malformed explicit project runner release tags with numeric prerelease leading zeroes or empty prerelease identifiers so release automation does not accept invalid SemVer input.
There was a problem hiding this comment.
1 issue found across 6 files (changes from recent commits).
You’re at about 91% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="cli/internal/automation/protocol_minimum_version_guard.go">
<violation number="1" location="cli/internal/automation/protocol_minimum_version_guard.go:295">
P2: Legacy fallback is skipped when the renamed tag has a contract but is not publishable. Continue trying the next candidate on publication failure so existing cli-v minimum pins can still pass when their legacy release is complete.</violation>
</file>
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
Reject invalid minimum project runner versions before constructing release tags so protocol minimum checks follow the same SemVer expectations as project runner release automation.
There was a problem hiding this comment.
1 issue found across 2 files (changes from recent commits).
You’re at about 91% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
Keep legacy minimum-version parsing limited to base-ref comparison so rename PRs can still compare against v3-beta while current package constants must use MINIMUM_REQUIRED_PROJECT_RUNNER_VERSION.
Point the Unity package setup target at the first renamed project-runner release so package release verification no longer looks for the old cli namespace version under the new tag prefix.
Permit the first renamed project-runner release to pass protocol minimum checks when the base branch still uses the pre-rename minimum constant, and whitelist the renamed project pin file in gitignore.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Packages/src/Editor/Domain/CliConstants.cs`:
- Around line 13-18: Update the IPC protocol gate to reflect the non-additive
contract rename by bumping both cli/contract.json protocolVersion and
CliConstants.REQUIRED_CLI_PROTOCOL_VERSION together. The current
CliConstants.REQUIRED_CLI_PROTOCOL_VERSION still allows exact-version peers to
connect even though they may disagree on the renamed project-runner contract
metadata, so raise the constant and the generated contract version in the same
change. Use CliConstants and the contract.json protocolVersion as the matching
symbols to locate and update.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 54f467e7-f8c7-4ff5-8a2a-db3715722875
⛔ Files ignored due to path filters (1)
.gitignoreis excluded by none and included by none
📒 Files selected for processing (4)
Packages/src/Editor/Domain/CliConstants.cscli/internal/automation/protocol_minimum_version_guard.gocli/internal/automation/protocol_minimum_version_guard_test.gocli/internal/automation/protocol_minimum_version_parse.go
🚧 Files skipped from review as they are similar to previous changes (2)
- cli/internal/automation/protocol_minimum_version_guard_test.go
- cli/internal/automation/protocol_minimum_version_guard.go
There was a problem hiding this comment.
1 issue found across 5 files (changes from recent commits).
You’re at about 91% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="cli/internal/automation/protocol_minimum_version_guard.go">
<violation number="1" location="cli/internal/automation/protocol_minimum_version_guard.go:158">
P1: Bootstrap exemption suppresses all release verification errors indiscriminately instead of only exempting the specific unpublished-release condition</violation>
</file>
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
Move the renamed project-runner IPC contract to protocol 3 and keep the first renamed release bootstrap exemption limited to the missing release-contract case so other release verification failures still surface.
Summary
uloop-project-runnernaming across tags, binaries, assets, pins, and release automation.Compatibility Policy
cli-pin.json,cliVersionmetadata fallback,cli-vproject-runner release fallback, anduloop-cliproject-runner asset fallback are no longer supported paths.User Impact
uloopdispatcher..uloop/project-runner-pin.jsonandprojectRunnerVersionafter this rename.Changes
uloop-project-runner.Verification
scripts/check-go-cli.shcd cli && go test ./internal/cli ./internal/update ./internal/automationscripts/test-release-please-config.shscripts/test-sync-release-please-package-releases.shscripts/test-resolve-native-cli-release-target.shcli/dist/darwin-arm64/uloop compile --project-path "$(git rev-parse --show-toplevel)"cli/dist/darwin-arm64/uloop run-tests --project-path "$(git rev-parse --show-toplevel)" --test-mode EditMode --filter-type regex --filter-value ".*(CliPinSynchronizerTests|JsonRpcProcessorCliVersionGateTests|NativeCliInstallerTests).*"