Repository navigation
Conversation
Install the Wright CLI from the verified release distribution and cache only the executable under an exact version, OS, and architecture key. Refs #717
Teakowa
approved these changes
Oct 20, 2026
Teakowa
left a comment
Contributor
There was a problem hiding this comment.
Approve (round 1), with non-blocking notes. Refs #717 is correct.
Verified by me
- Local tests:
scripts/test-setup-wright.shpasses 22/22. I mutated it twice. Dropping the sidecar SHA comparison inverify-cachefails "corrupt cached executable is rejected". Neutering the download checksum check fails "checksum mismatch fails". The tests catch both. - Lint:
actionlintonci.ymlis clean.shellcheckreports only an SC2015 info note in the test script. - Cache key: the exact key
setup-wright-v1-<version>-<target>is used in both restore and save, with norestore-keys. Unsupported OS/arch pairs (for example Linux ARM64) fail inresolve. - Order of checks: the SHA-256 is verified before extraction, and the executable is copied to the cache dir and saved only after that. A failed
--versioncheck removes the dir, so a failed install is not saved. - Safety: workflow
permissionsiscontents: read, with no secrets.inputs.versionreaches the shell only throughenv, and the semver regex gates what is written toGITHUB_OUTPUT. Theactions/cachepin55cc834…matches tag v6.1.0. - CI: the three
setup-wright Actionjobs (ubuntu, macOS, Windows) passed.Rust (stable) / Quality,Product integrationandBuild dist (macos-15)were still pending at review time. - Acceptance criteria: the PR body marks what is not verified. Untrusted-PR isolation relies on GitHub cache scoping and is documented, not exercised. Consuming from a release ref is impossible until a release contains the Action.
Non-blocking notes
setup-wright.sh(verify-cacheandinstall):wright --version | grep -Fq "$version"is a substring match.echo 'wright 0.28.10' | grep -Fq 0.28.1matches. The sidecar hash makes accidental reuse unlikely, but the check is weaker than the wrong-version criterion. Anchor it, for examplegrep -Eq "(^|[^0-9.])${version//./\\.}([^0-9.]|$)", and add a test.- An invalid cache entry keeps its key, so every later run downloads again until eviction. This is documented. Consider a follow-up that includes a content discriminator in the key.
- The sidecar detects corruption, not a malicious writer who can alter both files. This is stated in the docs, which is the right boundary for this scope.
- The CI smoke depends on the live
latestrelease and network. A release in flight can fail an unrelated PR. - Unit tests do not run on Windows, so the Windows
.zippath is covered only by the live smoke job.
Not found: the task named docs/mechanical-guards.md and docs/release-engineering.md. Neither exists on this branch, so I could not check against them.
e54-bot
enabled auto-merge (squash)
October 20, 2026 16:15
e54-bot
disabled auto-merge
October 20, 2026 16:26
Collaborator
Author
|
Superseded: the setup-wright Action moved to its own repository, wrightkit/setup-wright (PR #1 there, merged). The implementation, tests and review history carried over. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs wrightkit/setup-wright#3
Summary
.github/actions/setup-wright(version: exact orlatest,cache: on/off) plus one helper script. It installs Wright from the existing R2 release contract (latest/version, versioned archive,.sha256) and putswrightonPATH.actions/cacherestore/save (SHA-pinned), with the exact keysetup-wright-v1-<version>-<target>. No restore prefix.docs/setup-wright-action.md(usage, pinning, cache identity, scope), linked from the README anddocs/README.md.setup-wright Actionjob (path-filtered, wired intoCI result).Contract check
The release contract already publishes everything needed:
wright/latest/version, immutablewright/releases/<version>/archives and.sha256files (docs/release.md, v0.28.0 live). No distribution change.Verification
scripts/test-setup-wright.sh: 22 cases pass locally (hit with zero requests, miss,latestresolution and new-version key, OS/arch/version key separation, corrupt/missing-sidecar/wrong-version cache, checksum mismatch, missing release, unsupported platforms, PATH).actionlintpasses on the workflows;shellcheckis clean on the Action script.resolve/install/verify-cacheagainst the live release on macOS arm64: v0.28.0 downloaded, verified, thenwright checkpassed with a PASS step summary.Not verified
@vX.Y.Z) cannot run until a release contains the Action..zip) was not run locally.Hence
Refs, notFixes.