DrumsBench

Experiments / EXP-006

Shared-OS spike in an authoring sandbox, namespaced Xvfb tree launched and swept, CRIU absent

Check whether a private-namespace Xvfb plus xterm plus probe-app tree can be launched, probed through the process table and the X wire, and swept clean, as the first gate of a shared-OS checkpoint diagnostic.

preliminaryA real observation that needs more runs, a positive control, or an independent check before it counts.
Date
2026-10-25
Hypothesis
A shared-kernel slot built from unshare and CRIU can be launched, checkpointed, restored twice in isolation and reset; this run could only test the launch half.
Arms
sharedos-spike
Hardware
unknown container (authoring sandbox), no cgroup limits
OS
Linux (sandbox; kernel not recorded in the report)
Workload
Xvfb :170 at 640x480x24 + xterm + stateful probe app in one unshare pid/mount/net/ipc/uts tree (not OSWorld)
Code
claude/ecstatic-archimedes-456go6 at 43ecfd2
Evidence
benchmark/sharedos_spike/reports/sandbox-run/report.json
benchmark/sharedos_spike/reports/sandbox-run/artifacts/00-before-dump.png
benchmark/sharedos_spike/reports/sandbox-run/artifacts/01-before-dump-again.png
Limitation
CRIU was absent, so no dump, restore, isolation or reset gate ran; this is a launch-and-teardown check in an unidentified sandbox, not a shared-OS checkpoint result.

In one paragraph

This is the only measured artifact on the whole claude/ecstatic-archimedes-456go6 branch. A small diagnostic (sharedos_spike) launches one process tree in private pid, mount, net, ipc and uts namespaces, running an Xvfb display, an xterm and a tiny stateful probe app, then runs a list of gates: prerequisites, launch, live-state probe, CRIU dump, restore of live process state, restore of X state, isolation between two restored copies, reset, GUI pixel review and cleanup. It ran once, in the authoring sandbox, where CRIU is not installed. Launch, live-state probe and cleanup passed (measured). Prerequisites failed because criu was missing. Every checkpoint-related gate was NOT_RUN, the GUI gate is REVIEW_REQUIRED, and the report's own overall verdict is all_gates_pass: false. It shows that the tree can be started and torn down cleanly. It shows nothing about checkpointing, and it is not the Drums runtime and not OSWorld.

Setup

The spike is a reduced-scope, public-mechanism diagnostic. The report labels itself: "SHARED-OS RUNTIME SPIKE - reduced-scope Xvfb diagnostic; not OSWorld, not Drums, not a cost or training claim".

What ran

One invocation of python -m sharedos_spike diagnose in the sandbox, committed first at d1bf58f (2026-10-25 05:31 UTC) and re-added in its committed form at 43ecfd2 (05:43 UTC). The run launched the tree (host pid 461 for the namespace init), queried the probe app twice, grabbed the framebuffer twice, read the process table and the X window list, then swept every process carrying the marker.

Results

Shared-OS spike gate diagnostic, authoring sandbox, CRIU absent preliminary2026-10-25 · authoring sandbox

MetricValueUnitnNote
gate: prerequisites0 / 1gateFAIL: criu absent, dump/restore gates cannot run (launch/probe gates still run)
gate: launch1 / 1gatePASS: tree up, namespace init pid 461 on the host
gate: live_state_probe1 / 1gatePASS: baseline state readable (GUI still needs human PNG review)
live-state probe checks true8 / 8checkstoken is 32 hex, counter advances, raw PNG captured, framebuffer stable when idle, Xvfb process for display, xterm with title and marker, probe app process, X server lists one mapped window with that title
gate: dump0 / 0gateNOT_RUN: criu absent
gate: restore_live_process0 / 0gateNOT_RUN: criu absent
gate: restore_x_state0 / 0gateNOT_RUN: criu absent
gate: isolation0 / 0gateNOT_RUN: criu absent
gate: reset0 / 0gateNOT_RUN: criu absent
gate: gui_pixel_review0 / 1gateREVIEW_REQUIRED: a human must look at the raw PNGs and record a decision with review.py; no review file is on the branch
gate: cleanup1 / 1gatePASS: no marker-identified process remains; pid 461 terminated, none force-killed, none remaining
all_gates_pass0booleanfalse: the report's own overall verdict
probe app counter, first query7countin-memory token 4d68be3d... returned, pid 7 inside the namespace
probe app counter, second query16countsame token, counter advanced, so the app was live between queries
framebuffer width640pxXvfb :170, 640x480x24
framebuffer height480px
distinct colours in the framebuffer2coloursblack root, white xterm; both PNGs byte-identical (same png_sha256)
processes inside the namespace6processestree init (pid 1), Xvfb, xterm, probe app, sleep, and the process-table probe itself
mapped top-level X windows1windowstitle sharedos-spike, viewable true, read through the X wire

