[codex] Add release recovery and trim Random noise-map CI#272
[codex] Add release recovery and trim Random noise-map CI#272Eli Pinkerton (wallstop) wants to merge 23 commits into
Conversation
## Summary - Add guarded workflow_dispatch recovery to Release Publish for unpublished tag/source recovery. - Freeze release asset jobs to the verified source SHA and pin recovery guardrails with PowerShell contracts. - Reduce default RandomTestBase.NextNoiseMap coverage to representative dimensions while restoring the historical sweep in the weekly Random benchmark lane. ## Validation - npm run test:sync-script-contracts - npm run test:release-tools - npm run test:unity-workflow-matrix-contract - npm run test:lint-workflow-run-expression-length - npm run lint:workflow-run-expression-length - npm run lint:tests - npm run lint:yaml - actionlint .github/workflows/release.yml .github/workflows/unity-benchmarks.yml - npm run format:yaml:check - npm run format:md:check - dotnet tool run csharpier check Tests/Runtime/Random/RandomTestBase.cs Targeted Unity EditMode run for NextNoiseMap did not reach test execution because this devcontainer has no usable Unity license artifact or activation credentials.
|
Cursor (@cursor) review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 405baca. Configure here.
There was a problem hiding this comment.
Pull request overview
Adds a guarded manual recovery path to the Release Publish workflow (for cases where a tag exists but external artifacts were never published), and trims PR CI runtime for Random noise-map tests while preserving deeper coverage in the weekly benchmark lane.
Changes:
- Extend
release.ymlto supportworkflow_dispatchrecovery inputs (version,source_ref,allow_tag_recovery) and freeze downstream packaging checkouts to the verified source SHA. - Reduce default
NextNoiseMapiteration coverage to fixed representative dimensions, with an env override to restore the historical sweep in weekly benchmarks. - Add PowerShell contract tests to lock in the new release recovery guardrails and SHA-frozen checkout behavior.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
Tests/Runtime/Random/RandomTestBase.cs |
Adds env-controlled noise-map iteration count and uses representative fixed dimensions by default to reduce PR CI runtime. |
scripts/tests/test-sync-script-contracts.ps1 |
Adds contract checks to enforce the new release recovery inputs/guards and verified-SHA checkouts. |
.github/workflows/unity-benchmarks.yml |
Restores full Random sampling and 1000-iteration noise-map sweep in the weekly benchmark lane via env overrides. |
.github/workflows/release.yml |
Adds manual recovery mode, tag safety checks, and SHA-frozen downstream checkouts for release artifact generation. |
## Summary - Keep release workflow source-ref as the original ref and use source-sha for downstream checkout pinning. - Clarify the Random benchmark lane comment around where CI sets the Random env overrides. - Rewrite NextNoiseMap bounds assertions so the asserted value is first. ## Validation - npm run test:sync-script-contracts - pwsh -NoProfile -File scripts/lint-tests.ps1 -VerboseOutput -Paths Tests/Runtime/Random/RandomTestBase.cs - actionlint .github/workflows/release.yml .github/workflows/unity-benchmarks.yml - npm run lint:yaml - npm run lint:workflow-run-expression-length - node scripts/run-prettier.js --check -- .github/workflows/release.yml .github/workflows/unity-benchmarks.yml - dotnet tool run csharpier check Tests/Runtime/Random/RandomTestBase.cs
|
Cursor (@cursor) review |
|
Cursor (@cursor) review |
|
Cursor (@cursor) review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
1 issue from previous review remains unresolved.
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit f15e37d. Configure here.
|
Cursor (@cursor) review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 7329642. Configure here.
|
Cursor (@cursor) review |
|
Cursor (@cursor) review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 17d4f24. Configure here.
Retag the three high-count AssetDatabase batch-scope cycle cases as Stress so the PR lane keeps representative Count10 coverage while weekly Performance/Stress CI keeps the heavier Count50 repetition. Co-authored-by: Codex <codex@openai.com>
|
Cursor (@cursor) review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 0d90bf7. Configure here.
|
Cursor (@cursor) review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 28e17ee. Configure here.
| if (NoiseMapIterationCount == FastNoiseMapDimensions.Length) | ||
| { | ||
| foreach ((int width, int height) in FastNoiseMapDimensions) | ||
| { | ||
| yield return (width, height); | ||
| } | ||
|
|
||
| yield break; | ||
| } |
|
Cursor (@cursor) review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit fe11415. Configure here.
| if [ "${TAG_ACTION}" = "create" ]; then | ||
| gh api --method POST "repos/${GITHUB_REPOSITORY}/git/refs" \ | ||
| --field ref="refs/tags/${TAG}" \ | ||
| --field sha="${created_tag_sha}" >/dev/null | ||
| echo "::notice::Created release tag ${TAG} at ${SOURCE_SHA}." | ||
| elif [ "${TAG_ACTION}" = "retarget" ]; then | ||
| gh api --method PATCH "repos/${GITHUB_REPOSITORY}/git/refs/tags/${TAG}" \ | ||
| --field sha="${created_tag_sha}" \ | ||
| --field force=true >/dev/null | ||
| echo "::notice::Retargeted release tag ${TAG} to ${SOURCE_SHA}." | ||
| else | ||
| echo "::error::Unsupported tag action '${TAG_ACTION}'." | ||
| exit 1 | ||
| fi |
|
Cursor (@cursor) review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 85bc88b. Configure here.

Summary
version,source_ref, and explicitallow_tag_recovery=true..unitypackagejobs to the verified source SHA, and refuses tag create/retarget if npm or GitHub Release artifacts already exist.RandomTestBase.NextNoiseMapruntime to fixed representative dimensions while restoring the historical 1000-iteration sweep in the weekly Random benchmark lane.Release state note
Current external state for
3.4.0is partial: the Git tag exists, but npmcom.wallstop-studios.unity-helpers@3.4.0and the GitHub Release are absent. This PR allows explicit manual recovery for that unpublished state. If the org treats tag movement as forbidden even before artifact publication, the safer operational path is to prepare a new patch version such as3.4.1instead of retargeting3.4.0.Validation
npm run test:sync-script-contractsnpm run test:release-toolsnpm run test:unity-workflow-matrix-contractnpm run test:lint-workflow-run-expression-lengthnpm run lint:workflow-run-expression-lengthnpm run lint:testsnpm run lint:yamlactionlint .github/workflows/release.yml .github/workflows/unity-benchmarks.ymlnpm run format:yaml:checknpm run format:md:checkdotnet tool run csharpier check Tests/Runtime/Random/RandomTestBase.csTargeted Unity EditMode run for
NextNoiseMapdid not reach test execution because this devcontainer has no usable Unity license artifact or activation credentials.Note
High Risk
Changes the release pipeline (tag creation, manual dispatch, tag retarget recovery) and npm/GitHub publish guards—operations-critical paths where mistakes affect shipping and artifact integrity.
Overview
Replaces automatic tag-triggered publishing with a manual Release Publish workflow (
workflow_dispatch:version,source_ref, optionalallow_tag_recovery).release-tag.ymlis removed; tags are created or retargeted in aprepare-tagjob only after npm pack and.unitypackageexport succeed, with checks that npm and the GitHub Release are still unpublished.release-preparePR text now tells operators to run Release Publish onmaininstead of waiting on Release Tag.PR CI gains shared
concurrency(cancel supersededpull_requestruns) across lint/test workflows, plustest-pr-workflow-concurrency.ps1wired intovalidate:tests. Unity Tests uses the same pattern andreport-slow-tests.ps1gets a warn-only 120s per-fixture budget on main, standalone, and single-threaded legs.Test/runtime trimming:
RandomTestBase.NextNoiseMapuses fixed representative map sizes in default CI; the weekly Random benchmark lane setsUH_RANDOM_NOISE_MAP_ITERATIONS(and full sample count) for the historical broad sweep. Several editor/runtime tests shrink grids or iteration counts and mark heavier casesStress. Issue templates add package version1.0.1.Contract coverage expands for manual release inputs, tag preparation, and Release Tag retirement (
test-sync-script-contracts.ps1).Reviewed by Cursor Bugbot for commit 85bc88b. Bugbot is set up for automated code reviews on this repo. Configure here.