Wave-40 C11: blocking signing-readiness gate - #326
Conversation
Promote platform signing-readiness SelfCheck to blocking PR and release evidence via signing-hard.yml, ci.yml/release.yml anchors, and signing_hard.rs. Authenticode and notarization credentials remain unpaid per ADR 0003.
|
Warning Review limit reached
Next review available in: 20 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (6)
✨ Finishing Touches🧪 Generate unit tests (beta)
✨ Simplify code
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.
Code Review
This pull request establishes a hard blocking CI gate for platform signing readiness by updating the checklist documentation, enhancing the PowerShell verification script, and adding a Rust test wrapper to run the self-check hermetically. The review feedback highlights critical regex matching issues in the PowerShell script that could lead to false positives or silently skipped validations, as well as a cross-platform test failure risk when pwsh is missing on local developer machines.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| if ($ciWorkflow -match '(?ms)^ signing-readiness-policy:.*?continue-on-error:\s*true') { | ||
| throw "ci.yml signing-readiness-policy job must be blocking (no continue-on-error)." | ||
| } |
There was a problem hiding this comment.
The regex (?ms)^ signing-readiness-policy:.*?continue-on-error:\s*true is highly prone to false positives. Because .*? matches any character including newlines (due to (?s)), it will match from signing-readiness-policy: all the way to a continue-on-error: true defined in any subsequent job in ci.yml. This will cause the script to throw a false error even if signing-readiness-policy itself does not have continue-on-error: true.
To fix this, extract the job's block first (similar to how it is done for signing-readiness in release.yml) and then check for continue-on-error within that block only.
if ($ciWorkflow -match '(?ms)^ signing-readiness-policy:\s*\r?\n(?<block>(?: .*\r?\n)*?)(?=^ [a-z][\w-]+:|\z)') {
$policyBlock = $Matches['block']
if ($policyBlock -match 'continue-on-error:\s*true') {
throw "ci.yml signing-readiness-policy job must be blocking (no continue-on-error)."
}
}
| if ($release -match '(?ms)^ signing-readiness:\s*\r?\n(?<block>(?: .*\r?\n)*?)(?=^ [a-z][\w-]+:)') { | ||
| $signingBlock = $Matches['block'] | ||
| if ($signingBlock -match 'continue-on-error:\s*true') { | ||
| throw "release.yml signing-readiness job must be blocking (no continue-on-error)." | ||
| } | ||
| } |
There was a problem hiding this comment.
If the signing-readiness job is positioned at the end of release.yml, the lookahead (?=^ [a-z][\w-]+:) will fail to match because there is no subsequent job starting with two spaces and a word. This causes the validation to silently skip checking continue-on-error for this job.
To make this check robust regardless of the job's position in the file, update the lookahead to also match the end of the string (\z).
if ($release -match '(?ms)^ signing-readiness:\s*\r?\n(?<block>(?: .*\r?\n)*?)(?=^ [a-z][\w-]+:|\z)') {
$signingBlock = $Matches['block']
if ($signingBlock -match 'continue-on-error:\s*true') {
throw "release.yml signing-readiness job must be blocking (no continue-on-error)."
}
}
| let output = Command::new("pwsh") | ||
| .args([ | ||
| "-NoProfile", | ||
| "-File", | ||
| script.to_str().expect("utf-8 script path"), | ||
| "-SelfCheck", | ||
| ]) | ||
| .output() | ||
| .unwrap_or_else(|error| panic!("failed to spawn pwsh for SelfCheck: {error}")); |
There was a problem hiding this comment.
Running cargo test on non-Windows systems (like macOS or Linux) where PowerShell Core (pwsh) is not installed will cause this test to panic and fail.
To improve the developer experience for contributors who may not have pwsh installed locally, you can gracefully catch the NotFound error and skip the test (or print a warning) rather than panicking, while still letting it run and block on CI where pwsh is guaranteed to be present.
let output = Command::new("pwsh")
.args([
"-NoProfile",
"-File",
script.to_str().expect("utf-8 script path"),
"-SelfCheck",
])
.output();
let output = match output {
Ok(out) => out,
Err(ref e) if e.kind() == std::io::ErrorKind::NotFound => {
println!("pwsh not found, skipping signing_hard test");
return;
}
Err(error) => panic!("failed to spawn pwsh for SelfCheck: {error}"),
};Co-authored-by: Cursor <cursoragent@cursor.com>
Code Review SummaryStatus: 1 Active Finding (1 prior, re-verified) | Recommendation: Approve with fix Overview
Issue Details (click to expand)WARNING (active, re-verified on changed code)
Prior findings resolved in this incremental pass
Files Reviewed (6 files)
Consider
RecommendationApprove with fix: the two PowerShell regex defects from the prior review are resolved by the line-by-line Previous Review Summary (commit 0478c45)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 0478c45)Status: 3 Active Findings (from prior review) | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING (active, pre-existing)
Files Reviewed (6 files)
Consider
RecommendationApprove with fixes: the two PowerShell regex defects (lines 173/200) can produce false CI failures/non-blocking gates and should be corrected; the Reviewed by hy3:free · Input: 77.1K · Output: 3.8K · Cached: 169K |
Replace the catastrophic multiline regex with line-by-line YAML job extraction so Linux SelfCheck completes within the five-minute gate. Co-authored-by: Cursor <cursoragent@cursor.com>
| let stderr = String::from_utf8_lossy(&output.stderr); | ||
| assert!( | ||
| output.status.success(), | ||
| "signing-readiness-check.ps1 -SelfCheck failed\nstdout:\n{stdout}\nstderr:\n{stderr}" |
There was a problem hiding this comment.
WARNING: cargo test --test signing_hard panics when pwsh is not installed (most Linux/macOS contributor machines), because .unwrap_or_else(|error| panic!(...)) does not special-case io::ErrorKind::NotFound.
The PR description lists cargo test --test signing_hard --locked as a test-plan item and the docs claim it runs in the default ci.yml test suite. For contributors without PowerShell Core this hard-panics instead of skipping. Catch NotFound and return (with a println! skip notice) so local runs degrade gracefully while CI (where pwsh is guaranteed) still blocks.
let output = match Command::new("pwsh")
.args(["-NoProfile", "-File", script.to_str().expect("utf-8 script path"), "-SelfCheck"])
.output()
{
Ok(out) => out,
Err(ref e) if e.kind() == std::io::ErrorKind::NotFound => {
println!("pwsh not found, skipping signing_hard test");
return;
}
Err(error) => panic!("failed to spawn pwsh for SelfCheck: {error}"),
};Reply with @kilocode-bot fix it to have Kilo Code address this issue.


Summary
elease.yml\ \signing-readiness\ job before Release publish
Test plan
Made with Cursor