Skip to content

fix: render literal Chocolatey download URLs - #634

Open
rianjs wants to merge 4 commits into
mainfrom
fix/choco-static-urls
Open

rianjs wants to merge 4 commits into
mainfrom
fix/choco-static-urls

Conversation

@rianjs

@rianjs rianjs commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

Render both architecture download URLs as literals in Chocolatey packages so Business Internalizer can resolve them. Keep this staged until the confluence-cli balloon passes licensed internalization and offline install. The shared release workflow must ship first.

@rianjs

rianjs commented Sep 25, 2026

Copy link
Copy Markdown
Contributor Author

TDD assessment: codereview-cli PR #634

Findings

P1 — The passing checks do not exercise the release path that must render the URLs

packaging/chocolatey/tools/chocolateyInstall.ps1 now requires URL_AMD64_PLACEHOLDER and URL_ARM64_PLACEHOLDER (lines 6–7), but the caller remains pinned at .github/workflows/release.yml:24 to b6382514…. That revision's Chocolatey step only replaces the two checksum placeholders (shared workflow lines 381–386); it does not replace either URL placeholder. A release from this PR would therefore pack literal URL_*_PLACEHOLDER values, and Chocolatey Business cannot internalize the intended GitHub assets.

The only repository assertion added in scripts/verify-package-render.sh:79–83 explicitly requires those source placeholders. CI runs Go build/test/lint and identity checks (.github/workflows/ci.yml); it does not run a rendered-package check. Consequently, all current checks pass with the broken release behavior above.

Before this package can publish, merge shared PR open-cli-collective/.github#48, update this caller to its merged immutable SHA, and retain its packed-.nupkg gate. That gate must fail when URL/checksum placeholders or a runtime package-version expression remain after render. This directly covers the approved plan's artifact contract; a source-template grep cannot.

Evidence reviewed

@rianjs
rianjs marked this pull request as ready for review September 25, 2026 15:52

@rianjs-bot rianjs-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated PR Review

Reviewed commit: d6e117c85f16
Profile: codex-rianjs-bot - Posting as: rianjs-bot[bot]

Summary

Reviewer Findings
automation:ci-release 0
policies:conventions 0
structure:repo-health 1
structure:repo-health (1 finding)

Major - packaging/chocolatey/tools/chocolateyInstall.ps1:5

The package-release contract is changed to inject both URL placeholders, but docs/development.md still says the shared Chocolatey job replaces only the two checksum placeholders. That repo-local guide is the durable source developers use for release mechanics, so it will send the next maintainer to an incomplete contract and make shared-workflow updates/error diagnosis harder. Update the Chocolatey section to name URL_AMD64_PLACEHOLDER and URL_ARM64_PLACEHOLDER alongside the checksum placeholders.

Reviewer Coverage

  • automation:ci-release — complete (broad); skipped: none; constraints: Review limited to the assigned CI/release, Chocolatey installer, and package-render verifier changes.
  • policies:conventions — complete (broad); skipped: none; constraints: Shared CLI standards and shared workflow source were not available locally; review used the repository-local development guide and assigned diff.
  • structure:repo-health — complete (broad); skipped: none; constraints: Reviewed the repository-side integration only; the pinned shared reusable workflow implementation is not present in this checkout.
Inspected files (3)
  • .github/workflows/release.yml
  • packaging/chocolatey/tools/chocolateyInstall.ps1
  • scripts/verify-package-render.sh

0 PR discussion threads considered. 0 summarized; 0 resolved.


Completed in 1m 30s | gpt-5.6-terra | cr 0.10.314
Field Value
Model gpt-5.6-terra
Reviewers automation:ci-release, policies:conventions, structure:repo-health
Engine codex_cli · gpt-5.6-terra
Reviewed by cr · rianjs-bot[bot]
Duration 1m 30s wall · 2m 37s compute
Cost unavailable
Tokens 411.3k in / 6.8k out

