Skip to content

feat(rust-ci): add bubblewrap 0.13.1 for TinyBox jails - #33

Merged
senamakel merged 2 commits into
mainfrom
rust-ci-bwrap
Oct 19, 2026
Merged

senamakel merged 2 commits into
mainfrom
rust-ci-bwrap

Conversation

@senamakel

@senamakel senamakel commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Why

OpenHuman's registry-path MCP tests are ignored on Linux in EX63 (e.g. tests/raw_coverage/tool_registry_approval_raw_coverage_e2e.rs:410) because TinyBox needs bubblewrap >= 0.8 (--disable-userns). This image is Ubuntu 22.04, which ships bubblewrap 0.6.1, so TinyBox reports isolation None and refuses untrusted servers.

What

  • New bwrap-build stage builds bubblewrap 0.13.1 (meson/ninja, libcap-dev) from the upstream release tarball, pinned and verified against sha256 0e85c870...17c4d (matches the release page).
  • Only the binary is copied into the final image at /usr/bin/bwrap: root:root, 0755, not setuid. libcap2 added to the runtime apt list.
  • smoke.sh (runs at image build) checks /usr/bin/bwrap ownership/mode, version >= 0.8.0, and --disable-userns in --help.
  • README note. Additive: nothing else in the image changes, so chottu-core and openintents-core are unaffected (the apt bwrap 0.6.1 is not installed either way; /usr/bin/bwrap is now the new build).

Verified locally (linux/amd64)

bwrap stage builds; version 0.13.1; root:root 755; --disable-userns present. As a non-root user under docker run --privileged: bwrap --unshare-all --unshare-user --disable-userns --die-with-parent --ro-bind / / true exits 0, and nested user-ns creation inside is refused (ENOSPC). Note --disable-userns requires --unshare-user explicitly. The full image was not built locally; CI does that.

Not covered

The jail also needs the EX63 microVM guest kernel to allow unprivileged user namespaces; that is separate from this image (see the follow-up in gh-hosted-runner). After merge, the new digest must be bumped in OpenHuman's scripts/ci/self-hosted/guest-image.txt.

Summary by CodeRabbit

  • New Features
    • The Rust CI image now includes Bubblewrap with support for disabling user namespaces, enabling compatible sandboxing workflows when unprivileged user namespaces are enabled in the VM kernel.
  • Bug Fixes
    • Image validation now checks Bubblewrap’s version, required option, ownership, and permissions, catching configuration issues during the build.

senamakel and others added 2 commits October 19, 2026 19:14
Introduces a Docker image for Rust continuous integration and a smoke
test script that verifies the toolchain works inside the built image.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
@tinysweeper

tinysweeper Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Tiny Sweeper review

Tiny Sweeper reviewed this change across 5 lane(s) and found 0 active actionable finding(s). Detailed lane evidence and any incomplete work are listed below.

State: Incomplete
Priority: none
Reviewed head: 1d2c1497c84d
Updated: 2026-10-19T13:45:10Z

Review snapshot

Change surface Files Review signal Count
Production 2 Active findings 0
Tests 0 Noted findings 0
Documentation 1 Resolved findings 0
Configuration 0 Pending checks/questions 7

Completeness: Incomplete
Test assessment: No supported feature-to-test mapping was available; this does not mean tests are absent or passed.

Features

None identified with supported citations.

Tests

No supported feature-to-test mapping was produced. Test execution is not inferred.

  • Unreviewed: tinysweeper/tests

Findings

No active actionable findings.

Could not review: images/rust-ci/Dockerfile, images/rust-ci/README.md, images/rust-ci/smoke.sh, tinysweeper/description, tinysweeper/tests

Before merge

  • Complete the critique review for images/rust-ci/Dockerfile, images/rust-ci/README.md, images/rust-ci/smoke.sh.
  • Complete the security review for images/rust-ci/Dockerfile, images/rust-ci/smoke.sh.
  • Complete the tests review for tinysweeper/tests.
  • Complete the description review for tinysweeper/description.
Agent review details

critique

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered: images/rust-ci/Dockerfile, images/rust-ci/README.md, images/rust-ci/smoke.sh
  • Lane summary: Reviewed 0 files; 0 findings. 3 files could not be reviewed: images/rust-ci/Dockerfile, images/rust-ci/README.md, images/rust-ci/smoke.sh.

