Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
756ccf0
chore(cve): day 1 — dep cascade + rc-chain pins + dead-dep removal (3…
SashaMIT May 28, 2026
cd3b05e
docs(cve): day 1 rebase notes — 35→21 vulns, all 3 CI checks green
SashaMIT May 28, 2026
cecded4
chore(cve): day 2 — wasmtime 17 → 36 + FIFO carrier transport (21→3 v…
SashaMIT May 28, 2026
9aadef7
docs(cve): day 2 rebase notes — 21→3 vulns, all 3 CI checks green again
SashaMIT May 28, 2026
1b87aae
chore(cve): day 3 — axum-server 0.7→0.8 + rustls-pemfile removal (3 v…
SashaMIT May 28, 2026
5894621
docs(cve): day 3 rebase notes — rustls-pemfile closed, 3/4 final state
SashaMIT May 28, 2026
a591fda
docs(cve): day 4 — sign-off doc for v0.3.0 rebase, ready for v0.3.1 r…
SashaMIT May 28, 2026
0b4385e
docs(mac-vz): day 1 rebase notes — baseline only, zero Mac VZ work yet
SashaMIT May 28, 2026
06b91ce
docs(mac-vz): record day 1 baseline CI green (3/3) on PR #3
SashaMIT May 28, 2026
ded1333
feat(mac-vz): day 2 — port conflict-free Mac VZ pieces onto v0.3.0
SashaMIT May 28, 2026
90866a1
chore(mac-vz): port check-linux-untouched.sh + re-baseline gate to de…
SashaMIT May 28, 2026
0338996
fix(elastos-guest): openpty test compiles on macOS (null → null_mut)
SashaMIT May 28, 2026
143acc1
docs(mac-vz): day 2 rebase notes — conflict-free Mac VZ work landed
SashaMIT May 28, 2026
1f18cc0
fix(mac-vz): commit missed Day 2 overlay edits (workspace + StrReplace)
SashaMIT May 28, 2026
f54048c
docs(mac-vz): record day 2 final CI state — 14 v0.3.0 cross-OS test f…
SashaMIT May 28, 2026
f97203f
chore(mac-vz): day 3 rebase — supervisor + vm-provider + carrier-brid…
SashaMIT May 28, 2026
70bd11d
docs(mac-vz): record concrete SUN_LEN root cause for 6 Mac CI failures
SashaMIT May 28, 2026
7fe2a35
feat(mac-vz): day 4 — reconcile carrier_bridge.rs v0.3.0 principal-aw…
SashaMIT May 28, 2026
65f5f05
chore(mac-vz): day 4 — restore carrier-bridge fuzz harness lost in re…
SashaMIT May 28, 2026
401a520
docs(mac-vz): day 4 sign-off — DAY_4.md + Anders handoff + gate re-ba…
SashaMIT May 28, 2026
ec5d731
docs(vz-backend): add follow-up Anders message with open v0.3.1 decis…
SashaMIT May 29, 2026
021f620
docs(mac-vz): record Anders review decisions + reframe as v0.3.2 trac…
SashaMIT May 29, 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
95 changes: 95 additions & 0 deletions .github/workflows/_self-hosted-probe.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Self-hosted Mac runner probe

# Phase 5 Day 6 — heartbeat probe for the self-hosted Vz lane.
#
# Purpose: surface "is a runner matching the labels we need for
# `mac-vz-full-boot` actually online?" without anyone having to
# fight the Settings → Actions → Runners UI. The probe is
# DELIBERATELY tiny — it just claims the same label set, prints
# `sw_vers + uname -a + framework presence`, and exits 0.
#
# Two job pairs:
# - probe-attempt — gated on the `vars.MAC_VZ_FULL_BOOT_ENABLED`
# repo-var so we don't pay for queue-then-timeout
# on every schedule when no runner is online.
# When enabled and a matching runner IS online,
# this completes in seconds.
# - probe-fallback — always runs on `ubuntu-latest`, just records
# the variable's current value so operators can
# see the gate's state in the run history.
#
# Triggers:
# - schedule — every 6 hours; cheap heartbeat.
# - workflow_dispatch — operator-on-demand probe before flipping
# a fragile change.
# - (push/PR not in the trigger list — we don't want every PR
# paying the 6h-budgeted minutes).
#
# Anchors:
# - docs/vz-backend/SELF_HOSTED_RUNNER_SPEC.md
# - docs/vz-backend/CI_RUNBOOK.md § Self-hosted lane

on:
schedule:
# 00:00, 06:00, 12:00, 18:00 UTC — four times per day. The
# cron is intentionally NOT every-hour to keep the public
# runner-minutes budget visible (24 min/day vs. 144 min/day).
- cron: "0 0,6,12,18 * * *"
workflow_dispatch: {}

# Cancel previous probe runs on the same trigger ref so a
# manual dispatch during a scheduled run doesn't double-pay.
concurrency:
group: self-hosted-probe
cancel-in-progress: true

jobs:
probe-attempt:
name: Probe matching runner (self-hosted)
if: ${{ vars.MAC_VZ_FULL_BOOT_ENABLED == 'true' }}
runs-on: [self-hosted, macOS, ARM64, vz-capable]
# Short timeout: if no runner picks the job up within
# 5 minutes, treat it as "no runner online" and surface
# via job status (cancelled / queued past timeout). The
# main `mac-vz-full-boot` job keeps the 30-min budget
# for actual work.
timeout-minutes: 5
steps:
- name: macOS + Vz framework presence
run: |
set -euo pipefail
echo "=== sw_vers ==="
sw_vers
echo
echo "=== uname -a ==="
uname -a
echo
echo "=== Virtualization.framework ==="
if [ -d /System/Library/Frameworks/Virtualization.framework ]; then
echo "PRESENT"
else
echo "::error::Virtualization.framework not found"
exit 1
fi
echo
echo "=== runner labels (from \$RUNNER_NAME) ==="
echo "RUNNER_NAME=${RUNNER_NAME:-<unset>}"
echo "RUNNER_OS=${RUNNER_OS:-<unset>}"
echo "RUNNER_ARCH=${RUNNER_ARCH:-<unset>}"

probe-fallback:
name: Probe gate state (always runs)
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- name: Report repository variable state
run: |
set -euo pipefail
echo "MAC_VZ_FULL_BOOT_ENABLED=${{ vars.MAC_VZ_FULL_BOOT_ENABLED }}"
if [ "${{ vars.MAC_VZ_FULL_BOOT_ENABLED }}" = "true" ]; then
echo "Day-6 full-boot lane is ENABLED."
echo "Check the 'probe-attempt' job above for runner availability."
else
echo "Day-6 full-boot lane is DISABLED (var unset or != 'true')."
echo "Set repository variable MAC_VZ_FULL_BOOT_ENABLED=true to enable."
fi
6 changes: 5 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@ name: CI

on:
push:
branches: [main]
# Run on main and on Vz-backend working branches so Phase 1+ commits
# get verified on Linux without waiting for a PR. The `sash/**`
# pattern covers the current Vz development branch
# (`sash/local-test`) and any future Vz sub-branches.
branches: [main, "sash/**", "vz/**"]
pull_request:
branches: [main]

Expand Down
69 changes: 69 additions & 0 deletions .github/workflows/linux-untouched.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Linux-untouched gate (Vz backend)

# Enforces the Linux-untouched guarantee from docs/vz-backend/PLAN.md:
# Phase 1+ Vz-backend commits must not modify the four protected crates
# (elastos-crosvm, elastos-runtime, elastos-common, elastos-compute).
#
# Runs `scripts/check-linux-untouched.sh` against the Phase 0 baseline
# (commit a65dad3 — the last commit before Vz work began). The script
# itself documents how to adjust the base ref locally.
#
# Anchors:
# - docs/vz-backend/PLAN.md → "Linux-untouched: explicit guarantees"
# - PRINCIPLES.md #10 "One Canonical Path"
# - scripts/check-linux-untouched.sh

on:
push:
branches: ["sash/**", "vz/**"]
pull_request:
branches: [main]
# Phase 5 Day 5 — allow manual one-shot triggers from the
# Actions UI so operators can re-run the gate after rebasing
# without pushing a new commit. Matches the trigger surface
# of the new mac-vz.yml workflow.
workflow_dispatch: {}

jobs:
linux-untouched:
name: Protected crates not modified vs Vz baseline
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# Full history needed for `git merge-base` to find the
# divergence point against the baseline commit.
fetch-depth: 0

- name: Run protected-paths gate
env:
# Re-baselined 2026-05-28 onto Day-4-of-the-v0.3.0-rebase HEAD
# (`65f5f05`), the rebase's final-state commit. Earlier
# baselines:
# - Phase 0 (`a65dad3`): pre-Vz baseline on the original
# sash/local-test branch, unreachable from the rebased
# branch (rooted on PR #2 / v0.3.0 main).
# - Day 2 (`ded1333`): first Mac-VZ-rebase commit on
# sash/local-test-v030; protected-crate cfg-gating and
# the new elastos-vz crate land here.
# - Day 4 (`65f5f05`, this baseline): rebase complete.
# The carrier-bridge fuzz harness is restored, the v0.3.0
# `carrier_invoke` ABI is in carrier_bridge.rs, the
# principal-aware localhost-fs scoping is wired through.
# Day 3+4 commits only touch elastos-server (NOT
# protected), so the gate keeps enforcing "no future
# commit modifies elastos-crosvm / elastos-runtime /
# elastos-common / elastos-compute beyond what the
# rebase already shipped." See
# docs/mac-vz/v030-rebase/DAY_4.md.
VZ_BACKEND_BASELINE: 65f5f05
run: |
set -euo pipefail
# Make sure the baseline commit is reachable in the checkout.
# Shallow clones don't always have it; `fetch-depth: 0` above
# asks for the full history but defend against any quirks.
if ! git cat-file -e "${VZ_BACKEND_BASELINE}^{commit}" 2>/dev/null; then
git fetch origin "${VZ_BACKEND_BASELINE}" || true
fi
chmod +x scripts/check-linux-untouched.sh
scripts/check-linux-untouched.sh "${VZ_BACKEND_BASELINE}"
Loading
Loading