Per-workstream usage

  • orchestrator-selection — gpt-5.6-terra
    • In: 16.3k
    • Out: 298
    • Cache read: 11.0k
    • Cache create: unavailable
    • Cost: unavailable
    • Duration: 9s
  • automation:ci-release — gpt-5.6-terra
    • In: 149.6k
    • Out: 2.3k
    • Cache read: 123.4k
    • Cache create: unavailable
    • Cost: unavailable
    • Duration: 52s
  • policies:conventions — gpt-5.6-terra
    • In: 88.7k
    • Out: 1.6k
    • Cache read: 70.7k
    • Cache create: unavailable
    • Cost: unavailable
    • Duration: 38s
  • structure:repo-health — gpt-5.6-terra
    • In: 121.0k
    • Out: 2.1k
    • Cache read: 100.1k
    • Cache create: unavailable
    • Cost: unavailable
    • Duration: 49s
  • orchestrator-rollup — gpt-5.6-terra
    • In: 35.8k
    • Out: 482
    • Cache read: 27.1k
    • Cache create: unavailable
    • Cost: unavailable
    • Duration: 7s

$toolsDir = Split-Path -Parent $MyInvocation.MyCommand.Definition

# Checksums injected by release workflow - DO NOT EDIT MANUALLY
# URLs and checksums injected by release workflow - DO NOT EDIT MANUALLY

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The package-release contract is changed to inject both URL placeholders, but docs/development.md still says the shared Chocolatey job replaces only the two checksum placeholders. That repo-local guide is the durable source developers use for release mechanics, so it will send the next maintainer to an incomplete contract and make shared-workflow updates/error diagnosis harder. Update the Chocolatey section to name URL_AMD64_PLACEHOLDER and URL_ARM64_PLACEHOLDER alongside the checksum placeholders.

Reply inline to this comment.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in ffb4fa3: the development guide now names both URL placeholders and both checksum placeholders in the shared release rendering contract.

@rianjs

rianjs commented Sep 25, 2026

Copy link
Copy Markdown
Contributor Author

These are low-value, please approve the PR

@rianjs-bot rianjs-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving after an explicit PR author override request following a prior codereview pass.

piekstra added a commit that referenced this pull request Oct 2, 2026
## Summary

Update only the reusable release workflow pin to `776a11fe7a86dccb73bccb5dbf3824fe2ec8d4af`, which includes the merged canonical Windows archive resolver in open-cli-collective/.github#49.

The failed v0.10.320 release lists `cr.exe` in each Windows archive's `extra.Binaries`, while the identity manifest declares `cr`. The old resolver returned zero matches and emitted empty matrices, preventing the Windows package jobs from starting. The updated resolver matches both architectures and fails loudly for missing assets.

## Evidence

Using the actual `dist` artifact from [the failed release](https://github.com/open-cli-collective/codereview-cli/actions/runs/36931823778):

| Resolver | AMD64 | ARM64 |
|---|---|---|
| Old pinned workflow | zero matches | matrix not produced |
| Updated shared action | `cr_v0.10.320_windows_amd64.zip` | `cr_v0.10.320_windows_arm64.zip` |

Both Chocolatey and WinGet matrices contain those exact published asset names. The shared resolver regression also verifies missing AMD64 assets fail loudly.

Validation: consumer workflow `actionlint` passes; shared resolver, Homebrew modernization/idempotency and alias tests pass; all 28 Chocolatey-push tests pass. The Windows PowerShell renderer was inspected but has not yet run here.

The intervening shared changes were inspected: action dependency pins, Homebrew install-step modernization and staged-path correction, and backward-compatible Chocolatey rendering. Existing package templates without URL placeholders keep their legacy path; this does not apply the static-URL migration staged in #634. Package identity, secrets, triggers, production code, and CI pins remain unchanged.

The fixture/artifact replay proves matrix resolution, not live Windows package publication. A successful subsequent release is still required. No published tag or asset is changed by this PR; workflow-only changes do not automatically mint a new release.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant