fix: verify Windows release artifact namespace - #264
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthrough릴리스 아티팩트 검증이 플랫폼별 예상 디렉터리 내부를 검색하도록 변경되었습니다. Windows 디렉터리 이름이 Changes릴리스 아티팩트 검증
Estimated code review effort: 3 (Moderate) | ~25 minutes Merge Risk: ⚪ Minimal · up to The change narrowly aligns Windows artifact verification with the release namespace and adds regression coverage; no actionable merge-blocking risk remains, though the RCA should accurately describe the verifier’s direct-placement checks. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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 |
Pull request was converted to draft
Pull request was converted to draft
Pull request was converted to draft
Preserve the three-file Git worktree feedback/privacy delta while adopting exact #264 release/Test foundation through ancestry. The previous Release failed only in the shared artifact verifier after all platform producers succeeded; this lane does not duplicate that owner. No behavior or gate weakening. Signed-off-by: Seongho Bae <me@seonghobae.me>
Adopt protected main 0e90f9c after #343 without rewriting the release-owner history. The release workflow conflict is intentionally retained on the #264 side for a follow-up causal reconciliation: #264 still owns stable run-id artifact identity and failed-job rerun compatibility, while #343's Draft/closed lifecycle and first-attempt cancellation semantics must be adapted without regressing either contract. No production/release bytes are claimed GREEN by this ancestry-only merge. Signed-off-by: Seongho Bae <me@seonghobae.me>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5c4eedeb6a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
OpenCode could not approve from deterministic current-head evidence because GitHub Checks have failed.
Findings
1. HIGH Current-head GitHub Checks - Fix failed required checks before approval
- Problem: Failed same-head checks remain for
fea9144a15234035fbdf37e9fa914e5fd51efdec. - Root cause: The model-unavailable evidence fallback is allowed only when peer GitHub Checks are complete and clean.
- Fix: Read and fix the failed check logs below, then rerun the current-head checks.
- Regression test: Keep the model-unavailable fallback gated on an empty failed-check rollup.
Failed checks:
- CodeQL PR/CodeQL compatibility analysis (actions): FAILURE (https://github.com/ContextualWisdomLab/disksage/actions/runs/34064276711/job/101581526664)
- CodeQL PR/CodeQL compatibility analysis (javascript-typescript): FAILURE (https://github.com/ContextualWisdomLab/disksage/actions/runs/34064276711/job/101581526763)
- CodeQL compatibility analysis (actions) check run: failure (https://github.com/ContextualWisdomLab/disksage/actions/runs/34064276711/job/101581526664)
- CodeQL compatibility analysis (javascript-typescript) check run: failure (https://github.com/ContextualWisdomLab/disksage/actions/runs/34064276711/job/101581526763)
- Required Noema Review/noema-review: FAILURE (https://github.com/ContextualWisdomLab/disksage/actions/runs/34064275537/job/101581586598)
- noema-review check run: failure (https://github.com/ContextualWisdomLab/disksage/actions/runs/34064275537/job/101581586598)
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Repository file: verify-release-artifacts.sh"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Repository file: verify-release-artifacts.sh"]
R1 --> V1["required checks"]
Evidence --> S2["Workflow: release.yml"]
S2 --> I2["GitHub Actions review job"]
I2 --> R2["Review risk: Workflow: release.yml"]
R2 --> V2["actionlint plus required checks"]
Evidence --> S3["Workflow: test.yml"]
S3 --> I3["GitHub Actions review job"]
I3 --> R3["Review risk: Workflow: test.yml"]
R3 --> V3["actionlint plus required checks"]
Evidence --> S4["Docs: release-artifact-provenance.md (2 files)"]
S4 --> I4["operator or user guidance"]
I4 --> R4["Review risk: Docs: release-artifact-provenance.md (2 files)"]
R4 --> V4["docs review"]
Evidence --> S5["Repository file: package.json"]
S5 --> I5["repository behavior"]
I5 --> R5["Review risk: Repository file: package.json"]
R5 --> V5["required checks"]
Evidence --> S6["CI script: workflow-concurrency-contract.test.mjs"]
S6 --> I6["review and security gate shell path"]
I6 --> R6["Review risk: CI script: workflow-concurrency-contract.test.mjs"]
R6 --> V6["bash -n plus Strix self-test"]
Evidence --> S7["TypeScript/JavaScript: releaseArtifactAllowlistContract.test.ts (12 files)"]
S7 --> I7["TypeScript or JavaScript runtime"]
I7 --> R7["Review risk: TypeScript/JavaScript: releaseArtifactAllowlistContract.test.ts (12 files)"]
R7 --> V7["package test plus coverage"]
Evidence --> S8["TypeScript/JavaScript: vitest.config.ts"]
S8 --> I8["TypeScript or JavaScript runtime"]
I8 --> R8["Review risk: TypeScript/JavaScript: vitest.config.ts"]
R8 --> V8["package test plus coverage"]
OpenCode Review Overview
|
Purpose
Canonical release foundation for DiskSage. This line combines the hosted-runner/Vitest prerequisite inherited from #341 with the release artifact namespace, failed-job rerun, verifier, attestation, and publication repair. Pull requests gain no tag/publication/secret authority; exact-head evidence remains fail closed.
Current exact state — 2026-09-07
main:0e90f9cebadbd7f59606baaec4ca1d2f178c899a;fea9144a15234035fbdf37e9fa914e5fd51efdec;ahead 52 / behind 0, merge base exactly protected main;Release namespace and rerun RCA
The release matrix uses
windows-2022; predecessor verifier logic expectedwindows-latest. #264 aligns the verifier with the matrix, restricts bundle/CLI discovery to each exact platform artifact directory, and runs a real filesystem fixture. Exact cardinality, checksum semantics, non-regular-entry rejection, nonempty payload checks, bundle/CLI requirements, attestation, and publication gates remain intact.A failed-job rerun exposed a second defect: attempt-2 consumers searched attempt-2 names while already-successful attempt-1 producers retained attempt-1 artifacts. Release artifacts, PR/tag consumers, SBOM, and publication therefore use stable
${{ github.run_id }}identity rather thangithub.run_attempt. The current SBOM contract test checks the same production namespace.Test-runtime RCA
A predecessor Test run completed Vitest assertions and then lost worker processes to
ERR_WORKER_OUT_OF_MEMORY. The inherited #341 contract bounds CI Vitest workers to two while retaining the completesrc/**/*.test.tsscope. Later evidence exposed stale attestation/provenance assertions that still requiredgithub.run_attempt; those contracts were changed to the productiongithub.run_idboundary without weakening release gates.Current exact-head evidence
On exact head
fea9144a..., Release34064276679, Test34064276663, Security Scan34064276645, SAST Semgrep34064276692, and Docs34064276602are terminal success. Release jobdownload-artifact-pr-compat101572552331proves the corrected Windows artifact-directory contract on this exact head.CodeQL run
34064276711attempt 3 is now terminal failure on unchangedfea9144a...: language detection101669210677succeeded, while compatibility jobs101669210751(javascript-typescript) and101669210752(python) failed; downstream analysis/publication/verification did not run. The original dispatch-actor allowlist mismatch is repaired in canonicalContextualWisdomLab/.github#1929, so it is no longer the active cause.Canonical
.githubevidence now isolates the remaining owner defect to cross-repository terminal receipt/wake semantics and the two-language legacy compatibility path. The merged.github#2009accepts legacy scalarrequired_job_id/required_languagepayloads, but legacy language dispatches can still share one PR concurrency group withcancel-in-progress: true, allowing a later language dispatch to cancel an earlier one before terminal receipt..github#1902remains the open canonical repair path. Until that owner produces unchanged-head terminal scan/SARIF receipts for both required languages, rerunning #264 again would only repeat an unfixed central failure.A dispatch POST, language-detection success, stale status, predecessor success, or leaf repository source churn cannot satisfy the CodeQL gate.
Inheritance boundary
Release-specific evidence inherited from historical #156 includes Cargo-bin and Tauri-binary-isolation contracts. #156 remains open until its other useful evidence is owner-classified. #187, #205, and #206 inherit this release/Test lineage through ordinary two-parent stack refreshes rather than copying release-owner source.
No self-approval, force-push, destructive rebase, gate weakening, or administrative bypass.