Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
f4d98ba
test(microsandbox): add shared external provider parity baseline
skevetter Oct 8, 2026
5f69cdc
chore: merge latest main for runtime parity
skevetter Oct 8, 2026
475ebf8
chore: merge latest main for runtime parity
skevetter Oct 8, 2026
d89c9e5
chore: merge latest main for runtime parity
skevetter Oct 8, 2026
034cc98
chore: merge latest main for runtime parity
skevetter Oct 8, 2026
47ce498
fix(runtime): preserve workspace reuse and SSH stderr
skevetter Oct 8, 2026
88e59cf
chore: merge latest main for runtime parity
skevetter Oct 9, 2026
0b29a94
chore: merge latest main for runtime parity
skevetter Oct 9, 2026
7a1ef98
fix(runtime): avoid waiting for detached backend sessions
skevetter Oct 9, 2026
4aa47af
fix(devcontainer): refresh legacy managed workspace identity
skevetter Oct 9, 2026
f3abfc3
chore: merge latest main for runtime parity
skevetter Oct 9, 2026
81f06e3
chore: merge latest main for runtime parity
skevetter Oct 9, 2026
27af9fc
chore: merge latest main for runtime parity
skevetter Oct 9, 2026
99f3cbb
test(microsandbox): pin stopped-state provider fix
skevetter Oct 9, 2026
d83777d
Merge remote-tracking branch 'origin/main' into codex/microsandbox-pa…
skevetter Oct 9, 2026
fbafd4f
fix(ssh): preserve raw stdout in container tunnels
skevetter Oct 9, 2026
8115758
fix(runtime): honor negotiated reuse preflight support
skevetter Oct 9, 2026
f618d39
fix(workspace): preserve existing state on binary preparation failure
skevetter Oct 9, 2026
b2a59ef
fix(workspace): retain reused records after initialization failures
skevetter Oct 9, 2026
f10d2f2
fix(workspace): discard newly created partial source on failure
skevetter Oct 9, 2026
e1e0627
fix(workspace): separate content ownership from source reuse
skevetter Oct 9, 2026
96ca0de
Merge remote-tracking branch 'origin/main' into codex/microsandbox-pa…
skevetter Oct 9, 2026
6b8c1ad
fix(workspace): clean failed local-source metadata safely
skevetter Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 27 additions & 22 deletions .github/workflows/pr-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -639,6 +639,8 @@ jobs:
install-kind: false
requires-secret: false
install-microsandbox: true
test-timeout: 1200s
job-timeout-minutes: 25

# Snapshot tests

Expand Down Expand Up @@ -943,35 +945,36 @@ jobs:
--crun-path /usr/local/bin/crun \
--bootstrap-timeout 270s

