-
Notifications
You must be signed in to change notification settings - Fork 0
fix(phase4): repair candidate artifact layout and guard Linux acceptance #75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -112,6 +112,16 @@ test("workflow routes no PR/fork code, uses unique labels, fans acceptance out, | |||||||||||||||||||||
| assert.doesNotMatch(workflow, /pull_request_target|workflow_dispatch/); | ||||||||||||||||||||||
| assert.doesNotMatch(workflow.match(/assemble-promotion:[\s\S]*?(?=\n candidate-status:)/)?.[0] || "", /npm (ci|install|run build|run package)/); | ||||||||||||||||||||||
| assert.match(workflow, /Upload exact Linux acceptance evidence\n if: always\(\)/); | ||||||||||||||||||||||
| // Both retained artifacts must be single-rooted under dist/ so consumers find | ||||||||||||||||||||||
| // files at the download root, not nested under dist/ (the layout bug that | ||||||||||||||||||||||
| // broke Linux, Windows, and Phase 2 candidate discovery in one run). | ||||||||||||||||||||||
| const channelUpload = workflow.match(/- name: Retain immutable digest-addressed channel image candidate[\s\S]*?retention-days: 90/)?.[0] || ""; | ||||||||||||||||||||||
| assert.doesNotMatch(channelUpload, /container\//); | ||||||||||||||||||||||
| assert.match(channelUpload, /dist\/1Helm-channel-machine-v1-\*\.oci\.tar/); | ||||||||||||||||||||||
|
Comment on lines
+118
to
+120
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win Assert the complete channel-image metadata contract. The test checks only the OCI tar path. The workflow at Proposed assertions assert.doesNotMatch(channelUpload, /container\//);
assert.match(channelUpload, /dist\/1Helm-channel-machine-v1-\*\.oci\.tar/);
+ assert.match(channelUpload, /dist\/1Helm-channel-machine-v1-\*\.json/);
+ assert.doesNotMatch(channelUpload, /channel-machine\.oci\.sha256/);As per PR objectives, the channel-image artifact must retain its intended single-root layout and metadata. 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||
| const linuxAccept = read("ops/platform-acceptance/linux.sh"); | ||||||||||||||||||||||
| assert.match(linuxAccept, /RUNNER_ENVIRONMENT.*==.*"github-hosted"/); | ||||||||||||||||||||||
| assert.match(linuxAccept, /1helm-standalone/); | ||||||||||||||||||||||
| assert.match(linuxAccept, /refuses to run while port 8123 is already in use/); | ||||||||||||||||||||||
|
Comment on lines
+121
to
+124
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win Assert every guarded host-state path. The test checks only Proposed assertions assert.match(linuxAccept, /RUNNER_ENVIRONMENT.*==.*"github-hosted"/);
- assert.match(linuxAccept, /1helm-standalone/);
+ assert.match(linuxAccept, /\/var\/lib\/1helm-oci-v1/);
+ assert.match(linuxAccept, /\/var\/lib\/1helm-standalone/);
+ assert.match(linuxAccept, /\/opt\/1helm/);
assert.match(linuxAccept, /refuses to run while port 8123 is already in use/);As per PR objectives, Linux acceptance must reject existing 1Helm and standalone host state. 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||
| assert.match(workflow.match(/accept-macos:[\s\S]*?(?=\n accept-windows:)/)?.[0] || "", /if: always\(\)[\s\S]*name: 1helm-macos-acceptance-/); | ||||||||||||||||||||||
| assert.match(workflow.match(/accept-windows:[\s\S]*?(?=\n assemble-promotion:)/)?.[0] || "", /if: always\(\)[\s\S]*name: 1helm-windows-acceptance-/); | ||||||||||||||||||||||
| }); | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
Fail closed when port inspection is unavailable.
If
ssis absent or returns an error, theifcondition is false and the script continues to Line 64, where it performs the root installation. The runner can therefore proceed while port 8123 is occupied. Requiressand handle inspection errors before runninggrep.Proposed fix
As per PR objectives, Linux acceptance must verify that port 8123 is available before root installation.
📝 Committable suggestion
🤖 Prompt for AI Agents