Host: unknown container, CRIU absent, Linux (sandbox). The report records no hostname, kernel or timestamp. No cgroup CPU or memory limits were applied.. Workload: One unshare pid/mount/net/ipc/uts tree running Xvfb :170 at 640x480x24, one xterm, one in-memory stateful probe app. Not OSWorld, not the Drums runtime.. Method: python -m sharedos_spike diagnose: each gate is PASS, FAIL, NOT_RUN or REVIEW_REQUIRED with raw command output; a gate whose prerequisite failed is NOT_RUN, never PASS. Rows marked 0 / 0 did not run.. Source: branch claude/ecstatic-archimedes-456go6, commit 43ecfd2: benchmark/sharedos_spike/reports/sandbox-run/report.json; benchmark/sharedos_spike/reports/sandbox-run/artifacts/00-before-dump.png; benchmark/sharedos_spike/reports/sandbox-run/artifacts/01-before-dump-again.png.

  • Authoring sandbox, not identified: the report carries no hostname, kernel or timestamp. CRIU was not installed, so no checkpoint or restore ran.
  • Not OSWorld and not the Drums runtime: the workload is Xvfb plus xterm plus a probe app with no guest kernel, systemd, GNOME, Nautilus or OSWorld guest server.
  • Namespaces isolate pid/mount/net/ipc/uts only: no user namespace, no cgroup CPU or memory limits, so equal guest resources with the VM baseline is not satisfied.
  • Only /tmp is private; the rest of the filesystem is the host's with no per-attempt copy-on-write disk.
  • The GUI gate is REVIEW_REQUIRED: pixel hashes are not evidence of application state and no human review file exists on the branch.
  • Command latencies in the report (0.004 s to 0.16 s) are nsenter wrapper timings in a sandbox, not workload timings, and are left out of this table.

The gate verdicts, quoted exactly from report.json:

Measured details behind the PASS gates: the probe app returned the same token on both queries with the counter at 7 and then 16, so the app was alive and advancing between queries. The process table inside the namespace listed pid 1 (the tree init), pid 3 Xvfb, pid 6 xterm, pid 7 the probe app, pid 9 a sleep and pid 14 the process-table probe itself. The X server listed exactly one mapped top-level window, id 2097164, title sharedos-spike, viewable.

What the PNG shows

Both PNGs are byte-identical (same png_sha256, distinct_colors: 2, 640x480). We opened one: a black Xvfb root with a single white xterm window in the top-left corner reading SHAREDOS-SPIKE spike-b114cf4c2f15 and a cursor block. That matches the branch README's description. By the tool's own rule, a pixel hash is not evidence of application state (a black screen with a cursor would pass it), which is why the GUI gate stays REVIEW_REQUIRED. No review file exists on the branch, so the GUI gate is still open.

What it does not show

No CRIU checkpoint or restore was taken. The branch README says it plainly for this spike: "No CRIU checkpoint or restore has ever been executed by this work." Nothing here says whether an in-memory token survives a restore, whether the framebuffer comes back, whether two restored copies are isolated from each other, or whether a reset by re-restore works. Those are the questions the spike was built to answer, and none of them was reached. There is also no resource limit on the tree, so nothing about cost or matched resources is measured.

Failures and surprises

The prerequisites gate failed on the missing criu binary, which was expected in the authoring sandbox. The surprise is in the branch's own history: later documents on the same branch describe operator CRIU dumps and restores on other code (see EXP-008, EXP-009 and EXP-010), none with an artifact, while this spike, the only measured run, never touched CRIU.

Limitations

Reproduce

From the branch checkout, in benchmark/, on a Linux host with root, unshare, nsenter, Xvfb, xterm and CRIU installed:

python -m sharedos_spike diagnose --plan                         # prints the commands, executes nothing
python -m sharedos_spike diagnose --work NEW_DIR --out report.json
python -m sharedos_spike.review report.json REVIEW OUT            # human PNG decision, must cite every PNG sha256

Exit code 0 means every gate passed including the review; 3 means only the human review is outstanding; 1 anything else. Running it where CRIU is present is the next real step; the branch expects "a FAIL on a real host is plausible and would be informative" because of unix sockets and X connections.

Sources