- name: get microsandbox latest version
- name: cache microsandbox release bundle (Linux)
if: matrix.install-microsandbox == true && runner.os == 'Linux'
id: msb-version
run: |
version=$(curl -fsSL https://api.github.com/repos/superradcompany/microsandbox/releases/latest | grep '"tag_name"' | head -1 | sed 's/.*"tag_name":[[:space:]]*"\([^"]*\)".*/\1/')
echo "version=$version" >> "$GITHUB_OUTPUT"

- name: cache microsandbox (Linux)
if: matrix.install-microsandbox == true && runner.os == 'Linux'
id: msb-cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: |
~/.microsandbox
~/.local/bin/msb
~/.local/bin/microsandbox
key: ${{ runner.os }}-${{ runner.arch }}-microsandbox-${{ steps.msb-version.outputs.version }}

- name: Install microsandbox (Linux)
if: matrix.install-microsandbox == true && runner.os == 'Linux' && steps.msb-cache.outputs.cache-hit != 'true'
run: |
curl -fsSL https://install.microsandbox.dev | sh
path: ${{ runner.temp }}/microsandbox-linux-x86_64-v0.7.7.tar.gz
key: ${{ runner.os }}-${{ runner.arch }}-microsandbox-bundle-v0.7.7

- name: configure microsandbox (Linux)
- name: install checksum-pinned microsandbox (Linux)
if: matrix.install-microsandbox == true && runner.os == 'Linux'
timeout-minutes: 5
run: |
archive="${RUNNER_TEMP}/microsandbox-linux-x86_64-v0.7.7.tar.gz"
if [ ! -f "$archive" ]; then
curl -fsSL --retry 3 -o "$archive" \
https://github.com/superradcompany/microsandbox/releases/download/v0.7.7/microsandbox-linux-x86_64.tar.gz
fi
echo "b3cc4a5e3f52dfdd938a6f67ac4a9a959ddfe304bab56de4964044b8613f01bb $archive" | sha256sum -c -
staging="$(mktemp -d)"
trap 'rm -rf "$staging"' EXIT
tar -xzf "$archive" -C "$staging"
mkdir -p "$HOME/.microsandbox/bin" "$HOME/.microsandbox/lib" "$HOME/.local/bin"
install -m 755 "$staging/msb" "$HOME/.microsandbox/bin/msb"
install -m 644 "$staging/libkrunfw.so.5.6.1" "$HOME/.microsandbox/lib/"
ln -sf libkrunfw.so.5.6.1 "$HOME/.microsandbox/lib/libkrunfw.so.5"
ln -sf libkrunfw.so.5 "$HOME/.microsandbox/lib/libkrunfw.so"
ln -sf "$HOME/.microsandbox/bin/msb" "$HOME/.local/bin/msb"
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
# The e2e test skips gracefully if KVM is unavailable on the runner.
"$HOME/.local/bin/msb" doctor || true
"$HOME/.local/bin/msb" --version
sudo test -r /dev/kvm
sudo test -w /dev/kvm

- name: remove docker
if: matrix.label == 'docker-install' && (matrix.requires-secret == false || needs.can-read-secret.outputs.secret-set == 'true')
Expand Down Expand Up @@ -1011,6 +1014,7 @@ jobs:
GH_CREDENTIAL_USERNAME: x-access-token
TEST_TIMEOUT: ${{ matrix.test-timeout || '1500s' }}
FLAKE_ATTEMPTS: ${{ matrix.flake-attempts || '1' }}
DEVSY_REQUIRE_MICROSANDBOX: ${{ matrix.install-microsandbox == true && 'true' || 'false' }}
run: |
if [ "${{ runner.os }}" == "Linux" ]; then
if [ "${{ matrix.install-podman || '' }}" = "rootless" ]; then
Expand All @@ -1027,6 +1031,7 @@ jobs:
./e2e.test -test.v -ginkgo.v -test.timeout "${TEST_TIMEOUT}" -ginkgo.fail-on-empty -ginkgo.flake-attempts="${FLAKE_ATTEMPTS}" --ginkgo.label-filter="${{ matrix.label }}"
else
sudo \
DEVSY_REQUIRE_MICROSANDBOX="${DEVSY_REQUIRE_MICROSANDBOX}" \
GH_USERNAME="${GH_USERNAME}" \
GH_ACCESS_TOKEN="${GH_ACCESS_TOKEN}" \
GH_CREDENTIAL_USERNAME="${GH_CREDENTIAL_USERNAME}" \
Expand Down
2 changes: 1 addition & 1 deletion THIRD_PARTY_LICENSES.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ To regenerate this file after changing dependencies, run `task cli:licenses`.
| [github.com/devsy-org/agentapi](https://github.com/devsy-org/agentapi) | `v1.0.1` | MPL-2.0 |
| [github.com/devsy-org/api](https://github.com/devsy-org/api) | `v1.1.0` | MPL-2.0 |
| [github.com/devsy-org/apiserver](https://github.com/devsy-org/apiserver) | `v1.5.4` | Apache-2.0 |
| [github.com/devsy-org/devsy-runtime-sdk](https://github.com/devsy-org/devsy-runtime-sdk) | `v1.4.0` | MPL-2.0 |
| [github.com/devsy-org/devsy-runtime-sdk](https://github.com/devsy-org/devsy-runtime-sdk) | `v1.5.2` | MPL-2.0 |
| [github.com/devsy-org/ssh](https://github.com/devsy-org/ssh) | `v1.2.9` | BSD-3-Clause |
| [github.com/distribution/reference](https://github.com/distribution/reference) | `v0.6.0` | Apache-2.0 |
| [github.com/docker/cli](https://github.com/docker/cli) | `v29.8.0+incompatible` | Apache-2.0 |
Expand Down
Loading
Loading