security

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered: images/rust-ci/Dockerfile, images/rust-ci/smoke.sh
  • Lane summary: Reviewed 0 files; 0 findings. 2 files could not be reviewed: images/rust-ci/Dockerfile, images/rust-ci/smoke.sh. 1 file was not security-reviewed: images/rust-ci/README.md (prose or tabular data).

tests

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered: tinysweeper/tests
  • Lane summary: No reviewer produced a usable response.

commits

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: Nothing sensitive found in what this pull request commits.

description

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered: tinysweeper/description
  • Lane summary: No reviewer produced a usable response.
Evidence and run details
  • Models: ladder/vectors-oai3
  • Spend: $0.000042
  • Tokens: 0 input · 0 output · 0 cached · 320 embedding
Head State Pass summary
1d2c1497c84d incomplete 0 active finding(s), 0 resolved finding(s) (at 2026-10-19T13:45:10Z)

tinysweeper 0.1.2

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-19T13:44:56.824419Z 1d2c149 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

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

tinysweeper found nothing blocking, but could not review everything, so this is not an approval: images/rust-ci/Dockerfile, images/rust-ci/README.md, images/rust-ci/smoke.sh, tinysweeper/description, tinysweeper/tests.

$0.0000 · 0 in / 0 out · 320 embedded · ladder/vectors-oai3

@tinysweeper tinysweeper Bot added the priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. label Oct 19, 2026
@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: bf727b77-9d28-43f8-aead-15e165d407db
📥 Commits

Reviewing files that changed from the base of the PR and between 6ce1af8 and 1d2c149.

📒 Files selected for processing: 3
  • images/rust-ci/Dockerfile
  • images/rust-ci/README.md
  • images/rust-ci/smoke.sh

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📝 Walkthrough

The Rust CI image now builds Bubblewrap 0.13.1 from a checksum-verified source archive, installs the binary and libcap2, and documents and smoke-tests the binary’s properties and user-namespace requirements.

Changes: Rust CI Bubblewrap

Layer / File(s) Summary
Build and install Bubblewrap
images/rust-ci/Dockerfile
The Dockerfile builds Bubblewrap from a version-pinned source archive after verifying its SHA-256 digest. It copies the binary into the final image with mode 0755 and adds libcap2 to the installed packages.
Document and verify the installed binary
images/rust-ci/README.md, images/rust-ci/smoke.sh
The README documents Bubblewrap’s version, ownership, permissions, and user-namespace requirement. The smoke script checks its path, ownership, mode, minimum version, and --disable-userns support.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~15 minutes

Change: Feature

Merge Risk: ⚪ Minimal · up to 1d2c1

The image provides Bubblewrap with its host user-namespace requirement documented. No concrete merge-blocking issue is established.

### Architecture Summary

Architecture risk: 🔵 Low · up to 1d2c1

The change affects 1 system.

Changed systems: images

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — images (service) was modified; 3 changed files map to changed impact.

Before / after behavior

  • observed — Modified behavior in images/rust-ci/Dockerfile: Adds a Bubblewrap build stage using Ubuntu 22.04. It downloads the version-pinned source archive and verifies its SHA-256 digest before extracting and building it; failures in these commands stop the build. The resulting binary is installed root-owned with mode 0755 for copying into the final image.
  • observed — Modified behavior in images/rust-ci/Dockerfile: Adds libcap2 to the final image’s apt package list; the existing packages remain unchanged.
  • observed — Modified behavior in images/rust-ci/Dockerfile: Adds documentation that the image requires Bubblewrap >= 0.8 and host unprivileged user namespaces, then copies the built binary to /usr/bin/bwrap with mode 0755.
  • observed — Modified behavior in images/rust-ci/README.md: Added documentation of the bubblewrap version, build source, ownership and permissions, required VM user-namespace support, and smoke-test checks.
Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: adding Bubblewrap 0.13.1 to the Rust CI image for TinyBox jails.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
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.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

A rabbit checks the bwrap build,
The checksum matches, neat and skilled.
Root owns the tool, its mode is right,
Namespaces make the jail take flight.
The smoke checks pass; I hop away,
With carrots saved for build-break day.

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

@senamakel
senamakel merged commit 538ebec into main Oct 19, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant