Skip to content

fix(release): publish Linux x64 host-root candidate - #28

Merged
oll4com merged 2 commits into
mainfrom
fix/linux-amd64-hostroot-v2
Jul 28, 2026
Merged

oll4com merged 2 commits into
mainfrom
fix/linux-amd64-hostroot-v2

Conversation

@oll4com

@oll4com oll4com commented Jul 28, 2026 •

Copy link
Copy Markdown
Owner

Publishes run-spaceapp 0.1.15-hostroot.2 for x64 hosts. The release workflow builds only SpaceApp core and CLI for linux/amd64, reuses the verified 0.1.15-hostroot.0 browser manifest without rebuilding it, and keeps the npm release on the personal tag.

Summary by CodeRabbit

  • New Features

    • Added an x64 Linux personal candidate with host-root access support.
    • Publishes matching amd64 core and cli container images while reusing the existing signed browser image.
    • Rejects installation on arm64 systems.
    • Updated package and runtime metadata for the new candidate release.
  • Documentation

    • Updated installation, operations, security, testing, and release guidance for x64 host-root usage.
    • Added recovery and acceptance procedures for the new release workflow.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@oll4com, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 51 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d39a8bf4-b179-4a10-a008-a30bf6900e3c

📥 Commits

Reviewing files that changed from the base of the PR and between 79e4998 and fc89e5c.

📒 Files selected for processing (2)
  • .github/workflows/platform-matrix.yml
  • scripts/tests/public-workflows.test.mjs
📝 Walkthrough

Walkthrough

The PR adds an amd64-core-cli release mode that builds and publishes amd64 core and cli images, reuses a signed browser manifest, verifies published artifacts, updates launcher metadata, and documents the 0.1.15-hostroot.2 x64 host-root candidate.

Changes

amd64 prerelease release flow

Layer / File(s) Summary
Release mode contracts and readiness
.github/workflows/release.yml, scripts/public-release-readiness.mjs, scripts/release-artifact-preflight.mjs, scripts/tests/*
Adds amd64-core-cli, browser source version input, x64-only package checks, host-root compatibility validation, and corresponding preflight and workflow tests.
Container candidate, reuse, and verification
.github/workflows/release.yml, scripts/verify-published-containers.mjs, scripts/tests/*
Builds and scans amd64 core and CLI candidates, republishes immutable images, retags the existing signed browser manifest, and verifies architecture-specific SBOM and provenance evidence.
Launcher metadata and runtime expectations
packages/run-spaceapp/package.json, packages/run-spaceapp/tests/*, scripts/tests/public-package-metadata.test.mjs
Pins the launcher and runtime to 0.1.15-hostroot.2, enables host-root compatibility, restricts the package to x64, and updates install, upgrade, rollback, and metadata expectations.
Prerelease documentation and release notes
CHANGELOG.md, README.md, docs/*, packages/run-spaceapp/README.md
Documents the x64 host-root candidate, amd64 image publication, browser manifest reuse, arm64 rejection, acceptance steps, and recovery guidance.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

  • oll4com/spaceapp#11: Both changes modify published-container verification and attestation handling.
  • oll4com/spaceapp#24: Both update the host-root personal release workflow and launcher prerelease metadata.
  • oll4com/spaceapp#26: Both extend release-mode handling across the release workflow and readiness scripts.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: publishing the Linux x64 host-root candidate.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@oll4com
oll4com merged commit a7be7cb into main Jul 28, 2026
6 of 18 checks passed
@oll4com
oll4com deleted the fix/linux-amd64-hostroot-v2 branch July 28, 2026 05:22

@coderabbitai coderabbitai 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.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release.yml:
- Around line 364-369: Route workflow inputs through step-level env variables to
avoid interpolating them directly in shell commands. In
.github/workflows/release.yml lines 364-369, add BROWSER_SOURCE_VERSION and use
it for --version; lines 507-511, add RELEASE_VERSION and use it in the archive
filename; lines 553-557, add RELEASE_VERSION and BROWSER_SOURCE_VERSION and use
both in the imagetools tags; lines 612-617, add RELEASE_VERSION and use it for
--version.

In `@docs/public-release.md`:
- Around line 73-88: Update the earlier generic publication-order guarantees so
the linux/amd64 and linux/arm64 inclusion and verification requirements apply
only to full releases, or explicitly exempt the amd64-core-cli prerelease mode.
Ensure the documentation does not require nonexistent arm64 artifacts for the
0.1.15-hostroot.2 publication while preserving the existing full-release
requirements.

In `@scripts/tests/public-package-metadata.test.mjs`:
- Around line 56-59: Update the host-root install assertion in the
public-package metadata test to reject any version-pinned run-spaceapp host-root
install command, rather than only version 0.1.15-hostroot.0. Keep the existing
command and --access host-root constraints while generalizing the version match
in the doesNotMatch pattern.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d611d933-97bc-4ce2-a443-907ac49cfa07

📥 Commits

Reviewing files that changed from the base of the PR and between 7e0543f and 79e4998.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (21)
  • .github/workflows/release.yml
  • CHANGELOG.md
  • README.md
  • docs/clean-room-testing.md
  • docs/getting-started.md
  • docs/operations.md
  • docs/public-release.md
  • docs/security-model.md
  • packages/run-spaceapp/README.md
  • packages/run-spaceapp/package.json
  • packages/run-spaceapp/tests/cli.test.mjs
  • packages/run-spaceapp/tests/command-contracts.test.mjs
  • packages/run-spaceapp/tests/package-info.test.mjs
  • scripts/public-release-readiness.mjs
  • scripts/release-artifact-preflight.mjs
  • scripts/tests/public-package-metadata.test.mjs
  • scripts/tests/public-release-readiness.test.mjs
  • scripts/tests/public-workflows.test.mjs
  • scripts/tests/published-container-verification.test.mjs
  • scripts/tests/release-artifact-preflight.test.mjs
  • scripts/verify-published-containers.mjs

Comment on lines +364 to +369
- name: Verify the reusable browser architectures, SBOMs, and provenance
run: >-
node scripts/verify-published-containers.mjs
--version "${{ inputs.browser_source_version }}"
--targets browser
--architectures amd64,arm64

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Route inputs.version / inputs.browser_source_version through env: instead of interpolating them directly into run: scripts. All four new amd64-core-cli steps expand workflow_dispatch inputs directly via ${{ }} inside shell command text; zizmor flags this as template injection at each site. The existing release-policy step in the same file already demonstrates the safe pattern (passing inputs via env: and referencing $VAR).

  • .github/workflows/release.yml#L364-L369: add env: BROWSER_SOURCE_VERSION: ${{ inputs.browser_source_version }} and reference "$BROWSER_SOURCE_VERSION" in the --version argument.
  • .github/workflows/release.yml#L507-L511: add env: RELEASE_VERSION: ${{ inputs.version }} and reference "$RELEASE_VERSION" in the tar archive filename.
  • .github/workflows/release.yml#L553-L557: add env: entries for both RELEASE_VERSION and BROWSER_SOURCE_VERSION and reference $RELEASE_VERSION/$BROWSER_SOURCE_VERSION in the docker buildx imagetools create tags.
  • .github/workflows/release.yml#L612-L617: add env: RELEASE_VERSION: ${{ inputs.version }} and reference "$RELEASE_VERSION" in the --version argument.
🧰 Tools
🪛 zizmor (1.26.1)

[error] 367-367: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)

📍 Affects 1 file
  • .github/workflows/release.yml#L364-L369 (this comment)
  • .github/workflows/release.yml#L507-L511
  • .github/workflows/release.yml#L553-L557
  • .github/workflows/release.yml#L612-L617
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml around lines 364 - 369, Route workflow inputs
through step-level env variables to avoid interpolating them directly in shell
commands. In .github/workflows/release.yml lines 364-369, add
BROWSER_SOURCE_VERSION and use it for --version; lines 507-511, add
RELEASE_VERSION and use it in the archive filename; lines 553-557, add
RELEASE_VERSION and BROWSER_SOURCE_VERSION and use both in the imagetools tags;
lines 612-617, add RELEASE_VERSION and use it for --version.

Source: Linters/SAST tools

Comment thread docs/public-release.md
Comment on lines +73 to +88
## Personal x64 core and CLI prerelease

For `0.1.15-hostroot.2`, dispatch `release.yml` from `main` with:

- `version`: `0.1.15-hostroot.2`;
- `runtime_version`: `0.1.15-hostroot.2`;
- `browser_source_version`: `0.1.15-hostroot.0`;
- `release_mode`: `amd64-core-cli`;
- `npm_tag`: `personal`.

The workflow builds and scans only `core` and `cli` for `linux/amd64`. It
copies the already verified `.0` browser manifest to the new runtime tag
without rebuilding the browser. It verifies amd64 SBOM and provenance evidence
for all three published tags before npm OIDC publication. The npm package is
x64-only and enables host-root because the launcher and runtime versions match.
Do not change `latest` or `next`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Scope the generic publication guarantees to avoid contradicting amd64-core-cli.

The earlier publication-order section says every image includes linux/amd64 and linux/arm64 and that both architectures are verified, while this mode intentionally publishes and verifies only amd64 core/cli artifacts. Clarify that those guarantees apply only to full releases, or explicitly document the exception so operators do not reject a valid .2 publication or expect nonexistent arm64 tags.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/public-release.md` around lines 73 - 88, Update the earlier generic
publication-order guarantees so the linux/amd64 and linux/arm64 inclusion and
verification requirements apply only to full releases, or explicitly exempt the
amd64-core-cli prerelease mode. Ensure the documentation does not require
nonexistent arm64 artifacts for the 0.1.15-hostroot.2 publication while
preserving the existing full-release requirements.

Comment on lines +56 to +59
assert.doesNotMatch(
content,
/npx --yes run-spaceapp@0\.1\.15-hostroot\.0 install --access host-root/,
path

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Reject every pinned host-root install command.

This only blocks 0.1.15-hostroot.0; a stale run-spaceapp@0.1.15-hostroot.1 install --access host-root instruction would still pass. Reject version-pinned host-root commands generically in these active docs.

Proposed fix
-      /npx --yes run-spaceapp@0\.1\.15-hostroot\.0 install --access host-root/,
+      /npx --yes run-spaceapp@\d+\.\d+\.\d+-hostroot\.[\w.-]+ install --access host-root/,
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
assert.doesNotMatch(
content,
/npx --yes run-spaceapp@0\.1\.15-hostroot\.0 install --access host-root/,
path
assert.doesNotMatch(
content,
/npx --yes run-spaceapp@\d+\.\d+\.\d+-hostroot\.[\w.-]+ install --access host-root/,
path
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/tests/public-package-metadata.test.mjs` around lines 56 - 59, Update
the host-root install assertion in the public-package metadata test to reject
any version-pinned run-spaceapp host-root install command, rather than only
version 0.1.15-hostroot.0. Keep the existing command and --access host-root
constraints while generalizing the version match in the doesNotMatch pattern.

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