You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Automate binary releases for both probe packages through CI and release-please, so downloads no longer depend on manually versioning and tagging the placement tool or building platform probes from a checkout.
Manage both probes with UTC YYYY.MMDD.N versions, including dependency-triggered updates, while retaining ordinary library semver behavior.
Preserve placement-probe-v* tags and existing placement EXE downloads. Add x64 and ARM64 platform-probe ZIPs containing every Cargo binary target, documentation, build identity, and SHA-256 sidecars.
Build with default features, reject the test-only renderer oracle, and verify executable census, PE architecture, and tag/version agreement.
Restrict binary artifact uploads and attestations to tag-push runs. PR and manual-dispatch runs remain validation-only, even when dispatch targets a tag. Preserve release-please release notes when attaching assets.
Keep both packages off crates.io; extend publication-route checks and align distribution documentation. Complete PB-1.
Both probe release bumps are intentional: the shared automation adds a release route for each package. No registry-library package path is changed.
Validation
Passed locally:
Locked npm installation and release-tooling tests, including real Rust release candidates, dependency-triggered calendar and lockfile updates, ZIP round trips, and rejected unsafe workflow configurations.
Actual x64 and ARM64 platform-probe archive builds.
Both probe test suites and doctest phases.
Rust formatting, Clippy with warnings denied, and default-workspace debug/release checks.
Publication-route, workflow-reference, release-scope checker tests, encoding, and staged whitespace checks.
Debug builds emitted non-failing incremental-cache access notes. Hosted token permissions, asset uploads, and attestation issuance have not yet been exercised by this change.
Release Sequence
After merging this PR, release-please proposes the probe versions and changelogs. Merging that release PR creates tags that trigger binary publication. Preserve the feat: subject when squash-merging. RELEASE_PLEASE_TOKEN must be able to create tags that trigger downstream workflows; no release or tag was created locally.
Manage both binary-only probe packages through release-please with UTC
calendar versions for direct and dependency-triggered updates. Preserve
placement's tag prefix and executable assets; package every platform probe
for x64 and ARM64 with default features, checksums and build identity.
Only tag-push runs upload binaries or mint attestations. Preserve generated
release notes and keep both packages off crates.io. Extend publication-route
checks, exercise the real release-please Rust/Cargo implementations and ZIP
contents, and align the distribution docs with the new routes.
Release scope: both probe bumps are intentional. The shared automation is
the feature for both packages, not a docs-only ride-along; no registry library
path is touched. Sweep: corrected checkout-only, manual-version and release-
scope claims across both probes' docs, manifest comments, rustdoc and tools.
Validated npm ci/tests, both platform archive architectures, probe suites and
doctest phases, cargo fmt/clippy, default debug/release checks, publication
routes, workflow references, scope-checker tests and encoding. Hosted upload
and attestation require the eventual tag-push run; no release is created here.
Completed item: PB-1: Automate both probe binary releases through CI and release-please.
The reason will be displayed to describe this comment to others. Learn more.
Copilot review overview
🟡 Changes recommended
There is at least one confirmed correctness issue (Windows path case-sensitivity in .scratch validation) and a documented version-format mismatch that should be corrected before merge.
Get a fresh assessment by requesting another Copilot review.
This PR integrates both probe packages (windows-placement-probe and windows-platform-probes) into release-please and adds CI workflows + Node-based tooling to produce and attach calendar-versioned, architecture-specific binary artifacts (EXEs and ZIPs) on tag pushes, while keeping probes off crates.io.
Changes:
Add custom release-please wrapper/versioning strategy (probe-calver) and register both probe packages in release-please-config.json.
Introduce Node-based release/policy tooling under .github/release/ (calver, packaging, publication-guard checks) and run it in CI.
Add/adjust GitHub Actions workflows to validate on PRs but only upload/attest/publish on probe tag pushes; update docs/design notes to reflect the binary-only distribution route.
File
Description
tools/check-publishable.ps1
Excludes binary-only probe packages from crates.io publishability checks and runs the Node publication-route checker.
tools/check-commit-scope.ps1
Updates documentation/comments to reflect probes being release-please managed (binary releases).
release-please-config.json
Adds both probes as managed packages using probe-calver versioning.
DEVELOPMENT.md
Documents binary-only probe release routes, tags/assets, and local validation commands.
DESIGN-RATIONALE.md
Adds rationale section for probe release automation decision D-PB.
Update error handling for output directory validation and clarify versioning format in documentation.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Guard options.type spread to merge only object overrides
.github/release/release.cjs:27
In registerCalendarVersions, the registerPlugin('cargo-workspace', ...) factory spreads options.type into the options object. options.type can be a string (e.g. 'cargo-workspace'), and spreading a string produces numeric character keys (and is generally unintended), which risks surprising behavior if release-please starts validating/iterating option keys more strictly. Guard the spread so only object-type overrides are merged.
Validate required files before invoking publication checks
tools/check-publishable.ps1:58
binary-packages.json and check-publication.cjs are now required inputs for this script, but they are read/invoked before any Test-Path validation. If either file is missing (or node fails to execute), this will fail with a less actionable exception than the script’s existing "cannot check publication" guard. Consider adding these paths to the required-file check before invoking/reading them.
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
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.
Summary
Automate binary releases for both probe packages through CI and release-please, so downloads no longer depend on manually versioning and tagging the placement tool or building platform probes from a checkout.
YYYY.MMDD.Nversions, including dependency-triggered updates, while retaining ordinary library semver behavior.placement-probe-v*tags and existing placement EXE downloads. Add x64 and ARM64 platform-probe ZIPs containing every Cargo binary target, documentation, build identity, and SHA-256 sidecars.Both probe release bumps are intentional: the shared automation adds a release route for each package. No registry-library package path is changed.
Validation
Passed locally:
Debug builds emitted non-failing incremental-cache access notes. Hosted token permissions, asset uploads, and attestation issuance have not yet been exercised by this change.
Release Sequence
After merging this PR, release-please proposes the probe versions and changelogs. Merging that release PR creates tags that trigger binary publication. Preserve the
feat:subject when squash-merging.RELEASE_PLEASE_TOKENmust be able to create tags that trigger downstream workflows; no release or tag was created locally.