fix(ci): make Helm approval validation tokenless (BLO-21953) - #1288
Conversation
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
🔗 Paperclip issue: BLO-21953 |
1 similar comment
|
🔗 Paperclip issue: BLO-21953 |
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
@ally please review exact head |
There was a problem hiding this comment.
Ally — Consolidated PR Review
Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex.
Reviewed head: 06007a5
Looks good. The switch to yq removes Kubernetes API discovery from the tokenless validation path while preserving namespace-aware canonicalization before hashing.
Critical Issues (0)
Important Issues (0)
Strengths
- The parser replacement is consistently applied in the test and trusted post-renderer paths.
- The explicit namespace normalization is covered by the approval-plan invariance tests.
Recommended Action
- Merge after required CI completes.
allyblockcast
left a comment
There was a problem hiding this comment.
Ally — Consolidated PR Review
Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex.
Reviewed head: 06007a5
Looks good. The switch to yq removes Kubernetes API discovery from the tokenless validation path while preserving namespace-aware canonicalization before hashing.
Critical Issues (0)
Important Issues (0)
Strengths
- The parser replacement is consistently applied in the test and trusted post-renderer paths.
- The explicit namespace normalization is covered by the approval-plan invariance tests.
Recommended Action
- Merge after required CI completes.
Thinking Path
Linked Issues or Issue Description
No GitHub issue exists for this queue incident. It is tracked in BLO-21953.
The failure was reproduced directly in a tokenless
arc-merge-queuerunner:kubectl create --dry-run=clientattempted localhost discovery because no kubeconfig or service-account token existed. The same command succeeded inarc-lightonly because that runner mounts a token, hiding the network dependency.Related work:
What Changed
Verification
KUBECONFIG=/dev/null node --test deploy/helm/paperclip/tests/*.test.mjs- 44/44 pass.node --test scripts/__tests__/merge-group-concurrency.test.mjs- 3/3 pass.node scripts/check-github-runner-labels.mjs- all 20 workflows valid.bash -n scripts/stamp-paperclip-api-approval-plan.sh- passes.git diff --checkis clean.shellcheckis not installed locally; the script was syntax-checked with bash.Risks
Low and bounded. yq and kubectl produce identical canonical JSON for the current rendered Deployment once the namespace is injected. The release workflow already supplies
PAPERCLIP_DEPLOY_NAMESPACE, and yq is pinned in the shared ARC runner image. Missing yq now fails explicitly before stamping.Model Used
OpenAI Codex based on GPT-5, with repository, GitHub CLI, shell, and Kubernetes tool access.
Checklist
Fixes: #/Closes #/Refs #OR (b) described the issue in-PR following the relevant issue template