From 133145ffe2fceade50595b7187a47f8cf3ab7f54 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 03:53:00 +0800 Subject: [PATCH 01/37] node: one Sandbox name for every backend (#527 step 5) The Docker create path in sandbox.rs and the native/namespaces path in local.rs each built `[.]-` themselves. Both now call one `sandbox::sandbox_name`, so a native or namespaces Sandbox's directory and a container cannot drift apart. The name is unchanged. Checks: cargo +1.85.1 clippy -p layerfs-node --all-targets -D warnings on macOS and Linux (pass); Linux native_local 7/7 and native_discovery 6/6 (test binaries run in the runtime image, which has Node). Production LOC: 123141 -> 123133 (delta -8) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 81f8758bcf and the staged tree daf651883e; after: core 41405; engine 77504; api 4224; Co-Authored-By: Claude Opus 5.5 --- engine/crates/layerfs-node/src/local.rs | 20 ++------------ engine/crates/layerfs-node/src/sandbox.rs | 33 ++++++++++++++--------- 2 files changed, 22 insertions(+), 31 deletions(-) diff --git a/engine/crates/layerfs-node/src/local.rs b/engine/crates/layerfs-node/src/local.rs index c9cbf3b17..2f631ade5 100644 --- a/engine/crates/layerfs-node/src/local.rs +++ b/engine/crates/layerfs-node/src/local.rs @@ -90,7 +90,7 @@ fn start_claimed( (runtime, backend, executable, store): (Runtime, crate::runtime::Backend, PathBuf, String), ) -> Result, SdkRefusal> { let name = text(args, "project")?; - let sandbox_name = sandbox_name(args, id)?; + let sandbox_name = crate::sandbox::sandbox_name(args, id)?; let paths = runtime.native_paths(&sandbox_name).map_err(failed)?; let path_text = |path: &Path| { path.to_str() @@ -334,22 +334,6 @@ fn native_environment() -> Vec<(String, String)> { vec![("LAYERFS_KERNEL".to_owned(), "fuse".to_owned())] } -/// A local Sandbox's directory name: `-`, or -/// `.-` for a project of a shared Store (#506), -/// the name its container would have. -fn sandbox_name(args: &SdkValue, id: &str) -> Result { - let prefix = args - .get("deploy") - .and_then(|d| d.get_text("containerPrefix")) - .filter(|prefix| !prefix.is_empty()) - .unwrap_or(crate::sandbox::PREFIX); - let project = text(args, "project")?; - Ok(match crate::stores::shared_store(args)? { - Some(store) => format!("{prefix}{store}.{project}-{id}"), - None => format!("{prefix}{project}-{id}"), - }) -} - /// Where this deployment puts Sandbox `id`: /// `/-`, computed from the /// configuration alone, as a record's directory must be. @@ -366,7 +350,7 @@ pub(crate) fn directory(args: &SdkValue, id: &str) -> Result DaemonSetup { /// A container name prefix when the deployment sets none. pub(crate) const PREFIX: &str = "layerfs-"; +/// Sandbox `id`'s name, on every backend: `-`, or +/// `.-` for a project of a shared Store (#506). +/// The prefix is the deployment's (`layerfs-` by default; another LayerFS +/// home on the same Engine sets its own), so `docker ps` says what each +/// container is and whose, and a native or namespaces Sandbox's directory +/// carries the name its container would have. +pub(crate) fn sandbox_name(args: &SdkValue, id: &str) -> Result { + let prefix = args + .get("deploy") + .and_then(|d| d.get_text("containerPrefix")) + .filter(|prefix| !prefix.is_empty()) + .unwrap_or(PREFIX); + let project = text(args, "project")?; + Ok(match crate::stores::shared_store(args)? { + Some(store) => format!("{prefix}{store}.{project}-{id}"), + None => format!("{prefix}{project}-{id}"), + }) +} + /// The container labels of Sandbox `id` of `project`: what it is, whose, /// and which. Saved in its record, so a reopen expects the same. /// A project of a shared Store (#506) also carries `layerfs.store`. @@ -256,20 +275,8 @@ fn start_claimed( } DaemonStore::Postgres(selected) => daemon_setup.postgresql = Some(selected.clone()), } - // The container is `-`: the deployment's prefix - // (`layerfs-` by default; another LayerFS home on the same Engine sets - // its own), so `docker ps` says what each one is and whose. - let prefix = args - .get("deploy") - .and_then(|d| d.get_text("containerPrefix")) - .filter(|prefix| !prefix.is_empty()) - .unwrap_or(PREFIX); - // a project of a shared Store (#506): `.-` let store = crate::stores::shared_store(args)?; - let container_name = match &store { - Some(store) => format!("{prefix}{store}.{name}-{id}"), - None => format!("{prefix}{name}-{id}"), - }; + let container_name = sandbox_name(args, id)?; let docker = Docker::new(docker, ENGINE) .map_err(failed)? .naming(&container_name) From 527c32f62608f51fd2e4bda8ae76537f4da64642 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:01:46 +0800 Subject: [PATCH 02/37] sandbox: the provider alone chooses FUSE or NFS (#527 step 6) The kernel route was named in three places: layerfs-node's native deployment set LAYERFS_KERNEL, the native provider checked and re-set it, and the namespaces backend only checked that the caller had set it to fuse. Now only the provider names it: the native provider sets fuse on Linux and nfs on macOS, the namespaces backend sets fuse when it starts the helper, and a caller that names LAYERFS_KERNEL is refused at Validate (Protocol) before anything is made. layerfs-node passes only the NFS helper overrides. The daemon keeps its check as an assertion: at startup it refuses any LAYERFS_KERNEL other than fuse or nfs, and anything but nfs on macOS, instead of silently serving another route. Tests: native_provider gains the refusal and the route the daemon receives; namespaces_lifecycle no longer passes LAYERFS_KERNEL (it would now be refused). Checks: cargo +1.85.1 clippy -p layerfs-sandbox -p layerfs-daemon -p layerfs-node --all-targets -D warnings on macOS and Linux (pass); native_provider on macOS and on Linux as root (pass); Linux native_local 7/7. namespaces_lifecycle needs root with cgroup v2 and user.max_user_namespaces=0: run in the platform pass's Linux VM. Production LOC: 123133 -> 123145 (delta +12) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 133145ffe2 and the staged tree 8c97c6f536; after: core 41405; engine 77516; api 4224; Co-Authored-By: Claude Opus 5.5 --- .../layerfs-daemon/src/application/config.rs | 1 + .../src/application/filesystem.rs | 17 ++++++++++- engine/crates/layerfs-node/src/local.rs | 12 ++++---- .../src/backend/namespaces/create.rs | 10 ++++--- .../src/backend/native/create.rs | 2 +- .../layerfs-sandbox/src/backend/native/mod.rs | 5 ++++ .../src/backend/native/provider.rs | 8 ++--- .../tests/namespaces_lifecycle.rs | 2 +- .../layerfs-sandbox/tests/native_provider.rs | 29 +++++++++++++++++++ 9 files changed, 70 insertions(+), 16 deletions(-) diff --git a/engine/crates/layerfs-daemon/src/application/config.rs b/engine/crates/layerfs-daemon/src/application/config.rs index 794c8e0c1..9142fea2f 100644 --- a/engine/crates/layerfs-daemon/src/application/config.rs +++ b/engine/crates/layerfs-daemon/src/application/config.rs @@ -10,6 +10,7 @@ use std::{ pub(super) fn read(path: &Path) -> io::Result { secure_process()?; + super::filesystem::check_route()?; let mut file = OpenOptions::new() .read(true) .custom_flags((OFlag::O_NOFOLLOW | OFlag::O_CLOEXEC).bits()) diff --git a/engine/crates/layerfs-daemon/src/application/filesystem.rs b/engine/crates/layerfs-daemon/src/application/filesystem.rs index 21bfcec59..be1252449 100644 --- a/engine/crates/layerfs-daemon/src/application/filesystem.rs +++ b/engine/crates/layerfs-daemon/src/application/filesystem.rs @@ -8,7 +8,8 @@ use layerfs_bridge::daemon_setup::DaemonSetup; use std::{path::Path, sync::Arc}; /// Selects the kernel route: `nfs` serves every mount over loopback NFSv3 -/// (the native route); anything else, or unset, is FUSE. +/// (the native route); `fuse`, or unset, is FUSE. The Sandbox provider that +/// starts the daemon chooses it; [`check_route`] asserts the value. pub const KERNEL_ROUTE: &str = "LAYERFS_KERNEL"; /// Optional helper command lines (`{port}`, `{dir}` replaced) overriding the /// host client's defaults for the NFS route. @@ -22,6 +23,20 @@ pub const NFS_FLUSH: &str = "LAYERFS_NFS_FLUSH"; pub(super) fn nfs_route() -> bool { cfg!(target_os = "macos") || std::env::var(KERNEL_ROUTE).is_ok_and(|route| route == "nfs") } + +/// The provider's route choice, asserted before anything is served: `fuse` +/// or `nfs` (or unset, FUSE), and only `nfs` on macOS. A daemon started with +/// any other value refuses to start rather than serve another route. +pub(super) fn check_route() -> std::io::Result<()> { + match std::env::var(KERNEL_ROUTE).as_deref() { + Err(std::env::VarError::NotPresent) | Ok("nfs") => Ok(()), + Ok("fuse") if !cfg!(target_os = "macos") => Ok(()), + _ => Err(std::io::Error::new( + std::io::ErrorKind::InvalidInput, + "LAYERFS_KERNEL must be fuse or nfs (only nfs on macOS)", + )), + } +} /// NFS serving for the native route, from the protected setup and the /// declared helper overrides. Nothing is mounted until an explicit Attach. pub(super) fn assemble_export(setup: &DaemonSetup) -> std::io::Result>> { diff --git a/engine/crates/layerfs-node/src/local.rs b/engine/crates/layerfs-node/src/local.rs index 2f631ade5..6556dede7 100644 --- a/engine/crates/layerfs-node/src/local.rs +++ b/engine/crates/layerfs-node/src/local.rs @@ -309,12 +309,13 @@ fn launch_options( }) } -/// What a native Sandbox's daemon starts with besides `PATH`: the NFS -/// route, and the mount helper and reference overrides this process was -/// given (`LAYERFS_NFS_*`), so a test host can name its own client. +/// What a native Sandbox's daemon starts with besides `PATH` and the kernel +/// route its provider chooses: the NFS mount helper and reference overrides +/// this process was given (`LAYERFS_NFS_*`), so a test host can name its own +/// client. #[cfg(target_os = "macos")] fn native_environment() -> Vec<(String, String)> { - let mut environment = vec![("LAYERFS_KERNEL".to_owned(), "nfs".to_owned())]; + let mut environment = Vec::new(); for name in [ "LAYERFS_NFS_MOUNT", "LAYERFS_NFS_UNMOUNT", @@ -329,9 +330,10 @@ fn native_environment() -> Vec<(String, String)> { environment } +/// Nothing on Linux: the provider chooses FUSE. #[cfg(target_os = "linux")] fn native_environment() -> Vec<(String, String)> { - vec![("LAYERFS_KERNEL".to_owned(), "fuse".to_owned())] + Vec::new() } /// Where this deployment puts Sandbox `id`: diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs b/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs index 0ad0c7c5c..e01146d13 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs +++ b/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs @@ -9,7 +9,7 @@ use super::{ sandbox::Sandbox, }; use crate::backend::listener; -use crate::backend::native::{search::search_path, Local, LocalPhase, LocalProcess}; +use crate::backend::native::{search::search_path, Local, LocalPhase, LocalProcess, KERNEL_ROUTE}; use crate::backend::{identity, HelperSpec}; use crate::{CommandIdentity, Image, RuntimeError}; use nix::fcntl::OFlag; @@ -93,6 +93,7 @@ pub(crate) fn create( .env_clear() .env("PATH", search_path()) .envs(options.environment.iter().map(|(k, v)| (k, v))) + .env(KERNEL_ROUTE, "fuse") .current_dir(&paths.local.directory) .stdin(Stdio::null()) .stdout(output) @@ -183,15 +184,16 @@ fn start_request( Ok((paths, image)) } -/// The daemon starts with the search path and nothing else but these: no -/// `PATH` override, and only this backend's kernel choice. +/// The daemon starts with the search path, this backend's kernel route +/// (FUSE, which only the provider names) and nothing else but these: no +/// `PATH` or kernel route override. fn check_environment(environment: &[(String, String)]) -> Result<(), RuntimeError> { let invalid = environment.iter().any(|(key, value)| { key.is_empty() || key.contains(['=', '\0']) || value.contains('\0') || key == "PATH" - || (key == "LAYERFS_KERNEL" && value != "fuse") + || key == KERNEL_ROUTE }); if invalid { return Err(RuntimeError::Protocol("namespaces environment")); diff --git a/engine/crates/layerfs-sandbox/src/backend/native/create.rs b/engine/crates/layerfs-sandbox/src/backend/native/create.rs index c81486945..ef0aba767 100644 --- a/engine/crates/layerfs-sandbox/src/backend/native/create.rs +++ b/engine/crates/layerfs-sandbox/src/backend/native/create.rs @@ -125,7 +125,7 @@ impl Local { }) } /// Starts the next daemon with `environment` besides its search path (the - /// native route's `LAYERFS_KERNEL=nfs` and its mount helpers). Nothing + /// kernel route its provider chose and the NFS mount helpers). Nothing /// else of this process's environment reaches it. pub fn environment(mut self, environment: Vec<(String, String)>) -> Self { self.environment = environment; diff --git a/engine/crates/layerfs-sandbox/src/backend/native/mod.rs b/engine/crates/layerfs-sandbox/src/backend/native/mod.rs index 1f1fb4ad8..30155b081 100644 --- a/engine/crates/layerfs-sandbox/src/backend/native/mod.rs +++ b/engine/crates/layerfs-sandbox/src/backend/native/mod.rs @@ -38,3 +38,8 @@ pub use provider::{ NativeLinuxInstance, NativeLinuxProvider, NativeMacosInstance, NativeMacosProvider, }; pub use sandbox::Sandbox; + +/// The daemon's kernel route setting (`fuse` or `nfs`). Only the provider +/// names it, from the platform it serves; a caller that names it is refused +/// (#527 step 6), and the daemon checks the value it receives. +pub(crate) const KERNEL_ROUTE: &str = "LAYERFS_KERNEL"; diff --git a/engine/crates/layerfs-sandbox/src/backend/native/provider.rs b/engine/crates/layerfs-sandbox/src/backend/native/provider.rs index b5e48d991..dd499b513 100644 --- a/engine/crates/layerfs-sandbox/src/backend/native/provider.rs +++ b/engine/crates/layerfs-sandbox/src/backend/native/provider.rs @@ -1,5 +1,5 @@ //! The existing native runtime as a concrete backend; no alternate process engine. -use super::{Local, LocalPhase, LocalProcess, Sandbox}; +use super::{Local, LocalPhase, LocalProcess, Sandbox, KERNEL_ROUTE}; use crate::provider::{ IsolationModel, LaunchFailure, LaunchPhase, LaunchRequest, LocalRecord, MountDriver, ProviderCapabilities, ProviderLaunchOptions, SandboxRecord, SearchPathPolicy, @@ -90,16 +90,16 @@ impl NativeProvider { || key.contains(['=', '\0']) || value.contains('\0') || key == "PATH" - || (key == "LAYERFS_KERNEL" && value != if LINUX { "fuse" } else { "nfs" }) + || key == KERNEL_ROUTE }) { return Err(fail(RuntimeError::Protocol( "native command identity/environment", ))); } - environment.retain(|(key, _)| key != "LAYERFS_KERNEL"); + // The provider alone chooses the kernel route (#527 step 6). environment.push(( - "LAYERFS_KERNEL".into(), + KERNEL_ROUTE.into(), if LINUX { "fuse" } else { "nfs" }.into(), )); let local = self diff --git a/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs b/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs index 4322b38c3..5e6fc846d 100644 --- a/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs +++ b/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs @@ -113,7 +113,7 @@ impl Fixture { startup_timeout: Duration::from_secs(10), options: ProviderLaunchOptions::Namespaces { command_identity: CommandIdentity { uid: 501, gid: 20 }, - environment: vec![("LAYERFS_KERNEL".to_owned(), "fuse".to_owned())], + environment: Vec::new(), store: self.store.join("sealed.sqlite"), image: self.image(), archive: self.archive.clone(), diff --git a/engine/crates/layerfs-sandbox/tests/native_provider.rs b/engine/crates/layerfs-sandbox/tests/native_provider.rs index f81349ead..da125b9b6 100644 --- a/engine/crates/layerfs-sandbox/tests/native_provider.rs +++ b/engine/crates/layerfs-sandbox/tests/native_provider.rs @@ -120,5 +120,34 @@ fn runtime_preserves_partial_launch_owner_and_reopens_the_exact_process() { provider.launch(wrong_options).err().unwrap().phase, LaunchPhase::Validate ); + // #527 step 6: the provider alone names the kernel route. A caller that + // names it is refused before anything is made; the daemon gets the + // platform's route (FUSE on Linux, NFS on macOS). + let mut named = request("named-route"); + if let ProviderLaunchOptions::Local { environment, .. } = &mut named.options { + environment.push(("LAYERFS_KERNEL".into(), "fuse".into())); + } + assert_eq!( + provider.launch(named).err().unwrap().phase, + LaunchPhase::Validate + ); + let route = base.join("route"); + fs::write( + &binary, + format!( + "#!/bin/sh\necho \"$LAYERFS_KERNEL\" > {}\necho LAYERFS_DAEMON_LISTEN 127.0.0.1:40405\nexec /bin/sleep 30\n", + route.display() + ), + ) + .unwrap(); + let mut chosen = provider.launch(request("chosen-route")).unwrap(); + let expected = if cfg!(target_os = "linux") { + "fuse\n" + } else { + "nfs\n" + }; + assert_eq!(fs::read_to_string(&route).unwrap(), expected); + chosen.stop(1).unwrap(); + chosen.delete().unwrap(); fs::remove_dir_all(base).unwrap(); } From c6f5dd227d1903ac2f1f74d4dd14f3bdf9aa7701 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:09:44 +0800 Subject: [PATCH 03/37] sandbox: provider/ into types/, LaunchFailure into the runtime (#527 step 9a) A move, with no behaviour change (F8: provider/ was not a leaf). - provider/capabilities.rs and provider/options.rs move to types/; LaunchPhase joins LaunchRequest in types/options.rs; SandboxId moves to types/mod.rs. - LaunchFailure, which holds a backend Sandbox, moves to backend/runtime.rs. - The From conversions between DockerRecord/SandboxRecord and Docker's SandboxRequest move to backend/docker/container_types.rs, so types/ depends on no backend except through RuntimeError::Docker. - The provider module is gone; its items are re-exported at the crate root (layerfs_sandbox::provider::X becomes layerfs_sandbox::X) and every caller in layerfs-sandbox, layerfs-node and layerfs-api (sources, examples, tests) is updated. Root names do not collide. - Step 6's KERNEL_ROUTE constant moves from native/mod.rs into native/provider.rs (the product boundary guard keeps mod.rs files to declarations); PROVIDERS.md (both copies) describe steps 6 and 9a. No tests deleted. Checks: cargo +1.85.1 clippy -p layerfs-sandbox -p layerfs-node -p layerfs-api -p layerfs-daemon --all-targets -D warnings on macOS and Linux (pass); tools/check_product_boundary.py (PASS); Linux tests (run as root in the runtime image): native_provider 1, native_platform 3, namespaces_protocol 5, namespaces_rootfs 12, docker_provider 7, engine_lifecycle 12, runtime_enum 1, container_labels 3, docker_naming 1, native_local 7, native_discovery 6, layerfs-api sandbox_operations 7 (all pass). tools/test_check_product_boundary.py has one pre-existing error (test_path_violations), the same on the base commit. Production LOC: 123145 -> 123137 (delta -8) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 527c32f626 and the staged tree 635fe05ad8; after: core 41405; engine 77508; api 4224; Co-Authored-By: Claude Opus 5.5 --- engine/crates/layerfs-api/PROVIDERS.md | 4 +- .../examples/sandbox_kernel_mount.rs | 2 +- .../layerfs-api/examples/sandbox_lifecycle.rs | 2 +- .../crates/layerfs-api/src/sandbox/create.rs | 2 +- engine/crates/layerfs-api/src/sandbox/exec.rs | 2 +- .../layerfs-api/src/sandbox/provider.rs | 21 ++++---- .../layerfs-api/tests/provider_ownership.rs | 5 +- .../layerfs-api/tests/sandbox_operations.rs | 2 +- engine/crates/layerfs-node/src/discovery.rs | 4 +- engine/crates/layerfs-node/src/local.rs | 2 +- engine/crates/layerfs-node/src/runtime.rs | 2 +- engine/crates/layerfs-node/src/sandbox.rs | 2 +- engine/crates/layerfs-sandbox/PROVIDERS.md | 22 ++++++--- .../src/backend/docker/container_types.rs | 42 +++++++++++++++- .../src/backend/docker/endpoint.rs | 6 +-- .../src/backend/docker/provider.rs | 4 +- .../src/backend/docker/provider_exec.rs | 2 +- .../crates/layerfs-sandbox/src/backend/mod.rs | 2 +- .../src/backend/namespaces/create.rs | 6 +-- .../src/backend/namespaces/exec.rs | 2 +- .../src/backend/namespaces/provider.rs | 9 ++-- .../src/backend/namespaces/sandbox.rs | 2 +- .../layerfs-sandbox/src/backend/native/mod.rs | 7 +-- .../src/backend/native/provider.rs | 11 +++-- .../src/backend/native/sandbox.rs | 2 +- .../layerfs-sandbox/src/backend/runtime.rs | 26 ++++++++-- engine/crates/layerfs-sandbox/src/lib.rs | 9 ++-- .../layerfs-sandbox/src/provider/launch.rs | 26 ---------- .../layerfs-sandbox/src/provider/mod.rs | 12 ----- .../src/{provider => types}/capabilities.rs | 0 .../crates/layerfs-sandbox/src/types/mod.rs | 12 ++++- .../src/{provider => types}/options.rs | 48 ++++--------------- .../layerfs-sandbox/tests/docker_provider.rs | 6 +-- .../layerfs-sandbox/tests/engine_lifecycle.rs | 2 +- .../tests/namespaces_lifecycle.rs | 6 +-- .../tests/namespaces_protocol.rs | 4 +- .../layerfs-sandbox/tests/native_platform.rs | 4 +- .../layerfs-sandbox/tests/native_provider.rs | 4 +- 38 files changed, 161 insertions(+), 165 deletions(-) delete mode 100644 engine/crates/layerfs-sandbox/src/provider/launch.rs delete mode 100644 engine/crates/layerfs-sandbox/src/provider/mod.rs rename engine/crates/layerfs-sandbox/src/{provider => types}/capabilities.rs (100%) rename engine/crates/layerfs-sandbox/src/{provider => types}/options.rs (79%) diff --git a/engine/crates/layerfs-api/PROVIDERS.md b/engine/crates/layerfs-api/PROVIDERS.md index 16bd8b3cf..e675a61d7 100644 --- a/engine/crates/layerfs-api/PROVIDERS.md +++ b/engine/crates/layerfs-api/PROVIDERS.md @@ -2,9 +2,9 @@ Status: Current general guide. Native macOS is implemented and host-verified; Linux native is implemented, pending Linux host qualification; the Docker runtime is the default. `layerfs-sandbox` selects between them with the concrete `Runtime` enum; there are no provider traits. -`layerfs-sandbox::backend` exposes `Runtime` (a deployment's choice: `Docker`, `MacosNative`, `LinuxNative`, `Windows`) and `Sandbox` (the launched owner of one Sandbox). `layerfs_sandbox::{Runtime, Sandbox}` re-export both; `layerfs_sandbox::provider` keeps the inputs and records they share. `ExecRequest` lives in the shared types layer; its Docker re-export remains compatible. `SandboxId` aliases the existing `ContainerId`, preserving encoded identities and records. The runtime layer has no daemon control dependency. +`layerfs-sandbox::backend` exposes `Runtime` (a deployment's choice: `Docker`, `MacosNative`, `LinuxNative`, `Windows`) and `Sandbox` (the launched owner of one Sandbox). `layerfs_sandbox::{Runtime, Sandbox}` re-export both; the crate root also re-exports the inputs and records they share (formerly `layerfs_sandbox::provider`, #527 step 9a). `ExecRequest` lives in the shared types layer; its Docker re-export remains compatible. `SandboxId` aliases the existing `ContainerId`, preserving encoded identities and records. The runtime layer has no daemon control dependency. -`Runtime::MacosNative(..)` and `Runtime::LinuxNative(..)` wrap `NativeMacosProvider::new(root)` and `NativeLinuxProvider::new(root)`, the two aliases of the same native implementation whose instances share the existing local runtime owner. Each refuses the wrong platform before root access. macOS uses Darwin process facts, the `mount` table and `umount -f`; Linux uses the retained #402 `/proc` PID/start/boot checks, process groups and lazy `MNT_DETACH`. Linux requires a root daemon and a root directory traversable by command users; ordinary commands keep #402's nonroot identity (Node selects 501:20) and fixed container PATH. macOS keeps the caller identity, inherited PATH and loopback NFS. The provider explicitly selects `LAYERFS_KERNEL=fuse` on Linux and `nfs` on macOS and rejects conflicting launch overrides. Launch preserves the original single-attempt process lifecycle, native identity, inherited PATH, NFS environment and partial owner on failure. `inspect` reports exact process liveness; unknown exit/storage facts stay absent. `Runtime::Windows` refuses every operation with `RuntimeError::Unsupported` before any effect; no Windows host runtime exists. Records remain the Node binding's responsibility; runtimes neither scan directories nor infer project ownership. B8 list aggregation and doctor remain future work. +`Runtime::MacosNative(..)` and `Runtime::LinuxNative(..)` wrap `NativeMacosProvider::new(root)` and `NativeLinuxProvider::new(root)`, the two aliases of the same native implementation whose instances share the existing local runtime owner. Each refuses the wrong platform before root access. macOS uses Darwin process facts, the `mount` table and `umount -f`; Linux uses the retained #402 `/proc` PID/start/boot checks, process groups and lazy `MNT_DETACH`. Linux requires a root daemon and a root directory traversable by command users; ordinary commands keep #402's nonroot identity (Node selects 501:20) and fixed container PATH. macOS keeps the caller identity, inherited PATH and loopback NFS. The provider alone selects `LAYERFS_KERNEL=fuse` on Linux and `nfs` on macOS and rejects any launch environment that names it (#527 step 6). Launch preserves the original single-attempt process lifecycle, native identity, inherited PATH, NFS environment and partial owner on failure. `inspect` reports exact process liveness; unknown exit/storage facts stay absent. `Runtime::Windows` refuses every operation with `RuntimeError::Unsupported` before any effect; no Windows host runtime exists. Records remain the Node binding's responsibility; runtimes neither scan directories nor infer project ownership. B8 list aggregation and doctor remain future work. `SandboxApi::with_runtime(Arc)` and `create_provider_file(ProviderCreate, store, manifest)` (or `create(ProviderCreate, project)`) launch through the deployment's runtime and return `ProviderSandbox`, whose `runtime` field is the `Sandbox` handle. Both Docker (via `Runtime::Docker(DockerProvider)`) and native runtimes route through this single unified API path. `WorkspaceApi::exec` delegates ordinary execution through `sandbox.runtime.run(...)` with streaming stdout/stderr buffers, and `api.close` drains and removes instances via `sandbox.runtime.stop(1)` and `sandbox.runtime.delete()`. Before launch, API validates authentication identities, selected Store, command identity and local resource ownership: overlay and mount home must belong to the instance, Store must live outside it, and native listen uses dynamic loopback. API encodes daemon configuration, then uses the shared TCP/Noise/Hello and Store-install pipeline in `sandbox/connection.rs`. Failures retain their phase, original cause, runtime, control, observed status, installation acknowledgement and handshake work. No automatic retry or cleanup occurs in API. diff --git a/engine/crates/layerfs-api/examples/sandbox_kernel_mount.rs b/engine/crates/layerfs-api/examples/sandbox_kernel_mount.rs index 56fd91830..3aa7b025a 100644 --- a/engine/crates/layerfs-api/examples/sandbox_kernel_mount.rs +++ b/engine/crates/layerfs-api/examples/sandbox_kernel_mount.rs @@ -15,7 +15,7 @@ use layerfs_bridge::{ use layerfs_history::{BranchId, HistoryCatalogConfig, HistoryName, LayerStackId, WorkspaceId}; use layerfs_persistence::{PersistenceConfig, SqlitePersistenceProfile}; use layerfs_sandbox::backend::docker::{Docker, DockerProvider}; -use layerfs_sandbox::provider::{LaunchRequest, ProviderLaunchOptions}; +use layerfs_sandbox::{LaunchRequest, ProviderLaunchOptions}; use layerfs_storage::StoragePolicy; use layerfs_telemetry::timer::Timing; use std::{ diff --git a/engine/crates/layerfs-api/examples/sandbox_lifecycle.rs b/engine/crates/layerfs-api/examples/sandbox_lifecycle.rs index 609074a35..8319a4a9f 100644 --- a/engine/crates/layerfs-api/examples/sandbox_lifecycle.rs +++ b/engine/crates/layerfs-api/examples/sandbox_lifecycle.rs @@ -9,7 +9,7 @@ use layerfs_bridge::{ use layerfs_history::{BranchId, HistoryCatalogConfig, HistoryName, LayerStackId, WorkspaceId}; use layerfs_persistence::{PersistenceConfig, SqlitePersistenceProfile}; use layerfs_sandbox::backend::docker::{Docker, DockerProvider}; -use layerfs_sandbox::provider::{LaunchRequest, ProviderLaunchOptions}; +use layerfs_sandbox::{LaunchRequest, ProviderLaunchOptions}; use layerfs_storage::StoragePolicy; use layerfs_telemetry::timer::Timing; use std::{ diff --git a/engine/crates/layerfs-api/src/sandbox/create.rs b/engine/crates/layerfs-api/src/sandbox/create.rs index 61837c669..f19162756 100644 --- a/engine/crates/layerfs-api/src/sandbox/create.rs +++ b/engine/crates/layerfs-api/src/sandbox/create.rs @@ -68,7 +68,7 @@ pub enum SandboxCause { /// Original Engine transfer, no replay. Runtime(Box), /// Original provider launch cause; partial runtime ownership is retained separately. - Provider(Box), + Provider(Box), /// Original authentication failure; handshake work remains in the receipt. Channel(ChannelError), /// Original correlated daemon control exchange/refusal. diff --git a/engine/crates/layerfs-api/src/sandbox/exec.rs b/engine/crates/layerfs-api/src/sandbox/exec.rs index 40e0a5e44..4fa101326 100644 --- a/engine/crates/layerfs-api/src/sandbox/exec.rs +++ b/engine/crates/layerfs-api/src/sandbox/exec.rs @@ -1,6 +1,6 @@ //! Optional ordinary Sandbox launch at the acknowledged mounted directory. use super::{MountedWorkspace, ProviderSandbox, WorkspaceApi}; -use layerfs_sandbox::{provider::ExecExit, ExecRequest, WireFailure}; +use layerfs_sandbox::{ExecExit, ExecRequest, WireFailure}; use std::io::Write; impl WorkspaceApi<'_> { diff --git a/engine/crates/layerfs-api/src/sandbox/provider.rs b/engine/crates/layerfs-api/src/sandbox/provider.rs index 3f8afc396..8c77b26a3 100644 --- a/engine/crates/layerfs-api/src/sandbox/provider.rs +++ b/engine/crates/layerfs-api/src/sandbox/provider.rs @@ -7,10 +7,7 @@ use layerfs_bridge::{ duplex::{public_key, ChannelWork}, provision::StoreManifest, }; -use layerfs_sandbox::{ - provider::{LaunchRequest, ProviderLaunchOptions}, - CommandIdentity, Runtime, Sandbox, -}; +use layerfs_sandbox::{CommandIdentity, LaunchRequest, ProviderLaunchOptions, Runtime, Sandbox}; use std::{fmt, sync::Arc}; /// Runtime launch and private daemon authentication inputs. @@ -200,10 +197,10 @@ impl SandboxApi { Ok(owner) => Box::new(owner), Err(mut failure) => { progress.phase = match failure.phase { - layerfs_sandbox::provider::LaunchPhase::Validate => SandboxPhase::Validate, - layerfs_sandbox::provider::LaunchPhase::Create => SandboxPhase::Create, - layerfs_sandbox::provider::LaunchPhase::Start => SandboxPhase::Start, - layerfs_sandbox::provider::LaunchPhase::Listener => SandboxPhase::Listener, + layerfs_sandbox::LaunchPhase::Validate => SandboxPhase::Validate, + layerfs_sandbox::LaunchPhase::Create => SandboxPhase::Create, + layerfs_sandbox::LaunchPhase::Start => SandboxPhase::Start, + layerfs_sandbox::LaunchPhase::Listener => SandboxPhase::Listener, }; launched = failure.instance.take(); return Err(SandboxCause::Provider(failure)); @@ -330,10 +327,10 @@ impl SandboxApi { Ok(owner) => Box::new(owner), Err(mut failure) => { progress.phase = match failure.phase { - layerfs_sandbox::provider::LaunchPhase::Validate => SandboxPhase::Validate, - layerfs_sandbox::provider::LaunchPhase::Create => SandboxPhase::Create, - layerfs_sandbox::provider::LaunchPhase::Start => SandboxPhase::Start, - layerfs_sandbox::provider::LaunchPhase::Listener => SandboxPhase::Listener, + layerfs_sandbox::LaunchPhase::Validate => SandboxPhase::Validate, + layerfs_sandbox::LaunchPhase::Create => SandboxPhase::Create, + layerfs_sandbox::LaunchPhase::Start => SandboxPhase::Start, + layerfs_sandbox::LaunchPhase::Listener => SandboxPhase::Listener, }; launched = failure.instance.take(); return Err(SandboxCause::Provider(failure)); diff --git a/engine/crates/layerfs-api/tests/provider_ownership.rs b/engine/crates/layerfs-api/tests/provider_ownership.rs index fd0e95f8b..81d35de8a 100644 --- a/engine/crates/layerfs-api/tests/provider_ownership.rs +++ b/engine/crates/layerfs-api/tests/provider_ownership.rs @@ -64,9 +64,8 @@ fn native_resource_paths_are_validated_before_launch() { duplex, }; use layerfs_sandbox::{ - backend::native::NativeMacosProvider, - provider::{LaunchRequest, ProviderLaunchOptions}, - CommandIdentity, Runtime, + backend::native::NativeMacosProvider, CommandIdentity, LaunchRequest, + ProviderLaunchOptions, Runtime, }; use std::{ os::unix::fs::{MetadataExt, PermissionsExt}, diff --git a/engine/crates/layerfs-api/tests/sandbox_operations.rs b/engine/crates/layerfs-api/tests/sandbox_operations.rs index 448239d81..93575fec1 100644 --- a/engine/crates/layerfs-api/tests/sandbox_operations.rs +++ b/engine/crates/layerfs-api/tests/sandbox_operations.rs @@ -13,8 +13,8 @@ use layerfs_bridge::{ duplex, }; use layerfs_sandbox::backend::docker::DockerProvider; -use layerfs_sandbox::provider::{LaunchRequest, ProviderLaunchOptions}; use layerfs_sandbox::Runtime; +use layerfs_sandbox::{LaunchRequest, ProviderLaunchOptions}; use std::{ fs, net::TcpListener, diff --git a/engine/crates/layerfs-node/src/discovery.rs b/engine/crates/layerfs-node/src/discovery.rs index 5333a1ad7..932d997d9 100644 --- a/engine/crates/layerfs-node/src/discovery.rs +++ b/engine/crates/layerfs-node/src/discovery.rs @@ -15,8 +15,8 @@ use layerfs_persistence::{SealedStore, SqlitePersistenceProfile}; use layerfs_sandbox::backend::docker::{Docker, DockerProvider, SandboxRequest}; #[cfg(any(target_os = "linux", target_os = "macos"))] use layerfs_sandbox::backend::native::{self, LocalProcess}; -use layerfs_sandbox::provider::{LocalRecord, SandboxRecord}; use layerfs_sandbox::{CommandIdentity, ContainerId, Sandbox, WireFailure}; +use layerfs_sandbox::{LocalRecord, SandboxRecord}; use std::{ fs::{self, File, OpenOptions}, io::{Read, Write}, @@ -672,7 +672,7 @@ fn namespaces_record(args: &SdkValue, id: &str, value: &SdkValue) -> Result for DockerRecord { + fn from(request: SandboxRequest) -> Self { + Self { + image: request.image, + store_volume: request.store_volume, + port: request.port, + labels: request.labels, + } + } +} +impl From<&SandboxRequest> for DockerRecord { + fn from(request: &SandboxRequest) -> Self { + Self { + image: request.image.clone(), + store_volume: request.store_volume.clone(), + port: request.port, + labels: request.labels.clone(), + } + } +} +impl From for SandboxRequest { + fn from(record: DockerRecord) -> Self { + Self { + image: record.image, + store_volume: record.store_volume, + port: record.port, + labels: record.labels, + } + } +} +impl From for SandboxRecord { + fn from(request: SandboxRequest) -> Self { + Self::Docker(request.into()) + } +} +impl From<&SandboxRequest> for SandboxRecord { + fn from(request: &SandboxRequest) -> Self { + Self::Docker(request.into()) + } +} diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/endpoint.rs b/engine/crates/layerfs-sandbox/src/backend/docker/endpoint.rs index 16ddfe2e6..832d8dc85 100644 --- a/engine/crates/layerfs-sandbox/src/backend/docker/endpoint.rs +++ b/engine/crates/layerfs-sandbox/src/backend/docker/endpoint.rs @@ -63,13 +63,13 @@ impl Sandbox { endpoint.ok_or_else(|| self.invalid("missing daemon endpoint")) } /// One exact deployment/state observation; absent optional facts remain absent. - pub fn inspect(&self) -> Result> { + pub fn inspect(&self) -> Result> { self.observe(false).map(|(inspection, _)| inspection) } fn observe( &self, require_running: bool, - ) -> Result<(crate::provider::SandboxInspection, Option), Box> { + ) -> Result<(crate::SandboxInspection, Option), Box> { if self.deleted { return Err(self.invalid("deleted container observation")); } @@ -261,7 +261,7 @@ impl Sandbox { return Err(RuntimeError::Protocol("missing daemon endpoint")); } Ok(( - crate::provider::SandboxInspection { + crate::SandboxInspection { identity: self.id, running: running.expect("required"), exit_code: if running == Some(false) { diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/provider.rs b/engine/crates/layerfs-sandbox/src/backend/docker/provider.rs index d4171e400..e79f469c8 100644 --- a/engine/crates/layerfs-sandbox/src/backend/docker/provider.rs +++ b/engine/crates/layerfs-sandbox/src/backend/docker/provider.rs @@ -1,10 +1,10 @@ //! Docker's existing one-attempt runtime as a concrete backend. use super::{Docker, Sandbox, SandboxRequest}; -use crate::provider::{ +use crate::{ContainerId, RuntimeError, WireFailure}; +use crate::{ IsolationModel, LaunchFailure, LaunchPhase, LaunchRequest, MountDriver, ProviderCapabilities, ProviderLaunchOptions, SandboxRecord, SearchPathPolicy, }; -use crate::{ContainerId, RuntimeError, WireFailure}; use std::fs::File; /// Negotiation and all transfers use the supplied client's original policy and version cache. diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/provider_exec.rs b/engine/crates/layerfs-sandbox/src/backend/docker/provider_exec.rs index 59a415d3a..7a726ae9f 100644 --- a/engine/crates/layerfs-sandbox/src/backend/docker/provider_exec.rs +++ b/engine/crates/layerfs-sandbox/src/backend/docker/provider_exec.rs @@ -1,6 +1,6 @@ //! Ordinary noninteractive provider execution, with streamed output and exact failure custody. use super::{ProviderFailure, Sandbox}; -use crate::{provider::ExecExit, ExecRequest, RuntimeError, WireFailure}; +use crate::{ExecExit, ExecRequest, RuntimeError, WireFailure}; use std::io::Write; fn failure(container: crate::ContainerId, cause: ProviderFailure) -> Box { // Scalar facts describe only the deciding exchange. Owned pending bytes, diff --git a/engine/crates/layerfs-sandbox/src/backend/mod.rs b/engine/crates/layerfs-sandbox/src/backend/mod.rs index 75d331e04..c820c691f 100644 --- a/engine/crates/layerfs-sandbox/src/backend/mod.rs +++ b/engine/crates/layerfs-sandbox/src/backend/mod.rs @@ -19,4 +19,4 @@ pub mod runtime; mod streams; mod strings; pub use helper_spec::HelperSpec; -pub use runtime::{Runtime, Sandbox}; +pub use runtime::{LaunchFailure, Runtime, Sandbox}; diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs b/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs index e01146d13..7834ec7eb 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs +++ b/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs @@ -50,7 +50,7 @@ pub(crate) struct CreateFailure { pub(crate) fn create( local: &Local, helper: &Path, - request: &crate::provider::LaunchRequest, + request: &crate::LaunchRequest, options: &Options, ) -> Result> { let fail = |phase, sandbox, cause| { @@ -137,7 +137,7 @@ pub(crate) fn create( fn start_request( local: &Local, helper: &Path, - request: &crate::provider::LaunchRequest, + request: &crate::LaunchRequest, options: &Options, ) -> Result<(Paths, ImageRoot), RuntimeError> { let paths = { @@ -235,7 +235,7 @@ fn check_store(paths: &Paths, store: &Path) -> Result<(), RuntimeError> { /// the image underneath. fn prepare( paths: &Paths, - request: &crate::provider::LaunchRequest, + request: &crate::LaunchRequest, options: &Options, id: &crate::ContainerId, image: &ImageRoot, diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/exec.rs b/engine/crates/layerfs-sandbox/src/backend/namespaces/exec.rs index d17372a70..d1658e69d 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/exec.rs +++ b/engine/crates/layerfs-sandbox/src/backend/namespaces/exec.rs @@ -6,7 +6,7 @@ use super::sandbox::Sandbox; use crate::backend::native::search::search_path; use crate::backend::streams; -use crate::provider::ExecExit; +use crate::ExecExit; use crate::{ExecRequest, RuntimeError, WireFailure}; use std::{ io::{self, Write}, diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs b/engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs index 794a5c9ff..d3ede4794 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs +++ b/engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs @@ -12,11 +12,11 @@ use super::{ sandbox::Sandbox, }; use crate::backend::native::{Local, LocalPaths}; -use crate::provider::{ +use crate::{ContainerId, RuntimeError, WireFailure}; +use crate::{ IsolationModel, LaunchFailure, LaunchPhase, LaunchRequest, MountDriver, ProviderCapabilities, ProviderLaunchOptions, SandboxRecord, SearchPathPolicy, }; -use crate::{ContainerId, RuntimeError, WireFailure}; use std::{ env, path::{Path, PathBuf}, @@ -182,10 +182,7 @@ impl NamespaceProvider { /// The record's image, as the root this runtime already holds: a reopen /// starts and unpacks nothing, so a record whose image is gone is refused /// rather than given a different root. - fn image( - &self, - record: &crate::provider::NamespaceRecord, - ) -> Result { + fn image(&self, record: &crate::NamespaceRecord) -> Result { let paths = self.record_paths(&record.local().name)?; let root = (paths.local.directory.parent()) .ok_or(RuntimeError::Protocol("namespaces Sandbox root"))?; diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/sandbox.rs b/engine/crates/layerfs-sandbox/src/backend/namespaces/sandbox.rs index 4b650396e..ce77995c9 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/sandbox.rs +++ b/engine/crates/layerfs-sandbox/src/backend/namespaces/sandbox.rs @@ -4,8 +4,8 @@ //! that has already exited, so it never stays a zombie of this process. use super::{cgroup, host, paths::Paths, rootfs::ImageRoot}; use crate::backend::native::LocalProcess; -use crate::provider::{LocalRecord, NamespaceRecord, SandboxRecord}; use crate::{ContainerId, RuntimeError, WireFailure}; +use crate::{LocalRecord, NamespaceRecord, SandboxRecord}; use std::{ fs::{self, OpenOptions}, io::{self, Read, Seek, SeekFrom}, diff --git a/engine/crates/layerfs-sandbox/src/backend/native/mod.rs b/engine/crates/layerfs-sandbox/src/backend/native/mod.rs index 30155b081..bd59feebf 100644 --- a/engine/crates/layerfs-sandbox/src/backend/native/mod.rs +++ b/engine/crates/layerfs-sandbox/src/backend/native/mod.rs @@ -34,12 +34,9 @@ pub(crate) use super::macos as platform; pub use create::{Local, LocalCreateFailure, LocalPaths, LocalPhase}; pub use exec::LocalExit; pub use process::LocalProcess; +#[cfg(target_os = "linux")] +pub(crate) use provider::KERNEL_ROUTE; pub use provider::{ NativeLinuxInstance, NativeLinuxProvider, NativeMacosInstance, NativeMacosProvider, }; pub use sandbox::Sandbox; - -/// The daemon's kernel route setting (`fuse` or `nfs`). Only the provider -/// names it, from the platform it serves; a caller that names it is refused -/// (#527 step 6), and the daemon checks the value it receives. -pub(crate) const KERNEL_ROUTE: &str = "LAYERFS_KERNEL"; diff --git a/engine/crates/layerfs-sandbox/src/backend/native/provider.rs b/engine/crates/layerfs-sandbox/src/backend/native/provider.rs index dd499b513..2d0450370 100644 --- a/engine/crates/layerfs-sandbox/src/backend/native/provider.rs +++ b/engine/crates/layerfs-sandbox/src/backend/native/provider.rs @@ -1,12 +1,17 @@ //! The existing native runtime as a concrete backend; no alternate process engine. -use super::{Local, LocalPhase, LocalProcess, Sandbox, KERNEL_ROUTE}; -use crate::provider::{ +use super::{Local, LocalPhase, LocalProcess, Sandbox}; +use crate::{ContainerId, RuntimeError, WireFailure}; +use crate::{ IsolationModel, LaunchFailure, LaunchPhase, LaunchRequest, LocalRecord, MountDriver, ProviderCapabilities, ProviderLaunchOptions, SandboxRecord, SearchPathPolicy, }; -use crate::{ContainerId, RuntimeError, WireFailure}; use std::path::Path; +/// The daemon's kernel route setting (`fuse` or `nfs`). Only the provider +/// names it, from the platform it serves; a caller that names it is refused +/// (#527 step 6), and the daemon checks the value it receives. +pub(crate) const KERNEL_ROUTE: &str = "LAYERFS_KERNEL"; + #[derive(Clone, Debug)] pub struct NativeProvider { local: Local, diff --git a/engine/crates/layerfs-sandbox/src/backend/native/sandbox.rs b/engine/crates/layerfs-sandbox/src/backend/native/sandbox.rs index 8c6771788..aebbeee8c 100644 --- a/engine/crates/layerfs-sandbox/src/backend/native/sandbox.rs +++ b/engine/crates/layerfs-sandbox/src/backend/native/sandbox.rs @@ -4,7 +4,7 @@ //! returns only once a daemon this process started is reaped, so it never //! stays a zombie of this process. use super::{groups, platform, process::LocalProcess}; -use crate::provider::LocalRecord; +use crate::LocalRecord; use crate::{ContainerId, RuntimeError, WireFailure}; use nix::sys::signal::Signal; use std::{ diff --git a/engine/crates/layerfs-sandbox/src/backend/runtime.rs b/engine/crates/layerfs-sandbox/src/backend/runtime.rs index 43ed8208a..4dc79591d 100644 --- a/engine/crates/layerfs-sandbox/src/backend/runtime.rs +++ b/engine/crates/layerfs-sandbox/src/backend/runtime.rs @@ -6,12 +6,12 @@ use super::docker::{self, DockerProvider}; use super::namespaces::{self, NamespaceProvider}; #[cfg(any(target_os = "linux", target_os = "macos"))] use super::native::{self, NativeLinuxProvider, NativeMacosProvider}; -use crate::provider::{ - ExecExit, LaunchFailure, LaunchRequest, LocalRecord, ProviderCapabilities, SandboxInspection, +use crate::{ContainerId, ExecRequest, RuntimeError, WireFailure}; +use crate::{ + ExecExit, LaunchPhase, LaunchRequest, LocalRecord, ProviderCapabilities, SandboxInspection, SandboxRecord, }; -use crate::{ContainerId, ExecRequest, RuntimeError, WireFailure}; -use std::{io::Write, net::SocketAddr, path::PathBuf}; +use std::{fmt, io::Write, net::SocketAddr, path::PathBuf}; /// What Windows would need and does not have yet: no host runtime exists. const WINDOWS: &str = "windows native Sandbox runtime"; @@ -95,7 +95,7 @@ impl Runtime { .launch(request) .map(|sandbox| Sandbox::Namespaces(Box::new(sandbox))), Self::Windows => Err(Box::new(LaunchFailure { - phase: crate::provider::LaunchPhase::Validate, + phase: LaunchPhase::Validate, instance: None, cause: RuntimeError::Unsupported(WINDOWS), })), @@ -305,3 +305,19 @@ impl Sandbox { } } } + +/// The caller retains the exact resource even when launch fails after creating it. +pub struct LaunchFailure { + pub phase: LaunchPhase, + pub instance: Option>, + pub cause: RuntimeError, +} +impl fmt::Debug for LaunchFailure { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("LaunchFailure") + .field("phase", &self.phase) + .field("identity", &self.instance.as_ref().map(|i| i.identity())) + .field("cause", &self.cause) + .finish() + } +} diff --git a/engine/crates/layerfs-sandbox/src/lib.rs b/engine/crates/layerfs-sandbox/src/lib.rs index 497fa2024..0e23f0abf 100644 --- a/engine/crates/layerfs-sandbox/src/lib.rs +++ b/engine/crates/layerfs-sandbox/src/lib.rs @@ -4,11 +4,12 @@ #![deny(unsafe_code)] #[cfg(unix)] pub mod backend; -pub mod provider; mod types; #[cfg(unix)] -pub use backend::{Runtime, Sandbox}; +pub use backend::{LaunchFailure, Runtime, Sandbox}; pub use types::{ - CommandIdentity, ContainerId, ErrorDiagnostic, ExecId, ExecInspection, ExecRequest, Image, - PendingRequest, RuntimeError, WireFailure, + CommandIdentity, ContainerId, DockerRecord, ErrorDiagnostic, ExecExit, ExecId, ExecInspection, + ExecRequest, Image, IsolationModel, LaunchPhase, LaunchRequest, LocalRecord, MountDriver, + NamespaceRecord, PendingRequest, ProviderCapabilities, ProviderLaunchOptions, RuntimeError, + SandboxId, SandboxInspection, SandboxRecord, SearchPathPolicy, WireFailure, }; diff --git a/engine/crates/layerfs-sandbox/src/provider/launch.rs b/engine/crates/layerfs-sandbox/src/provider/launch.rs deleted file mode 100644 index 0c654ad48..000000000 --- a/engine/crates/layerfs-sandbox/src/provider/launch.rs +++ /dev/null @@ -1,26 +0,0 @@ -//! One-attempt launch failure: acknowledged partial ownership and the last phase reached. -use crate::backend::Sandbox; -use crate::RuntimeError; -use std::fmt; -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -pub enum LaunchPhase { - Validate, - Create, - Start, - Listener, -} -/// The caller retains the exact resource even when launch fails after creating it. -pub struct LaunchFailure { - pub phase: LaunchPhase, - pub instance: Option>, - pub cause: RuntimeError, -} -impl fmt::Debug for LaunchFailure { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("LaunchFailure") - .field("phase", &self.phase) - .field("identity", &self.instance.as_ref().map(|i| i.identity())) - .field("cause", &self.cause) - .finish() - } -} diff --git a/engine/crates/layerfs-sandbox/src/provider/mod.rs b/engine/crates/layerfs-sandbox/src/provider/mod.rs deleted file mode 100644 index b9eee1e30..000000000 --- a/engine/crates/layerfs-sandbox/src/provider/mod.rs +++ /dev/null @@ -1,12 +0,0 @@ -//! Runtime inputs and observations; concrete backends own their own lifecycle. -mod capabilities; -mod launch; -mod options; -pub use capabilities::{IsolationModel, MountDriver, ProviderCapabilities, SearchPathPolicy}; -pub use launch::{LaunchFailure, LaunchPhase}; -pub use options::{ - DockerRecord, ExecExit, LaunchRequest, LocalRecord, NamespaceRecord, ProviderLaunchOptions, - SandboxInspection, SandboxRecord, -}; -/// Compatible name for the existing exact 64-hex runtime identity. -pub type SandboxId = crate::ContainerId; diff --git a/engine/crates/layerfs-sandbox/src/provider/capabilities.rs b/engine/crates/layerfs-sandbox/src/types/capabilities.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/provider/capabilities.rs rename to engine/crates/layerfs-sandbox/src/types/capabilities.rs diff --git a/engine/crates/layerfs-sandbox/src/types/mod.rs b/engine/crates/layerfs-sandbox/src/types/mod.rs index 2d8c1768a..73ee81ecf 100644 --- a/engine/crates/layerfs-sandbox/src/types/mod.rs +++ b/engine/crates/layerfs-sandbox/src/types/mod.rs @@ -1,14 +1,24 @@ -//! Exact ordinary runtime identities, independent process/output knowledge and failures. +//! Exact ordinary runtime identities, independent process/output knowledge and +//! failures, and the launch inputs and observations every backend shares. +mod capabilities; mod execution; mod failure; mod identity; mod image; +mod options; mod request; mod transfer; +pub use capabilities::{IsolationModel, MountDriver, ProviderCapabilities, SearchPathPolicy}; pub use execution::{CommandIdentity, ExecInspection}; pub(crate) use failure::STOPPED; pub use failure::{ErrorDiagnostic, RuntimeError, WireFailure}; pub use identity::{ContainerId, ExecId}; pub use image::Image; +pub use options::{ + DockerRecord, ExecExit, LaunchPhase, LaunchRequest, LocalRecord, NamespaceRecord, + ProviderLaunchOptions, SandboxInspection, SandboxRecord, +}; pub use request::ExecRequest; pub use transfer::PendingRequest; +/// Compatible name for the existing exact 64-hex runtime identity. +pub type SandboxId = ContainerId; diff --git a/engine/crates/layerfs-sandbox/src/provider/options.rs b/engine/crates/layerfs-sandbox/src/types/options.rs similarity index 79% rename from engine/crates/layerfs-sandbox/src/provider/options.rs rename to engine/crates/layerfs-sandbox/src/types/options.rs index e9e4e3522..fa2747165 100644 --- a/engine/crates/layerfs-sandbox/src/provider/options.rs +++ b/engine/crates/layerfs-sandbox/src/types/options.rs @@ -1,6 +1,14 @@ //! Launch inputs and observations independent of the daemon control protocol. use crate::{CommandIdentity, ContainerId}; use std::{fmt, path::PathBuf, time::Duration}; +/// The last launch phase a provider reached. +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum LaunchPhase { + Validate, + Create, + Start, + Listener, +} /// Configuration bytes may contain secrets; Debug only reports their length. #[derive(Clone)] pub struct LaunchRequest { @@ -136,46 +144,6 @@ impl From<&DockerRecord> for SandboxRecord { Self::Docker(record.clone()) } } -impl From for DockerRecord { - fn from(request: crate::backend::docker::SandboxRequest) -> Self { - Self { - image: request.image, - store_volume: request.store_volume, - port: request.port, - labels: request.labels, - } - } -} -impl From<&crate::backend::docker::SandboxRequest> for DockerRecord { - fn from(request: &crate::backend::docker::SandboxRequest) -> Self { - Self { - image: request.image.clone(), - store_volume: request.store_volume.clone(), - port: request.port, - labels: request.labels.clone(), - } - } -} -impl From for crate::backend::docker::SandboxRequest { - fn from(record: DockerRecord) -> Self { - Self { - image: record.image, - store_volume: record.store_volume, - port: record.port, - labels: record.labels, - } - } -} -impl From for SandboxRecord { - fn from(request: crate::backend::docker::SandboxRequest) -> Self { - Self::Docker(request.into()) - } -} -impl From<&crate::backend::docker::SandboxRequest> for SandboxRecord { - fn from(request: &crate::backend::docker::SandboxRequest) -> Self { - Self::Docker(request.into()) - } -} #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub struct ExecExit { pub code: i32, diff --git a/engine/crates/layerfs-sandbox/tests/docker_provider.rs b/engine/crates/layerfs-sandbox/tests/docker_provider.rs index 58eccbc67..0e0c125c8 100644 --- a/engine/crates/layerfs-sandbox/tests/docker_provider.rs +++ b/engine/crates/layerfs-sandbox/tests/docker_provider.rs @@ -5,10 +5,8 @@ mod peer; use layerfs_sandbox::{ backend::docker::{DockerProvider, ProviderFailure, Sandbox, SandboxRequest}, - provider::{ - DockerRecord, LaunchPhase, LaunchRequest, LocalRecord, ProviderLaunchOptions, SandboxRecord, - }, - CommandIdentity, ContainerId, ExecRequest, Runtime, RuntimeError, + CommandIdentity, ContainerId, DockerRecord, ExecRequest, LaunchPhase, LaunchRequest, + LocalRecord, ProviderLaunchOptions, Runtime, RuntimeError, SandboxRecord, }; use peer::{fixed, frame, upgrade, Peer}; use std::{ diff --git a/engine/crates/layerfs-sandbox/tests/engine_lifecycle.rs b/engine/crates/layerfs-sandbox/tests/engine_lifecycle.rs index 3021aefe2..b5ecfbb3a 100644 --- a/engine/crates/layerfs-sandbox/tests/engine_lifecycle.rs +++ b/engine/crates/layerfs-sandbox/tests/engine_lifecycle.rs @@ -420,7 +420,7 @@ fn only_the_exact_intact_container_not_running_is_a_stopped_container() { #[test] fn provider_inspects_and_reopens_exact_running_and_stopped_deployments() { use layerfs_sandbox::backend::docker::DockerProvider; - use layerfs_sandbox::provider::SandboxRecord; + use layerfs_sandbox::SandboxRecord; let id = layerfs_sandbox::ContainerId::parse(CID).unwrap(); let running = inspect().replace( r#""Running":true"#, diff --git a/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs b/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs index 5e6fc846d..7c284c78e 100644 --- a/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs +++ b/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs @@ -18,8 +18,8 @@ mod support { } use layerfs_sandbox::{ backend::namespaces::{NamespaceProvider, Sandbox}, - provider::{LaunchRequest, ProviderLaunchOptions, SandboxRecord}, - CommandIdentity, ExecRequest, Image, RuntimeError, + CommandIdentity, ExecRequest, Image, LaunchRequest, ProviderLaunchOptions, RuntimeError, + SandboxRecord, }; use std::{ collections::BTreeSet, @@ -567,7 +567,7 @@ fn a_record_reopens_the_exact_sandbox_and_nothing_else() { ); // a Docker record is refused rather than reinterpreting it - let foreign = SandboxRecord::Docker(layerfs_sandbox::provider::DockerRecord { + let foreign = SandboxRecord::Docker(layerfs_sandbox::DockerRecord { image: "sha256:0".to_owned(), store_volume: Some("volume".to_owned()), port: 30421, diff --git a/engine/crates/layerfs-sandbox/tests/namespaces_protocol.rs b/engine/crates/layerfs-sandbox/tests/namespaces_protocol.rs index 97648c3e3..72210bb23 100644 --- a/engine/crates/layerfs-sandbox/tests/namespaces_protocol.rs +++ b/engine/crates/layerfs-sandbox/tests/namespaces_protocol.rs @@ -2,9 +2,7 @@ //! recorded facts a reopen reads, and the refusals that keep one runtime's //! records from another. Nothing here starts a process. use layerfs_sandbox::{ - backend::HelperSpec, - provider::{DockerRecord, LocalRecord, NamespaceRecord, SandboxRecord}, - Image, + backend::HelperSpec, DockerRecord, Image, LocalRecord, NamespaceRecord, SandboxRecord, }; use std::path::PathBuf; diff --git a/engine/crates/layerfs-sandbox/tests/native_platform.rs b/engine/crates/layerfs-sandbox/tests/native_platform.rs index 6788ee3d8..f0465a7cc 100644 --- a/engine/crates/layerfs-sandbox/tests/native_platform.rs +++ b/engine/crates/layerfs-sandbox/tests/native_platform.rs @@ -1,8 +1,8 @@ //! Platform refusal precedes filesystem access; a runtime never selects another backend. #![cfg(any(target_os = "linux", target_os = "macos"))] use layerfs_sandbox::{ - provider::{DockerRecord, LaunchPhase, LaunchRequest, ProviderLaunchOptions, SandboxRecord}, - CommandIdentity, ContainerId, Runtime, RuntimeError, + CommandIdentity, ContainerId, DockerRecord, LaunchPhase, LaunchRequest, ProviderLaunchOptions, + Runtime, RuntimeError, SandboxRecord, }; use std::time::Duration; diff --git a/engine/crates/layerfs-sandbox/tests/native_provider.rs b/engine/crates/layerfs-sandbox/tests/native_provider.rs index da125b9b6..cc9ea931f 100644 --- a/engine/crates/layerfs-sandbox/tests/native_provider.rs +++ b/engine/crates/layerfs-sandbox/tests/native_provider.rs @@ -5,8 +5,8 @@ use layerfs_sandbox::backend::native::NativeLinuxProvider as NativeProvider; #[cfg(target_os = "macos")] use layerfs_sandbox::backend::native::NativeMacosProvider as NativeProvider; use layerfs_sandbox::{ - provider::{DockerRecord, LaunchPhase, LaunchRequest, ProviderLaunchOptions, SandboxRecord}, - CommandIdentity, Runtime, + CommandIdentity, DockerRecord, LaunchPhase, LaunchRequest, ProviderLaunchOptions, Runtime, + SandboxRecord, }; use std::{fs, os::unix::fs::PermissionsExt, time::Duration}; From 27d1784df36cd5e677a6948e7a9ef640ff2cfc75 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:10:31 +0800 Subject: [PATCH 04/37] runtime: vm: homes refuse Store-level calls before any effect (#527 step 2) F3: on a `vm:` home each project's Store is in that project's own VM, and the home keeps no Store of its own. Calls that name a Store, a remote or the home rather than one project crashed or ran in the wrong process: `store.create`, `store.start_load` and `start_init({ store })` called `platform.init(settings)` with no project and the VM's `init` threw a plain TypeError on `project.name`; `vm.storePath()` ignored the volume, so every Store of the home mapped to one guest file; calls with no project fell back to this host's in-process addon with the guest home; a PostgreSQL project's client opened the VM's SQLite Store. Now the VM platform declares `homeStores: false`, and: - every `runtime.store.*` call except `list`, every `runtime.remote.*` call and `runtime.postgresql.status` refuse `Unsupported` (naming the call and the reason) before any effect, through one guard in index.js; - `project.start_init` with `{ store }` refuses the same way in prepare; - `vm.init` checks its project and refuses a call without one; - `vm.storePath` refuses instead of mapping every Store to one file; - the VM `deploymentEnv` refuses a project of a PostgreSQL Store before its client is made; - `store.list` still lists the home's records, with null stats and no call (storeFields moved inside locals' try). api/docs/runtime.md documents the refusals. Tests: new `vm_placement.mjs stores` (every refused call, the hooks, the PostgreSQL client, no provider call made, `store.list` answers); it fails on the parent with F3's TypeError. No tests deleted. Checks (each under the 120 s `to` wrapper, after `npm install` in api/, which only linked the three workspaces offline): - node api/runtime/test/runtime.mjs: all 15 cases PASS - node api/runtime/test/vm_placement.mjs settings flow two bundle delete hosts stores apple-container ssh cleanup: all 10 PASS Production LOC: 123137 -> 123155 (delta +18) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent c6f5dd227d and the staged tree 17357696fa; after: core 41405; engine 77508; api 4242; Co-Authored-By: Claude Opus 5.5 --- api/docs/runtime.md | 12 ++++++- api/runtime/src/index.js | 41 ++++++++++++++---------- api/runtime/src/platform/shared.js | 14 ++++++++ api/runtime/src/platform/vm/index.js | 22 ++++++++++--- api/runtime/src/project/init.js | 2 ++ api/runtime/src/store/calls.js | 7 ++-- api/runtime/test/vm_placement.mjs | 48 ++++++++++++++++++++++++++-- 7 files changed, 118 insertions(+), 28 deletions(-) diff --git a/api/docs/runtime.md b/api/docs/runtime.md index 411b57702..2c675ad0c 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -274,13 +274,23 @@ home, store, created, worker, disk }] }`, one entry per project of `{ reclaimed: {}, failed: [], host: false }`. The SDK's `project.list_sandboxes` reads the VM's Sandboxes. +A VM home keeps no Store of its own: each project's Store is in that project's +VM, so a call on the home's Stores or remotes has no VM to run in (#527 F3). +`store.create`, `store.remove`, `store.attach_postgresql`, every +`store.start_*` job, `store.unlink`, `store.check`, every `remote.*` call, +`postgresql.status` and `project.start_init` with `{ store }` refuse +`Unsupported` before any effect, and so does a client of a project in a +PostgreSQL Store. `store.list` still lists the home's records, with `bytes`, +`open` and `heads` null. A project is made with `project.start_init(name, +folder)` and removed with `project.delete`. + The real proof is `node api/runtime/test/verify/vm_real.mjs [microsandbox|apple-container]`: two projects, each in its own VM — Init through each VM's worker, a fork, a write, a Sandbox, an exec as the nonroot identity with user namespaces blocked, a Commit, a stop/start of one VM and a worker restart, then a check that neither Store holds the other's Branch, and that removing one project leaves the other's VM running. The unit tests -(`node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|apple-container|ssh`) +(`node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|cleanup`) use a stand-in provider CLI. ### The SSH provider (any Linux host) diff --git a/api/runtime/src/index.js b/api/runtime/src/index.js index c488ac7ef..551929bf6 100644 --- a/api/runtime/src/index.js +++ b/api/runtime/src/index.js @@ -19,6 +19,7 @@ import { LayerFSError } from "@layerfs/agent"; import { useWorker } from "@layerfs/agent/internal"; import { Clients } from "./clients.js"; +import { homeStores } from "./platform/shared.js"; import { resolveSettings } from "./settings.js"; import { status } from "./status.js"; import linux from "./platform/linux/index.js"; @@ -74,6 +75,12 @@ export class LayerFSRuntime { if (this.closed) throw new LayerFSError("InvalidInput", "this LayerFS runtime is closed; open another with LayerFSRuntime.open", null); return method(...args); }; + /** A call on the home's Stores or remotes, not one project's: refused before any effect where the + * placement keeps no home Store (a `vm:` home, #527 F3). */ + const homeLevel = (what, method) => live(async (...args) => { + homeStores(this, what); + return method(...args); + }); /** A project this runtime knows (of `store` when its name is in several Stores) with a Store volume, * or of a PostgreSQL Store with the call's `url`, which the runtime holds for that call only. */ const known = async (name, store = undefined, url = undefined) => { @@ -107,27 +114,27 @@ export class LayerFSRuntime { // #506 Store-first (doc section 6): a home holds many Stores, a Store many projects this.store = { list: live(() => stores.list(this)), - create: live((name) => stores.create(this, name)), - remove: live((name, options) => stores.remove(this, name, options)), - attach_postgresql: live((options) => stores.attach_postgresql(this, options)), + create: homeLevel("runtime.store.create", (name) => stores.create(this, name)), + remove: homeLevel("runtime.store.remove", (name, options) => stores.remove(this, name, options)), + attach_postgresql: homeLevel("runtime.store.attach_postgresql", (options) => stores.attach_postgresql(this, options)), // #509: one link per SQLite Store - start_publish: live((name, options) => sync.start_publish(this, syncs, name, options)), - start_push: live((name, options) => sync.start_push(this, syncs, name, options)), - start_pull: live((name, options) => sync.start_pull(this, syncs, name, options)), - start_send: live((name, options) => sync.start_send(this, syncs, name, options)), - start_load: live((remote, options) => sync.start_load(this, syncs, remote, options)), - unlink: live((name, options) => stores.unlink(this, name, options)), - start_import_postgresql: live((name, options) => sync.start_import_postgresql(this, syncs, name, options)), - check: live((name, options) => stores.check(this, name, options)), + start_publish: homeLevel("runtime.store.start_publish", (name, options) => sync.start_publish(this, syncs, name, options)), + start_push: homeLevel("runtime.store.start_push", (name, options) => sync.start_push(this, syncs, name, options)), + start_pull: homeLevel("runtime.store.start_pull", (name, options) => sync.start_pull(this, syncs, name, options)), + start_send: homeLevel("runtime.store.start_send", (name, options) => sync.start_send(this, syncs, name, options)), + start_load: homeLevel("runtime.store.start_load", (remote, options) => sync.start_load(this, syncs, remote, options)), + unlink: homeLevel("runtime.store.unlink", (name, options) => stores.unlink(this, name, options)), + start_import_postgresql: homeLevel("runtime.store.start_import_postgresql", (name, options) => sync.start_import_postgresql(this, syncs, name, options)), + check: homeLevel("runtime.store.check", (name, options) => stores.check(this, name, options)), }; this.remote = { - list: live(() => stores.remotes(this)), - add: live((remote) => stores.addRemote(this, remote)), - remove: live((name, options) => stores.removeRemote(this, name, options)), - list_stores: live((remote, options) => stores.listStores(this, remote, options)), - providers: live(() => stores.providers(this)), + list: homeLevel("runtime.remote.list", () => stores.remotes(this)), + add: homeLevel("runtime.remote.add", (remote) => stores.addRemote(this, remote)), + remove: homeLevel("runtime.remote.remove", (name, options) => stores.removeRemote(this, name, options)), + list_stores: homeLevel("runtime.remote.list_stores", (remote, options) => stores.listStores(this, remote, options)), + providers: homeLevel("runtime.remote.providers", () => stores.providers(this)), }; - this.postgresql = { status: live((options) => stores.postgresqlStatus(this, options)) }; + this.postgresql = { status: homeLevel("runtime.postgresql.status", (options) => stores.postgresqlStatus(this, options)) }; this.sync = { get: live((job) => syncs.get(job, progressOf(this))) }; this.sandbox = { reclaim: live(async (name, options) => reclaim(this, await known(name, options?.store, options?.url))), diff --git a/api/runtime/src/platform/shared.js b/api/runtime/src/platform/shared.js index 8a1d82638..706d59791 100644 --- a/api/runtime/src/platform/shared.js +++ b/api/runtime/src/platform/shared.js @@ -19,6 +19,20 @@ export const refuse = (code, message, detail = null) => new LayerFSError(code, m export const noHostDocker = (runtime, what, instead) => refuse("Unsupported", `${what} reads host Docker, and this home is placed in ${runtime.platform.name}: ${instead}`, null); +/** + * The refusal a call on the home's Stores or remotes gives on a home whose + * placement keeps no Store of its own (`homeStores: false`, a `vm:` + * home, #527 F3): each project's Store is in that project's own VM, so a call + * that names a Store or the home rather than one project has no VM to run in. + */ +export const noHomeStores = (placement, what) => + refuse("Unsupported", `${what} is not supported on a ${placement} home: each project's Store is in that project's own VM, so a call on a Store or remote of the home, not one project, has no VM to run in`, null); + +/** Refuses `what` before any effect where the platform holds no home Stores. */ +export function homeStores(runtime, what) { + if (runtime.platform.homeStores === false) throw noHomeStores(runtime.platform.name, what); +} + /** One Docker CLI call on the configured engine: its stdout, trimmed. */ export const docker = (settings, args, options = {}) => run("docker", ["-H", `unix://${settings.docker}`, ...args], { timeout: 5000, ...options }).then((r) => r.stdout.trim()); diff --git a/api/runtime/src/platform/vm/index.js b/api/runtime/src/platform/vm/index.js index 6cf05cf90..bd3e6fbfe 100644 --- a/api/runtime/src/platform/vm/index.js +++ b/api/runtime/src/platform/vm/index.js @@ -29,7 +29,7 @@ import { createServer } from "node:net"; import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync } from "node:fs"; import { join } from "node:path"; import { connection } from "@layerfs/agent/internal"; -import { endpointFile, homeNames, ping, ready, refuse, writeEndpoint } from "../shared.js"; +import { endpointFile, homeNames, noHomeStores, ping, ready, refuse, writeEndpoint } from "../shared.js"; import { callHome, GUEST } from "../../settings.js"; import { NAME, record as projectRecord } from "../../project/list.js"; import microsandbox from "./microsandbox.js"; @@ -367,6 +367,8 @@ const stores = { /** The guest home, and the deployment inside the project's VM: native Sandboxes, the namespace backend. */ export function deploymentEnv(settings, project) { + // a VM's projects open the SQLite Store on that VM's disk only (#527 F3) + if (project.kind === "postgresql") throw refuse("Unsupported", `${project.name} is in the PostgreSQL Store ${project.store}, and this home is placed in ${settings.placement.name}: its projects open only the SQLite Store on their own VM's disk`, null); const image = settings.bundle ? bundleImage(settings.bundle) : null; return { HOME: callHome(settings), @@ -392,21 +394,27 @@ export function deploymentEnv(settings, project) { * there, so `volume.list`, `volume.remove`, `sandbox.list`, * `sandbox.list_leftovers` and `sandbox.clean_leftovers` refuse with that * reason instead of answering from the host, and `sandbox.sweep` answers - * `{ host: false }`. `endpoints` answers, per project, the endpoint file - * `@layerfs/agent` sends that project's calls to. + * `{ host: false }`. `homeStores: false` says the home keeps no Store of its + * own (#527 F3): the runtime's Store, remote and PostgreSQL calls refuse + * before any effect, as `init` without a project and `storePath` do here. + * `endpoints` answers, per project, the endpoint file `@layerfs/agent` sends + * that project's calls to. */ export function vmPlatform(settingName) { if (!PROVIDERS[settingName]) throw refuse("Unsupported", `no VM provider is implemented for vm:${settingName}`, null); + const placement = `vm:${settingName}`; return { - name: `vm:${settingName}`, + name: placement, hostDocker: false, hostSandboxes: false, + homeStores: false, endpoints: (settings) => (project) => endpointFile(settings.home, project), status, start, restart, /** Init runs in that project's worker; the source folder is copied into its VM first. */ async init(settings, project) { + if (typeof project?.name !== "string") throw noHomeStores(placement, "a Store-level setup that names no project"); await start(settings, project.name); const provider = providerOf(settings), name = vmNameOf(settings, project.name); const target = importPath(project.source); @@ -420,7 +428,11 @@ export function vmPlatform(settingName) { docker: () => { throw refuse("Unsupported", `this home is placed in vm:${settingName}: its Stores and Sandboxes are inside each project's VM, so host Docker does not describe it`, null); }, - storePath: () => storeFile(), + // every project's Store is at the same guest path in its own VM: a path by + // volume alone would map every Store of the home to that one file + storePath: () => { + throw noHomeStores(placement, "a Store path by volume"); + }, homeNames: (settings) => homeNames(settings.home), async removeHome(settings, name) { rmSync(join(settings.home, name), { recursive: true, force: true }); diff --git a/api/runtime/src/project/init.js b/api/runtime/src/project/init.js index 7efb9627f..308904d58 100644 --- a/api/runtime/src/project/init.js +++ b/api/runtime/src/project/init.js @@ -19,6 +19,7 @@ import { setTimeout as pause } from "node:timers/promises"; import { INIT_TIMEOUT_MS, LayerFS, LayerFSError } from "@layerfs/agent"; import { invokeBackend } from "@layerfs/agent/internal"; import { deploymentEnv, withEnv } from "../clients.js"; +import { homeStores } from "../platform/shared.js"; import { callHome, missing } from "../settings.js"; import { NAME, record, saveRecord } from "./list.js"; import { entries, named, put, storeFields, update } from "../store/registry.js"; @@ -63,6 +64,7 @@ export async function prepare(runtime, name, folder, options = {}, pending = new /** An Init into the existing SQLite Store `options.store` (#506): the * project gets no volume of its own; a Store policy is the Store's. */ async function prepareInto(runtime, name, folder, options, pending) { + homeStores(runtime, "runtime.project.start_init into a Store"); if (options.image !== undefined) throw refuse("InvalidInput", "a project added to a Store has no image of its own; its Sandboxes take the runtime's"); const store = await named(runtime, options.store); if (store.kind !== "sqlite") throw refuse("Unsupported", `a project is added only to a SQLite Store; ${store.name} is a PostgreSQL schema (import a SQLite Store into it instead)`); diff --git a/api/runtime/src/store/calls.js b/api/runtime/src/store/calls.js index a7caf5c57..bef61b0dd 100644 --- a/api/runtime/src/store/calls.js +++ b/api/runtime/src/store/calls.js @@ -32,11 +32,12 @@ export const shown = (s, local = null) => ({ /** Each local SQLite Store's sizes, open state and heads, from the process that sees its volume * (this one on Linux, the worker on macOS and Windows). One call for all; a call that fails - * (no worker yet, a volume this process cannot read) leaves them null. */ + * (no worker yet, a volume this process cannot read) leaves them null, and so does a placement + * that names no Store path by volume (a `vm:` home, #527 F3), which makes no call. */ async function locals(runtime, stores) { - const asked = stores.filter((s) => s.kind === "sqlite" && s.volume).map((s) => ({ store: s.name, storePath: storeFields(runtime, s).storePath })); - if (!asked.length) return new Map(); try { + const asked = stores.filter((s) => s.kind === "sqlite" && s.volume).map((s) => ({ store: s.name, storePath: storeFields(runtime, s).storePath })); + if (!asked.length) return new Map(); const answer = await call("runtime.store.stat", { home: callHome(runtime.settings), stores: asked }); return new Map(answer.map((entry) => [entry.store, entry])); } catch { diff --git a/api/runtime/test/vm_placement.mjs b/api/runtime/test/vm_placement.mjs index a1bf156c1..4e65b4a9e 100644 --- a/api/runtime/test/vm_placement.mjs +++ b/api/runtime/test/vm_placement.mjs @@ -5,7 +5,7 @@ // fixture keeps one VM record per project, maps each guest's absolute paths // under a temp folder, and starts the adapter's bundle worker so step ④'s // readiness is real. -// node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|apple-container +// node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|cleanup import assert from "node:assert/strict"; import { chmodSync, cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; @@ -351,6 +351,50 @@ try { await runtime.close(); restoreWorker(work); } + } else if (selected === "stores") { + // #527 F3: a `vm:` home keeps no Store of its own (one Store per project, in its VM), so + // every call on the home's Stores, remotes or PostgreSQL refuses Unsupported before any effect + makeBundle(); + const state = join(work, "msb"); + mkdirSync(state); + const restore = standIn("msb", MSB, state); + const runtime = await LayerFSRuntime.open({ home, bundle, placement: "vm:microsandbox", containerPrefix: prefix, platform: "linux", sweep: false }); + try { + project("shop"); + // a PostgreSQL Store a registry could still hold + writeFileSync(join(home, "stores.json"), JSON.stringify({ version: 2, stores: [{ name: "pgs", kind: "postgresql", connection: "pgc", schema: "pgs", synchronousCommit: "off", created: 1, projects: [{ name: "pga" }] }] })); + const source = join(work, "source"); + mkdirSync(source); + const refused = { code: "Unsupported", message: /vm:microsandbox home: each project's Store is in that project's own VM/ }; + const url = "postgresql://user@db/layerfs"; + await assert.rejects(runtime.store.create("fresh"), refused); + await assert.rejects(runtime.store.start_load("r2", { file: "fresh" }), refused); + await assert.rejects(runtime.store.start_publish("shop", { remote: "r2" }), refused); + await assert.rejects(runtime.store.start_push("shop"), refused); + await assert.rejects(runtime.store.start_send("shop", { remote: "r2", file: "copy" }), refused); + await assert.rejects(runtime.store.remove("shop", { confirm: "shop" }), refused); + await assert.rejects(runtime.store.attach_postgresql({ name: "pg2", connection: "pgc", schema: "pg2", url }), refused); + await assert.rejects(runtime.store.start_import_postgresql("shop", { connection: "pgc", schema: "pg3", url }), refused); + await assert.rejects(runtime.remote.list(), refused); + await assert.rejects(runtime.remote.add({ name: "r2", provider: "minio" }), refused); + await assert.rejects(runtime.postgresql.status({ url }), refused); + await assert.rejects(runtime.project.start_init("blog", source, { store: "shop" }), { ...refused, message: /runtime\.project\.start_init into a Store/ }); + // the platform hooks those calls reach refuse too, rather than crash on `project.name` or + // map every Store of the home to the one guest path each VM holds its own Store at + await assert.rejects(runtime.platform.init(runtime.settings), refused); + assert.throws(() => runtime.platform.storePath(runtime.settings, "lfs-shop-store-1"), refused); + // a PostgreSQL project is refused before its client is made + await assert.rejects(runtime.project.get_state("pga", undefined, { store: "pgs", url }), { code: "Unsupported", message: /PostgreSQL Store pgs.*vm:microsandbox/ }); + // nothing reached the provider: no VM, no disk, no copy + assert.deepEqual(calls(state), [], "every refusal came before any effect"); + assert.equal(existsSync(endpointFile(home, "shop")), false); + // the home's Stores are still listed, from its records, with no stats asked of any process + assert.deepEqual((await runtime.store.list()).map((s) => [s.name, s.kind, s.bytes]), [["pgs", "postgresql", null], ["shop", "sqlite", null]]); + } finally { + restore(); + await runtime.close(); + restoreWorker(work); + } } else if (selected === "apple-container") { makeBundle(); const state = join(work, "container"); @@ -466,7 +510,7 @@ try { rmSync(hidden, { recursive: true, force: true }); } } else { - throw new Error("select settings, flow, two, bundle, delete, hosts, apple-container, ssh or cleanup"); + throw new Error("select settings, flow, two, bundle, delete, hosts, stores, apple-container, ssh or cleanup"); } } finally { rmSync(work, { recursive: true, force: true }); From 18b0810804671c47b22d61910344947ecc7ce896 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:11:01 +0800 Subject: [PATCH 05/37] runtime: both deployments name the Sandbox backend (#527 step 3) F4: the local deployment (clients.js) never set LAYERFS_SANDBOX, _SANDBOX_BACKEND or _LOCAL_DIR, so whatever the runtime's own process had in its environment reached every project client it made (a host LAYERFS_SANDBOX=native turned a local home's Sandboxes native). The `vm:` deployment read `process.env.LAYERFS_SANDBOX_BACKEND`, so a host value of `native` replaced the VM's `namespaces` backend. Now the local deployment, for SQLite and PostgreSQL projects, sets LAYERFS_SANDBOX=docker and unsets LAYERFS_SANDBOX_BACKEND, _LOCAL_DIR and _IMAGE_ARCHIVE (the native-only settings) for the client it makes; the VM deployment sets SANDBOX_BACKEND=namespaces always. Setting names are unchanged (D3's one-setting rename is step 11). api/docs/runtime.md says so and drops "an explicit LAYERFS_SANDBOX_BACKEND wins". Tests: new `runtime.mjs backend` (ambient native/namespaces settings, the client's deploy says docker and carries no native-only field, the ambient values are restored); `vm_placement.mjs flow` now sets a host LAYERFS_SANDBOX_BACKEND=native and still expects namespaces. Both fail on the parent. No tests deleted. Checks (each under the 120 s `to` wrapper): - node api/runtime/test/runtime.mjs: all 16 cases PASS (with backend) - node api/runtime/test/vm_placement.mjs: all 10 cases PASS Production LOC: 123155 -> 123158 (delta +3) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 27d1784df3 and the staged tree ed50744bd3; after: core 41405; engine 77508; api 4245; Co-Authored-By: Claude Opus 5.5 --- api/docs/runtime.md | 10 +++++++-- api/runtime/src/clients.js | 13 +++++++++--- api/runtime/src/platform/vm/index.js | 5 +++-- api/runtime/test/runtime.mjs | 31 ++++++++++++++++++++++++++-- api/runtime/test/vm_placement.mjs | 5 ++++- 5 files changed, 54 insertions(+), 10 deletions(-) diff --git a/api/docs/runtime.md b/api/docs/runtime.md index 2c675ad0c..1e37a4c73 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -61,6 +61,12 @@ checked once at `open`), `volumes` (Linux), in one Linux VM, below) and on Windows `wsl: { distribution, user, node, home }`. A missing setting does not refuse `open`: `status().missing` lists it. +The runtime names each project's Sandbox backend itself (#527 F4): a `local` +home's clients get `LAYERFS_SANDBOX=docker` with `LAYERFS_SANDBOX_BACKEND`, +`LAYERFS_LOCAL_DIR` and `LAYERFS_IMAGE_ARCHIVE` unset, and a `vm:` home's get +native Sandboxes on the namespaces backend. Values of those settings in the +runtime's own environment do not reach its clients. + ## Init `start_init(name, folder, { image, timeout })` refuses a bad name, folder, @@ -258,8 +264,8 @@ The adapter's five steps, each attempted once, all for one named project: Init runs as one more call to that project's worker: `platform.init` starts its VM and copies the source folder into `/layerfs/import`, and `LayerFS.init` reads it there. `deploymentEnv` gives clients and agents the VM's settings: -`LAYERFS_SANDBOX=native`, `LAYERFS_SANDBOX_BACKEND=namespaces` (an explicit -`LAYERFS_SANDBOX_BACKEND` in the caller's environment wins), `LAYERFS_DAEMON`, +`LAYERFS_SANDBOX=native`, `LAYERFS_SANDBOX_BACKEND=namespaces` (always: a +`LAYERFS_SANDBOX_BACKEND` in the caller's environment does not replace it), `LAYERFS_DAEMON`, `LAYERFS_LOCAL_DIR`, `LAYERFS_HOME=/layerfs/home`, the Store's `LAYERFS_STORE_PATH`, this project's `LAYERFS_WORKER_ENDPOINT`, and the bundle image's `LAYERFS_IMAGE` when it has one — no `LAYERFS_DOCKER` or `_VOLUME`. diff --git a/api/runtime/src/clients.js b/api/runtime/src/clients.js index 3de1b675a..bdd8c790a 100644 --- a/api/runtime/src/clients.js +++ b/api/runtime/src/clients.js @@ -9,17 +9,23 @@ import { callHome } from "./settings.js"; const IDLE_MS = 60_000; +/** The local placement's Sandbox backend: Docker, named rather than read + * from this process's environment (#527 F4). "" unsets a native-only setting + * an ambient LAYERFS_SANDBOX_BACKEND, _LOCAL_DIR or _IMAGE_ARCHIVE would set. */ +const DOCKER_BACKEND = { SANDBOX: "docker", SANDBOX_BACKEND: "", LOCAL_DIR: "", IMAGE_ARCHIVE: "" }; + /** The environment one project's client (and its agents' bash calls) use. A * platform may replace it whole (`deploymentEnv`), as a `vm:` home * does: its deployment is native Sandboxes in the VM's namespace backend, not - * host Docker. A project of a PostgreSQL Store (#506) has no volume; its - * Store path is `postgresql:`, and its connection's URL is added only - * when the call gave one (`project.url`). */ + * host Docker. Otherwise the backend is Docker. A project of a PostgreSQL + * Store (#506) has no volume; its Store path is `postgresql:`, and its + * connection's URL is added only when the call gave one (`project.url`). */ export function deploymentEnv(settings, platform, project) { if (platform.deploymentEnv) return platform.deploymentEnv(settings, project); if (project.kind === "postgresql") { return { HOME: callHome(settings), + ...DOCKER_BACKEND, DOCKER: settings.docker, IMAGE: project.image ?? settings.image ?? "", DAEMON: settings.daemon ?? "", @@ -32,6 +38,7 @@ export function deploymentEnv(settings, platform, project) { } return { HOME: callHome(settings), + ...DOCKER_BACKEND, DOCKER: settings.docker, IMAGE: project.image ?? settings.image ?? "", DAEMON: settings.daemon ?? "", diff --git a/api/runtime/src/platform/vm/index.js b/api/runtime/src/platform/vm/index.js index bd3e6fbfe..91b332d11 100644 --- a/api/runtime/src/platform/vm/index.js +++ b/api/runtime/src/platform/vm/index.js @@ -365,7 +365,8 @@ const stores = { }, }; -/** The guest home, and the deployment inside the project's VM: native Sandboxes, the namespace backend. */ +/** The guest home, and the deployment inside the project's VM: native Sandboxes, the namespace + * backend, named here rather than read from this process's environment (#527 F4). */ export function deploymentEnv(settings, project) { // a VM's projects open the SQLite Store on that VM's disk only (#527 F3) if (project.kind === "postgresql") throw refuse("Unsupported", `${project.name} is in the PostgreSQL Store ${project.store}, and this home is placed in ${settings.placement.name}: its projects open only the SQLite Store on their own VM's disk`, null); @@ -373,7 +374,7 @@ export function deploymentEnv(settings, project) { return { HOME: callHome(settings), SANDBOX: "native", - SANDBOX_BACKEND: process.env.LAYERFS_SANDBOX_BACKEND || "namespaces", + SANDBOX_BACKEND: "namespaces", DAEMON: GUEST.daemon, LOCAL_DIR: GUEST.local, // the Sandbox image this VM's bundle carries, when it carries one (V7): diff --git a/api/runtime/test/runtime.mjs b/api/runtime/test/runtime.mjs index 263589fbc..8bc76102e 100644 --- a/api/runtime/test/runtime.mjs +++ b/api/runtime/test/runtime.mjs @@ -1,6 +1,6 @@ // @layerfs/runtime with the agent's stand-in binding and a stub Docker (#428): // no Store, Docker or daemon. One case per command: -// node api/runtime/test/runtime.mjs surface|home-mode|projects|init|state|events|leftovers|sandboxes|volumes|transport-order|macos-worker|worker-frames|docker-default|worker-docker|stores +// node api/runtime/test/runtime.mjs surface|home-mode|projects|init|state|events|leftovers|sandboxes|volumes|transport-order|macos-worker|worker-frames|docker-default|worker-docker|stores|backend import assert from "node:assert/strict"; import { appendFileSync, chmodSync, existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, statSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; @@ -697,8 +697,35 @@ try { assert.equal(JSON.parse(readFileSync(join(home, "stores.json"), "utf8")).version, 2); rmSync(folder, { recursive: true, force: true }); await runtime.close(); + } else if (selected === "backend") { + // #527 F4: the local deployment names Docker; ambient native settings in this process do not leak into it + const ambient = { SANDBOX: "native", SANDBOX_BACKEND: "namespaces", LOCAL_DIR: "/ambient/local", IMAGE_ARCHIVE: "/ambient/image.tar" }; + for (const [name, value] of Object.entries(ambient)) process.env[`LAYERFS_${name}`] = value; + try { + const { runtime } = await opened(); + project("shop"); + mkdirSync(join(home, ".runtime", "projects"), { recursive: true }); + writeFileSync(join(home, ".runtime", "projects", "shop.json"), JSON.stringify({ name: "shop", volume: "vol-shop" })); + native.sandboxList = []; + native.workspaceList = []; + const before = native.calls.length; + await runtime.project.get_state("shop"); + const deploy = native.args[before].deploy; + assert.equal(native.calls[before], "project.list_branches"); + assert.equal(deploy.sandbox, "docker", "the local placement names its backend"); + assert.deepEqual(["sandboxBackend", "localDir", "imageArchive"].filter((name) => name in deploy), [], "no native-only setting leaks in"); + assert.equal(deploy.volume, "vol-shop"); + const { deploymentEnv } = await import("../src/clients.js"); + const pg = deploymentEnv(runtime.settings, runtime.platform, { name: "api", kind: "postgresql", store: "main" }); + assert.deepEqual([pg.SANDBOX, pg.SANDBOX_BACKEND, pg.LOCAL_DIR, pg.IMAGE_ARCHIVE], ["docker", "", "", ""], "a PostgreSQL project's deployment names it too"); + await runtime.close(); + // the ambient values are this process's again once the client is made + assert.deepEqual(Object.keys(ambient).map((name) => process.env[`LAYERFS_${name}`]), Object.values(ambient)); + } finally { + for (const name of Object.keys(ambient)) delete process.env[`LAYERFS_${name}`]; + } } else { - throw new Error("select surface, home-mode, projects, init, state, events, leftovers, sandboxes, volumes, transport-order, macos-worker, worker-frames, docker-default, worker-docker or stores"); + throw new Error("select surface, home-mode, projects, init, state, events, leftovers, sandboxes, volumes, transport-order, macos-worker, worker-frames, docker-default, worker-docker, stores or backend"); } } finally { rmSync(work, { recursive: true, force: true }); diff --git a/api/runtime/test/vm_placement.mjs b/api/runtime/test/vm_placement.mjs index 4e65b4a9e..634fdbbb7 100644 --- a/api/runtime/test/vm_placement.mjs +++ b/api/runtime/test/vm_placement.mjs @@ -186,10 +186,13 @@ try { assert.equal(existsSync(guestPath(state, vmName("shop"), `/layerfs/bundle/images/${image}.tar`)), true, "the image archive came in with the bundle"); // the client side: this project's deployment, and this project's endpoint + // #527 F4: the VM deployment names its backend; a host LAYERFS_SANDBOX_BACKEND does not replace it + process.env.LAYERFS_SANDBOX_BACKEND = "native"; const env = deploymentEnv(runtime.settings, runtime.platform, { name: "shop" }); + delete process.env.LAYERFS_SANDBOX_BACKEND; assert.equal(env.WORKER_ENDPOINT, endpointFile(home, "shop"), "agents an integration launches reach this project's VM"); assert.equal(env.STORE_PATH, `${GUEST.store}/global/store.sqlite`, "the Store disk is the Store's directory"); - assert.equal(env.SANDBOX_BACKEND, "namespaces"); + assert.deepEqual([env.SANDBOX, env.SANDBOX_BACKEND], ["native", "namespaces"]); assert.equal(env.IMAGE, `sha256:${image}`, "a bundle with an image gives the deployment its digest"); assert.equal(env.IMAGE_ARCHIVE, `${GUEST.bundle}/images/${image}.tar`, "and the archive in this VM's own copy of the bundle"); assert.equal(env.LOCAL_DIR, `${GUEST.store}/local`, "Sandbox directories are on the Store disk, never the VM's own root"); From 4083e75590442300e34b68284bfa2662d96590b2 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:11:30 +0800 Subject: [PATCH 06/37] runtime, agent: refuse VM providers and native backends on hosts they do not run on (#527 step 8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Placement settings accepted any implemented VM provider on any host, and the agent sent LAYERFS_SANDBOX=native (or the namespaces backend) from a Windows process to its WSL2 worker's Linux addon, untested (§3.1 matrix). - settings.js: each VM provider lists the host systems it runs on, and `resolveSettings` refuses another host `Unsupported` before anything is made: apple-container on macOS only; microsandbox (libkrun microVMs) on Linux (KVM) and macOS (Apple silicon); ssh on Linux and macOS. No provider runs on Windows: the VM placement maps host folders into the guest as POSIX paths (vm/index.js `path`). - agent client.js: on Windows `deployment()` refuses LAYERFS_SANDBOX=native, naming LAYERFS_SANDBOX_BACKEND=namespaces when that is set, `Unsupported`; a Windows Sandbox is Docker through the WSL2 worker. Docker deployments are unchanged. api/docs/runtime.md and agent.md say so. Tests: `vm_placement.mjs settings` covers each provider on each host; `native_deployment.mjs` fakes process.platform=win32 and checks both refusals, an unchanged Docker deployment, and that sandbox.create makes no binding call. Both fail on the parent. No tests deleted. Checks (each under the 120 s `to` wrapper): - node api/runtime/test/runtime.mjs: all 16 cases PASS - node api/runtime/test/vm_placement.mjs: all 10 cases PASS - node api/agent/test/native_deployment.mjs, calls.mjs, exec_output.mjs, packaging.mjs (surface lifecycle copy sandbox worker-route worker-per-project transport-order), trace.mjs (all 9 cases): PASS - NOT_RUN (need the real addon or the E2E launcher's Store, not built here; they fail the same way on the parent): binary_write.mjs, init_refusals.mjs, reinit.mjs, packaging.mjs dispatch Production LOC: 123158 -> 123165 (delta +7) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 18b0810804 and the staged tree 485ce56976; after: core 41405; engine 77508; api 4252; Co-Authored-By: Claude Opus 5.5 --- api/agent/src/client.js | 12 ++++++++--- api/agent/test/native_deployment.mjs | 30 ++++++++++++++++++++++++++++ api/docs/agent.md | 2 +- api/docs/runtime.md | 5 +++++ api/runtime/src/settings.js | 25 ++++++++++++++++------- api/runtime/test/vm_placement.mjs | 8 ++++++++ 6 files changed, 71 insertions(+), 11 deletions(-) diff --git a/api/agent/src/client.js b/api/agent/src/client.js index ae919b5df..d67e55d6e 100644 --- a/api/agent/src/client.js +++ b/api/agent/src/client.js @@ -66,8 +66,9 @@ export function sandboxArg(sandbox) { * `sandbox` (LAYERFS_SANDBOX) `native` (Linux or macOS), a Sandbox is a host * daemon: Linux uses FUSE with a root daemon and nonroot commands (501:20); * macOS uses loopback NFS and this user. It needs the daemon and - * `localDir` (LAYERFS_LOCAL_DIR) and no Docker setting. Unset or `docker` is - * Docker; any other value is refused. */ + * `localDir` (LAYERFS_LOCAL_DIR) and no Docker setting; on Windows it is + * refused Unsupported. Unset or `docker` is Docker; any other value is + * refused. */ export function deployment(options = {}, postgresql = false) { const env = (name) => process.env[`LAYERFS_${name}`] || undefined; const sandbox = options.sandbox ?? env("SANDBOX"); @@ -101,13 +102,18 @@ export function deployment(options = {}, postgresql = false) { * same digest Docker deploys) and `imageArchive` (LAYERFS_IMAGE_ARCHIVE, the * docker-archive the bundle carries). */ function nativeDeployment(options, env, sandbox) { + const backend = options.sandboxBackend ?? env("SANDBOX_BACKEND"); + // #527 step 8: Windows runs Docker Sandboxes through its WSL2 worker; it has no native or namespaces backend + if (process.platform === "win32") { + const named = backend === "namespaces" ? "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces" : "deploy.sandbox (LAYERFS_SANDBOX) native"; + throw new LayerFSError("Unsupported", `${named} is not supported on Windows: a Windows Sandbox is Docker, through the WSL2 worker; native runs on Linux or macOS, namespaces on Linux`, null); + } const deploy = { sandbox, daemon: options.daemon ?? env("DAEMON"), localDir: options.localDir ?? env("LOCAL_DIR"), containerPrefix: options.containerPrefix ?? env("CONTAINER_PREFIX"), }; - const backend = options.sandboxBackend ?? env("SANDBOX_BACKEND"); if (backend !== undefined) deploy.sandboxBackend = backend; const required = [["daemon", "DAEMON"], ["localDir", "LOCAL_DIR"]]; if (backend === "namespaces") { diff --git a/api/agent/test/native_deployment.mjs b/api/agent/test/native_deployment.mjs index 4b0d951e3..30fa2a310 100644 --- a/api/agent/test/native_deployment.mjs +++ b/api/agent/test/native_deployment.mjs @@ -140,4 +140,34 @@ const plain = await LayerFS.open("website"); assert.equal("sandbox" in plain.options.deploy, false); assert.equal("localDir" in plain.options.deploy, false); await plain.close(); +// #527 step 8: on Windows a Sandbox is Docker through the WSL2 worker; native +// and namespaces are refused Unsupported before anything is made +const host = Object.getOwnPropertyDescriptor(process, "platform"); +Object.defineProperty(process, "platform", { ...host, value: "win32" }); +try { + clear(); + process.env.LAYERFS_SANDBOX = "native"; + process.env.LAYERFS_DAEMON = "/opt/layerfs-daemon"; + process.env.LAYERFS_LOCAL_DIR = "C:/lfs"; + assert.throws(() => deployment(), (e) => e.code === "Unsupported" && /LAYERFS_SANDBOX\) native is not supported on Windows/.test(e.message)); + process.env.LAYERFS_SANDBOX_BACKEND = "namespaces"; + assert.throws(() => deployment(), (e) => e.code === "Unsupported" && /LAYERFS_SANDBOX_BACKEND\) namespaces is not supported on Windows/.test(e.message)); + // Docker is unchanged there + clear(); + setDocker(); + assert.deepEqual(deployment(), docker); + // sandbox.create reaches no binding call + clear(); + store(); + process.env.LAYERFS_SANDBOX = "native"; + process.env.LAYERFS_DAEMON = "/opt/layerfs-daemon"; + process.env.LAYERFS_LOCAL_DIR = "C:/lfs"; + const windows = await LayerFS.open("website"); + const made = native.deploys.length; + await assert.rejects(windows.sandbox.create(), { code: "Unsupported" }); + assert.equal(native.deploys.length, made, "no Sandbox was asked for"); + await windows.close(); +} finally { + Object.defineProperty(process, "platform", host); +} console.log("native_deployment: ok"); diff --git a/api/docs/agent.md b/api/docs/agent.md index 919fcc934..28932e475 100644 --- a/api/docs/agent.md +++ b/api/docs/agent.md @@ -147,7 +147,7 @@ Keep each agent's operations on a Workspace sequential. | `LAYERFS_STORE_PATH` | The installed Store file this client's Store calls open: `global/store.sqlite` in the project's volume. On Linux this process opens it, so it must be on a local filesystem the daemons share, such as `/layerfs-store/global/store.sqlite` where the volume is mounted at `/layerfs-store`; otherwise Store calls fail `Unsupported`. On macOS and Windows the worker opens it, so it is the path inside the worker's Linux, `/var/lib/docker/volumes//_data/global/store.sqlite`. On any other platform Store calls fail `Unsupported`. Unset, they fail `InvalidInput` everywhere. | | `LAYERFS_CONTAINER_PREFIX` | Optional. Names every container this client creates `-` (default prefix `layerfs-`); another LayerFS home on the same Docker engine sets its own, so names never collide. Docker's name rule applies (an ASCII letter or digit, then letters, digits, `_`, `.`, `-`, at most 128). A name another container holds refuses the create before any effect. | | `LAYERFS_DAEMON_HOST` | Optional. The host this process dials for a daemon's port. Each daemon publishes its port on the Docker host's `127.0.0.1` only, and that stays so. A client inside a container does not share that loopback, so it names the host that reaches it, `host.docker.internal` on Docker Desktop. One resolution, its first address, one connect; nothing is tried again. Unset, the client dials `127.0.0.1`. | -| `LAYERFS_SANDBOX` | Optional. Unset or `docker`: a Sandbox is a Docker container, exactly as described here. `native` (macOS only): a Sandbox is a daemon process of this user, with no container, no root and no Docker setting read; Workspaces are served over loopback NFS and mounted by this machine's own NFS client, and commands run as this user (see [Native Sandboxes](#native-sandboxes-macos)). Elsewhere `sandbox.create` refuses `native` as `Unsupported`. Any other value is refused as `InvalidInput` before anything is made. | +| `LAYERFS_SANDBOX` | Optional. Unset or `docker`: a Sandbox is a Docker container, exactly as described here. `native` (macOS only): a Sandbox is a daemon process of this user, with no container, no root and no Docker setting read; Workspaces are served over loopback NFS and mounted by this machine's own NFS client, and commands run as this user (see [Native Sandboxes](#native-sandboxes-macos)). Elsewhere `sandbox.create` refuses `native` as `Unsupported`; on Windows the agent itself refuses it, and `LAYERFS_SANDBOX_BACKEND=namespaces`, before anything is made (a Windows Sandbox is Docker, through the WSL2 worker). Any other value is refused as `InvalidInput` before anything is made. | | `LAYERFS_LOCAL_DIR` | With `LAYERFS_SANDBOX=native`, required: an existing absolute directory, owned by the running user, not group/other writable and traversable by others (0755). Each native Sandbox gets its own directory under it. | | `LAYERFS_SANDBOX_BACKEND` | With `LAYERFS_SANDBOX=native` on Linux, optional: `native` (unset) or `namespaces`. `namespaces` puts each Sandbox's daemon in its own mount, PID and IPC namespaces and its own cgroup v2 directory, and runs commands as the sandbox's uid:gid with no capabilities and no-new-privs; see [Namespace Sandboxes (Linux)](#namespace-sandboxes-linux). It needs root, cgroup v2, `/dev/fuse` and `user.max_user_namespaces=0`, and is refused `Unsupported` elsewhere or without them. Any other value is refused `InvalidInput` before anything is made. It is read when the client is made and sent with every call, so a Sandbox made with one backend is never reopened as the other. | | `LAYERFS_TRACE` | Optional per-call trace file (see [the call trace](backend.md#the-call-trace)); unset means no trace. | diff --git a/api/docs/runtime.md b/api/docs/runtime.md index 1e37a4c73..5336c2a7a 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -193,6 +193,11 @@ real CLI by `test/verify/vm_real.mjs` and by H40's own run: `microsandbox` (`msb` 0.7.8), `apple-container` (`container` 1.6.1) and `ssh` (any Linux host the user provides, reached with the system `ssh` client; see [the SSH provider](#the-ssh-provider-any-linux-host) below). +Each provider runs on its own host systems, checked when the settings resolve +and refused `Unsupported` elsewhere: `apple-container` on macOS only, +`microsandbox` on Linux (KVM) and macOS (Apple silicon), `ssh` on Linux and +macOS. No provider runs on a Windows host, since the placement maps this +host's folders into the guest as POSIX paths (#527 step 8). ```sh LAYERFS_PLACEMENT=vm:microsandbox layerfs-home # any integration that sets it diff --git a/api/runtime/src/settings.js b/api/runtime/src/settings.js index b1ce588cb..beffcca3e 100644 --- a/api/runtime/src/settings.js +++ b/api/runtime/src/settings.js @@ -9,8 +9,16 @@ import { LayerFSError } from "@layerfs/agent"; const PLATFORMS = { linux: "linux", darwin: "macos", win32: "windows" }; const DEFAULT_DOCKER = "/var/run/docker.sock"; -/** Where a home's Store and Sandboxes live: this machine (`local`, today) or one Linux VM per home (V9). */ -const PROVIDERS = ["microsandbox", "apple-container", "ssh"]; +/** + * Where a home's Store and Sandboxes live: this machine (`local`, today) or one + * Linux VM per project (V9), by provider, with the host systems each runs on + * (#527 step 8). Apple Container is macOS only; Microsandbox runs libkrun + * microVMs on Linux (KVM) and macOS (Apple silicon); `ssh` needs only the + * system ssh client and tar. None runs on Windows: the VM placement maps this + * host's folders into the guest as POSIX paths. + */ +const PROVIDERS = { microsandbox: ["linux", "macos"], "apple-container": ["macos"], ssh: ["linux", "macos"] }; +const NAMES = { linux: "Linux", macos: "macOS", windows: "Windows" }; /** The VM's own settings: the image that holds node and the guest base, and its size. */ const VM = { image: "node:22-trixie-slim", cpus: 2, memory: "2G", storeSize: "20G" }; /** Where the VM sees the home, the Store disk, the bundle and its working state (§5, §6). */ @@ -34,16 +42,19 @@ export const GUEST = Object.freeze({ /** * `placement`: absent or `local` (this machine's Docker, macOS worker container * or WSL2 worker; behavior unchanged), or `vm:` (one Linux VM per - * home, §6). A VM provider name that is not implemented is refused here, not - * later, so a typo cannot look like `local`. + * home, §6). A VM provider name that is not implemented, or one that does not + * run on this host's `platform`, is refused here, not later, so a typo cannot + * look like `local`. */ -function placement(given) { +function placement(given, platform) { const text = given ?? process.env.LAYERFS_PLACEMENT ?? "local"; if (typeof text !== "string" || !text) throw new LayerFSError("InvalidInput", "placement must be `local` or `vm:`", null); if (text === "local") return { kind: "local", name: "local" }; const provider = /^vm:(.+)$/.exec(text)?.[1]; if (!provider) throw new LayerFSError("InvalidInput", `placement is \`local\` or \`vm:\`, not ${text}`, null); - if (!PROVIDERS.includes(provider)) throw new LayerFSError("Unsupported", `no VM provider is implemented for ${text}; it is vm:${PROVIDERS.join(" or vm:")}`, null); + if (!Object.hasOwn(PROVIDERS, provider)) throw new LayerFSError("Unsupported", `no VM provider is implemented for ${text}; it is vm:${Object.keys(PROVIDERS).join(" or vm:")}`, null); + const hosts = PROVIDERS[provider]; + if (!hosts.includes(platform)) throw new LayerFSError("Unsupported", `${text} runs on ${hosts.map((host) => NAMES[host]).join(" and ")} hosts, not ${NAMES[platform]}`, null); return { kind: "vm", name: text, provider }; } @@ -101,7 +112,7 @@ export function resolveSettings(given = {}) { const platform = given.platform ?? PLATFORMS[process.platform]; if (!Object.values(PLATFORMS).includes(platform)) throw new LayerFSError("Unsupported", `LayerFS runs on Linux, macOS and Windows, not ${process.platform}`, null); const bundle = given.bundle || null; - const where = placement(given.placement); + const where = placement(given.placement, platform); const settings = { platform, placement: where, diff --git a/api/runtime/test/vm_placement.mjs b/api/runtime/test/vm_placement.mjs index 634fdbbb7..2f69a08d6 100644 --- a/api/runtime/test/vm_placement.mjs +++ b/api/runtime/test/vm_placement.mjs @@ -117,6 +117,14 @@ try { assert.deepEqual([sized.vm.cpus, sized.vm.storeSize], [3, "64G"]); assert.throws(() => resolveSettings({ home, platform: "linux", placement: "vm:nope" }), { code: "Unsupported", message: /vm:microsandbox or vm:apple-container/ }); assert.throws(() => resolveSettings({ home, platform: "linux", placement: "nope" }), { code: "InvalidInput", message: /local.*vm:/ }); + // #527 step 8: each provider runs on its own host systems, refused when the settings resolve + assert.throws(() => resolveSettings({ home, platform: "linux", placement: "vm:apple-container" }), { code: "Unsupported", message: /vm:apple-container runs on macOS hosts, not Linux/ }); + assert.throws(() => resolveSettings({ home, platform: "windows", placement: "vm:apple-container" }), { code: "Unsupported", message: /runs on macOS hosts, not Windows/ }); + for (const provider of ["microsandbox", "ssh"]) { + assert.throws(() => resolveSettings({ home, platform: "windows", placement: `vm:${provider}` }), { code: "Unsupported", message: new RegExp(`vm:${provider} runs on Linux and macOS hosts, not Windows`) }); + for (const host of ["linux", "macos"]) assert.equal(resolveSettings({ home, platform: host, placement: `vm:${provider}` }).placement.provider, provider); + } + assert.equal(resolveSettings({ home, platform: "macos", placement: "vm:apple-container" }).placement.provider, "apple-container"); assert.throws(() => resolveSettings({ home, platform: "linux", placement: "vm:microsandbox", vm: { memory: "8" } }), { code: "InvalidInput", message: /memory/ }); // vm:ssh settings const sshSettings = resolveSettings({ From 7080ac91604a00ae9edf6b07e1ec7986ebbb6a3e Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:12:00 +0800 Subject: [PATCH 07/37] runtime: platform capabilities replace platform.name branches in Init (#527 step 10d) A move, with no behaviour change: project/init.js chose how to run and judge an Init by comparing `platform.name` with "macos" and "windows" (runInit and runInto, two places each). The platforms now declare it: - macos `initCounts: false`: Init runs in its own container, whose counts this process cannot read, so Init is not watched; - windows `uncertainInit: true`: any failed Init is kept and recorded in init-failures.jsonl, never cleaned up on a guess. Absent, as on linux and vm:, Init is watched and only `Unknown` is uncertain, as before. `platform.name` stays in init-failures.jsonl and in messages. api/docs/runtime.md lists the two capabilities. No tests deleted or changed. Checks (each under the 120 s `to` wrapper): - node api/runtime/test/runtime.mjs: all 16 cases PASS - node api/runtime/test/vm_placement.mjs: all 10 cases PASS Production LOC: 123165 -> 123167 (delta +2) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 4083e75590 and the staged tree b7021c5b93; after: core 41405; engine 77508; api 4254; Co-Authored-By: Claude Opus 5.5 --- api/docs/runtime.md | 5 ++++- api/runtime/src/platform/macos/index.js | 2 ++ api/runtime/src/platform/windows/index.js | 2 ++ api/runtime/src/project/init.js | 13 +++++++------ 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/api/docs/runtime.md b/api/docs/runtime.md index 5336c2a7a..593802e88 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -131,7 +131,10 @@ lines from now on, or from `since`, each with `actor`, its trace file's name. Each platform folder implements one interface (`endpoint`, `status`, `start`, `restart`, `init`, `path`, the Store hooks `makeStore`, `storeHolders`, `releaseStoreHolders` and `removeStore`, and the Docker, home -and disk helpers); `platform/vm/` implements the same interface over a VM +and disk helpers) and may declare capabilities instead of being named: +`initCounts: false` (macOS: this process cannot read Init's counts) and +`uncertainInit: true` (Windows: any failed Init is kept and recorded, never +cleaned up); `platform/vm/` implements the same interface over a VM (see [Placement](#placement-one-linux-vm-per-home)). - **Linux** runs Store calls in this process. There is no worker: diff --git a/api/runtime/src/platform/macos/index.js b/api/runtime/src/platform/macos/index.js index 5702bd8dc..9204cd2ce 100644 --- a/api/runtime/src/platform/macos/index.js +++ b/api/runtime/src/platform/macos/index.js @@ -115,6 +115,8 @@ async function restart(settings) { const platform = { name: "macos", + /** Init runs in a container of its own, whose counts this process cannot read. */ + initCounts: false, endpoint: (settings) => endpointFile(settings.home), status, start, diff --git a/api/runtime/src/platform/windows/index.js b/api/runtime/src/platform/windows/index.js index 8bd4b693c..3bc8bd026 100644 --- a/api/runtime/src/platform/windows/index.js +++ b/api/runtime/src/platform/windows/index.js @@ -117,6 +117,8 @@ async function restart(settings) { export default { name: "windows", + /** Any failed Init is uncertain: the worker may have installed the Store meanwhile, so nothing is removed on a guess. */ + uncertainInit: true, endpoint: (settings) => endpointFile(settings.home), status, async start(settings) { diff --git a/api/runtime/src/project/init.js b/api/runtime/src/project/init.js index 308904d58..33058cf10 100644 --- a/api/runtime/src/project/init.js +++ b/api/runtime/src/project/init.js @@ -10,7 +10,8 @@ // unchanged: it bounds the Init itself, and when omitted LayerFS.init's // default (INIT_TIMEOUT_MS, 300 s) applies. One attempt. A failed Init removes what it made (the volume, and // the home entry unless another project holds the name); an uncertain one -// (`Unknown`, or any failure on Windows) keeps everything and is recorded in +// (`Unknown`, or any failure where the platform declares `uncertainInit`: +// Windows) keeps everything and is recorded in // `/init-failures.jsonl`, never cleaned up on a guess. import { appendFileSync, existsSync, statSync } from "node:fs"; import { lstat, opendir } from "node:fs/promises"; @@ -108,10 +109,10 @@ export async function runInit(runtime, prepared, report = () => {}) { try { // LayerFS.init reads the environment before its first await const making = withEnv(deploymentEnv(settings, platform, project), () => LayerFS.init(project.name, platform.path(settings, project.source), timeout)); - // macOS: Init runs in its own container, whose counts this process cannot read - client = await (platform.name === "macos" ? making : watching(runtime, project.name, making, report)); + // a platform whose Init counts this process cannot read (macOS: Init runs in its own container) says so + client = await (platform.initCounts === false ? making : watching(runtime, project.name, making, report)); } catch (error) { - if (error?.code === "Unknown" || platform.name === "windows") { + if (error?.code === "Unknown" || platform.uncertainInit) { appendFileSync(join(settings.stateDir, "init-failures.jsonl"), JSON.stringify({ project, platform: platform.name, home: callHome(settings), code: error?.code ?? null, message: error?.message ?? String(error), at: new Date().toISOString() }) + "\n"); throw error; } @@ -140,9 +141,9 @@ async function runInto(runtime, prepared, report) { const args = { ...storeFields(runtime, store), name: project.name, path: platform.path(settings, project.source), timeoutMs: timeout ?? INIT_TIMEOUT_MS }; const making = invokeBackend("runtime.store.add_project", args, {}); try { - await (platform.name === "macos" ? making : watching(runtime, project.name, making, report, store.name)); + await (platform.initCounts === false ? making : watching(runtime, project.name, making, report, store.name)); } catch (error) { - if (error?.code === "Unknown" || platform.name === "windows") { + if (error?.code === "Unknown" || platform.uncertainInit) { appendFileSync(join(settings.stateDir, "init-failures.jsonl"), JSON.stringify({ project, platform: platform.name, home: callHome(settings), code: error?.code ?? null, message: error?.message ?? String(error), at: new Date().toISOString() }) + "\n"); } throw error; From 9952d16451e517950c885cbab06beb1564c37223 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:12:44 +0800 Subject: [PATCH 08/37] docs: fix the platform documentation drift of F7 (#527 step 1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rows of #527 §4 F7 that no later step changes. Not here: the reopen text (agent.md, step 4), the CLI settings list (help.js, step 11) and the macOS-native Store sentence in AGENTS.md (owner decision D5). - api/docs/agent.md: `LAYERFS_SANDBOX=native` is Linux or macOS, not macOS only; the section, now "Native Sandboxes (Linux and macOS)", says Linux runs a root FUSE daemon with commands as 501:20 and no longer says Linux keeps Docker only. Namespace Sandboxes: the root is an overlay of the Sandbox image (LAYERFS_IMAGE, unpacked from LAYERFS_IMAGE_ARCHIVE into LAYERFS_LOCAL_DIR/images), not the VM's userland; `image` is reported as the digest, not `local`; the stale limits (VM userland, read-only binds) give way to the real one (compressed image layers are refused). - AGENTS.md: the VM providers are microsandbox, apple-container and ssh, verified with stand-in providers (real runs: the #527 platform pass); the calls are `project.start_init` and `project.delete`, not `project.init`/`project.remove`. - api/docs/runtime.md: the same "verified" and `project.remove` corrections, and the anchor `#placement-one-linux-vm-per-store`. - layerfs-api/PROVIDERS.md and the layerfs-sandbox Windows README list `Runtime::Namespaces` among the variants. - core/docs/architecture/76-native-mount-session.md and nfs-native-lifecycle.md link into engine/crates; three targets had also moved: bridge control_native.rs is control_mount.rs, overlay lifetime/native.rs is lifetime/kernel.rs (with `revoke_kernel_mount`), and maintenance/native.rs was removed by 1ad1e90f48, which the text now says. Checks: every relinked target exists (scripted check); node --test api/cli/test/cli.test.mjs (reads agent.md's tables): 75/75 PASS under the 120 s `to` wrapper. No tests changed. Production LOC: 123167 -> 123167 (delta 0) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 7080ac9160 and the staged tree 11f4b54e66; after: core 41405; engine 77508; api 4254; Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 9 ++-- api/docs/agent.md | 43 ++++++++++++------- api/docs/runtime.md | 9 ++-- .../architecture/76-native-mount-session.md | 37 ++++++++-------- .../docs/architecture/nfs-native-lifecycle.md | 4 +- engine/crates/layerfs-api/PROVIDERS.md | 6 +-- .../src/backend/windows/README.md | 5 ++- 7 files changed, 64 insertions(+), 49 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 80c78a741..c6d5d05f6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -178,11 +178,12 @@ remains a separate MEMORY/OFF/EXCLUSIVE database file. routes. Store calls therefore leave the caller's process on Linux too, under `vm:` placement only, and a process routes them per project (`useWorker((project) => endpoint)`, or that project's - `LAYERFS_WORKER_ENDPOINT`). `project.init` makes the project's VM and - `project.remove` deletes it with its Store disk; a bare VM delete is refused + `LAYERFS_WORKER_ENDPOINT`). `project.start_init` makes the project's VM and + `project.delete` deletes it with its Store disk; a bare VM delete is refused while the project exists, because that Store is on that disk only and no - remote Store push exists (#506). Implemented and verified providers: - `microsandbox` (`msb`) and `apple-container` (`container` 1.6.1). + remote Store push exists (#506). Implemented providers: `microsandbox` + (`msb`), `apple-container` (`container` 1.6.1) and `ssh`; verified with + stand-in providers; real runs: see the #527 platform pass. `@layerfs/runtime`'s guide and `api/runtime/src/platform/vm/` hold the details. - **One global database, one writer, short holds (owner decision 2026-10-18).** All committed state lives in one SQLite Store file; no sharding, second diff --git a/api/docs/agent.md b/api/docs/agent.md index 28932e475..959be6b82 100644 --- a/api/docs/agent.md +++ b/api/docs/agent.md @@ -147,7 +147,7 @@ Keep each agent's operations on a Workspace sequential. | `LAYERFS_STORE_PATH` | The installed Store file this client's Store calls open: `global/store.sqlite` in the project's volume. On Linux this process opens it, so it must be on a local filesystem the daemons share, such as `/layerfs-store/global/store.sqlite` where the volume is mounted at `/layerfs-store`; otherwise Store calls fail `Unsupported`. On macOS and Windows the worker opens it, so it is the path inside the worker's Linux, `/var/lib/docker/volumes//_data/global/store.sqlite`. On any other platform Store calls fail `Unsupported`. Unset, they fail `InvalidInput` everywhere. | | `LAYERFS_CONTAINER_PREFIX` | Optional. Names every container this client creates `-` (default prefix `layerfs-`); another LayerFS home on the same Docker engine sets its own, so names never collide. Docker's name rule applies (an ASCII letter or digit, then letters, digits, `_`, `.`, `-`, at most 128). A name another container holds refuses the create before any effect. | | `LAYERFS_DAEMON_HOST` | Optional. The host this process dials for a daemon's port. Each daemon publishes its port on the Docker host's `127.0.0.1` only, and that stays so. A client inside a container does not share that loopback, so it names the host that reaches it, `host.docker.internal` on Docker Desktop. One resolution, its first address, one connect; nothing is tried again. Unset, the client dials `127.0.0.1`. | -| `LAYERFS_SANDBOX` | Optional. Unset or `docker`: a Sandbox is a Docker container, exactly as described here. `native` (macOS only): a Sandbox is a daemon process of this user, with no container, no root and no Docker setting read; Workspaces are served over loopback NFS and mounted by this machine's own NFS client, and commands run as this user (see [Native Sandboxes](#native-sandboxes-macos)). Elsewhere `sandbox.create` refuses `native` as `Unsupported`; on Windows the agent itself refuses it, and `LAYERFS_SANDBOX_BACKEND=namespaces`, before anything is made (a Windows Sandbox is Docker, through the WSL2 worker). Any other value is refused as `InvalidInput` before anything is made. | +| `LAYERFS_SANDBOX` | Optional. Unset or `docker`: a Sandbox is a Docker container, exactly as described here. `native` (Linux or macOS): a Sandbox is a daemon process with no container and no Docker setting read. On macOS it runs as this user, without root; Workspaces are served over loopback NFS and mounted by this machine's own NFS client, and commands run as this user. On Linux it needs root: the daemon serves FUSE as root and commands run as 501:20 (see [Native Sandboxes](#native-sandboxes-linux-and-macos)). Elsewhere `sandbox.create` refuses `native` as `Unsupported`; on Windows the agent itself refuses it, and `LAYERFS_SANDBOX_BACKEND=namespaces`, before anything is made (a Windows Sandbox is Docker, through the WSL2 worker). Any other value is refused as `InvalidInput` before anything is made. | | `LAYERFS_LOCAL_DIR` | With `LAYERFS_SANDBOX=native`, required: an existing absolute directory, owned by the running user, not group/other writable and traversable by others (0755). Each native Sandbox gets its own directory under it. | | `LAYERFS_SANDBOX_BACKEND` | With `LAYERFS_SANDBOX=native` on Linux, optional: `native` (unset) or `namespaces`. `namespaces` puts each Sandbox's daemon in its own mount, PID and IPC namespaces and its own cgroup v2 directory, and runs commands as the sandbox's uid:gid with no capabilities and no-new-privs; see [Namespace Sandboxes (Linux)](#namespace-sandboxes-linux). It needs root, cgroup v2, `/dev/fuse` and `user.max_user_namespaces=0`, and is refused `Unsupported` elsewhere or without them. Any other value is refused `InvalidInput` before anything is made. It is read when the client is made and sent with every call, so a Sandbox made with one backend is never reopened as the other. | | `LAYERFS_TRACE` | Optional per-call trace file (see [the call trace](backend.md#the-call-trace)); unset means no trace. | @@ -249,10 +249,17 @@ Daemon/container restart recovery and replay of uncertain operations are exclude Background process ownership is in the native executor, including persisted process identity; the filesystem daemon launches and supervises no commands. -### Native Sandboxes (macOS) - -`LAYERFS_SANDBOX=native` is the native runtime for macOS, with no root, no -Docker, no kernel extension and no macFUSE or FUSE-T. Each Sandbox's daemon +### Native Sandboxes (Linux and macOS) + +`LAYERFS_SANDBOX=native` runs each Sandbox's daemon as a process on this +machine, with no container and no Docker. On Linux it needs root: the daemon +serves its Workspaces over FUSE as root (`LAYERFS_KERNEL=fuse`), commands run +as 501:20, and the Store (`LAYERFS_STORE_PATH`) is on a local Linux filesystem +the daemons share; `LAYERFS_SANDBOX_BACKEND=namespaces` adds isolation (see +[Namespace Sandboxes (Linux)](#namespace-sandboxes-linux)). Without root it is +refused `Unsupported` before anything is made. The rest of this section +describes macOS, where it needs no root, no kernel extension and no macFUSE or +FUSE-T. Each Sandbox's daemon runs as a process of this user and serves its Workspaces over NFSv3 on 127.0.0.1 (`LAYERFS_KERNEL=nfs`); macOS's own client mounts them (`/sbin/mount_nfs`, as this user) under the Sandbox's `workspaces/`. Commands @@ -260,8 +267,7 @@ run as this user, in this machine's namespaces: **it isolates nothing** beyond what the caller's own sandbox (for instance Seatbelt) imposes. A command starts with this process's `PATH` (so `node`, Homebrew's tools and the like are found as in the caller's own shell) and its own environment, -nothing else of this process's. Docker stays the default, and Linux keeps -the Docker route only. +nothing else of this process's. Docker stays the default on both. It is the in-process route: the client loads the macOS addon and opens the Store itself, so no worker endpoint (`LAYERFS_WORKER_ENDPOINT`) is set. It @@ -318,8 +324,8 @@ can fail on this NFS route with the system SQLite VFS; see ### Namespace Sandboxes (Linux) -`LAYERFS_SANDBOX_BACKEND=namespaces` keeps the native deployment (no Docker, no -image) and adds isolation inside the project's VM: each Sandbox's daemon runs +`LAYERFS_SANDBOX_BACKEND=namespaces` keeps the native deployment (no Docker) +and adds isolation inside the project's VM: each Sandbox's daemon runs in its own mount, PID and IPC namespaces and its own cgroup v2 directory (`/sys/fs/cgroup/layerfs/`), so two Sandboxes on one Store cannot see each other's mounts, processes or files, and closing one ends everything @@ -337,9 +343,12 @@ Sandbox `n` lives where a native Sandbox does — `LAYERFS_LOCAL_DIR/`, `tmp/` and `daemon.log` — plus `bin/layerfs-daemon` (the daemon executable, copied in 0755) and its sibling `-.root/`, the private root its init -stage mounts a tmpfs on and pivots to. The private root holds: the VM's own -userland (`/usr`, `/bin`, `/sbin`, `/lib`, `/lib64`, `/etc`) bound read-only, -so there is no image and no package restoration; a private `/proc` (only the +stage builds and pivots to. That root is an overlay: the Sandbox image +(`LAYERFS_IMAGE`, the same `sha256:` digest Docker deploys, unpacked once per +digest from the docker-archive `LAYERFS_IMAGE_ARCHIVE` into +`LAYERFS_LOCAL_DIR/images/`) is its read-only lower layer, and the Sandbox's +own `overlay/upper` and `overlay/work` are its writable layer, deleted with +it; the VM's own userland is not part of it. Over it come a private `/proc` (only the Sandbox's processes), `/dev` (the basic devices, `/dev/fuse`, a private `devpts` and `shm`), `/tmp`; the Sandbox's own directory bound at its own path, so `config/`, `overlay/` and `workspaces/` keep the same names on both @@ -366,12 +375,14 @@ and nothing is deleted. Reopen checks the recorded init process (id, start time, boot) and its cgroup membership, so a reused id, or a process outside the Sandbox's cgroup, is never taken for it. Everything else above holds: numbered Sandboxes, up to 16 Workspaces each, one daemon per Sandbox, idle -close after 2 minutes, reclaim, and `image` reported as `local`. +close after 2 minutes and reclaim. `sandbox.create`, the mount result and +`project.list_sandboxes()` report a namespaces Sandbox's `image` as its image +digest, not `local`. Limits: the network namespace is shared with the VM, so a command can reach -another Sandbox's daemon port on `127.0.0.1`; `/sys` is not mounted; the -userland is the VM's, not a pinned image; and the private root's bind mounts -are read-only at their top only, as this kernel's remount is not recursive. +another Sandbox's daemon port on `127.0.0.1`; `/sys` is not mounted; and an +image archive with compressed layers (as `podman save` writes) is refused: +the archive must be `docker save`'s. ### Exec output diff --git a/api/docs/runtime.md b/api/docs/runtime.md index 593802e88..c5e850a75 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -135,7 +135,7 @@ and disk helpers) and may declare capabilities instead of being named: `initCounts: false` (macOS: this process cannot read Init's counts) and `uncertainInit: true` (Windows: any failed Init is kept and recorded, never cleaned up); `platform/vm/` implements the same interface over a VM -(see [Placement](#placement-one-linux-vm-per-home)). +(see [Placement](#placement-one-linux-vm-per-store)). - **Linux** runs Store calls in this process. There is no worker: `worker.start` and `worker.restart` are refused `InvalidInput`. Init @@ -191,8 +191,9 @@ Stores — lives in one Linux VM of its own** on this machine (#515 §6, V9, V1) A project's VM holds that project's Store on its own ext4 disk, its Sandboxes are Linux namespaces (`LAYERFS_SANDBOX_BACKEND=namespaces`, H36's backend) and its worker runs the real SDK as root; the host reaches only each VM's worker, -with one attempt per call and no replay. Providers, both verified against the -real CLI by `test/verify/vm_real.mjs` and by H40's own run: `microsandbox` +with one attempt per call and no replay. Providers, verified with stand-in +provider CLIs (`test/vm_placement.mjs`; real runs of `test/verify/vm_real.mjs`: +see the #527 platform pass): `microsandbox` (`msb` 0.7.8), `apple-container` (`container` 1.6.1) and `ssh` (any Linux host the user provides, reached with the system `ssh` client; see [the SSH provider](#the-ssh-provider-any-linux-host) below). @@ -265,7 +266,7 @@ The adapter's five steps, each attempted once, all for one named project: disk unless `discardStore`. **A delete is refused while that project exists**: its Store lies on that disk and nowhere else, and this build has no remote Store push (#506), so V8's "never delete a Store that was not - pushed" makes the refusal the only safe answer. `project.remove` is the + pushed" makes the refusal the only safe answer. `project.delete` is the explicit removal: it stops the project's Sandboxes, closes its Store, then deletes the VM and its disk together. diff --git a/core/docs/architecture/76-native-mount-session.md b/core/docs/architecture/76-native-mount-session.md index 4932c3641..0843e751b 100644 --- a/core/docs/architecture/76-native-mount-session.md +++ b/core/docs/architecture/76-native-mount-session.md @@ -14,14 +14,14 @@ Scope and receipts are in the [R2](../issues/307/R2-COMPLETION-20261008.md) and ## Ownership -Dependency is daemon → fuse → workspace. [Fuse](../../crates/layerfs-fuse/src/session/mod.rs) +Dependency is daemon → fuse → workspace. [Fuse](../../../engine/crates/layerfs-fuse/src/session/mod.rs) owns the connection: direct mount syscalls, the patched fuser session, receive loops, request accounting and connection drain. The daemon owns the registry, overall Ready, unmount composition and the engine/Store owners. Fuse contains no daemon command, registry or application setting, and neither side registers, supervises, signals or times out a command. -[Assembly](../../crates/layerfs-daemon/src/application/filesystem.rs) runs once +[Assembly](../../../engine/crates/layerfs-daemon/src/application/filesystem.rs) runs once before control readiness. It starts the one shared [Dispatch](75-native-request-service.md) for the daemon's existing Overlay Owner and direct Store; no device is opened and nothing is mounted until an explicit @@ -52,7 +52,7 @@ owner's subsequent2026-10-12 Store admission rule can wait before one SQL attemp for cooperating writers, as scoped by the integration contract; no failed Commit Begin is replayed. -[`NativeSession::attach`](../../crates/layerfs-fuse/src/session/startup.rs) is one +[`NativeSession::attach`](../../../engine/crates/layerfs-fuse/src/session/startup.rs) is one attempt with no retry. In order it builds the callback adapter, creates the mount directory (an existing path is refused), opens the device, calls `mount(2)`, completes the handshake through `Session::from_fd`, spawns the session owner and @@ -63,7 +63,7 @@ The mount is type `fuse`, source `layerfs`, flags `nosuid,nodev,noatime`, with `rootmode=40000`, `default_permissions`, `allow_other` and `max_read=131072`. The mount owner is the daemon identity; projected inode ownership is the command identity. Kernel permission checks, not a library uid filter, decide access. -[Negotiation](../../crates/layerfs-fuse/src/mount/profile.rs) requests 128 KiB +[Negotiation](../../../engine/crates/layerfs-fuse/src/mount/profile.rs) requests 128 KiB write and readahead windows, background and congestion limits of 1, and adds no optional capability; writeback caching stays absent. @@ -91,9 +91,9 @@ and no request capacity. ## Callback dispositions and accounting Every kernel operation the pinned adapter can receive has one declared -[disposition](../../crates/layerfs-fuse/src/request/callbacks.rs), and every +[disposition](../../../engine/crates/layerfs-fuse/src/request/callbacks.rs), and every received unit is counted once by -[opcode and disposal](../../crates/layerfs-fuse/src/request/accounting.rs): +[opcode and disposal](../../../engine/crates/layerfs-fuse/src/request/accounting.rs): | Disposition | Operations | | --- | --- | @@ -119,12 +119,12 @@ admitted, charged and disposed independently. ## Control records -[Bridge](../../crates/layerfs-bridge/src/control_native.rs) adds records without +[Bridge](../../../engine/crates/layerfs-bridge/src/control_mount.rs) adds records without changing any existing byte encoding: - Requests `Attach(WorkspaceToken)` and `Locate(WorkspaceId)`. - Replies `Ready`, `Located` and `Retained`, and `Activity::Attaching`. -- R6, in [`control_forced.rs`](../../crates/layerfs-bridge/src/control_forced.rs): +- R6, in [`control_forced.rs`](../../../engine/crates/layerfs-bridge/src/control_forced.rs): request `ForceUnmount`, reply `ForceUnmounted`, `NativePhase::Stopping`, `TeardownStage::Abort` and `TeardownCustody.forced`; listed in [native control](68-native-workspace-control.md#forced-unmount-records). @@ -140,7 +140,7 @@ phase, the Ready record, whether detach is known and `NativeWork` counters copie from maintained state. Status performs no syscall and one existing engine observation; it never settles an unknown. -The [SDK mount](../../crates/layerfs-api/src/sandbox/mount.rs) exposes the +The [SDK mount](../../../engine/crates/layerfs-api/src/sandbox/mount.rs) exposes the two-acknowledgement mount without a Project argument. Bind/attach and lost-reply locate are available only in the hidden component-proof/recovery module. If the second acknowledgement fails, MountFailure retains the already bound Workspace; @@ -172,7 +172,7 @@ within a daemon, so neither is a directory or an engine mount incarnation. ## Normal unmount -[Unmount](../../crates/layerfs-daemon/src/control/detach.rs) first refuses +[Unmount](../../../engine/crates/layerfs-daemon/src/control/detach.rs) first refuses uncommitted changes with `Dirty` unless the request discards them ([architecture 82](82-sdk-call-channel.md#workspace-control-changes)). It keeps its existing Commit-custody admission and then, for an attached Workspace: @@ -186,7 +186,7 @@ its existing Commit-custody admission and then, for an attached Workspace: answer is the fence. 2. **Detach known.** Admission stops and waiters wake. Already admitted work keeps its original disposition. -3. **Drain.** [`drain`](../../crates/layerfs-fuse/src/session/drain.rs) +3. **Drain.** [`drain`](../../../engine/crates/layerfs-fuse/src/session/drain.rs) establishes that every created loop is joined, the owner and watcher returned, no received, admitted or retained request remains, and releases the lane. `drain_wait` is an observation deadline. A stop at `Join` means the @@ -216,7 +216,7 @@ failures retain the recorded abort effects in `TeardownCustody.forced`. [`ForceUnmount`](80-forced-teardown.md) takes the session out of the entry the same way, into phase `Stopping`, after its own before-effect guard. It then uses the abort control bound at Attach for exactly one write, lets -[`force_drain`](../../crates/layerfs-fuse/src/session/force.rs) establish the +[`force_drain`](../../../engine/crates/layerfs-fuse/src/session/force.rs) establish the same drain predicate as step 3 and make the connection's one plain detach afterwards, and finishes with the same revocation and Close as steps 4 and 5. Its stops use the same stages plus `Abort`, and carry the forced facts. Once @@ -228,11 +228,12 @@ before any syscall: the forced path owns its single detach. A successful plain detach aborts the connection, so the kernel may never deliver the asynchronous RELEASE and FORGET units for references it held. Revocation is therefore qualified by connection drain rather than by an empty handle set. -[`revoke_native_mount`](../../crates/layerfs-overlay/src/lifetime/native.rs) is +[`revoke_kernel_mount`](../../../engine/crates/layerfs-overlay/src/lifetime/kernel.rs) (formerly `revoke_native_mount`) is refused only while a native request source or read association remains; file handles, directory handles and lookup counts are retired by -[automatic maintenance](../../crates/layerfs-overlay/src/maintenance/native.rs) -in indexed windows of at most 64 rows per turn: file handles, open directory +automatic maintenance (its module `maintenance/native.rs` was removed by +`1ad1e90f48`, which moved Workspace open state into daemon memory; this +paragraph predates that change) in indexed windows of at most 64 rows per turn: file handles, open directory headers, lookup groups by serial cursor, then the mount row. This supersedes the earlier rule that an outstanding handle refused revocation. The mount row fences whole-namespace cleanup until retirement ends, so a terminal unmount reply does @@ -244,7 +245,7 @@ refusal cannot see one. Such a request is accounted by the connection drain that precedes revocation on both paths: it stays admitted in its lane until its future ends, and `Revoke` is submitted only after the drain observed nothing received and nothing admitted. -[`forced_unmount.rs`](../../crates/layerfs-daemon/tests/forced_unmount.rs) +[`forced_unmount.rs`](../../../engine/crates/layerfs-daemon/tests/forced_unmount.rs) stages a READ parked for a Store reader on a real mount: the engine's row counts equal those of the idle descriptor, normal Unmount is `Busy` at `unmount:kernel` with no effect, and Force ends the request through the @@ -258,7 +259,7 @@ daemon does not wait or retry on its behalf. ## Sandbox access -The Docker [container configuration](../../crates/layerfs-sandbox/src/backend/docker/container.rs) +The Docker [container configuration](../../../engine/crates/layerfs-sandbox/src/backend/docker/container.rs) adds exactly `CapAdd: ["CAP_SYS_ADMIN"]`, one `/dev/fuse` device mapping and `apparmor=unconfined`, keeping `Privileged: false` and `no-new-privileges=true`. Since 2026-10-10 (owner decision C-1) it also sends one inline system-call @@ -269,7 +270,7 @@ no copy of a Workspace mount can exist outside the daemon's namespace and a normal Unmount stays truthful against any holder. A tool that needs an unprivileged user namespace fails in a Workspace command with `EPERM`. The filter replaces the Engine's default one for this container. -[Topology inspection](../../crates/layerfs-sandbox/src/backend/docker/topology.rs) +[Topology inspection](../../../engine/crates/layerfs-sandbox/src/backend/docker/topology.rs) requires exactly that set: a missing, widened or additional capability, device or security option is not reported as the daemon endpoint. Commands still run as the nonroot command identity with an empty effective capability set. diff --git a/core/docs/architecture/nfs-native-lifecycle.md b/core/docs/architecture/nfs-native-lifecycle.md index 775159664..75f4e9f73 100644 --- a/core/docs/architecture/nfs-native-lifecycle.md +++ b/core/docs/architecture/nfs-native-lifecycle.md @@ -13,7 +13,7 @@ exceed it, and interrupting a helper cannot prove its kernel effect was undone. Removing Sandbox ownership from the wait resolves the serialization problem without trading it for earlier unknown outcomes. -[`control/export_helper.rs`](../../crates/layerfs-daemon/src/control/export_helper.rs) +[`control/export_helper.rs`](../../../engine/crates/layerfs-daemon/src/control/export_helper.rs) owns each NFS mount, unmount, force and optional flush helper attempt. The public `Helper` and `HELPER_WAIT` exports remain available from `control`. One attempt gets 60 seconds of exit observation. At expiry or an observation @@ -103,7 +103,7 @@ success; durable recovery of that lost result is not claimed. ## Stop before daemon termination -[`backend/native/sandbox.rs`](../../crates/layerfs-sandbox/src/backend/native/sandbox.rs) +[`backend/native/sandbox.rs`](../../../engine/crates/layerfs-sandbox/src/backend/native/sandbox.rs) attempts detach below that Sandbox's own directory before TERM/KILL, while its NFS server can still answer client writeback. A detach failure is logged and does not prevent the existing daemon and process-group stop. Stop remains crash diff --git a/engine/crates/layerfs-api/PROVIDERS.md b/engine/crates/layerfs-api/PROVIDERS.md index e675a61d7..baab05c56 100644 --- a/engine/crates/layerfs-api/PROVIDERS.md +++ b/engine/crates/layerfs-api/PROVIDERS.md @@ -2,12 +2,12 @@ Status: Current general guide. Native macOS is implemented and host-verified; Linux native is implemented, pending Linux host qualification; the Docker runtime is the default. `layerfs-sandbox` selects between them with the concrete `Runtime` enum; there are no provider traits. -`layerfs-sandbox::backend` exposes `Runtime` (a deployment's choice: `Docker`, `MacosNative`, `LinuxNative`, `Windows`) and `Sandbox` (the launched owner of one Sandbox). `layerfs_sandbox::{Runtime, Sandbox}` re-export both; the crate root also re-exports the inputs and records they share (formerly `layerfs_sandbox::provider`, #527 step 9a). `ExecRequest` lives in the shared types layer; its Docker re-export remains compatible. `SandboxId` aliases the existing `ContainerId`, preserving encoded identities and records. The runtime layer has no daemon control dependency. +`layerfs-sandbox::backend` exposes `Runtime` (a deployment's choice: `Docker`, `MacosNative`, `LinuxNative`, `Namespaces` (Linux only), `Windows`) and `Sandbox` (the launched owner of one Sandbox). `layerfs_sandbox::{Runtime, Sandbox}` re-export both; the crate root also re-exports the inputs and records they share (formerly `layerfs_sandbox::provider`, #527 step 9a). `ExecRequest` lives in the shared types layer; its Docker re-export remains compatible. `SandboxId` aliases the existing `ContainerId`, preserving encoded identities and records. The runtime layer has no daemon control dependency. -`Runtime::MacosNative(..)` and `Runtime::LinuxNative(..)` wrap `NativeMacosProvider::new(root)` and `NativeLinuxProvider::new(root)`, the two aliases of the same native implementation whose instances share the existing local runtime owner. Each refuses the wrong platform before root access. macOS uses Darwin process facts, the `mount` table and `umount -f`; Linux uses the retained #402 `/proc` PID/start/boot checks, process groups and lazy `MNT_DETACH`. Linux requires a root daemon and a root directory traversable by command users; ordinary commands keep #402's nonroot identity (Node selects 501:20) and fixed container PATH. macOS keeps the caller identity, inherited PATH and loopback NFS. The provider alone selects `LAYERFS_KERNEL=fuse` on Linux and `nfs` on macOS and rejects any launch environment that names it (#527 step 6). Launch preserves the original single-attempt process lifecycle, native identity, inherited PATH, NFS environment and partial owner on failure. `inspect` reports exact process liveness; unknown exit/storage facts stay absent. `Runtime::Windows` refuses every operation with `RuntimeError::Unsupported` before any effect; no Windows host runtime exists. Records remain the Node binding's responsibility; runtimes neither scan directories nor infer project ownership. B8 list aggregation and doctor remain future work. +`Runtime::Namespaces(NamespaceProvider)` (Linux) runs each daemon in its own mount, PID and IPC namespaces and cgroup v2 directory, on a root overlaid on the Sandbox image; it is selected by `deploy.sandboxBackend` `namespaces` under `deploy.sandbox` `native`. `Runtime::MacosNative(..)` and `Runtime::LinuxNative(..)` wrap `NativeMacosProvider::new(root)` and `NativeLinuxProvider::new(root)`, the two aliases of the same native implementation whose instances share the existing local runtime owner. Each refuses the wrong platform before root access. macOS uses Darwin process facts, the `mount` table and `umount -f`; Linux uses the retained #402 `/proc` PID/start/boot checks, process groups and lazy `MNT_DETACH`. Linux requires a root daemon and a root directory traversable by command users; ordinary commands keep #402's nonroot identity (Node selects 501:20) and fixed container PATH. macOS keeps the caller identity, inherited PATH and loopback NFS. The provider alone selects `LAYERFS_KERNEL=fuse` on Linux and `nfs` on macOS and rejects any launch environment that names it (#527 step 6). Launch preserves the original single-attempt process lifecycle, native identity, inherited PATH, NFS environment and partial owner on failure. `inspect` reports exact process liveness; unknown exit/storage facts stay absent. `Runtime::Windows` refuses every operation with `RuntimeError::Unsupported` before any effect; no Windows host runtime exists. Records remain the Node binding's responsibility; runtimes neither scan directories nor infer project ownership. B8 list aggregation and doctor remain future work. `SandboxApi::with_runtime(Arc)` and `create_provider_file(ProviderCreate, store, manifest)` (or `create(ProviderCreate, project)`) launch through the deployment's runtime and return `ProviderSandbox`, whose `runtime` field is the `Sandbox` handle. Both Docker (via `Runtime::Docker(DockerProvider)`) and native runtimes route through this single unified API path. `WorkspaceApi::exec` delegates ordinary execution through `sandbox.runtime.run(...)` with streaming stdout/stderr buffers, and `api.close` drains and removes instances via `sandbox.runtime.stop(1)` and `sandbox.runtime.delete()`. Before launch, API validates authentication identities, selected Store, command identity and local resource ownership: overlay and mount home must belong to the instance, Store must live outside it, and native listen uses dynamic loopback. API encodes daemon configuration, then uses the shared TCP/Noise/Hello and Store-install pipeline in `sandbox/connection.rs`. Failures retain their phase, original cause, runtime, control, observed status, installation acknowledgement and handshake work. No automatic retry or cleanup occurs in API. -`layerfs-node` builds a `Runtime` from `deploy.sandbox` (`docker` by default, `native` on Linux and macOS), keeps the launched `Sandbox` in its Sandbox state, and reads records, image, scratch directory and background-process tracking through it. Legacy deprecated forwarders (`SandboxApi::new(Docker)`, `SandboxCreate`, `ManagedSandbox`, `from_managed`, `internal::split/exec/control_managed`) remain removed. +`layerfs-node` builds a `Runtime` from `deploy.sandbox` (`docker` by default, `native` on Linux and macOS) and, for `native`, `deploy.sandboxBackend` (`native` by default, `namespaces` on Linux), keeps the launched `Sandbox` in its Sandbox state, and reads records, image, scratch directory and background-process tracking through it. Legacy deprecated forwarders (`SandboxApi::new(Docker)`, `SandboxCreate`, `ManagedSandbox`, `from_managed`, `internal::split/exec/control_managed`) remain removed. The Store remains explicitly Disposable/WAL/OFF. Native macOS keeps #427's direct Store access without a worker; this refactor does not change persistence authorization or filesystem semantics. diff --git a/engine/crates/layerfs-sandbox/src/backend/windows/README.md b/engine/crates/layerfs-sandbox/src/backend/windows/README.md index b667620c8..4dd17d9c4 100644 --- a/engine/crates/layerfs-sandbox/src/backend/windows/README.md +++ b/engine/crates/layerfs-sandbox/src/backend/windows/README.md @@ -5,8 +5,9 @@ ## 现在有什么 -- `layerfs_sandbox::Runtime` 的四个取值:`Docker`、`MacosNative`、 - `LinuxNative`、`Windows`。前三个已有后端,Windows 只有这个变体。 +- `layerfs_sandbox::Runtime` 的五个取值:`Docker`、`MacosNative`、 + `LinuxNative`、`Namespaces`(仅 Linux)、`Windows`。前四个已有后端, + Windows 只有这个变体。 - `Runtime::{capabilities, local_directory, launch, reopen, reopen_stopped}` 在 Windows 上全部返回 `Unsupported`;`Sandbox` 句柄没有 Windows 分支, 因为 Windows 上不可能启动出实例。 From 24c3c5f828f94e9e391c5f3913791f25d5fac138 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:14:54 +0800 Subject: [PATCH 09/37] sandbox: unpack a Debian image's root entry and long link targets Found by the #527 platform pass: the namespaces backend refused the Sandbox image the twelve cells run in (layerfs-352-runtime, Debian based), so linux-namespaces and every vm: placement could not start a Sandbox on it. - Its base layer has an entry for `./`, the root itself; the reader refused it as an empty path (tar.rs). A directory entry whose name is the root is now skipped: the root already exists. - A symbolic link whose target does not fit the header (an absolute, non-ASCII path under /etc/ssl/certs) carries it in a pax `linkpath` (or GNU `K`) record, and the reader checked that as a relative path, unlike the same target in the header's own link field. Extended-header link targets are now taken as the header's are: a symbolic link's may be absolute (it is never followed while unpacking, and a later write through it is still refused), a hard link's is still checked when its kind is decided. A pax `path` is still checked like every name. Test: namespaces_rootfs gains a_debian_layers_root_entry_and_long_absolute_link_unpack (root entry, pax linkpath with an absolute non-ASCII target, and a pax path still refused). Checks: cargo +1.85.1 clippy -p layerfs-sandbox --all-targets -D warnings (Linux, pass); namespaces_rootfs 13/13 (Linux, runtime image). Production LOC: 123167 -> 123188 (delta +21) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 9952d16451 and the staged tree 20eef63194; after: core 41405; engine 77529; api 4254; Co-Authored-By: Claude Opus 5.5 --- .../src/backend/namespaces/rootfs/tar.rs | 49 ++++++++++++--- .../tests/namespaces_rootfs.rs | 60 +++++++++++++++++++ 2 files changed, 101 insertions(+), 8 deletions(-) diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/rootfs/tar.rs b/engine/crates/layerfs-sandbox/src/backend/namespaces/rootfs/tar.rs index e48099460..2d90c138f 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/rootfs/tar.rs +++ b/engine/crates/layerfs-sandbox/src/backend/namespaces/rootfs/tar.rs @@ -103,14 +103,23 @@ impl Tape { continue; } b'K' => { - self.link = Some(long_name(&self.data(PATH_MAX)?)?); + self.link = Some(link_text(until_nul(&self.data(PATH_MAX)?))?); continue; } _ => {} } let path = match self.path.take() { Some(path) => path, - None => own_name(&header)?, + None => { + let name = own_bytes(&header); + // `./`, the archive's entry for the root itself: the root + // already exists, so there is nothing to place + if kind == b'5' && is_root(&name) { + self.link = None; + continue; + } + checked(&name)? + } }; let link = match self.link.take() { Some(link) => link, @@ -202,7 +211,7 @@ impl Read for Tape { } /// The entry's own name: its `name` and, in a ustar archive, its `prefix`. -fn own_name(header: &[u8; 512]) -> Result { +fn own_bytes(header: &[u8; 512]) -> Vec { let name = text(&header[0..100]); let prefix = if &header[257..262] == b"ustar".as_slice() { text(&header[345..500]) @@ -215,7 +224,27 @@ fn own_name(header: &[u8; 512]) -> Result { bytes.push(b'/'); } bytes.extend_from_slice(name); - checked(&bytes) + bytes +} + +/// Whether a name is the root itself (`.`, `./`), whose every component is +/// `.`. +fn is_root(bytes: &[u8]) -> bool { + !bytes.is_empty() + && Path::new(OsStr::from_bytes(bytes)) + .components() + .all(|component| component == Component::CurDir) +} + +/// A link target from an extended header, taken as the header's own link +/// field is: a symbolic link's target may be absolute (it is read inside the +/// Sandbox root, never followed while unpacking), and a hard link's is +/// checked when its kind is decided. +fn link_text(bytes: &[u8]) -> Result { + if bytes.len() > PATH_MAX || bytes.contains(&0) { + return Err(refuse("the image archive's link target is too long")); + } + Ok(PathBuf::from(OsStr::from_bytes(bytes))) } /// The entry's own link target, for the two kinds that carry one. @@ -295,7 +324,7 @@ fn pax(data: &[u8]) -> Result<(Option, Option), RuntimeError> let (key, value) = (&record[..equals], &record[equals + 1..]); match key { b"path" => path = Some(checked(value)?), - b"linkpath" => link = Some(checked(value)?), + b"linkpath" => link = Some(link_text(value)?), _ => {} } } @@ -306,11 +335,15 @@ fn pax(data: &[u8]) -> Result<(Option, Option), RuntimeError> /// A GNU long name's data: the name, up to its first NUL. fn long_name(data: &[u8]) -> Result { - let name = match data.iter().position(|byte| *byte == 0) { + checked(until_nul(data)) +} + +/// A GNU long name's bytes up to its terminating NUL. +fn until_nul(data: &[u8]) -> &[u8] { + match data.iter().position(|byte| *byte == 0) { Some(end) => &data[..end], None => data, - }; - checked(name) + } } /// A header's NUL- or space-padded octal (or GNU base-256) number. diff --git a/engine/crates/layerfs-sandbox/tests/namespaces_rootfs.rs b/engine/crates/layerfs-sandbox/tests/namespaces_rootfs.rs index a7cb03e52..0ba5f4b37 100644 --- a/engine/crates/layerfs-sandbox/tests/namespaces_rootfs.rs +++ b/engine/crates/layerfs-sandbox/tests/namespaces_rootfs.rs @@ -222,6 +222,66 @@ fn a_path_that_is_not_plain_and_relative_is_refused() { assert_eq!(temporaries(&scratch.cache).len(), 0); } +/// One pax extended-header record, ` =\n`, whose length +/// counts itself. +fn pax_record(key: &str, value: &str) -> Vec { + let body = format!(" {key}={value}\n"); + let mut length = body.len() + 1; + while format!("{length}").len() + body.len() != length { + length += 1; + } + format!("{length}{body}").into_bytes() +} + +#[test] +fn a_debian_layers_root_entry_and_long_absolute_link_unpack() { + // what the Sandbox image's Debian base layer holds (#527 platform pass): + // an entry for `./`, the root itself, and a symbolic link whose absolute, + // non-ASCII target does not fit the header, so a pax `linkpath` carries it + let scratch = Scratch::new("debian"); + let target = format!( + "/usr/share/ca-certificates/mozilla/{}.crt", + "\u{c4}rztekammer_Root_CA_".repeat(5) + ); + let layer = Tar::new() + .directory("./", 0o755) + .directory("etc/", 0o755) + .raw( + "PaxHeaders/etc/link", + b'x', + 0o644, + &pax_record("linkpath", &target), + ) + .symlink("etc/link", "") + .file("etc/marker", 0o644, b"debian\n") + .finish(); + let path = archive(&scratch.base, "image", DIGEST, vec![layer]); + let root = unpacked(&scratch, &path, DIGEST); + let directory = root.directory(); + assert_eq!(read(&directory.join("etc/marker")), "debian\n"); + assert_eq!( + fs::read_link(directory.join("etc/link")).unwrap(), + PathBuf::from(&target) + ); + // a pax `path` is still checked like any other name + let scratch = Scratch::new("pax-path"); + let layer = Tar::new() + .raw( + "PaxHeaders/x", + b'x', + 0o644, + &pax_record("path", "/etc/outside"), + ) + .file("x", 0o644, b"x") + .finish(); + let path = archive(&scratch.base, "image", DIGEST, vec![layer]); + let error = rootfs::ensure(&path, &image(DIGEST), &scratch.cache).unwrap_err(); + assert!( + format!("{error}").contains("absolute or holds a `..` component"), + "{error}" + ); +} + #[test] fn a_symlink_cannot_redirect_a_later_layers_write() { let scratch = Scratch::new("symlink"); From 781e1c02369df7df346e34823e054727da33bf4e Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:19:23 +0800 Subject: [PATCH 10/37] runtime: vm:ssh copies carry no AppleDouble files Found by the #527 platform pass: on vm:ssh every project made from a Mac held a file `._.`, so each cell's exact-names check failed. The SSH provider copies a folder (an Init source, the bundle) as one `tar` stream (ssh.js copy), and the Mac's tar writes an AppleDouble `._` entry for every entry with macOS metadata (com.apple.provenance is on every file a sandboxed process makes). A Linux host's tar creates those as ordinary files. The pack side now runs with COPYFILE_DISABLE=1, which stops them; it does nothing on Linux. Test: vm_placement ssh copies a folder whose entries carry com.apple.provenance and checks the stream's entry names. The fake SSH host now logs each copied stream's entry names (copies.jsonl), because the Mac tar that unpacks there folds `._` entries back into attributes and hides them. The test fails without the fix (`._.`, `./._a.txt`) and passes with it. Checks: api/runtime/test/vm_placement.mjs, all 10 modes, and api/runtime/test/runtime.mjs, all 16 modes (macOS, pass). Production LOC: 123188 -> 123188 (delta 0) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 24c3c5f828 and the staged tree 4a074e2ced; after: core 41405; engine 77529; api 4254; Co-Authored-By: Claude Opus 5.5 --- api/runtime/src/platform/vm/ssh.js | 6 ++++-- api/runtime/test/fixture/fake-ssh.cjs | 28 +++++++++++++++++++++++++-- api/runtime/test/vm_placement.mjs | 15 ++++++++++++++ 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/api/runtime/src/platform/vm/ssh.js b/api/runtime/src/platform/vm/ssh.js index 100895686..70144a5d4 100644 --- a/api/runtime/src/platform/vm/ssh.js +++ b/api/runtime/src/platform/vm/ssh.js @@ -356,14 +356,16 @@ export function exec(name, argv, options = {}) { /** * Step ②: the bundle (or any folder) as one `tar` stream, unpacked on the host. * Both ends are killed if the transfer passes its budget, so no copy outlives - * its call. + * its call. On macOS `COPYFILE_DISABLE` keeps the Mac's `tar` from adding an + * AppleDouble `._` file for each entry with extended attributes, which + * would otherwise land in the copy (and in an Init source, in the project). */ export function copy(name, source, destination) { const session = loadSession(name); if (!session) throw refuse("Failed", `there is no vm:ssh session called ${name}`); const script = `mkdir -p ${shellEscape(destination)} && tar -C ${shellEscape(destination)} -xf -`; return new Promise((resolve, reject) => { - const pack = spawn("tar", ["-C", source, "-cf", "-", "."], { stdio: ["ignore", "pipe", "pipe"] }); + const pack = spawn("tar", ["-C", source, "-cf", "-", "."], { env: { ...process.env, COPYFILE_DISABLE: "1" }, stdio: ["ignore", "pipe", "pipe"] }); const unpack = spawn("ssh", [...sshArgs(session), destinationOf(session), "--", script], { stdio: ["pipe", "pipe", "pipe"] }); let err = "", tarErr = ""; const timer = setTimeout(() => { diff --git a/api/runtime/test/fixture/fake-ssh.cjs b/api/runtime/test/fixture/fake-ssh.cjs index f2616f42a..e8b9f9549 100644 --- a/api/runtime/test/fixture/fake-ssh.cjs +++ b/api/runtime/test/fixture/fake-ssh.cjs @@ -139,14 +139,38 @@ function shellScript(script, args) { return 0; } -/** The unpack end of a bundle copy: `mkdir -p DEST && tar -C DEST -xf -`. */ +/** The unpack end of a bundle copy: `mkdir -p DEST && tar -C DEST -xf -`. + * Each entry's name in the stream, as a Linux host's tar would create it, is + * appended to `copies.jsonl`: the Mac's own tar folds AppleDouble `._` entries + * back into attributes when it unpacks, so the guest tree cannot show them. */ function unpack(script) { const match = /tar -C ('([^']+)'|\S+) -xf -/.exec(script); const destination = guestIn(match ? match[2] ?? match[1] : "/layerfs/bundle"); mkdirSync(destination, { recursive: true }); const tar = spawn("tar", ["-C", destination, "-xf", "-"], { stdio: ["pipe", "ignore", "inherit"] }); + const chunks = []; + process.stdin.on("data", (chunk) => chunks.push(chunk)); process.stdin.pipe(tar.stdin); - tar.on("close", (code) => process.exit(code ?? 0)); + tar.on("close", (code) => { + appendFileSync(join(state, "copies.jsonl"), `${JSON.stringify({ destination: match ? match[2] ?? match[1] : null, names: entryNames(Buffer.concat(chunks)) })}\n`); + process.exit(code ?? 0); + }); +} + +/** The names of a ustar stream's entries (pax and GNU headers skipped). */ +function entryNames(bytes) { + const names = []; + for (let at = 0; at + 512 <= bytes.length; ) { + const header = bytes.subarray(at, at + 512); + if (header.every((byte) => byte === 0)) break; + const text = (from, to) => header.subarray(from, to).toString("latin1").replace(/\0.*$/s, ""); + const size = parseInt(text(124, 136).trim() || "0", 8); + const kind = String.fromCharCode(header[156]); + const prefix = text(257, 262) === "ustar" ? text(345, 500) : ""; + if (!"xgLK".includes(kind)) names.push(prefix ? `${prefix}/${text(0, 100)}` : text(0, 100)); + at += 512 + Math.ceil(size / 512) * 512; + } + return names; } async function main() { diff --git a/api/runtime/test/vm_placement.mjs b/api/runtime/test/vm_placement.mjs index 2f69a08d6..1d138fc28 100644 --- a/api/runtime/test/vm_placement.mjs +++ b/api/runtime/test/vm_placement.mjs @@ -8,6 +8,7 @@ // node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|cleanup import assert from "node:assert/strict"; import { chmodSync, cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs"; +import { execFileSync } from "node:child_process"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { fileURLToPath } from "node:url"; @@ -461,6 +462,20 @@ try { assert.ok(first.some((argv) => argv.includes("StrictHostKeyChecking=yes")), "host key checking stays on"); assert.ok(!first.some((argv) => argv.includes("StrictHostKeyChecking=no")), "never turned off behind the user's back"); assert.ok(first.some((argv) => argv.some((value) => typeof value === "string" && value.includes("tar -C"))), "the bundle arrives as one tar stream"); + if (process.platform === "darwin") { + // a folder whose entries carry macOS metadata (com.apple.provenance, + // which this process's files get) arrives without the Mac tar's + // AppleDouble `._` entries (#527 platform pass: an Init source copied + // this way stored `._.` in the project) + const source = join(work, "xattr-source"); + mkdirSync(source); + writeFileSync(join(source, "a.txt"), "a\n"); + for (const path of [source, join(source, "a.txt")]) execFileSync("xattr", ["-w", "com.apple.provenance", "", path]); + const ssh = (await import("../src/platform/vm/ssh.js")); + await deadline(30_000, "copy", ssh.copy(vmName("shop"), source, "/layerfs/import/xattr")); + const copied = readFileSync(join(state, "copies.jsonl"), "utf8").trim().split("\n").map((line) => JSON.parse(line)).find((copy) => copy.destination === "/layerfs/import/xattr"); + assert.deepEqual(copied.names.sort(), ["./", "./a.txt"], JSON.stringify(copied.names)); + } const entry = await deadline(30_000, "vm.status", runtime.vm.status("shop")); assert.deepEqual([entry.state, entry.worker.state], ["running", "running"]); // the endpoint the worker was written at is this host's forwarded port From 38ad8ab4c200b04b44133fae2bc5323df44811ab Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:21:19 +0800 Subject: [PATCH 11/37] node: reopen requires the deployment's own backend (#527 step 4) F5: reopen was asymmetric. A namespaces record under a native deployment was refused, but a native record under a namespaces deployment (LAYERFS_SANDBOX=native, LAYERFS_SANDBOX_BACKEND=namespaces) was reopened as a native Sandbox, since local_record checked only LAYERFS_SANDBOX. local_record now also requires the native backend, so each backend reopens only its own records and refuses the other's with InvalidInput, deleting nothing. Compatibility break: a native Sandbox record left in a home whose deployment is now namespaces, including every vm: home (whose deployment names namespaces since step 3), is no longer reopened or reclaimed by that deployment. Its message says to remove what it left by hand and delete the record, as for any other runtime's record. Test: native_local gains a_native_record_is_not_reopened_by_a_namespaces_deployment (refused, record and directory kept; then reclaimed by a native deployment). agent.md's native and namespaces record paragraphs say so. Checks: cargo +1.85.1 clippy -p layerfs-node --all-targets -D warnings on Linux and macOS (pass); Linux native_local 8/8 (runtime image). Production LOC: 123188 -> 123194 (delta +6) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 781e1c0236 and the staged tree c8cdfd3f80; after: core 41405; engine 77535; api 4254; Co-Authored-By: Claude Opus 5.5 --- api/docs/agent.md | 12 ++++++--- engine/crates/layerfs-node/src/discovery.rs | 26 ++++++++++++------- .../crates/layerfs-node/tests/native_local.rs | 25 ++++++++++++++++++ 3 files changed, 50 insertions(+), 13 deletions(-) diff --git a/api/docs/agent.md b/api/docs/agent.md index 959be6b82..2d1ab8760 100644 --- a/api/docs/agent.md +++ b/api/docs/agent.md @@ -291,7 +291,9 @@ on 127.0.0.1 only. Its records name the daemon by process id and start time, so a reused id is never taken for it. `sandbox.create`, the mount result and `project.list_sandboxes()` give a native Sandbox's `image` as `local`. A record's `runtime` is `native`; it is used only by a client whose deployment -is `native` with the same `LAYERFS_LOCAL_DIR` and prefix, so it puts that +is `native` with the native backend (`LAYERFS_SANDBOX_BACKEND` unset or +`native`; a `namespaces` deployment does not reopen it either, #527) and the +same `LAYERFS_LOCAL_DIR` and prefix, so it puts that Sandbox exactly where the record says; any other is refused `InvalidInput` and nothing is deleted. A record of the former `local` runtime (an earlier, unmerged build) is never used: it is refused the same way and nothing it @@ -369,9 +371,11 @@ process, mount or cgroup behind. No graceful filesystem drain exists. A record's `runtime` is `namespaces`, with the same fields as a native record; it is used only by a client whose `LAYERFS_SANDBOX_BACKEND` is `namespaces` -with the same `LAYERFS_LOCAL_DIR` and prefix. Another backend's record — and a -`namespaces` record seen by a native deployment — is refused `InvalidInput` -and nothing is deleted. Reopen checks the recorded init process (id, start +with the same `LAYERFS_LOCAL_DIR` and prefix. Another backend's record is +refused `InvalidInput` and nothing is deleted, both ways: a `namespaces` +record seen by a native deployment, and a `native` record seen by a +namespaces deployment (#527 step 4; until then a namespaces deployment, +including every `vm:` home's, reopened native records). Reopen checks the recorded init process (id, start time, boot) and its cgroup membership, so a reused id, or a process outside the Sandbox's cgroup, is never taken for it. Everything else above holds: numbered Sandboxes, up to 16 Workspaces each, one daemon per Sandbox, idle diff --git a/engine/crates/layerfs-node/src/discovery.rs b/engine/crates/layerfs-node/src/discovery.rs index 932d997d9..84f6e3c7d 100644 --- a/engine/crates/layerfs-node/src/discovery.rs +++ b/engine/crates/layerfs-node/src/discovery.rs @@ -578,19 +578,27 @@ pub(crate) fn recorded(args: &SdkValue, id: &str, value: &SdkValue) -> Result Result { let (directory, record) = local_record_of(args, id, value)?; // with no placement (#428), a mount names its Sandbox: a record is used - // only by a native deployment, and only a native record is. A record of - // the `local` runtime (an earlier, unmerged build) is never used, so - // nothing it names is deleted - let native = args.get("deploy").is_some_and(crate::runtime::native); + // only by a deployment of its own backend, and only a native record is + // here. A native record is not reopened by a namespaces deployment + // either (#527 step 4), as a namespaces record is not by a native one. A + // record of the `local` runtime (an earlier, unmerged build) is never + // used, so nothing it names is deleted + let native = args.get("deploy").is_some_and(|deploy| { + crate::runtime::native(deploy) + && matches!( + crate::runtime::backend(deploy), + Ok(crate::runtime::Backend::Native) + ) + }); if !native || value.get_text("runtime") != Some(NATIVE) { return Err(refused( "InvalidInput", format!( - "Sandbox {id} is a {} Sandbox, but only a native deployment \ - (LAYERFS_SANDBOX=native) uses a native record and none uses another; \ - Sandboxes of other runtimes are never mixed, so the record is neither used \ - nor deleted. Remove what it left by hand, then delete \ - LAYERFS_HOME/{}/sandboxes/{id}/sandbox.record", + "Sandbox {id} is a {} Sandbox, but only a native deployment with the native \ + backend (LAYERFS_SANDBOX=native, LAYERFS_SANDBOX_BACKEND unset or native) uses \ + a native record and none uses another; Sandboxes of other runtimes are never \ + mixed, so the record is neither used nor deleted. Remove what it left by hand, \ + then delete LAYERFS_HOME/{}/sandboxes/{id}/sandbox.record", value.get_text("runtime").unwrap_or_default(), registry::text(args, "project")? ), diff --git a/engine/crates/layerfs-node/tests/native_local.rs b/engine/crates/layerfs-node/tests/native_local.rs index b6c8a7ba2..f591b5975 100644 --- a/engine/crates/layerfs-node/tests/native_local.rs +++ b/engine/crates/layerfs-node/tests/native_local.rs @@ -272,3 +272,28 @@ fn a_record_of_the_former_local_runtime_is_never_used_nor_deleted() { assert!(!own.exists()); assert!(!home.0.join("proj/sandboxes/1").exists()); } + +#[test] +fn a_native_record_is_not_reopened_by_a_namespaces_deployment() { + // #527 step 4: reopen requires the deployment's own backend both ways; a + // namespaces deployment does not take a native record as its own + let home = Home::new(); + let root = root(&home); + let own = own(&root); + record(&home, "native", text(&own), "layerfs-proj-1", |_| {}); + home.node( + &format!( + "const r = await native.backendCall('runtime.sandbox.reclaim', {{...args, deploy:{{sandbox:'native', sandboxBackend:'namespaces', localDir:{:?}}}}}); + {NEITHER} + assert.match(r.refused.message, /never mixed/);", + text(&root) + ), + None, + Duration::from_secs(10), + ); + assert!(own.join("daemon.log").exists()); + assert!(home.0.join("proj/sandboxes/1/sandbox.record").exists()); + // the same record under a native deployment is its own: reclaimed + reclaim(&home, "native", Some(text(&root)), RECLAIMED); + assert!(!own.exists()); +} From 50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:22:09 +0800 Subject: [PATCH 12/37] test: the twelve-cell runner for the #527 platform pass api/runtime/test/verify/cells/ runs #516's twelve R7 cells (C01-C12, bodies byte-exact from benchmark/cluster-two/cells/workloads.py at 196c714b0b^, each body's sha256 recorded) through the current SDK on one platform row per invocation: macos-docker, macos-native, linux-docker, linux-native, linux-namespaces (run as root in a Linux VM), vm-apple-container, vm-microsandbox, vm-ssh, plus the documented refusals. Per cell (#516 class B): a fresh project and Store (Init from an empty folder; a lane forked from main, since Init makes no Branch), an untimed setup (the committed 64 MiB base for C09-C11), one untimed identical run on an earlier mount unmounted with discard, then under a host-wide lock a fresh mount, workspace.exec of the body, Commit and unmount, each timed; then a verifier on a further fresh mount checks exact names, sizes and contents. One receipt JSON per cell with every timing, the 1-minute load, and the bundle, image, kernel, vCPU and memory identities; the project and everything it made are removed, also on failure. Each invocation is bounded at 115 s. Test-only; no product change. Production LOC: 123194 -> 123194 (delta 0) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 38ad8ab4c2 and the staged tree a0901d250d; after: core 41405; engine 77535; api 4254; Co-Authored-By: Claude Opus 5.5 --- api/runtime/test/verify/cells/cell.mjs | 151 +++++ api/runtime/test/verify/cells/run.mjs | 577 ++++++++++++++++++++ api/runtime/test/verify/cells/workloads.mjs | 133 +++++ 3 files changed, 861 insertions(+) create mode 100644 api/runtime/test/verify/cells/cell.mjs create mode 100644 api/runtime/test/verify/cells/run.mjs create mode 100644 api/runtime/test/verify/cells/workloads.mjs diff --git a/api/runtime/test/verify/cells/cell.mjs b/api/runtime/test/verify/cells/cell.mjs new file mode 100644 index 000000000..f12feee91 --- /dev/null +++ b/api/runtime/test/verify/cells/cell.mjs @@ -0,0 +1,151 @@ +// One cell on one project, as a LayerFS agent process (#527, #516 class B). +// Settings come only from the environment, like any agent's; the SDK is the +// pinned bundle's (`LFS527_AGENT`, its api/agent/src/index.js). +// node cell.mjs +// Protocol, all on one Branch `lane`, forked untimed from `main` (Init +// publishes the source as main's Layer and makes no Branch; a Workspace mounts +// a Branch), and in one Sandbox, created untimed next and reused by every phase: +// setup (C09-C11) mount, exec the setup body, Commit, unmount; +// warm-up mount, exec the timed line, unmount with discard (no Commit); +// timed [host lock] mount, exec, Commit, unmount (no discard) [unlock]; +// verify fresh mount, exec the Sandbox identity and the verifier, unmount with discard; +// close the Sandbox. +// The lock is asked of the parent: this process prints `LFS527-LOCK acquire` +// and waits for one stdin line `LFS527-LOCK granted `, then prints +// `LFS527-LOCK release`. The last stdout line is `LFS527-RESULT `. +import { createInterface } from "node:readline"; +import { pathToFileURL } from "node:url"; +import { CF, IDENTITY, command, parseIdentity, parseTimed, timedLine, verifier } from "./workloads.mjs"; + +const [cell, project] = process.argv.slice(2); +const BRANCH = "lane"; +const out = { cell, project, branch: BRANCH, ok: false, cause: null, phases: {}, steps: [] }; +const now = () => performance.now(); +const round = (ms) => Math.round(ms * 1000) / 1000; +const errorOf = (error) => ({ code: error?.code ?? null, message: String(error?.message ?? error).slice(0, 2000), detail: error?.detail ?? null }); + +const lines = createInterface({ input: process.stdin }); +const pending = []; +lines.on("line", (line) => pending.shift()?.(line)); +const nextLine = () => new Promise((resolve) => pending.push(resolve)); + +/** One SDK call, its wall time and what it answered or refused, recorded under `name`. */ +async function step(name, call) { + const at = now(); + try { + const value = await call(); + out.steps.push({ name, ms: round(now() - at), ok: true }); + return { value, ms: round(now() - at) }; + } catch (error) { + out.steps.push({ name, ms: round(now() - at), ok: false, error: errorOf(error) }); + const failed = new Error(`${name}: ${error?.code ?? ""} ${error?.message ?? error}`.trim()); + failed.step = name; + throw failed; + } +} + +const exec = (layerfs, ws, text, label) => step(label, () => layerfs.workspace.exec(ws, text, `lfs527 ${cell} ${label}`)); +const execSummary = ({ value, ms }) => ({ wallMs: ms, exitCode: value.exitCode, stdout: value.stdout?.slice(0, 2000), stderr: value.stderr?.slice(0, 2000), ...parseTimed(value.stdout) }); + +if (!CF[cell] || !project || !process.env.LFS527_AGENT) { + console.error("usage: LFS527_AGENT=/api/agent/src/index.js node cell.mjs "); + process.exit(2); +} +const { LayerFS } = await import(pathToFileURL(process.env.LFS527_AGENT).href); +let layerfs, sandbox; +const mounted = new Set(); +try { + layerfs = (await step("open", () => LayerFS.open(project))).value; + out.fork = (await step("branch.fork", () => layerfs.branch.fork(BRANCH, "main"))).value; + const created = (await step("sandbox.create", () => layerfs.sandbox.create())).value; + sandbox = created.sandbox; + out.sandbox = created; + + const line = timedLine(command(cell)); + const mount = async (label) => { + const result = await step(`${label}.mount`, () => layerfs.workspace.mount(sandbox, BRANCH)); + mounted.add(result.value); + return result; + }; + const unmount = async (label, ws, discard) => { + const result = await step(`${label}.unmount`, () => layerfs.workspace.unmount(ws, discard)); + mounted.delete(ws); + return result; + }; + + if (CF[cell][1]) { + const { value: ws } = await mount("setup"); + const ran = execSummary(await exec(layerfs, ws, CF[cell][1], "setup.exec")); + if (ran.exitCode !== 0) throw Object.assign(new Error(`setup body exited ${ran.exitCode}: ${ran.stderr}`), { step: "setup.exec" }); + const committed = await step("setup.commit", () => layerfs.workspace.commit(ws, `lfs527 ${cell} setup`)); + const left = await unmount("setup", ws, false); + out.phases.setup = { exec: ran, commitKind: committed.value?.kind, commit: committed.value, unmount: left.value }; + } + + { + const mountAt = await mount("warmup"); + const ran = execSummary(await exec(layerfs, mountAt.value, line, "warmup.exec")); + // a warm-up's changes are never committed: discard drops them with the mount + const left = await unmount("warmup", mountAt.value, true); + out.phases.warmup = { mountMs: mountAt.ms, exec: ran, unmountMs: left.ms, unmount: left.value }; + } + + // the timed phase, under the host-wide lock + const askedAt = now(); + console.log("LFS527-LOCK acquire"); + const granted = await nextLine(); + if (!granted.startsWith("LFS527-LOCK granted")) throw Object.assign(new Error(`lock not granted: ${granted}`), { step: "lock" }); + out.lock = { askedMs: round(now() - askedAt), ...JSON.parse(granted.slice("LFS527-LOCK granted".length).trim() || "{}") }; + try { + const mountAt = await mount("timed"); + const ws = mountAt.value; + const ran = execSummary(await exec(layerfs, ws, line, "timed.exec")); + const committed = await step("timed.commit", () => layerfs.workspace.commit(ws, `lfs527 ${cell}`)); + const left = await unmount("timed", ws, false); + out.phases.timed = { + mountMs: mountAt.ms, image: ws.image ?? null, workspace: { sandbox: ws.sandbox, path: ws.path }, + exec: ran, commitMs: committed.ms, commitKind: committed.value?.kind ?? null, commit: committed.value, + unmountMs: left.ms, unmount: left.value, + }; + } finally { + console.log("LFS527-LOCK release"); + } + + { + const { value: ws } = await mount("verify"); + const identity = await exec(layerfs, ws, IDENTITY, "verify.identity"); + out.where = parseIdentity(identity.value.stdout); + const checked = await exec(layerfs, ws, verifier(cell), "verify.exec"); + await unmount("verify", ws, true); + out.phases.verify = { exitCode: checked.value.exitCode, stdout: checked.value.stdout.slice(0, 2000), stderr: checked.value.stderr.slice(0, 2000) }; + } + + const timed = out.phases.timed; + const problems = []; + if (timed.exec.exitCode !== 0) problems.push(`exec exit ${timed.exec.exitCode}`); + if (timed.exec.rc !== 0) problems.push(`body exit ${timed.exec.rc}`); + if (!["Committed", "UpToDate"].includes(timed.commitKind)) problems.push(`Commit kind ${timed.commitKind}`); + if (out.phases.verify.exitCode !== 0 || !/^VERIFY OK$/m.test(out.phases.verify.stdout)) problems.push(`verifier: ${out.phases.verify.stdout.trim()} ${out.phases.verify.stderr.trim()}`.trim()); + out.ok = problems.length === 0; + out.cause = problems.join("; ") || null; +} catch (error) { + out.ok = false; + out.cause = error.message; + out.failedStep = error.step ?? null; +} finally { + // whatever happened: force-unmount what is still mounted, then close the Sandbox + for (const ws of mounted) { + await layerfs.workspace.unmount(ws, true, true).then( + () => out.steps.push({ name: "cleanup.unmount", ok: true }), + (error) => out.steps.push({ name: "cleanup.unmount", ok: false, error: errorOf(error) }), + ); + } + if (sandbox) { + // not part of the verdict (PASS = verifier, Commit, clean unmount); the driver's teardown reports leftovers + await step("sandbox.close", () => layerfs.sandbox.close(sandbox)).catch((error) => { out.closeError = error.message; }); + } + await layerfs?.close().catch(() => {}); + lines.close(); +} +console.log(`LFS527-RESULT ${JSON.stringify(out)}`); +process.exit(0); diff --git a/api/runtime/test/verify/cells/run.mjs b/api/runtime/test/verify/cells/run.mjs new file mode 100644 index 000000000..7d0faa8b9 --- /dev/null +++ b/api/runtime/test/verify/cells/run.mjs @@ -0,0 +1,577 @@ +// The #527 platform pass driver: one cell on one platform row, one sample. +// node run.mjs --out [options] +// node run.mjs refusals --out [options] +// It makes a fresh project (Init from an empty folder) through the row's +// route, runs cell.mjs as its own agent process with that row's environment, +// writes one receipt JSON (never overwriting one), then deletes the project +// and everything it made, also on failure. Only the timed phase holds the +// host-wide lock (an atomic mkdir under ~/.cache/layerfs-test). The whole +// invocation is bounded at --budget-ms (default 115 s). +// +// Rows: macos-docker, macos-native, linux-docker, linux-native, +// linux-namespaces, vm-apple-container, vm-microsandbox, vm-ssh, refusals. +// A linux-* row given on macOS re-runs this file as root inside the Lima VM +// (LFS527_LIMA_VM, default lfs527-linux) and relays the lock over stdio. +// +// Options (each also an environment variable): +// --linux-bundle LFS527_LINUX_BUNDLE sealed Linux bundle (macos-docker, linux-*) +// --macos-bundle LFS527_MACOS_BUNDLE sealed macOS bundle (macos-native, refusals) +// --vm-bundle LFS527_VM_BUNDLE Linux bundle copy carrying images/.tar (vm-*) +// --image LFS527_IMAGE Sandbox image digest (default: the bundle's images.sandbox) +// --image-archive LFS527_IMAGE_ARCHIVE docker-archive of the image (linux-namespaces) +// --provider LFS527_PROVIDER refusals vm-docker: the VM provider (default apple-container) +// --budget-ms LFS527_BUDGET_MS the invocation's deadline (default 115000) +// --lock-relay ask the parent for the lock over stdio (set by the Lima relay) +// Other settings: LFS527_DOCKER (macOS Docker socket), LFS527_WORK (work root), +// LFS527_LOCK (lock dir), LFS527_LOCK_WAIT_MS (default 45000), LFS527_VM_CPUS / +// LFS527_VM_MEMORY (default 4 / 4G), LFS527_LIMA_VM, LFS527_LIMA_NODE, and for +// vm-ssh the runtime's own LAYERFS_SSH_* settings. +import { spawn, execFileSync } from "node:child_process"; +import { createHash } from "node:crypto"; +import { chmodSync, copyFileSync, existsSync, renameSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs"; +import { homedir, hostname, loadavg, release, cpus, totalmem } from "node:os"; +import { dirname, join } from "node:path"; +import { createInterface } from "node:readline"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import { CF, command, sha256 } from "./workloads.mjs"; + +const SELF = fileURLToPath(import.meta.url); +const HERE = dirname(SELF); +const CELL = join(HERE, "cell.mjs"); +const ROWS = ["macos-docker", "macos-native", "linux-docker", "linux-native", "linux-namespaces", "vm-apple-container", "vm-microsandbox", "vm-ssh", "refusals"]; +const REFUSALS = ["macos-namespaces", "vm-docker"]; + +// ---- arguments ------------------------------------------------------------ +const argv = process.argv.slice(2); +const [row, cell] = argv; +const flag = (name, envName, fallback = undefined) => { + const at = argv.indexOf(`--${name}`); + return at >= 0 ? argv[at + 1] : process.env[envName] || fallback; +}; +const relay = argv.includes("--lock-relay"); +const outDir = flag("out", "LFS527_OUT"); +const budgetMs = Number(flag("budget-ms", "LFS527_BUDGET_MS", "115000")); +const deadline = Date.now() + budgetMs; +const opts = { + linuxBundle: flag("linux-bundle", "LFS527_LINUX_BUNDLE"), + macosBundle: flag("macos-bundle", "LFS527_MACOS_BUNDLE"), + vmBundle: flag("vm-bundle", "LFS527_VM_BUNDLE"), + image: flag("image", "LFS527_IMAGE"), + imageArchive: flag("image-archive", "LFS527_IMAGE_ARCHIVE"), + provider: flag("provider", "LFS527_PROVIDER", "apple-container"), +}; +if (!ROWS.includes(row) || (row === "refusals" ? !REFUSALS.includes(cell) : !CF[cell]) || (!outDir && !relay)) { + console.error(`usage: node run.mjs <${ROWS.join("|")}> --out [--linux-bundle P] [--macos-bundle P] [--vm-bundle P] [--image D] [--image-archive P]`); + process.exit(2); +} + +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); +const log = (...args) => console.error(`[lfs527 ${row} ${cell}]`, ...args); +const fileSha = (path) => createHash("sha256").update(readFileSync(path)).digest("hex"); +const errorOf = (error) => ({ code: error?.code ?? null, message: String(error?.message ?? error).slice(0, 2000), detail: error?.detail ?? null }); +const id = `${Date.now().toString(36)}${process.pid.toString(36)}`.slice(-10); +const prefix = `lfs527-${id}-`; +const project = (row === "refusals" ? "refusal" : cell.toLowerCase()); + +const receipt = { + receipt: "lfs527-cell/1", + row, cell, verdict: null, cause: null, + project, prefix, + startedAt: new Date().toISOString(), + host: { hostname: hostname(), platform: process.platform, release: release(), cpus: cpus().length, memBytes: totalmem(), node: process.version, uid: process.getuid?.() }, + runner: { "run.mjs": fileSha(SELF), "cell.mjs": fileSha(CELL), "workloads.mjs": fileSha(join(HERE, "workloads.mjs")) }, + load1: { start: loadavg()[0] }, + constructionWorkers: "1", + driver: {}, + teardown: [], +}; +if (row !== "refusals") { + receipt.body = { sha256: sha256(CF[cell][0]), commandSha256: sha256(command(cell)), setupSha256: CF[cell][1] ? sha256(CF[cell][1]) : null }; +} + +// ---- bundle identity -------------------------------------------------------- +/** The bundle's manifest identity, and every manifest file's sha256 checked once. */ +function bundleIdentity(bundle) { + const manifest = JSON.parse(readFileSync(join(bundle, "manifest.json"), "utf8")); + const mismatched = Object.entries(manifest.files ?? {}).filter(([path, hash]) => !existsSync(join(bundle, path)) || fileSha(join(bundle, path)) !== hash).map(([path]) => path); + return { + path: bundle, id: manifest.build_id, platform: manifest.platform, profile: manifest.profile, + sourceCommit: manifest.source?.head ?? null, sourceSha256: manifest.source?.sha256 ?? null, + manifestSha256: fileSha(join(bundle, "manifest.json")), images: manifest.images ?? null, + filesChecked: Object.keys(manifest.files ?? {}).length, mismatched, + imageArchives: existsSync(join(bundle, "images")) ? readdirSync(join(bundle, "images")) : [], + }; +} +const apiUrl = (bundle, path) => pathToFileURL(join(bundle, "api", path)).href; +const agentPath = (bundle) => join(bundle, "api", "agent", "src", "index.js"); + +// ---- the host-wide lock ----------------------------------------------------- +const LOCK = flag("lock", "LFS527_LOCK", join(homedir(), ".cache", "layerfs-test", "lfs527-sample.lock")); +const LOCK_WAIT_MS = Number(process.env.LFS527_LOCK_WAIT_MS || 45_000); +let stdinLines = null; +const pendingStdin = []; +function parentLine() { + if (!stdinLines) { + stdinLines = createInterface({ input: process.stdin }); + stdinLines.on("line", (line) => pendingStdin.shift()?.(line)); + } + return new Promise((resolve) => pendingStdin.push(resolve)); +} + +/** Takes the lock: {waitMs, load1, ...}. In relay mode the parent takes it. */ +async function acquireLock() { + if (relay) { + console.log("LFS527-LOCK acquire"); + const line = await parentLine(); + if (!line.startsWith("LFS527-LOCK granted")) throw new Error(`the parent did not grant the lock: ${line}`); + return { ...JSON.parse(line.slice("LFS527-LOCK granted".length).trim()), relayed: true, load1Local: loadavg()[0] }; + } + mkdirSync(dirname(LOCK), { recursive: true }); + const asked = Date.now(), until = Math.min(asked + LOCK_WAIT_MS, deadline - 30_000); + let staleRemoved = null; + for (;;) { + try { + mkdirSync(LOCK); + writeFileSync(join(LOCK, "owner.json"), JSON.stringify({ pid: process.pid, hostname: hostname(), row, cell, at: new Date().toISOString() })); + return { lock: LOCK, waitMs: Date.now() - asked, load1: loadavg()[0], grantedAt: new Date().toISOString(), staleRemoved }; + } catch (error) { + if (error.code !== "EEXIST") throw error; + } + // an owner of this host whose process is gone left it: removed once, recorded + try { + const owner = JSON.parse(readFileSync(join(LOCK, "owner.json"), "utf8")); + let alive = true; + try { process.kill(owner.pid, 0); } catch (error) { alive = error.code !== "ESRCH"; } + if (owner.hostname === hostname() && !alive && !staleRemoved) { + rmSync(LOCK, { recursive: true, force: true }); + staleRemoved = owner; + continue; + } + } catch {} + if (Date.now() >= until) throw new Error(`the host lock ${LOCK} was not free within ${Date.now() - asked} ms`); + await sleep(100); + } +} +function releaseLock() { + if (relay) console.log("LFS527-LOCK release"); + else rmSync(LOCK, { recursive: true, force: true }); +} + +/** + * Runs a child that speaks the lock protocol on its stdout and stdin and ends + * with one ` ` line. Killed at `ms`; a lock it holds is released. + */ +function runChild(file, args, env, ms, marker) { + return new Promise((resolve) => { + const child = spawn(file, args, { env, stdio: ["pipe", "pipe", "pipe"] }); + const err = [], lock = { grants: [] }; + let result = null, holding = false, killed = false; + const timer = setTimeout(() => { killed = true; child.kill("SIGKILL"); }, ms); + createInterface({ input: child.stdout }).on("line", async (line) => { + if (line === "LFS527-LOCK acquire") { + try { + const grant = await acquireLock(); + holding = true; + lock.grants.push(grant); + child.stdin.write(`LFS527-LOCK granted ${JSON.stringify(grant)}\n`); + } catch (error) { + lock.error = error.message; + child.stdin.write(`LFS527-LOCK refused ${JSON.stringify(error.message)}\n`); + } + } else if (line === "LFS527-LOCK release") { + if (holding) releaseLock(); + holding = false; + } else if (line.startsWith(`${marker} `)) { + result = JSON.parse(line.slice(marker.length + 1)); + } else { + err.push(`stdout: ${line}\n`); + } + }); + child.stderr.on("data", (chunk) => err.push(chunk.toString())); + child.on("close", (code, signal) => { + clearTimeout(timer); + if (holding) releaseLock(); + resolve({ code, signal, killed, result, lock, stderr: err.join("").slice(-4000) }); + }); + }); +} + +// ---- helpers shared by rows ------------------------------------------------ +const workRoot = () => process.env.LFS527_WORK || (process.platform === "linux" ? "/var/lib/lfs527" : join(homedir(), ".cache", "layerfs-test")); +/** A fresh work folder: home (0700), an empty Init source and the row's own folders. */ +function makeWork() { + mkdirSync(workRoot(), { recursive: true, mode: 0o755 }); + const work = mkdtempSync(join(workRoot(), "lfs527-")); + chmodSync(work, 0o755); // a native Linux Sandbox's commands (501:20) traverse it + const home = join(work, "home"), source = join(work, "src"); + mkdirSync(home, { mode: 0o700 }); + mkdirSync(source); + return { work, home, source }; +} +/** The child's environment: this process's without any LAYERFS_ setting, then the row's. */ +function agentEnv(rowEnv, bundle) { + const base = Object.fromEntries(Object.entries(process.env).filter(([name]) => !name.startsWith("LAYERFS_"))); + return { ...base, ...rowEnv, LAYERFS_CONSTRUCTION_WORKERS: "1", LFS527_AGENT: agentPath(bundle) }; +} +const prefixed = (env) => Object.fromEntries(Object.entries(env).filter(([, value]) => value !== undefined && value !== "").map(([key, value]) => [`LAYERFS_${key}`, value])); +const teardownStep = async (name, call) => { + try { + const value = await call(); + receipt.teardown.push({ name, ok: true, ...(value === undefined ? {} : { value }) }); + } catch (error) { + receipt.teardown.push({ name, ok: false, error: errorOf(error) }); + } +}; +/** Init through @layerfs/runtime: one job, read until it ends or the deadline. */ +async function initThrough(runtime, name, source) { + let job = await runtime.project.start_init(name, source); + while (!job.ended && Date.now() < deadline - 30_000) { + await sleep(100); + job = await runtime.project.get_init(job); + } + if (job.step !== "done") throw Object.assign(new Error(`Init ${job.step}: ${JSON.stringify(job.error)}`), { code: job.error?.code }); + return (await runtime.project.list()).find((entry) => entry.name === name); +} +const docker = (socket, ...args) => execFileSync("docker", [...(socket ? ["-H", `unix://${socket}`] : []), ...args], { encoding: "utf8", timeout: 30_000 }).trim(); +/** Removes the containers and volumes this run's prefix names, and nothing else. */ +function removeDockerLeftovers(socket) { + const removed = []; + for (const name of docker(socket, "ps", "-a", "--filter", `name=^${prefix}`, "--format", "{{.Names}}").split("\n").filter(Boolean)) { docker(socket, "rm", "-f", name); removed.push(name); } + for (const name of docker(socket, "volume", "ls", "--filter", `name=^${prefix}`, "--format", "{{.Name}}").split("\n").filter(Boolean)) { docker(socket, "volume", "rm", name); removed.push(name); } + return removed; +} + +/** A row on @layerfs/runtime: open it, make the project, and its teardown. */ +async function runtimeRow({ bundle, settings, extraEnv = () => ({}), socket, after = async () => {} }) { + const { LayerFSRuntime } = await import(apiUrl(bundle, "runtime/src/index.js")); + const { deploymentEnv } = await import(apiUrl(bundle, "runtime/src/clients.js")); + const { work, home, source } = makeWork(); + receipt.driver.work = work; + let runtime = null; + const teardown = async () => { + if (runtime) { + await teardownStep("project.delete", () => runtime.project.delete(project, { confirm: project, stopSandboxes: true })); + await after(runtime); + await teardownStep("runtime.close", () => runtime.close()); + } + if (socket !== undefined) await teardownStep("docker leftovers", () => removeDockerLeftovers(socket)); + await teardownStep("work", () => rmSync(work, { recursive: true, force: true })); + }; + try { + runtime = await LayerFSRuntime.open({ home, bundle, containerPrefix: prefix, sweep: false, ...settings }); + const at = Date.now(); + const made = await initThrough(runtime, project, source); + receipt.driver.initMs = Date.now() - at; + receipt.driver.volume = made?.volume ?? null; + const env = { ...prefixed(deploymentEnv(runtime.settings, runtime.platform, made)), ...extraEnv(home) }; + return { env, teardown, runtime, made }; + } catch (error) { + error.teardown = teardown; + throw error; + } +} + +/** A row on the SDK alone (native, namespaces): LayerFS.init in this process. */ +async function sdkRow({ bundle, rowEnv }) { + const { work, home, source } = makeWork(); + receipt.driver.work = work; + const local = join(work, "local"), store = join(work, "store"); + mkdirSync(local, { mode: 0o755 }); + chmodSync(local, 0o755); + mkdirSync(store, { mode: 0o700 }); + const env = { + LAYERFS_SANDBOX: "native", LAYERFS_NATIVE: join(bundle, "layerfs.node"), LAYERFS_DAEMON: join(bundle, "layerfs-daemon"), + LAYERFS_LOCAL_DIR: local, LAYERFS_STORE_PATH: join(store, "store.sqlite"), LAYERFS_HOME: home, LAYERFS_CONTAINER_PREFIX: prefix, + ...rowEnv, + }; + for (const name of Object.keys(process.env)) if (name.startsWith("LAYERFS_")) delete process.env[name]; + Object.assign(process.env, env, { LAYERFS_CONSTRUCTION_WORKERS: "1" }); + const { LayerFS } = await import(pathToFileURL(agentPath(bundle)).href); + const teardown = async () => { + // close every Sandbox of the project, force-unmounting what is still mounted + await teardownStep("sandboxes", async () => { + const client = await LayerFS.open(project); + const closed = []; + try { + for (const { sandbox } of (await client.project.list_sandboxes(1000, 0)).items) { + for (const ws of (await client.sandbox.list_workspaces(sandbox, 1000, 0)).items ?? []) await client.workspace.unmount({ sandbox: ws.sandbox, path: ws.path }, true, true); + await client.sandbox.close(sandbox); + closed.push(sandbox); + } + } finally { + await client.close(); + } + return closed; + }); + await teardownStep("leftover mounts and processes", () => { + const mounts = execFileSync(process.platform === "linux" ? "cat" : "mount", process.platform === "linux" ? ["/proc/mounts"] : [], { encoding: "utf8" }).split("\n").filter((line) => line.includes(work)); + let pids = ""; + try { pids = execFileSync("pgrep", ["-f", work], { encoding: "utf8" }).trim(); } catch {} + return { mounts, pids: pids.split("\n").filter(Boolean) }; + }); + await teardownStep("work", () => rmSync(work, { recursive: true, force: true })); + }; + try { + if (process.platform === "linux") { + receipt.driver.fs = execFileSync("findmnt", ["-n", "-o", "FSTYPE", "-T", work], { encoding: "utf8" }).trim(); + receipt.driver.maxUserNamespaces = readFileSync("/proc/sys/user/max_user_namespaces", "utf8").trim(); + } + const at = Date.now(); + const created = await LayerFS.init(project, source); + receipt.driver.initMs = Date.now() - at; + receipt.driver.init = created.created ?? null; + await created.close(); + return { env, teardown, LayerFS }; + } catch (error) { + error.teardown = teardown; + throw error; + } +} + +// ---- rows ------------------------------------------------------------------- +const need = (value, name) => { + if (!value) throw Object.assign(new Error(`${name} is required for ${row}`), { code: "InvalidInput" }); + return value; +}; +const macDocker = () => process.env.LFS527_DOCKER || join(homedir(), ".docker", "run", "docker.sock"); +const vmSize = () => ({ cpus: Number(process.env.LFS527_VM_CPUS || 4), memory: process.env.LFS527_VM_MEMORY || "4G" }); + +const SETUP = { + async "macos-docker"() { + const bundle = need(opts.linuxBundle, "--linux-bundle"); + const image = opts.image || bundleIdentity(bundle).images?.sandbox; + const socket = macDocker(); + receipt.imageDigest = image; + const made = await runtimeRow({ + bundle, socket, + settings: { image, docker: socket, platform: "macos" }, + extraEnv: (home) => ({ LAYERFS_WORKER_ENDPOINT: join(home, "worker", "endpoint.json") }), + }); + return { ...made, bundle }; + }, + async "macos-native"() { + const bundle = need(opts.macosBundle, "--macos-bundle"); + receipt.imageDigest = null; // a native Sandbox runs on the Mac itself + return { ...(await sdkRow({ bundle, rowEnv: {} })), bundle }; + }, + async "linux-docker"() { + const bundle = need(opts.linuxBundle, "--linux-bundle"); + const image = opts.image || bundleIdentity(bundle).images?.sandbox; + receipt.imageDigest = image; + // on Linux the runtime runs Init in this process, with the bundle's addon + process.env.LAYERFS_NATIVE = join(bundle, "layerfs.node"); + const made = await runtimeRow({ + bundle, socket: null, + settings: { image, platform: "linux" }, + extraEnv: () => ({ LAYERFS_NATIVE: join(bundle, "layerfs.node") }), + }); + return { ...made, bundle }; + }, + async "linux-native"() { + const bundle = need(opts.linuxBundle, "--linux-bundle"); + receipt.imageDigest = null; // the VM's own userland + return { ...(await sdkRow({ bundle, rowEnv: {} })), bundle }; + }, + async "linux-namespaces"() { + const bundle = need(opts.linuxBundle, "--linux-bundle"); + const image = opts.image || bundleIdentity(bundle).images?.sandbox; + receipt.imageDigest = image; + receipt.imageArchive = need(opts.imageArchive, "--image-archive"); + return { ...(await sdkRow({ bundle, rowEnv: { LAYERFS_SANDBOX_BACKEND: "namespaces", LAYERFS_IMAGE: image, LAYERFS_IMAGE_ARCHIVE: opts.imageArchive } })), bundle }; + }, + "vm-apple-container": () => vmRow("apple-container"), + "vm-microsandbox": () => vmRow("microsandbox"), + "vm-ssh": () => vmRow("ssh"), +}; + +async function vmRow(provider) { + const bundle = need(opts.vmBundle, "--vm-bundle"); + if (provider === "ssh" && !process.env.LAYERFS_SSH_STATE_DIR) { + // the SSH provider's session records go in this run's own folder (removed with it) + process.env.LAYERFS_SSH_STATE_DIR = join(workRoot(), `lfs527-ssh-state-${id}`); + receipt.driver.sshStateDir = process.env.LAYERFS_SSH_STATE_DIR; + } + const made = await runtimeRow({ + bundle, + settings: { placement: `vm:${provider}`, ...(provider === "ssh" ? {} : { vm: vmSize() }) }, + after: async (runtime) => { + if (provider === "ssh") { + // vm:ssh never touches the user's disk on delete (ssh.js removeStore is + // empty); this run's Store, Sandbox folders, home entry and import copy on + // the pass's own SSH host are removed here, with one ssh command + await teardownStep("ssh host files", () => { + const ssh = runtime.settings.vm.ssh, store = ssh.storePath; + const args = ["-p", String(ssh.port), "-o", "BatchMode=yes", ...(ssh.identityFile ? ["-i", ssh.identityFile] : []), + ...(ssh.knownHostsFile ? ["-o", `UserKnownHostsFile=${ssh.knownHostsFile}`] : []), + "-o", `StrictHostKeyChecking=${ssh.strictHostKeyChecking === true ? "yes" : ssh.strictHostKeyChecking || "yes"}`, + `${ssh.user}@${ssh.host}`, "--", `rm -rf ${store}/global ${store}/local /layerfs/store/global /layerfs/store/local /layerfs/home/${project} /layerfs/import`]; + execFileSync("ssh", args, { encoding: "utf8", timeout: 30_000 }); + return store; + }); + } + await teardownStep("vm.delete", () => runtime.vm.delete(project, { confirm: "delete", discardStore: true })); + if (provider === "ssh") await teardownStep("ssh state", () => rmSync(process.env.LAYERFS_SSH_STATE_DIR, { recursive: true, force: true })); + }, + }); + receipt.imageDigest = made.env.LAYERFS_IMAGE ?? null; + receipt.driver.vm = await made.runtime.vm.status(project).catch((error) => errorOf(error)); + return { ...made, bundle }; +} + +// ---- refusals ----------------------------------------------------------------- +/** One call whose refusal is the observation: { ok, code, message }. */ +async function observe(call) { + try { + const value = await call(); + return { refused: false, value: JSON.parse(JSON.stringify(value ?? null)) }; + } catch (error) { + return { refused: true, ...errorOf(error) }; + } +} + +async function refusals() { + if (cell === "macos-namespaces") { + const bundle = need(opts.macosBundle, "--macos-bundle"); + receipt.bundle = bundleIdentity(bundle); + const made = await sdkRow({ bundle, rowEnv: {} }); + teardowns.push(made.teardown); + const image = opts.image || receipt.bundle.images?.sandbox; + const attempt = async (extra) => { + Object.assign(process.env, { LAYERFS_SANDBOX_BACKEND: "namespaces" }, extra); + let client = null; + const opened = await observe(async () => { client = await made.LayerFS.open(project); return "opened"; }); + const created = client ? await observe(() => client.sandbox.create()) : null; + if (created && !created.refused) await client.sandbox.close(created.value.sandbox).catch(() => {}); + await client?.close(); + delete process.env.LAYERFS_SANDBOX_BACKEND; + delete process.env.LAYERFS_IMAGE; + delete process.env.LAYERFS_IMAGE_ARCHIVE; + return { opened, created }; + }; + const without = await attempt({}); + const withImage = await attempt({ LAYERFS_IMAGE: image, LAYERFS_IMAGE_ARCHIVE: join(made.env.LAYERFS_LOCAL_DIR, "none.tar") }); + receipt.observed = { "namespaces, no image settings": without, "namespaces, with LAYERFS_IMAGE and LAYERFS_IMAGE_ARCHIVE": withImage }; + const code = withImage.created?.code ?? withImage.opened?.code; + receipt.verdict = code === "Unsupported" ? "PASS" : "FAIL"; + receipt.cause = `expected Unsupported; sandbox.create answered ${code ?? "no refusal"}`; + return; + } + // vm-docker: what a caller who asks for Docker Sandboxes on a vm: home gets + const bundle = need(opts.vmBundle, "--vm-bundle"); + receipt.bundle = bundleIdentity(bundle); + const { LayerFSRuntime } = await import(apiUrl(bundle, "runtime/src/index.js")); + receipt.observed = {}; + receipt.observed["placement vm:docker"] = await observe(() => LayerFSRuntime.open({ home: join(workRoot(), `lfs527-refusal-${id}`), placement: "vm:docker" })); + rmSync(join(workRoot(), `lfs527-refusal-${id}`), { recursive: true, force: true }); + const made = await vmRow(opts.provider); + teardowns.push(made.teardown); + const { LayerFS } = await import(pathToFileURL(agentPath(bundle)).href); + const attempt = async (extra) => { + const saved = { ...process.env }; + Object.assign(process.env, made.env, extra); + let client = null; + const opened = await observe(async () => { client = await LayerFS.open(project); return "opened"; }); + for (const name of Object.keys(process.env)) if (!(name in saved)) delete process.env[name]; + Object.assign(process.env, saved); + const created = client ? await observe(() => client.sandbox.create()) : null; + if (created && !created.refused) await client.sandbox.close(created.value.sandbox).catch(() => {}); + await client?.close(); + return { opened, created }; + }; + receipt.observed[`LAYERFS_SANDBOX=docker on vm:${opts.provider}`] = await attempt({ LAYERFS_SANDBOX: "docker", LAYERFS_VOLUME: `${prefix}none`, LAYERFS_DOCKER: "/var/run/docker.sock", LAYERFS_IMAGE: receipt.bundle.images?.sandbox }); + receipt.observed[`LAYERFS_SANDBOX_BACKEND=docker on vm:${opts.provider}`] = await attempt({ LAYERFS_SANDBOX_BACKEND: "docker" }); + receipt.verdict = "OBSERVED"; + receipt.cause = "no documented answer for Docker on a vm: home; see observed"; +} + +// ---- the run ------------------------------------------------------------------ +const teardowns = []; +function writeReceipt() { + receipt.endedAt = new Date().toISOString(); + receipt.load1.end = loadavg()[0]; + const text = JSON.stringify(receipt, null, 2); + if (relay) console.log(`LFS527-RECEIPT ${JSON.stringify(receipt)}`); + if (outDir) { + mkdirSync(outDir, { recursive: true }); + const file = join(outDir, `${row}-${cell}-${receipt.startedAt.replace(/[:.]/g, "")}-${id}.json`); + writeFileSync(file, `${text}\n`, { flag: "wx" }); + log(`receipt ${file}: ${receipt.verdict}${receipt.cause ? ` (${receipt.cause})` : ""}`); + } +} + +/** A linux-* row asked for on macOS: this file again, as root in the Lima VM, with the lock relayed. */ +async function viaLima() { + const vm = process.env.LFS527_LIMA_VM || "lfs527-linux"; + // The VM reads the Mac's home over a 9p mount that can serve a stale copy of + // an edited file, so the runner runs from a content-named copy under + // ~/.cache/layerfs-test (a new folder per runner version), and the inner + // run's runner hashes must equal this one's. + const version = sha256(Object.values(receipt.runner).join("")).slice(0, 16); + const runner = join(homedir(), ".cache", "layerfs-test", `lfs527-runner-${version}`); + if (!existsSync(join(runner, "run.mjs"))) { + mkdirSync(`${runner}.tmp-${id}`, { recursive: true }); + for (const name of ["run.mjs", "cell.mjs", "workloads.mjs"]) copyFileSync(join(HERE, name), join(`${runner}.tmp-${id}`, name)); + renameSync(`${runner}.tmp-${id}`, runner); + } + const pass = Object.entries(process.env).filter(([name]) => name.startsWith("LFS527_") && name !== "LFS527_OUT").map(([name, value]) => `${name}=${value}`); + const args = ["shell", "--workdir", "/", vm, "sudo", "env", ...pass, + ...(opts.linuxBundle ? [`LFS527_LINUX_BUNDLE=${opts.linuxBundle}`] : []), ...(opts.image ? [`LFS527_IMAGE=${opts.image}`] : []), + ...(opts.imageArchive ? [`LFS527_IMAGE_ARCHIVE=${opts.imageArchive}`] : []), + process.env.LFS527_LIMA_NODE || "node", join(runner, "run.mjs"), row, cell, "--lock-relay", "--budget-ms", String(deadline - Date.now() - 5_000)]; + const ran = await runChild("limactl", args, process.env, deadline - Date.now(), "LFS527-RECEIPT"); + if (ran.result) { + const inner = ran.result.runner; + Object.assign(receipt, ran.result, { via: { lima: vm, lock: ran.lock, exit: ran.code, stderr: ran.stderr.slice(-1500) }, startedAt: receipt.startedAt, runner: receipt.runner, host: receipt.host, load1Outer: receipt.load1, runnerCopy: runner }); + if (JSON.stringify(inner) !== JSON.stringify(receipt.runner)) { + receipt.verdict = "FAIL"; + receipt.cause = `the VM ran another runner: ${JSON.stringify(inner)}`; + } + } else { + receipt.verdict = "FAIL"; + receipt.cause = `the Lima run ended without a receipt (exit ${ran.code}${ran.killed ? ", killed at the deadline" : ""})`; + receipt.via = { lima: vm, lock: ran.lock, exit: ran.code, signal: ran.signal, stderr: ran.stderr }; + } +} + +try { + if (row.startsWith("linux-") && process.platform === "darwin") { + await viaLima(); + } else if (row === "refusals") { + await refusals(); + } else { + const at = Date.now(); + const made = await SETUP[row]().catch((error) => { throw Object.assign(error, { phase: "setup" }); }); + teardowns.push(made.teardown); + receipt.driver.setupMs = Date.now() - at; + receipt.bundle = bundleIdentity(made.bundle); + receipt.sourceCommit = receipt.bundle.sourceCommit; + receipt.env = Object.fromEntries(Object.entries(made.env).filter(([name]) => name !== "LAYERFS_SSH_IDENTITY")); + const childMs = deadline - Date.now() - (row.startsWith("vm-") ? 30_000 : 20_000); + if (childMs < 15_000) throw Object.assign(new Error(`only ${childMs} ms left for the cell after setup`), { phase: "setup" }); + receipt.driver.cellBudgetMs = childMs; + const ran = await runChild(process.execPath, [CELL, cell, project], agentEnv(made.env, made.bundle), childMs, "LFS527-RESULT"); + receipt.lock = ran.lock.grants[0] ?? (ran.lock.error ? { error: ran.lock.error } : null); + receipt.cellResult = ran.result; + receipt.cellExit = { code: ran.code, signal: ran.signal, killed: ran.killed, stderr: ran.stderr }; + const timed = ran.result?.phases?.timed; + receipt.timings = timed ? { + mountMs: timed.mountMs, execWallMs: timed.exec.wallMs, commandMs: timed.exec.ms, commitMs: timed.commitMs, commitKind: timed.commitKind, unmountMs: timed.unmountMs, + } : null; + receipt.where = ran.result?.where ?? null; + receipt.imageDigest = timed?.image && timed.image !== "local" ? timed.image : receipt.imageDigest; + receipt.verdict = ran.result?.ok ? "PASS" : "FAIL"; + receipt.cause = ran.result ? ran.result.cause : `the cell ended without a result (exit ${ran.code}${ran.killed ? ", killed at its deadline" : ""}): ${ran.stderr.slice(-500)}`; + } +} catch (error) { + if (error.teardown && !teardowns.includes(error.teardown)) teardowns.push(error.teardown); + receipt.verdict = "FAIL"; + receipt.cause = `${error.phase ?? "run"}: ${error.code ?? ""} ${error.message}`.trim(); + receipt.error = errorOf(error); +} finally { + const at = Date.now(); + for (const teardown of teardowns.reverse()) await teardown().catch((error) => receipt.teardown.push({ name: "teardown", ok: false, error: errorOf(error) })); + if (!receipt.via) receipt.driver.teardownMs = Date.now() - at; // a relayed run keeps the inner driver's + receipt.teardownOk = receipt.teardown.every((entry) => entry.ok) && !receipt.teardown.some((entry) => entry.value?.mounts?.length || entry.value?.pids?.length); + writeReceipt(); +} +process.exit(receipt.verdict === "PASS" || receipt.verdict === "OBSERVED" ? 0 : 1); diff --git a/api/runtime/test/verify/cells/workloads.mjs b/api/runtime/test/verify/cells/workloads.mjs new file mode 100644 index 000000000..f3a65cc9a --- /dev/null +++ b/api/runtime/test/verify/cells/workloads.mjs @@ -0,0 +1,133 @@ +// The twelve R7 cells (#516, #527): bodies, setup and one verifier per cell. +// The bodies are byte-exact copies of `CF` in +// benchmark/cluster-two/cells/workloads.py at 196c714b0b^ (MK1000, MKTREE, DD); +// each runs as `/bin/bash -o pipefail -c "{ ; } >/dev/null"` like that +// file's COMMANDS. A verifier is one bash script run by `workspace.exec` in a +// fresh mount of the committed Branch; it prints `VERIFY OK` and exits 0, or +// prints `VERIFY FAIL ` and exits 1. It uses only tools whose options +// GNU (the Linux image), BSD (macOS native runs commands on the Mac) and +// busybox share: find, sort, cksum, wc, awk, cmp -n, seq, sed, tr. +import { createHash } from "node:crypto"; + +const MK1000 = "for i in $(seq 1 1000); do echo $i > f$i; done"; +const MKTREE = "for a in $(seq 1 10); do for b in $(seq 1 10); do mkdir -p $a/$b; for c in $(seq 1 10); do touch $a/$b/$c; done; done; done"; +const DD = "dd if=/dev/zero of=big bs=1M count=64 status=none"; +const BIG = 67108864; + +/** cell -> [body, setup body ("" when the base is empty)] */ +export const CF = { + C01: [MK1000, ""], + C02: [MK1000 + "; for i in $(seq 1 1000); do stat f$i; done", ""], + C03: [MK1000 + "; rm f*", ""], + C04: [MKTREE, ""], + C05: [MKTREE + "; find . -type f | wc -l", ""], + C06: [DD, ""], + C07: [DD + "; cp big big2", ""], + C08: [DD + "; cat big > /dev/null", ""], + C09: ["cat big > /dev/null", DD], + C10: ["cp big big2", DD], + C11: [DD + " conv=notrunc", DD], + C12: ["git init -q; for i in $(seq 1 100); do echo $i > f$i; done; git add -A; git -c user.email=a@b -c user.name=a commit -qm init", ""], +}; + +export const sha256 = (text) => createHash("sha256").update(text).digest("hex"); +/** The command the cell runs, exactly as workloads.py's COMMANDS has it. */ +export const command = (cell) => `{ ${CF[cell][0]}; } >/dev/null`; +const quote = (text) => `'${text.replaceAll("'", "'\\''")}'`; + +/** + * Settings put in place before the clock starts, outside the hashed command: + * a C locale and no system or user Git configuration (on macOS native the + * command runs as this user, whose ~/.gitconfig could add filters or signing), + * the fixed dates of workloads.py's ENV. + */ +const PRELUDE = "export LANG=C LC_ALL=C GIT_CONFIG_NOSYSTEM=1 GIT_CONFIG_GLOBAL=/dev/null GIT_AUTHOR_DATE=2026-10-03T00:00:00Z GIT_COMMITTER_DATE=2026-10-03T00:00:00Z"; + +/** + * The exec line: the command timed on the Sandbox's own clock. Its own output + * goes to /dev/null inside; the only line printed is + * `LFS527 `. + */ +export function timedLine(text) { + return `${PRELUDE}; s=$(date +%s%N); /bin/bash -o pipefail -c ${quote(text)}; rc=$?; e=$(date +%s%N); echo "LFS527 $rc $s $e"`; +} + +/** { rc, ms } from a timedLine's stdout; ms is null unless both stamps are nanoseconds since the + * epoch (at least 16 digits): busybox `date` has no `%N` and prints whole seconds. */ +export function parseTimed(stdout) { + const found = /^LFS527 (\S+) (\S+) (\S+)$/m.exec(stdout ?? ""); + if (!found) return { rc: null, ms: null }; + const rc = /^\d+$/.test(found[1]) ? Number(found[1]) : null; + const ns = (text) => /^\d{16,}$/.test(text); + const ms = ns(found[2]) && ns(found[3]) ? Number(BigInt(found[3]) - BigInt(found[2])) / 1e6 : null; + return { rc, ms }; +} + +// ---- verifiers ------------------------------------------------------------ + +const HEAD = `${PRELUDE} +fail() { echo "VERIFY FAIL $*"; exit 1; } +count() { wc -l | tr -d ' '; } +# exact names: the sorted list of every path under the root, compared by cksum +names() { find . -mindepth 1 "$@" | LC_ALL=C sort | cksum; }`; + +/** f holds "\\n" and nothing else, for i in 1..n */ +const numbered = (n) => ` +[ "$(find . -mindepth 1 -path ./.git -prune -o ! -type f -print | count)" = 0 ] || fail "an entry other than a regular file" +[ "$(cat $(seq 1 ${n} | sed 's/^/f/') | cksum)" = "$(seq 1 ${n} | cksum)" ] || fail "f1..f${n} contents" +wc -c $(seq 1 ${n} | sed 's/^/f/') | awk '$2 != "total" && $1 != length(substr($2, 2)) + 1 { print "size", $2; bad = 1 } END { exit bad }' || fail "a file of the wrong size"`; + +const bigs = (files) => files.map((name) => ` +[ -f ${name} ] || fail "${name} missing" +[ "$(wc -c < ${name} | tr -d ' ')" = ${BIG} ] || fail "${name} size $(wc -c < ${name})" +cmp -n ${BIG} ${name} /dev/zero >/dev/null || fail "${name} is not ${BIG} zero bytes"`).join(""); + +const exactNames = (list, ...findArgs) => ` +[ "$(names ${findArgs.join(" ")})" = "$({ ${list}; } | LC_ALL=C sort | cksum)" ] || fail "names: $(find . -mindepth 1 ${findArgs.join(" ")} | count) entries; unexpected: $(find . -mindepth 1 ${findArgs.join(" ")} | grep -v -E '^[.]/(f[0-9]+|[0-9]+(/[0-9]+)*|big2?)$' | head -5 | tr '\\n' ' ')"`; + +const FILES = (n) => `for i in $(seq 1 ${n}); do echo ./f$i; done`; +const TREE = "for a in $(seq 1 10); do echo ./$a; for b in $(seq 1 10); do echo ./$a/$b; for c in $(seq 1 10); do echo ./$a/$b/$c; done; done; done"; + +const CHECKS = { + numbered: exactNames(FILES(1000)) + numbered(1000), + empty: ` +[ "$(find . -mindepth 1 | count)" = 0 ] || fail "root is not empty: $(find . -mindepth 1 | count) entries"`, + tree: exactNames(TREE) + ` +[ "$(find . -mindepth 1 -type d | count)" = 110 ] || fail "directories" +[ "$(find . -type f | count)" = 1000 ] || fail "files" +[ "$(find . -type f -size +0c | count)" = 0 ] || fail "a file is not empty"`, + big: exactNames("echo ./big") + bigs(["big"]), + big2: exactNames("echo ./big; echo ./big2") + bigs(["big", "big2"]), + git: exactNames(FILES(100), "-path ./.git -prune -o -print") + ` +[ -d .git ] || fail ".git missing"` + numbered(100) + ` +g() { git -c safe.directory='*' -c core.fsmonitor=false "$@"; } +[ "$(g rev-list --count HEAD)" = 1 ] || fail "commits: $(g rev-list --count HEAD 2>&1)" +[ "$(g ls-files | count)" = 100 ] || fail "tracked files" +[ "$(g log -1 --format=%s)" = init ] || fail "commit subject" +[ -z "$(g status --porcelain)" ] || fail "status not clean: $(g status --porcelain | head -3)"`, +}; + +const VERIFIER = { + C01: "numbered", C02: "numbered", C03: "empty", C04: "tree", C05: "tree", C06: "big", + C07: "big2", C08: "big", C09: "big", C10: "big2", C11: "big", C12: "git", +}; + +/** The verifier script of a cell. */ +export const verifier = (cell) => `${HEAD}${CHECKS[VERIFIER[cell]]} +echo "VERIFY OK"`; + +/** One untimed exec on the Sandbox's side: where it runs. */ +export const IDENTITY = [ + "echo kernel=$(uname -sr)", + "echo machine=$(uname -m)", + "echo cpus=$(nproc 2>/dev/null || sysctl -n hw.ncpu)", + "echo memKiB=$(awk '/^MemTotal:/ { print $2 }' /proc/meminfo 2>/dev/null)", + "echo memBytes=$(sysctl -n hw.memsize 2>/dev/null)", + "echo cpuMax=$(cat /sys/fs/cgroup/cpu.max 2>/dev/null)", + "echo id=$(id -u):$(id -g)", +].join("; "); + +/** IDENTITY's stdout as an object. */ +export const parseIdentity = (stdout) => Object.fromEntries((stdout ?? "").split("\n").filter((line) => line.includes("=")).map((line) => [line.slice(0, line.indexOf("=")), line.slice(line.indexOf("=") + 1) || null])); + +export const CELLS = Object.keys(CF); From cb7dc814ea3905b33eee29f974ca648ccb133e2c Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:27:06 +0800 Subject: [PATCH 13/37] agent: refuse namespaces off Linux before reading its image settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Found by the #527 platform pass's refusal check: on macOS, LAYERFS_SANDBOX=native with LAYERFS_SANDBOX_BACKEND=namespaces is documented as refused Unsupported (#527 §3.1), and the binding does refuse it so, but only when LAYERFS_IMAGE and LAYERFS_IMAGE_ARCHIVE are set: without them the client refused InvalidInput "deploy.image is not configured" first, hiding the reason. The client now refuses namespaces off Linux with the binding's own Unsupported message before it reads the image settings, as step 8 does for Windows. Test: native_deployment.mjs checks the macOS refusal with no image settings (fails before this change), and fakes Linux for its existing namespaces pass-through cases, which now run on any host. Checks (macOS): api/agent/test/native_deployment.mjs, calls.mjs (39 cases) pass. Production LOC: 123194 -> 123197 (delta +3) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 50e2c2bc87 and the staged tree c57a7dc3ea; after: core 41405; engine 77535; api 4257; Co-Authored-By: Claude Opus 5.5 --- api/agent/src/client.js | 5 +++++ api/agent/test/native_deployment.mjs | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/api/agent/src/client.js b/api/agent/src/client.js index d67e55d6e..b61920dce 100644 --- a/api/agent/src/client.js +++ b/api/agent/src/client.js @@ -108,6 +108,11 @@ function nativeDeployment(options, env, sandbox) { const named = backend === "namespaces" ? "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces" : "deploy.sandbox (LAYERFS_SANDBOX) native"; throw new LayerFSError("Unsupported", `${named} is not supported on Windows: a Windows Sandbox is Docker, through the WSL2 worker; native runs on Linux or macOS, namespaces on Linux`, null); } + // namespaces is Linux only: refused before its image settings are read, so + // a macOS deployment hears Unsupported, not a missing LAYERFS_IMAGE + if (backend === "namespaces" && process.platform !== "linux") { + throw new LayerFSError("Unsupported", "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces is Linux only; use native", null); + } const deploy = { sandbox, daemon: options.daemon ?? env("DAEMON"), diff --git a/api/agent/test/native_deployment.mjs b/api/agent/test/native_deployment.mjs index 30fa2a310..268c92be5 100644 --- a/api/agent/test/native_deployment.mjs +++ b/api/agent/test/native_deployment.mjs @@ -51,8 +51,11 @@ assert.deepEqual(deployment(), { sandbox: "native", daemon: "/opt/layerfs-daemon // an image (sandbox.create's option) does not change a native deployment assert.deepEqual(deployment({ image: docker.image }), { sandbox: "native", daemon: "/opt/layerfs-daemon", localDir: "/Users/me/lfs" }); // the backend inside the directory is native unless named; namespaces is -// passed through (the binding refuses it off Linux, and an unknown value) +// passed through on Linux (the binding refuses an unknown value; off Linux +// it is refused here, below) assert.equal(deployment().sandboxBackend, undefined); +const linuxHost = Object.getOwnPropertyDescriptor(process, "platform"); +Object.defineProperty(process, "platform", { ...linuxHost, value: "linux" }); const archive = `/bundle/images/${"a".repeat(64)}.tar`; process.env.LAYERFS_SANDBOX_BACKEND = "namespaces"; process.env.LAYERFS_IMAGE = docker.image; @@ -82,6 +85,7 @@ assert.deepEqual(deployment({ sandboxBackend: "native" }), { sandboxBackend: "native", }); delete process.env.LAYERFS_SANDBOX_BACKEND; +Object.defineProperty(process, "platform", linuxHost); delete process.env.LAYERFS_IMAGE; delete process.env.LAYERFS_IMAGE_ARCHIVE; // the container prefix names native Sandbox directories too @@ -170,4 +174,17 @@ try { } finally { Object.defineProperty(process, "platform", host); } +// on macOS namespaces is refused Unsupported (#527 §3.1) before its image +// settings are read, so a missing LAYERFS_IMAGE does not hide the reason +Object.defineProperty(process, "platform", { ...host, value: "darwin" }); +try { + clear(); + process.env.LAYERFS_SANDBOX = "native"; + process.env.LAYERFS_SANDBOX_BACKEND = "namespaces"; + process.env.LAYERFS_DAEMON = "/opt/layerfs-daemon"; + process.env.LAYERFS_LOCAL_DIR = "/tmp/lfs"; + assert.throws(() => deployment(), (e) => e.code === "Unsupported" && /namespaces is Linux only/.test(e.message)); +} finally { + Object.defineProperty(process, "platform", host); +} console.log("native_deployment: ok"); From c8f5d8378b1f8f2007b9fad5d5d3f595ebd5511c Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:30:06 +0800 Subject: [PATCH 14/37] runtime: the macOS worker releases a Store before its volume goes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #527 §10 listed, from code only: macOS releaseStore was a no-op although the macOS worker caches open Stores, so removing a Store's volume (project.delete, store removal) left the worker holding the deleted Store file open until its quiet minute ended; a call in that window would act on the unlinked file. Windows and vm: already ask their worker to close it first. macOS now does the same: it sends the worker `releaseStore` for the volume's Store path, refuses an invalid volume name, and does nothing when no worker endpoint exists or the worker does not answer (nothing holds the Store then). Test: runtime.mjs macos-worker checks the call reaches the worker with the Store path, and the refusal. Checks (macOS): api/runtime/test/runtime.mjs, all 16 modes, pass: surface home-mode projects init state events leftovers sandboxes volumes transport-order macos-worker worker-frames docker-default worker-docker stores backend Production LOC: 123197 -> 123206 (delta +9) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent cb7dc814ea and the staged tree 7ad794daee; after: core 41405; engine 77535; api 4266; Co-Authored-By: Claude Opus 5.5 --- api/runtime/src/platform/macos/index.js | 14 +++++++++++++- api/runtime/test/runtime.mjs | 6 ++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/api/runtime/src/platform/macos/index.js b/api/runtime/src/platform/macos/index.js index 9204cd2ce..56bba2da5 100644 --- a/api/runtime/src/platform/macos/index.js +++ b/api/runtime/src/platform/macos/index.js @@ -14,6 +14,7 @@ import { randomBytes } from "node:crypto"; import { mkdirSync, readFileSync, rmSync } from "node:fs"; import { join } from "node:path"; +import { connection } from "@layerfs/agent/internal"; import { docker as cli, endpointFile, homeNames, makeStore, ping, ready, refuse, releaseStoreHolders, removeStore, storeHolders, writeEndpoint } from "../shared.js"; const VOLUMES = "/var/lib/docker/volumes"; @@ -135,7 +136,18 @@ const platform = { storePath: (settings, volume) => `${VOLUMES}/${volume}/_data/global/store.sqlite`, homeNames: (settings) => homeNames(settings.home), async removeHome(settings, project) { rmSync(join(settings.home, project), { recursive: true, force: true }); }, - async releaseStore() {}, + /** Before a volume is deleted, the worker closes its cached Store of it, + * as on Windows and `vm:` (#527 §10: it kept the deleted Store open until + * its quiet minute ended). With no worker endpoint nothing holds it. */ + async releaseStore(settings, project) { + const { volume } = project; + if (!/^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/.test(volume)) throw refuse("InvalidInput", "invalid Store volume name"); + let info; + try { info = JSON.parse(readFileSync(endpointFile(settings.home), "utf8")); } catch { return; } + if (!(await ping(info))) return; + const answer = await connection(info).call({ fn: "releaseStore", args: { home: settings.home, storePath: `${VOLUMES}/${volume}/_data/global/store.sqlite` } }); + if (answer.refused) throw refuse(answer.refused.code, answer.refused.message, answer.refused.detail); + }, /** Free bytes of Docker's volume disk, as the worker sees it. */ async free(settings) { try { diff --git a/api/runtime/test/runtime.mjs b/api/runtime/test/runtime.mjs index 8bc76102e..3066aff7d 100644 --- a/api/runtime/test/runtime.mjs +++ b/api/runtime/test/runtime.mjs @@ -364,6 +364,12 @@ try { assert.equal("oldStore" in (await runtime.status()), false, "no older Store container is looked for"); // nothing but the worker is started or removed assert.deepEqual(calls.filter((c) => ["stop", "rm", "run"].includes(c.args[0])).map((c) => c.args[0]), ["run"]); + // before a Store's volume goes, the worker is asked to close its cached + // Store of it (#527 §10: this was a no-op on macOS) + await macos.releaseStore(runtime.settings, { volume: "lfs-shop-store-1" }); + const release = worker.calls.find((call) => call.fn === "releaseStore"); + assert.equal(release?.args.storePath, "/var/lib/docker/volumes/lfs-shop-store-1/_data/global/store.sqlite"); + await assert.rejects(macos.releaseStore(runtime.settings, { volume: "../x" }), { code: "InvalidInput" }); await runtime.close(); } finally { macos.docker = real; From 44d41efa338e80636ad308748e16a459beee2688 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:35:01 +0800 Subject: [PATCH 15/37] sandbox: a namespaces Sandbox reopens with its own helper copy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Found by the #527 platform pass (linux-namespaces, all twelve cells): every sandbox.close failed before anything was sent, with "the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)", and each Sandbox's init, init-inner and daemon were left until their idle close. create found the helper beside the deployment's daemon executable, but reopen and reopen_stopped (which close goes through) looked only at LAYERFS_SANDBOX_HELPER and beside the current executable; for the SDK in process that is `node`. Only the vm: worker sets the variable, so only SDK-only Linux deployments hit it. create now copies the helper into the Sandbox's own bin/ beside its daemon copy (both 0755, deleted with the directory), and reopen runs that copy, the helper the Sandbox was started with. A Sandbox made before this change falls back to the previous lookup. Test: namespaces_lifecycle's reopen case checks the copy. Checks: cargo +1.85.1 clippy -p layerfs-sandbox -p layerfs-node --all-targets -D warnings (Linux, pass); as root in the Lima VM lfs527-linux (Ubuntu 24.04, 6.8.0-147, cgroup v2, user.max_user_namespaces=0): namespaces_lifecycle 5/5 and namespaces_userns 1/1 (the limit is 0 again afterwards) — also #527 §10's root check at this commit. Production LOC: 123206 -> 123217 (delta +11) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent c8f5d8378b and the staged tree 25f2ce2255; after: core 41405; engine 77546; api 4266; Co-Authored-By: Claude Opus 5.5 --- .../src/backend/namespaces/create.rs | 10 ++++++---- .../src/backend/namespaces/paths.rs | 6 ++++++ .../src/backend/namespaces/provider.rs | 16 ++++++++++++++-- .../tests/namespaces_lifecycle.rs | 12 ++++++++++++ 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs b/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs index 7834ec7eb..163f615c3 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs +++ b/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs @@ -77,7 +77,7 @@ pub(crate) fn create( helper.to_owned(), image.clone(), ); - let log = match prepare(&paths, request, options, &id, &image) { + let log = match prepare(&paths, (request, helper), options, &id, &image) { Ok(log) => log, Err(cause) => return Err(fail(LocalPhase::Create, Some(sandbox), cause)), }; @@ -229,13 +229,13 @@ fn check_store(paths: &Paths, store: &Path) -> Result<(), RuntimeError> { Ok(()) } -/// The Sandbox's own directories and files, its copied executable, its init -/// spec and the empty log; returns the log file. Its overlay's writable layer +/// The Sandbox's own directories and files, its copied daemon and helper, its +/// init spec and the empty log; returns the log file. Its overlay's writable layer /// and work directory are made here, empty: the init stage mounts them with /// the image underneath. fn prepare( paths: &Paths, - request: &crate::LaunchRequest, + (request, helper): (&crate::LaunchRequest, &Path), options: &Options, id: &crate::ContainerId, image: &ImageRoot, @@ -267,6 +267,8 @@ fn prepare( private(&paths.local.config)?.write_all(&request.daemon_config)?; fs::copy(&request.daemon_executable, &paths.bin)?; fs::set_permissions(&paths.bin, Permissions::from_mode(0o755))?; + fs::copy(helper, &paths.helper)?; + fs::set_permissions(&paths.helper, Permissions::from_mode(0o755))?; let spec = HelperSpec { root: paths.root.clone(), sandbox: paths.local.directory.clone(), diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/paths.rs b/engine/crates/layerfs-sandbox/src/backend/namespaces/paths.rs index 469f5f4f0..f0b33be48 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/paths.rs +++ b/engine/crates/layerfs-sandbox/src/backend/namespaces/paths.rs @@ -8,6 +8,9 @@ use std::path::PathBuf; /// The daemon executable inside the Sandbox's own `bin` directory, copied /// there once per Sandbox so nothing about it is read from the host later. pub(crate) const DAEMON: &str = "layerfs-daemon"; +/// The helper executable, copied beside it for the same reason: a later +/// process that reopens the Sandbox runs the helper it was started with. +pub(crate) const HELPER: &str = "layerfs-sandbox-helper"; /// One Sandbox's paths, all fixed from its directory name. #[derive(Clone, Debug, Eq, PartialEq)] @@ -18,6 +21,8 @@ pub(crate) struct Paths { pub(crate) bin_directory: PathBuf, /// `/bin/`, 0755 and root-owned. pub(crate) bin: PathBuf, + /// `/bin/`, 0755 and root-owned. + pub(crate) helper: PathBuf, /// The init stage's inputs, `/config/helper.spec`, 0600. pub(crate) spec: PathBuf, /// The private root, `.root`; the init stage mounts the @@ -46,6 +51,7 @@ impl Paths { Ok(Self { bin_directory: local.directory.join("bin"), bin: local.directory.join("bin").join(DAEMON), + helper: local.directory.join("bin").join(HELPER), spec: local.directory.join("config").join("helper.spec"), root: PathBuf::from(root), upper: local.directory.join("overlay").join("upper"), diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs b/engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs index d3ede4794..473d49386 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs +++ b/engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs @@ -134,7 +134,7 @@ impl NamespaceProvider { .record_paths(&record.local().name) .map_err(WireFailure::local)?; let image = self.image(record).map_err(WireFailure::local)?; - let helper = helper(None).map_err(WireFailure::local)?; + let helper = recorded_helper(&paths).map_err(WireFailure::local)?; let recorded = super::sandbox::Recorded { init: super::sandbox::process(record.local()), port: record.local().port, @@ -159,7 +159,7 @@ impl NamespaceProvider { .record_paths(&record.local().name) .map_err(WireFailure::local)?; let image = self.image(record).map_err(WireFailure::local)?; - let helper = helper(None).map_err(WireFailure::local)?; + let helper = recorded_helper(&paths).map_err(WireFailure::local)?; let recorded = super::sandbox::Recorded { init: super::sandbox::process(record.local()), port: record.local().port, @@ -190,6 +190,18 @@ impl NamespaceProvider { } } +/// The helper a reopened Sandbox runs: the copy its create put in its own +/// `bin` directory, so a later process (an in-process SDK whose executable +/// is `node`, with no LAYERFS_SANDBOX_HELPER) finds the helper the Sandbox +/// was started with. A Sandbox made before that copy existed falls back to +/// the lookup below. +fn recorded_helper(paths: &Paths) -> Result { + match std::fs::metadata(&paths.helper) { + Ok(metadata) if metadata.is_file() && metadata.len() > 0 => Ok(paths.helper.clone()), + _ => helper(None), + } +} + /// The helper this backend runs: `LAYERFS_SANDBOX_HELPER` when set, else /// beside `daemon` or beside this process (or its Cargo test runner). fn helper(daemon: Option<&Path>) -> Result { diff --git a/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs b/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs index 7c284c78e..fc1f9518a 100644 --- a/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs +++ b/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs @@ -540,6 +540,18 @@ fn a_record_reopens_the_exact_sandbox_and_nothing_else() { .map(|record| record.local().name.as_str()), Some("sandbox-1") ); + // the Sandbox keeps its own copy of the helper beside its daemon, which a + // reopening process runs when it has no LAYERFS_SANDBOX_HELPER and its + // executable has no helper beside it (an in-process SDK's `node`) + assert_eq!( + fs::read( + fixture + .directory("sandbox-1") + .join("bin/layerfs-sandbox-helper") + ) + .unwrap(), + fs::read(helper()).unwrap() + ); // what a new process reads: the record alone, with the provider's root, // and it finds the same image under the digest the record keeps let reopened_provider = fixture.provider().unwrap(); From ab00731d51232fef13c255d85da360afc527fed4 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:43:05 +0800 Subject: [PATCH 16/37] sandbox: drop Runtime::Windows, build layerfs-sandbox for Windows (#527 step 7) Owner decisions D2 and D6 (2026-11-01). A behaviour change only in that a variant nobody could construct on Windows is gone. - F2: Runtime::Windows, its WINDOWS refusal and its arms in every Runtime method go, with backend/windows/README.md. Runtime::capabilities keeps its Result signature. Both PROVIDERS.md files now say Windows has no backend and runs the Linux build through the WSL2 worker or a VM. - F2: layerfs-node's cfg(not(any(linux, macos))) native_runtime in local.rs is removed: mod local is itself built on Linux and macOS only, so it was dead on every target. The similar branches in layerfs-node's sandbox.rs and discovery.rs stay: they are live on any other target that builds the binding, which is what they refuse. - F1: layerfs-sandbox now builds for x86_64-pc-windows-msvc without warnings. After step 9a only the shared types are built there (backend stays cfg(unix)); CommandIdentity::check, ExecRequest::check and the STOPPED re-export, read by the backends only, are cfg(unix). - A build-only windows-build job in .github/workflows/ci.yml runs `cargo clippy -p layerfs-sandbox -D warnings` on windows-2025. It reports only: continue-on-error, no test, not a required check. layerfs-node and layerfs-api are not built for Windows: their dependency layerfs-store-service does not compile there (14 errors: unix permission modes, MetadataExt::uid, nix::sys::statvfs and layerfs_persistence's STORE_HEADROOM_BYTES, which is not built for Windows), and layerfs-api's Sandbox control uses the Unix-only Runtime. On this Mac their C build scripts (blake3's ml64.exe, zstd-sys, libsqlite3-sys) also need a Windows C toolchain; a check-only stand-in compiler was used to reach the Rust errors. Deleted test: native_platform::windows_is_refused_before_any_effect (it drove the removed variant; nothing it guarded survives). Checks: cargo +1.85.1 fmt -p layerfs-sandbox -p layerfs-node --check (pass); clippy -p layerfs-sandbox -p layerfs-node --all-targets -D warnings on macOS and Linux (pass); cargo +1.85.1 clippy -p layerfs-sandbox --target x86_64-pc-windows-msvc -D warnings (pass; rust-std for that target installed with rustup); tools/check_product_boundary.py (PASS); tools/test_check_product_boundary.py 34 pass, the pre-existing test_path_violations error unchanged; Linux tests as root in the runtime image: native_platform 2, runtime_enum 1, native_provider 1 (pass); macOS native_platform 2, runtime_enum 1 (pass). Production LOC: 123217 -> 123204 (delta -13) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 44d41efa33 and the staged tree 9435d6c70d; after: core 41405; engine 77533; api 4266; Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 17 +++++++ engine/crates/layerfs-api/PROVIDERS.md | 4 +- engine/crates/layerfs-node/src/local.rs | 14 +----- engine/crates/layerfs-sandbox/PROVIDERS.md | 15 +++--- .../layerfs-sandbox/src/backend/runtime.rs | 16 +----- .../src/backend/windows/README.md | 50 ------------------- .../layerfs-sandbox/src/types/execution.rs | 6 ++- .../crates/layerfs-sandbox/src/types/mod.rs | 1 + .../layerfs-sandbox/src/types/request.rs | 5 +- .../layerfs-sandbox/tests/native_platform.rs | 45 +---------------- 10 files changed, 40 insertions(+), 133 deletions(-) delete mode 100644 engine/crates/layerfs-sandbox/src/backend/windows/README.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bad85750f..7ac0b547c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,8 @@ # Fast lane: runs after a push and reports. It is never a required check and # never blocks a push or merge; agents do not wait for it (AGENTS.md §4). # Slow and FUSE mount tests run in nightly.yml. Selection: tools/ci_tests.py. +# windows-build only compiles the crates gated for Windows (#527 D6) and +# reports; it runs no test and its failure fails nothing (continue-on-error). # The Node binding (engine/crates/layerfs-node) and the JavaScript packages in # api/ stay outside CI (owner, 2026-10-23): no path trigger, excluded from # Clippy/tests and skipped by the guard. The Rust layerfs-api crate is included. @@ -76,6 +78,21 @@ jobs: save-if: ${{ github.ref == 'refs/heads/main' }} - run: cargo +1.85.1 clippy --manifest-path Cargo.toml --locked --workspace --exclude layerfs-node --all-targets -- -D warnings + # Windows runs the Linux build through WSL2 or a VM (#527 D2); this lane only + # reports whether the crates gated for Windows still compile there. Today + # that is layerfs-sandbox (its shared types; the backends are Unix only). + # layerfs-node stays outside CI, and layerfs-api cannot build for Windows + # yet (layerfs-store-service is Unix only). + windows-build: + name: windows build (reports only) + runs-on: windows-2025 + timeout-minutes: 15 + continue-on-error: true + steps: + - uses: actions/checkout@v7.0.1 + - run: rustup toolchain install 1.85.1 --profile minimal --component clippy + - run: cargo +1.85.1 clippy --manifest-path Cargo.toml --locked -p layerfs-sandbox -- -D warnings + test: runs-on: ubuntu-24.04 timeout-minutes: 30 diff --git a/engine/crates/layerfs-api/PROVIDERS.md b/engine/crates/layerfs-api/PROVIDERS.md index baab05c56..f7b11876f 100644 --- a/engine/crates/layerfs-api/PROVIDERS.md +++ b/engine/crates/layerfs-api/PROVIDERS.md @@ -2,9 +2,9 @@ Status: Current general guide. Native macOS is implemented and host-verified; Linux native is implemented, pending Linux host qualification; the Docker runtime is the default. `layerfs-sandbox` selects between them with the concrete `Runtime` enum; there are no provider traits. -`layerfs-sandbox::backend` exposes `Runtime` (a deployment's choice: `Docker`, `MacosNative`, `LinuxNative`, `Namespaces` (Linux only), `Windows`) and `Sandbox` (the launched owner of one Sandbox). `layerfs_sandbox::{Runtime, Sandbox}` re-export both; the crate root also re-exports the inputs and records they share (formerly `layerfs_sandbox::provider`, #527 step 9a). `ExecRequest` lives in the shared types layer; its Docker re-export remains compatible. `SandboxId` aliases the existing `ContainerId`, preserving encoded identities and records. The runtime layer has no daemon control dependency. +`layerfs-sandbox::backend` exposes `Runtime` (a deployment's choice: `Docker`, `MacosNative`, `LinuxNative`, `Namespaces` (Linux only); Windows has none and runs the Linux build through WSL2 or a VM) and `Sandbox` (the launched owner of one Sandbox). `layerfs_sandbox::{Runtime, Sandbox}` re-export both; the crate root also re-exports the inputs and records they share (formerly `layerfs_sandbox::provider`, #527 step 9a). `ExecRequest` lives in the shared types layer; its Docker re-export remains compatible. `SandboxId` aliases the existing `ContainerId`, preserving encoded identities and records. The runtime layer has no daemon control dependency. -`Runtime::Namespaces(NamespaceProvider)` (Linux) runs each daemon in its own mount, PID and IPC namespaces and cgroup v2 directory, on a root overlaid on the Sandbox image; it is selected by `deploy.sandboxBackend` `namespaces` under `deploy.sandbox` `native`. `Runtime::MacosNative(..)` and `Runtime::LinuxNative(..)` wrap `NativeMacosProvider::new(root)` and `NativeLinuxProvider::new(root)`, the two aliases of the same native implementation whose instances share the existing local runtime owner. Each refuses the wrong platform before root access. macOS uses Darwin process facts, the `mount` table and `umount -f`; Linux uses the retained #402 `/proc` PID/start/boot checks, process groups and lazy `MNT_DETACH`. Linux requires a root daemon and a root directory traversable by command users; ordinary commands keep #402's nonroot identity (Node selects 501:20) and fixed container PATH. macOS keeps the caller identity, inherited PATH and loopback NFS. The provider alone selects `LAYERFS_KERNEL=fuse` on Linux and `nfs` on macOS and rejects any launch environment that names it (#527 step 6). Launch preserves the original single-attempt process lifecycle, native identity, inherited PATH, NFS environment and partial owner on failure. `inspect` reports exact process liveness; unknown exit/storage facts stay absent. `Runtime::Windows` refuses every operation with `RuntimeError::Unsupported` before any effect; no Windows host runtime exists. Records remain the Node binding's responsibility; runtimes neither scan directories nor infer project ownership. B8 list aggregation and doctor remain future work. +`Runtime::Namespaces(NamespaceProvider)` (Linux) runs each daemon in its own mount, PID and IPC namespaces and cgroup v2 directory, on a root overlaid on the Sandbox image; it is selected by `deploy.sandboxBackend` `namespaces` under `deploy.sandbox` `native`. `Runtime::MacosNative(..)` and `Runtime::LinuxNative(..)` wrap `NativeMacosProvider::new(root)` and `NativeLinuxProvider::new(root)`, the two aliases of the same native implementation whose instances share the existing local runtime owner. Each refuses the wrong platform before root access. macOS uses Darwin process facts, the `mount` table and `umount -f`; Linux uses the retained #402 `/proc` PID/start/boot checks, process groups and lazy `MNT_DETACH`. Linux requires a root daemon and a root directory traversable by command users; ordinary commands keep #402's nonroot identity (Node selects 501:20) and fixed container PATH. macOS keeps the caller identity, inherited PATH and loopback NFS. The provider alone selects `LAYERFS_KERNEL=fuse` on Linux and `nfs` on macOS and rejects any launch environment that names it (#527 step 6). Launch preserves the original single-attempt process lifecycle, native identity, inherited PATH, NFS environment and partial owner on failure. `inspect` reports exact process liveness; unknown exit/storage facts stay absent. There is no Windows runtime (#527 D2): Windows runs the Linux build through WSL2 or a VM. Records remain the Node binding's responsibility; runtimes neither scan directories nor infer project ownership. B8 list aggregation and doctor remain future work. `SandboxApi::with_runtime(Arc)` and `create_provider_file(ProviderCreate, store, manifest)` (or `create(ProviderCreate, project)`) launch through the deployment's runtime and return `ProviderSandbox`, whose `runtime` field is the `Sandbox` handle. Both Docker (via `Runtime::Docker(DockerProvider)`) and native runtimes route through this single unified API path. `WorkspaceApi::exec` delegates ordinary execution through `sandbox.runtime.run(...)` with streaming stdout/stderr buffers, and `api.close` drains and removes instances via `sandbox.runtime.stop(1)` and `sandbox.runtime.delete()`. Before launch, API validates authentication identities, selected Store, command identity and local resource ownership: overlay and mount home must belong to the instance, Store must live outside it, and native listen uses dynamic loopback. API encodes daemon configuration, then uses the shared TCP/Noise/Hello and Store-install pipeline in `sandbox/connection.rs`. Failures retain their phase, original cause, runtime, control, observed status, installation acknowledgement and handshake work. No automatic retry or cleanup occurs in API. diff --git a/engine/crates/layerfs-node/src/local.rs b/engine/crates/layerfs-node/src/local.rs index add33381d..a32061f4f 100644 --- a/engine/crates/layerfs-node/src/local.rs +++ b/engine/crates/layerfs-node/src/local.rs @@ -228,8 +228,8 @@ fn start_claimed( } /// The native runtime this host offers, over `root`: macOS loopback NFS as -/// this user, or Linux FUSE with a root daemon. The other platform's -/// provider, and another OS, is refused before root access. +/// this user, or Linux FUSE with a root daemon (this module is built on those +/// two only). The other platform's provider is refused before root access. #[cfg(target_os = "macos")] fn native_runtime( root: &str, @@ -255,16 +255,6 @@ fn native_runtime( } } -#[cfg(not(any(target_os = "linux", target_os = "macos")))] -fn native_runtime( - _: &str, - _: crate::runtime::Backend, -) -> Result { - Err(layerfs_sandbox::RuntimeError::Unsupported( - "native Sandbox runtime platform", - )) -} - /// How the daemon of `backend` is launched: the same local options, and for /// the namespace backend the Store file its private root binds and the image /// archive its root is unpacked from. diff --git a/engine/crates/layerfs-sandbox/PROVIDERS.md b/engine/crates/layerfs-sandbox/PROVIDERS.md index bf6c5d041..569fa2baf 100644 --- a/engine/crates/layerfs-sandbox/PROVIDERS.md +++ b/engine/crates/layerfs-sandbox/PROVIDERS.md @@ -8,8 +8,8 @@ type and the only dispatch is one `match` per method. - `Runtime` is one deployment's selection and is kept for every Sandbox it starts: `Docker(DockerProvider)` (the default), `MacosNative(NativeMacosProvider)`, - `LinuxNative(NativeLinuxProvider)`, `Namespaces(NamespaceProvider)` (Linux - only) and `Windows`, a placeholder with no backend. + `LinuxNative(NativeLinuxProvider)` and `Namespaces(NamespaceProvider)` (Linux + only). `Runtime::{capabilities, local_directory, native_paths, launch, reopen, reopen_stopped}` dispatch to them. - `Sandbox` is what `Runtime::launch`/`reopen` return: `Docker(docker::Sandbox)`, @@ -118,12 +118,11 @@ keeps the same physical facts as `LocalRecord`. ## Windows -`Runtime::Windows` is a placeholder: `capabilities`, `local_directory`, -`native_paths`, `launch`, `reopen` and `reopen_stopped` all refuse with the -existing `RuntimeError::Unsupported` before any effect, and no `Sandbox` variant -exists for it. No Windows host runtime is implemented; see -[`src/backend/windows/README.md`](src/backend/windows/README.md) for the planned -routes. +There is no Windows backend and no Windows variant (#527 D2). Windows runs the +Linux build: through the WSL2 worker on a local placement, or in a Linux VM +(`vm:`). The backends and `Runtime` are Unix only; the crate's shared +types still compile for Windows, and a build-only CI lane reports whether they +do (#527 D6). ## Failure and records diff --git a/engine/crates/layerfs-sandbox/src/backend/runtime.rs b/engine/crates/layerfs-sandbox/src/backend/runtime.rs index 4dc79591d..03dd93848 100644 --- a/engine/crates/layerfs-sandbox/src/backend/runtime.rs +++ b/engine/crates/layerfs-sandbox/src/backend/runtime.rs @@ -13,9 +13,6 @@ use crate::{ }; use std::{fmt, io::Write, net::SocketAddr, path::PathBuf}; -/// What Windows would need and does not have yet: no host runtime exists. -const WINDOWS: &str = "windows native Sandbox runtime"; - /// One deployment's runtime choice, kept for every Sandbox it starts. /// /// A Sandbox's record names the variant that made it; a platform without a @@ -35,8 +32,6 @@ pub enum Runtime { /// commands entering them as a nonroot identity (Linux). #[cfg(target_os = "linux")] Namespaces(NamespaceProvider), - /// Placeholder: selecting Windows refuses before any effect. - Windows, } impl Runtime { @@ -49,7 +44,6 @@ impl Runtime { Self::LinuxNative(provider) => Ok(provider.capabilities()), #[cfg(target_os = "linux")] Self::Namespaces(provider) => Ok(provider.capabilities()), - Self::Windows => Err(RuntimeError::Unsupported(WINDOWS)), } } @@ -64,7 +58,6 @@ impl Runtime { Self::LinuxNative(provider) => provider.paths(name).map(|paths| Some(paths.directory)), #[cfg(target_os = "linux")] Self::Namespaces(provider) => provider.paths(name).map(|paths| Some(paths.directory)), - Self::Windows => Err(RuntimeError::Unsupported(WINDOWS)), } } @@ -76,7 +69,7 @@ impl Runtime { Self::LinuxNative(provider) => provider.paths(name), #[cfg(target_os = "linux")] Self::Namespaces(provider) => provider.paths(name), - Self::Docker(_) | Self::Windows => Err(RuntimeError::Unsupported( + Self::Docker(_) => Err(RuntimeError::Unsupported( "native Sandbox paths need a native runtime", )), } @@ -94,11 +87,6 @@ impl Runtime { Self::Namespaces(provider) => provider .launch(request) .map(|sandbox| Sandbox::Namespaces(Box::new(sandbox))), - Self::Windows => Err(Box::new(LaunchFailure { - phase: LaunchPhase::Validate, - instance: None, - cause: RuntimeError::Unsupported(WINDOWS), - })), } } @@ -118,7 +106,6 @@ impl Runtime { Self::Namespaces(provider) => provider .reopen(id, record) .map(|sandbox| Sandbox::Namespaces(Box::new(sandbox))), - Self::Windows => Err(WireFailure::local(RuntimeError::Unsupported(WINDOWS))), } } @@ -138,7 +125,6 @@ impl Runtime { Self::Namespaces(provider) => provider .reopen_stopped(id, record) .map(|sandbox| Sandbox::Namespaces(Box::new(sandbox))), - Self::Windows => Err(WireFailure::local(RuntimeError::Unsupported(WINDOWS))), } } } diff --git a/engine/crates/layerfs-sandbox/src/backend/windows/README.md b/engine/crates/layerfs-sandbox/src/backend/windows/README.md deleted file mode 100644 index 4dd17d9c4..000000000 --- a/engine/crates/layerfs-sandbox/src/backend/windows/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Windows:占位(尚未实现) - -状态:占位。选到 `Runtime::Windows` 时返回既有的“不支持此平台”错误 -(`RuntimeError::Unsupported`),不 panic、不新建公开错误码、不产生任何副作用。 - -## 现在有什么 - -- `layerfs_sandbox::Runtime` 的五个取值:`Docker`、`MacosNative`、 - `LinuxNative`、`Namespaces`(仅 Linux)、`Windows`。前四个已有后端, - Windows 只有这个变体。 -- `Runtime::{capabilities, local_directory, launch, reopen, reopen_stopped}` - 在 Windows 上全部返回 `Unsupported`;`Sandbox` 句柄没有 Windows 分支, - 因为 Windows 上不可能启动出实例。 -- `layerfs-sandbox` 的 `backend` 只在 unix 下编译,`layerfs-node` 也只用 - unix 系统调用,所以今天在 Windows 主机上选不到这个变体:它存在的意义是 - 把“没有 Windows 宿主运行时”写进类型,而不是让调用方自己判平台。 - -## 为什么不做“Windows 本地进程”后端 - -macOS 原生的前提是:daemon 以本用户身份跑 NFS 回环服务,命令以同一身份 -运行,一切在同一个内核里。Windows 上没有等价物:LayerFS 的 FUSE 服务端是 -Linux 内核特性,Store 的 WAL 与目录锁只在一个内核内协调(见 #352 直接 -Store 访问的安全条件),命令身份、挂载可见性和进程组语义都要另建一套。 -因此 Windows 的路线不是“再写一个本地后端”,而是把 Linux 侧的能力搬到一个 -Linux 宿主里。 - -## 计划方向 - -两条路线,都由 #515 的 placement 设置表达,而不是在 Windows 本机上跑 daemon: - -1. **WSL2 分发(近期)**:Windows 上的集成适配器把 SDK 调用转发给 - 每个 LayerFS home 一个的、仅回环且带密钥的 worker;worker 在一个选定的 - WSL2 Linux 分发里直接用真实 SDK 打开共享 Store(ext4/xfs/btrfs), - 并用该分发的 Docker Engine 起 Sandbox daemon。Windows 只拥有 UI、绑定和 - trace,Linux 拥有本地句柄和项目发现。这是仓库根 `AGENTS.md` 已记录的 - Windows 例外,规则不变:只连回环、每次调用只尝试一次、丢失的回复不重放、 - 结果不确定的 Init 保留其 Linux home 和卷。 -2. **Hyper-V / VM 方向(后续)**:每个 Store 一个 Linux VM,Sandbox 是 VM 内 - 的命名空间;宿主侧只通过一条私有流连到 VM 内的 worker。见 #515 §6 - (`vm:` placement 与各 provider 的 VM/磁盘/私有流对照表)和 - #512 的实验结论。 - -## 实现时要先定的事 - -- placement 与后端选择的设置名(#515 V9 提议 `LAYERFS_PLACEMENT` 与 - `LAYERFS_SANDBOX_BACKEND`,只读 `LAYERFS_*`;集成自己的前缀由集成映射)。 -- Windows 上 `deploy.sandbox`、`deploy.localDir` 等现有设置的语义:#515 - 要求 product SDK 与 daemon 不为 Windows 改动,Windows 差异留在适配器里。 -- 到那时 `Runtime` 是否新增一个持有 worker 端点的变体(那时才需要数据), - 以及记录里如何标注该 Sandbox 由哪个运行时创建(无字段即 Docker)。 diff --git a/engine/crates/layerfs-sandbox/src/types/execution.rs b/engine/crates/layerfs-sandbox/src/types/execution.rs index 23c9dbeb0..eecc35cfd 100644 --- a/engine/crates/layerfs-sandbox/src/types/execution.rs +++ b/engine/crates/layerfs-sandbox/src/types/execution.rs @@ -1,5 +1,7 @@ //! Process observation is independent of pipe EOF and filesystem drain. -use super::{ContainerId, ExecId, RuntimeError}; +#[cfg(unix)] +use super::RuntimeError; +use super::{ContainerId, ExecId}; /// Explicit nonroot identity for ordinary commands. #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub struct CommandIdentity { @@ -7,6 +9,8 @@ pub struct CommandIdentity { pub gid: u32, } impl CommandIdentity { + /// Read by the backends only, which are Unix only. + #[cfg(unix)] pub(crate) fn check(self) -> Result<(), RuntimeError> { if self.uid == 0 || self.gid == 0 { Err(RuntimeError::Protocol("nonroot command uid/gid")) diff --git a/engine/crates/layerfs-sandbox/src/types/mod.rs b/engine/crates/layerfs-sandbox/src/types/mod.rs index 73ee81ecf..59313f8e2 100644 --- a/engine/crates/layerfs-sandbox/src/types/mod.rs +++ b/engine/crates/layerfs-sandbox/src/types/mod.rs @@ -10,6 +10,7 @@ mod request; mod transfer; pub use capabilities::{IsolationModel, MountDriver, ProviderCapabilities, SearchPathPolicy}; pub use execution::{CommandIdentity, ExecInspection}; +#[cfg(unix)] pub(crate) use failure::STOPPED; pub use failure::{ErrorDiagnostic, RuntimeError, WireFailure}; pub use identity::{ContainerId, ExecId}; diff --git a/engine/crates/layerfs-sandbox/src/types/request.rs b/engine/crates/layerfs-sandbox/src/types/request.rs index e14e795a9..137606794 100644 --- a/engine/crates/layerfs-sandbox/src/types/request.rs +++ b/engine/crates/layerfs-sandbox/src/types/request.rs @@ -1,5 +1,7 @@ //! Provider-independent ordinary command metadata and validation. -use crate::{CommandIdentity, RuntimeError}; +use crate::CommandIdentity; +#[cfg(unix)] +use crate::RuntimeError; use std::fmt; /// Caller-owned ordinary command metadata. No hidden shell/classifier/preparation. #[derive(Clone)] @@ -22,6 +24,7 @@ impl fmt::Debug for ExecRequest { } } impl ExecRequest { + #[cfg(unix)] pub(crate) fn check(&self) -> Result<(), RuntimeError> { self.identity.check()?; if self.arguments.is_empty() diff --git a/engine/crates/layerfs-sandbox/tests/native_platform.rs b/engine/crates/layerfs-sandbox/tests/native_platform.rs index f0465a7cc..7e1c15e5d 100644 --- a/engine/crates/layerfs-sandbox/tests/native_platform.rs +++ b/engine/crates/layerfs-sandbox/tests/native_platform.rs @@ -1,10 +1,6 @@ //! Platform refusal precedes filesystem access; a runtime never selects another backend. #![cfg(any(target_os = "linux", target_os = "macos"))] -use layerfs_sandbox::{ - CommandIdentity, ContainerId, DockerRecord, LaunchPhase, LaunchRequest, ProviderLaunchOptions, - Runtime, RuntimeError, SandboxRecord, -}; -use std::time::Duration; +use layerfs_sandbox::RuntimeError; #[test] fn wrong_platform_is_refused_before_root_access() { @@ -30,42 +26,3 @@ fn native_linux_requires_root_before_root_access() { )); } } - -/// Windows has no host runtime: the placeholder variant refuses every -/// operation before any effect, and never falls back to Docker or native. -#[test] -fn windows_is_refused_before_any_effect() { - let runtime = Runtime::Windows; - assert!(matches!( - runtime.capabilities(), - Err(RuntimeError::Unsupported(_)) - )); - assert!(matches!( - runtime.local_directory("one"), - Err(RuntimeError::Unsupported(_)) - )); - let request = LaunchRequest { - name: "one".into(), - daemon_executable: "/does-not-exist/daemon".into(), - daemon_config: b"setup".to_vec(), - labels: vec![], - startup_timeout: Duration::from_secs(1), - options: ProviderLaunchOptions::Local { - command_identity: CommandIdentity { uid: 501, gid: 20 }, - environment: vec![], - }, - }; - let failure = runtime.launch(request).err().unwrap(); - assert_eq!(failure.phase, LaunchPhase::Validate); - assert!(failure.instance.is_none()); - assert!(matches!(failure.cause, RuntimeError::Unsupported(_))); - let record = SandboxRecord::Docker(DockerRecord { - image: format!("sha256:{}", "a".repeat(64)), - store_volume: Some("lfs-store".into()), - port: 30421, - labels: vec![], - }); - let id = ContainerId::parse(&"b".repeat(64)).unwrap(); - assert!(runtime.reopen(id, &record).is_err()); - assert!(runtime.reopen_stopped(id, &record).is_err()); -} From ad7cb42ee9810806f32376a9fe9136859d13bf9e Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:51:16 +0800 Subject: [PATCH 17/37] sandbox: backend/ into platform/, json/ and root files (#527 step 9b) A move, with no behaviour change (D1 option C, D7). - backend/docker, backend/native and backend/namespaces move to platform/{docker,native,namespaces}; backend/linux and backend/macos move under platform/native/, the only code that reads them, and so do the two local helpers backend/listener.rs and backend/streams.rs. platform/namespaces keeps importing native's lifecycle as a sibling; its mod.rs doc comment now says so (F9). - backend/runtime.rs and backend/helper_spec.rs move to the crate root; backend/json.rs and backend/strings.rs become json.rs and json/strings.rs. The design listed json/mod.rs, but the product boundary guard keeps mod.rs files to declarations, so the parser keeps its own file beside the folder (as layerfs-content's filesystem/validate.rs does). - backend/identity.rs becomes ContainerId::random in types/identity.rs (Linux and macOS, as before); backend/mod.rs's declarations move to lib.rs and the new platform/mod.rs. - Modules are private. The public paths are the crate root and one module per backend: layerfs_sandbox::docker, ::native (Linux, macOS) and ::namespaces (Linux), re-exported from platform/ so no external path names it. The root also re-exports Docker, DockerProvider, NativeMacosProvider, NativeLinuxProvider, NamespaceProvider and HelperSpec. layerfs_sandbox::backend::X becomes layerfs_sandbox::X for each. - Every caller is updated: layerfs-node (discovery, local, sandbox), layerfs-api (two examples, sandbox_operations, provider_ownership), the helper binary, layerfs-sandbox's example and tests. - tools/check_product_boundary.py audits src/platform/native/macos/darwin.rs for unsafe, and its test names the new paths (Ruff-formatted). - lib.rs's comment, both PROVIDERS.md files and the current architecture documents' source links (71, 76, nfs-native-lifecycle, the sandbox-command-launcher proposal) name the new paths. Historical core/docs/issues/** records keep theirs. No tests deleted; no test files renamed. Checks: cargo +1.85.1 fmt (pass); clippy -p layerfs-sandbox -p layerfs-node -p layerfs-api -p layerfs-daemon --all-targets -D warnings on macOS and Linux (pass); clippy -p layerfs-sandbox --target x86_64-pc-windows-msvc -D warnings (pass); tools/check_product_boundary.py (PASS); tools/test_check_product_boundary.py 34 pass, the pre-existing test_path_violations error unchanged. Linux tests as root in the runtime image: native_provider 1, native_platform 2, namespaces_protocol 5, namespaces_rootfs 13, docker_provider 7, engine_lifecycle 12, runtime_enum 1, container_labels 3, docker_naming 1, engine_protocol 18, engine_keepalive 4, local_runtime 11, native_local 8, native_discovery 6, layerfs-api sandbox_operations 7 (all pass). Root-only, in the Lima VM lfs527-linux: namespaces_lifecycle 5, namespaces_userns 1 (pass). macOS: native_provider 1, native_platform 2, local_search_path 1, runtime_enum 1, docker_naming 1, namespaces_protocol 5, layerfs-api provider_ownership 1 (pass). Production LOC: 123204 -> 123207 (delta +3) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent ab00731d51 and the staged tree 42efec4c6e; after: core 41405; engine 77536; api 4266; Co-Authored-By: Claude Opus 5.5 --- .../71-ordinary-engine-runtime-foundation.md | 2 +- .../architecture/76-native-mount-session.md | 4 +-- .../docs/architecture/nfs-native-lifecycle.md | 2 +- .../proposal/sandbox-command-launcher.md | 4 +-- engine/crates/layerfs-api/PROVIDERS.md | 2 +- .../examples/sandbox_kernel_mount.rs | 2 +- .../layerfs-api/examples/sandbox_lifecycle.rs | 2 +- .../layerfs-api/tests/provider_ownership.rs | 3 +- .../layerfs-api/tests/sandbox_operations.rs | 2 +- engine/crates/layerfs-node/src/discovery.rs | 23 +++++++------ engine/crates/layerfs-node/src/local.rs | 8 ++--- engine/crates/layerfs-node/src/sandbox.rs | 4 +-- engine/crates/layerfs-sandbox/PROVIDERS.md | 32 +++++++++++++------ .../examples/engine_streams.rs | 2 +- .../layerfs-sandbox/src/backend/identity.rs | 16 ---------- .../crates/layerfs-sandbox/src/backend/mod.rs | 22 ------------- .../src/backend/namespaces/mod.rs | 23 ------------- .../src/bin/layerfs-sandbox-helper/init.rs | 2 +- .../src/bin/layerfs-sandbox-helper/mounts.rs | 2 +- .../src/{backend => }/helper_spec.rs | 0 .../layerfs-sandbox/src/{backend => }/json.rs | 8 +++-- .../src/{backend => json}/strings.rs | 6 ++-- engine/crates/layerfs-sandbox/src/lib.rs | 28 +++++++++++++--- .../{backend => platform}/docker/archive.rs | 0 .../src/{backend => platform}/docker/body.rs | 0 .../{backend => platform}/docker/container.rs | 4 +-- .../docker/container_types.rs | 0 .../{backend => platform}/docker/endpoint.rs | 2 +- .../{backend => platform}/docker/headers.rs | 0 .../src/{backend => platform}/docker/http.rs | 0 .../{backend => platform}/docker/inspect.rs | 2 +- .../{backend => platform}/docker/listener.rs | 0 .../src/{backend => platform}/docker/mod.rs | 0 .../src/{backend => platform}/docker/mux.rs | 0 .../{backend => platform}/docker/provider.rs | 3 +- .../docker/provider_exec.rs | 0 .../docker/provider_failure.rs | 0 .../{backend => platform}/docker/request.rs | 4 +-- .../{backend => platform}/docker/socket.rs | 0 .../{backend => platform}/docker/streams.rs | 0 .../{backend => platform}/docker/topology.rs | 2 +- .../{backend => platform}/docker/version.rs | 2 +- .../layerfs-sandbox/src/platform/mod.rs | 9 ++++++ .../namespaces/cgroup.rs | 0 .../namespaces/create.rs | 9 +++--- .../{backend => platform}/namespaces/exec.rs | 4 +-- .../{backend => platform}/namespaces/host.rs | 2 +- .../src/platform/namespaces/mod.rs | 26 +++++++++++++++ .../{backend => platform}/namespaces/paths.rs | 2 +- .../namespaces/provider.rs | 15 ++++----- .../namespaces/rootfs/archive.rs | 6 ++-- .../namespaces/rootfs/cache.rs | 2 +- .../namespaces/rootfs/layers.rs | 0 .../namespaces/rootfs/mod.rs | 0 .../namespaces/rootfs/tar.rs | 0 .../namespaces/rootfs/types.rs | 0 .../namespaces/sandbox.rs | 2 +- .../{backend => platform}/native/create.rs | 5 +-- .../src/{backend => platform}/native/exec.rs | 2 +- .../{backend => platform}/native/groups.rs | 0 .../{backend => platform/native}/linux/mod.rs | 2 +- .../native}/linux/mounts.rs | 0 .../native}/linux/process.rs | 2 +- .../{backend => platform/native}/listener.rs | 0 .../native}/macos/darwin.rs | 2 +- .../{backend => platform/native}/macos/mod.rs | 2 +- .../native}/macos/mounts.rs | 0 .../src/{backend => platform}/native/mod.rs | 18 +++++++---- .../{backend => platform}/native/process.rs | 0 .../{backend => platform}/native/provider.rs | 2 +- .../{backend => platform}/native/sandbox.rs | 0 .../{backend => platform}/native/search.rs | 0 .../{backend => platform/native}/streams.rs | 0 .../src/{backend => }/runtime.rs | 6 ++-- .../layerfs-sandbox/src/types/failure.rs | 2 +- .../layerfs-sandbox/src/types/identity.rs | 15 +++++++++ .../layerfs-sandbox/tests/container_labels.rs | 2 +- .../layerfs-sandbox/tests/docker_naming.rs | 2 +- .../layerfs-sandbox/tests/docker_provider.rs | 2 +- .../layerfs-sandbox/tests/engine_keepalive.rs | 2 +- .../layerfs-sandbox/tests/engine_lifecycle.rs | 17 ++++------ .../layerfs-sandbox/tests/engine_protocol.rs | 2 +- .../layerfs-sandbox/tests/local_runtime.rs | 8 ++--- .../tests/local_search_path.rs | 6 ++-- .../layerfs-sandbox/tests/local_stop_mount.rs | 2 +- .../tests/namespaces_lifecycle.rs | 2 +- .../tests/namespaces_protocol.rs | 2 +- .../tests/namespaces_rootfs.rs | 2 +- .../tests/namespaces_userns.rs | 2 +- .../layerfs-sandbox/tests/native_platform.rs | 14 +++----- .../layerfs-sandbox/tests/native_provider.rs | 4 +-- .../layerfs-sandbox/tests/runtime_enum.rs | 2 +- .../layerfs-sandbox/tests/support/engine.rs | 2 +- tools/check_product_boundary.py | 4 +-- tools/test_check_product_boundary.py | 7 ++-- 95 files changed, 226 insertions(+), 211 deletions(-) delete mode 100644 engine/crates/layerfs-sandbox/src/backend/identity.rs delete mode 100644 engine/crates/layerfs-sandbox/src/backend/mod.rs delete mode 100644 engine/crates/layerfs-sandbox/src/backend/namespaces/mod.rs rename engine/crates/layerfs-sandbox/src/{backend => }/helper_spec.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => }/json.rs (97%) rename engine/crates/layerfs-sandbox/src/{backend => json}/strings.rs (98%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/archive.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/body.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/container.rs (99%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/container_types.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/endpoint.rs (99%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/headers.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/http.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/inspect.rs (98%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/listener.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/mod.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/mux.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/provider.rs (97%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/provider_exec.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/provider_failure.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/request.rs (98%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/socket.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/streams.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/topology.rs (99%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/docker/version.rs (98%) create mode 100644 engine/crates/layerfs-sandbox/src/platform/mod.rs rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/cgroup.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/create.rs (97%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/exec.rs (98%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/host.rs (98%) create mode 100644 engine/crates/layerfs-sandbox/src/platform/namespaces/mod.rs rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/paths.rs (98%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/provider.rs (93%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/rootfs/archive.rs (98%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/rootfs/cache.rs (99%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/rootfs/layers.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/rootfs/mod.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/rootfs/tar.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/rootfs/types.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/namespaces/sandbox.rs (99%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/native/create.rs (98%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/native/exec.rs (99%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/native/groups.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform/native}/linux/mod.rs (89%) rename engine/crates/layerfs-sandbox/src/{backend => platform/native}/linux/mounts.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform/native}/linux/process.rs (98%) rename engine/crates/layerfs-sandbox/src/{backend => platform/native}/listener.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform/native}/macos/darwin.rs (99%) rename engine/crates/layerfs-sandbox/src/{backend => platform/native}/macos/mod.rs (85%) rename engine/crates/layerfs-sandbox/src/{backend => platform/native}/macos/mounts.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/native/mod.rs (82%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/native/process.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/native/provider.rs (98%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/native/sandbox.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform}/native/search.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => platform/native}/streams.rs (100%) rename engine/crates/layerfs-sandbox/src/{backend => }/runtime.rs (98%) diff --git a/core/docs/architecture/71-ordinary-engine-runtime-foundation.md b/core/docs/architecture/71-ordinary-engine-runtime-foundation.md index c4d60a746..debd77528 100644 --- a/core/docs/architecture/71-ordinary-engine-runtime-foundation.md +++ b/core/docs/architecture/71-ordinary-engine-runtime-foundation.md @@ -24,7 +24,7 @@ fields; nested Arguments/lookalikes cannot change them. Known root exit requires Running=false and a present code; null is never zero. PID is diagnostic only. A later observation does not resolve an earlier original lost-operation receipt. -`backend/docker/` owns standard HTTP/JSON/multiplex framing. Requests count escaped +`platform/docker/` owns standard HTTP/JSON/multiplex framing. Requests count escaped metadata locally then stream through an8KiB buffer; this is not a second runtime operation. Responses retain the same buffered reader through101 and validate the multiplexed media type. Content-Length/chunk sizes/frame lengths are scalar diff --git a/core/docs/architecture/76-native-mount-session.md b/core/docs/architecture/76-native-mount-session.md index 0843e751b..3560a0863 100644 --- a/core/docs/architecture/76-native-mount-session.md +++ b/core/docs/architecture/76-native-mount-session.md @@ -259,7 +259,7 @@ daemon does not wait or retry on its behalf. ## Sandbox access -The Docker [container configuration](../../../engine/crates/layerfs-sandbox/src/backend/docker/container.rs) +The Docker [container configuration](../../../engine/crates/layerfs-sandbox/src/platform/docker/container.rs) adds exactly `CapAdd: ["CAP_SYS_ADMIN"]`, one `/dev/fuse` device mapping and `apparmor=unconfined`, keeping `Privileged: false` and `no-new-privileges=true`. Since 2026-10-10 (owner decision C-1) it also sends one inline system-call @@ -270,7 +270,7 @@ no copy of a Workspace mount can exist outside the daemon's namespace and a normal Unmount stays truthful against any holder. A tool that needs an unprivileged user namespace fails in a Workspace command with `EPERM`. The filter replaces the Engine's default one for this container. -[Topology inspection](../../../engine/crates/layerfs-sandbox/src/backend/docker/topology.rs) +[Topology inspection](../../../engine/crates/layerfs-sandbox/src/platform/docker/topology.rs) requires exactly that set: a missing, widened or additional capability, device or security option is not reported as the daemon endpoint. Commands still run as the nonroot command identity with an empty effective capability set. diff --git a/core/docs/architecture/nfs-native-lifecycle.md b/core/docs/architecture/nfs-native-lifecycle.md index 75f4e9f73..a0b1a43c5 100644 --- a/core/docs/architecture/nfs-native-lifecycle.md +++ b/core/docs/architecture/nfs-native-lifecycle.md @@ -103,7 +103,7 @@ success; durable recovery of that lost result is not claimed. ## Stop before daemon termination -[`backend/native/sandbox.rs`](../../../engine/crates/layerfs-sandbox/src/backend/native/sandbox.rs) +[`platform/native/sandbox.rs`](../../../engine/crates/layerfs-sandbox/src/platform/native/sandbox.rs) attempts detach below that Sandbox's own directory before TERM/KILL, while its NFS server can still answer client writeback. A detach failure is logged and does not prevent the existing daemon and process-group stop. Stop remains crash diff --git a/core/docs/architecture/proposal/sandbox-command-launcher.md b/core/docs/architecture/proposal/sandbox-command-launcher.md index 4c056b7c8..468555275 100644 --- a/core/docs/architecture/proposal/sandbox-command-launcher.md +++ b/core/docs/architecture/proposal/sandbox-command-launcher.md @@ -15,7 +15,7 @@ Every `sandbox.exec` starts a new process through the Docker Engine (`sdk/js/native/src/exec.rs` → `layerfs_api::internal::exec` → -`layerfs-sandbox/src/backend/docker/`): +`layerfs-sandbox/src/platform/docker/`): 1. `POST /containers/{id}/exec` on a new Unix-socket connection (`Connection: close`); 2. `POST /exec/{id}/start`, upgraded and attached for output; @@ -218,7 +218,7 @@ Instead, within the current route: - `sandbox.exec` keeps one Docker exec per call (create, start, inspect). - #352 F-029: exec stops running the full `discovery::refresh()` on every call (one daemon `workspace.status` per mounted Workspace). -- Docker Engine connection reuse in `layerfs-sandbox/src/backend/docker/http.rs` +- Docker Engine connection reuse in `layerfs-sandbox/src/platform/docker/http.rs` instead of a new Unix-socket connection per request, one attempt per request. Both go to the #352 fixer as small fixes. The gates judge LayerFS work separately from process start (the split one-shot probe). diff --git a/engine/crates/layerfs-api/PROVIDERS.md b/engine/crates/layerfs-api/PROVIDERS.md index f7b11876f..5b4d330a6 100644 --- a/engine/crates/layerfs-api/PROVIDERS.md +++ b/engine/crates/layerfs-api/PROVIDERS.md @@ -2,7 +2,7 @@ Status: Current general guide. Native macOS is implemented and host-verified; Linux native is implemented, pending Linux host qualification; the Docker runtime is the default. `layerfs-sandbox` selects between them with the concrete `Runtime` enum; there are no provider traits. -`layerfs-sandbox::backend` exposes `Runtime` (a deployment's choice: `Docker`, `MacosNative`, `LinuxNative`, `Namespaces` (Linux only); Windows has none and runs the Linux build through WSL2 or a VM) and `Sandbox` (the launched owner of one Sandbox). `layerfs_sandbox::{Runtime, Sandbox}` re-export both; the crate root also re-exports the inputs and records they share (formerly `layerfs_sandbox::provider`, #527 step 9a). `ExecRequest` lives in the shared types layer; its Docker re-export remains compatible. `SandboxId` aliases the existing `ContainerId`, preserving encoded identities and records. The runtime layer has no daemon control dependency. +`layerfs-sandbox` exposes `Runtime` (a deployment's choice: `Docker`, `MacosNative`, `LinuxNative`, `Namespaces` (Linux only); Windows has none and runs the Linux build through WSL2 or a VM) and `Sandbox` (the launched owner of one Sandbox). `layerfs_sandbox::{Runtime, Sandbox}` re-export both; the crate root also re-exports the inputs and records they share (formerly `layerfs_sandbox::provider`, #527 step 9a). Backend-specific items are in `layerfs_sandbox::docker`, `::native` and `::namespaces` (formerly under `layerfs_sandbox::backend`, #527 step 9b); the providers, `Docker` and `HelperSpec` are also at the root. `ExecRequest` lives in the shared types layer; its Docker re-export remains compatible. `SandboxId` aliases the existing `ContainerId`, preserving encoded identities and records. The runtime layer has no daemon control dependency. `Runtime::Namespaces(NamespaceProvider)` (Linux) runs each daemon in its own mount, PID and IPC namespaces and cgroup v2 directory, on a root overlaid on the Sandbox image; it is selected by `deploy.sandboxBackend` `namespaces` under `deploy.sandbox` `native`. `Runtime::MacosNative(..)` and `Runtime::LinuxNative(..)` wrap `NativeMacosProvider::new(root)` and `NativeLinuxProvider::new(root)`, the two aliases of the same native implementation whose instances share the existing local runtime owner. Each refuses the wrong platform before root access. macOS uses Darwin process facts, the `mount` table and `umount -f`; Linux uses the retained #402 `/proc` PID/start/boot checks, process groups and lazy `MNT_DETACH`. Linux requires a root daemon and a root directory traversable by command users; ordinary commands keep #402's nonroot identity (Node selects 501:20) and fixed container PATH. macOS keeps the caller identity, inherited PATH and loopback NFS. The provider alone selects `LAYERFS_KERNEL=fuse` on Linux and `nfs` on macOS and rejects any launch environment that names it (#527 step 6). Launch preserves the original single-attempt process lifecycle, native identity, inherited PATH, NFS environment and partial owner on failure. `inspect` reports exact process liveness; unknown exit/storage facts stay absent. There is no Windows runtime (#527 D2): Windows runs the Linux build through WSL2 or a VM. Records remain the Node binding's responsibility; runtimes neither scan directories nor infer project ownership. B8 list aggregation and doctor remain future work. diff --git a/engine/crates/layerfs-api/examples/sandbox_kernel_mount.rs b/engine/crates/layerfs-api/examples/sandbox_kernel_mount.rs index 3aa7b025a..f7f5b61b1 100644 --- a/engine/crates/layerfs-api/examples/sandbox_kernel_mount.rs +++ b/engine/crates/layerfs-api/examples/sandbox_kernel_mount.rs @@ -14,7 +14,7 @@ use layerfs_bridge::{ }; use layerfs_history::{BranchId, HistoryCatalogConfig, HistoryName, LayerStackId, WorkspaceId}; use layerfs_persistence::{PersistenceConfig, SqlitePersistenceProfile}; -use layerfs_sandbox::backend::docker::{Docker, DockerProvider}; +use layerfs_sandbox::docker::{Docker, DockerProvider}; use layerfs_sandbox::{LaunchRequest, ProviderLaunchOptions}; use layerfs_storage::StoragePolicy; use layerfs_telemetry::timer::Timing; diff --git a/engine/crates/layerfs-api/examples/sandbox_lifecycle.rs b/engine/crates/layerfs-api/examples/sandbox_lifecycle.rs index 8319a4a9f..63ade4938 100644 --- a/engine/crates/layerfs-api/examples/sandbox_lifecycle.rs +++ b/engine/crates/layerfs-api/examples/sandbox_lifecycle.rs @@ -8,7 +8,7 @@ use layerfs_bridge::{ }; use layerfs_history::{BranchId, HistoryCatalogConfig, HistoryName, LayerStackId, WorkspaceId}; use layerfs_persistence::{PersistenceConfig, SqlitePersistenceProfile}; -use layerfs_sandbox::backend::docker::{Docker, DockerProvider}; +use layerfs_sandbox::docker::{Docker, DockerProvider}; use layerfs_sandbox::{LaunchRequest, ProviderLaunchOptions}; use layerfs_storage::StoragePolicy; use layerfs_telemetry::timer::Timing; diff --git a/engine/crates/layerfs-api/tests/provider_ownership.rs b/engine/crates/layerfs-api/tests/provider_ownership.rs index 81d35de8a..003056724 100644 --- a/engine/crates/layerfs-api/tests/provider_ownership.rs +++ b/engine/crates/layerfs-api/tests/provider_ownership.rs @@ -64,8 +64,7 @@ fn native_resource_paths_are_validated_before_launch() { duplex, }; use layerfs_sandbox::{ - backend::native::NativeMacosProvider, CommandIdentity, LaunchRequest, - ProviderLaunchOptions, Runtime, + native::NativeMacosProvider, CommandIdentity, LaunchRequest, ProviderLaunchOptions, Runtime, }; use std::{ os::unix::fs::{MetadataExt, PermissionsExt}, diff --git a/engine/crates/layerfs-api/tests/sandbox_operations.rs b/engine/crates/layerfs-api/tests/sandbox_operations.rs index 93575fec1..ea1d764f7 100644 --- a/engine/crates/layerfs-api/tests/sandbox_operations.rs +++ b/engine/crates/layerfs-api/tests/sandbox_operations.rs @@ -12,7 +12,7 @@ use layerfs_bridge::{ daemon_setup::{DaemonLimits, DaemonSetup}, duplex, }; -use layerfs_sandbox::backend::docker::DockerProvider; +use layerfs_sandbox::docker::DockerProvider; use layerfs_sandbox::Runtime; use layerfs_sandbox::{LaunchRequest, ProviderLaunchOptions}; use std::{ diff --git a/engine/crates/layerfs-node/src/discovery.rs b/engine/crates/layerfs-node/src/discovery.rs index 84f6e3c7d..8d02f84dd 100644 --- a/engine/crates/layerfs-node/src/discovery.rs +++ b/engine/crates/layerfs-node/src/discovery.rs @@ -12,9 +12,9 @@ use layerfs_bridge::{ provision::StoreManifest, }; use layerfs_persistence::{SealedStore, SqlitePersistenceProfile}; -use layerfs_sandbox::backend::docker::{Docker, DockerProvider, SandboxRequest}; +use layerfs_sandbox::docker::{Docker, DockerProvider, SandboxRequest}; #[cfg(any(target_os = "linux", target_os = "macos"))] -use layerfs_sandbox::backend::native::{self, LocalProcess}; +use layerfs_sandbox::native::{self, LocalProcess}; use layerfs_sandbox::{CommandIdentity, ContainerId, Sandbox, WireFailure}; use layerfs_sandbox::{LocalRecord, SandboxRecord}; use std::{ @@ -698,16 +698,15 @@ fn namespaces_record(args: &SdkValue, id: &str, value: &SdkValue) -> Result Result { - layerfs_sandbox::backend::native::NativeMacosProvider::new(root).map(Runtime::MacosNative) + layerfs_sandbox::native::NativeMacosProvider::new(root).map(Runtime::MacosNative) } #[cfg(target_os = "linux")] @@ -245,12 +245,10 @@ fn native_runtime( ) -> Result { match backend { crate::runtime::Backend::Native => { - layerfs_sandbox::backend::native::NativeLinuxProvider::new(root) - .map(Runtime::LinuxNative) + layerfs_sandbox::native::NativeLinuxProvider::new(root).map(Runtime::LinuxNative) } crate::runtime::Backend::Namespaces => { - layerfs_sandbox::backend::namespaces::NamespaceProvider::new(root) - .map(Runtime::Namespaces) + layerfs_sandbox::namespaces::NamespaceProvider::new(root).map(Runtime::Namespaces) } } } diff --git a/engine/crates/layerfs-node/src/sandbox.rs b/engine/crates/layerfs-node/src/sandbox.rs index b12641c41..4bbdfac06 100644 --- a/engine/crates/layerfs-node/src/sandbox.rs +++ b/engine/crates/layerfs-node/src/sandbox.rs @@ -20,7 +20,7 @@ use layerfs_api::{OperationFailure, SandboxApi, SandboxCause, SandboxPhase}; use layerfs_bridge::control::{SdkRefusal, SdkValue}; use layerfs_bridge::daemon_setup::{DaemonLimits, DaemonPostgres, DaemonSetup}; use layerfs_bridge::provision::StoreManifest; -use layerfs_sandbox::backend::docker::{CreatePhase, Docker, DockerProvider}; +use layerfs_sandbox::docker::{CreatePhase, Docker, DockerProvider}; use layerfs_sandbox::Runtime; use layerfs_sandbox::{LaunchRequest, ProviderLaunchOptions}; use std::path::{Path, PathBuf}; @@ -358,7 +358,7 @@ fn settled(failure: &ProviderFailure) -> bool { SandboxCause::Provider(launch) => match &launch.cause { layerfs_sandbox::RuntimeError::Docker(docker_failure) => { match docker_failure.as_ref() { - layerfs_sandbox::backend::docker::ProviderFailure::Create(create) => { + layerfs_sandbox::docker::ProviderFailure::Create(create) => { create.phase == CreatePhase::Create && !matches!( create.transfer.cause, diff --git a/engine/crates/layerfs-sandbox/PROVIDERS.md b/engine/crates/layerfs-sandbox/PROVIDERS.md index 569fa2baf..4c982afab 100644 --- a/engine/crates/layerfs-sandbox/PROVIDERS.md +++ b/engine/crates/layerfs-sandbox/PROVIDERS.md @@ -2,10 +2,21 @@ Status: Current general guide. -`backend::runtime` holds the concrete runtime choice and the launched owner. +`src/runtime.rs` holds the concrete runtime choice and the launched owner. There are no provider or instance traits: each backend is an ordinary concrete type and the only dispatch is one `match` per method. +Each backend has one folder under `src/platform/`, named as `LAYERFS_SANDBOX` +names it: `docker/`, `native/` (with its OS facts in `native/linux/` and +`native/macos/`) and `namespaces/` (Linux). Here `platform/` means the +backend; in `@layerfs/runtime` it means placement (#527 D7). The modules are +private: callers use the crate root and one public module per backend, +`layerfs_sandbox::docker`, `::native` and `::namespaces` (#527 step 9b; they +were under `layerfs_sandbox::backend`). The root re-exports `Runtime`, +`Sandbox`, `LaunchFailure`, the shared types, `Docker`, the four providers +(`DockerProvider`, `NativeMacosProvider`, `NativeLinuxProvider`, +`NamespaceProvider`) and `HelperSpec`. + - `Runtime` is one deployment's selection and is kept for every Sandbox it starts: `Docker(DockerProvider)` (the default), `MacosNative(NativeMacosProvider)`, `LinuxNative(NativeLinuxProvider)` and `Namespaces(NamespaceProvider)` (Linux @@ -19,7 +30,7 @@ type and the only dispatch is one `match` per method. `layerfs_sandbox::{Runtime, Sandbox, LaunchFailure}` re-export them; `LaunchFailure` (which holds a `Sandbox`) lives beside them in -`backend/runtime.rs`. The inputs and observations every backend shares are in +`src/runtime.rs`. The inputs and observations every backend shares are in the crate's private `types/` and re-exported at the root: `LaunchRequest`, `LaunchPhase`, `ProviderLaunchOptions`, `LocalRecord`, `NamespaceRecord`, `DockerRecord`, `SandboxRecord`, `ExecExit`, @@ -27,9 +38,10 @@ the crate's private `types/` and re-exported at the root: `layerfs_sandbox::provider`). `types/` depends on no backend except through `RuntimeError::Docker`; the conversions between `DockerRecord` and Docker's `SandboxRequest` are Docker's own. The runtime layer has no daemon control -dependency. `backend::HelperSpec` +dependency. `HelperSpec` (`src/helper_spec.rs`) is the namespace helper's line format; it is compiled and tested on every -platform, while only the helper that reads it is Linux only. +Unix platform, while only the helper that reads it is Linux only. `src/json/` +streams the Engine's replies and the namespace backend's image manifests. ## Docker @@ -60,12 +72,12 @@ absent. user and serves loopback NFS; `Runtime::LinuxNative(NativeLinuxProvider::new(root))` runs a root daemon serving FUSE with ordinary commands as a nonroot identity. Each refuses the wrong platform before root access, and Linux refuses a non-root -caller the same way. `backend::native` owns the one lifecycle both use; only the +caller the same way. `native` owns the one lifecycle both use; only the platform facts differ: -- `backend::macos`: `darwin.rs` (`proc_pidinfo`, `sysctl`, the `mount` table and +- `native/macos/`: `darwin.rs` (`proc_pidinfo`, `sysctl`, the `mount` table and `umount -f`) and `mounts.rs` (force detach, deepest first). -- `backend::linux`: `process.rs` (`/proc//stat`, the boot id and the +- `native/linux/`: `process.rs` (`/proc//stat`, the boot id and the process table) and `mounts.rs` (`/proc/self/mountinfo`, lazy `MNT_DETACH`). The provider validates the command identity, the environment it is given and @@ -87,15 +99,15 @@ PID and IPC namespaces and its own cgroup v2 directory. The VM that holds this kernel is the boundary (one per Store); the namespaces keep Sandboxes on one Store out of each other. -- `backend::namespaces::create` makes the Sandbox's private directory, copies +- `namespaces/create.rs` makes the Sandbox's private directory, copies the daemon to `/bin/layerfs-daemon` (0755), writes the setup (0600) and a `HelperSpec`, makes `/sys/fs/cgroup/layerfs/`, then spawns the helper's init stage. -- `backend::namespaces::sandbox` owns the launched handle: the init process's +- `namespaces/sandbox.rs` owns the launched handle: the init process's identity, `cgroup.kill` for stop (a `SIGKILL` to everything the Sandbox started, `populated 0` awaited), cgroup and directory removal on delete, and reopen by the recorded process plus its cgroup membership. -- `backend::namespaces::exec` runs one command through the helper's exec stage. +- `namespaces/exec.rs` runs one command through the helper's exec stage. - `src/bin/layerfs-sandbox-helper` performs the calls that act on the calling process, so the product crate stays `unsafe`-free: the init stage creates the namespaces, joins the cgroup and starts the inner stage (PID 1), which mounts diff --git a/engine/crates/layerfs-sandbox/examples/engine_streams.rs b/engine/crates/layerfs-sandbox/examples/engine_streams.rs index 2ef067fc1..0ae3fb7d3 100644 --- a/engine/crates/layerfs-sandbox/examples/engine_streams.rs +++ b/engine/crates/layerfs-sandbox/examples/engine_streams.rs @@ -1,6 +1,6 @@ //! Actual ordinary Engine exec/stdio/status on an explicitly caller-selected container. use layerfs_sandbox::{ - backend::docker::{Docker, ExecRequest}, + docker::{Docker, ExecRequest}, CommandIdentity, ContainerId, }; use std::{ diff --git a/engine/crates/layerfs-sandbox/src/backend/identity.rs b/engine/crates/layerfs-sandbox/src/backend/identity.rs deleted file mode 100644 index 8e1c174c7..000000000 --- a/engine/crates/layerfs-sandbox/src/backend/identity.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! A fresh random identity in the Engine's form (64 lowercase hex, not all -//! zero), so records, names and the cgroup directory treat a local Sandbox -//! like a container. -use crate::{ContainerId, RuntimeError}; -use std::{fs::File, io::Read}; - -pub(crate) fn random() -> Result { - let mut bytes = [0u8; 32]; - File::open("/dev/urandom")?.read_exact(&mut bytes)?; - const HEX: &[u8; 16] = b"0123456789abcdef"; - let text: String = (bytes.iter()) - .flat_map(|b| [HEX[usize::from(b >> 4)], HEX[usize::from(b & 15)]]) - .map(char::from) - .collect(); - ContainerId::parse(&text) -} diff --git a/engine/crates/layerfs-sandbox/src/backend/mod.rs b/engine/crates/layerfs-sandbox/src/backend/mod.rs deleted file mode 100644 index c820c691f..000000000 --- a/engine/crates/layerfs-sandbox/src/backend/mod.rs +++ /dev/null @@ -1,22 +0,0 @@ -//! Concrete ordinary runtime backends and the enum that selects one. -pub mod docker; -mod helper_spec; -#[cfg(any(target_os = "linux", target_os = "macos"))] -mod identity; -mod json; -#[cfg(target_os = "linux")] -pub(crate) mod linux; -#[cfg(any(target_os = "linux", target_os = "macos"))] -mod listener; -#[cfg(target_os = "macos")] -pub(crate) mod macos; -#[cfg(target_os = "linux")] -pub mod namespaces; -#[cfg(any(target_os = "linux", target_os = "macos"))] -pub mod native; -pub mod runtime; -#[cfg(any(target_os = "linux", target_os = "macos"))] -mod streams; -mod strings; -pub use helper_spec::HelperSpec; -pub use runtime::{LaunchFailure, Runtime, Sandbox}; diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/mod.rs b/engine/crates/layerfs-sandbox/src/backend/namespaces/mod.rs deleted file mode 100644 index 72a70747a..000000000 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/mod.rs +++ /dev/null @@ -1,23 +0,0 @@ -//! Linux namespace Sandboxes: each Sandbox is one daemon inside its own -//! mount, PID and IPC namespaces and its own cgroup v2 directory, on the one -//! kernel and one Store disk of the project's VM. Commands enter those -//! namespaces as a nonroot identity with no capabilities and no-new-privs, -//! and `cgroup.kill` ends everything the Sandbox started. -//! -//! The lifecycle is the local one (`crate::backend::native`): a private -//! directory per Sandbox, one daemon start and one listener wait, a record of -//! the daemon's exact process and its port. What this backend adds is outside -//! that daemon: the helper that builds the private root, the namespaces and -//! the cgroup. Nothing here is retried and no effect is undone implicitly. -mod cgroup; -mod create; -mod exec; -mod host; -mod paths; -mod provider; -pub mod rootfs; -mod sandbox; - -pub use provider::NamespaceProvider; -pub use rootfs::ImageRoot; -pub use sandbox::Sandbox; diff --git a/engine/crates/layerfs-sandbox/src/bin/layerfs-sandbox-helper/init.rs b/engine/crates/layerfs-sandbox/src/bin/layerfs-sandbox-helper/init.rs index 1576db116..ed1daf065 100644 --- a/engine/crates/layerfs-sandbox/src/bin/layerfs-sandbox-helper/init.rs +++ b/engine/crates/layerfs-sandbox/src/bin/layerfs-sandbox-helper/init.rs @@ -4,7 +4,7 @@ //! retries anything: a failure ends the stage and is written to the Sandbox's //! daemon log, which the start's error keeps. use super::mounts; -use layerfs_sandbox::backend::HelperSpec; +use layerfs_sandbox::HelperSpec; use nix::{ sched::{unshare, CloneFlags}, sys::wait::{waitpid, WaitStatus}, diff --git a/engine/crates/layerfs-sandbox/src/bin/layerfs-sandbox-helper/mounts.rs b/engine/crates/layerfs-sandbox/src/bin/layerfs-sandbox-helper/mounts.rs index 426faba65..e19f143f0 100644 --- a/engine/crates/layerfs-sandbox/src/bin/layerfs-sandbox-helper/mounts.rs +++ b/engine/crates/layerfs-sandbox/src/bin/layerfs-sandbox-helper/mounts.rs @@ -6,7 +6,7 @@ //! private `/proc`, `/dev` and `/tmp` are mounted over the image's own. //! Nothing the Sandbox mounts reaches the VM's mount tree: the init stage made //! this mount namespace private first. -use layerfs_sandbox::backend::HelperSpec; +use layerfs_sandbox::HelperSpec; use nix::{ mount::{mount, umount2, MntFlags, MsFlags}, unistd::chdir, diff --git a/engine/crates/layerfs-sandbox/src/backend/helper_spec.rs b/engine/crates/layerfs-sandbox/src/helper_spec.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/helper_spec.rs rename to engine/crates/layerfs-sandbox/src/helper_spec.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/json.rs b/engine/crates/layerfs-sandbox/src/json.rs similarity index 97% rename from engine/crates/layerfs-sandbox/src/backend/json.rs rename to engine/crates/layerfs-sandbox/src/json.rs index 9fdc1c772..8daf63014 100644 --- a/engine/crates/layerfs-sandbox/src/backend/json.rs +++ b/engine/crates/layerfs-sandbox/src/json.rs @@ -1,7 +1,9 @@ //! Shallow negotiated Engine schema, streamed without collecting unknown values. +mod strings; use crate::RuntimeError; use std::io::Read; -pub(super) struct Json { +pub(crate) use strings::quoted; +pub(crate) struct Json { input: R, peeked: Option, } @@ -48,7 +50,7 @@ impl Json { } pub fn object( &mut self, - mut field: impl FnMut(&mut Self, &super::strings::Text) -> Result<(), RuntimeError>, + mut field: impl FnMut(&mut Self, &strings::Text) -> Result<(), RuntimeError>, ) -> Result<(), RuntimeError> { self.whitespace()?; self.expect(b'{')?; @@ -223,7 +225,7 @@ impl Json { Ok(()) } } -pub(super) fn once(bits: &mut u8, bit: u8) -> Result<(), RuntimeError> { +pub(crate) fn once(bits: &mut u8, bit: u8) -> Result<(), RuntimeError> { if *bits & bit != 0 { return Err(RuntimeError::Protocol("duplicate deciding JSON field")); } diff --git a/engine/crates/layerfs-sandbox/src/backend/strings.rs b/engine/crates/layerfs-sandbox/src/json/strings.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/backend/strings.rs rename to engine/crates/layerfs-sandbox/src/json/strings.rs index fb22cf7c7..c78ee20f2 100644 --- a/engine/crates/layerfs-sandbox/src/backend/strings.rs +++ b/engine/crates/layerfs-sandbox/src/json/strings.rs @@ -1,8 +1,8 @@ //! Streaming JSON strings with exact UTF-8 and surrogate handling. -use super::json::Json; +use super::Json; use crate::RuntimeError; use std::io::{Read, Write}; -pub(super) struct Text { +pub(crate) struct Text { bytes: [u8; 128], len: usize, pub overflow: bool, @@ -146,7 +146,7 @@ impl Json { Ok(n) } } -pub(super) fn quoted(out: &mut (impl Write + ?Sized), value: &str) -> std::io::Result<()> { +pub(crate) fn quoted(out: &mut (impl Write + ?Sized), value: &str) -> std::io::Result<()> { out.write_all(b"\"")?; for c in value.chars() { match c { diff --git a/engine/crates/layerfs-sandbox/src/lib.rs b/engine/crates/layerfs-sandbox/src/lib.rs index 0e23f0abf..e4f621a2b 100644 --- a/engine/crates/layerfs-sandbox/src/lib.rs +++ b/engine/crates/layerfs-sandbox/src/lib.rs @@ -1,12 +1,32 @@ //! Ordinary runtime operations, separate from filesystem admission and data ownership. -// unsafe only in backend/macos/darwin.rs: macOS process facts come from -// proc_pidinfo, a system call (`ps` is setuid, which Seatbelt refuses) +//! +//! `platform/` holds one folder per Sandbox backend (`docker`, `native`, +//! `namespaces`), named as `LAYERFS_SANDBOX` names them; it means the backend +//! here, while `@layerfs/runtime`'s `platform/` means placement (#527 D7). +//! `runtime.rs` is the one `match` over the backends; `types/` holds what they +//! share; `json/` and `helper_spec.rs` are the shared formats. +// unsafe only in platform/native/macos/darwin.rs: macOS process facts come +// from proc_pidinfo, a system call (`ps` is setuid, which Seatbelt refuses) #![deny(unsafe_code)] #[cfg(unix)] -pub mod backend; +mod helper_spec; +#[cfg(unix)] +mod json; +#[cfg(unix)] +mod platform; +#[cfg(unix)] +mod runtime; mod types; #[cfg(unix)] -pub use backend::{LaunchFailure, Runtime, Sandbox}; +pub use helper_spec::HelperSpec; +#[cfg(unix)] +pub use platform::docker::{self, Docker, DockerProvider}; +#[cfg(target_os = "linux")] +pub use platform::namespaces::{self, NamespaceProvider}; +#[cfg(any(target_os = "linux", target_os = "macos"))] +pub use platform::native::{self, NativeLinuxProvider, NativeMacosProvider}; +#[cfg(unix)] +pub use runtime::{LaunchFailure, Runtime, Sandbox}; pub use types::{ CommandIdentity, ContainerId, DockerRecord, ErrorDiagnostic, ExecExit, ExecId, ExecInspection, ExecRequest, Image, IsolationModel, LaunchPhase, LaunchRequest, LocalRecord, MountDriver, diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/archive.rs b/engine/crates/layerfs-sandbox/src/platform/docker/archive.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/archive.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/archive.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/body.rs b/engine/crates/layerfs-sandbox/src/platform/docker/body.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/body.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/body.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/container.rs b/engine/crates/layerfs-sandbox/src/platform/docker/container.rs similarity index 99% rename from engine/crates/layerfs-sandbox/src/backend/docker/container.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/container.rs index 00e26480a..e6a52df1f 100644 --- a/engine/crates/layerfs-sandbox/src/backend/docker/container.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/container.rs @@ -4,8 +4,8 @@ use super::{ topology::SECCOMP, Docker, }; -use crate::backend::json::{once, Json}; -use crate::backend::strings::quoted; +use crate::json::quoted; +use crate::json::{once, Json}; use crate::{ContainerId, RuntimeError, WireFailure}; use std::io::{self, Read, Write}; impl SandboxRequest { diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/container_types.rs b/engine/crates/layerfs-sandbox/src/platform/docker/container_types.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/container_types.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/container_types.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/endpoint.rs b/engine/crates/layerfs-sandbox/src/platform/docker/endpoint.rs similarity index 99% rename from engine/crates/layerfs-sandbox/src/backend/docker/endpoint.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/endpoint.rs index 832d8dc85..5038d517c 100644 --- a/engine/crates/layerfs-sandbox/src/backend/docker/endpoint.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/endpoint.rs @@ -1,6 +1,6 @@ //! Structurally observed exact container and loopback-published daemon endpoint. use super::Sandbox; -use crate::backend::json::{once, Json}; +use crate::json::{once, Json}; use crate::{ContainerId, RuntimeError, WireFailure}; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; impl Sandbox { diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/headers.rs b/engine/crates/layerfs-sandbox/src/platform/docker/headers.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/headers.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/headers.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/http.rs b/engine/crates/layerfs-sandbox/src/platform/docker/http.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/http.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/http.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/inspect.rs b/engine/crates/layerfs-sandbox/src/platform/docker/inspect.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/backend/docker/inspect.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/inspect.rs index 1a81fc2ba..950ed3d85 100644 --- a/engine/crates/layerfs-sandbox/src/backend/docker/inspect.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/inspect.rs @@ -1,6 +1,6 @@ //! One exact runtime observation, structurally decoded without retaining Arguments. use super::Docker; -use crate::backend::json::{once, Json}; +use crate::json::{once, Json}; use crate::{ContainerId, ExecId, ExecInspection, RuntimeError, WireFailure}; impl Docker { /// Reads one coherent runtime snapshot. PID is diagnostic, never a signal target. diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/listener.rs b/engine/crates/layerfs-sandbox/src/platform/docker/listener.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/listener.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/listener.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/mod.rs b/engine/crates/layerfs-sandbox/src/platform/docker/mod.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/mod.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/mod.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/mux.rs b/engine/crates/layerfs-sandbox/src/platform/docker/mux.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/mux.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/mux.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/provider.rs b/engine/crates/layerfs-sandbox/src/platform/docker/provider.rs similarity index 97% rename from engine/crates/layerfs-sandbox/src/backend/docker/provider.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/provider.rs index e79f469c8..21529656f 100644 --- a/engine/crates/layerfs-sandbox/src/backend/docker/provider.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/provider.rs @@ -89,8 +89,7 @@ impl DockerProvider { Ok(()) => Ok(instance.expect("launched")), Err(cause) => Err(Box::new(LaunchFailure { phase, - instance: instance - .map(|sandbox| Box::new(crate::backend::Sandbox::Docker(sandbox))), + instance: instance.map(|sandbox| Box::new(crate::Sandbox::Docker(sandbox))), cause, })), } diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/provider_exec.rs b/engine/crates/layerfs-sandbox/src/platform/docker/provider_exec.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/provider_exec.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/provider_exec.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/provider_failure.rs b/engine/crates/layerfs-sandbox/src/platform/docker/provider_failure.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/provider_failure.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/provider_failure.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/request.rs b/engine/crates/layerfs-sandbox/src/platform/docker/request.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/backend/docker/request.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/request.rs index 5b283c9c8..abd572c8c 100644 --- a/engine/crates/layerfs-sandbox/src/backend/docker/request.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/request.rs @@ -1,7 +1,7 @@ //! One ordinary non-TTY Exec creation; exact acknowledged runtime custody. use super::Docker; -use crate::backend::json::{once, Json}; -use crate::backend::strings::quoted; +use crate::json::quoted; +use crate::json::{once, Json}; pub use crate::ExecRequest; use crate::{ContainerId, ExecId, RuntimeError, WireFailure}; use std::io::{self, Write}; diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/socket.rs b/engine/crates/layerfs-sandbox/src/platform/docker/socket.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/socket.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/socket.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/streams.rs b/engine/crates/layerfs-sandbox/src/platform/docker/streams.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/docker/streams.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/streams.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/topology.rs b/engine/crates/layerfs-sandbox/src/platform/docker/topology.rs similarity index 99% rename from engine/crates/layerfs-sandbox/src/backend/docker/topology.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/topology.rs index 3bc931099..21703f904 100644 --- a/engine/crates/layerfs-sandbox/src/backend/docker/topology.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/topology.rs @@ -1,6 +1,6 @@ //! Exact observed daemon identity, security and kernel-access settings, and volume placement. use super::SandboxRequest; -use crate::backend::json::{once, Json}; +use crate::json::{once, Json}; use crate::RuntimeError; use std::io::Read; /// The container's whole system-call filter. It denies creation of a user diff --git a/engine/crates/layerfs-sandbox/src/backend/docker/version.rs b/engine/crates/layerfs-sandbox/src/platform/docker/version.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/backend/docker/version.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/version.rs index 973623a47..d61f71742 100644 --- a/engine/crates/layerfs-sandbox/src/backend/docker/version.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/version.rs @@ -3,7 +3,7 @@ use super::{ http::{failure, Mode}, Docker, }; -use crate::backend::json::{once, Json}; +use crate::json::{once, Json}; use crate::{ErrorDiagnostic, RuntimeError, WireFailure}; /// The oldest Engine API minor version (1.N) this client speaks: Engine 28.0. /// Before it, uploading the daemon fails (`getent unable to find entry "0:0"`: diff --git a/engine/crates/layerfs-sandbox/src/platform/mod.rs b/engine/crates/layerfs-sandbox/src/platform/mod.rs new file mode 100644 index 000000000..502ac0bd4 --- /dev/null +++ b/engine/crates/layerfs-sandbox/src/platform/mod.rs @@ -0,0 +1,9 @@ +//! Every Sandbox backend, one folder each, named as `LAYERFS_SANDBOX` names +//! it: a Docker container, a native daemon process, or that process in Linux +//! namespaces and a cgroup. Callers reach them as `layerfs_sandbox::docker`, +//! `::native` and `::namespaces`; this folder's name is not public. +pub mod docker; +#[cfg(target_os = "linux")] +pub mod namespaces; +#[cfg(any(target_os = "linux", target_os = "macos"))] +pub mod native; diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/cgroup.rs b/engine/crates/layerfs-sandbox/src/platform/namespaces/cgroup.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/namespaces/cgroup.rs rename to engine/crates/layerfs-sandbox/src/platform/namespaces/cgroup.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs b/engine/crates/layerfs-sandbox/src/platform/namespaces/create.rs similarity index 97% rename from engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs rename to engine/crates/layerfs-sandbox/src/platform/namespaces/create.rs index 163f615c3..f36775cf4 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/create.rs +++ b/engine/crates/layerfs-sandbox/src/platform/namespaces/create.rs @@ -8,9 +8,9 @@ use super::{ rootfs::{self, ImageRoot}, sandbox::Sandbox, }; -use crate::backend::listener; -use crate::backend::native::{search::search_path, Local, LocalPhase, LocalProcess, KERNEL_ROUTE}; -use crate::backend::{identity, HelperSpec}; +use crate::platform::native::listener; +use crate::platform::native::{search::search_path, Local, LocalPhase, LocalProcess, KERNEL_ROUTE}; +use crate::HelperSpec; use crate::{CommandIdentity, Image, RuntimeError}; use nix::fcntl::OFlag; use std::{ @@ -62,7 +62,8 @@ pub(crate) fn create( }; let (paths, image) = start_request(local, helper, request, options) .map_err(|cause| fail(LocalPhase::Validate, None, cause))?; - let id = identity::random().map_err(|cause| fail(LocalPhase::Validate, None, cause))?; + let id = + crate::ContainerId::random().map_err(|cause| fail(LocalPhase::Validate, None, cause))?; let cgroup = cgroup::path(&id); // one create of the directory: a name another start holds fails here fs::DirBuilder::new() diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/exec.rs b/engine/crates/layerfs-sandbox/src/platform/namespaces/exec.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/backend/namespaces/exec.rs rename to engine/crates/layerfs-sandbox/src/platform/namespaces/exec.rs index d1658e69d..aac15e2ab 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/exec.rs +++ b/engine/crates/layerfs-sandbox/src/platform/namespaces/exec.rs @@ -4,8 +4,8 @@ //! the helper's own pipes; nothing of this process's environment but the //! search path reaches it, and no stdin is offered. use super::sandbox::Sandbox; -use crate::backend::native::search::search_path; -use crate::backend::streams; +use crate::platform::native::search::search_path; +use crate::platform::native::streams; use crate::ExecExit; use crate::{ExecRequest, RuntimeError, WireFailure}; use std::{ diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/host.rs b/engine/crates/layerfs-sandbox/src/platform/namespaces/host.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/backend/namespaces/host.rs rename to engine/crates/layerfs-sandbox/src/platform/namespaces/host.rs index 0107cf02b..f558dc59a 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/host.rs +++ b/engine/crates/layerfs-sandbox/src/platform/namespaces/host.rs @@ -77,7 +77,7 @@ pub(crate) fn require_fuse() -> Result<(), RuntimeError> { /// Sandbox is made rather than failing inside the Sandbox's mount. pub(crate) fn require_overlay_upper(root: &Path) -> Result<(), RuntimeError> { let resolved = fs::canonicalize(root)?; - match super::super::linux::mounts::filesystem(&resolved) { + match crate::platform::native::linux::mounts::filesystem(&resolved) { Ok(kind) if !UNSUITABLE.contains(&kind.as_str()) && !kind.starts_with("fuse") => Ok(()), // an unreadable mount table is no proof either way: the mount itself // then reports what is wrong, and nothing is invented here diff --git a/engine/crates/layerfs-sandbox/src/platform/namespaces/mod.rs b/engine/crates/layerfs-sandbox/src/platform/namespaces/mod.rs new file mode 100644 index 000000000..bce8d2bbd --- /dev/null +++ b/engine/crates/layerfs-sandbox/src/platform/namespaces/mod.rs @@ -0,0 +1,26 @@ +//! Linux namespace Sandboxes: each Sandbox is one daemon inside its own +//! mount, PID and IPC namespaces and its own cgroup v2 directory, on the one +//! kernel and one Store disk of the project's VM. Commands enter those +//! namespaces as a nonroot identity with no capabilities and no-new-privs, +//! and `cgroup.kill` ends everything the Sandbox started. +//! +//! The lifecycle is the local one, imported from the sibling backend +//! [`super::native`] (namespaces is native with namespaces added: its +//! `Local`, `LocalPaths`, `LocalPhase`, `LocalProcess`, `search`, `listener`, +//! `streams` and Linux `mounts`): a private directory per Sandbox, one daemon +//! start and one listener wait, a record of the daemon's exact process and +//! its port. What this backend adds is outside that daemon: the helper that +//! builds the private root, the namespaces and the cgroup. Nothing here is +//! retried and no effect is undone implicitly. +mod cgroup; +mod create; +mod exec; +mod host; +mod paths; +mod provider; +pub mod rootfs; +mod sandbox; + +pub use provider::NamespaceProvider; +pub use rootfs::ImageRoot; +pub use sandbox::Sandbox; diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/paths.rs b/engine/crates/layerfs-sandbox/src/platform/namespaces/paths.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/backend/namespaces/paths.rs rename to engine/crates/layerfs-sandbox/src/platform/namespaces/paths.rs index f0b33be48..2e47ab869 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/paths.rs +++ b/engine/crates/layerfs-sandbox/src/platform/namespaces/paths.rs @@ -1,7 +1,7 @@ //! Where one namespace Sandbox keeps its parts: the same private directory a //! local Sandbox uses, plus the executable it runs and the private root its //! mount namespace pivots to. -use crate::backend::native::LocalPaths; +use crate::platform::native::LocalPaths; use crate::RuntimeError; use std::path::PathBuf; diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs b/engine/crates/layerfs-sandbox/src/platform/namespaces/provider.rs similarity index 93% rename from engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs rename to engine/crates/layerfs-sandbox/src/platform/namespaces/provider.rs index 473d49386..3f27c52a1 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/provider.rs +++ b/engine/crates/layerfs-sandbox/src/platform/namespaces/provider.rs @@ -11,7 +11,7 @@ use super::{ rootfs, sandbox::Sandbox, }; -use crate::backend::native::{Local, LocalPaths}; +use crate::platform::native::{Local, LocalPaths}; use crate::{ContainerId, RuntimeError, WireFailure}; use crate::{ IsolationModel, LaunchFailure, LaunchPhase, LaunchRequest, MountDriver, ProviderCapabilities, @@ -105,14 +105,13 @@ impl NamespaceProvider { } = *failure; Box::new(LaunchFailure { phase: match phase { - crate::backend::native::LocalPhase::Validate => LaunchPhase::Validate, - crate::backend::native::LocalPhase::Create => LaunchPhase::Create, - crate::backend::native::LocalPhase::Start => LaunchPhase::Start, - crate::backend::native::LocalPhase::Listener => LaunchPhase::Listener, + crate::platform::native::LocalPhase::Validate => LaunchPhase::Validate, + crate::platform::native::LocalPhase::Create => LaunchPhase::Create, + crate::platform::native::LocalPhase::Start => LaunchPhase::Start, + crate::platform::native::LocalPhase::Listener => LaunchPhase::Listener, }, - instance: sandbox.map(|sandbox| { - Box::new(crate::backend::Sandbox::Namespaces(Box::new(sandbox))) - }), + instance: sandbox + .map(|sandbox| Box::new(crate::Sandbox::Namespaces(Box::new(sandbox)))), cause, }) }) diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/rootfs/archive.rs b/engine/crates/layerfs-sandbox/src/platform/namespaces/rootfs/archive.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/backend/namespaces/rootfs/archive.rs rename to engine/crates/layerfs-sandbox/src/platform/namespaces/rootfs/archive.rs index 3afd57368..d85290867 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/rootfs/archive.rs +++ b/engine/crates/layerfs-sandbox/src/platform/namespaces/rootfs/archive.rs @@ -6,7 +6,7 @@ use super::{ tar::{path_of, Kind, Tape}, PATH_MAX, }; -use crate::{backend::json::Json, Image, RuntimeError}; +use crate::{json::Json, Image, RuntimeError}; use std::{ fs::{self, File, OpenOptions}, io::{self, BufReader, Read, Seek, SeekFrom}, @@ -99,13 +99,13 @@ fn parse_manifest(bytes: &[u8], image: &Image) -> Result } match key.text() { "Config" => { - crate::backend::json::once(&mut seen, 1)?; + crate::json::once(&mut seen, 1)?; let mut text = Vec::new(); reader.text_into(&mut text, PATH_MAX)?; config = Some(text); } "Layers" => { - crate::backend::json::once(&mut seen, 2)?; + crate::json::once(&mut seen, 2)?; let mut items = Vec::new(); reader.array(|entry| { if items.len() == LAYERS_MAX { diff --git a/engine/crates/layerfs-sandbox/src/backend/namespaces/rootfs/cache.rs b/engine/crates/layerfs-sandbox/src/platform/namespaces/rootfs/cache.rs similarity index 99% rename from engine/crates/layerfs-sandbox/src/backend/namespaces/rootfs/cache.rs rename to engine/crates/layerfs-sandbox/src/platform/namespaces/rootfs/cache.rs index 90db445af..3a1c6632e 100644 --- a/engine/crates/layerfs-sandbox/src/backend/namespaces/rootfs/cache.rs +++ b/engine/crates/layerfs-sandbox/src/platform/namespaces/rootfs/cache.rs @@ -47,7 +47,7 @@ pub fn ensure(archive: &Path, image: &Image, cache: &Path) -> Result/stat`, this boot's identity from //! `/proc/sys/kernel/random/boot_id`, and every process from `/proc`. -use super::super::native::process::Stat; +use crate::platform::native::process::Stat; use std::io; use std::sync::OnceLock; diff --git a/engine/crates/layerfs-sandbox/src/backend/listener.rs b/engine/crates/layerfs-sandbox/src/platform/native/listener.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/listener.rs rename to engine/crates/layerfs-sandbox/src/platform/native/listener.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/macos/darwin.rs b/engine/crates/layerfs-sandbox/src/platform/native/macos/darwin.rs similarity index 99% rename from engine/crates/layerfs-sandbox/src/backend/macos/darwin.rs rename to engine/crates/layerfs-sandbox/src/platform/native/macos/darwin.rs index 99ba3e4a5..352749480 100644 --- a/engine/crates/layerfs-sandbox/src/backend/macos/darwin.rs +++ b/engine/crates/layerfs-sandbox/src/platform/native/macos/darwin.rs @@ -4,7 +4,7 @@ //! identity (`sysctl`), the mount table (`mount`) and a forced unmount //! (`umount -f`). Each tool is one run with a fixed path and the C locale, //! read once; nothing is retried. -use crate::backend::native::process::Stat; +use crate::platform::native::process::Stat; use nix::{ fcntl::{fcntl, FcntlArg, OFlag}, libc, diff --git a/engine/crates/layerfs-sandbox/src/backend/macos/mod.rs b/engine/crates/layerfs-sandbox/src/platform/native/macos/mod.rs similarity index 85% rename from engine/crates/layerfs-sandbox/src/backend/macos/mod.rs rename to engine/crates/layerfs-sandbox/src/platform/native/macos/mod.rs index f9bf26868..ac1aab1de 100644 --- a/engine/crates/layerfs-sandbox/src/backend/macos/mod.rs +++ b/engine/crates/layerfs-sandbox/src/platform/native/macos/mod.rs @@ -1,7 +1,7 @@ //! macOS platform facts for the native runtime: the daemon serves loopback //! NFS as this user, so its process facts come from `proc_pidinfo`/`sysctl` //! and its mounts from `mount`/`umount -f`. Only facts live here; the Sandbox -//! lifecycle is shared with Linux in [`super::native`]. +//! lifecycle is shared with Linux in [`super`]. mod darwin; pub(crate) mod mounts; pub(crate) use darwin::{boot, force_unmount, mount_points, processes, stat}; diff --git a/engine/crates/layerfs-sandbox/src/backend/macos/mounts.rs b/engine/crates/layerfs-sandbox/src/platform/native/macos/mounts.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/macos/mounts.rs rename to engine/crates/layerfs-sandbox/src/platform/native/macos/mounts.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/native/mod.rs b/engine/crates/layerfs-sandbox/src/platform/native/mod.rs similarity index 82% rename from engine/crates/layerfs-sandbox/src/backend/native/mod.rs rename to engine/crates/layerfs-sandbox/src/platform/native/mod.rs index bd59feebf..e2716e762 100644 --- a/engine/crates/layerfs-sandbox/src/backend/native/mod.rs +++ b/engine/crates/layerfs-sandbox/src/platform/native/mod.rs @@ -10,9 +10,9 @@ //! retried. //! //! The lifecycle here is one implementation for both platforms. What differs -//! is read where it lives: [`super::macos`] supplies Darwin process facts, the +//! is read where it lives: [`macos`] supplies Darwin process facts, the //! `mount` table and `umount -f` for the loopback NFS the macOS daemon serves; -//! [`super::linux`] supplies `/proc` facts, the `mountinfo` table and a lazy +//! [`linux`] supplies `/proc` facts, the `mountinfo` table and a lazy //! `MNT_DETACH` for the FUSE mount the root daemon serves. //! //! The daemon and its commands start with one search path and nothing else of @@ -23,16 +23,22 @@ mod create; mod exec; mod groups; +#[cfg(target_os = "linux")] +pub(crate) mod linux; +pub(crate) mod listener; +#[cfg(target_os = "macos")] +pub(crate) mod macos; pub(crate) mod process; mod provider; mod sandbox; pub(crate) mod search; -#[cfg(target_os = "linux")] -pub(crate) use super::linux as platform; -#[cfg(target_os = "macos")] -pub(crate) use super::macos as platform; +pub(crate) mod streams; pub use create::{Local, LocalCreateFailure, LocalPaths, LocalPhase}; pub use exec::LocalExit; +#[cfg(target_os = "linux")] +pub(crate) use linux as platform; +#[cfg(target_os = "macos")] +pub(crate) use macos as platform; pub use process::LocalProcess; #[cfg(target_os = "linux")] pub(crate) use provider::KERNEL_ROUTE; diff --git a/engine/crates/layerfs-sandbox/src/backend/native/process.rs b/engine/crates/layerfs-sandbox/src/platform/native/process.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/native/process.rs rename to engine/crates/layerfs-sandbox/src/platform/native/process.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/native/provider.rs b/engine/crates/layerfs-sandbox/src/platform/native/provider.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/backend/native/provider.rs rename to engine/crates/layerfs-sandbox/src/platform/native/provider.rs index 2d0450370..dde1623e7 100644 --- a/engine/crates/layerfs-sandbox/src/backend/native/provider.rs +++ b/engine/crates/layerfs-sandbox/src/platform/native/provider.rs @@ -130,7 +130,7 @@ impl NativeProvider { }, instance: failure .sandbox - .map(|sandbox| Box::new(crate::backend::Sandbox::Native(sandbox))), + .map(|sandbox| Box::new(crate::Sandbox::Native(sandbox))), cause: failure.cause, }) }) diff --git a/engine/crates/layerfs-sandbox/src/backend/native/sandbox.rs b/engine/crates/layerfs-sandbox/src/platform/native/sandbox.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/native/sandbox.rs rename to engine/crates/layerfs-sandbox/src/platform/native/sandbox.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/native/search.rs b/engine/crates/layerfs-sandbox/src/platform/native/search.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/native/search.rs rename to engine/crates/layerfs-sandbox/src/platform/native/search.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/streams.rs b/engine/crates/layerfs-sandbox/src/platform/native/streams.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/backend/streams.rs rename to engine/crates/layerfs-sandbox/src/platform/native/streams.rs diff --git a/engine/crates/layerfs-sandbox/src/backend/runtime.rs b/engine/crates/layerfs-sandbox/src/runtime.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/backend/runtime.rs rename to engine/crates/layerfs-sandbox/src/runtime.rs index 03dd93848..3ea3fa0a2 100644 --- a/engine/crates/layerfs-sandbox/src/backend/runtime.rs +++ b/engine/crates/layerfs-sandbox/src/runtime.rs @@ -1,11 +1,11 @@ //! The concrete runtimes a Sandbox can run on: one enum names the deployment's //! choice, and [`Sandbox`] is the launched owner over it. There is no provider //! trait; each backend is a concrete type and dispatch is a `match` here. -use super::docker::{self, DockerProvider}; +use crate::platform::docker::{self, DockerProvider}; #[cfg(target_os = "linux")] -use super::namespaces::{self, NamespaceProvider}; +use crate::platform::namespaces::{self, NamespaceProvider}; #[cfg(any(target_os = "linux", target_os = "macos"))] -use super::native::{self, NativeLinuxProvider, NativeMacosProvider}; +use crate::platform::native::{self, NativeLinuxProvider, NativeMacosProvider}; use crate::{ContainerId, ExecRequest, RuntimeError, WireFailure}; use crate::{ ExecExit, LaunchPhase, LaunchRequest, LocalRecord, ProviderCapabilities, SandboxInspection, diff --git a/engine/crates/layerfs-sandbox/src/types/failure.rs b/engine/crates/layerfs-sandbox/src/types/failure.rs index 26c3b3d91..0b743b996 100644 --- a/engine/crates/layerfs-sandbox/src/types/failure.rs +++ b/engine/crates/layerfs-sandbox/src/types/failure.rs @@ -5,7 +5,7 @@ use std::{fmt, io}; pub enum RuntimeError { /// Original Docker provider stage failure, including retained transfer/stream owners. #[cfg(unix)] - Docker(Box), + Docker(Box), Io(io::Error), Protocol(&'static str), /// Original HTTP status, with a separately retained bounded error-body diagnostic. diff --git a/engine/crates/layerfs-sandbox/src/types/identity.rs b/engine/crates/layerfs-sandbox/src/types/identity.rs index ac109c664..fc00770f0 100644 --- a/engine/crates/layerfs-sandbox/src/types/identity.rs +++ b/engine/crates/layerfs-sandbox/src/types/identity.rs @@ -33,6 +33,21 @@ impl ContainerId { pub fn as_str(&self) -> &str { self.0.text() } + /// A fresh random identity in the Engine's form (64 lowercase hex, not + /// all zero), so records, names and the cgroup directory treat a local + /// Sandbox like a container. + #[cfg(any(target_os = "linux", target_os = "macos"))] + pub(crate) fn random() -> Result { + use std::{fs::File, io::Read}; + let mut bytes = [0u8; 32]; + File::open("/dev/urandom")?.read_exact(&mut bytes)?; + const HEX: &[u8; 16] = b"0123456789abcdef"; + let text: String = (bytes.iter()) + .flat_map(|b| [HEX[usize::from(b >> 4)], HEX[usize::from(b & 15)]]) + .map(char::from) + .collect(); + Self::parse(&text) + } } impl fmt::Debug for ContainerId { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { diff --git a/engine/crates/layerfs-sandbox/tests/container_labels.rs b/engine/crates/layerfs-sandbox/tests/container_labels.rs index fb960e571..4acc7522a 100644 --- a/engine/crates/layerfs-sandbox/tests/container_labels.rs +++ b/engine/crates/layerfs-sandbox/tests/container_labels.rs @@ -7,7 +7,7 @@ mod support { pub mod engine; } use layerfs_sandbox::{ - backend::docker::{CreatePhase, SandboxRequest}, + docker::{CreatePhase, SandboxRequest}, RuntimeError, }; use std::{ diff --git a/engine/crates/layerfs-sandbox/tests/docker_naming.rs b/engine/crates/layerfs-sandbox/tests/docker_naming.rs index edc415d56..007795a24 100644 --- a/engine/crates/layerfs-sandbox/tests/docker_naming.rs +++ b/engine/crates/layerfs-sandbox/tests/docker_naming.rs @@ -1,6 +1,6 @@ //! A client that names its containers takes only names the Engine accepts //! without escaping, and refuses every other before any request. -use layerfs_sandbox::backend::docker::Docker; +use layerfs_sandbox::docker::Docker; use std::time::Duration; fn client() -> Docker { diff --git a/engine/crates/layerfs-sandbox/tests/docker_provider.rs b/engine/crates/layerfs-sandbox/tests/docker_provider.rs index 0e0c125c8..306c79967 100644 --- a/engine/crates/layerfs-sandbox/tests/docker_provider.rs +++ b/engine/crates/layerfs-sandbox/tests/docker_provider.rs @@ -4,7 +4,7 @@ #[path = "support/engine.rs"] mod peer; use layerfs_sandbox::{ - backend::docker::{DockerProvider, ProviderFailure, Sandbox, SandboxRequest}, + docker::{DockerProvider, ProviderFailure, Sandbox, SandboxRequest}, CommandIdentity, ContainerId, DockerRecord, ExecRequest, LaunchPhase, LaunchRequest, LocalRecord, ProviderLaunchOptions, Runtime, RuntimeError, SandboxRecord, }; diff --git a/engine/crates/layerfs-sandbox/tests/engine_keepalive.rs b/engine/crates/layerfs-sandbox/tests/engine_keepalive.rs index 7f8bc5ad6..b4dd8179f 100644 --- a/engine/crates/layerfs-sandbox/tests/engine_keepalive.rs +++ b/engine/crates/layerfs-sandbox/tests/engine_keepalive.rs @@ -3,7 +3,7 @@ //! refused to keep is never used, and nothing is resent. #![cfg(unix)] use layerfs_sandbox::{ - backend::docker::{Docker, ExecRequest}, + docker::{Docker, ExecRequest}, CommandIdentity, ContainerId, ExecId, }; use std::{ diff --git a/engine/crates/layerfs-sandbox/tests/engine_lifecycle.rs b/engine/crates/layerfs-sandbox/tests/engine_lifecycle.rs index b5ecfbb3a..aa3a71c2f 100644 --- a/engine/crates/layerfs-sandbox/tests/engine_lifecycle.rs +++ b/engine/crates/layerfs-sandbox/tests/engine_lifecycle.rs @@ -4,7 +4,7 @@ mod support { pub mod engine; } use layerfs_sandbox::{ - backend::docker::{CreatePhase, SandboxRequest}, + docker::{CreatePhase, SandboxRequest}, RuntimeError, }; use std::{ @@ -347,8 +347,7 @@ fn marker_inside_truncated_frame_keeps_evidence_and_fails_readiness() { fn reopened(status: u16, body: &[u8]) -> bool { let (docker, peer) = Peer::new(vec![fixed(status, body)], 64); let id = layerfs_sandbox::ContainerId::parse(CID).unwrap(); - let Err(failure) = layerfs_sandbox::backend::docker::Sandbox::reopen(docker, id, request()) - else { + let Err(failure) = layerfs_sandbox::docker::Sandbox::reopen(docker, id, request()) else { panic!("reopen of an unanswered container fails"); }; let calls = peer.finish(); @@ -369,8 +368,7 @@ fn a_stop_the_engine_answers_with_no_such_container_is_a_gone_container() { let gone = format!(r#"{{"message":"No such container: {CID}"}}"#); let (docker, peer) = Peer::new(vec![endpoint(), fixed(404, gone.as_bytes())], 64); let id = layerfs_sandbox::ContainerId::parse(CID).unwrap(); - let mut sandbox = - layerfs_sandbox::backend::docker::Sandbox::reopen(docker, id, request()).unwrap(); + let mut sandbox = layerfs_sandbox::docker::Sandbox::reopen(docker, id, request()).unwrap(); let failure = sandbox.stop(1).unwrap_err(); assert!(failure.container_gone()); assert!(!sandbox.disposition().stopped); @@ -393,8 +391,7 @@ fn exited() -> String { fn reopened_from(body: &str) -> Box { let (docker, peer) = Peer::new(vec![fixed(200, body.as_bytes())], 64); let id = layerfs_sandbox::ContainerId::parse(CID).unwrap(); - let Err(failure) = layerfs_sandbox::backend::docker::Sandbox::reopen(docker, id, request()) - else { + let Err(failure) = layerfs_sandbox::docker::Sandbox::reopen(docker, id, request()) else { panic!("reopen of a container that does not run fails"); }; peer.finish(); @@ -419,7 +416,7 @@ fn only_the_exact_intact_container_not_running_is_a_stopped_container() { #[test] fn provider_inspects_and_reopens_exact_running_and_stopped_deployments() { - use layerfs_sandbox::backend::docker::DockerProvider; + use layerfs_sandbox::docker::DockerProvider; use layerfs_sandbox::SandboxRecord; let id = layerfs_sandbox::ContainerId::parse(CID).unwrap(); let running = inspect().replace( @@ -462,7 +459,7 @@ fn provider_inspects_and_reopens_exact_running_and_stopped_deployments() { fn a_stopped_container_is_deleted_once_and_never_forced() { let id = layerfs_sandbox::ContainerId::parse(CID).unwrap(); let (docker, peer) = Peer::new(vec![fixed(204, b"")], 64); - let mut sandbox = layerfs_sandbox::backend::docker::Sandbox::stopped(docker, id, request()); + let mut sandbox = layerfs_sandbox::docker::Sandbox::stopped(docker, id, request()); assert!( sandbox.endpoint().is_err(), "a stopped Sandbox has no endpoint" @@ -477,7 +474,7 @@ fn a_stopped_container_is_deleted_once_and_never_forced() { // running again meanwhile: the Engine refuses the unforced Delete let running = br#"{"message":"cannot remove container: container is running"}"#; let (docker, peer) = Peer::new(vec![fixed(409, running)], 64); - let mut sandbox = layerfs_sandbox::backend::docker::Sandbox::stopped(docker, id, request()); + let mut sandbox = layerfs_sandbox::docker::Sandbox::stopped(docker, id, request()); assert!(sandbox.delete().is_err()); assert!(!sandbox.disposition().deleted); peer.finish(); diff --git a/engine/crates/layerfs-sandbox/tests/engine_protocol.rs b/engine/crates/layerfs-sandbox/tests/engine_protocol.rs index bbb7fb093..30499cbe6 100644 --- a/engine/crates/layerfs-sandbox/tests/engine_protocol.rs +++ b/engine/crates/layerfs-sandbox/tests/engine_protocol.rs @@ -3,7 +3,7 @@ #[path = "support/engine.rs"] mod peer; use layerfs_sandbox::{ - backend::docker::{CreatePhase, Docker, ExecRequest, SandboxRequest}, + docker::{CreatePhase, Docker, ExecRequest, SandboxRequest}, CommandIdentity, ContainerId, ExecId, RuntimeError, }; use std::io::{self, Write}; diff --git a/engine/crates/layerfs-sandbox/tests/local_runtime.rs b/engine/crates/layerfs-sandbox/tests/local_runtime.rs index 1db9a03b7..bf484575b 100644 --- a/engine/crates/layerfs-sandbox/tests/local_runtime.rs +++ b/engine/crates/layerfs-sandbox/tests/local_runtime.rs @@ -1,14 +1,12 @@ -//! The native process runtime (`backend::native`): one daemon process per +//! The native process runtime (`layerfs_sandbox::native`): one daemon process per //! Sandbox directory, observed by process id and start time, its commands run //! as their own identity, and its stop and delete each attempted once. A //! small shell script stands in for the daemon; nothing here needs root. //! The runtime is Linux only, and so are these tests. #![cfg(target_os = "linux")] use layerfs_sandbox::{ - backend::{ - docker::ExecRequest, - native::{Local, LocalPhase, LocalProcess, Sandbox}, - }, + docker::ExecRequest, + native::{Local, LocalPhase, LocalProcess, Sandbox}, CommandIdentity, RuntimeError, }; use std::{ diff --git a/engine/crates/layerfs-sandbox/tests/local_search_path.rs b/engine/crates/layerfs-sandbox/tests/local_search_path.rs index a6ff147a1..3e824600b 100644 --- a/engine/crates/layerfs-sandbox/tests/local_search_path.rs +++ b/engine/crates/layerfs-sandbox/tests/local_search_path.rs @@ -6,10 +6,8 @@ //! process's PATH, which no other test in this binary reads. #![cfg(target_os = "macos")] use layerfs_sandbox::{ - backend::{ - docker::ExecRequest, - native::{Local, Sandbox}, - }, + docker::ExecRequest, + native::{Local, Sandbox}, CommandIdentity, }; use std::{ diff --git a/engine/crates/layerfs-sandbox/tests/local_stop_mount.rs b/engine/crates/layerfs-sandbox/tests/local_stop_mount.rs index a1cb95089..f12d574e5 100644 --- a/engine/crates/layerfs-sandbox/tests/local_stop_mount.rs +++ b/engine/crates/layerfs-sandbox/tests/local_stop_mount.rs @@ -3,7 +3,7 @@ //! disposable: this test stops its daemon and force-detaches its mounts. #![cfg(target_os = "macos")] use layerfs_sandbox::{ - backend::native::{LocalProcess, Sandbox}, + native::{LocalProcess, Sandbox}, ContainerId, }; use std::{path::PathBuf, process::Command}; diff --git a/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs b/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs index fc1f9518a..9a7c1984a 100644 --- a/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs +++ b/engine/crates/layerfs-sandbox/tests/namespaces_lifecycle.rs @@ -17,7 +17,7 @@ mod support { pub mod image; } use layerfs_sandbox::{ - backend::namespaces::{NamespaceProvider, Sandbox}, + namespaces::{NamespaceProvider, Sandbox}, CommandIdentity, ExecRequest, Image, LaunchRequest, ProviderLaunchOptions, RuntimeError, SandboxRecord, }; diff --git a/engine/crates/layerfs-sandbox/tests/namespaces_protocol.rs b/engine/crates/layerfs-sandbox/tests/namespaces_protocol.rs index 72210bb23..e3969f16f 100644 --- a/engine/crates/layerfs-sandbox/tests/namespaces_protocol.rs +++ b/engine/crates/layerfs-sandbox/tests/namespaces_protocol.rs @@ -2,7 +2,7 @@ //! recorded facts a reopen reads, and the refusals that keep one runtime's //! records from another. Nothing here starts a process. use layerfs_sandbox::{ - backend::HelperSpec, DockerRecord, Image, LocalRecord, NamespaceRecord, SandboxRecord, + DockerRecord, HelperSpec, Image, LocalRecord, NamespaceRecord, SandboxRecord, }; use std::path::PathBuf; diff --git a/engine/crates/layerfs-sandbox/tests/namespaces_rootfs.rs b/engine/crates/layerfs-sandbox/tests/namespaces_rootfs.rs index 0ba5f4b37..6699c5a95 100644 --- a/engine/crates/layerfs-sandbox/tests/namespaces_rootfs.rs +++ b/engine/crates/layerfs-sandbox/tests/namespaces_rootfs.rs @@ -10,7 +10,7 @@ mod support { pub mod image; } use layerfs_sandbox::{ - backend::namespaces::rootfs::{self, ImageRoot}, + namespaces::rootfs::{self, ImageRoot}, Image, }; use std::{ diff --git a/engine/crates/layerfs-sandbox/tests/namespaces_userns.rs b/engine/crates/layerfs-sandbox/tests/namespaces_userns.rs index fcfa2b034..10a7b3214 100644 --- a/engine/crates/layerfs-sandbox/tests/namespaces_userns.rs +++ b/engine/crates/layerfs-sandbox/tests/namespaces_userns.rs @@ -6,7 +6,7 @@ //! runs in its own binary (no Sandbox runs beside it) and only as root in the //! VM or CI host that owns this kernel. #![cfg(target_os = "linux")] -use layerfs_sandbox::{backend::namespaces::NamespaceProvider, RuntimeError}; +use layerfs_sandbox::{namespaces::NamespaceProvider, RuntimeError}; use std::{fs, os::unix::fs::PermissionsExt, path::Path, path::PathBuf}; /// The kernel's limit on user namespaces. diff --git a/engine/crates/layerfs-sandbox/tests/native_platform.rs b/engine/crates/layerfs-sandbox/tests/native_platform.rs index 7e1c15e5d..4be92b66a 100644 --- a/engine/crates/layerfs-sandbox/tests/native_platform.rs +++ b/engine/crates/layerfs-sandbox/tests/native_platform.rs @@ -5,13 +5,11 @@ use layerfs_sandbox::RuntimeError; #[test] fn wrong_platform_is_refused_before_root_access() { #[cfg(target_os = "macos")] - let result = layerfs_sandbox::backend::native::NativeLinuxProvider::new( - "/does-not-exist/native-provider", - ); + let result = + layerfs_sandbox::native::NativeLinuxProvider::new("/does-not-exist/native-provider"); #[cfg(target_os = "linux")] - let result = layerfs_sandbox::backend::native::NativeMacosProvider::new( - "/does-not-exist/native-provider", - ); + let result = + layerfs_sandbox::native::NativeMacosProvider::new("/does-not-exist/native-provider"); assert!(matches!(result, Err(RuntimeError::Unsupported(_)))); } @@ -19,9 +17,7 @@ fn wrong_platform_is_refused_before_root_access() { fn native_linux_requires_root_before_root_access() { if cfg!(target_os = "linux") && !nix::unistd::Uid::effective().is_root() { assert!(matches!( - layerfs_sandbox::backend::native::NativeLinuxProvider::new( - "/does-not-exist/native-provider" - ), + layerfs_sandbox::native::NativeLinuxProvider::new("/does-not-exist/native-provider"), Err(RuntimeError::Unsupported(_)) )); } diff --git a/engine/crates/layerfs-sandbox/tests/native_provider.rs b/engine/crates/layerfs-sandbox/tests/native_provider.rs index cc9ea931f..aa9af66c2 100644 --- a/engine/crates/layerfs-sandbox/tests/native_provider.rs +++ b/engine/crates/layerfs-sandbox/tests/native_provider.rs @@ -1,9 +1,9 @@ //! Real native runtime lifecycle and partial launch custody through the Runtime enum. #![cfg(any(target_os = "macos", target_os = "linux"))] #[cfg(target_os = "linux")] -use layerfs_sandbox::backend::native::NativeLinuxProvider as NativeProvider; +use layerfs_sandbox::native::NativeLinuxProvider as NativeProvider; #[cfg(target_os = "macos")] -use layerfs_sandbox::backend::native::NativeMacosProvider as NativeProvider; +use layerfs_sandbox::native::NativeMacosProvider as NativeProvider; use layerfs_sandbox::{ CommandIdentity, DockerRecord, LaunchPhase, LaunchRequest, ProviderLaunchOptions, Runtime, SandboxRecord, diff --git a/engine/crates/layerfs-sandbox/tests/runtime_enum.rs b/engine/crates/layerfs-sandbox/tests/runtime_enum.rs index 1f7c1ba78..c2a0f671a 100644 --- a/engine/crates/layerfs-sandbox/tests/runtime_enum.rs +++ b/engine/crates/layerfs-sandbox/tests/runtime_enum.rs @@ -1,5 +1,5 @@ //! The Runtime enum's Docker selection: no local directory, container capabilities. -use layerfs_sandbox::backend::docker::{Docker, DockerProvider}; +use layerfs_sandbox::docker::{Docker, DockerProvider}; use layerfs_sandbox::Runtime; use std::time::Duration; diff --git a/engine/crates/layerfs-sandbox/tests/support/engine.rs b/engine/crates/layerfs-sandbox/tests/support/engine.rs index 8918f6741..54bf0cec5 100644 --- a/engine/crates/layerfs-sandbox/tests/support/engine.rs +++ b/engine/crates/layerfs-sandbox/tests/support/engine.rs @@ -1,5 +1,5 @@ //! External bounded local Engine peer, through ordinary public Unix endpoint configuration. -use layerfs_sandbox::backend::docker::Docker; +use layerfs_sandbox::docker::Docker; use std::{ fs, io::{BufRead, BufReader, Read, Write}, diff --git a/tools/check_product_boundary.py b/tools/check_product_boundary.py index c6c86c6ac..cc99a989a 100644 --- a/tools/check_product_boundary.py +++ b/tools/check_product_boundary.py @@ -18,13 +18,13 @@ # Crates whose `unsafe` surface is bounded. layerfs-storage keeps one audited # FFI module (encoding/codec.rs); Persistence has the owner-authorized macOS # seal file-control module; Sandbox reads macOS process facts through -# proc_pidinfo in backend/macos/darwin.rs. Their siblings stay unsafe-free. The +# proc_pidinfo in platform/native/macos/darwin.rs. Their siblings stay unsafe-free. The # comment in a lint name (`unsafe_code`) is not the bare word, so attr lines # never trip the scan once comments are stripped. UNSAFE_AUDITED_MODULE = { "layerfs-storage": "src/encoding/codec.rs", "layerfs-persistence": "src/backend/sqlite/lifecycle/file_control.rs", - "layerfs-sandbox": "src/backend/macos/darwin.rs", + "layerfs-sandbox": "src/platform/native/macos/darwin.rs", } UNSAFE_FREE_CRATES = ( "layerfs-content", diff --git a/tools/test_check_product_boundary.py b/tools/test_check_product_boundary.py index de0715e4f..d93d62086 100644 --- a/tools/test_check_product_boundary.py +++ b/tools/test_check_product_boundary.py @@ -124,15 +124,16 @@ def test_sdk_source_edges_and_unsafe_boundary(self): self.assertFalse(unsafe_violations(root, "#![forbid(unsafe_code)]\nmod init;")) def test_sandbox_active_edges_and_unsafe_boundary(self): - path = Path("engine/crates/layerfs-sandbox/src/backend/docker/http.rs") + path = Path("engine/crates/layerfs-sandbox/src/platform/docker/http.rs") self.assertTrue(unsafe_violations(path, "unsafe fn signal_pid() {}")) self.assertFalse(unsafe_violations(Path("engine/crates/layerfs-sandbox/src/lib.rs"), "#![deny(unsafe_code)]")) self.assertTrue(unsafe_violations(Path("engine/crates/layerfs-sandbox/src/lib.rs"), "#![forbid(unsafe_code)]")) - darwin = Path("engine/crates/layerfs-sandbox/src/backend/macos/darwin.rs") + darwin = Path("engine/crates/layerfs-sandbox/src/platform/native/macos/darwin.rs") self.assertFalse(unsafe_violations(darwin, "fn f() { unsafe { libc::proc_listallpids(); } }")) self.assertTrue( unsafe_violations( - Path("engine/crates/layerfs-sandbox/src/backend/macos/mounts.rs"), "fn f() { unsafe { call(); } }" + Path("engine/crates/layerfs-sandbox/src/platform/native/macos/mounts.rs"), + "fn f() { unsafe { call(); } }", ) ) prefix = '[package]\nname="layerfs-sandbox"\n[dependencies]\n' From 2d6770fb47db0aba018da3e151d3dea582be7be4 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:56:43 +0800 Subject: [PATCH 18/37] sandbox: Docker's files by role, docker/client/, os, ExecExit (#527 step 9c) A move, with no behaviour change: the same file names for the same roles in every backend (provider, create, sandbox, exec). - docker/container.rs becomes create.rs (create and start); its stop, delete and their one-response helper move to sandbox.rs, the former container_types.rs, beside the Sandbox they act on. - request.rs (Exec creation), inspect.rs (Exec inspection) and provider_exec.rs (the provider's noninteractive run) join in exec.rs; provider_failure.rs becomes failure.rs and archive.rs upload.rs. - docker/client/ is the Engine HTTP client: http.rs, socket.rs, body.rs, mux.rs and version.rs; headers.rs's one header grammar joins body.rs. Items the rest of Docker reads become pub(in crate::platform::docker). - native's `use linux|macos as platform` alias becomes `os`, so it no longer shadows crate::platform. - native::LocalExit goes: native's Sandbox::run returns the shared ExecExit (pid Some, stdout_bytes, stderr_bytes), the shape Docker and namespaces already return, and Runtime's native arm no longer converts. - The unused DockerInstance, NativeLinuxInstance and NativeMacosInstance aliases are removed. - PROVIDERS.md describes the roles; the architecture document 76 and the sandbox-command-launcher proposal link the new Docker paths; the product boundary test names client/http.rs. No tests deleted. Adapted: local_runtime reads exit.stdout_bytes and exit.stderr_bytes (LocalExit's stdout/stderr). Checks: cargo +1.85.1 fmt (pass); clippy -p layerfs-sandbox -p layerfs-node -p layerfs-api -p layerfs-daemon --all-targets -D warnings on macOS and Linux (pass); clippy -p layerfs-sandbox --target x86_64-pc-windows-msvc -D warnings (pass); tools/check_product_boundary.py (PASS); tools/test_check_product_boundary.py 34 pass, the pre-existing test_path_violations error unchanged. Linux tests as root in the runtime image: native_provider 1, native_platform 2, namespaces_protocol 5, namespaces_rootfs 13, docker_provider 7, engine_lifecycle 12, runtime_enum 1, container_labels 3, docker_naming 1, engine_protocol 18, engine_keepalive 4, local_runtime 11, native_local 8, native_discovery 6, layerfs-api sandbox_operations 7 (all pass). Root-only, in the Lima VM lfs527-linux: namespaces_lifecycle 5, namespaces_userns 1 (pass). macOS: native_provider 1, native_platform 2, local_search_path 1, runtime_enum 1, docker_naming 1, namespaces_protocol 5, engine_protocol 18, layerfs-api provider_ownership 1 (pass). Production LOC: 123207 -> 123182 (delta -25) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent ad7cb42ee9 and the staged tree 34c14ee740; after: core 41405; engine 77511; api 4266; Co-Authored-By: Claude Opus 5.5 --- .../architecture/76-native-mount-session.md | 2 +- .../proposal/sandbox-command-launcher.md | 2 +- engine/crates/layerfs-sandbox/PROVIDERS.md | 10 + .../src/platform/docker/{ => client}/body.rs | 42 ++- .../src/platform/docker/{ => client}/http.rs | 31 +- .../src/platform/docker/client/mod.rs | 11 + .../src/platform/docker/{ => client}/mux.rs | 2 +- .../platform/docker/{ => client}/socket.rs | 2 +- .../platform/docker/{ => client}/version.rs | 2 +- .../docker/{container.rs => create.rs} | 57 +-- .../src/platform/docker/exec.rs | 329 ++++++++++++++++++ .../{provider_failure.rs => failure.rs} | 0 .../src/platform/docker/headers.rs | 30 -- .../src/platform/docker/inspect.rs | 96 ----- .../src/platform/docker/listener.rs | 8 +- .../src/platform/docker/mod.rs | 38 +- .../src/platform/docker/provider.rs | 2 - .../src/platform/docker/provider_exec.rs | 100 ------ .../src/platform/docker/request.rs | 138 -------- .../docker/{container_types.rs => sandbox.rs} | 61 +++- .../src/platform/docker/streams.rs | 5 +- .../platform/docker/{archive.rs => upload.rs} | 8 +- .../src/platform/native/exec.rs | 27 +- .../src/platform/native/groups.rs | 4 +- .../src/platform/native/mod.rs | 9 +- .../src/platform/native/process.rs | 2 +- .../src/platform/native/provider.rs | 4 - .../src/platform/native/sandbox.rs | 6 +- engine/crates/layerfs-sandbox/src/runtime.rs | 10 +- .../layerfs-sandbox/tests/local_runtime.rs | 4 +- tools/test_check_product_boundary.py | 2 +- 31 files changed, 518 insertions(+), 526 deletions(-) rename engine/crates/layerfs-sandbox/src/platform/docker/{ => client}/body.rs (81%) rename engine/crates/layerfs-sandbox/src/platform/docker/{ => client}/http.rs (96%) create mode 100644 engine/crates/layerfs-sandbox/src/platform/docker/client/mod.rs rename engine/crates/layerfs-sandbox/src/platform/docker/{ => client}/mux.rs (77%) rename engine/crates/layerfs-sandbox/src/platform/docker/{ => client}/socket.rs (98%) rename engine/crates/layerfs-sandbox/src/platform/docker/{ => client}/version.rs (97%) rename engine/crates/layerfs-sandbox/src/platform/docker/{container.rs => create.rs} (76%) create mode 100644 engine/crates/layerfs-sandbox/src/platform/docker/exec.rs rename engine/crates/layerfs-sandbox/src/platform/docker/{provider_failure.rs => failure.rs} (100%) delete mode 100644 engine/crates/layerfs-sandbox/src/platform/docker/headers.rs delete mode 100644 engine/crates/layerfs-sandbox/src/platform/docker/inspect.rs delete mode 100644 engine/crates/layerfs-sandbox/src/platform/docker/provider_exec.rs delete mode 100644 engine/crates/layerfs-sandbox/src/platform/docker/request.rs rename engine/crates/layerfs-sandbox/src/platform/docker/{container_types.rs => sandbox.rs} (69%) rename engine/crates/layerfs-sandbox/src/platform/docker/{archive.rs => upload.rs} (96%) diff --git a/core/docs/architecture/76-native-mount-session.md b/core/docs/architecture/76-native-mount-session.md index 3560a0863..a77a50f81 100644 --- a/core/docs/architecture/76-native-mount-session.md +++ b/core/docs/architecture/76-native-mount-session.md @@ -259,7 +259,7 @@ daemon does not wait or retry on its behalf. ## Sandbox access -The Docker [container configuration](../../../engine/crates/layerfs-sandbox/src/platform/docker/container.rs) +The Docker [container configuration](../../../engine/crates/layerfs-sandbox/src/platform/docker/create.rs) adds exactly `CapAdd: ["CAP_SYS_ADMIN"]`, one `/dev/fuse` device mapping and `apparmor=unconfined`, keeping `Privileged: false` and `no-new-privileges=true`. Since 2026-10-10 (owner decision C-1) it also sends one inline system-call diff --git a/core/docs/architecture/proposal/sandbox-command-launcher.md b/core/docs/architecture/proposal/sandbox-command-launcher.md index 468555275..1668a9c80 100644 --- a/core/docs/architecture/proposal/sandbox-command-launcher.md +++ b/core/docs/architecture/proposal/sandbox-command-launcher.md @@ -218,7 +218,7 @@ Instead, within the current route: - `sandbox.exec` keeps one Docker exec per call (create, start, inspect). - #352 F-029: exec stops running the full `discovery::refresh()` on every call (one daemon `workspace.status` per mounted Workspace). -- Docker Engine connection reuse in `layerfs-sandbox/src/platform/docker/http.rs` +- Docker Engine connection reuse in `layerfs-sandbox/src/platform/docker/client/http.rs` instead of a new Unix-socket connection per request, one attempt per request. Both go to the #352 fixer as small fixes. The gates judge LayerFS work separately from process start (the split one-shot probe). diff --git a/engine/crates/layerfs-sandbox/PROVIDERS.md b/engine/crates/layerfs-sandbox/PROVIDERS.md index 4c982afab..9bdca7c78 100644 --- a/engine/crates/layerfs-sandbox/PROVIDERS.md +++ b/engine/crates/layerfs-sandbox/PROVIDERS.md @@ -17,6 +17,16 @@ were under `layerfs_sandbox::backend`). The root re-exports `Runtime`, (`DockerProvider`, `NativeMacosProvider`, `NativeLinuxProvider`, `NamespaceProvider`) and `HelperSpec`. +The same file names hold the same roles in every backend: `provider.rs` (what +`Runtime` holds), `create.rs` (start one Sandbox), `sandbox.rs` (a running +Sandbox: stop, delete, inspect) and `exec.rs` (one command); `listener.rs` and +`streams.rs` match between Docker and native. Docker's Engine HTTP client is +`docker/client/` (`http`, `socket`, `body`, `mux`, `version`). Native reads its +OS facts through the alias `os` (`native/linux/` or `native/macos/`). Every +backend's `run` returns the shared `ExecExit` (native's `LocalExit` is gone), +and the `DockerInstance`, `NativeLinuxInstance` and `NativeMacosInstance` +aliases are removed (#527 step 9c). + - `Runtime` is one deployment's selection and is kept for every Sandbox it starts: `Docker(DockerProvider)` (the default), `MacosNative(NativeMacosProvider)`, `LinuxNative(NativeLinuxProvider)` and `Namespaces(NamespaceProvider)` (Linux diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/body.rs b/engine/crates/layerfs-sandbox/src/platform/docker/client/body.rs similarity index 81% rename from engine/crates/layerfs-sandbox/src/platform/docker/body.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/client/body.rs index b88f58dc9..baf19a125 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/body.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/client/body.rs @@ -1,13 +1,14 @@ -//! Exact HTTP framing; chunk sizes are counters, never allocations. -use super::headers::field; +//! Exact HTTP framing; chunk sizes are counters, never allocations. One +//! strict header grammar ([`field`]) is shared by initial metadata and chunk +//! trailers. use std::io::{self, Read}; -pub(super) enum Framing { +pub(in crate::platform::docker) enum Framing { Fixed(u64), Chunked, Close, Hijacked, } -pub(super) struct Body { +pub(in crate::platform::docker) struct Body { inner: R, mode: Framing, remaining: u64, @@ -150,7 +151,7 @@ impl Read for Body { } } } -pub(super) fn exact(reader: &mut impl Read, out: &mut [u8]) -> io::Result<()> { +pub(in crate::platform::docker) fn exact(reader: &mut impl Read, out: &mut [u8]) -> io::Result<()> { let mut done = 0; while done < out.len() { let n = reader.read(&mut out[done..])?; @@ -161,7 +162,10 @@ pub(super) fn exact(reader: &mut impl Read, out: &mut [u8]) -> io::Result<()> { } Ok(()) } -pub(super) fn line(reader: &mut impl Read, limit: usize) -> io::Result> { +pub(in crate::platform::docker) fn line( + reader: &mut impl Read, + limit: usize, +) -> io::Result> { let mut out = Vec::with_capacity(limit.min(256)); loop { let mut one = [0]; @@ -179,6 +183,32 @@ pub(super) fn line(reader: &mut impl Read, limit: usize) -> io::Result> out.push(one[0]); } } +/// One `name: value` header row, by the one grammar both header kinds use. +pub(super) fn field(row: &[u8]) -> io::Result<(&[u8], &[u8])> { + let colon = row + .iter() + .position(|b| *b == b':') + .ok_or_else(|| invalid("HTTP header colon"))?; + let name = &row[..colon]; + if name.is_empty() + || !name + .iter() + .all(|b| b.is_ascii_alphanumeric() || b"!#$%&'*+-.^_`|~".contains(b)) + { + return Err(invalid("HTTP header name")); + } + let mut value = &row[colon + 1..]; + while matches!(value.first(), Some(b' ' | b'\t')) { + value = &value[1..] + } + while matches!(value.last(), Some(b' ' | b'\t')) { + value = &value[..value.len() - 1] + } + if value.iter().any(|b| (*b < 32 && *b != b'\t') || *b == 127) { + return Err(invalid("HTTP header control")); + } + Ok((name, value)) +} fn invalid(message: &'static str) -> io::Error { io::Error::new(io::ErrorKind::InvalidData, message) } diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/http.rs b/engine/crates/layerfs-sandbox/src/platform/docker/client/http.rs similarity index 96% rename from engine/crates/layerfs-sandbox/src/platform/docker/http.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/client/http.rs index aecc3b0ee..d8bcb4da7 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/http.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/client/http.rs @@ -1,7 +1,6 @@ //! One-attempt local Engine HTTP exchange and original transfer custody. use super::{ - body::{line, Body, Framing}, - headers::field, + body::{field, line, Body, Framing}, socket::Socket, }; use crate::{ErrorDiagnostic, ExecId, RuntimeError, WireFailure}; @@ -18,22 +17,22 @@ const KEPT_IDLE: Duration = Duration::from_secs(30); /// Concrete local Docker Engine endpoint. Control waits never apply to command streams. #[derive(Clone, Debug)] pub struct Docker { - pub(super) socket: PathBuf, - pub(super) control_wait: Duration, - pub(super) deadline: Option, + pub(in crate::platform::docker) socket: PathBuf, + pub(in crate::platform::docker) control_wait: Duration, + pub(in crate::platform::docker) deadline: Option, /// The name the next container this client creates gets; None lets the /// Engine choose one. - pub(super) container_name: Option, + pub(in crate::platform::docker) container_name: Option, /// One idle keep-alive connection, shared by this client's clones, for /// Exec create and inspect (#352): each takes it, or connects when it is /// absent, stale or in use, and returns it after reading its whole body. - pub(super) kept: Kept, + pub(in crate::platform::docker) kept: Kept, /// The Engine API minor version every request of this client and its /// clones uses, set by the first request (see `version.rs`). - pub(super) minor: Arc>, + pub(in crate::platform::docker) minor: Arc>, } #[derive(Clone, Default)] -pub(super) struct Kept(Arc>>); +pub(in crate::platform::docker) struct Kept(Arc>>); impl fmt::Debug for Kept { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.write_str("Kept") @@ -53,7 +52,7 @@ impl Kept { } } } -pub(super) struct Response { +pub(in crate::platform::docker) struct Response { pub status: u16, pub body: Body>, pub writer: Socket, @@ -97,7 +96,7 @@ impl Docker { self.container_name = Some(name.to_owned()); Ok(self) } - pub(super) fn exchange( + pub(in crate::platform::docker) fn exchange( &self, method: &str, path: &str, @@ -113,7 +112,7 @@ impl Docker { /// One metadata exchange on the kept keep-alive connection (Exec create /// and inspect). One attempt: a kept connection is used only while idle /// and quiet, and a failure on it is the request's failure, never resent. - pub(super) fn exchange_kept( + pub(in crate::platform::docker) fn exchange_kept( &self, method: &str, path: &str, @@ -126,7 +125,7 @@ impl Docker { }) } /// Streams one known-length body once; no pre-read or file-sized allocation. - pub(super) fn exchange_body( + pub(in crate::platform::docker) fn exchange_body( &self, method: &str, path: &str, @@ -150,7 +149,7 @@ impl Docker { let path = format!("/v1.{}{path}", self.minor()?); self.transmit(method, &path, mode, media, length, encode) } - pub(super) fn transmit( + pub(in crate::platform::docker) fn transmit( &self, method: &str, path: &str, @@ -251,7 +250,7 @@ impl Docker { } /// The connection header a request sends. #[derive(Clone, Copy)] -pub(super) enum Mode { +pub(in crate::platform::docker) enum Mode { Close, Upgrade, Keep, @@ -321,7 +320,7 @@ impl Response { result } } -pub(super) fn failure( +pub(in crate::platform::docker) fn failure( attempted: bool, sent_bytes: u64, status: Option, diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/client/mod.rs b/engine/crates/layerfs-sandbox/src/platform/docker/client/mod.rs new file mode 100644 index 000000000..99f299607 --- /dev/null +++ b/engine/crates/layerfs-sandbox/src/platform/docker/client/mod.rs @@ -0,0 +1,11 @@ +//! The Engine HTTP client: one-attempt exchanges over the Engine's Unix +//! socket (`http`, `socket`), exact HTTP framing and header grammar (`body`), +//! the standard multiplexed stream header (`mux`) and API version +//! negotiation (`version`). The rest of the Docker backend reads its +//! `Socket`, `Body` and `mux::header` directly. +pub(in crate::platform::docker) mod body; +pub(in crate::platform::docker) mod http; +pub(in crate::platform::docker) mod mux; +pub(in crate::platform::docker) mod socket; +mod version; +pub use http::Docker; diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/mux.rs b/engine/crates/layerfs-sandbox/src/platform/docker/client/mux.rs similarity index 77% rename from engine/crates/layerfs-sandbox/src/platform/docker/mux.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/client/mux.rs index 7dfb0f4cc..e08fd7c31 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/mux.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/client/mux.rs @@ -1,6 +1,6 @@ //! Shared standard Engine multiplexed header; lengths remain counters. use crate::RuntimeError; -pub(super) fn header(bytes: [u8; 8]) -> Result<(u8, u32), RuntimeError> { +pub(in crate::platform::docker) fn header(bytes: [u8; 8]) -> Result<(u8, u32), RuntimeError> { if bytes[1..4] != [0; 3] || bytes[0] > 3 { return Err(RuntimeError::Protocol("standard runtime frame header")); } diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/socket.rs b/engine/crates/layerfs-sandbox/src/platform/docker/client/socket.rs similarity index 98% rename from engine/crates/layerfs-sandbox/src/platform/docker/socket.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/client/socket.rs index 7b67d3681..384eebf53 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/socket.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/client/socket.rs @@ -9,7 +9,7 @@ use std::{ path::Path, time::{Duration, Instant}, }; -pub(super) struct Socket { +pub(in crate::platform::docker) struct Socket { pub stream: UnixStream, pub wait: Option, pub deadline: Option, diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/version.rs b/engine/crates/layerfs-sandbox/src/platform/docker/client/version.rs similarity index 97% rename from engine/crates/layerfs-sandbox/src/platform/docker/version.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/client/version.rs index d61f71742..a01ec7770 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/version.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/client/version.rs @@ -17,7 +17,7 @@ impl Docker { /// daemon older than [`OLDEST`] is refused before the request is sent. A /// daemon that does not answer it readably gets [`NEWEST`], as before /// negotiation, and its own refusal of that version reaches the caller. - pub(super) fn minor(&self) -> Result> { + pub(in crate::platform::docker) fn minor(&self) -> Result> { if let Some(minor) = self.minor.get() { return Ok(*minor); } diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/container.rs b/engine/crates/layerfs-sandbox/src/platform/docker/create.rs similarity index 76% rename from engine/crates/layerfs-sandbox/src/platform/docker/container.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/create.rs index e6a52df1f..0742b4eaf 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/container.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/create.rs @@ -1,13 +1,13 @@ -//! One-attempt create/start/stop/delete, with no implicit adoption or volume deletion. +//! One-attempt create and start, with no implicit adoption or volume deletion. use super::{ - container_types::{CreatePhase, Sandbox, SandboxCreateFailure, SandboxRequest}, + sandbox::{CreatePhase, Sandbox, SandboxCreateFailure, SandboxRequest}, topology::SECCOMP, Docker, }; use crate::json::quoted; use crate::json::{once, Json}; use crate::{ContainerId, RuntimeError, WireFailure}; -use std::io::{self, Read, Write}; +use std::io::{self, Write}; impl SandboxRequest { /// Kernel mounting needs exactly one capability and one device. The /// container stays unprivileged with no-new-privileges; commands run as @@ -99,7 +99,7 @@ impl Docker { let result = (|| { request .check() - .map_err(|e| super::http::failure(false, 0, None, e, None))?; + .map_err(|e| super::client::http::failure(false, 0, None, e, None))?; phase = CreatePhase::Volume; if let Some(volume) = &request.store_volume { self.plain_volume(volume)?; @@ -189,53 +189,4 @@ impl Sandbox { self.started = true; Ok(()) } - /// Explicit whole-Sandbox process stop, once. This is crash teardown, not graceful FS drain. - /// The Engine's 304 (not running: its process already exited, or it never started) - /// is the same acknowledged stopped state. - pub fn stop(&mut self, seconds: u16) -> Result<(), Box> { - if self.stop_attempted || self.delete_attempted { - return Err(self.invalid("original container Stop admission")); - } - self.stop_attempted = true; - let path = format!("/containers/{}/stop?t={seconds}", self.id); - self.empty("POST", &path, 204) - .or_else(|failure| match failure.cause { - RuntimeError::Http(304) => Ok(()), - _ => Err(failure), - })?; - self.stopped = true; - Ok(()) - } - /// Deletes the exact acknowledged container/local writable layer once. Shared Store volume is borrowed. - pub fn delete(&mut self) -> Result<(), Box> { - if self.delete_attempted || (self.start_attempted && !self.stopped) { - return Err(self.invalid("original container Delete admission; known stop required")); - } - self.delete_attempted = true; - self.empty( - "DELETE", - &format!("/containers/{}?force=false&v=false", self.id), - 204, - )?; - self.deleted = true; - Ok(()) - } - fn empty(&self, method: &str, path: &str, status: u16) -> Result<(), Box> { - let mut response = self - .docker - .exchange(method, path, false, |_| Ok(())) - .map_err(|f| self.selected(f))?; - if response.status != status { - return Err(self.selected(response.fail(RuntimeError::Http(response.status), None))); - } - let mut byte = [0]; - match response.body.read(&mut byte) { - Ok(0) => Ok(()), - Ok(_) => Err(self.selected(response.fail( - RuntimeError::Protocol("unexpected lifecycle response body"), - None, - ))), - Err(e) => Err(self.selected(response.fail(e.into(), None))), - } - } } diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/exec.rs b/engine/crates/layerfs-sandbox/src/platform/docker/exec.rs new file mode 100644 index 000000000..05ba68d78 --- /dev/null +++ b/engine/crates/layerfs-sandbox/src/platform/docker/exec.rs @@ -0,0 +1,329 @@ +//! One ordinary command in a container: one non-TTY Exec creation with exact +//! acknowledged runtime custody, one structurally decoded inspection that +//! keeps no Arguments, and the provider's noninteractive run over them with +//! streamed output and exact failure custody. +use super::{Docker, ProviderFailure, Sandbox}; +use crate::json::quoted; +use crate::json::{once, Json}; +pub use crate::ExecRequest; +use crate::{ContainerId, ExecExit, ExecId, ExecInspection, RuntimeError, WireFailure}; +use std::io::{self, Write}; +impl ExecRequest { + fn encode(&self, out: &mut dyn Write) -> io::Result<()> { + out.write_all(b"{\"AttachStdout\":true,\"AttachStderr\":true,\"AttachStdin\":")?; + out.write_all(if self.stdin { b"true" } else { b"false" })?; + out.write_all(b",\"Tty\":false,\"Privileged\":false,\"User\":")?; + quoted(out, &format!("{}:{}", self.identity.uid, self.identity.gid))?; + out.write_all(b",\"WorkingDir\":")?; + quoted(out, &self.directory)?; + for (name, items) in [ + (b",\"Cmd\":".as_slice(), &self.arguments), + (b",\"Env\":".as_slice(), &self.environment), + ] { + out.write_all(name)?; + out.write_all(b"[")?; + for (n, item) in items.iter().enumerate() { + if n != 0 { + out.write_all(b",")?; + } + quoted(out, item)?; + } + out.write_all(b"]")?; + } + out.write_all(b"}") + } +} +/// One acknowledged Exec creation. Starting consumes it; no implicit replay. +#[derive(Debug)] +pub struct ExecCreated { + pub(super) docker: Docker, + pub(super) container: ContainerId, + pub(super) exec: ExecId, + pub(super) request: ExecRequest, + pub(super) start_attempted: bool, +} +/// Original request and transfer failure. A known partial ID is not a completed acknowledgment. +#[derive(Debug)] +pub struct ExecCreateFailure { + pub container: ContainerId, + pub request: ExecRequest, + pub transfer: Box, +} +impl Docker { + /// Creates one actual ordinary runtime Exec, once. This does not launch it yet. + pub fn create_exec( + &self, + container: ContainerId, + request: ExecRequest, + ) -> Result> { + let mut observed = None; + let result = (|| { + request.check().map_err(|cause| { + Box::new(WireFailure { + attempted: false, + sent_bytes: 0, + request_header_bytes: 0, + sent_body_bytes: 0, + pending_request: Default::default(), + status: None, + cause, + fence_error: None, + observed_exec: None, + observed_container: None, + requested_container: None, + requested_exec: None, + error_body: None, + }) + })?; + let mut response = + self.exchange_kept("POST", &format!("/containers/{container}/exec"), |w| { + request.encode(w) + })?; + if response.status != 201 { + return Err(response.fail(RuntimeError::Http(response.status), None)); + } + let parsed = (|| { + let mut json = Json::new(&mut response.body); + let mut fields = 0; + json.object(|j, key| { + if key.equals("Id") { + once(&mut fields, 1)?; + let value = j.string(true)?; + if value.overflow { + return Err(RuntimeError::Protocol("Exec ID length")); + } + observed = Some(ExecId::parse(value.text())?); + } else { + j.skip(1)?; + } + Ok(()) + })?; + json.finish()?; + observed.ok_or(RuntimeError::Protocol("missing Exec ID")) + })(); + match parsed { + Ok(exec) => { + response.release(); + Ok(exec) + } + Err(cause) => Err(response.fail(cause, observed)), + } + })(); + match result { + Ok(exec) => Ok(ExecCreated { + docker: self.clone(), + container, + exec, + request, + start_attempted: false, + }), + Err(mut transfer) => { + transfer.requested_container = Some(container); + Err(Box::new(ExecCreateFailure { + container, + request, + transfer, + })) + } + } + } +} + +impl ExecCreated { + /// Original acknowledged runtime identity, immutable through this owner. + pub fn identity(&self) -> (ContainerId, ExecId) { + (self.container, self.exec) + } + /// Original submitted command metadata; never a later inspection/refresh. + pub fn request(&self) -> &ExecRequest { + &self.request + } +} +impl Docker { + /// Reads one coherent runtime snapshot. PID is diagnostic, never a signal target. + pub fn inspect_exec( + &self, + container: ContainerId, + exec: ExecId, + ) -> Result> { + let mut response = self + .exchange_kept("GET", &format!("/exec/{exec}/json"), |_| Ok(())) + .map_err(|mut failure| { + failure.requested_container = Some(container); + failure.requested_exec = Some(exec); + failure + })?; + if response.status != 200 { + let mut failure = response.fail(RuntimeError::Http(response.status), None); + failure.requested_container = Some(container); + failure.requested_exec = Some(exec); + return Err(failure); + } + let mut id = None; + let mut owner = None; + let parsed = (|| { + let mut running = None; + let mut exit = None; + let mut pid = None; + let mut fields = 0; + let mut j = Json::new(&mut response.body); + j.object(|j, key| { + if key.equals("ID") { + once(&mut fields, 1)?; + let value = j.string(true)?; + id = Some(ExecId::parse(value.text())?); + if value.overflow { + return Err(RuntimeError::Protocol("runtime ID width")); + } + } else if key.equals("ContainerID") { + once(&mut fields, 2)?; + let value = j.string(true)?; + owner = Some(ContainerId::parse(value.text())?); + if value.overflow { + return Err(RuntimeError::Protocol("container ID width")); + } + } else if key.equals("Running") { + once(&mut fields, 4)?; + running = Some(j.boolean()?); + } else if key.equals("ExitCode") { + once(&mut fields, 8)?; + if !j.null()? { + exit = Some( + i32::try_from(j.integer()?) + .map_err(|_| RuntimeError::Protocol("runtime exit width"))?, + ); + } + } else if key.equals("Pid") { + once(&mut fields, 16)?; + pid = Some( + u32::try_from(j.integer()?) + .map_err(|_| RuntimeError::Protocol("runtime PID width"))?, + ); + } else { + j.skip(1)?; + } + Ok(()) + })?; + j.finish()?; + if fields & 15 != 15 || id != Some(exec) || owner != Some(container) { + return Err(RuntimeError::Protocol("runtime identity/required fields")); + } + Ok(ExecInspection { + container, + exec, + running: running.expect("required"), + exit_code: exit, + pid, + }) + })(); + match parsed { + Ok(inspection) => { + response.release(); + Ok(inspection) + } + Err(cause) => { + let mut failure = response.fail(cause, id); + failure.observed_container = owner; + failure.requested_container = Some(container); + failure.requested_exec = Some(exec); + Err(failure) + } + } + } +} +fn failure(container: ContainerId, cause: ProviderFailure) -> Box { + // Scalar facts describe only the deciding exchange. Owned pending bytes, + // diagnostics and fence errors remain in the original nested receipt. + let wire = match &cause { + ProviderFailure::ExecCreate(f) => Some(f.transfer.as_ref()), + ProviderFailure::ExecStart(f) => Some(f.transfer.as_ref()), + ProviderFailure::ExecInspect { failure, .. } => Some(failure.as_ref()), + _ => None, + }; + let mut outer = WireFailure::local(RuntimeError::Protocol("provider execution")); + if let Some(wire) = wire { + outer.attempted = wire.attempted; + outer.sent_bytes = wire.sent_bytes; + outer.request_header_bytes = wire.request_header_bytes; + outer.sent_body_bytes = wire.sent_body_bytes; + outer.status = wire.status; + outer.observed_exec = wire.observed_exec; + outer.observed_container = wire.observed_container; + outer.requested_exec = wire.requested_exec; + } else { + // Attachment/splitting, output and exit observation follow an attempted Start. + outer.attempted = true; + } + outer.requested_container = Some(container); + outer.requested_exec = outer.requested_exec.or_else(|| match &cause { + ProviderFailure::ExecStart(f) => Some(f.created.identity().1), + ProviderFailure::ExecOutput { handle, .. } + | ProviderFailure::ExecInspect { handle, .. } + | ProviderFailure::ExecExitUnknown { handle, .. } => Some(handle.identity().1), + _ => None, + }); + outer.cause = RuntimeError::Docker(Box::new(cause)); + outer +} +pub(crate) fn run( + sandbox: &Sandbox, + request: &ExecRequest, + mut stdout: &mut (dyn Write + Send), + mut stderr: &mut (dyn Write + Send), +) -> Result> { + if request.stdin { + return Err( + sandbox.invalid("provider run has no stdin source; use ordinary Docker streams") + ); + } + let id = sandbox.identity(); + let created = sandbox + .create_exec(request.clone()) + .map_err(|f| failure(id, ProviderFailure::ExecCreate(f)))?; + let attached = created + .start() + .map_err(|f| failure(id, ProviderFailure::ExecStart(f)))?; + let (input, output, handle) = attached + .into_parts() + .map_err(|f| failure(id, ProviderFailure::ExecSplit(f)))?; + // Stdin was disabled in the creation request; dropping it sends no cancellation. + drop(input); + let progress = match output.copy_to(&mut stdout, &mut stderr) { + Ok(progress) => progress, + Err(f) => { + return Err(failure( + id, + ProviderFailure::ExecOutput { failure: f, handle }, + )) + } + }; + let inspection = match handle.inspect() { + Ok(inspection) => inspection, + Err(f) => { + return Err(failure( + id, + ProviderFailure::ExecInspect { + failure: f, + handle, + progress, + }, + )) + } + }; + let Some(code) = inspection.known_root_exit() else { + return Err(failure( + id, + ProviderFailure::ExecExitUnknown { + inspection, + handle, + progress, + }, + )); + }; + Ok(ExecExit { + code, + pid: inspection.pid, + stdout_bytes: progress.stdout, + stderr_bytes: progress.stderr, + }) +} diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/provider_failure.rs b/engine/crates/layerfs-sandbox/src/platform/docker/failure.rs similarity index 100% rename from engine/crates/layerfs-sandbox/src/platform/docker/provider_failure.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/failure.rs diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/headers.rs b/engine/crates/layerfs-sandbox/src/platform/docker/headers.rs deleted file mode 100644 index 6fd3a7d09..000000000 --- a/engine/crates/layerfs-sandbox/src/platform/docker/headers.rs +++ /dev/null @@ -1,30 +0,0 @@ -//! One strict header grammar shared by initial metadata and chunk trailers. -use std::io; -pub(super) fn field(row: &[u8]) -> io::Result<(&[u8], &[u8])> { - let colon = row - .iter() - .position(|b| *b == b':') - .ok_or_else(|| invalid("HTTP header colon"))?; - let name = &row[..colon]; - if name.is_empty() - || !name - .iter() - .all(|b| b.is_ascii_alphanumeric() || b"!#$%&'*+-.^_`|~".contains(b)) - { - return Err(invalid("HTTP header name")); - } - let mut value = &row[colon + 1..]; - while matches!(value.first(), Some(b' ' | b'\t')) { - value = &value[1..] - } - while matches!(value.last(), Some(b' ' | b'\t')) { - value = &value[..value.len() - 1] - } - if value.iter().any(|b| (*b < 32 && *b != b'\t') || *b == 127) { - return Err(invalid("HTTP header control")); - } - Ok((name, value)) -} -fn invalid(message: &'static str) -> io::Error { - io::Error::new(io::ErrorKind::InvalidData, message) -} diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/inspect.rs b/engine/crates/layerfs-sandbox/src/platform/docker/inspect.rs deleted file mode 100644 index 950ed3d85..000000000 --- a/engine/crates/layerfs-sandbox/src/platform/docker/inspect.rs +++ /dev/null @@ -1,96 +0,0 @@ -//! One exact runtime observation, structurally decoded without retaining Arguments. -use super::Docker; -use crate::json::{once, Json}; -use crate::{ContainerId, ExecId, ExecInspection, RuntimeError, WireFailure}; -impl Docker { - /// Reads one coherent runtime snapshot. PID is diagnostic, never a signal target. - pub fn inspect_exec( - &self, - container: ContainerId, - exec: ExecId, - ) -> Result> { - let mut response = self - .exchange_kept("GET", &format!("/exec/{exec}/json"), |_| Ok(())) - .map_err(|mut failure| { - failure.requested_container = Some(container); - failure.requested_exec = Some(exec); - failure - })?; - if response.status != 200 { - let mut failure = response.fail(RuntimeError::Http(response.status), None); - failure.requested_container = Some(container); - failure.requested_exec = Some(exec); - return Err(failure); - } - let mut id = None; - let mut owner = None; - let parsed = (|| { - let mut running = None; - let mut exit = None; - let mut pid = None; - let mut fields = 0; - let mut j = Json::new(&mut response.body); - j.object(|j, key| { - if key.equals("ID") { - once(&mut fields, 1)?; - let value = j.string(true)?; - id = Some(ExecId::parse(value.text())?); - if value.overflow { - return Err(RuntimeError::Protocol("runtime ID width")); - } - } else if key.equals("ContainerID") { - once(&mut fields, 2)?; - let value = j.string(true)?; - owner = Some(ContainerId::parse(value.text())?); - if value.overflow { - return Err(RuntimeError::Protocol("container ID width")); - } - } else if key.equals("Running") { - once(&mut fields, 4)?; - running = Some(j.boolean()?); - } else if key.equals("ExitCode") { - once(&mut fields, 8)?; - if !j.null()? { - exit = Some( - i32::try_from(j.integer()?) - .map_err(|_| RuntimeError::Protocol("runtime exit width"))?, - ); - } - } else if key.equals("Pid") { - once(&mut fields, 16)?; - pid = Some( - u32::try_from(j.integer()?) - .map_err(|_| RuntimeError::Protocol("runtime PID width"))?, - ); - } else { - j.skip(1)?; - } - Ok(()) - })?; - j.finish()?; - if fields & 15 != 15 || id != Some(exec) || owner != Some(container) { - return Err(RuntimeError::Protocol("runtime identity/required fields")); - } - Ok(ExecInspection { - container, - exec, - running: running.expect("required"), - exit_code: exit, - pid, - }) - })(); - match parsed { - Ok(inspection) => { - response.release(); - Ok(inspection) - } - Err(cause) => { - let mut failure = response.fail(cause, id); - failure.observed_container = owner; - failure.requested_container = Some(container); - failure.requested_exec = Some(exec); - Err(failure) - } - } - } -} diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/listener.rs b/engine/crates/layerfs-sandbox/src/platform/docker/listener.rs index f7b870920..0d56018fa 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/listener.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/listener.rs @@ -1,7 +1,7 @@ //! Actual daemon stdout startup event; bounded line and multiplexed payload windows. //! A bounded read of the container's log tail, for a failed start's report. -use super::{body::exact, Sandbox}; -use super::{body::Body, socket::Socket}; +use super::client::{body::exact, body::Body, socket::Socket}; +use super::Sandbox; use crate::{RuntimeError, WireFailure}; use std::{ io::{self, BufReader, Read}, @@ -77,7 +77,7 @@ impl Sandbox { loop { let mut header = [0; 8]; exact(&mut input, &mut header)?; - let (tag, mut left) = super::mux::header(header)?; + let (tag, mut left) = super::client::mux::header(header)?; if !matches!(tag, 1 | 2) { return Err(RuntimeError::Protocol("daemon log frame")); } @@ -171,7 +171,7 @@ impl Sandbox { return Ok(()); } exact(&mut r.body, &mut header[1..])?; - let (tag, mut left) = super::mux::header(header)?; + let (tag, mut left) = super::client::mux::header(header)?; if !matches!(tag, 1 | 2) { return Err(RuntimeError::Protocol("daemon log frame")); } diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/mod.rs b/engine/crates/layerfs-sandbox/src/platform/docker/mod.rs index e02b4a03b..b84dc1a10 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/mod.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/mod.rs @@ -1,33 +1,27 @@ //! Local Docker Engine API1.48 to 1.54, negotiated once, with exact IDs and no command replay. -mod archive; -mod body; -mod container; -mod container_types; +//! One container per Sandbox: `create` starts it, `sandbox` owns it (stop, +//! delete), `exec` runs one command in it, and `client/` is the Engine HTTP +//! client the rest reads. +mod client; +mod create; mod endpoint; -mod headers; -mod http; -mod inspect; +mod exec; +mod failure; mod listener; -mod mux; mod provider; -mod provider_exec; -mod provider_failure; -mod request; -mod socket; +mod sandbox; mod streams; mod topology; -mod version; -pub use archive::{UploadFailure, UploadWork}; -pub use container_types::{ - CreatePhase, Sandbox, SandboxCreateFailure, SandboxDisposition, SandboxRequest, -}; -pub use http::Docker; +mod upload; +pub use client::Docker; +pub(crate) use exec::run as run_command; +pub use exec::{ExecCreateFailure, ExecCreated, ExecRequest}; +pub use failure::ProviderFailure; pub use listener::{ListenerFailure, ListenerObservation}; -pub use provider::{DockerInstance, DockerProvider}; -pub(crate) use provider_exec::run as run_command; -pub use provider_failure::ProviderFailure; -pub use request::{ExecCreateFailure, ExecCreated, ExecRequest}; +pub use provider::DockerProvider; +pub use sandbox::{CreatePhase, Sandbox, SandboxCreateFailure, SandboxDisposition, SandboxRequest}; pub use streams::{ Attached, ExecHandle, InputCloseFailure, InputEnd, OutputFailure, OutputProgress, RuntimeInput, RuntimeOutput, SplitFailure, StartFailure, }; +pub use upload::{UploadFailure, UploadWork}; diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/provider.rs b/engine/crates/layerfs-sandbox/src/platform/docker/provider.rs index 21529656f..a21e41701 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/provider.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/provider.rs @@ -12,8 +12,6 @@ use std::fs::File; pub struct DockerProvider { docker: Docker, } -/// The original container owner, including its exact attempted/acknowledged lifecycle state. -pub type DockerInstance = Sandbox; impl DockerProvider { /// Negotiation and all transfers use the supplied client's original policy and version cache. pub fn new(docker: Docker) -> Self { diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/provider_exec.rs b/engine/crates/layerfs-sandbox/src/platform/docker/provider_exec.rs deleted file mode 100644 index 7a726ae9f..000000000 --- a/engine/crates/layerfs-sandbox/src/platform/docker/provider_exec.rs +++ /dev/null @@ -1,100 +0,0 @@ -//! Ordinary noninteractive provider execution, with streamed output and exact failure custody. -use super::{ProviderFailure, Sandbox}; -use crate::{ExecExit, ExecRequest, RuntimeError, WireFailure}; -use std::io::Write; -fn failure(container: crate::ContainerId, cause: ProviderFailure) -> Box { - // Scalar facts describe only the deciding exchange. Owned pending bytes, - // diagnostics and fence errors remain in the original nested receipt. - let wire = match &cause { - ProviderFailure::ExecCreate(f) => Some(f.transfer.as_ref()), - ProviderFailure::ExecStart(f) => Some(f.transfer.as_ref()), - ProviderFailure::ExecInspect { failure, .. } => Some(failure.as_ref()), - _ => None, - }; - let mut outer = WireFailure::local(RuntimeError::Protocol("provider execution")); - if let Some(wire) = wire { - outer.attempted = wire.attempted; - outer.sent_bytes = wire.sent_bytes; - outer.request_header_bytes = wire.request_header_bytes; - outer.sent_body_bytes = wire.sent_body_bytes; - outer.status = wire.status; - outer.observed_exec = wire.observed_exec; - outer.observed_container = wire.observed_container; - outer.requested_exec = wire.requested_exec; - } else { - // Attachment/splitting, output and exit observation follow an attempted Start. - outer.attempted = true; - } - outer.requested_container = Some(container); - outer.requested_exec = outer.requested_exec.or_else(|| match &cause { - ProviderFailure::ExecStart(f) => Some(f.created.identity().1), - ProviderFailure::ExecOutput { handle, .. } - | ProviderFailure::ExecInspect { handle, .. } - | ProviderFailure::ExecExitUnknown { handle, .. } => Some(handle.identity().1), - _ => None, - }); - outer.cause = RuntimeError::Docker(Box::new(cause)); - outer -} -pub(crate) fn run( - sandbox: &Sandbox, - request: &ExecRequest, - mut stdout: &mut (dyn Write + Send), - mut stderr: &mut (dyn Write + Send), -) -> Result> { - if request.stdin { - return Err( - sandbox.invalid("provider run has no stdin source; use ordinary Docker streams") - ); - } - let id = sandbox.identity(); - let created = sandbox - .create_exec(request.clone()) - .map_err(|f| failure(id, ProviderFailure::ExecCreate(f)))?; - let attached = created - .start() - .map_err(|f| failure(id, ProviderFailure::ExecStart(f)))?; - let (input, output, handle) = attached - .into_parts() - .map_err(|f| failure(id, ProviderFailure::ExecSplit(f)))?; - // Stdin was disabled in the creation request; dropping it sends no cancellation. - drop(input); - let progress = match output.copy_to(&mut stdout, &mut stderr) { - Ok(progress) => progress, - Err(f) => { - return Err(failure( - id, - ProviderFailure::ExecOutput { failure: f, handle }, - )) - } - }; - let inspection = match handle.inspect() { - Ok(inspection) => inspection, - Err(f) => { - return Err(failure( - id, - ProviderFailure::ExecInspect { - failure: f, - handle, - progress, - }, - )) - } - }; - let Some(code) = inspection.known_root_exit() else { - return Err(failure( - id, - ProviderFailure::ExecExitUnknown { - inspection, - handle, - progress, - }, - )); - }; - Ok(ExecExit { - code, - pid: inspection.pid, - stdout_bytes: progress.stdout, - stderr_bytes: progress.stderr, - }) -} diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/request.rs b/engine/crates/layerfs-sandbox/src/platform/docker/request.rs deleted file mode 100644 index abd572c8c..000000000 --- a/engine/crates/layerfs-sandbox/src/platform/docker/request.rs +++ /dev/null @@ -1,138 +0,0 @@ -//! One ordinary non-TTY Exec creation; exact acknowledged runtime custody. -use super::Docker; -use crate::json::quoted; -use crate::json::{once, Json}; -pub use crate::ExecRequest; -use crate::{ContainerId, ExecId, RuntimeError, WireFailure}; -use std::io::{self, Write}; -impl ExecRequest { - fn encode(&self, out: &mut dyn Write) -> io::Result<()> { - out.write_all(b"{\"AttachStdout\":true,\"AttachStderr\":true,\"AttachStdin\":")?; - out.write_all(if self.stdin { b"true" } else { b"false" })?; - out.write_all(b",\"Tty\":false,\"Privileged\":false,\"User\":")?; - quoted(out, &format!("{}:{}", self.identity.uid, self.identity.gid))?; - out.write_all(b",\"WorkingDir\":")?; - quoted(out, &self.directory)?; - for (name, items) in [ - (b",\"Cmd\":".as_slice(), &self.arguments), - (b",\"Env\":".as_slice(), &self.environment), - ] { - out.write_all(name)?; - out.write_all(b"[")?; - for (n, item) in items.iter().enumerate() { - if n != 0 { - out.write_all(b",")?; - } - quoted(out, item)?; - } - out.write_all(b"]")?; - } - out.write_all(b"}") - } -} -/// One acknowledged Exec creation. Starting consumes it; no implicit replay. -#[derive(Debug)] -pub struct ExecCreated { - pub(super) docker: Docker, - pub(super) container: ContainerId, - pub(super) exec: ExecId, - pub(super) request: ExecRequest, - pub(super) start_attempted: bool, -} -/// Original request and transfer failure. A known partial ID is not a completed acknowledgment. -#[derive(Debug)] -pub struct ExecCreateFailure { - pub container: ContainerId, - pub request: ExecRequest, - pub transfer: Box, -} -impl Docker { - /// Creates one actual ordinary runtime Exec, once. This does not launch it yet. - pub fn create_exec( - &self, - container: ContainerId, - request: ExecRequest, - ) -> Result> { - let mut observed = None; - let result = (|| { - request.check().map_err(|cause| { - Box::new(WireFailure { - attempted: false, - sent_bytes: 0, - request_header_bytes: 0, - sent_body_bytes: 0, - pending_request: Default::default(), - status: None, - cause, - fence_error: None, - observed_exec: None, - observed_container: None, - requested_container: None, - requested_exec: None, - error_body: None, - }) - })?; - let mut response = - self.exchange_kept("POST", &format!("/containers/{container}/exec"), |w| { - request.encode(w) - })?; - if response.status != 201 { - return Err(response.fail(RuntimeError::Http(response.status), None)); - } - let parsed = (|| { - let mut json = Json::new(&mut response.body); - let mut fields = 0; - json.object(|j, key| { - if key.equals("Id") { - once(&mut fields, 1)?; - let value = j.string(true)?; - if value.overflow { - return Err(RuntimeError::Protocol("Exec ID length")); - } - observed = Some(ExecId::parse(value.text())?); - } else { - j.skip(1)?; - } - Ok(()) - })?; - json.finish()?; - observed.ok_or(RuntimeError::Protocol("missing Exec ID")) - })(); - match parsed { - Ok(exec) => { - response.release(); - Ok(exec) - } - Err(cause) => Err(response.fail(cause, observed)), - } - })(); - match result { - Ok(exec) => Ok(ExecCreated { - docker: self.clone(), - container, - exec, - request, - start_attempted: false, - }), - Err(mut transfer) => { - transfer.requested_container = Some(container); - Err(Box::new(ExecCreateFailure { - container, - request, - transfer, - })) - } - } - } -} - -impl ExecCreated { - /// Original acknowledged runtime identity, immutable through this owner. - pub fn identity(&self) -> (ContainerId, ExecId) { - (self.container, self.exec) - } - /// Original submitted command metadata; never a later inspection/refresh. - pub fn request(&self) -> &ExecRequest { - &self.request - } -} diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/container_types.rs b/engine/crates/layerfs-sandbox/src/platform/docker/sandbox.rs similarity index 69% rename from engine/crates/layerfs-sandbox/src/platform/docker/container_types.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/sandbox.rs index d5030718e..fd2b51209 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/container_types.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/sandbox.rs @@ -1,6 +1,8 @@ -//! Owned container lifecycle; borrowed shared Store volume is never cleanup-owned. +//! One owned container and its lifecycle: stop and delete, each attempted +//! once; the borrowed shared Store volume is never cleanup-owned. use super::Docker; use crate::{ContainerId, DockerRecord, RuntimeError, SandboxRecord, WireFailure}; +use std::io::Read; /// Explicit immutable image, existing VM volume, daemon TCP port and labels. #[derive(Clone, Debug, Eq, PartialEq)] pub struct SandboxRequest { @@ -111,7 +113,8 @@ impl Sandbox { } } pub(super) fn invalid(&self, message: &'static str) -> Box { - let mut f = super::http::failure(false, 0, None, RuntimeError::Protocol(message), None); + let mut f = + super::client::http::failure(false, 0, None, RuntimeError::Protocol(message), None); f.requested_container = Some(self.id); f } @@ -119,6 +122,60 @@ impl Sandbox { f.requested_container = Some(self.id); f } + /// Explicit whole-Sandbox process stop, once. This is crash teardown, not graceful FS drain. + /// The Engine's 304 (not running: its process already exited, or it never started) + /// is the same acknowledged stopped state. + pub fn stop(&mut self, seconds: u16) -> Result<(), Box> { + if self.stop_attempted || self.delete_attempted { + return Err(self.invalid("original container Stop admission")); + } + self.stop_attempted = true; + let path = format!("/containers/{}/stop?t={seconds}", self.id); + self.empty("POST", &path, 204) + .or_else(|failure| match failure.cause { + RuntimeError::Http(304) => Ok(()), + _ => Err(failure), + })?; + self.stopped = true; + Ok(()) + } + /// Deletes the exact acknowledged container/local writable layer once. Shared Store volume is borrowed. + pub fn delete(&mut self) -> Result<(), Box> { + if self.delete_attempted || (self.start_attempted && !self.stopped) { + return Err(self.invalid("original container Delete admission; known stop required")); + } + self.delete_attempted = true; + self.empty( + "DELETE", + &format!("/containers/{}?force=false&v=false", self.id), + 204, + )?; + self.deleted = true; + Ok(()) + } + pub(super) fn empty( + &self, + method: &str, + path: &str, + status: u16, + ) -> Result<(), Box> { + let mut response = self + .docker + .exchange(method, path, false, |_| Ok(())) + .map_err(|f| self.selected(f))?; + if response.status != status { + return Err(self.selected(response.fail(RuntimeError::Http(response.status), None))); + } + let mut byte = [0]; + match response.body.read(&mut byte) { + Ok(0) => Ok(()), + Ok(_) => Err(self.selected(response.fail( + RuntimeError::Protocol("unexpected lifecycle response body"), + None, + ))), + Err(e) => Err(self.selected(response.fail(e.into(), None))), + } + } } /// Known acknowledgments only, not process or filesystem drain. #[derive(Clone, Copy, Debug, Eq, PartialEq)] diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/streams.rs b/engine/crates/layerfs-sandbox/src/platform/docker/streams.rs index 9a014ab33..8d6640a33 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/streams.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/streams.rs @@ -1,5 +1,6 @@ //! Standard Docker duplex streams; transport completion never implies process exit. -use super::{body::Body, http::Response, socket::Socket, ExecCreated}; +use super::client::{body::Body, http::Response, socket::Socket}; +use super::ExecCreated; use crate::{ExecInspection, RuntimeError, WireFailure}; use std::{ fmt, @@ -347,7 +348,7 @@ impl RuntimeOutput { } self.header_used += n; } - (self.tag, self.remaining) = super::mux::header(self.header)?; + (self.tag, self.remaining) = super::client::mux::header(self.header)?; if self.tag == 3 { return Err(RuntimeError::Protocol( "runtime system-error stream; original unread payload retained", diff --git a/engine/crates/layerfs-sandbox/src/platform/docker/archive.rs b/engine/crates/layerfs-sandbox/src/platform/docker/upload.rs similarity index 96% rename from engine/crates/layerfs-sandbox/src/platform/docker/archive.rs rename to engine/crates/layerfs-sandbox/src/platform/docker/upload.rs index 79f44f975..4e65bb668 100644 --- a/engine/crates/layerfs-sandbox/src/platform/docker/archive.rs +++ b/engine/crates/layerfs-sandbox/src/platform/docker/upload.rs @@ -44,13 +44,13 @@ impl Sandbox { { return Err(self.invalid("original upload admission")); } - let metadata = executable - .metadata() - .map_err(|e| self.selected(super::http::failure(false, 0, None, e.into(), None)))?; + let metadata = executable.metadata().map_err(|e| { + self.selected(super::client::http::failure(false, 0, None, e.into(), None)) + })?; if !metadata.is_file() || metadata.len() == 0 || executable.stream_position().map_err(|e| { - self.selected(super::http::failure(false, 0, None, e.into(), None)) + self.selected(super::client::http::failure(false, 0, None, e.into(), None)) })? != 0 || config.is_empty() || config.len() > 8192 diff --git a/engine/crates/layerfs-sandbox/src/platform/native/exec.rs b/engine/crates/layerfs-sandbox/src/platform/native/exec.rs index 20c7b6b9a..2ad370773 100644 --- a/engine/crates/layerfs-sandbox/src/platform/native/exec.rs +++ b/engine/crates/layerfs-sandbox/src/platform/native/exec.rs @@ -6,7 +6,7 @@ //! Sandbox. use super::{groups, process, process::LocalProcess, sandbox::Sandbox, search::search_path}; use crate::platform::native::streams; -use crate::{ExecRequest, RuntimeError, WireFailure}; +use crate::{ExecExit, ExecRequest, RuntimeError, WireFailure}; use nix::sys::signal::{killpg, Signal}; use std::{ io::{self, Write}, @@ -15,29 +15,20 @@ use std::{ process::{Command, Stdio}, }; -/// One command's end: its exit code (128 + the signal for one a signal -/// ended, as the Engine reports it), its process id (diagnostic only) and the -/// bytes each stream delivered. -#[derive(Clone, Copy, Debug, Eq, PartialEq)] -pub struct LocalExit { - pub code: i32, - pub pid: u32, - pub stdout: u64, - pub stderr: u64, -} - impl Sandbox { /// Runs `request` once while this Sandbox's daemon runs: as its uid/gid /// with no supplementary groups, in its directory, its stdout and stderr /// streamed to the sinks as they arrive, then waits for its exit. A sink /// failure closes the command's pipes, still waits for its exit, and - /// returns the sink's error. Standard input is not offered. + /// returns the sink's error. Standard input is not offered. The exit + /// code is 128 + the signal for a command a signal ended, as the Engine + /// reports it; the process id is diagnostic only. pub fn run( &self, request: &ExecRequest, stdout: &mut (dyn Write + Send), stderr: &mut (dyn Write + Send), - ) -> Result> { + ) -> Result> { check(request).map_err(|cause| self.failure(cause))?; self.endpoint()?; let mut command = Command::new(&request.arguments[0]); @@ -101,11 +92,11 @@ impl Sandbox { .code() .or_else(|| status.signal().map(|signal| 128 + signal)) .ok_or_else(|| self.invalid("local command exit status"))?; - Ok(LocalExit { + Ok(ExecExit { code, - pid, - stdout: out_bytes, - stderr: err_bytes, + pid: Some(pid), + stdout_bytes: out_bytes, + stderr_bytes: err_bytes, }) } } diff --git a/engine/crates/layerfs-sandbox/src/platform/native/groups.rs b/engine/crates/layerfs-sandbox/src/platform/native/groups.rs index 6f1886938..939d8dceb 100644 --- a/engine/crates/layerfs-sandbox/src/platform/native/groups.rs +++ b/engine/crates/layerfs-sandbox/src/platform/native/groups.rs @@ -10,7 +10,7 @@ //! reused and the group is not this Sandbox's. A process that leaves its //! group (`setsid`) is not followed unless it is named here too //! ([`super::Sandbox::track`]). -use super::platform; +use super::os; use super::process::{self, LocalProcess}; use nix::{fcntl::OFlag, sys::signal::Signal}; use std::{ @@ -126,7 +126,7 @@ fn members(table: &[(u32, process::Stat)], leader: LocalProcess) -> Vec { /// Every process of this kernel now, with its stat. One that ends while /// being read is left out. fn processes() -> io::Result> { - platform::processes() + os::processes() } /// A group's file name: `--`. diff --git a/engine/crates/layerfs-sandbox/src/platform/native/mod.rs b/engine/crates/layerfs-sandbox/src/platform/native/mod.rs index e2716e762..726a53d7c 100644 --- a/engine/crates/layerfs-sandbox/src/platform/native/mod.rs +++ b/engine/crates/layerfs-sandbox/src/platform/native/mod.rs @@ -34,15 +34,12 @@ mod sandbox; pub(crate) mod search; pub(crate) mod streams; pub use create::{Local, LocalCreateFailure, LocalPaths, LocalPhase}; -pub use exec::LocalExit; #[cfg(target_os = "linux")] -pub(crate) use linux as platform; +pub(crate) use linux as os; #[cfg(target_os = "macos")] -pub(crate) use macos as platform; +pub(crate) use macos as os; pub use process::LocalProcess; #[cfg(target_os = "linux")] pub(crate) use provider::KERNEL_ROUTE; -pub use provider::{ - NativeLinuxInstance, NativeLinuxProvider, NativeMacosInstance, NativeMacosProvider, -}; +pub use provider::{NativeLinuxProvider, NativeMacosProvider}; pub use sandbox::Sandbox; diff --git a/engine/crates/layerfs-sandbox/src/platform/native/process.rs b/engine/crates/layerfs-sandbox/src/platform/native/process.rs index 74d58bf34..1a042d2d3 100644 --- a/engine/crates/layerfs-sandbox/src/platform/native/process.rs +++ b/engine/crates/layerfs-sandbox/src/platform/native/process.rs @@ -3,7 +3,7 @@ //! never taken for the process that was started. The three facts come from //! `/proc` on Linux and from `proc_pidinfo`/`sysctl` on macOS (see //! [`super::macos`]). -pub(crate) use super::platform::{boot, stat}; +pub(crate) use super::os::{boot, stat}; use nix::{sys::signal::Signal, unistd::Pid}; use std::io; diff --git a/engine/crates/layerfs-sandbox/src/platform/native/provider.rs b/engine/crates/layerfs-sandbox/src/platform/native/provider.rs index dde1623e7..b00913b49 100644 --- a/engine/crates/layerfs-sandbox/src/platform/native/provider.rs +++ b/engine/crates/layerfs-sandbox/src/platform/native/provider.rs @@ -20,10 +20,6 @@ pub struct NativeProvider { pub type NativeMacosProvider = NativeProvider; /// Native Linux processes with FUSE and a separate nonroot command identity. pub type NativeLinuxProvider = NativeProvider; -/// The existing local owner, using Darwin process facts. -pub type NativeMacosInstance = Sandbox; -/// The existing local owner, using Linux `/proc` process facts. -pub type NativeLinuxInstance = Sandbox; impl NativeProvider { /// Refuses other platforms before accessing the root or launching anything. pub fn new(root: impl AsRef) -> Result { diff --git a/engine/crates/layerfs-sandbox/src/platform/native/sandbox.rs b/engine/crates/layerfs-sandbox/src/platform/native/sandbox.rs index aebbeee8c..b158b5cab 100644 --- a/engine/crates/layerfs-sandbox/src/platform/native/sandbox.rs +++ b/engine/crates/layerfs-sandbox/src/platform/native/sandbox.rs @@ -3,7 +3,7 @@ //! reaps a daemon this process started that has already exited. A stop //! returns only once a daemon this process started is reaped, so it never //! stays a zombie of this process. -use super::{groups, platform, process::LocalProcess}; +use super::{groups, os, process::LocalProcess}; use crate::LocalRecord; use crate::{ContainerId, RuntimeError, WireFailure}; use nix::sys::signal::Signal; @@ -167,7 +167,7 @@ impl Sandbox { // A live NFS server can finish client writeback during detach. A // failed detach does not prevent crash teardown; Delete retains its // existing checked detach before removing anything through a mount. - if let Err(error) = platform::mounts::detach(&self.directory) { + if let Err(error) = os::mounts::detach(&self.directory) { eprintln!("local Stop detach {}: {error}", self.directory.display()); } if let Some(process) = self.process { @@ -207,7 +207,7 @@ impl Sandbox { .map_err(|error| self.io(error))?; self.ended = true; } - platform::mounts::detach(&self.directory).map_err(|error| self.io(error))?; + os::mounts::detach(&self.directory).map_err(|error| self.io(error))?; match fs::remove_dir_all(&self.directory) { Ok(()) => {} Err(error) if error.kind() == io::ErrorKind::NotFound => {} diff --git a/engine/crates/layerfs-sandbox/src/runtime.rs b/engine/crates/layerfs-sandbox/src/runtime.rs index 3ea3fa0a2..4347093f0 100644 --- a/engine/crates/layerfs-sandbox/src/runtime.rs +++ b/engine/crates/layerfs-sandbox/src/runtime.rs @@ -170,15 +170,7 @@ impl Sandbox { match self { Self::Docker(sandbox) => docker::run_command(sandbox, request, stdout, stderr), #[cfg(any(target_os = "linux", target_os = "macos"))] - Self::Native(sandbox) => { - let exit = sandbox.run(request, stdout, stderr)?; - Ok(ExecExit { - code: exit.code, - pid: Some(exit.pid), - stdout_bytes: exit.stdout, - stderr_bytes: exit.stderr, - }) - } + Self::Native(sandbox) => sandbox.run(request, stdout, stderr), #[cfg(target_os = "linux")] Self::Namespaces(sandbox) => sandbox.run(request, stdout, stderr), } diff --git a/engine/crates/layerfs-sandbox/tests/local_runtime.rs b/engine/crates/layerfs-sandbox/tests/local_runtime.rs index bf484575b..c4f03d331 100644 --- a/engine/crates/layerfs-sandbox/tests/local_runtime.rs +++ b/engine/crates/layerfs-sandbox/tests/local_runtime.rs @@ -89,8 +89,8 @@ fn run(sandbox: &Sandbox, arguments: &[&str], environment: &[&str]) -> (i32, Str }; let (mut out, mut err) = (Vec::new(), Vec::new()); let exit = sandbox.run(&request, &mut out, &mut err).unwrap(); - assert_eq!(exit.stdout, out.len() as u64); - assert_eq!(exit.stderr, err.len() as u64); + assert_eq!(exit.stdout_bytes, out.len() as u64); + assert_eq!(exit.stderr_bytes, err.len() as u64); ( exit.code, String::from_utf8(out).unwrap(), diff --git a/tools/test_check_product_boundary.py b/tools/test_check_product_boundary.py index d93d62086..da06c369f 100644 --- a/tools/test_check_product_boundary.py +++ b/tools/test_check_product_boundary.py @@ -124,7 +124,7 @@ def test_sdk_source_edges_and_unsafe_boundary(self): self.assertFalse(unsafe_violations(root, "#![forbid(unsafe_code)]\nmod init;")) def test_sandbox_active_edges_and_unsafe_boundary(self): - path = Path("engine/crates/layerfs-sandbox/src/platform/docker/http.rs") + path = Path("engine/crates/layerfs-sandbox/src/platform/docker/client/http.rs") self.assertTrue(unsafe_violations(path, "unsafe fn signal_pid() {}")) self.assertFalse(unsafe_violations(Path("engine/crates/layerfs-sandbox/src/lib.rs"), "#![deny(unsafe_code)]")) self.assertTrue(unsafe_violations(Path("engine/crates/layerfs-sandbox/src/lib.rs"), "#![forbid(unsafe_code)]")) From 34d49eb57737c4bca10f73342e3beefa6dae21a2 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 04:59:26 +0800 Subject: [PATCH 19/37] agent: refuse a backend by where its Sandbox runs, not by this OS cb7dc814ea refused LAYERFS_SANDBOX_BACKEND=namespaces whenever this process was not on Linux, and step 8 refused native and namespaces whenever it was on Windows. A client that sends its calls to a worker (a vm: placement's VM, or the macOS route) has its Sandboxes made on the worker's Linux host, so every vm:* row run from macOS was refused at sandbox.create ("namespaces is Linux only"). Found by the vm:lima real proof (vm_real.mjs, wt-vm), which passed VM create, bundle, worker and Init of both projects and then stopped there. sandbox.create now passes the client's Sandbox host to deployment(): Linux when its transport is a worker (the worker client says so), this process's platform otherwise. Both refusals read that host. Deleted tests: none. native_deployment.mjs adds the worker-host case. Checks (each bounded at 110 s): native_deployment, calls (39), exec_output ok; vm_placement settings, flow, two, bundle, delete, hosts, stores, apple-container, ssh, cleanup all PASS; cli.test.mjs 75/75. Production LOC: 123182 -> 123184 (delta +2) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 2d6770fb47 and the staged tree 39a98cb912; after: core 41405; engine 77511; api 4268; Co-Authored-By: Claude Opus 5.5 --- api/agent/src/client.js | 19 +++++++++++++------ api/agent/src/sandbox/create.js | 4 ++-- api/agent/src/transport/worker_client.js | 2 ++ api/agent/test/native_deployment.mjs | 10 +++++++++- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/api/agent/src/client.js b/api/agent/src/client.js index b61920dce..02cf1d194 100644 --- a/api/agent/src/client.js +++ b/api/agent/src/client.js @@ -69,10 +69,10 @@ export function sandboxArg(sandbox) { * `localDir` (LAYERFS_LOCAL_DIR) and no Docker setting; on Windows it is * refused Unsupported. Unset or `docker` is Docker; any other value is * refused. */ -export function deployment(options = {}, postgresql = false) { +export function deployment(options = {}, postgresql = false, host = process.platform) { const env = (name) => process.env[`LAYERFS_${name}`] || undefined; const sandbox = options.sandbox ?? env("SANDBOX"); - if (sandbox === "native") return nativeDeployment(options, env, sandbox); + if (sandbox === "native") return nativeDeployment(options, env, sandbox, host); if (sandbox !== undefined && sandbox !== "docker") { throw new LayerFSError("InvalidInput", `deploy.sandbox (LAYERFS_SANDBOX) is docker or native (Linux or macOS), not ${sandbox}`, null); } @@ -100,17 +100,19 @@ export function deployment(options = {}, postgresql = false) { * `namespaces` on Linux). The namespaces backend gives each Sandbox a root * filesystem from an image, so it also needs `image` (LAYERFS_IMAGE, the * same digest Docker deploys) and `imageArchive` (LAYERFS_IMAGE_ARCHIVE, the - * docker-archive the bundle carries). */ -function nativeDeployment(options, env, sandbox) { + * docker-archive the bundle carries). `host` is the platform the Sandbox + * runs on: this process's, or Linux when a worker makes it (see + * `sandboxHost`). */ +function nativeDeployment(options, env, sandbox, host) { const backend = options.sandboxBackend ?? env("SANDBOX_BACKEND"); // #527 step 8: Windows runs Docker Sandboxes through its WSL2 worker; it has no native or namespaces backend - if (process.platform === "win32") { + if (host === "win32") { const named = backend === "namespaces" ? "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces" : "deploy.sandbox (LAYERFS_SANDBOX) native"; throw new LayerFSError("Unsupported", `${named} is not supported on Windows: a Windows Sandbox is Docker, through the WSL2 worker; native runs on Linux or macOS, namespaces on Linux`, null); } // namespaces is Linux only: refused before its image settings are read, so // a macOS deployment hears Unsupported, not a missing LAYERFS_IMAGE - if (backend === "namespaces" && process.platform !== "linux") { + if (backend === "namespaces" && host !== "linux") { throw new LayerFSError("Unsupported", "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces is Linux only; use native", null); } const deploy = { @@ -133,6 +135,11 @@ function nativeDeployment(options, env, sandbox) { return deploy; } +/** The platform a client's Sandboxes run on: a worker (the macOS and + * Windows routes, or a `vm:` placement's VM) runs them on its Linux host; + * the addon in this process runs them here. */ +export const sandboxHost = (client) => (transportOf(client).worker ? "linux" : process.platform); + /** Refuses every call on a closed client (or one no factory opened). */ export function live(client) { if (client?.[STATE]?.closed !== false) { diff --git a/api/agent/src/sandbox/create.js b/api/agent/src/sandbox/create.js index 2b48723a5..708df9f98 100644 --- a/api/agent/src/sandbox/create.js +++ b/api/agent/src/sandbox/create.js @@ -4,13 +4,13 @@ // first reclaims the project's Sandboxes that closed themselves. The new one // closes itself two minutes after it has no Workspace and no process, like // every Sandbox; `sandbox.close` stops it now. -import { deployment, invokeClient } from "../client.js"; +import { deployment, invokeClient, sandboxHost } from "../client.js"; import { LayerFSError } from "../errors.js"; export async function create(client, options = {}) { if (options === null || typeof options !== "object" || (options.image !== undefined && typeof options.image !== "string")) { throw new LayerFSError("InvalidInput", "options are { image? }, an image digest", null); } - const deploy = deployment({ ...client.options.deploy, ...(options.image ? { image: options.image } : {}) }, Boolean(client.options.postgresql)); + const deploy = deployment({ ...client.options.deploy, ...(options.image ? { image: options.image } : {}) }, Boolean(client.options.postgresql), sandboxHost(client)); const value = await invokeClient(client, "sandbox.create", { deploy }); return { sandbox: value.sandbox, image: value.image }; } diff --git a/api/agent/src/transport/worker_client.js b/api/agent/src/transport/worker_client.js index 978acf9d8..068bd6d9c 100644 --- a/api/agent/src/transport/worker_client.js +++ b/api/agent/src/transport/worker_client.js @@ -150,6 +150,8 @@ export function workerClient(file) { return connection(info).call(request); } return { + /** Calls run in a Linux worker, so its Sandboxes run on Linux. */ + worker: true, call: (op, args) => send("call", op, args), backendCall: (op, args) => send("backendCall", op, args), /** The Store opens in the worker; here only its clients are counted. */ diff --git a/api/agent/test/native_deployment.mjs b/api/agent/test/native_deployment.mjs index 268c92be5..ee8752691 100644 --- a/api/agent/test/native_deployment.mjs +++ b/api/agent/test/native_deployment.mjs @@ -8,7 +8,7 @@ import assert from "node:assert/strict"; import { createRequire } from "node:module"; import { fileURLToPath } from "node:url"; -import { deployment } from "../src/client.js"; +import { deployment, sandboxHost, STATE } from "../src/client.js"; const FAKE = fileURLToPath(new URL("./fixture/fake-native.cjs", import.meta.url)); const native = createRequire(import.meta.url)(FAKE); @@ -184,6 +184,14 @@ try { process.env.LAYERFS_DAEMON = "/opt/layerfs-daemon"; process.env.LAYERFS_LOCAL_DIR = "/tmp/lfs"; assert.throws(() => deployment(), (e) => e.code === "Unsupported" && /namespaces is Linux only/.test(e.message)); + // a worker (a vm: placement's VM, or the macOS route) makes the Sandbox on + // its Linux host, so a macOS client sending to one is not refused + process.env.LAYERFS_IMAGE = docker.image; + process.env.LAYERFS_IMAGE_ARCHIVE = "/bundle/images/a.tar"; + assert.equal(sandboxHost({ [STATE]: { transport: { worker: true } } }), "linux"); + assert.equal(sandboxHost({ [STATE]: { transport: {} } }), "darwin"); + assert.equal(deployment({}, false, "linux").sandboxBackend, "namespaces"); + assert.throws(() => deployment({}, false, "darwin"), (e) => e.code === "Unsupported"); } finally { Object.defineProperty(process, "platform", host); } From 9b307f35cb5fff8a84af159ee19e06b73753878d Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:00:11 +0800 Subject: [PATCH 20/37] runtime: the local placement's Docker group under platform/docker/ (#527 step 10a) F10, D4 and D7: Docker in @layerfs/runtime had no home. Its argv was built in platform/shared.js and in six files outside platform/, and each caller first checked a flag (hostDocker, hostSandboxes) that a vm: home set, while vm supplied a docker() that threw. Move only, no behaviour change: - platform/linux/index.js, platform/macos/index.js and platform/windows/ move to platform/docker/linux.js, macos.js and windows/ (D4: the three Docker placements nest under the local placement kind; platform/ keeps meaning placement, D7). - platform/docker/index.js builds platform.docker, one Docker group per Docker platform from its own CLI call: run (the host socket on Linux and macOS, wsl.exe on Windows), version, sandboxes, stores and disk. - The Docker argv moves into the group: sandboxes.js (the containers of sandbox/leftovers.js, the ps/inspect of sandbox/list.js, the rm of leftovers and project/delete.js, STOPPED), stores.js (the four Store hooks from shared.js, makeVolume from store/calls.js) and disk.js (the volume listing and removal of volume.js). - hostDocker, hostSandboxes and vm's throwing docker() go: a vm: platform has no group, and callers that find none refuse with the same Unsupported messages as before (shared.js dockerOf), or, for sweep and status, answer as before ({ host: false }, docker "not-used"). - Every helper reaches Docker through runtime.platform.docker.run, so the tests replace that one call (runtime.mjs, verify/runtime_real.mjs). api/docs/runtime.md describes the layout. No other path in the repository named the moved files (worker/server.js keeps its path; worktree_build.py copies api/runtime whole). Deleted tests: none. Checks (each bounded at 120 s): node api/runtime/test/runtime.mjs surface, home-mode, projects, init, state, events, leftovers, sandboxes, volumes, transport-order, macos-worker, worker-frames, docker-default, worker-docker, stores, backend: all pass. node api/runtime/test/vm_placement.mjs settings, flow, two, bundle, delete, hosts, stores, apple-container, ssh, cleanup: all pass. node api/agent/test/{calls,exec_output,native_deployment}.mjs: pass; packaging.mjs surface, lifecycle, copy, sandbox, worker-route, transport-order: pass; packaging dispatch: FAIL before and after this change (needs a built layerfs.node, absent in this worktree). node --test api/cli/test/cli.test.mjs: pass. python3 tools/check_product_boundary.py: PASS. verify/runtime_real.mjs: syntax only (needs the E2E launcher). Production LOC: 123184 -> 123205 (delta +21) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 34d49eb577 and the staged tree 84c1e87932; after: core 41405; engine 77511; api 4289; Co-Authored-By: Claude Opus 5.5 --- api/docs/runtime.md | 20 ++++-- api/runtime/src/index.js | 8 +-- api/runtime/src/platform/docker/disk.js | 19 ++++++ api/runtime/src/platform/docker/index.js | 32 ++++++++++ .../{linux/index.js => docker/linux.js} | 11 ++-- .../{macos/index.js => docker/macos.js} | 13 ++-- api/runtime/src/platform/docker/sandboxes.js | 62 +++++++++++++++++++ api/runtime/src/platform/docker/stores.js | 47 ++++++++++++++ .../platform/{ => docker}/windows/index.js | 14 ++--- .../platform/{ => docker}/windows/paths.js | 0 api/runtime/src/platform/shared.js | 51 +++------------ api/runtime/src/platform/vm/index.js | 13 ++-- api/runtime/src/project/delete.js | 2 +- api/runtime/src/sandbox/leftovers.js | 16 ++--- api/runtime/src/sandbox/list.js | 45 ++------------ api/runtime/src/sandbox/sweep.js | 9 ++- api/runtime/src/status.js | 4 +- api/runtime/src/store/calls.js | 12 +--- api/runtime/src/store/sync.js | 4 +- api/runtime/src/store/volume.js | 2 +- api/runtime/src/volume.js | 28 ++++----- api/runtime/test/runtime.mjs | 14 ++--- api/runtime/test/verify/runtime_real.mjs | 4 +- 23 files changed, 255 insertions(+), 175 deletions(-) create mode 100644 api/runtime/src/platform/docker/disk.js create mode 100644 api/runtime/src/platform/docker/index.js rename api/runtime/src/platform/{linux/index.js => docker/linux.js} (91%) rename api/runtime/src/platform/{macos/index.js => docker/macos.js} (96%) create mode 100644 api/runtime/src/platform/docker/sandboxes.js create mode 100644 api/runtime/src/platform/docker/stores.js rename api/runtime/src/platform/{ => docker}/windows/index.js (96%) rename api/runtime/src/platform/{ => docker}/windows/paths.js (100%) diff --git a/api/docs/runtime.md b/api/docs/runtime.md index c5e850a75..45d67d227 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -128,15 +128,27 @@ lines from now on, or from `since`, each with `actor`, its trace file's name. ## Platforms and the worker -Each platform folder implements one interface (`endpoint`, `status`, -`start`, `restart`, `init`, `path`, the Store hooks `makeStore`, -`storeHolders`, `releaseStoreHolders` and `removeStore`, and the Docker, home -and disk helpers) and may declare capabilities instead of being named: +`src/platform/` holds one folder per placement kind (#527 §6, D4): +`platform/docker/` for `local` (`linux.js`, `macos.js` and `windows/`: Docker +on this host, in Docker Desktop's VM or in WSL2) and `platform/vm/` for +`vm:`. Each platform object implements one interface (`endpoint`, +`status`, `start`, `restart`, `init`, `path`, the Store hooks `makeStore`, +`storeHolders`, `releaseStoreHolders` and `removeStore`, and the home and +disk helpers) and may declare capabilities instead of being named: `initCounts: false` (macOS: this process cannot read Init's counts) and `uncertainInit: true` (Windows: any failed Init is kept and recorded, never cleaned up); `platform/vm/` implements the same interface over a VM (see [Placement](#placement-one-linux-vm-per-store)). +The three Docker platforms also carry `platform.docker`, one Docker group +built in `platform/docker/index.js` from that platform's own CLI call: `run` +(the host socket on Linux and macOS, `wsl.exe` on Windows), `version`, +`sandboxes` (this home's Sandbox containers, `sandboxes.js`), `stores` (Store +volumes and their hooks, `stores.js`) and `disk` (the engine's volumes, +`disk.js`). A `vm:` platform has no group, and the helpers that read host +Docker refuse there. Every helper reaches Docker through +`runtime.platform.docker.run`, so a test replaces that one call. + - **Linux** runs Store calls in this process. There is no worker: `worker.start` and `worker.restart` are refused `InvalidInput`. Init installs the Store under Docker's volumes directory, so the process must be diff --git a/api/runtime/src/index.js b/api/runtime/src/index.js index 551929bf6..0a1fa2eca 100644 --- a/api/runtime/src/index.js +++ b/api/runtime/src/index.js @@ -22,10 +22,10 @@ import { Clients } from "./clients.js"; import { homeStores } from "./platform/shared.js"; import { resolveSettings } from "./settings.js"; import { status } from "./status.js"; -import linux from "./platform/linux/index.js"; -import macos from "./platform/macos/index.js"; +import linux from "./platform/docker/linux.js"; +import macos from "./platform/docker/macos.js"; +import windows from "./platform/docker/windows/index.js"; import { vmPlatform } from "./platform/vm/index.js"; -import windows from "./platform/windows/index.js"; import { find, list } from "./project/list.js"; import * as stores from "./store/calls.js"; import * as sync from "./store/sync.js"; @@ -42,7 +42,7 @@ import { list as listVolumes, remove as removeVolumes } from "./volume.js"; import { subscribe } from "./events/subscribe.js"; const PLATFORMS = { linux, macos, windows }; -/** The platform object `settings` selects: this host's, or one VM's (§6). */ +/** The platform object `settings` selects: a `local` home's Docker placement (platform/docker/), or one VM's (platform/vm/, #527 §6). */ const platformFor = (settings) => (settings.placement.kind === "vm" ? vmPlatform(settings.placement.provider) : PLATFORMS[settings.platform]); /** Held only by `open`: the constructor refuses without it. */ const FACTORY = Symbol("LayerFSRuntime.open"); diff --git a/api/runtime/src/platform/docker/disk.js b/api/runtime/src/platform/docker/disk.js new file mode 100644 index 000000000..37a9e0f9d --- /dev/null +++ b/api/runtime/src/platform/docker/disk.js @@ -0,0 +1,19 @@ +// The engine's volumes, as runtime.volume.list reads them and +// runtime.volume.remove removes them. Moved from volume.js (#527 step 10a). + +const docker = (runtime, args, options = {}) => runtime.platform.docker.run(runtime.settings, args, options); + +/** Every volume on the engine: `[{ name, size, links, labels }]`, `size` as Docker prints it. + * One `docker system df -v`, plus one `docker volume inspect` of the labelled volumes. */ +export async function volumes(runtime) { + const df = JSON.parse(await docker(runtime, ["system", "df", "-v", "--format", "{{json .}}"], { timeout: 60_000 })); + const found = df.Volumes ?? []; + const labelled = found.filter((v) => v.Labels).map((v) => v.Name); + const labels = new Map(labelled.length ? JSON.parse(await docker(runtime, ["volume", "inspect", ...labelled], { timeout: 30_000 })).map((v) => [v.Name, v.Labels ?? {}]) : []); + return found.map((v) => ({ name: v.Name, size: v.Size, links: v.Links, labels: labels.get(v.Name) ?? {} })); +} + +/** One `docker volume rm`. */ +export async function remove(runtime, name) { + await docker(runtime, ["volume", "rm", name], { timeout: 30_000 }); +} diff --git a/api/runtime/src/platform/docker/index.js b/api/runtime/src/platform/docker/index.js new file mode 100644 index 000000000..f0217bde3 --- /dev/null +++ b/api/runtime/src/platform/docker/index.js @@ -0,0 +1,32 @@ +// The `local` placement (#527 §6, D4): Docker on this host (linux.js), in +// Docker Desktop's VM (macos.js) or in a WSL2 distribution (windows/). Each +// of those platforms carries `platform.docker`, the one Docker group, built +// here from that platform's own CLI call `run`: +// run(settings, args, options) one `docker` call: its stdout, trimmed +// version(runtime) the engine's version (runtime.status) +// sandboxes this home's Sandbox containers (sandboxes.js) +// stores Store volumes and their hooks (stores.js) +// disk the engine's volumes and their removal (disk.js) +// A `vm:` home has no group: host Docker holds none of its Stores +// or Sandboxes, so a caller that finds none refuses (shared.js `dockerOf`). +// Every helper reaches Docker through `runtime.platform.docker.run`, so a +// test replaces that one call. +import { run as execute } from "../shared.js"; +import * as disk from "./disk.js"; +import * as sandboxes from "./sandboxes.js"; +import * as stores from "./stores.js"; + +/** One Docker CLI call on the configured engine socket (Linux, macOS): its stdout, trimmed. */ +export const socketRun = (settings, args, options = {}) => + execute("docker", ["-H", `unix://${settings.docker}`, ...args], { timeout: 5000, ...options }).then((r) => r.stdout.trim()); + +/** The Docker group of a platform whose Docker CLI call is `run`. */ +export function dockerGroup(run) { + return { + run, + version: (runtime) => runtime.platform.docker.run(runtime.settings, ["version", "--format", "{{.Server.Version}}"]), + sandboxes, + stores, + disk, + }; +} diff --git a/api/runtime/src/platform/linux/index.js b/api/runtime/src/platform/docker/linux.js similarity index 91% rename from api/runtime/src/platform/linux/index.js rename to api/runtime/src/platform/docker/linux.js index 3770bd969..cd6b2c0f2 100644 --- a/api/runtime/src/platform/linux/index.js +++ b/api/runtime/src/platform/docker/linux.js @@ -4,7 +4,9 @@ // keeps root-only: `init` checks this process can write there first. import { accessSync, constants, existsSync, rmSync, statSync, statfsSync } from "node:fs"; import { join } from "node:path"; -import { docker, homeNames, makeStore, refuse, releaseStoreHolders, removeStore, storeHolders } from "../shared.js"; +import { homeNames, refuse } from "../shared.js"; +import { dockerGroup, socketRun } from "./index.js"; +import { hooks } from "./stores.js"; const NO_WORKER = "Linux runs Store calls in-process; there is no worker"; @@ -26,11 +28,8 @@ export default { if (uid !== undefined && owner !== uid) throw refuse("Unsupported", `the LayerFS home ${settings.home} belongs to uid ${owner}, not this process's uid ${uid}`); }, path: (settings, hostPath) => hostPath, - docker, - makeStore, - storeHolders, - releaseStoreHolders, - removeStore, + docker: dockerGroup(socketRun), + ...hooks, storePath: (settings, volume) => `${settings.volumes}/${volume}/_data/global/store.sqlite`, homeNames: (settings) => homeNames(settings.home), async removeHome(settings, name) { rmSync(join(settings.home, name), { recursive: true, force: true }); }, diff --git a/api/runtime/src/platform/macos/index.js b/api/runtime/src/platform/docker/macos.js similarity index 96% rename from api/runtime/src/platform/macos/index.js rename to api/runtime/src/platform/docker/macos.js index 56bba2da5..51f53dda6 100644 --- a/api/runtime/src/platform/macos/index.js +++ b/api/runtime/src/platform/docker/macos.js @@ -15,7 +15,9 @@ import { randomBytes } from "node:crypto"; import { mkdirSync, readFileSync, rmSync } from "node:fs"; import { join } from "node:path"; import { connection } from "@layerfs/agent/internal"; -import { docker as cli, endpointFile, homeNames, makeStore, ping, ready, refuse, releaseStoreHolders, removeStore, storeHolders, writeEndpoint } from "../shared.js"; +import { endpointFile, homeNames, ping, ready, refuse, writeEndpoint } from "../shared.js"; +import { dockerGroup, socketRun } from "./index.js"; +import { hooks } from "./stores.js"; const VOLUMES = "/var/lib/docker/volumes"; const WORKER_PORT = 7070; @@ -26,7 +28,7 @@ const SERVER = "api/runtime/src/worker/server.js"; const INIT = "api/runtime/src/worker/init.js"; // every Docker call goes through the platform object, so a test can stub it -const docker = (...args) => platform.docker(...args); +const docker = (...args) => platform.docker.run(...args); const name = (settings) => `${settings.containerPrefix}worker`; const build = (settings) => JSON.parse(readFileSync(join(settings.bundle, "manifest.json"), "utf8")).build_id; @@ -128,11 +130,8 @@ const platform = { if (worker.state !== "running" || !worker.answering) await start(settings); }, path: (settings, hostPath) => hostPath, - docker: cli, - makeStore, - storeHolders, - releaseStoreHolders, - removeStore, + docker: dockerGroup(socketRun), + ...hooks, storePath: (settings, volume) => `${VOLUMES}/${volume}/_data/global/store.sqlite`, homeNames: (settings) => homeNames(settings.home), async removeHome(settings, project) { rmSync(join(settings.home, project), { recursive: true, force: true }); }, diff --git a/api/runtime/src/platform/docker/sandboxes.js b/api/runtime/src/platform/docker/sandboxes.js new file mode 100644 index 000000000..aba34686f --- /dev/null +++ b/api/runtime/src/platform/docker/sandboxes.js @@ -0,0 +1,62 @@ +// This home's Sandbox containers on its Docker engine (label +// layerfs.role=sandbox, named with the home's containerPrefix), as +// runtime.sandbox.list, list_leftovers, clean_leftovers, sweep and +// project.delete read and remove them. Moved from sandbox/leftovers.js, +// sandbox/list.js and project/delete.js (#527 step 10a). + +/** Container states that hold a volume but run nothing (Docker's; a namespace Sandbox's record has none). */ +export const STOPPED = new Set(["created", "exited", "dead"]); + +const docker = (runtime, args, options = {}) => runtime.platform.docker.run(runtime.settings, args, options); + +/** This home's Sandbox containers (`-`, label layerfs.role=sandbox), running or not: + * `[{ name, state, running, status, project, sandbox, image, store, key }]`. One `docker ps`. */ +export async function containers(runtime) { + const out = await docker(runtime, ["ps", "-a", "--no-trunc", "--filter", "label=layerfs.role=sandbox", "--format", "{{.Names}}\t{{.State}}\t{{.Status}}\t{{.Label \"layerfs.project\"}}\t{{.Label \"layerfs.sandbox\"}}\t{{.Image}}\t{{.Label \"layerfs.store\"}}"]); + return out.split("\n").filter(Boolean).map((row) => { + const [name, state, status, project, sandbox, image, store] = row.split("\t"); + // a Sandbox of a shared Store's project (#506) is `.-` + return { name, state, running: state === "running", status, project, sandbox, image, store: store || null, key: store ? `${store}/${project}` : project }; + }).filter((c) => c.name.startsWith(runtime.settings.containerPrefix)); +} + +/** A container gone between the listing and the inspection is left out: inspect still prints the others. */ +async function inspect(runtime, ids) { + try { + return JSON.parse(await docker(runtime, ["inspect", "--size", ...ids], { timeout: 30_000 })); + } catch (error) { + const out = String(error?.stdout ?? "").trim(); + if (out.startsWith("[")) return JSON.parse(out); + throw error; + } +} + +/** `[{ name, project, store, sandbox, state, running, startedAt, finishedAt, image, ports, scratch }]` + * of this home's Sandbox containers, by name. One `docker ps` and one `docker inspect --size`. */ +export async function details(runtime) { + const ids = (await docker(runtime, ["ps", "-a", "-q", "--no-trunc", "--filter", "label=layerfs.role=sandbox"])).split("\n").filter(Boolean); + if (!ids.length) return []; + return (await inspect(runtime, ids)).map((c) => { + const labels = c.Config?.Labels ?? {}; + const running = c.State?.Running === true; + const finished = c.State?.FinishedAt; + return { + name: String(c.Name ?? "").replace(/^\//, ""), + project: labels["layerfs.project"] ?? null, + store: labels["layerfs.store"] ?? null, + sandbox: labels["layerfs.sandbox"] ?? null, + state: c.State?.Status ?? "unknown", + running, + startedAt: c.State?.StartedAt ?? null, + finishedAt: running || !finished || finished.startsWith("0001-") ? null : finished, + image: c.Config?.Image ?? null, + ports: Object.entries(c.NetworkSettings?.Ports ?? {}).flatMap(([port, bound]) => (bound ?? []).map((b) => ({ container: port, host: b.HostIp, port: Number(b.HostPort) }))), + scratch: typeof c.SizeRw === "number" ? c.SizeRw : null, + }; + }).filter((c) => c.name.startsWith(runtime.settings.containerPrefix)).sort((a, b) => a.name.localeCompare(b.name)); +} + +/** One `docker rm` of the named containers; the running ones too only when `force`. */ +export async function remove(runtime, names, { force = false, timeout } = {}) { + await docker(runtime, ["rm", ...(force ? ["-f"] : []), ...names], timeout ? { timeout } : {}); +} diff --git a/api/runtime/src/platform/docker/stores.js b/api/runtime/src/platform/docker/stores.js new file mode 100644 index 000000000..cf050f17e --- /dev/null +++ b/api/runtime/src/platform/docker/stores.js @@ -0,0 +1,47 @@ +// Store volumes on the `local` placement: a Store is one labelled Docker +// volume, its holders are containers, and removing the Store removes the +// volume. The four Store hooks Init and Store removal use (`hooks`), which a +// `vm:` placement implements over the project's VM instead (vm/index.js), +// and the volume a Store-level create makes. Each hook takes the runtime and +// the owner `{ name, volume }`, and uses that platform's own Docker CLI call +// (Windows goes through WSL). Moved from platform/shared.js and +// store/calls.js (#527 step 10a). +import { refuse } from "../shared.js"; + +const docker = (runtime, args, options = {}) => runtime.platform.docker.run(runtime.settings, args, options); + +/** Init makes the project's Store volume before installing into it. */ +export async function makeStore(runtime, project) { + const { settings } = runtime; + await docker(runtime, ["volume", "create", "--label", "layerfs.role=store", "--label", `layerfs.home=${settings.home}`, "--label", `layerfs.project=${project.name}`, project.volume], { timeout: 30_000 }); +} + +/** The containers holding the volume now: [{ id, state }], running or not. */ +export async function storeHolders(runtime, project) { + const rows = await docker(runtime, ["ps", "-a", "--filter", `volume=${project.volume}`, "--format", "{{.ID}} {{.State}}"]); + return rows.split("\n").filter(Boolean).map((line) => { const [id, state] = line.split(" "); return { id, state }; }); +} + +/** Removes the volume's holders: the running ones only when `force`. */ +export async function releaseStoreHolders(runtime, project, holders, { force = false } = {}) { + if (!holders.length) return; + await docker(runtime, ["rm", ...(force ? ["-f"] : []), ...holders.map((holder) => holder.id)], { timeout: 30_000 }); +} + +/** The volume itself, once nothing holds it. */ +export async function removeStore(runtime, project) { + await docker(runtime, ["volume", "rm", project.volume], { timeout: 30_000 }); +} + +/** The platform-level Store hooks, as every Docker placement exposes them. */ +export const hooks = { makeStore, storeHolders, releaseStoreHolders, removeStore }; + +/** Makes a Store's labelled volume, refusing one that exists (docker volume create would reuse it). */ +export async function makeVolume(runtime, name) { + const { settings } = runtime; + const volume = `${settings.containerPrefix}store-${name}`; + const exists = await docker(runtime, ["volume", "inspect", "--format", "{{.Name}}", volume]).then(() => true, () => false); + if (exists) throw refuse("Exists", `the volume ${volume} exists; remove it, or name the Store differently`); + await docker(runtime, ["volume", "create", "--label", "layerfs.role=store", "--label", `layerfs.home=${settings.home}`, "--label", `layerfs.store=${name}`, volume], { timeout: 30_000 }); + return volume; +} diff --git a/api/runtime/src/platform/windows/index.js b/api/runtime/src/platform/docker/windows/index.js similarity index 96% rename from api/runtime/src/platform/windows/index.js rename to api/runtime/src/platform/docker/windows/index.js index 3bc8bd026..60425bf1d 100644 --- a/api/runtime/src/platform/windows/index.js +++ b/api/runtime/src/platform/docker/windows/index.js @@ -11,13 +11,16 @@ import { createWriteStream, mkdirSync, readFileSync, rmSync } from "node:fs"; import { join, posix } from "node:path"; import { fileURLToPath } from "node:url"; import { connection, frame, readFrames } from "@layerfs/agent/internal"; -import { endpointFile, ping, ready, refuse, run, writeEndpoint, makeStore, releaseStoreHolders, removeStore, storeHolders } from "../shared.js"; +import { endpointFile, ping, ready, refuse, run, writeEndpoint } from "../../shared.js"; +import { dockerGroup } from "../index.js"; +import { hooks } from "../stores.js"; import { absoluteLinux, projectHome, wsl, wslArgs } from "./paths.js"; const SERVER = "api/runtime/src/worker/server.js"; const workers = new Map(); -const docker = (settings, args, options = {}) => wsl(settings, ["docker", "-H", `unix://${settings.docker}`, ...args], { timeout: 5000, ...options }).then((r) => r.stdout.trim()); +/** One Docker CLI call on the distribution's engine, through `wsl.exe`. */ +const wslRun = (settings, args, options = {}) => wsl(settings, ["docker", "-H", `unix://${settings.docker}`, ...args], { timeout: 5000, ...options }).then((r) => r.stdout.trim()); /** Only this Windows user and SYSTEM may read the endpoint's folder. */ async function protect(directory) { @@ -132,11 +135,8 @@ export default { /** Init runs in the worker, which reads the folder through WSL. */ async init(settings) { await start(settings); }, path: (settings, hostPath) => hostPath, - docker, - makeStore, - storeHolders, - releaseStoreHolders, - removeStore, + docker: dockerGroup(wslRun), + ...hooks, storePath: (settings, volume) => `/var/lib/docker/volumes/${volume}/_data/global/store.sqlite`, async homeNames(settings) { const { stdout } = await wsl(settings, ["find", settings.wsl.home, "-mindepth", "2", "-maxdepth", "2", "-name", "project.record"], { timeout: 5000 }).catch(() => ({ stdout: "" })); diff --git a/api/runtime/src/platform/windows/paths.js b/api/runtime/src/platform/docker/windows/paths.js similarity index 100% rename from api/runtime/src/platform/windows/paths.js rename to api/runtime/src/platform/docker/windows/paths.js diff --git a/api/runtime/src/platform/shared.js b/api/runtime/src/platform/shared.js index 706d59791..f5ad91df5 100644 --- a/api/runtime/src/platform/shared.js +++ b/api/runtime/src/platform/shared.js @@ -1,5 +1,5 @@ -// What the platform folders share: refusals, one Docker CLI call, the -// worker's endpoint file and a bounded ping of a worker. +// What the placements share (docker/ for `local`, vm/ for `vm:`): +// refusals, the worker's endpoint file and a bounded ping of a worker. import { execFile } from "node:child_process"; import { existsSync, readdirSync, renameSync, writeFileSync } from "node:fs"; import { connect } from "node:net"; @@ -33,9 +33,14 @@ export function homeStores(runtime, what) { if (runtime.platform.homeStores === false) throw noHomeStores(runtime.platform.name, what); } -/** One Docker CLI call on the configured engine: its stdout, trimmed. */ -export const docker = (settings, args, options = {}) => - run("docker", ["-H", `unix://${settings.docker}`, ...args], { timeout: 5000, ...options }).then((r) => r.stdout.trim()); +/** Where a `vm:` home's Sandboxes are, for the refusals of the Sandbox helpers that read host Docker. */ +export const VM_SANDBOXES = "its Sandboxes are Linux namespaces inside the VM; the SDK's project.list_sandboxes reads them"; + +/** The placement's Docker group (docker/index.js), or the refusal of `what` where it has none. */ +export function dockerOf(runtime, what, instead) { + if (!runtime.platform.docker) throw noHostDocker(runtime, what, instead); + return runtime.platform.docker; +} /** * Where a worker's endpoint lives: `/worker/endpoint.json` for a home @@ -80,39 +85,3 @@ export function homeNames(home) { if (!existsSync(home)) return []; return readdirSync(home, { withFileTypes: true }).filter((e) => e.isDirectory() && existsSync(join(home, e.name, "project.record"))).map((e) => e.name).sort(); } - -// The four Store hooks Init and project removal use, as Docker has them (the -// `local` placement): a project's Store is a labelled volume, its holders are -// containers, and removing the project removes the volume. A `vm:` placement -// implements the same four over the project's VM instead (vm/index.js). Each -// takes the runtime and the project `{ name, volume }`, so the hook uses that -// platform's own Docker CLI (Windows goes through WSL) or that project's VM. - -/** Container states that hold a volume but run nothing (Docker's; a namespace Sandbox's record has none). */ -export const STOPPED = new Set(["created", "exited", "dead"]); - -/** Init makes the project's Store volume before installing into it. */ -export async function makeStore(runtime, project) { - const { settings, platform } = runtime; - await platform.docker(settings, ["volume", "create", "--label", "layerfs.role=store", "--label", `layerfs.home=${settings.home}`, "--label", `layerfs.project=${project.name}`, project.volume], { timeout: 30_000 }); -} - -/** The containers holding the volume now: [{ id, state }], running or not. */ -export async function storeHolders(runtime, project) { - const { settings, platform } = runtime; - const rows = await platform.docker(settings, ["ps", "-a", "--filter", `volume=${project.volume}`, "--format", "{{.ID}} {{.State}}"]); - return rows.split("\n").filter(Boolean).map((line) => { const [id, state] = line.split(" "); return { id, state }; }); -} - -/** Removes the volume's holders: the running ones only when `force`. */ -export async function releaseStoreHolders(runtime, project, holders, { force = false } = {}) { - const { settings, platform } = runtime; - if (!holders.length) return; - await platform.docker(settings, ["rm", ...(force ? ["-f"] : []), ...holders.map((holder) => holder.id)], { timeout: 30_000 }); -} - -/** The volume itself, once nothing holds it. */ -export async function removeStore(runtime, project) { - const { settings, platform } = runtime; - await platform.docker(settings, ["volume", "rm", project.volume], { timeout: 30_000 }); -} \ No newline at end of file diff --git a/api/runtime/src/platform/vm/index.js b/api/runtime/src/platform/vm/index.js index 91b332d11..e801db289 100644 --- a/api/runtime/src/platform/vm/index.js +++ b/api/runtime/src/platform/vm/index.js @@ -389,10 +389,10 @@ export function deploymentEnv(settings, project) { } /** - * The platform object of a `vm:` home. `hostDocker`/`hostSandboxes` - * tell the runtime that host Docker is not this home's: its Stores are - * directories on each VM's own disk and its Sandboxes are Linux namespaces - * there, so `volume.list`, `volume.remove`, `sandbox.list`, + * The platform object of a `vm:` home. It has no Docker group + * (`docker`, platform/docker/index.js): host Docker is not this home's, since + * its Stores are directories on each VM's own disk and its Sandboxes are + * Linux namespaces there, so `volume.list`, `volume.remove`, `sandbox.list`, * `sandbox.list_leftovers` and `sandbox.clean_leftovers` refuse with that * reason instead of answering from the host, and `sandbox.sweep` answers * `{ host: false }`. `homeStores: false` says the home keeps no Store of its @@ -406,8 +406,6 @@ export function vmPlatform(settingName) { const placement = `vm:${settingName}`; return { name: placement, - hostDocker: false, - hostSandboxes: false, homeStores: false, endpoints: (settings) => (project) => endpointFile(settings.home, project), status, @@ -426,9 +424,6 @@ export function vmPlatform(settingName) { /** Where the SDK inside the VM reads a host folder: its copy under `/layerfs/import`. */ path: (settings, hostPath) => (hostPath === settings.home || hostPath.startsWith(`${settings.home}/`) ? hostPath.replace(settings.home, GUEST.home) : importPath(hostPath)), deploymentEnv, - docker: () => { - throw refuse("Unsupported", `this home is placed in vm:${settingName}: its Stores and Sandboxes are inside each project's VM, so host Docker does not describe it`, null); - }, // every project's Store is at the same guest path in its own VM: a path by // volume alone would map every Store of the home to that one file storePath: () => { diff --git a/api/runtime/src/project/delete.js b/api/runtime/src/project/delete.js index c2cf1e403..88527f0f3 100644 --- a/api/runtime/src/project/delete.js +++ b/api/runtime/src/project/delete.js @@ -62,7 +62,7 @@ async function dropStack(runtime, project, options) { const sandboxes = (await containers(runtime)).filter((c) => c.key === keyOf(project)); const running = sandboxes.filter((c) => !STOPPED.has(c.state)).length; if (running && !options.stopSandboxes) throw refuse("Busy", `${running} running Sandbox(es) of ${project.name} use Store ${store.name}; a Sandbox closes 2 minutes after its last Workspace is unmounted, or pass stopSandboxes`); - if (sandboxes.length) await platform.docker(settings, ["rm", ...(running ? ["-f"] : []), ...sandboxes.map((c) => c.name)], { timeout: 30_000 }); + if (sandboxes.length) await platform.docker.sandboxes.remove(runtime, sandboxes.map((c) => c.name), { force: running > 0, timeout: 30_000 }); await runtime.clients.forget(keyOf(project)); // a PostgreSQL Store's URL is passed per call if (store.kind === "postgresql" && (typeof options.url !== "string" || !options.url)) throw refuse("InvalidInput", `Store ${store.name} is a PostgreSQL schema: pass its { url } for this call`); diff --git a/api/runtime/src/sandbox/leftovers.js b/api/runtime/src/sandbox/leftovers.js index 5272396eb..fb112c0a9 100644 --- a/api/runtime/src/sandbox/leftovers.js +++ b/api/runtime/src/sandbox/leftovers.js @@ -1,19 +1,13 @@ // Sandbox containers of this home that no project owns, or that were left // stopped, and their removal. From part of the dsh Host's runtime.js (#428). +// The containers are the Docker group's (platform/docker/sandboxes.js). import { LayerFSError } from "@layerfs/agent"; import { keyOf } from "../project/list.js"; -import { noHostDocker } from "../platform/shared.js"; +import { dockerOf, VM_SANDBOXES } from "../platform/shared.js"; -/** This home's Sandbox containers (`-`, label layerfs.role=sandbox), running or not. */ +/** This home's Sandbox containers, running or not; refused where the placement has no Docker group. */ export async function containers(runtime) { - const { settings, platform } = runtime; - if (platform.hostSandboxes === false) throw noHostDocker(runtime, "runtime.sandbox", "its Sandboxes are Linux namespaces inside the VM; the SDK's project.list_sandboxes reads them"); - const out = await platform.docker(settings, ["ps", "-a", "--no-trunc", "--filter", "label=layerfs.role=sandbox", "--format", "{{.Names}}\t{{.State}}\t{{.Status}}\t{{.Label \"layerfs.project\"}}\t{{.Label \"layerfs.sandbox\"}}\t{{.Image}}\t{{.Label \"layerfs.store\"}}"]); - return out.split("\n").filter(Boolean).map((row) => { - const [name, state, status, project, sandbox, image, store] = row.split("\t"); - // a Sandbox of a shared Store's project (#506) is `.-` - return { name, state, running: state === "running", status, project, sandbox, image, store: store || null, key: store ? `${store}/${project}` : project }; - }).filter((c) => c.name.startsWith(settings.containerPrefix)); + return dockerOf(runtime, "runtime.sandbox", VM_SANDBOXES).sandboxes.containers(runtime); } /** Containers of no project of this home, or stopped: `[{ name, project, running, status }]`. */ @@ -32,7 +26,7 @@ export async function clean_leftovers(runtime, names) { if (!c) { results.push({ name, ok: false, message: "not a leftover of this home" }); continue; } if (c.running) { results.push({ name, ok: false, message: "still running; stop it first" }); continue; } try { - await runtime.platform.docker(runtime.settings, ["rm", name]); + await runtime.platform.docker.sandboxes.remove(runtime, [name]); results.push({ name, ok: true }); } catch (error) { results.push({ name, ok: false, message: error.stderr?.trim() || error.message }); diff --git a/api/runtime/src/sandbox/list.js b/api/runtime/src/sandbox/list.js index a5c66283e..a72aa0acd 100644 --- a/api/runtime/src/sandbox/list.js +++ b/api/runtime/src/sandbox/list.js @@ -4,48 +4,15 @@ // Workspace (/tmp, which is also HOME, and the npm, node and cargo caches // there). It goes only when the container is deleted (sandbox.close, an idle // close followed by a reclaim, or runtime.sandbox.sweep). One `docker ps` -// and one `docker inspect --size`; it changes nothing. +// and one `docker inspect --size` (platform/docker/sandboxes.js); it changes nothing. import { keyOf } from "../project/list.js"; -import { noHostDocker } from "../platform/shared.js"; - -/** A container gone between the listing and the inspection is left out: inspect still prints the others. */ -async function inspect(runtime, ids) { - const { settings, platform } = runtime; - try { - return JSON.parse(await platform.docker(settings, ["inspect", "--size", ...ids], { timeout: 30_000 })); - } catch (error) { - const out = String(error?.stdout ?? "").trim(); - if (out.startsWith("[")) return JSON.parse(out); - throw error; - } -} +import { dockerOf, VM_SANDBOXES } from "../platform/shared.js"; /** `[{ name, project, sandbox, state, running, startedAt, finishedAt, image, ports, scratch, owned }]`, by name. */ export async function list(runtime) { - const { settings, platform } = runtime; - if (platform.hostSandboxes === false) throw noHostDocker(runtime, "runtime.sandbox.list", "its Sandboxes are Linux namespaces inside the VM; the SDK's project.list_sandboxes reads them"); - const ids = (await platform.docker(settings, ["ps", "-a", "-q", "--no-trunc", "--filter", "label=layerfs.role=sandbox"])).split("\n").filter(Boolean); - if (!ids.length) return []; + const docker = dockerOf(runtime, "runtime.sandbox.list", VM_SANDBOXES); + const found = await docker.sandboxes.details(runtime); + if (!found.length) return []; const known = new Set((await runtime.project.list()).map(keyOf)); - return (await inspect(runtime, ids)).map((c) => { - const labels = c.Config?.Labels ?? {}; - const project = labels["layerfs.project"] ?? null; - const store = labels["layerfs.store"] ?? null; - const running = c.State?.Running === true; - const finished = c.State?.FinishedAt; - return { - name: String(c.Name ?? "").replace(/^\//, ""), - project, - store, - sandbox: labels["layerfs.sandbox"] ?? null, - state: c.State?.Status ?? "unknown", - running, - startedAt: c.State?.StartedAt ?? null, - finishedAt: running || !finished || finished.startsWith("0001-") ? null : finished, - image: c.Config?.Image ?? null, - ports: Object.entries(c.NetworkSettings?.Ports ?? {}).flatMap(([port, bound]) => (bound ?? []).map((b) => ({ container: port, host: b.HostIp, port: Number(b.HostPort) }))), - scratch: typeof c.SizeRw === "number" ? c.SizeRw : null, - owned: project !== null && known.has(store ? `${store}/${project}` : project), - }; - }).filter((c) => c.name.startsWith(settings.containerPrefix)).sort((a, b) => a.name.localeCompare(b.name)); + return found.map((c) => ({ ...c, owned: c.project !== null && known.has(c.store ? `${c.store}/${c.project}` : c.project) })); } diff --git a/api/runtime/src/sandbox/sweep.js b/api/runtime/src/sandbox/sweep.js index f3186bd1e..ec065dd2f 100644 --- a/api/runtime/src/sandbox/sweep.js +++ b/api/runtime/src/sandbox/sweep.js @@ -7,10 +7,9 @@ // project of this home records stay for list_leftovers / clean_leftovers. // The runtime runs it once when it opens (settings.sweep, default true); // status().sweep reports that run. One attempt per project, no retry. +// A `vm:` home keeps no host containers (no Docker group), so its +// sweep reads none and says so: `{ reclaimed: {}, failed: [], host: false }`. import { keyOf } from "../project/list.js"; -// A `vm:` home keeps no host containers, so its sweep reads none -// and says so: `{ reclaimed: {}, failed: [], host: false }`. -import { containers } from "./leftovers.js"; /** States of a container whose daemon has ended and that nothing restarts. */ const ENDED = new Set(["exited", "dead"]); @@ -18,10 +17,10 @@ const ENDED = new Set(["exited", "dead"]); /** `{ reclaimed: { project: [ids] }, failed: [{ project, code, message }] }` */ export async function sweep(runtime) { const { settings } = runtime; - if (runtime.platform.hostSandboxes === false) return { reclaimed: {}, failed: [], host: false }; + if (!runtime.platform.docker) return { reclaimed: {}, failed: [], host: false }; const known = new Map((await runtime.project.list()).filter((p) => p.volume && p.kind !== "postgresql").map((p) => [keyOf(p), p])); const named = (c) => `${settings.containerPrefix}${c.store ? `${c.store}.` : ""}${c.project}-`; - const ended = (await containers(runtime)).filter((c) => ENDED.has(c.state) && known.has(c.key) && c.name.startsWith(named(c))); + const ended = (await runtime.platform.docker.sandboxes.containers(runtime)).filter((c) => ENDED.has(c.state) && known.has(c.key) && c.name.startsWith(named(c))); const reclaimed = {}, failed = []; for (const key of [...new Set(ended.map((c) => c.key))].sort()) { const project = known.get(key); diff --git a/api/runtime/src/status.js b/api/runtime/src/status.js index ed4ace61e..618f26404 100644 --- a/api/runtime/src/status.js +++ b/api/runtime/src/status.js @@ -10,10 +10,10 @@ import { missing } from "./settings.js"; export async function status(runtime) { const { settings, platform } = runtime; let docker; - if (platform.hostDocker === false) { + if (!platform.docker) { docker = { level: "not-used", detail: `this home is placed in ${platform.name}; its Stores and Sandboxes are inside each project's VM` }; } else { - try { docker = { level: "ok", version: await platform.docker(settings, ["version", "--format", "{{.Server.Version}}"]) }; } catch (error) { + try { docker = { level: "ok", version: await platform.docker.version(runtime) }; } catch (error) { docker = { level: "down", error: error.stderr?.trim() || error.message }; } } diff --git a/api/runtime/src/store/calls.js b/api/runtime/src/store/calls.js index bef61b0dd..17c26e37b 100644 --- a/api/runtime/src/store/calls.js +++ b/api/runtime/src/store/calls.js @@ -107,22 +107,12 @@ export async function unused(runtime, name) { if ((await all(runtime)).some((s) => s.name === name)) throw refuse("Exists", `a LayerFS Store named ${name} exists`); } -/** Makes a Store's labelled volume, refusing one that exists (docker volume create would reuse it). */ -export async function makeVolume(runtime, name) { - const { settings, platform } = runtime; - const volume = `${settings.containerPrefix}store-${name}`; - const exists = await platform.docker(settings, ["volume", "inspect", "--format", "{{.Name}}", volume]).then(() => true, () => false); - if (exists) throw refuse("Exists", `the volume ${volume} exists; remove it, or name the Store differently`); - await platform.docker(settings, ["volume", "create", "--label", "layerfs.role=store", "--label", `layerfs.home=${settings.home}`, "--label", `layerfs.store=${name}`, volume], { timeout: 30_000 }); - return volume; -} - /** runtime.store.create(name): a new empty local SQLite Store in its own volume. */ export async function create(runtime, name) { const { settings, platform } = runtime; await unused(runtime, name); await platform.init(settings); - const volume = await makeVolume(runtime, name); + const volume = await platform.docker.stores.makeVolume(runtime, name); const store = { name, kind: "sqlite", volume, link: null, created: Date.now(), projects: [] }; try { await call("runtime.store.create", storeFields(runtime, store)); diff --git a/api/runtime/src/store/sync.js b/api/runtime/src/store/sync.js index cc848c806..0d0fd29e2 100644 --- a/api/runtime/src/store/sync.js +++ b/api/runtime/src/store/sync.js @@ -22,7 +22,7 @@ import { randomUUID } from "node:crypto"; import { statSync } from "node:fs"; import { invokeBackend } from "@layerfs/agent/internal"; import { callHome } from "../settings.js"; -import { credentialsOf, makeVolume, postgresqlTarget, shown, unused } from "./calls.js"; +import { credentialsOf, postgresqlTarget, shown, unused } from "./calls.js"; import { FILE, claim, link, named, put, refuse, storeFields } from "./registry.js"; import { removeVolume } from "./volume.js"; @@ -201,7 +201,7 @@ export async function start_load(runtime, jobs, remoteName, options = {}) { return jobs.begin({ kind: "load", store: name, ...from }, async (job) => { try { await runtime.platform.init(runtime.settings); - const volume = await makeVolume(runtime, name); + const volume = await runtime.platform.docker.stores.makeVolume(runtime, name); const store = { name, kind: "sqlite", volume, link: null, created: Date.now(), projects: [] }; let answer; try { diff --git a/api/runtime/src/store/volume.js b/api/runtime/src/store/volume.js index 0305e38e1..ee697de23 100644 --- a/api/runtime/src/store/volume.js +++ b/api/runtime/src/store/volume.js @@ -6,7 +6,7 @@ // project's VM, its disk and its namespace Sandboxes under `vm:` (#515). // One attempt per step; a failed step leaves the rest in place. import { LayerFSError } from "@layerfs/agent"; -import { STOPPED } from "../platform/shared.js"; +import { STOPPED } from "../platform/docker/sandboxes.js"; /** `owner` is `{ name, volume }`: the project or Store the volume holds. A * `vm:` placement's Store is the project's own VM and disk, so the hooks diff --git a/api/runtime/src/volume.js b/api/runtime/src/volume.js index 5669d09db..93ef77f99 100644 --- a/api/runtime/src/volume.js +++ b/api/runtime/src/volume.js @@ -12,11 +12,11 @@ // `live` is true while this home has the project that owns the volume (an // uncertain Init, which keeps a home entry and no record, counts as live). // `size` is Docker's figure, rounded to about four significant digits. -// One `docker system df -v`, plus one `docker volume inspect` of the -// labelled volumes; listing changes nothing. +// The Docker group's `disk` reads the engine (platform/docker/disk.js); +// listing changes nothing. import { LayerFSError } from "@layerfs/agent"; import { entries } from "./store/registry.js"; -import { noHostDocker } from "./platform/shared.js"; +import { dockerOf } from "./platform/shared.js"; const UNITS = { B: 1, kB: 1e3, KB: 1e3, MB: 1e6, GB: 1e9, TB: 1e12 }; /** "84.05MB" -> 84050000; anything else -> null. */ @@ -27,12 +27,8 @@ export const bytesOf = (text) => { /** `[{ name, size, containers, owner, project, live, removable }]`, by name. */ export async function list(runtime) { - const { settings, platform } = runtime; - if (platform.hostDocker === false) throw noHostDocker(runtime, "runtime.volume.list", "its Stores are directories on the VM's disk, not host Docker volumes"); - const df = JSON.parse(await platform.docker(settings, ["system", "df", "-v", "--format", "{{json .}}"], { timeout: 60_000 })); - const volumes = df.Volumes ?? []; - const labelled = volumes.filter((v) => v.Labels).map((v) => v.Name); - const labels = new Map(labelled.length ? JSON.parse(await platform.docker(settings, ["volume", "inspect", ...labelled], { timeout: 30_000 })).map((v) => [v.Name, v.Labels ?? {}]) : []); + const { settings } = runtime; + const volumes = await dockerOf(runtime, "runtime.volume.list", "its Stores are directories on the VM's disk, not host Docker volumes").disk.volumes(runtime); const projects = await runtime.project.list(); const recorded = new Map(projects.filter((p) => p.volume).map((p) => [p.volume, p.name])); // a Store's volume (#506) is this home's while the Store is registered, with or without projects @@ -40,16 +36,16 @@ export async function list(runtime) { for (const volume of stores.keys()) if (!recorded.has(volume)) recorded.set(volume, null); const named = new Map(projects.map((p) => [p.name, p])); return volumes.map((v) => { - const l = labels.get(v.Name) ?? {}; + const l = v.labels; const store = l["layerfs.role"] === "store"; let owner = "unknown", project = null; - if (recorded.has(v.Name)) [owner, project] = ["this", recorded.get(v.Name)]; + if (recorded.has(v.name)) [owner, project] = ["this", recorded.get(v.name)]; else if (store && l["layerfs.home"] === settings.home) [owner, project] = ["this", l["layerfs.project"] ?? null]; else if (store && l["layerfs.home"]) [owner, project] = ["other", l["layerfs.project"] ?? null]; - const live = owner === "this" && (recorded.has(v.Name) || (named.has(project) && !named.get(project).volume)); - const containers = Number(v.Links) || 0; - const held = stores.get(v.Name) ?? (l["layerfs.home"] === settings.home ? l["layerfs.store"] ?? null : null); - return { name: v.Name, size: bytesOf(v.Size), containers, owner, project, ...(held ? { store: held } : {}), live, removable: owner === "this" && !live && containers === 0 }; + const live = owner === "this" && (recorded.has(v.name) || (named.has(project) && !named.get(project).volume)); + const containers = Number(v.links) || 0; + const held = stores.get(v.name) ?? (l["layerfs.home"] === settings.home ? l["layerfs.store"] ?? null : null); + return { name: v.name, size: bytesOf(v.size), containers, owner, project, ...(held ? { store: held } : {}), live, removable: owner === "this" && !live && containers === 0 }; }).sort((a, b) => a.name.localeCompare(b.name)); } @@ -68,7 +64,7 @@ export async function remove(runtime, names) { : null; if (why) { results.push({ name, ok: false, message: why }); continue; } try { - await runtime.platform.docker(runtime.settings, ["volume", "rm", name], { timeout: 30_000 }); + await runtime.platform.docker.disk.remove(runtime, name); results.push({ name, ok: true }); } catch (error) { results.push({ name, ok: false, message: error.stderr?.trim() || error.message }); diff --git a/api/runtime/test/runtime.mjs b/api/runtime/test/runtime.mjs index 3066aff7d..cfc76abf7 100644 --- a/api/runtime/test/runtime.mjs +++ b/api/runtime/test/runtime.mjs @@ -19,11 +19,11 @@ const selected = process.argv[2]; const work = mkdtempSync(join(tmpdir(), "layerfs-runtime-")); const home = join(work, "home"); const IMAGE = `sha256:${"a".repeat(64)}`; -/** A runtime on Linux whose Docker CLI calls go to `docker(args)`; `calls` lists them. */ +/** A runtime on Linux whose Docker CLI calls (its Docker group's `run`) go to `docker(args)`; `calls` lists them. */ async function opened(docker = () => "", settings = {}) { const runtime = await LayerFSRuntime.open({ home, image: IMAGE, daemon: "/bin/daemon", volumes: join(work, "volumes"), platform: "linux", sweep: false, ...settings }); const calls = []; - runtime.platform = { ...runtime.platform, docker: async (_settings, args) => { calls.push(args); return docker(args); } }; + runtime.platform = { ...runtime.platform, docker: { ...runtime.platform.docker, run: async (_settings, args) => { calls.push(args); return docker(args); } } }; return { runtime, calls }; } const project = (name) => { mkdirSync(join(home, name), { recursive: true }); writeFileSync(join(home, name, "project.record"), "x"); }; @@ -236,7 +236,7 @@ try { await runtime.close(); // open sweeps once in the background; status reports it and close waits for it const swept = await LayerFSRuntime.open({ home, image: IMAGE, daemon: "/bin/daemon", volumes: join(work, "volumes"), platform: "linux" }); - swept.platform = { ...swept.platform, docker: async (_s, args) => (args[0] === "version" ? "27.0.1" : args[0] === "ps" ? ps : "") }; + swept.platform = { ...swept.platform, docker: { ...swept.platform.docker, run: async (_s, args) => (args[0] === "version" ? "27.0.1" : args[0] === "ps" ? ps : "") } }; assert.equal((await swept.status()).sweep.state, "running"); await swept.close(); assert.equal(swept.swept.state, "done"); @@ -319,15 +319,15 @@ try { } else if (selected === "macos-worker") { // the macOS worker's start with a stubbed docker CLI and a stand-in worker const { fakeWorker } = await import("../../agent/test/fixture/fake-worker.mjs"); - const macos = (await import("../src/platform/macos/index.js")).default; + const macos = (await import("../src/platform/docker/macos.js")).default; const worker = await fakeWorker(undefined, { anySecret: true }); const bundle = join(work, "bundle"); mkdirSync(bundle); writeFileSync(join(bundle, "manifest.json"), JSON.stringify({ build_id: "build-1" })); const calls = []; let started = false; - const real = macos.docker; - macos.docker = async (_settings, args, options = {}) => { + const real = macos.docker.run; + macos.docker.run = async (_settings, args, options = {}) => { calls.push({ args, env: options.env }); const [verb] = args; if (verb === "inspect" && !started) throw Object.assign(new Error("inspect"), { stderr: "Error: No such object: layerfs-worker" }); @@ -372,7 +372,7 @@ try { await assert.rejects(macos.releaseStore(runtime.settings, { volume: "../x" }), { code: "InvalidInput" }); await runtime.close(); } finally { - macos.docker = real; + macos.docker.run = real; worker.close(); } } else if (selected === "worker-frames") { diff --git a/api/runtime/test/verify/runtime_real.mjs b/api/runtime/test/verify/runtime_real.mjs index 3ef19977d..e034a6ce2 100644 --- a/api/runtime/test/verify/runtime_real.mjs +++ b/api/runtime/test/verify/runtime_real.mjs @@ -26,7 +26,7 @@ const runtime = await LayerFSRuntime.open({ const docker = []; runtime.platform = { ...runtime.platform, - async docker(settings, args) { + docker: { ...runtime.platform.docker, async run(settings, args) { docker.push(args.slice(0, 2).join(" ")); // Init labels the volume (--label ...), so its name is the last argument if (args[0] === "volume" && args[1] === "create") { mkdirSync(join(volumes, args.at(-1), "_data"), { recursive: true }); return args.at(-1); } @@ -34,7 +34,7 @@ runtime.platform = { if (args[0] === "version") return "stub"; if (args[0] === "ps") return ""; throw new Error(`unexpected docker ${args.join(" ")}`); - }, + } }, }; const name = `rt-${Date.now().toString(36)}`; const source = mkdtempSync(join(tmpdir(), "layerfs-rt-")); From 3f28127edc8fffe366c7f6d1180e171db167c30a Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:00:40 +0800 Subject: [PATCH 21/37] runtime: Store hooks keyed by Store; createStore makes every Store volume (#527 step 10b) F3 (rest): the Store hooks took a project ({ name, volume }), so a Store-level call handed them a Store as if it were a project, and a vm: home's hooks read store.name as the name of a project's VM. A Store's volume was also made in two places with two behaviours: Init's makeStore (shared.js, no existence check) and store.create/start_load's makeVolume (store/calls.js, refusing a volume that exists). Now: - Every hook (createStore, storeHolders, releaseStoreHolders, releaseStore, removeStore) takes a Store { name, volume, legacy }; legacy marks the Store a project's own Init makes, named after it. - createStore replaces makeStore and makeVolume: on a Docker placement it makes the labelled volume (the project's own, labelled layerfs.project, or store-, labelled layerfs.store) and answers its name. Init, store.create and store.start_load all use it. - Behaviour change: Init now refuses Exists when its volume already exists, instead of creating over it (docker volume create reuses an existing volume); the refused Init makes and removes nothing. - The vm: hooks hold only a project's own Store (holderOf) and refuse any other Unsupported, with step 2's noHomeStores refusal, before any provider call. Step 2's homeStores guard in index.js still refuses the Store-level calls first; the hook refusal is the same refusal one layer down, not a second guard. api/docs/runtime.md describes the hooks. Deleted tests: none. Tests: runtime.mjs init expects the volume lookup before each create and adds an Init refused Exists on an existing volume; vm_placement.mjs stores adds the refusal of createStore, storeHolders, removeStore and releaseStore for a Store that is not a project's own, with no provider call made. Checks (each bounded at 120 s): node api/runtime/test/runtime.mjs surface, home-mode, projects, init, state, events, leftovers, sandboxes, volumes, transport-order, macos-worker, worker-frames, docker-default, worker-docker, stores, backend: all pass. node api/runtime/test/vm_placement.mjs settings, flow, two, bundle, delete, hosts, stores, apple-container, ssh, cleanup: all pass. node api/agent/test/{calls,exec_output,native_deployment}.mjs: pass; packaging.mjs surface, lifecycle, copy, sandbox, worker-route, transport-order: pass; packaging dispatch: FAIL before and after (needs a built layerfs.node, absent in this worktree). node --test api/cli/test/cli.test.mjs: pass. python3 tools/check_product_boundary.py: PASS. Production LOC: 123205 -> 123209 (delta +4) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 9b307f35cb and the staged tree a478c170c8; after: core 41405; engine 77511; api 4293; Co-Authored-By: Claude Opus 5.5 --- api/docs/runtime.md | 18 ++++-- api/runtime/src/platform/docker/macos.js | 4 +- api/runtime/src/platform/docker/stores.js | 56 ++++++++++--------- .../src/platform/docker/windows/index.js | 4 +- api/runtime/src/platform/vm/index.js | 47 ++++++++++------ api/runtime/src/project/delete.js | 2 +- api/runtime/src/project/init.js | 9 +-- api/runtime/src/store/calls.js | 4 +- api/runtime/src/store/sync.js | 2 +- api/runtime/src/store/volume.js | 24 ++++---- api/runtime/test/runtime.mjs | 31 +++++++--- api/runtime/test/vm_placement.mjs | 7 ++- 12 files changed, 127 insertions(+), 81 deletions(-) diff --git a/api/docs/runtime.md b/api/docs/runtime.md index 45d67d227..1188eeb06 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -132,9 +132,9 @@ lines from now on, or from `since`, each with `actor`, its trace file's name. `platform/docker/` for `local` (`linux.js`, `macos.js` and `windows/`: Docker on this host, in Docker Desktop's VM or in WSL2) and `platform/vm/` for `vm:`. Each platform object implements one interface (`endpoint`, -`status`, `start`, `restart`, `init`, `path`, the Store hooks `makeStore`, -`storeHolders`, `releaseStoreHolders` and `removeStore`, and the home and -disk helpers) and may declare capabilities instead of being named: +`status`, `start`, `restart`, `init`, `path`, the Store hooks `createStore`, +`storeHolders`, `releaseStoreHolders`, `releaseStore` and `removeStore`, and +the home and disk helpers) and may declare capabilities instead of being named: `initCounts: false` (macOS: this process cannot read Init's counts) and `uncertainInit: true` (Windows: any failed Init is kept and recorded, never cleaned up); `platform/vm/` implements the same interface over a VM @@ -149,6 +149,15 @@ volumes and their hooks, `stores.js`) and `disk` (the engine's volumes, Docker refuse there. Every helper reaches Docker through `runtime.platform.docker.run`, so a test replaces that one call. +The Store hooks are keyed by Store, `{ name, volume, legacy }` (#527 step +10b): `legacy` marks the Store a project's own Init makes, named after the +project; any other is a Store of the home. On a Docker placement +`createStore` makes the Store's labelled volume (the project's own volume, +labelled `layerfs.project`, or `store-`, labelled +`layerfs.store`) and refuses `Exists` for a volume that exists instead of +reusing it; Init, `store.create` and `store.start_load` all make their +volume through it. + - **Linux** runs Store calls in this process. There is no worker: `worker.start` and `worker.restart` are refused `InvalidInput`. Init installs the Store under Docker's volumes directory, so the process must be @@ -307,7 +316,8 @@ VM, so a call on the home's Stores or remotes has no VM to run in (#527 F3). `store.start_*` job, `store.unlink`, `store.check`, every `remote.*` call, `postgresql.status` and `project.start_init` with `{ store }` refuse `Unsupported` before any effect, and so does a client of a project in a -PostgreSQL Store. `store.list` still lists the home's records, with `bytes`, +PostgreSQL Store. The VM's Store hooks hold only a project's own Store and +refuse any other the same way. `store.list` still lists the home's records, with `bytes`, `open` and `heads` null. A project is made with `project.start_init(name, folder)` and removed with `project.delete`. diff --git a/api/runtime/src/platform/docker/macos.js b/api/runtime/src/platform/docker/macos.js index 51f53dda6..cf3d99d1b 100644 --- a/api/runtime/src/platform/docker/macos.js +++ b/api/runtime/src/platform/docker/macos.js @@ -138,8 +138,8 @@ const platform = { /** Before a volume is deleted, the worker closes its cached Store of it, * as on Windows and `vm:` (#527 §10: it kept the deleted Store open until * its quiet minute ended). With no worker endpoint nothing holds it. */ - async releaseStore(settings, project) { - const { volume } = project; + async releaseStore(settings, store) { + const { volume } = store; if (!/^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/.test(volume)) throw refuse("InvalidInput", "invalid Store volume name"); let info; try { info = JSON.parse(readFileSync(endpointFile(settings.home), "utf8")); } catch { return; } diff --git a/api/runtime/src/platform/docker/stores.js b/api/runtime/src/platform/docker/stores.js index cf050f17e..3054a5310 100644 --- a/api/runtime/src/platform/docker/stores.js +++ b/api/runtime/src/platform/docker/stores.js @@ -1,47 +1,49 @@ // Store volumes on the `local` placement: a Store is one labelled Docker // volume, its holders are containers, and removing the Store removes the -// volume. The four Store hooks Init and Store removal use (`hooks`), which a -// `vm:` placement implements over the project's VM instead (vm/index.js), -// and the volume a Store-level create makes. Each hook takes the runtime and -// the owner `{ name, volume }`, and uses that platform's own Docker CLI call -// (Windows goes through WSL). Moved from platform/shared.js and -// store/calls.js (#527 step 10a). +// volume. These are the four Store hooks (`hooks`) Init, Store creation and +// Store removal use, which a `vm:` placement implements over the project's +// VM instead (vm/index.js). Each is keyed by Store, `{ name, volume, legacy }`: +// `legacy` marks the Store a project's own Init makes, named after it (#506); +// any other is a Store of the home. Each uses that platform's own Docker CLI +// call (Windows goes through WSL). import { refuse } from "../shared.js"; const docker = (runtime, args, options = {}) => runtime.platform.docker.run(runtime.settings, args, options); -/** Init makes the project's Store volume before installing into it. */ -export async function makeStore(runtime, project) { +/** + * Makes the Store's labelled volume and answers its name: a project's own + * Store gets the volume its Init named (`store.volume`, labelled + * layerfs.project), any other `store-` (labelled + * layerfs.store). A volume that exists is refused, not reused (docker + * volume create would reuse it). Docker sets labels only at create, and they + * tell runtime.volume.list whose the volume is. + */ +export async function createStore(runtime, store) { const { settings } = runtime; - await docker(runtime, ["volume", "create", "--label", "layerfs.role=store", "--label", `layerfs.home=${settings.home}`, "--label", `layerfs.project=${project.name}`, project.volume], { timeout: 30_000 }); + const volume = store.legacy ? store.volume : `${settings.containerPrefix}store-${store.name}`; + const exists = await docker(runtime, ["volume", "inspect", "--format", "{{.Name}}", volume]).then(() => true, () => false); + if (exists) throw refuse("Exists", `the volume ${volume} exists; remove it, or name the ${store.legacy ? "project" : "Store"} differently`); + const owner = store.legacy ? `layerfs.project=${store.name}` : `layerfs.store=${store.name}`; + await docker(runtime, ["volume", "create", "--label", "layerfs.role=store", "--label", `layerfs.home=${settings.home}`, "--label", owner, volume], { timeout: 30_000 }); + return volume; } -/** The containers holding the volume now: [{ id, state }], running or not. */ -export async function storeHolders(runtime, project) { - const rows = await docker(runtime, ["ps", "-a", "--filter", `volume=${project.volume}`, "--format", "{{.ID}} {{.State}}"]); +/** The containers holding the Store's volume now: [{ id, state }], running or not. */ +export async function storeHolders(runtime, store) { + const rows = await docker(runtime, ["ps", "-a", "--filter", `volume=${store.volume}`, "--format", "{{.ID}} {{.State}}"]); return rows.split("\n").filter(Boolean).map((line) => { const [id, state] = line.split(" "); return { id, state }; }); } /** Removes the volume's holders: the running ones only when `force`. */ -export async function releaseStoreHolders(runtime, project, holders, { force = false } = {}) { +export async function releaseStoreHolders(runtime, store, holders, { force = false } = {}) { if (!holders.length) return; await docker(runtime, ["rm", ...(force ? ["-f"] : []), ...holders.map((holder) => holder.id)], { timeout: 30_000 }); } -/** The volume itself, once nothing holds it. */ -export async function removeStore(runtime, project) { - await docker(runtime, ["volume", "rm", project.volume], { timeout: 30_000 }); +/** The Store's volume itself, once nothing holds it. */ +export async function removeStore(runtime, store) { + await docker(runtime, ["volume", "rm", store.volume], { timeout: 30_000 }); } /** The platform-level Store hooks, as every Docker placement exposes them. */ -export const hooks = { makeStore, storeHolders, releaseStoreHolders, removeStore }; - -/** Makes a Store's labelled volume, refusing one that exists (docker volume create would reuse it). */ -export async function makeVolume(runtime, name) { - const { settings } = runtime; - const volume = `${settings.containerPrefix}store-${name}`; - const exists = await docker(runtime, ["volume", "inspect", "--format", "{{.Name}}", volume]).then(() => true, () => false); - if (exists) throw refuse("Exists", `the volume ${volume} exists; remove it, or name the Store differently`); - await docker(runtime, ["volume", "create", "--label", "layerfs.role=store", "--label", `layerfs.home=${settings.home}`, "--label", `layerfs.store=${name}`, volume], { timeout: 30_000 }); - return volume; -} +export const hooks = { createStore, storeHolders, releaseStoreHolders, removeStore }; diff --git a/api/runtime/src/platform/docker/windows/index.js b/api/runtime/src/platform/docker/windows/index.js index 60425bf1d..bead6bf85 100644 --- a/api/runtime/src/platform/docker/windows/index.js +++ b/api/runtime/src/platform/docker/windows/index.js @@ -145,8 +145,8 @@ export default { // rm gets one checked child directory as an argv item, never shell text async removeHome(settings, name) { await wsl(settings, ["rm", "-rf", "--", projectHome(settings.wsl, name)], { timeout: 10_000 }); }, /** Before a volume is deleted, the worker closes its cached Store of it. */ - async releaseStore(settings, project) { - const { volume } = project; + async releaseStore(settings, store) { + const { volume } = store; if (!/^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/.test(volume)) throw refuse("InvalidInput", "invalid Store volume name"); const info = JSON.parse(readFileSync(endpointFile(settings.home), "utf8")); const answer = await connection(info).call({ fn: "releaseStore", args: { home: settings.wsl.home, storePath: `/var/lib/docker/volumes/${volume}/_data/global/store.sqlite` } }); diff --git a/api/runtime/src/platform/vm/index.js b/api/runtime/src/platform/vm/index.js index e801db289..164ba4bad 100644 --- a/api/runtime/src/platform/vm/index.js +++ b/api/runtime/src/platform/vm/index.js @@ -326,42 +326,55 @@ function exists(settings, project) { } catch { return false; } } -/** The four hooks Init and project removal use instead of host Docker (§4.2 B2, B9). */ +/** + * The project whose VM holds `store`: a VM holds only the Store its own + * project's Init made (`legacy`, named after the project). Any other Store of + * the home is refused before any effect (#527 F3), until a VM home can hold + * Stores of its own. + */ +function holderOf(settings, store, what) { + if (!store?.legacy) throw noHomeStores(settings.placement.name, what); + return checked(store.name); +} + +/** The four Store hooks Init and Store removal use instead of host Docker (§4.2 B2, B9), keyed by Store. */ const stores = { /** * Init examines the Store's directory before it installs into it (the kernel * guard checks its filesystem), so the project's Store disk is mounted and * its directory made here, as a Docker volume is on a local placement. */ - async makeStore(runtime, project) { - const provider = providerOf(runtime.settings), name = vmNameOf(runtime.settings, project.name); + async createStore(runtime, store) { + const project = holderOf(runtime.settings, store, "a Store that is not one project's own"); + const provider = providerOf(runtime.settings), name = vmNameOf(runtime.settings, project); const { code, stderr } = await provider.exec(name, ["sh", "-c", "umask 022 && mkdir -p \"$1\" && chmod 755 \"$1\"", "sh", GUEST.store]); if (code !== 0) throw refuse("Failed", `could not make ${GUEST.store} in ${name}: ${stderr.trim()}`, null); + return store.volume; }, /** The Sandboxes holding the project's Store now: its running Sandboxes, by number. A stopped VM runs none. */ - async storeHolders(runtime, project) { - const { settings } = runtime, provider = providerOf(settings); - const found = await provider.inspect(vmNameOf(settings, project.name)); + async storeHolders(runtime, store) { + const { settings } = runtime, project = holderOf(settings, store, "a Store's holders"), provider = providerOf(settings); + const found = await provider.inspect(vmNameOf(settings, project)); if (!found || found.state !== "running") return []; - const held = await runtime.clients.use(project, (client) => client.project.list_sandboxes(1000, 0)); + const held = await runtime.clients.use({ name: project, volume: store.volume }, (client) => client.project.list_sandboxes(1000, 0)); return held.items.map(({ sandbox }) => ({ id: sandbox, state: "running" })); }, /** Stops them the way the SDK does: `sandbox.close`, one per Sandbox. */ - async releaseStoreHolders(runtime, project, holders) { - const { settings } = runtime, provider = providerOf(settings); - const found = await provider.inspect(vmNameOf(settings, project.name)); + async releaseStoreHolders(runtime, store, holders) { + const { settings } = runtime, project = holderOf(settings, store, "a Store's holders"), provider = providerOf(settings); + const found = await provider.inspect(vmNameOf(settings, project)); if (!found || found.state !== "running") return; - await runtime.clients.use(project, async (client) => { + await runtime.clients.use({ name: project, volume: store.volume }, async (client) => { for (const holder of holders) await client.sandbox.close(holder.id); }); }, /** Removes the project's VM and its Store disk: no Store copy is left anywhere. */ - async removeStore(runtime, project) { - const { settings } = runtime, provider = providerOf(settings), name = vmNameOf(settings, project.name); + async removeStore(runtime, store) { + const { settings } = runtime, project = holderOf(settings, store, "a Store removal that is not one project's own"), provider = providerOf(settings), name = vmNameOf(settings, project); const found = await provider.inspect(name); if (found) await provider.remove(name); - await provider.removeStore(storeNameOf(settings, project.name)); - rmSync(endpointFile(settings.home, project.name), { force: true }); + await provider.removeStore(storeNameOf(settings, project)); + rmSync(endpointFile(settings.home, project), { force: true }); }, }; @@ -434,8 +447,8 @@ export function vmPlatform(settingName) { rmSync(join(settings.home, name), { recursive: true, force: true }); }, /** Before a Store is deleted, the project's worker closes the Store it holds open. */ - async releaseStore(settings, project) { - const info = endpoint(settings, project.name); + async releaseStore(settings, store) { + const info = endpoint(settings, holderOf(settings, store, "a Store release that is not one project's own")); if (!info) return; const answer = await connection(info).call({ fn: "releaseStore", args: { home: GUEST.home, storePath: storeFile() } }); if (answer.refused) throw refuse(answer.refused.code, answer.refused.message, answer.refused.detail); diff --git a/api/runtime/src/project/delete.js b/api/runtime/src/project/delete.js index 88527f0f3..944455199 100644 --- a/api/runtime/src/project/delete.js +++ b/api/runtime/src/project/delete.js @@ -42,7 +42,7 @@ export async function deleteProject(runtime, name, options = {}) { if (typeof volume !== "string" || !/^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/.test(volume)) throw refuse("InvalidInput", `the runtime has no record of ${name}'s volume; name it as { volume }`); if (!project) throw refuse("NoSuchProject", `no LayerFS project named ${name}`); await runtime.clients.forget(name); - await removeVolume(runtime, { name, volume }, options); + await removeVolume(runtime, { name, volume, legacy: true }, options); await forgetOwn(runtime, name); if (entries(settings).some((s) => s.name === name)) drop(settings, name); return { kind: "Deleted", project: name, volume }; diff --git a/api/runtime/src/project/init.js b/api/runtime/src/project/init.js index 33058cf10..34ec82551 100644 --- a/api/runtime/src/project/init.js +++ b/api/runtime/src/project/init.js @@ -101,9 +101,10 @@ export async function runInit(runtime, prepared, report = () => {}) { const totals = await scanSource(project.source, (counts) => report({ scanned: counts })); report({ step: "volume", totals }); await platform.init(settings, project); - // its owner, for runtime.volume.list on a local placement (Docker sets a - // volume's labels only when it creates it); a VM's Store is a directory - await platform.makeStore(runtime, project); + // the project's own Store (a labelled volume on a local placement, a + // directory on the project's VM's disk); an existing volume is refused + const own = { name: project.name, volume: project.volume, legacy: true }; + await platform.createStore(runtime, own); report({ step: "import" }); let client; try { @@ -117,7 +118,7 @@ export async function runInit(runtime, prepared, report = () => {}) { throw error; } if (error?.code !== "Exists") await platform.removeHome(settings, project.name).catch(() => {}); - await platform.removeStore(runtime, project).catch(() => {}); + await platform.removeStore(runtime, own).catch(() => {}); throw error; } await client.close(); diff --git a/api/runtime/src/store/calls.js b/api/runtime/src/store/calls.js index 17c26e37b..a6c18720c 100644 --- a/api/runtime/src/store/calls.js +++ b/api/runtime/src/store/calls.js @@ -112,7 +112,7 @@ export async function create(runtime, name) { const { settings, platform } = runtime; await unused(runtime, name); await platform.init(settings); - const volume = await platform.docker.stores.makeVolume(runtime, name); + const volume = await platform.createStore(runtime, { name }); const store = { name, kind: "sqlite", volume, link: null, created: Date.now(), projects: [] }; try { await call("runtime.store.create", storeFields(runtime, store)); @@ -132,7 +132,7 @@ export async function remove(runtime, name, options = {}) { await runtime.clients.forgetStore(name); if (store.kind === "sqlite") { if (!store.volume) throw refuse("InvalidInput", `the runtime has no record of Store ${name}'s volume`); - await removeVolume(runtime, { name, volume: store.volume }, options); + await removeVolume(runtime, { name, volume: store.volume, legacy: !!store.legacy }, options); } await call("runtime.store.forget", { home: callHome(settings), store: name }); if (store.legacy) await forgetOwn(runtime, name); diff --git a/api/runtime/src/store/sync.js b/api/runtime/src/store/sync.js index 0d0fd29e2..267d22838 100644 --- a/api/runtime/src/store/sync.js +++ b/api/runtime/src/store/sync.js @@ -201,7 +201,7 @@ export async function start_load(runtime, jobs, remoteName, options = {}) { return jobs.begin({ kind: "load", store: name, ...from }, async (job) => { try { await runtime.platform.init(runtime.settings); - const volume = await runtime.platform.docker.stores.makeVolume(runtime, name); + const volume = await runtime.platform.createStore(runtime, { name }); const store = { name, kind: "sqlite", volume, link: null, created: Date.now(), projects: [] }; let answer; try { diff --git a/api/runtime/src/store/volume.js b/api/runtime/src/store/volume.js index ee697de23..5aa08c202 100644 --- a/api/runtime/src/store/volume.js +++ b/api/runtime/src/store/volume.js @@ -2,21 +2,21 @@ // Sandbox) refuses Busy unless `stopSandboxes`; stopped containers left by // failed starts and idle Sandboxes go with it. Moved from project/delete.js // (#506), where it was a project's own volume. The four Store hooks are the -// platform's: Docker volumes and containers on a local placement, the -// project's VM, its disk and its namespace Sandboxes under `vm:` (#515). -// One attempt per step; a failed step leaves the rest in place. +// platform's, keyed by Store: Docker volumes and containers on a local +// placement (platform/docker/stores.js), the project's VM, its disk and its +// namespace Sandboxes under `vm:` (#515), which holds only a project's own +// Store. One attempt per step; a failed step leaves the rest in place. import { LayerFSError } from "@layerfs/agent"; import { STOPPED } from "../platform/docker/sandboxes.js"; -/** `owner` is `{ name, volume }`: the project or Store the volume holds. A - * `vm:` placement's Store is the project's own VM and disk, so the hooks - * name the project as well as its volume. */ -export async function removeVolume(runtime, owner, options = {}) { +/** `store` is `{ name, volume, legacy }`: `legacy` for the Store a project's own Init made, named after + * that project (a `vm:` placement's Store is that project's VM and disk), else a Store of the home. */ +export async function removeVolume(runtime, store, options = {}) { const { settings, platform } = runtime; - const holders = await platform.storeHolders(runtime, owner); + const holders = await platform.storeHolders(runtime, store); const users = holders.filter((holder) => !STOPPED.has(holder.state)).length; - if (users && !options.stopSandboxes) throw new LayerFSError("Busy", `${users} running container(s) use ${owner.volume}; a Sandbox closes 2 minutes after its last Workspace is unmounted, or pass stopSandboxes`, null); - await platform.releaseStoreHolders(runtime, owner, holders, { force: users > 0 }); - await platform.releaseStore(settings, owner); - await platform.removeStore(runtime, owner); + if (users && !options.stopSandboxes) throw new LayerFSError("Busy", `${users} running container(s) use ${store.volume}; a Sandbox closes 2 minutes after its last Workspace is unmounted, or pass stopSandboxes`, null); + await platform.releaseStoreHolders(runtime, store, holders, { force: users > 0 }); + await platform.releaseStore(settings, store); + await platform.removeStore(runtime, store); } diff --git a/api/runtime/test/runtime.mjs b/api/runtime/test/runtime.mjs index cfc76abf7..49399f899 100644 --- a/api/runtime/test/runtime.mjs +++ b/api/runtime/test/runtime.mjs @@ -100,7 +100,12 @@ try { mkdirSync(join(source, "src"), { recursive: true }); writeFileSync(join(source, "README.md"), "hello\n"); writeFileSync(join(source, "src", "a.js"), "1\n"); - const { runtime, calls } = await opened(); + // no volume exists, unless `taken` says so + let taken = false; + const { runtime, calls } = await opened((args) => { + if (args[0] === "volume" && args[1] === "inspect" && !taken) throw Object.assign(new Error("no such volume"), { stderr: "Error: No such volume" }); + return ""; + }); // checked before anything changes for (const [name, folder, options, code] of [["Bad", source, {}, "InvalidInput"], ["shop", "relative", {}, "InvalidInput"], ["shop", join(work, "none"), {}, "InvalidInput"], ["shop", source, { image: "latest" }, "InvalidInput"], ...[0, -5, 2.5, "60000", null].map((timeout) => ["shop", source, { timeout }, "InvalidInput"])]) { await assert.rejects(runtime.project.start_init(name, folder, options), { code }); @@ -120,11 +125,14 @@ try { const done = await until(await runtime.project.start_init("shop", source)); assert.equal(done.step, "done", JSON.stringify(done.error)); assert.deepEqual(done.totals, { entries: 4, files: 2, bytes: 8 }); - assert.equal(calls[0].join(" "), `volume create --label layerfs.role=store --label layerfs.home=${home} --label layerfs.project=shop ${calls[0].at(-1)}`); - assert.match(calls[0].at(-1), /^layerfs-shop-store-[0-9a-z]+$/); + // the project's own Store: its volume is looked for (and must not exist), then made with its labels + assert.deepEqual(calls[0].slice(0, 2), ["volume", "inspect"]); + assert.equal(calls[1].join(" "), `volume create --label layerfs.role=store --label layerfs.home=${home} --label layerfs.project=shop ${calls[1].at(-1)}`); + assert.match(calls[1].at(-1), /^layerfs-shop-store-[0-9a-z]+$/); + assert.equal(calls[0].at(-1), calls[1].at(-1)); const init = native.args[native.calls.lastIndexOf("project.init")]; - assert.deepEqual([init.path, init.name, init.storePath, init.deploy.volume], [source, "shop", join(work, "volumes", calls[0].at(-1), "_data/global/store.sqlite"), calls[0].at(-1)]); - assert.equal((await runtime.project.list()).find((p) => p.name === "shop").volume, calls[0].at(-1)); + assert.deepEqual([init.path, init.name, init.storePath, init.deploy.volume], [source, "shop", join(work, "volumes", calls[1].at(-1), "_data/global/store.sqlite"), calls[1].at(-1)]); + assert.equal((await runtime.project.list()).find((p) => p.name === "shop").volume, calls[1].at(-1)); assert.equal(init.timeoutMs, 300_000, "no timeout: LayerFS.init's 300 s default, none of the runtime's own"); // a timeout passes through to LayerFS.init as timeoutMs; the record keeps none calls.length = 0; @@ -137,21 +145,28 @@ try { calls.length = 0; const late = await until(await runtime.project.start_init("late", source, { timeout: 1 })); assert.deepEqual([late.step, late.error.code], ["failed", "Failed"]); - assert.deepEqual(calls.map((c) => c.slice(0, 2)), [["volume", "create"], ["volume", "rm"]]); + assert.deepEqual(calls.map((c) => c.slice(0, 2)), [["volume", "inspect"], ["volume", "create"], ["volume", "rm"]]); delete native.initRefusal; // a failed Init removes what it made; an uncertain one keeps it and is recorded native.initRefusal = { code: "InvalidInput", message: "Mode", detail: null }; calls.length = 0; const failed = await until(await runtime.project.start_init("bad", source)); assert.deepEqual([failed.step, failed.error.code], ["failed", "InvalidInput"]); - assert.deepEqual(calls.map((c) => c.slice(0, 2)), [["volume", "create"], ["volume", "rm"]]); + assert.deepEqual(calls.map((c) => c.slice(0, 2)), [["volume", "inspect"], ["volume", "create"], ["volume", "rm"]]); native.initRefusal = { code: "Unknown", message: "lost", detail: null }; calls.length = 0; const unsure = await until(await runtime.project.start_init("unsure", source)); assert.equal(unsure.error.code, "Unknown"); - assert.deepEqual(calls.map((c) => c.slice(0, 2)), [["volume", "create"]], "nothing is removed on a guess"); + assert.deepEqual(calls.map((c) => c.slice(0, 2)), [["volume", "inspect"], ["volume", "create"]], "nothing is removed on a guess"); assert.equal(JSON.parse(readFileSync(join(home, ".runtime", "init-failures.jsonl"), "utf8").trim()).project.name, "unsure"); delete native.initRefusal; + // an existing volume is refused, not reused, and left as it was (#527 step 10b) + taken = true; + calls.length = 0; + const clash = await until(await runtime.project.start_init("clash", source)); + assert.deepEqual([clash.step, clash.error.code], ["failed", "Exists"]); + assert.deepEqual(calls.map((c) => c.slice(0, 2)), [["volume", "inspect"]], "no volume is made or removed"); + assert.equal((await runtime.project.list()).some((p) => p.name === "clash"), false); await runtime.close(); } else if (selected === "state") { const { runtime } = await opened(); diff --git a/api/runtime/test/vm_placement.mjs b/api/runtime/test/vm_placement.mjs index 1d138fc28..1b765d833 100644 --- a/api/runtime/test/vm_placement.mjs +++ b/api/runtime/test/vm_placement.mjs @@ -263,7 +263,7 @@ try { assert.deepEqual(listed.vms.map((vm) => [vm.project, vm.state, vm.worker.port]).sort(), [["blog", "running", blog.port], ["shop", "running", shop.port]]); // the hook project.delete uses takes that project's VM and disk, and nothing else // (the whole call, a Sandbox closing included, is vm_real.mjs's, with a real VM) - await runtime.platform.removeStore(runtime, { name: "blog", volume: "lfs-blog-store-1" }); + await runtime.platform.removeStore(runtime, { name: "blog", volume: "lfs-blog-store-1", legacy: true }); assert.equal(existsSync(join(state, "vms", `${vmName("blog")}.json`)), false, "the project's VM is gone"); assert.ok(calls(state).some((argv) => argv[0] === "volume" && argv[1] === "remove" && argv[2] === storeName("blog"))); assert.equal(existsSync(join(state, "vms", `${vmName("shop")}.json`)), true, "the other project's VM is untouched"); @@ -395,6 +395,11 @@ try { // map every Store of the home to the one guest path each VM holds its own Store at await assert.rejects(runtime.platform.init(runtime.settings), refused); assert.throws(() => runtime.platform.storePath(runtime.settings, "lfs-shop-store-1"), refused); + // the Store hooks are keyed by Store, and a VM holds only its project's own (#527 step 10b) + for (const hook of ["createStore", "storeHolders", "removeStore"]) { + await assert.rejects(runtime.platform[hook](runtime, { name: "fresh", volume: "lfs-store-fresh" }), refused, hook); + } + await assert.rejects(runtime.platform.releaseStore(runtime.settings, { name: "fresh", volume: "lfs-store-fresh" }), refused); // a PostgreSQL project is refused before its client is made await assert.rejects(runtime.project.get_state("pga", undefined, { store: "pgs", url }), { code: "Unsupported", message: /PostgreSQL Store pgs.*vm:microsandbox/ }); // nothing reached the provider: no VM, no disk, no copy From 9a241c04f2de0b572eedd7ee870127c57c3878a9 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:01:09 +0800 Subject: [PATCH 22/37] runtime: F11's duplicates land once (#527 step 10c) Move only, no behaviour change. Each duplicate of F11 now has one home: - STOPPED: platform/docker/sandboxes.js; project/delete.js's copy goes. - Docker's volumes directory and the Store file inside a volume: VOLUMES and volumeStore in platform/docker/index.js, used by linux.js (settings.volumes), macos.js, windows/ (storePath and releaseStore) and the settings.volumes default. - df -kP parsing: dfFree in platform/shared.js, used by macos.js and windows/. The three VM providers (microsandbox.js, apple-container.js, ssh.js) keep their own copy for now: platform/vm/ is being extended in parallel (vm:lima, vm:firecracker), and they can adopt dfFree after that merge. - The worker endpoint read (macOS status and releaseStore, Windows status, vm endpoint) and the releaseStore call (macOS, Windows, vm): readEndpoint and releaseStore in worker/call.js. Windows' releaseStore keeps its own read, which throws when no endpoint exists, as before. - homeNames and removeHome of linux, macos and vm: localHome in platform/shared.js. Deleted tests: none. Checks (each bounded at 120 s): node api/runtime/test/runtime.mjs surface, home-mode, projects, init, state, events, leftovers, sandboxes, volumes, transport-order, macos-worker, worker-frames, docker-default, worker-docker, stores, backend: all pass. node api/runtime/test/vm_placement.mjs settings, flow, two, bundle, delete, hosts, stores, apple-container, ssh, cleanup: all pass. node api/agent/test/{calls,exec_output,native_deployment}.mjs: pass; packaging.mjs surface, lifecycle, copy, sandbox, worker-route, transport-order: pass; packaging dispatch: FAIL before and after (needs a built layerfs.node, absent in this worktree). node --test api/cli/test/cli.test.mjs: pass. python3 tools/check_product_boundary.py: PASS. The Windows platform module only loads here (no WSL on this host). Production LOC: 123209 -> 123216 (delta +7) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 3f28127edc and the staged tree 8b28c4da73; after: core 41405; engine 77511; api 4300; Co-Authored-By: Claude Opus 5.5 --- api/runtime/src/platform/docker/index.js | 6 ++++ api/runtime/src/platform/docker/linux.js | 12 ++++---- api/runtime/src/platform/docker/macos.js | 28 +++++++------------ .../src/platform/docker/windows/index.js | 20 ++++++------- api/runtime/src/platform/shared.js | 14 +++++++++- api/runtime/src/platform/vm/index.js | 14 ++++------ api/runtime/src/project/delete.js | 4 +-- api/runtime/src/settings.js | 3 +- api/runtime/src/worker/call.js | 20 ++++++++++++- 9 files changed, 71 insertions(+), 50 deletions(-) diff --git a/api/runtime/src/platform/docker/index.js b/api/runtime/src/platform/docker/index.js index f0217bde3..7d2f29ea6 100644 --- a/api/runtime/src/platform/docker/index.js +++ b/api/runtime/src/platform/docker/index.js @@ -16,6 +16,12 @@ import * as disk from "./disk.js"; import * as sandboxes from "./sandboxes.js"; import * as stores from "./stores.js"; +/** Docker's volumes directory where the engine runs: Docker Desktop's VM, WSL2 and, by default (settings.volumes), Linux. */ +export const VOLUMES = "/var/lib/docker/volumes"; + +/** The Store file inside the Docker volume `volume` under the volumes directory `volumes`. */ +export const volumeStore = (volumes, volume) => `${volumes}/${volume}/_data/global/store.sqlite`; + /** One Docker CLI call on the configured engine socket (Linux, macOS): its stdout, trimmed. */ export const socketRun = (settings, args, options = {}) => execute("docker", ["-H", `unix://${settings.docker}`, ...args], { timeout: 5000, ...options }).then((r) => r.stdout.trim()); diff --git a/api/runtime/src/platform/docker/linux.js b/api/runtime/src/platform/docker/linux.js index cd6b2c0f2..ef2b6fea2 100644 --- a/api/runtime/src/platform/docker/linux.js +++ b/api/runtime/src/platform/docker/linux.js @@ -2,10 +2,9 @@ // there is no worker (AGENTS.md). Init installs the Store straight into the // project volume's directory under Docker's volumes directory, which Docker // keeps root-only: `init` checks this process can write there first. -import { accessSync, constants, existsSync, rmSync, statSync, statfsSync } from "node:fs"; -import { join } from "node:path"; -import { homeNames, refuse } from "../shared.js"; -import { dockerGroup, socketRun } from "./index.js"; +import { accessSync, constants, existsSync, statSync, statfsSync } from "node:fs"; +import { localHome, refuse } from "../shared.js"; +import { dockerGroup, socketRun, volumeStore } from "./index.js"; import { hooks } from "./stores.js"; const NO_WORKER = "Linux runs Store calls in-process; there is no worker"; @@ -30,9 +29,8 @@ export default { path: (settings, hostPath) => hostPath, docker: dockerGroup(socketRun), ...hooks, - storePath: (settings, volume) => `${settings.volumes}/${volume}/_data/global/store.sqlite`, - homeNames: (settings) => homeNames(settings.home), - async removeHome(settings, name) { rmSync(join(settings.home, name), { recursive: true, force: true }); }, + storePath: (settings, volume) => volumeStore(settings.volumes, volume), + ...localHome, async releaseStore() {}, async free(settings) { try { const s = statfsSync(settings.volumes); return s.bavail * s.bsize; } catch { return null; } diff --git a/api/runtime/src/platform/docker/macos.js b/api/runtime/src/platform/docker/macos.js index cf3d99d1b..da1c0f52f 100644 --- a/api/runtime/src/platform/docker/macos.js +++ b/api/runtime/src/platform/docker/macos.js @@ -14,12 +14,10 @@ import { randomBytes } from "node:crypto"; import { mkdirSync, readFileSync, rmSync } from "node:fs"; import { join } from "node:path"; -import { connection } from "@layerfs/agent/internal"; -import { endpointFile, homeNames, ping, ready, refuse, writeEndpoint } from "../shared.js"; -import { dockerGroup, socketRun } from "./index.js"; +import { dfFree, endpointFile, localHome, ping, ready, refuse, writeEndpoint } from "../shared.js"; +import { readEndpoint, releaseStore } from "../../worker/call.js"; +import { dockerGroup, socketRun, VOLUMES, volumeStore } from "./index.js"; import { hooks } from "./stores.js"; - -const VOLUMES = "/var/lib/docker/volumes"; const WORKER_PORT = 7070; const READY_MS = 15_000, RESTART_MS = 20_000; /** Where the worker reaches a daemon's loopback-published port: the Mac. */ @@ -54,8 +52,7 @@ async function status(settings) { const [running, label, startedAt, home] = row.split("\t"); const worker = { name: name(settings), state: running === "true" ? "running" : "stopped", build: label, expected: settings.bundle ? build(settings) : null, home, startedAt }; if (worker.state === "running") { - let info = null; - try { info = JSON.parse(readFileSync(endpointFile(settings.home), "utf8")); } catch { /* not written yet */ } + const info = readEndpoint(endpointFile(settings.home)); worker.answering = !!(info && (await ping(info))?.ready); } return { worker }; @@ -132,27 +129,22 @@ const platform = { path: (settings, hostPath) => hostPath, docker: dockerGroup(socketRun), ...hooks, - storePath: (settings, volume) => `${VOLUMES}/${volume}/_data/global/store.sqlite`, - homeNames: (settings) => homeNames(settings.home), - async removeHome(settings, project) { rmSync(join(settings.home, project), { recursive: true, force: true }); }, + storePath: (settings, volume) => volumeStore(VOLUMES, volume), + ...localHome, /** Before a volume is deleted, the worker closes its cached Store of it, * as on Windows and `vm:` (#527 §10: it kept the deleted Store open until * its quiet minute ended). With no worker endpoint nothing holds it. */ async releaseStore(settings, store) { const { volume } = store; if (!/^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/.test(volume)) throw refuse("InvalidInput", "invalid Store volume name"); - let info; - try { info = JSON.parse(readFileSync(endpointFile(settings.home), "utf8")); } catch { return; } - if (!(await ping(info))) return; - const answer = await connection(info).call({ fn: "releaseStore", args: { home: settings.home, storePath: `${VOLUMES}/${volume}/_data/global/store.sqlite` } }); - if (answer.refused) throw refuse(answer.refused.code, answer.refused.message, answer.refused.detail); + const info = readEndpoint(endpointFile(settings.home)); + if (!info || !(await ping(info))) return; + await releaseStore(info, settings.home, volumeStore(VOLUMES, volume)); }, /** Free bytes of Docker's volume disk, as the worker sees it. */ async free(settings) { try { - const out = await docker(settings, ["exec", name(settings), "df", "-kP", VOLUMES]); - const kb = Number(out.split("\n").pop().trim().split(/\s+/)[3]); - return Number.isFinite(kb) ? kb * 1024 : null; + return dfFree(await docker(settings, ["exec", name(settings), "df", "-kP", VOLUMES])); } catch { return null; } }, }; diff --git a/api/runtime/src/platform/docker/windows/index.js b/api/runtime/src/platform/docker/windows/index.js index bead6bf85..f61ccf51b 100644 --- a/api/runtime/src/platform/docker/windows/index.js +++ b/api/runtime/src/platform/docker/windows/index.js @@ -10,9 +10,10 @@ import { createHash, randomBytes } from "node:crypto"; import { createWriteStream, mkdirSync, readFileSync, rmSync } from "node:fs"; import { join, posix } from "node:path"; import { fileURLToPath } from "node:url"; -import { connection, frame, readFrames } from "@layerfs/agent/internal"; -import { endpointFile, ping, ready, refuse, run, writeEndpoint } from "../../shared.js"; -import { dockerGroup } from "../index.js"; +import { frame, readFrames } from "@layerfs/agent/internal"; +import { dfFree, endpointFile, ping, ready, refuse, run, writeEndpoint } from "../../shared.js"; +import { readEndpoint, releaseStore } from "../../../worker/call.js"; +import { dockerGroup, VOLUMES, volumeStore } from "../index.js"; import { hooks } from "../stores.js"; import { absoluteLinux, projectHome, wsl, wslArgs } from "./paths.js"; @@ -90,8 +91,8 @@ async function launch(settings, held) { } async function status(settings) { - let info; - try { info = JSON.parse(readFileSync(endpointFile(settings.home), "utf8")); } catch { return { worker: { name: "wsl-worker", state: "missing" } }; } + const info = readEndpoint(endpointFile(settings.home)); + if (!info) return { worker: { name: "wsl-worker", state: "missing" } }; const reply = await ping(info); return { worker: { name: "wsl-worker", state: reply?.ready ? "running" : "unknown", answering: !!reply?.ready, active: reply?.active, stores: reply?.stores, build: reply?.build, startedAt: info.startedAt } }; } @@ -137,7 +138,7 @@ export default { path: (settings, hostPath) => hostPath, docker: dockerGroup(wslRun), ...hooks, - storePath: (settings, volume) => `/var/lib/docker/volumes/${volume}/_data/global/store.sqlite`, + storePath: (settings, volume) => volumeStore(VOLUMES, volume), async homeNames(settings) { const { stdout } = await wsl(settings, ["find", settings.wsl.home, "-mindepth", "2", "-maxdepth", "2", "-name", "project.record"], { timeout: 5000 }).catch(() => ({ stdout: "" })); return stdout.split("\n").filter(Boolean).map((line) => posix.basename(posix.dirname(line))).sort(); @@ -148,15 +149,14 @@ export default { async releaseStore(settings, store) { const { volume } = store; if (!/^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/.test(volume)) throw refuse("InvalidInput", "invalid Store volume name"); + // the worker this process started wrote it: a missing endpoint is an error here const info = JSON.parse(readFileSync(endpointFile(settings.home), "utf8")); - const answer = await connection(info).call({ fn: "releaseStore", args: { home: settings.wsl.home, storePath: `/var/lib/docker/volumes/${volume}/_data/global/store.sqlite` } }); - if (answer.refused) throw refuse(answer.refused.code, answer.refused.message, answer.refused.detail); + await releaseStore(info, settings.wsl.home, volumeStore(VOLUMES, volume)); }, async free(settings) { try { const { stdout } = await wsl(settings, ["df", "-kP", settings.wsl.home], { timeout: 5000 }); - const kb = Number(stdout.trim().split("\n").pop().trim().split(/\s+/)[3]); - return Number.isFinite(kb) ? kb * 1024 : null; + return dfFree(stdout); } catch { return null; } }, }; diff --git a/api/runtime/src/platform/shared.js b/api/runtime/src/platform/shared.js index f5ad91df5..1a391dbe8 100644 --- a/api/runtime/src/platform/shared.js +++ b/api/runtime/src/platform/shared.js @@ -1,7 +1,7 @@ // What the placements share (docker/ for `local`, vm/ for `vm:`): // refusals, the worker's endpoint file and a bounded ping of a worker. import { execFile } from "node:child_process"; -import { existsSync, readdirSync, renameSync, writeFileSync } from "node:fs"; +import { existsSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs"; import { connect } from "node:net"; import { join } from "node:path"; import { promisify } from "node:util"; @@ -85,3 +85,15 @@ export function homeNames(home) { if (!existsSync(home)) return []; return readdirSync(home, { withFileTypes: true }).filter((e) => e.isDirectory() && existsSync(join(home, e.name, "project.record"))).map((e) => e.name).sort(); } + +/** A platform's home helpers where this process reads and writes the home itself (Linux, macOS, `vm:`). */ +export const localHome = { + homeNames: (settings) => homeNames(settings.home), + async removeHome(settings, name) { rmSync(join(settings.home, name), { recursive: true, force: true }); }, +}; + +/** Free bytes from the last line of `df -kP `'s output, else null. */ +export function dfFree(stdout) { + const kb = Number(String(stdout).trim().split("\n").pop().trim().split(/\s+/)[3]); + return Number.isFinite(kb) ? kb * 1024 : null; +} diff --git a/api/runtime/src/platform/vm/index.js b/api/runtime/src/platform/vm/index.js index 164ba4bad..0b9d473fb 100644 --- a/api/runtime/src/platform/vm/index.js +++ b/api/runtime/src/platform/vm/index.js @@ -28,8 +28,8 @@ import { createHash, randomBytes } from "node:crypto"; import { createServer } from "node:net"; import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync } from "node:fs"; import { join } from "node:path"; -import { connection } from "@layerfs/agent/internal"; -import { endpointFile, homeNames, noHomeStores, ping, ready, refuse, writeEndpoint } from "../shared.js"; +import { endpointFile, homeNames, localHome, noHomeStores, ping, ready, refuse, writeEndpoint } from "../shared.js"; +import { readEndpoint, releaseStore } from "../../worker/call.js"; import { callHome, GUEST } from "../../settings.js"; import { NAME, record as projectRecord } from "../../project/list.js"; import microsandbox from "./microsandbox.js"; @@ -218,7 +218,7 @@ async function launch(settings, provider, vm, project, bundle) { /** The endpoint the project's worker was last written at, or null. */ function endpoint(settings, project) { - try { return JSON.parse(readFileSync(endpointFile(settings.home, project), "utf8")); } catch { return null; } + return readEndpoint(endpointFile(settings.home, project)); } /** Nothing to start when the project's worker already answers with this build. */ @@ -442,16 +442,12 @@ export function vmPlatform(settingName) { storePath: () => { throw noHomeStores(placement, "a Store path by volume"); }, - homeNames: (settings) => homeNames(settings.home), - async removeHome(settings, name) { - rmSync(join(settings.home, name), { recursive: true, force: true }); - }, + ...localHome, /** Before a Store is deleted, the project's worker closes the Store it holds open. */ async releaseStore(settings, store) { const info = endpoint(settings, holderOf(settings, store, "a Store release that is not one project's own")); if (!info) return; - const answer = await connection(info).call({ fn: "releaseStore", args: { home: GUEST.home, storePath: storeFile() } }); - if (answer.refused) throw refuse(answer.refused.code, answer.refused.message, answer.refused.detail); + await releaseStore(info, GUEST.home, storeFile()); }, /** Free bytes of every project VM's Store disk, as that VM sees them. */ async free(settings) { diff --git a/api/runtime/src/project/delete.js b/api/runtime/src/project/delete.js index 944455199..7a1484d64 100644 --- a/api/runtime/src/project/delete.js +++ b/api/runtime/src/project/delete.js @@ -20,6 +20,7 @@ import { NAME, dropRecord, keyOf, list, record } from "./list.js"; import { drop, entries, named, put, storeFields, update } from "../store/registry.js"; import { removeVolume } from "../store/volume.js"; import { containers } from "../sandbox/leftovers.js"; +import { STOPPED } from "../platform/docker/sandboxes.js"; const refuse = (code, message) => new LayerFSError(code, message, null); @@ -48,9 +49,6 @@ export async function deleteProject(runtime, name, options = {}) { return { kind: "Deleted", project: name, volume }; } -/** Container states that run nothing. */ -const STOPPED = new Set(["created", "exited", "dead"]); - /** Drops one project's stack from a Store that holds others: its Sandboxes * first (Busy while one runs, unless `stopSandboxes`), then the stack. The * Store, its volume and its other projects stay; when the project was the diff --git a/api/runtime/src/settings.js b/api/runtime/src/settings.js index beffcca3e..6359b069c 100644 --- a/api/runtime/src/settings.js +++ b/api/runtime/src/settings.js @@ -6,6 +6,7 @@ import { existsSync, mkdirSync } from "node:fs"; import { homedir } from "node:os"; import { isAbsolute, join, posix } from "node:path"; import { LayerFSError } from "@layerfs/agent"; +import { VOLUMES } from "./platform/docker/index.js"; const PLATFORMS = { linux: "linux", darwin: "macos", win32: "windows" }; const DEFAULT_DOCKER = "/var/run/docker.sock"; @@ -122,7 +123,7 @@ export function resolveSettings(given = {}) { // a VM runs the bundle's daemon beside its helper, at the guest's path daemon: where.kind === "vm" ? GUEST.daemon : given.daemon || (bundle ? (platform === "windows" ? posix.join(bundle, "layerfs-daemon") : join(bundle, "layerfs-daemon")) : null), docker: given.docker || defaultDocker(platform), - volumes: given.volumes || "/var/lib/docker/volumes", + volumes: given.volumes || VOLUMES, traceDir: given.traceDir || join(given.home, "traces"), containerPrefix: given.containerPrefix || "layerfs-", stateDir: given.stateDir || join(given.home, ".runtime"), diff --git a/api/runtime/src/worker/call.js b/api/runtime/src/worker/call.js index 378c4b269..2e0c456e8 100644 --- a/api/runtime/src/worker/call.js +++ b/api/runtime/src/worker/call.js @@ -1,9 +1,27 @@ // One binding call made in Linux by the worker (server.js) or by Init's own // process (init.js). Copied from the dsh Host's port/call.mjs (#428). A // spooled exec's output is read here and returned whole, then released, so -// no spool is left for the caller to read. +// no spool is left for the caller to read. The platforms' side of a worker +// is here too: reading its endpoint file and asking it to release a Store +// (#527 F11: once for macOS, Windows and `vm:`). +import { readFileSync } from "node:fs"; +import { LayerFSError } from "@layerfs/agent"; +import { connection } from "@layerfs/agent/internal"; + const PAGE = 1 << 20; +/** The worker endpoint written at `file`, or null when none is (or it cannot be read). */ +export function readEndpoint(file) { + try { return JSON.parse(readFileSync(file, "utf8")); } catch { return null; } +} + +/** One `releaseStore` call: the worker at `info` closes its cached Store at `storePath` + * (a path in the worker's `home`) before that Store goes. A refusal is thrown. */ +export async function releaseStore(info, home, storePath) { + const answer = await connection(info).call({ fn: "releaseStore", args: { home, storePath } }); + if (answer.refused) throw new LayerFSError(answer.refused.code, answer.refused.message, answer.refused.detail); +} + /** The Store a call names, as the binding's storeOpen and storeClose take it. */ export const storeOf = (args) => ({ project: args.project, home: args.home, storePath: args.storePath, From 72bd04ccfb668e40b9e313bc743fe714eab4d559 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:01:39 +0800 Subject: [PATCH 23/37] runtime: sweep finds ended Sandboxes by their labels, not their names (#527 step 12, sweep only) Step 12's JavaScript-only part. runtime.sandbox.sweep chose the projects to reclaim by an ended container's labels and also by rebuilding its name in JavaScript ([.]-), a third copy of the Sandbox name format that the binding owns since step 5 (sandbox_name). It now matches the labels alone (layerfs.project, layerfs.store, which give the project key). Behaviour change: an ended container whose labels name a project of this home but whose name does not follow that format now starts that project's reclaim; the project's own records still decide what goes, so nothing is deleted by name (the only effect is one more reclaim call). The home's containerPrefix filter on the listing stays: a Sandbox carries no home label. The rest of step 12 (local discovery of native and namespaces Sandboxes through project.list_sandboxes) is NOT in this commit: it needs a binding change. The local placement's clients run a Docker deployment (step 3), and under it project.list_sandboxes refuses InvalidInput on a native or namespaces record (discovery.rs local_record / namespaces_record, step 4), so the call cannot list those Sandboxes, and the whole listing fails for a project that has one. Test: runtime.mjs sandboxes adds a sweep that reclaims a project from a labelled container named outside the format, and one that starts no reclaim for a running container or one of no project of this home. Deleted tests: none. Checks (each bounded at 120 s): node api/runtime/test/runtime.mjs surface, home-mode, projects, init, state, events, leftovers, sandboxes, volumes, transport-order, macos-worker, worker-frames, docker-default, worker-docker, stores, backend: all pass. node api/runtime/test/vm_placement.mjs settings, flow, two, bundle, delete, hosts, stores, apple-container, ssh, cleanup: all pass. node api/agent/test/{calls,exec_output,native_deployment}.mjs: pass; packaging.mjs surface, lifecycle, copy, sandbox, worker-route, transport-order: pass; packaging dispatch: FAIL before and after (needs a built layerfs.node, absent in this worktree). node --test api/cli/test/cli.test.mjs: pass. Production LOC: 123216 -> 123214 (delta -2) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 9a241c04f2 and the staged tree 16946f5152; after: core 41405; engine 77511; api 4298; Co-Authored-By: Claude Opus 5.5 --- api/docs/runtime.md | 4 +++- api/runtime/src/sandbox/sweep.js | 10 +++++----- api/runtime/test/runtime.mjs | 13 +++++++++++-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/api/docs/runtime.md b/api/docs/runtime.md index 1188eeb06..2cd1401e1 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -107,7 +107,9 @@ lines from now on, or from `since`, each with `actor`, its trace file's name. outside every Workspace), its ports and whether a project of this home owns it. One `docker ps` and one `docker inspect --size`; it changes nothing. - `sandbox.sweep` runs `sandbox.reclaim` for every project of the home that - has an exited or dead Sandbox container. The project's records and lock + has an exited or dead Sandbox container, found by the container's + `layerfs.project` and `layerfs.store` labels rather than its name (the + binding owns the name format). The project's records and lock decide what goes, so a container of another home, or one starting now, is never touched; containers no project records stay for `list_leftovers`. `open` runs it once in the background unless `sweep: false`; diff --git a/api/runtime/src/sandbox/sweep.js b/api/runtime/src/sandbox/sweep.js index ec065dd2f..9c0425a46 100644 --- a/api/runtime/src/sandbox/sweep.js +++ b/api/runtime/src/sandbox/sweep.js @@ -1,7 +1,9 @@ // runtime.sandbox.sweep(): deletes the stopped Sandboxes of every project of // this home, so their scratch (#423) does not wait for that project's next -// sandbox.create. It finds projects with an exited or dead Sandbox container -// and runs runtime.sandbox.reclaim on each: the project's own records and +// sandbox.create. It finds projects with an exited or dead Sandbox container, +// by the container's labels (layerfs.project, layerfs.store), not by its name +// (the name format is the binding's, #527 step 5), and runs +// runtime.sandbox.reclaim on each: the project's own records and // guards decide what goes, one unforced Delete per Sandbox, so a container // of another home or one starting now is never touched. Containers no // project of this home records stay for list_leftovers / clean_leftovers. @@ -16,11 +18,9 @@ const ENDED = new Set(["exited", "dead"]); /** `{ reclaimed: { project: [ids] }, failed: [{ project, code, message }] }` */ export async function sweep(runtime) { - const { settings } = runtime; if (!runtime.platform.docker) return { reclaimed: {}, failed: [], host: false }; const known = new Map((await runtime.project.list()).filter((p) => p.volume && p.kind !== "postgresql").map((p) => [keyOf(p), p])); - const named = (c) => `${settings.containerPrefix}${c.store ? `${c.store}.` : ""}${c.project}-`; - const ended = (await runtime.platform.docker.sandboxes.containers(runtime)).filter((c) => ENDED.has(c.state) && known.has(c.key) && c.name.startsWith(named(c))); + const ended = (await runtime.platform.docker.sandboxes.containers(runtime)).filter((c) => ENDED.has(c.state) && known.has(c.key)); const reclaimed = {}, failed = []; for (const key of [...new Set(ended.map((c) => c.key))].sort()) { const project = known.get(key); diff --git a/api/runtime/test/runtime.mjs b/api/runtime/test/runtime.mjs index 49399f899..6f25e1a3b 100644 --- a/api/runtime/test/runtime.mjs +++ b/api/runtime/test/runtime.mjs @@ -227,7 +227,7 @@ try { mkdirSync(join(home, ".runtime", "projects"), { recursive: true }); writeFileSync(join(home, ".runtime", "projects", "shop.json"), JSON.stringify({ name: "shop", volume: "vol-shop" })); const inspected = (name, project, status, size, ports = {}) => ({ Name: `/${name}`, State: { Status: status, Running: status === "running", StartedAt: "2026-10-24T01:00:00Z", FinishedAt: status === "running" ? "0001-01-01T00:00:00Z" : "2026-10-24T02:00:00Z" }, Config: { Image: IMAGE, Labels: { "layerfs.role": "sandbox", "layerfs.project": project, "layerfs.sandbox": name.at(-1) } }, NetworkSettings: { Ports: ports }, SizeRw: size }); - const ps = ["layerfs-shop-1\trunning\tUp\tshop\t1\timg", "layerfs-shop-2\texited\tExited (0)\tshop\t2\timg", "layerfs-shop-3\tcreated\tCreated\tshop\t3\timg", "layerfs-gone-1\texited\tExited\tgone\t1\timg", "layerfs-issue9-shop-1\texited\tExited\tshop\t1\timg"].join("\n"); + let ps = ["layerfs-shop-1\trunning\tUp\tshop\t1\timg", "layerfs-shop-2\texited\tExited (0)\tshop\t2\timg", "layerfs-shop-3\tcreated\tCreated\tshop\t3\timg", "layerfs-gone-1\texited\tExited\tgone\t1\timg", "layerfs-issue9-shop-1\texited\tExited\tshop\t1\timg"].join("\n"); const { runtime, calls } = await opened((args) => { if (args[0] === "ps") return args.includes("-q") ? "id1\nid2\nid3" : ps; if (args[0] === "inspect") { @@ -241,12 +241,21 @@ try { assert.deepEqual(listed.map((c) => [c.name, c.state, c.scratch, c.owned]), [["layerfs-gone-1", "exited", 1_000_000, false], ["layerfs-shop-1", "running", 4096, true]]); assert.deepEqual([listed[1].ports, listed[1].finishedAt, listed[0].finishedAt], [[{ container: "30421/tcp", host: "127.0.0.1", port: 54321 }], null, "2026-10-24T02:00:00Z"]); assert.deepEqual(calls.find((c) => c[0] === "inspect"), ["inspect", "--size", "id1", "id2", "id3"]); - // sweep: only shop has an ended container of this home's own naming; created ones and other projects are left alone + // sweep: only shop has an ended container of a project of this home; created ones and other projects are left alone native.reclaimed = ["2"]; const before = native.calls.length; assert.deepEqual(await runtime.sandbox.sweep(), { reclaimed: { shop: ["2"] }, failed: [] }); assert.deepEqual(native.calls.slice(before).filter((c) => c.startsWith("runtime.")), ["runtime.sandbox.reclaim"]); assert.equal(calls.filter((c) => c[0] === "rm").length, 0, "the sweep deletes through the project's records, never by name"); + // the project is found by the container's labels, not by its name: an ended container labelled + // shop whose name is not `shop-` still has shop's own records decide (#527 step 12) + ps = "layerfs-renamed-7\texited\tExited (0)\tshop\t7\timg"; + native.reclaimed = ["7"]; + assert.deepEqual(await runtime.sandbox.sweep(), { reclaimed: { shop: ["7"] }, failed: [] }); + ps = ["layerfs-shop-1\trunning\tUp\tshop\t1\timg", "layerfs-gone-1\texited\tExited\tgone\t1\timg"].join("\n"); + const quiet = native.calls.length; + assert.deepEqual(await runtime.sandbox.sweep(), { reclaimed: {}, failed: [] }, "a running container or one of no project of this home starts no reclaim"); + assert.equal(native.calls.slice(quiet).filter((c) => c === "runtime.sandbox.reclaim").length, 0); delete native.reclaimed; await runtime.close(); // open sweeps once in the background; status reports it and close waits for it From 915522d51ba702a52dabc960ef64704cd357c3a2 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:02:08 +0800 Subject: [PATCH 24/37] runtime: Apple Container copies a folder through the home bind mount (#527 platform pass) What: apple-container.js copy() no longer runs `container copy`. It clones the folder into a private /.vm-copy-* staging folder (APFS clone where the volume allows, else a plain copy), the guest copies it from its home bind mount (virtiofs) onto its own disk with `cp -Rp`, and the staging folder is removed whatever the outcome. A folder already inside the home is read in place. index.js and the step order are unchanged. Why: in the #527 pass every vm-apple-container cell spent 67-78 s in setup (6 of 12 FAILed for budget), against 9 s on Microsandbox. Measured, one diagnostic sample each (container 1.6.1, 4 cpus/4G VM, bundle cells-4bedac61 with the 2.7 GB uncompressed runtime image): worker.start + Init, old route: 92.6 s, of which `container copy` of the bundle 89.5 s (a direct `container copy`: 77.2 s, ~35 MB/s); VM create 0.8 s, Store volume 0.06 s, every other step < 0.1 s, Init after start 0.5 s same, this route: 8.3 s, bundle copy 4.8 s 6 MB-image bundle (h39): old 4.2 s (copy 1.4 s), new 3.4 s (copy 0.3 s) a tar stream through `exec -i` (not chosen): 23.5 s The image unpack is not in setup (it is sandbox.create, ~3 s in the cell). The contract stays: the bundle identity check and .sealed marker are index.js's and unchanged, the VM owns its copy on its own disk, no secret is on a command line (the worker env still goes by `exec -i` stdin), one attempt per step and no retry. A create-time bind mount of the bundle was not used: it would tie a VM's restart to that bundle path for the VM's life. Tests: vm_placement apple-container asserts no `container copy`, the guest `cp -Rp` from /layerfs/home/.vm-copy-*/c, the VM-owned copy, no staging folder left (also after a failed copy), and an in-home folder read in place; the stand-in maps /layerfs/home to the host home. Docs: api/docs/runtime.md step 2. Checks (each <= 120 s wall): vm_placement settings: PASS vm_placement/settings (0 s) vm_placement flow: PASS vm_placement/flow (2 s) vm_placement two: PASS vm_placement/two (2 s) vm_placement bundle: PASS vm_placement/bundle (3 s) vm_placement delete: PASS vm_placement/delete (1 s) vm_placement hosts: PASS vm_placement/hosts (2 s) vm_placement stores: PASS vm_placement/stores (0 s) vm_placement apple-container: PASS vm_placement/apple-container (2 s) vm_placement ssh: PASS vm_placement/ssh (3 s) vm_placement cleanup: PASS vm_placement/cleanup (1 s) runtime surface: PASS runtime/surface (0 s) runtime home-mode: PASS runtime/home-mode (0 s) runtime projects: PASS runtime/projects (0 s) runtime init: PASS runtime/init (2 s) runtime state: PASS runtime/state (0 s) runtime events: PASS runtime/events (0 s) runtime leftovers: PASS runtime/leftovers (0 s) runtime sandboxes: PASS runtime/sandboxes (0 s) runtime volumes: PASS runtime/volumes (1 s) runtime transport-order: PASS runtime/transport-order (0 s) runtime macos-worker: PASS runtime/macos-worker (0 s) runtime worker-frames: PASS runtime/worker-frames (5 s) runtime docker-default: PASS runtime/docker-default (0 s) runtime worker-docker: PASS runtime/worker-docker (1 s) runtime stores: PASS runtime/stores (0 s) runtime backend: PASS runtime/backend (0 s) Production LOC: 123214 -> 123233 (delta +19) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 72bd04ccfb and the staged tree 7ce514cfa2; after: core 41405; engine 77511; api 4317; Co-Authored-By: Claude Opus 5.5 --- api/docs/runtime.md | 9 ++++- .../src/platform/vm/apple-container.js | 38 +++++++++++++++++-- api/runtime/test/fixture/fake-container.cjs | 12 +++++- api/runtime/test/vm_placement.mjs | 27 ++++++++++++- 4 files changed, 79 insertions(+), 7 deletions(-) diff --git a/api/docs/runtime.md b/api/docs/runtime.md index 2cd1401e1..6732fe864 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -275,7 +275,14 @@ The adapter's five steps, each attempted once, all for one named project: another home, or one whose mounts or port differ, is refused rather than reused or repaired; 2. the sealed bundle is copied into that VM once per bundle hash (the hash of - its `manifest.json`), with a marker at `/layerfs/bundle/.sealed`; + its `manifest.json`), with a marker at `/layerfs/bundle/.sealed`. Apple + Container's `container copy` moves about 35 MB/s (a 2.7 GB bundle with its + Sandbox image took 77–90 s, #527), so that adapter stages the folder in a + private `/.vm-copy-*` folder (an APFS clone where the volume allows), + the guest copies it from its home bind mount onto its own disk with + `cp -Rp`, and the staging folder is removed whatever the outcome (4.8 s for + the same bundle). Init sources take the same route; a folder already inside + the home is read in place; 3. `user.max_user_namespaces=0` is written and read back (V4; Apple Container's guest mounts `/proc/sys` read-only, so its adapter remounts it first), then the worker starts as root with its secret in a 0600 guest file — never in a diff --git a/api/runtime/src/platform/vm/apple-container.js b/api/runtime/src/platform/vm/apple-container.js index dca57ac1e..85b801f70 100644 --- a/api/runtime/src/platform/vm/apple-container.js +++ b/api/runtime/src/platform/vm/apple-container.js @@ -16,7 +16,9 @@ // - a volume keeps its size: `volume create -s ` (the CLI's default is // a sparse 504 GiB image), so `ensureStore` sizes it from `storeSize`; // - `exec` needs `-i` for a caller's stdin (`cat > file` gets EOF at once -// without it), which `write` and `copy` rely on; +// without it), which `write` relies on; +// - `copy` moves about 35 MB/s, so a folder goes in through the home bind +// mount instead (see `copy` below); // - the guest's `/proc/sys` is mounted **read-only** and user namespaces are // open by default: V4's block needs `mount -o remount,rw /proc/sys` first // (CAP_SYS_ADMIN, which this adapter adds anyway), then the write; @@ -25,6 +27,9 @@ // It reads its facts strictly: an `inspect` answer that is not this shape is // refused by name rather than guessed at, so a changed CLI shows up as an error // and never as a VM this adapter believes is running. +import { constants, cpSync, mkdtempSync, rmSync } from "node:fs"; +import { basename, isAbsolute, join, relative, resolve, sep } from "node:path"; +import { GUEST } from "../../settings.js"; import { answer, capture, readFile, writeFile } from "./cli.js"; const CLI = "container"; @@ -138,8 +143,35 @@ export async function storeFree(name) { return Number.isFinite(kb) ? kb * 1024 : null; } -/** Copies a host folder into a guest folder. */ -export const copy = (name, source, destination) => call(["copy", source, `${name}:${destination}`], { timeout: CREATE_MS }); +/** + * Copies a host folder into a guest folder, as a copy the VM owns. Measured on + * 1.6.1 (#527, a 2.7 GB bundle): `container copy` moved about 35 MB/s (77 s), + * a `tar` stream through `exec -i` about 117 MB/s (23.5 s), while the guest + * reads the VM's home bind mount (virtiofs) at about 650 MB/s (4 s). So the + * folder is cloned into a private staging folder in the home the VM already + * mounts (an APFS clone where the volume allows, else a plain copy), the guest + * copies it from there onto its own disk with `cp -Rp` (modes, owners and + * times kept, symlinks as symlinks), and the staging folder is removed + * whatever the outcome. One attempt; no step is retried. + */ +export async function copy(name, source, destination) { + const found = await inspect(name); + if (!found?.home) throw new Error(`the VM ${name} mounts no LayerFS home at ${GUEST.home}, so a folder cannot be staged for it`); + const guestCopy = async (from) => { + const done = await exec(name, ["sh", "-c", "mkdir -p \"$2\" && cp -Rp \"$1/.\" \"$2\"", "sh", from, destination], { timeout: CREATE_MS }); + if (done.code !== 0) throw new Error(`could not copy ${source} into ${name}:${destination}: ${(done.stderr || done.stdout).trim()}`); + }; + // a folder inside the home is already in the guest's view: nothing to stage + const inside = relative(found.home, resolve(source)); + if (inside && !inside.startsWith("..") && !isAbsolute(inside)) return guestCopy(`${GUEST.home}/${inside.split(sep).join("/")}`); + const stage = mkdtempSync(join(found.home, ".vm-copy-")); + try { + cpSync(source, join(stage, "c"), { recursive: true, mode: constants.COPYFILE_FICLONE, verbatimSymlinks: true, preserveTimestamps: true }); + await guestCopy(`${GUEST.home}/${basename(stage)}/c`); + } finally { + rmSync(stage, { recursive: true, force: true }); + } +} export const read = (name, path) => readFile(CLI, name, path, exec); export const write = (name, path, text) => writeFile(CLI, name, path, text, exec); diff --git a/api/runtime/test/fixture/fake-container.cjs b/api/runtime/test/fixture/fake-container.cjs index d61636842..5ee4fd8db 100644 --- a/api/runtime/test/fixture/fake-container.cjs +++ b/api/runtime/test/fixture/fake-container.cjs @@ -12,8 +12,10 @@ // container run --detach --name N … IMAGE sleep infinity // container start|stop NAME, container delete --force NAME // container volume inspect NAME | create -s SIZE NAME | delete NAME -// container copy HOST NAME:DEST +// container copy HOST NAME:DEST (the adapter no longer uses it: see `cp -Rp`) // container exec [-i] NAME sh -c SCRIPT sh ARGS… +// A guest path under /layerfs/home is the VM's home bind mount, so it is the +// host folder `run` was given; every other guest path is under the VM's folder. // Records live in FAKE_CONTAINER_STATE/vms/.json, volumes in // FAKE_CONTAINER_STATE/volumes/.json, guest paths under // FAKE_CONTAINER_STATE/guest/. @@ -162,6 +164,14 @@ if (command === "inspect") { } else if (/cat > "\$1"/.test(script)) { if (!interactive) fail("stdin was not kept open: the adapter must pass -i"); put(args[1], readFileSync(0)); + } else if (/cp -Rp "\$1\/\." "\$2"/.test(script)) { + // the adapter's copy: a staging folder in the home bind mount, onto the guest's disk + const home = "/layerfs/home/"; + if (!args[1].startsWith(home)) fail(`cp: the source ${args[1]} is not in the home bind mount`); + const from = join(vm.home, args[1].slice(home.length)); + if (!existsSync(from)) fail(`cp: cannot stat '${args[1]}': No such file or directory`); + mkdirSync(guest(args[2]), { recursive: true }); + cpSync(from, guest(args[2]), { recursive: true, verbatimSymlinks: true }); } else if (/umask 022/.test(script)) { mkdirSync(guest(args[1]), { recursive: true, mode: 0o755 }); } else if (/max_user_namespaces/.test(script)) { diff --git a/api/runtime/test/vm_placement.mjs b/api/runtime/test/vm_placement.mjs index 1b765d833..f6fe35da8 100644 --- a/api/runtime/test/vm_placement.mjs +++ b/api/runtime/test/vm_placement.mjs @@ -440,8 +440,31 @@ try { // the verified 1.6.1 inspect shape: the adapter reads this VM's state, store and home const entry = await runtime.vm.status("shop"); assert.deepEqual([entry.state, entry.store, entry.home, entry.worker.state], ["running", storeName("shop"), home, "running"]); - // copying the bundle into an Apple Container VM is `container copy HOST NAME:DEST` - assert.ok(first.some((argv) => argv[0] === "copy" && argv[2] === `${vmName("shop")}:/layerfs/bundle`)); + // the bundle reaches the VM through a staging folder in the home it already + // mounts, and the guest copies it onto its own disk: no `container copy` + // (35 MB/s on 1.6.1, #527), and the staging folder is gone afterwards + assert.ok(!first.some((argv) => argv[0] === "copy"), "no `container copy`"); + const staged = first.find((argv) => argv[0] === "exec" && /cp -Rp/.test(argv.join(" ")) && argv.at(-1) === "/layerfs/bundle"); + assert.ok(staged, "the guest copied the bundle from the home bind mount"); + assert.match(staged.at(-2), /^\/layerfs\/home\/\.vm-copy-[^/]+\/c$/); + assert.ok(existsSync(join(state, "guest", vmName("shop"), "layerfs/bundle/manifest.json")), "the VM owns its copy"); + assert.deepEqual(readdirSync(home).filter((name) => name.startsWith(".vm-copy-")), [], "no staging folder is left in the home"); + // the same route serves an Init source; a folder inside the home is read in place, never staged into itself + const source = join(work, "src"); + mkdirSync(join(source, "d"), { recursive: true }); + writeFileSync(join(source, "d", "a.txt"), "a\n"); + const container = (await import("../src/platform/vm/apple-container.js")).default; + await deadline(30_000, "copy", container.copy(vmName("shop"), source, "/layerfs/import/x")); + assert.equal(readFileSync(join(state, "guest", vmName("shop"), "layerfs/import/x/d/a.txt"), "utf8"), "a\n"); + assert.deepEqual(readdirSync(home).filter((name) => name.startsWith(".vm-copy-")), []); + mkdirSync(join(home, "inside"), { recursive: true }); + writeFileSync(join(home, "inside", "b.txt"), "b\n"); + await deadline(30_000, "copy", container.copy(vmName("shop"), join(home, "inside"), "/layerfs/import/z")); + assert.equal(readFileSync(join(state, "guest", vmName("shop"), "layerfs/import/z/b.txt"), "utf8"), "b\n"); + assert.equal(calls(state).filter((argv) => argv[0] === "exec").at(-1).at(-2), "/layerfs/home/inside", "read in place through the bind mount"); + // a failed guest copy still removes the staging folder, and is reported + await assert.rejects(container.copy(vmName("shop"), join(work, "no-such-folder"), "/layerfs/import/y"), /ENOENT|no such file/i); + assert.deepEqual(readdirSync(home).filter((name) => name.startsWith(".vm-copy-")), []); } finally { restore(); await runtime.close(); From 89226d75e39d5e9767a35ddf74517a37badbf5af Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:16:14 +0800 Subject: [PATCH 25/37] node, agent, runtime: one Sandbox setting, LAYERFS_SANDBOX=docker|native|namespaces (#527 step 11) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Owner decision D3. LAYERFS_SANDBOX names the backend; namespaces is no longer native with LAYERFS_SANDBOX_BACKEND=namespaces. - layerfs-node runtime.rs is the one validator: `backend(deploy)` answers Docker (None), Native or Namespaces from deploy.sandbox and maps the former pair for one release (native + sandboxBackend namespaces is namespaces; native + unset or native is native). Any other combination with sandboxBackend set (namespaces + native, docker + either, unset + either) is refused InvalidInput naming both settings; an unknown value of either setting is refused naming the values it takes; namespaces off Linux is Unsupported. All before any effect. `local()` and `native()` go: sandbox.rs passes the selected backend to local::start, and discovery's native and namespaces record checks read the same function (step 4's rule unchanged). - @layerfs/agent `deployment` only checks the fields each value needs: native needs daemon and localDir, namespaces (or the former pair) also image and imageArchive, Docker its Docker settings. It passes sandboxBackend on (beside Docker too) and passes an unknown LAYERFS_SANDBOX on alone, so the binding refuses them. 34d49eb577's host rule is kept: the Windows and off-Linux refusals key on sandboxHost. - @layerfs/runtime names the backend: local still sets LAYERFS_SANDBOX=docker with the former setting unset; vm: now sets LAYERFS_SANDBOX=namespaces and unsets LAYERFS_SANDBOX_BACKEND, from its own settings, so neither an ambient LAYERFS_SANDBOX nor the former one reaches its clients (F4). - The CLI help lists every LAYERFS_* setting the SDK reads, grouped (Store, Sandbox per backend, the former setting, binding, trace): seven were missing. - Docs: agent.md's settings table and the native and namespaces sections, runtime.md's local and vm: deployments, layerfs-api PROVIDERS.md and AGENTS.md's VM paragraph name LAYERFS_SANDBOX=namespaces. §7.1's names (record runtime values, capabilities, helper, on-disk names, variants) do not change. No tests deleted. Adapted: native_deployment's typo loop (an unknown value is now passed on for the binding to refuse, not refused in JS); vm_placement's settings case expects SANDBOX namespaces with the former setting unset, under an ambient LAYERFS_SANDBOX=docker too. Added: native_local::one_sandbox_setting_maps_the_former_pair_and_refuses_conflicts (five refusals through a namespaces record, then the former native pair reclaims a native record); native_deployment cases for namespaces on Linux, its fields, the passed-on conflicts, a client's sandbox.create, and the darwin and win32 refusals by the new name. Checks: cargo +1.85.1 fmt -p layerfs-node --check (pass); clippy -p layerfs-node --all-targets -D warnings on macOS and Linux (pass); tools/check_product_boundary.py (PASS). Linux, in the runtime image: native_local 9, native_discovery 6, layerfs-api sandbox_operations 7 (all pass). JS: runtime.mjs all 16 modes, vm_placement.mjs all 10 modes, agent native_deployment, calls (39), exec_output, node --test cli.test.mjs (all pass). Production LOC: 123233 -> 123262 (delta +29) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 915522d51b and the staged tree 49daba8df3; after: core 41405; engine 77533; api 4324; Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 2 +- api/agent/src/client.js | 71 ++++++------ api/agent/src/index.js | 16 +-- api/agent/test/native_deployment.mjs | 48 +++++++- api/cli/src/help.js | 15 ++- api/docs/agent.md | 21 ++-- api/docs/runtime.md | 11 +- api/runtime/src/clients.js | 11 +- api/runtime/src/platform/vm/index.js | 11 +- api/runtime/test/vm_placement.mjs | 7 +- engine/crates/layerfs-api/PROVIDERS.md | 4 +- engine/crates/layerfs-node/src/discovery.rs | 21 ++-- engine/crates/layerfs-node/src/local.rs | 11 +- engine/crates/layerfs-node/src/runtime.rs | 109 +++++++++++------- engine/crates/layerfs-node/src/sandbox.rs | 8 +- .../crates/layerfs-node/tests/native_local.rs | 66 +++++++++++ 16 files changed, 295 insertions(+), 137 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index c6d5d05f6..0a17377a7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -170,7 +170,7 @@ remains a separate MEMORY/OFF/EXCLUSIVE database file. setting), with `local` the default and unchanged. **One Linux VM per Store** (V1): a project's VM holds that project's Store on its own ext4 disk, its Sandboxes are Linux namespaces inside it - (`LAYERFS_SANDBOX_BACKEND=namespaces`, documented in + (`LAYERFS_SANDBOX=namespaces`, documented in [the agent guide](api/docs/agent.md#namespace-sandboxes-linux)), and its worker runs the real SDK as root with its own secret and its own loopback-published port; the host reaches only each VM's worker, with one diff --git a/api/agent/src/client.js b/api/agent/src/client.js index 02cf1d194..d12c7e5bc 100644 --- a/api/agent/src/client.js +++ b/api/agent/src/client.js @@ -60,22 +60,25 @@ export function sandboxArg(sandbox) { } /** Deployment settings from the client options, else the environment - * (LAYERFS_). A Workspace's Sandbox needs - * every one but the container prefix and daemon host, and, on a PostgreSQL - * Store (`postgresql`), the volume: its daemon opens the server. With - * `sandbox` (LAYERFS_SANDBOX) `native` (Linux or macOS), a Sandbox is a host - * daemon: Linux uses FUSE with a root daemon and nonroot commands (501:20); - * macOS uses loopback NFS and this user. It needs the daemon and - * `localDir` (LAYERFS_LOCAL_DIR) and no Docker setting; on Windows it is - * refused Unsupported. Unset or `docker` is Docker; any other value is - * refused. */ + * (LAYERFS_). `sandbox` (LAYERFS_SANDBOX) picks the backend (#527 D3): + * unset or `docker`, a Docker container, which needs every Docker setting but + * the container prefix and daemon host, and, on a PostgreSQL Store + * (`postgresql`), the volume: its daemon opens the server. `native` (Linux or + * macOS) and `namespaces` (Linux) are host daemons (see `localDeployment`). + * The binding is the one validator: it maps the former + * `sandboxBackend` (LAYERFS_SANDBOX_BACKEND), kept for one release, and + * refuses an unknown value or a conflicting pair, so this only checks that + * each value's fields are present and passes both settings on. `host` is + * the platform the Sandbox runs on (`sandboxHost`): native and namespaces are + * refused where they cannot run before anything is read. */ export function deployment(options = {}, postgresql = false, host = process.platform) { const env = (name) => process.env[`LAYERFS_${name}`] || undefined; const sandbox = options.sandbox ?? env("SANDBOX"); - if (sandbox === "native") return nativeDeployment(options, env, sandbox, host); - if (sandbox !== undefined && sandbox !== "docker") { - throw new LayerFSError("InvalidInput", `deploy.sandbox (LAYERFS_SANDBOX) is docker or native (Linux or macOS), not ${sandbox}`, null); - } + const backend = options.sandboxBackend ?? env("SANDBOX_BACKEND"); + const named = { ...(sandbox !== undefined ? { sandbox } : {}), ...(backend !== undefined ? { sandboxBackend: backend } : {}) }; + if (sandbox === "native" || sandbox === "namespaces") return localDeployment(options, env, named, host); + // another value is the binding's to refuse, naming the values it takes + if (sandbox !== undefined && sandbox !== "docker") return named; const deploy = { docker: options.docker ?? env("DOCKER") ?? "/var/run/docker.sock", image: options.image ?? env("IMAGE"), @@ -91,39 +94,41 @@ export function deployment(options = {}, postgresql = false, host = process.plat if (!deploy.volume) delete deploy.volume; if (!deploy.containerPrefix) delete deploy.containerPrefix; if (!deploy.daemonHost) delete deploy.daemonHost; - return deploy; -} - -/** A native Sandbox's settings: the daemon, the directory its Sandboxes - * live in, the optional name prefix, and the backend inside that directory - * (`sandboxBackend`, LAYERFS_SANDBOX_BACKEND: `native` when unset, or - * `namespaces` on Linux). The namespaces backend gives each Sandbox a root - * filesystem from an image, so it also needs `image` (LAYERFS_IMAGE, the - * same digest Docker deploys) and `imageArchive` (LAYERFS_IMAGE_ARCHIVE, the - * docker-archive the bundle carries). `host` is the platform the Sandbox - * runs on: this process's, or Linux when a worker makes it (see + // a former LAYERFS_SANDBOX_BACKEND beside Docker is the binding's to refuse + return backend === undefined ? deploy : { ...deploy, sandboxBackend: backend }; +} + +/** A host-daemon Sandbox's settings (`sandbox` native or namespaces): the + * daemon, the directory its Sandboxes live in and the optional name prefix. + * Native on Linux uses FUSE with a root daemon and nonroot commands (501:20); + * on macOS loopback NFS and this user. Namespaces (Linux) gives each Sandbox + * a root filesystem from an image, so it also needs `image` (LAYERFS_IMAGE, + * the same digest Docker deploys) and `imageArchive` (LAYERFS_IMAGE_ARCHIVE, + * the docker-archive the bundle carries). The former `native` with + * `sandboxBackend` `namespaces` needs the same. `host` is the platform the + * Sandbox runs on: this process's, or Linux when a worker makes it (see * `sandboxHost`). */ -function nativeDeployment(options, env, sandbox, host) { - const backend = options.sandboxBackend ?? env("SANDBOX_BACKEND"); +function localDeployment(options, env, named, host) { + const namespaces = named.sandbox === "namespaces" || named.sandboxBackend === "namespaces"; + const setting = named.sandbox === "namespaces" ? "deploy.sandbox (LAYERFS_SANDBOX) namespaces" + : namespaces ? "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces" : "deploy.sandbox (LAYERFS_SANDBOX) native"; // #527 step 8: Windows runs Docker Sandboxes through its WSL2 worker; it has no native or namespaces backend if (host === "win32") { - const named = backend === "namespaces" ? "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces" : "deploy.sandbox (LAYERFS_SANDBOX) native"; - throw new LayerFSError("Unsupported", `${named} is not supported on Windows: a Windows Sandbox is Docker, through the WSL2 worker; native runs on Linux or macOS, namespaces on Linux`, null); + throw new LayerFSError("Unsupported", `${setting} is not supported on Windows: a Windows Sandbox is Docker, through the WSL2 worker; native runs on Linux or macOS, namespaces on Linux`, null); } // namespaces is Linux only: refused before its image settings are read, so // a macOS deployment hears Unsupported, not a missing LAYERFS_IMAGE - if (backend === "namespaces" && host !== "linux") { - throw new LayerFSError("Unsupported", "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces is Linux only; use native", null); + if (namespaces && host !== "linux") { + throw new LayerFSError("Unsupported", `${setting} is Linux only; use native`, null); } const deploy = { - sandbox, + ...named, daemon: options.daemon ?? env("DAEMON"), localDir: options.localDir ?? env("LOCAL_DIR"), containerPrefix: options.containerPrefix ?? env("CONTAINER_PREFIX"), }; - if (backend !== undefined) deploy.sandboxBackend = backend; const required = [["daemon", "DAEMON"], ["localDir", "LOCAL_DIR"]]; - if (backend === "namespaces") { + if (namespaces) { deploy.image = options.image ?? env("IMAGE"); deploy.imageArchive = options.imageArchive ?? env("IMAGE_ARCHIVE"); required.push(["image", "IMAGE"], ["imageArchive", "IMAGE_ARCHIVE"]); diff --git a/api/agent/src/index.js b/api/agent/src/index.js index d0f0bad89..551b8063c 100644 --- a/api/agent/src/index.js +++ b/api/agent/src/index.js @@ -111,15 +111,17 @@ export class LayerFS { * settings read LAYERFS_HOME, _DOCKER, _IMAGE, _VOLUME and _DAEMON; a * Sandbox this client starts runs _IMAGE * on _VOLUME. LAYERFS_CONTAINER_PREFIX (default `layerfs-`) names every - * container it starts `-`. On Linux or macOS, - * LAYERFS_SANDBOX=native starts each Sandbox as a host daemon in a directory + * container it starts `-`. LAYERFS_SANDBOX picks the + * backend: `docker` (unset), `native` (Linux or macOS) or `namespaces` + * (Linux). Native starts each Sandbox as a host daemon in a directory * under LAYERFS_LOCAL_DIR. Linux requires root for FUSE and runs commands * as 501:20; macOS uses loopback NFS and the caller's identity. No Docker - * setting is read; native provides no isolation from the host. - * LAYERFS_SANDBOX_BACKEND picks the backend inside that directory: `native` - * (unset) or, on Linux, `namespaces` (namespaces, cgroups, nonroot commands). - * It is read for every call, so a Sandbox made with one backend is never - * reopened as another. + * setting is read; native provides no isolation from the host. Namespaces + * adds Linux namespaces, a cgroup and an image root (LAYERFS_IMAGE, + * LAYERFS_IMAGE_ARCHIVE). The former LAYERFS_SANDBOX_BACKEND=namespaces + * beside LAYERFS_SANDBOX=native still means namespaces, for one release. + * The backend is read for every call, so a Sandbox made with one backend + * is never reopened as another. * LAYERFS_DAEMON_HOST is the host this process * dials for a daemon's port, published on the Docker host's 127.0.0.1 only; * set it when the client runs in a container (`host.docker.internal` on diff --git a/api/agent/test/native_deployment.mjs b/api/agent/test/native_deployment.mjs index ee8752691..69169c4ad 100644 --- a/api/agent/test/native_deployment.mjs +++ b/api/agent/test/native_deployment.mjs @@ -110,12 +110,56 @@ process.env.DSH_LAYERFS_SANDBOX = "native"; process.env.DSH_LAYERFS_LOCAL_DIR = "/l"; assert.deepEqual(deployment(), docker); -// anything else, the former `local` included, is refused, never silently Docker +// anything else, the former `local` included, is never silently Docker: it +// is passed on alone, for the binding (the one validator, #527 step 11) to +// refuse naming the values it takes for (const typo of ["local", "Native", "nativ", "NATIVE", "podman"]) { clear(); setDocker(); process.env.LAYERFS_SANDBOX = typo; - assert.throws(() => deployment(), (e) => e.code === "InvalidInput" && e.message.includes(`not ${typo}`)); + assert.deepEqual(deployment(), { sandbox: typo }); +} + +// #527 step 11 (D3): one setting, LAYERFS_SANDBOX=docker|native|namespaces +Object.defineProperty(process, "platform", { ...linuxHost, value: "linux" }); +try { + clear(); + process.env.LAYERFS_SANDBOX = "namespaces"; + process.env.LAYERFS_DAEMON = "/opt/layerfs-daemon"; + process.env.LAYERFS_LOCAL_DIR = "/lfs"; + process.env.LAYERFS_IMAGE = docker.image; + process.env.LAYERFS_IMAGE_ARCHIVE = archive; + const namespaces = { sandbox: "namespaces", daemon: "/opt/layerfs-daemon", localDir: "/lfs", image: docker.image, imageArchive: archive }; + assert.deepEqual(deployment(), namespaces); + // it needs the image fields the former pair needed + delete process.env.LAYERFS_IMAGE_ARCHIVE; + assert.throws(() => deployment(), (e) => e.code === "InvalidInput" && /\(LAYERFS_IMAGE_ARCHIVE\)/.test(e.message)); + process.env.LAYERFS_IMAGE_ARCHIVE = archive; + // a conflicting former setting is passed on for the binding to refuse + process.env.LAYERFS_SANDBOX_BACKEND = "native"; + assert.deepEqual(deployment(), { ...namespaces, sandboxBackend: "native" }); + // so is one beside Docker, which named no backend before + clear(); + setDocker(); + process.env.LAYERFS_SANDBOX_BACKEND = "namespaces"; + assert.deepEqual(deployment(), { ...docker, sandboxBackend: "namespaces" }); + // a client sends the new value as it is + clear(); + store(); + Object.assign(process.env, { LAYERFS_SANDBOX: "namespaces", LAYERFS_DAEMON: "/opt/layerfs-daemon", LAYERFS_LOCAL_DIR: "/lfs", LAYERFS_IMAGE: docker.image, LAYERFS_IMAGE_ARCHIVE: archive }); + const { LayerFS } = await import("../src/index.js"); + const made = await LayerFS.open("website"); + await made.sandbox.create(); + assert.deepEqual(native.deploys.at(-1), namespaces); + await made.close(); +} finally { + Object.defineProperty(process, "platform", linuxHost); +} +// where namespaces cannot run it is refused by that name before its image settings are read +for (const [platform, pattern] of [["darwin", /LAYERFS_SANDBOX\) namespaces is Linux only/], ["win32", /LAYERFS_SANDBOX\) namespaces is not supported on Windows/]]) { + clear(); + Object.assign(process.env, { LAYERFS_SANDBOX: "namespaces", LAYERFS_DAEMON: "/opt/layerfs-daemon", LAYERFS_LOCAL_DIR: "/lfs" }); + assert.throws(() => deployment({}, false, platform), (e) => e.code === "Unsupported" && pattern.test(e.message)); } // a client reads LAYERFS_SANDBOX and LAYERFS_LOCAL_DIR once, and diff --git a/api/cli/src/help.js b/api/cli/src/help.js index 8939df747..e7b3f5a81 100644 --- a/api/cli/src/help.js +++ b/api/cli/src/help.js @@ -28,10 +28,17 @@ GLOBAL OPTIONS --text readable output instead of JSON -h, --help help for the command -SETTINGS come from the environment, as for the SDK: LAYERFS_HOME, LAYERFS_STORE_PATH, - LAYERFS_DOCKER, LAYERFS_IMAGE, LAYERFS_VOLUME, LAYERFS_DAEMON, LAYERFS_CONTAINER_PREFIX, - LAYERFS_DAEMON_HOST, LAYERFS_STORE_POLICY, LAYERFS_TRACE, LAYERFS_TRACE_STEP, - LAYERFS_TRACE_START. +SETTINGS come from the environment, as for the SDK (api/docs/agent.md): + Store LAYERFS_HOME, LAYERFS_STORE_PATH, LAYERFS_STORE, LAYERFS_STORE_POSTGRESQL, + LAYERFS_STORE_POLICY + Sandbox LAYERFS_SANDBOX (docker, native or namespaces; default docker), + LAYERFS_DAEMON, LAYERFS_CONTAINER_PREFIX + docker LAYERFS_DOCKER, LAYERFS_IMAGE, LAYERFS_VOLUME, LAYERFS_DAEMON_HOST + native LAYERFS_LOCAL_DIR + namespaces LAYERFS_LOCAL_DIR, LAYERFS_IMAGE, LAYERFS_IMAGE_ARCHIVE + former LAYERFS_SANDBOX_BACKEND=namespaces with LAYERFS_SANDBOX=native (one release) + Binding LAYERFS_NATIVE, LAYERFS_WORKER_ENDPOINT + Trace LAYERFS_TRACE, LAYERFS_TRACE_STEP, LAYERFS_TRACE_START ARGUMENTS main, a Branch, a Commit id or a Layer id diff --git a/api/docs/agent.md b/api/docs/agent.md index 2d1ab8760..dcbf8c053 100644 --- a/api/docs/agent.md +++ b/api/docs/agent.md @@ -147,9 +147,9 @@ Keep each agent's operations on a Workspace sequential. | `LAYERFS_STORE_PATH` | The installed Store file this client's Store calls open: `global/store.sqlite` in the project's volume. On Linux this process opens it, so it must be on a local filesystem the daemons share, such as `/layerfs-store/global/store.sqlite` where the volume is mounted at `/layerfs-store`; otherwise Store calls fail `Unsupported`. On macOS and Windows the worker opens it, so it is the path inside the worker's Linux, `/var/lib/docker/volumes//_data/global/store.sqlite`. On any other platform Store calls fail `Unsupported`. Unset, they fail `InvalidInput` everywhere. | | `LAYERFS_CONTAINER_PREFIX` | Optional. Names every container this client creates `-` (default prefix `layerfs-`); another LayerFS home on the same Docker engine sets its own, so names never collide. Docker's name rule applies (an ASCII letter or digit, then letters, digits, `_`, `.`, `-`, at most 128). A name another container holds refuses the create before any effect. | | `LAYERFS_DAEMON_HOST` | Optional. The host this process dials for a daemon's port. Each daemon publishes its port on the Docker host's `127.0.0.1` only, and that stays so. A client inside a container does not share that loopback, so it names the host that reaches it, `host.docker.internal` on Docker Desktop. One resolution, its first address, one connect; nothing is tried again. Unset, the client dials `127.0.0.1`. | -| `LAYERFS_SANDBOX` | Optional. Unset or `docker`: a Sandbox is a Docker container, exactly as described here. `native` (Linux or macOS): a Sandbox is a daemon process with no container and no Docker setting read. On macOS it runs as this user, without root; Workspaces are served over loopback NFS and mounted by this machine's own NFS client, and commands run as this user. On Linux it needs root: the daemon serves FUSE as root and commands run as 501:20 (see [Native Sandboxes](#native-sandboxes-linux-and-macos)). Elsewhere `sandbox.create` refuses `native` as `Unsupported`; on Windows the agent itself refuses it, and `LAYERFS_SANDBOX_BACKEND=namespaces`, before anything is made (a Windows Sandbox is Docker, through the WSL2 worker). Any other value is refused as `InvalidInput` before anything is made. | -| `LAYERFS_LOCAL_DIR` | With `LAYERFS_SANDBOX=native`, required: an existing absolute directory, owned by the running user, not group/other writable and traversable by others (0755). Each native Sandbox gets its own directory under it. | -| `LAYERFS_SANDBOX_BACKEND` | With `LAYERFS_SANDBOX=native` on Linux, optional: `native` (unset) or `namespaces`. `namespaces` puts each Sandbox's daemon in its own mount, PID and IPC namespaces and its own cgroup v2 directory, and runs commands as the sandbox's uid:gid with no capabilities and no-new-privs; see [Namespace Sandboxes (Linux)](#namespace-sandboxes-linux). It needs root, cgroup v2, `/dev/fuse` and `user.max_user_namespaces=0`, and is refused `Unsupported` elsewhere or without them. Any other value is refused `InvalidInput` before anything is made. It is read when the client is made and sent with every call, so a Sandbox made with one backend is never reopened as the other. | +| `LAYERFS_SANDBOX` | Optional: the Sandbox backend, `docker`, `native` or `namespaces`. Unset or `docker`: a Sandbox is a Docker container, exactly as described here. `native` (Linux or macOS): a Sandbox is a daemon process with no container and no Docker setting read. On macOS it runs as this user, without root; Workspaces are served over loopback NFS and mounted by this machine's own NFS client, and commands run as this user. On Linux it needs root: the daemon serves FUSE as root and commands run as 501:20 (see [Native Sandboxes](#native-sandboxes-linux-and-macos)). `namespaces` (Linux) is native with each Sandbox's daemon in its own mount, PID and IPC namespaces and its own cgroup v2 directory, on a root from the Sandbox image (`LAYERFS_IMAGE`, `LAYERFS_IMAGE_ARCHIVE`); commands run as the sandbox's uid:gid with no capabilities and no-new-privs; see [Namespace Sandboxes (Linux)](#namespace-sandboxes-linux). It needs root, cgroup v2, `/dev/fuse` and `user.max_user_namespaces=0`, and is refused `Unsupported` elsewhere or without them. Elsewhere `sandbox.create` refuses `native` as `Unsupported`; on Windows the agent itself refuses `native` and `namespaces` before anything is made (a Windows Sandbox is Docker, through the WSL2 worker). Any other value is refused as `InvalidInput` before anything is made. It is read when the client is made and sent with every call, so a Sandbox made with one backend is never reopened as another. | +| `LAYERFS_LOCAL_DIR` | With `LAYERFS_SANDBOX=native` or `namespaces`, required: an existing absolute directory, owned by the running user, not group/other writable and traversable by others (0755). Each native or namespaces Sandbox gets its own directory under it. | +| `LAYERFS_SANDBOX_BACKEND` | Former, kept for one release: replaced by `LAYERFS_SANDBOX`. `LAYERFS_SANDBOX=native` with `LAYERFS_SANDBOX_BACKEND=namespaces` still means `namespaces`, and with it unset or `native` means `native`. Set beside any other `LAYERFS_SANDBOX` (`namespaces` with `native`, or `docker` with either), or set to another value, it is refused `InvalidInput` before anything is made, naming both settings. | | `LAYERFS_TRACE` | Optional per-call trace file (see [the call trace](backend.md#the-call-trace)); unset means no trace. | | `LAYERFS_TRACE_STEP` | Optional step label put on each trace line as `step`; read at every call. | | `LAYERFS_TRACE_START` | `1` adds a start line before each traced call; read at every call. | @@ -255,7 +255,7 @@ process identity; the filesystem daemon launches and supervises no commands. machine, with no container and no Docker. On Linux it needs root: the daemon serves its Workspaces over FUSE as root (`LAYERFS_KERNEL=fuse`), commands run as 501:20, and the Store (`LAYERFS_STORE_PATH`) is on a local Linux filesystem -the daemons share; `LAYERFS_SANDBOX_BACKEND=namespaces` adds isolation (see +the daemons share; `LAYERFS_SANDBOX=namespaces` adds isolation (see [Namespace Sandboxes (Linux)](#namespace-sandboxes-linux)). Without root it is refused `Unsupported` before anything is made. The rest of this section describes macOS, where it needs no root, no kernel extension and no macFUSE or @@ -291,8 +291,9 @@ on 127.0.0.1 only. Its records name the daemon by process id and start time, so a reused id is never taken for it. `sandbox.create`, the mount result and `project.list_sandboxes()` give a native Sandbox's `image` as `local`. A record's `runtime` is `native`; it is used only by a client whose deployment -is `native` with the native backend (`LAYERFS_SANDBOX_BACKEND` unset or -`native`; a `namespaces` deployment does not reopen it either, #527) and the +is `native` (`LAYERFS_SANDBOX=native`, or the former pair with +`LAYERFS_SANDBOX_BACKEND` unset or `native`; a `namespaces` deployment does +not reopen it either, #527) and the same `LAYERFS_LOCAL_DIR` and prefix, so it puts that Sandbox exactly where the record says; any other is refused `InvalidInput` and nothing is deleted. A record of the former `local` runtime (an earlier, @@ -326,8 +327,10 @@ can fail on this NFS route with the system SQLite VFS; see ### Namespace Sandboxes (Linux) -`LAYERFS_SANDBOX_BACKEND=namespaces` keeps the native deployment (no Docker) -and adds isolation inside the project's VM: each Sandbox's daemon runs +`LAYERFS_SANDBOX=namespaces` (formerly `LAYERFS_SANDBOX=native` with +`LAYERFS_SANDBOX_BACKEND=namespaces`, still accepted for one release) is the +native deployment (no Docker) with isolation added, as inside a `vm:` home's +project VM: each Sandbox's daemon runs in its own mount, PID and IPC namespaces and its own cgroup v2 directory (`/sys/fs/cgroup/layerfs/`), so two Sandboxes on one Store cannot see each other's mounts, processes or files, and closing one ends everything @@ -370,7 +373,7 @@ Delete then removes the cgroup and the directory, so a closed Sandbox leaves no process, mount or cgroup behind. No graceful filesystem drain exists. A record's `runtime` is `namespaces`, with the same fields as a native record; -it is used only by a client whose `LAYERFS_SANDBOX_BACKEND` is `namespaces` +it is used only by a client whose `LAYERFS_SANDBOX` is `namespaces` with the same `LAYERFS_LOCAL_DIR` and prefix. Another backend's record is refused `InvalidInput` and nothing is deleted, both ways: a `namespaces` record seen by a native deployment, and a `native` record seen by a diff --git a/api/docs/runtime.md b/api/docs/runtime.md index 6732fe864..d697ad4f7 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -62,9 +62,10 @@ in one Linux VM, below) and on Windows `wsl: { distribution, user, node, home }` missing setting does not refuse `open`: `status().missing` lists it. The runtime names each project's Sandbox backend itself (#527 F4): a `local` -home's clients get `LAYERFS_SANDBOX=docker` with `LAYERFS_SANDBOX_BACKEND`, -`LAYERFS_LOCAL_DIR` and `LAYERFS_IMAGE_ARCHIVE` unset, and a `vm:` home's get -native Sandboxes on the namespaces backend. Values of those settings in the +home's clients get `LAYERFS_SANDBOX=docker` with the former +`LAYERFS_SANDBOX_BACKEND`, `LAYERFS_LOCAL_DIR` and `LAYERFS_IMAGE_ARCHIVE` +unset, and a `vm:` home's get `LAYERFS_SANDBOX=namespaces` (#527 step 11), +with `LAYERFS_SANDBOX_BACKEND` unset. Values of those settings in the runtime's own environment do not reach its clients. ## Init @@ -212,7 +213,7 @@ bundle's `manifest.json` before it listens. worker, unchanged) or `vm:`: **each of this home's projects — its Stores — lives in one Linux VM of its own** on this machine (#515 §6, V9, V1). A project's VM holds that project's Store on its own ext4 disk, its Sandboxes -are Linux namespaces (`LAYERFS_SANDBOX_BACKEND=namespaces`, H36's backend) and +are Linux namespaces (`LAYERFS_SANDBOX=namespaces`, H36's backend) and its worker runs the real SDK as root; the host reaches only each VM's worker, with one attempt per call and no replay. Providers, verified with stand-in provider CLIs (`test/vm_placement.mjs`; real runs of `test/verify/vm_real.mjs`: @@ -303,7 +304,7 @@ The adapter's five steps, each attempted once, all for one named project: Init runs as one more call to that project's worker: `platform.init` starts its VM and copies the source folder into `/layerfs/import`, and `LayerFS.init` reads it there. `deploymentEnv` gives clients and agents the VM's settings: -`LAYERFS_SANDBOX=native`, `LAYERFS_SANDBOX_BACKEND=namespaces` (always: a +`LAYERFS_SANDBOX=namespaces` (always: a `LAYERFS_SANDBOX` or the former `LAYERFS_SANDBOX_BACKEND` in the caller's environment does not replace it), `LAYERFS_DAEMON`, `LAYERFS_LOCAL_DIR`, `LAYERFS_HOME=/layerfs/home`, the Store's `LAYERFS_STORE_PATH`, this project's `LAYERFS_WORKER_ENDPOINT`, and the bundle diff --git a/api/runtime/src/clients.js b/api/runtime/src/clients.js index bdd8c790a..04d17fd60 100644 --- a/api/runtime/src/clients.js +++ b/api/runtime/src/clients.js @@ -9,15 +9,16 @@ import { callHome } from "./settings.js"; const IDLE_MS = 60_000; -/** The local placement's Sandbox backend: Docker, named rather than read - * from this process's environment (#527 F4). "" unsets a native-only setting - * an ambient LAYERFS_SANDBOX_BACKEND, _LOCAL_DIR or _IMAGE_ARCHIVE would set. */ +/** The local placement's Sandbox backend: LAYERFS_SANDBOX=docker, named rather + * than read from this process's environment (#527 F4). "" unsets what an + * ambient former LAYERFS_SANDBOX_BACKEND (which would conflict with docker), + * _LOCAL_DIR or _IMAGE_ARCHIVE would set. */ const DOCKER_BACKEND = { SANDBOX: "docker", SANDBOX_BACKEND: "", LOCAL_DIR: "", IMAGE_ARCHIVE: "" }; /** The environment one project's client (and its agents' bash calls) use. A * platform may replace it whole (`deploymentEnv`), as a `vm:` home - * does: its deployment is native Sandboxes in the VM's namespace backend, not - * host Docker. Otherwise the backend is Docker. A project of a PostgreSQL + * does: its deployment is namespaces Sandboxes in the VM, not host Docker. + * Otherwise the backend is Docker. A project of a PostgreSQL * Store (#506) has no volume; its Store path is `postgresql:`, and its * connection's URL is added only when the call gave one (`project.url`). */ export function deploymentEnv(settings, platform, project) { diff --git a/api/runtime/src/platform/vm/index.js b/api/runtime/src/platform/vm/index.js index 0b9d473fb..210499ab9 100644 --- a/api/runtime/src/platform/vm/index.js +++ b/api/runtime/src/platform/vm/index.js @@ -1,7 +1,7 @@ // `vm:` placement (#515 §6, V9): **each of this home's projects — // strictly, each Store — lives in one Linux VM of its own** (V1). That VM holds // that project's Store on its own ext4 disk, shares that disk with the project's -// Sandboxes' daemons (Linux namespaces inside it, `LAYERFS_SANDBOX_BACKEND= +// Sandboxes' daemons (Linux namespaces inside it, `LAYERFS_SANDBOX= // namespaces`, H36), and runs its own worker with its own secret and its own // private loopback channel (`worker/server.js`, one attempt per call, no replay). // The host reaches only each VM's worker. @@ -378,16 +378,17 @@ const stores = { }, }; -/** The guest home, and the deployment inside the project's VM: native Sandboxes, the namespace - * backend, named here rather than read from this process's environment (#527 F4). */ +/** The guest home, and the deployment inside the project's VM: namespaces Sandboxes + * (LAYERFS_SANDBOX=namespaces), named here rather than read from this process's environment (#527 F4). */ export function deploymentEnv(settings, project) { // a VM's projects open the SQLite Store on that VM's disk only (#527 F3) if (project.kind === "postgresql") throw refuse("Unsupported", `${project.name} is in the PostgreSQL Store ${project.store}, and this home is placed in ${settings.placement.name}: its projects open only the SQLite Store on their own VM's disk`, null); const image = settings.bundle ? bundleImage(settings.bundle) : null; return { HOME: callHome(settings), - SANDBOX: "native", - SANDBOX_BACKEND: "namespaces", + SANDBOX: "namespaces", + // "" unsets an ambient former LAYERFS_SANDBOX_BACKEND, which would conflict + SANDBOX_BACKEND: "", DAEMON: GUEST.daemon, LOCAL_DIR: GUEST.local, // the Sandbox image this VM's bundle carries, when it carries one (V7): diff --git a/api/runtime/test/vm_placement.mjs b/api/runtime/test/vm_placement.mjs index f6fe35da8..125283acd 100644 --- a/api/runtime/test/vm_placement.mjs +++ b/api/runtime/test/vm_placement.mjs @@ -195,13 +195,16 @@ try { assert.equal(existsSync(guestPath(state, vmName("shop"), `/layerfs/bundle/images/${image}.tar`)), true, "the image archive came in with the bundle"); // the client side: this project's deployment, and this project's endpoint - // #527 F4: the VM deployment names its backend; a host LAYERFS_SANDBOX_BACKEND does not replace it + // #527 F4: the VM deployment names its backend; a host LAYERFS_SANDBOX or the former + // LAYERFS_SANDBOX_BACKEND does not replace it (step 11: it is LAYERFS_SANDBOX=namespaces) + process.env.LAYERFS_SANDBOX = "docker"; process.env.LAYERFS_SANDBOX_BACKEND = "native"; const env = deploymentEnv(runtime.settings, runtime.platform, { name: "shop" }); + delete process.env.LAYERFS_SANDBOX; delete process.env.LAYERFS_SANDBOX_BACKEND; assert.equal(env.WORKER_ENDPOINT, endpointFile(home, "shop"), "agents an integration launches reach this project's VM"); assert.equal(env.STORE_PATH, `${GUEST.store}/global/store.sqlite`, "the Store disk is the Store's directory"); - assert.deepEqual([env.SANDBOX, env.SANDBOX_BACKEND], ["native", "namespaces"]); + assert.deepEqual([env.SANDBOX, env.SANDBOX_BACKEND], ["namespaces", ""]); assert.equal(env.IMAGE, `sha256:${image}`, "a bundle with an image gives the deployment its digest"); assert.equal(env.IMAGE_ARCHIVE, `${GUEST.bundle}/images/${image}.tar`, "and the archive in this VM's own copy of the bundle"); assert.equal(env.LOCAL_DIR, `${GUEST.store}/local`, "Sandbox directories are on the Store disk, never the VM's own root"); diff --git a/engine/crates/layerfs-api/PROVIDERS.md b/engine/crates/layerfs-api/PROVIDERS.md index 5b4d330a6..449d2c39e 100644 --- a/engine/crates/layerfs-api/PROVIDERS.md +++ b/engine/crates/layerfs-api/PROVIDERS.md @@ -4,10 +4,10 @@ Status: Current general guide. Native macOS is implemented and host-verified; Li `layerfs-sandbox` exposes `Runtime` (a deployment's choice: `Docker`, `MacosNative`, `LinuxNative`, `Namespaces` (Linux only); Windows has none and runs the Linux build through WSL2 or a VM) and `Sandbox` (the launched owner of one Sandbox). `layerfs_sandbox::{Runtime, Sandbox}` re-export both; the crate root also re-exports the inputs and records they share (formerly `layerfs_sandbox::provider`, #527 step 9a). Backend-specific items are in `layerfs_sandbox::docker`, `::native` and `::namespaces` (formerly under `layerfs_sandbox::backend`, #527 step 9b); the providers, `Docker` and `HelperSpec` are also at the root. `ExecRequest` lives in the shared types layer; its Docker re-export remains compatible. `SandboxId` aliases the existing `ContainerId`, preserving encoded identities and records. The runtime layer has no daemon control dependency. -`Runtime::Namespaces(NamespaceProvider)` (Linux) runs each daemon in its own mount, PID and IPC namespaces and cgroup v2 directory, on a root overlaid on the Sandbox image; it is selected by `deploy.sandboxBackend` `namespaces` under `deploy.sandbox` `native`. `Runtime::MacosNative(..)` and `Runtime::LinuxNative(..)` wrap `NativeMacosProvider::new(root)` and `NativeLinuxProvider::new(root)`, the two aliases of the same native implementation whose instances share the existing local runtime owner. Each refuses the wrong platform before root access. macOS uses Darwin process facts, the `mount` table and `umount -f`; Linux uses the retained #402 `/proc` PID/start/boot checks, process groups and lazy `MNT_DETACH`. Linux requires a root daemon and a root directory traversable by command users; ordinary commands keep #402's nonroot identity (Node selects 501:20) and fixed container PATH. macOS keeps the caller identity, inherited PATH and loopback NFS. The provider alone selects `LAYERFS_KERNEL=fuse` on Linux and `nfs` on macOS and rejects any launch environment that names it (#527 step 6). Launch preserves the original single-attempt process lifecycle, native identity, inherited PATH, NFS environment and partial owner on failure. `inspect` reports exact process liveness; unknown exit/storage facts stay absent. There is no Windows runtime (#527 D2): Windows runs the Linux build through WSL2 or a VM. Records remain the Node binding's responsibility; runtimes neither scan directories nor infer project ownership. B8 list aggregation and doctor remain future work. +`Runtime::Namespaces(NamespaceProvider)` (Linux) runs each daemon in its own mount, PID and IPC namespaces and cgroup v2 directory, on a root overlaid on the Sandbox image; it is selected by `deploy.sandbox` `namespaces` (LAYERFS_SANDBOX; the former `deploy.sandboxBackend` `namespaces` under `deploy.sandbox` `native` is still mapped for one release, #527 step 11). `Runtime::MacosNative(..)` and `Runtime::LinuxNative(..)` wrap `NativeMacosProvider::new(root)` and `NativeLinuxProvider::new(root)`, the two aliases of the same native implementation whose instances share the existing local runtime owner. Each refuses the wrong platform before root access. macOS uses Darwin process facts, the `mount` table and `umount -f`; Linux uses the retained #402 `/proc` PID/start/boot checks, process groups and lazy `MNT_DETACH`. Linux requires a root daemon and a root directory traversable by command users; ordinary commands keep #402's nonroot identity (Node selects 501:20) and fixed container PATH. macOS keeps the caller identity, inherited PATH and loopback NFS. The provider alone selects `LAYERFS_KERNEL=fuse` on Linux and `nfs` on macOS and rejects any launch environment that names it (#527 step 6). Launch preserves the original single-attempt process lifecycle, native identity, inherited PATH, NFS environment and partial owner on failure. `inspect` reports exact process liveness; unknown exit/storage facts stay absent. There is no Windows runtime (#527 D2): Windows runs the Linux build through WSL2 or a VM. Records remain the Node binding's responsibility; runtimes neither scan directories nor infer project ownership. B8 list aggregation and doctor remain future work. `SandboxApi::with_runtime(Arc)` and `create_provider_file(ProviderCreate, store, manifest)` (or `create(ProviderCreate, project)`) launch through the deployment's runtime and return `ProviderSandbox`, whose `runtime` field is the `Sandbox` handle. Both Docker (via `Runtime::Docker(DockerProvider)`) and native runtimes route through this single unified API path. `WorkspaceApi::exec` delegates ordinary execution through `sandbox.runtime.run(...)` with streaming stdout/stderr buffers, and `api.close` drains and removes instances via `sandbox.runtime.stop(1)` and `sandbox.runtime.delete()`. Before launch, API validates authentication identities, selected Store, command identity and local resource ownership: overlay and mount home must belong to the instance, Store must live outside it, and native listen uses dynamic loopback. API encodes daemon configuration, then uses the shared TCP/Noise/Hello and Store-install pipeline in `sandbox/connection.rs`. Failures retain their phase, original cause, runtime, control, observed status, installation acknowledgement and handshake work. No automatic retry or cleanup occurs in API. -`layerfs-node` builds a `Runtime` from `deploy.sandbox` (`docker` by default, `native` on Linux and macOS) and, for `native`, `deploy.sandboxBackend` (`native` by default, `namespaces` on Linux), keeps the launched `Sandbox` in its Sandbox state, and reads records, image, scratch directory and background-process tracking through it. Legacy deprecated forwarders (`SandboxApi::new(Docker)`, `SandboxCreate`, `ManagedSandbox`, `from_managed`, `internal::split/exec/control_managed`) remain removed. +`layerfs-node` builds a `Runtime` from `deploy.sandbox` (`docker` by default, `native` on Linux and macOS, `namespaces` on Linux; its `runtime.rs` is the one validator, mapping the former `deploy.sandboxBackend` and refusing a conflicting pair), keeps the launched `Sandbox` in its Sandbox state, and reads records, image, scratch directory and background-process tracking through it. Legacy deprecated forwarders (`SandboxApi::new(Docker)`, `SandboxCreate`, `ManagedSandbox`, `from_managed`, `internal::split/exec/control_managed`) remain removed. The Store remains explicitly Disposable/WAL/OFF. Native macOS keeps #427's direct Store access without a worker; this refactor does not change persistence authorization or filesystem semantics. diff --git a/engine/crates/layerfs-node/src/discovery.rs b/engine/crates/layerfs-node/src/discovery.rs index 8d02f84dd..c30ea16d6 100644 --- a/engine/crates/layerfs-node/src/discovery.rs +++ b/engine/crates/layerfs-node/src/discovery.rs @@ -584,19 +584,18 @@ fn local_record(args: &SdkValue, id: &str, value: &SdkValue) -> Result // record of the `local` runtime (an earlier, unmerged build) is never // used, so nothing it names is deleted let native = args.get("deploy").is_some_and(|deploy| { - crate::runtime::native(deploy) - && matches!( - crate::runtime::backend(deploy), - Ok(crate::runtime::Backend::Native) - ) + matches!( + crate::runtime::backend(deploy), + Ok(Some(crate::runtime::Backend::Native)) + ) }); if !native || value.get_text("runtime") != Some(NATIVE) { return Err(refused( "InvalidInput", format!( - "Sandbox {id} is a {} Sandbox, but only a native deployment with the native \ - backend (LAYERFS_SANDBOX=native, LAYERFS_SANDBOX_BACKEND unset or native) uses \ - a native record and none uses another; Sandboxes of other runtimes are never \ + "Sandbox {id} is a {} Sandbox, but only a native deployment \ + (LAYERFS_SANDBOX=native) uses a native record and none uses another; \ + Sandboxes of other runtimes are never \ mixed, so the record is neither used nor deleted. Remove what it left by hand, \ then delete LAYERFS_HOME/{}/sandboxes/{id}/sandbox.record", value.get_text("runtime").unwrap_or_default(), @@ -684,12 +683,12 @@ fn namespaces_record(args: &SdkValue, id: &str, value: &SdkValue) -> Result/-` //! with what a container held at fixed paths: its setup @@ -30,6 +31,7 @@ pub(crate) fn start( args: &SdkValue, directory: &Path, project: (&crate::registry::Project, StoreManifest), + backend: crate::runtime::Backend, ) -> Result, SdkRefusal> { let deploy = args .get("deploy") @@ -38,7 +40,7 @@ pub(crate) fn start( if cfg!(target_os = "linux") && crate::discovery::user().0 != 0 { return Err(refused( "Unsupported", - "LAYERFS_SANDBOX=native on Linux needs root for FUSE and commands as uid 501, gid 20; run inside the VM or CI box that isolates it", + "LAYERFS_SANDBOX=native or namespaces on Linux needs root for FUSE and commands as uid 501, gid 20; run inside the VM or CI box that isolates it", )); } let root = deploy.get_text("localDir").ok_or_else(|| { @@ -47,7 +49,6 @@ pub(crate) fn start( "deploy.localDir is not configured (LAYERFS_LOCAL_DIR); a native Sandbox needs it", ) })?; - let backend = crate::runtime::backend(deploy)?; let runtime = native_runtime(root, backend) .map_err(|error| refused("InvalidInput", format!("LAYERFS_LOCAL_DIR {root}: {error}")))?; let executable = PathBuf::from(text(deploy, "daemon")?); diff --git a/engine/crates/layerfs-node/src/runtime.rs b/engine/crates/layerfs-node/src/runtime.rs index cf6dda366..a16a3a67d 100644 --- a/engine/crates/layerfs-node/src/runtime.rs +++ b/engine/crates/layerfs-node/src/runtime.rs @@ -1,7 +1,8 @@ -//! A Sandbox's runtime: Docker (default), or `LAYERFS_SANDBOX=native` on +//! A Sandbox's runtime: Docker (default), `LAYERFS_SANDBOX=native` on //! Linux (root FUSE daemon, nonroot commands) and macOS (loopback NFS, -//! caller identity). Both use the same authenticated daemon control pipeline -//! and the same concrete `layerfs_sandbox::Sandbox` handle. +//! caller identity), or `LAYERFS_SANDBOX=namespaces` on Linux. All use the +//! same authenticated daemon control pipeline and the same concrete +//! `layerfs_sandbox::Sandbox` handle. use crate::job::{failed, refused}; use crate::output::Spool; use layerfs_bridge::control::{SdkRefusal, SdkValue}; @@ -19,56 +20,80 @@ pub(crate) const LOCAL: &str = "local"; /// A native Sandbox record's `runtime` (LAYERFS_SANDBOX=native): a local /// daemon serving FUSE on Linux or loopback NFS on macOS. pub(crate) const NATIVE: &str = "native"; -/// A namespace Sandbox record's `runtime` (LAYERFS_SANDBOX_BACKEND=namespaces, +/// A namespace Sandbox record's `runtime` (LAYERFS_SANDBOX=namespaces, /// Linux): a local daemon in its own mount, PID and IPC namespaces and cgroup. pub(crate) const NAMESPACES: &str = "namespaces"; -/// Which local backend a native deployment runs inside its Sandbox directory: -/// the plain native one, or the Linux namespace one. +/// Which local backend a deployment runs inside its Sandbox directory: the +/// plain native one, or the Linux namespace one. #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub(crate) enum Backend { Native, Namespaces, } -/// The local backend the deployment selects: `deploy.sandboxBackend` -/// (LAYERFS_SANDBOX_BACKEND), `native` when unset. The namespace backend is -/// Linux only; anywhere else selecting it is refused before any effect. -pub(crate) fn backend(deploy: &SdkValue) -> Result { - match deploy.get_text("sandboxBackend") { - None | Some(NATIVE) => Ok(Backend::Native), - Some(NAMESPACES) if cfg!(target_os = "linux") => Ok(Backend::Namespaces), - Some(NAMESPACES) => Err(refused( +/// The backend a deployment selects (#527 D3): `deploy.sandbox` +/// (LAYERFS_SANDBOX) unset or `docker` is Docker (`None`), `native` and +/// `namespaces` the local backends. This is the one place the setting is +/// validated; the agent only checks that each value's fields are present. +/// +/// The former pair keeps working for one release: `native` with +/// `deploy.sandboxBackend` (LAYERFS_SANDBOX_BACKEND) `namespaces` is +/// namespaces, and with it unset or `native` is native. Any other +/// combination with that setting set (`namespaces` with `native`, or `docker` +/// with either) is refused, naming both settings. The namespace backend is +/// Linux only. Every refusal comes before any effect. +pub(crate) fn backend(deploy: &SdkValue) -> Result, SdkRefusal> { + let sandbox = deploy.get_text("sandbox"); + let selected = match sandbox { + None | Some("docker") => None, + Some(NATIVE) => Some(Backend::Native), + Some(NAMESPACES) => Some(Backend::Namespaces), + Some(other) => { + return Err(refused( + "InvalidInput", + format!( + "deploy.sandbox (LAYERFS_SANDBOX) is docker, native (Linux or macOS) or \ + namespaces (Linux), not {other}" + ), + )) + } + }; + let selected = match (selected, deploy.get_text("sandboxBackend")) { + (selected, None) => selected, + (Some(Backend::Native), Some(NATIVE)) => Some(Backend::Native), + (Some(Backend::Native | Backend::Namespaces), Some(NAMESPACES)) => { + Some(Backend::Namespaces) + } + (_, Some(old)) if old != NATIVE && old != NAMESPACES => { + return Err(refused( + "InvalidInput", + format!( + "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) is native or namespaces, \ + not {old}; it is replaced by LAYERFS_SANDBOX=native or namespaces" + ), + )) + } + (_, Some(old)) => { + return Err(refused( + "InvalidInput", + format!( + "deploy.sandbox (LAYERFS_SANDBOX) {} conflicts with deploy.sandboxBackend \ + (LAYERFS_SANDBOX_BACKEND) {old}: LAYERFS_SANDBOX_BACKEND, kept for one \ + release, only refines LAYERFS_SANDBOX=native. Set LAYERFS_SANDBOX to docker, \ + native or namespaces and leave LAYERFS_SANDBOX_BACKEND unset", + sandbox.unwrap_or("unset (docker)") + ), + )) + } + }; + if selected == Some(Backend::Namespaces) && !cfg!(target_os = "linux") { + return Err(refused( "Unsupported", - "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces is Linux only; use native", - )), - Some(other) => Err(refused( - "InvalidInput", - format!( - "deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) is native or namespaces, not {other}" - ), - )), - } -} - -/// Whether the deployment selects a local daemon: `deploy.sandbox` unset or -/// `docker` is Docker, `native` is a local daemon; anything else (the -/// former `local` included) is refused before any effect. -pub(crate) fn local(deploy: &SdkValue) -> Result { - match deploy.get_text("sandbox") { - None | Some("docker") => Ok(false), - Some(NATIVE) => Ok(true), - Some(other) => Err(refused( - "InvalidInput", - format!("deploy.sandbox (LAYERFS_SANDBOX) is docker or native (Linux or macOS), not {other}"), - )), + "deploy.sandbox (LAYERFS_SANDBOX) namespaces is Linux only; use native", + )); } -} - -/// Whether the deployment selects the native route: FUSE on Linux, -/// loopback NFS on macOS, with no Docker. -pub(crate) fn native(deploy: &SdkValue) -> bool { - deploy.get_text("sandbox") == Some(NATIVE) + Ok(selected) } /// The image a Sandbox reports: its container's, the digest a namespaces diff --git a/engine/crates/layerfs-node/src/sandbox.rs b/engine/crates/layerfs-node/src/sandbox.rs index 4bbdfac06..983bf70a9 100644 --- a/engine/crates/layerfs-node/src/sandbox.rs +++ b/engine/crates/layerfs-node/src/sandbox.rs @@ -158,21 +158,21 @@ pub(crate) fn start( .get("deploy") .ok_or_else(|| refused("InvalidInput", "missing `deploy`"))?; // Inputs are read first, so a refused request leaves no creation intent. - if crate::runtime::local(deploy)? { + if let Some(backend) = crate::runtime::backend(deploy)? { let DaemonStore::File(file) = store else { return Err(refused( "Unsupported", - "a native Sandbox's daemon opens a Store file; a Sandbox of a PostgreSQL Store runs in Docker", + "a native or namespaces Sandbox's daemon opens a Store file; a Sandbox of a PostgreSQL Store runs in Docker", )); }; #[cfg(any(target_os = "linux", target_os = "macos"))] { let (project, installed) = *file; - return crate::local::start(args, directory, (&project, installed)); + return crate::local::start(args, directory, (&project, installed), backend); } #[cfg(not(any(target_os = "linux", target_os = "macos")))] { - drop(file); + drop((file, backend)); return Err(refused( "Unsupported", "LAYERFS_SANDBOX=native requires Linux (FUSE) or macOS (loopback NFS); use Docker", diff --git a/engine/crates/layerfs-node/tests/native_local.rs b/engine/crates/layerfs-node/tests/native_local.rs index f591b5975..082436d59 100644 --- a/engine/crates/layerfs-node/tests/native_local.rs +++ b/engine/crates/layerfs-node/tests/native_local.rs @@ -297,3 +297,69 @@ fn a_native_record_is_not_reopened_by_a_namespaces_deployment() { reclaim(&home, "native", Some(text(&root)), RECLAIMED); assert!(!own.exists()); } + +#[test] +fn one_sandbox_setting_maps_the_former_pair_and_refuses_conflicts() { + // #527 step 11 (D3): LAYERFS_SANDBOX=docker|native|namespaces is the one + // setting; the binding validates it and maps the former pair. A + // namespaces record makes the call read its deployment's backend. + let home = Home::new(); + let root = root(&home); + let own = own(&root); + let digest = format!("sha256:{}", "a".repeat(64)); + record( + &home, + "namespaces", + text(&own), + "layerfs-proj-1", + set("image", Some(SdkValue::text(&digest))), + ); + for (deploy, message) in [ + ( + "sandbox:'namespaces', sandboxBackend:'native'", + r"deploy\.sandbox \(LAYERFS_SANDBOX\) namespaces conflicts with deploy\.sandboxBackend \(LAYERFS_SANDBOX_BACKEND\) native", + ), + ( + "sandbox:'docker', sandboxBackend:'namespaces'", + r"\(LAYERFS_SANDBOX\) docker conflicts with .*\(LAYERFS_SANDBOX_BACKEND\) namespaces", + ), + ( + "sandboxBackend:'namespaces'", + r"\(LAYERFS_SANDBOX\) unset \(docker\) conflicts", + ), + ( + "sandbox:'native', sandboxBackend:'podman'", + r"\(LAYERFS_SANDBOX_BACKEND\) is native or namespaces, not podman", + ), + ( + "sandbox:'podman'", + r"\(LAYERFS_SANDBOX\) is docker, native \(Linux or macOS\) or namespaces \(Linux\), not podman", + ), + ] { + home.node( + &format!( + "const r = await native.backendCall('runtime.sandbox.reclaim', {{...args, deploy:{{{deploy}, localDir:{:?}}}}}); + assert.equal(r.refused?.code, 'InvalidInput', JSON.stringify(r)); + assert.match(r.refused.message, /{message}/);", + text(&root) + ), + None, + Duration::from_secs(10), + ); + } + assert!(own.join("daemon.log").exists()); + assert!(home.0.join("proj/sandboxes/1/sandbox.record").exists()); + // the former pair with the native backend named is native: a stopped + // native record is its own and is reclaimed + record(&home, "native", text(&own), "layerfs-proj-1", |_| {}); + home.node( + &format!( + "const r = await native.backendCall('runtime.sandbox.reclaim', {{...args, deploy:{{sandbox:'native', sandboxBackend:'native', localDir:{:?}}}}}); + {RECLAIMED}", + text(&root) + ), + None, + Duration::from_secs(10), + ); + assert!(!own.exists()); +} From d82d6a3d5841dc2eb22ac703cfd1fbdc1944e2ec Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:25:08 +0800 Subject: [PATCH 26/37] node, runtime: every backend's Sandbox records listed, and local discovery reads them (#527 step 12, discovery) The discovery half of step 12 (F6); the sweep half is 72bd04ccfb. Since step 3 a local client always runs a Docker deployment, and under it project.list_sandboxes, runtime.sandbox.reclaim (and so sweep) and sandbox.create's reclaim refused InvalidInput on any native or namespaces record, so one such record failed them for the whole project. - layerfs-node: a new backend call runtime.sandbox.records lists every record of the project with its runtime (docker, native, namespaces, or local for the former runtime) and state (running, stopped, gone, unknown with a message) without consulting the deployment: a Docker record's container is inspected once at its own Engine as before, a native or namespaces record's process is read from this kernel by id, start time and boot (LocalProcess::alive), a local record is never read. Nothing is reopened, dialed or changed. discovery's record-process parsing is one function (recorded_process) shared with local_record_of; runtime::recorded names a record's backend. - project.list_sandboxes, runtime.sandbox.reclaim and sandbox.create's reclaim leave out a record the deployment's backend may not reopen (a native or namespaces record of another backend, a local record) instead of failing; Docker records are every deployment's, as before. Step 4's rule in local_record and namespaces_record is unchanged: reopening such a record by its number (mount, close) is still refused, never mixed. - @layerfs/runtime: sandbox/records.js reads runtime.sandbox.records with one backend call on the project's binding (no client, no Store open). On Linux (new platform capability localSandboxes: an SDK run as root can start native or namespaces Sandboxes on this home's Stores), runtime.sandbox.list adds each SQLite project's native and namespaces Sandboxes beside the containers (every row now carries runtime), and the Docker Store hook storeHolders adds the running ones (and unknown) of the Store's projects; releaseStoreHolders refuses Busy, naming them, before any docker rm, since only their own backend closes them. The vm: placement's storeHolders uses the same read instead of a client's list_sandboxes, so it sees every backend's record too. removeVolume's Busy says Sandbox(es), not container(s). - Docs: agent.md (list_sandboxes and reclaim leave other backends' records out; reopen still refuses), runtime.md (sandbox.list rows and runtime, Store removal holders, sweep, localSandboxes), tests/README.md. No tests deleted. Adapted (native_local): a_record_of_the_former_local_ runtime_is_never_used_nor_deleted and a_native_record_is_not_reopened_by_ a_namespaces_deployment now expect reclaim to leave the record out (reclaimed []) and check the never-mixed refusal through sandbox.close. Added: native_local::every_backend_s_record_is_listed_with_its_runtime_ and_state (stopped native, running namespaces with this test's own process, local unknown; list_sandboxes and reclaim of a Docker deployment leave them out and remove nothing); runtime.mjs sandboxes mode: list with records of three backends, one records call per project with no deployment, Store removal Busy with and without stopSandboxes naming the native Sandbox and removing nothing, a stopped one not a holder. The stand-in binding answers runtime.sandbox.records from recordList. Checks: cargo +1.85.1 fmt -p layerfs-node --check (pass); clippy -p layerfs-node --all-targets -D warnings on macOS and Linux (pass); tools/check_product_boundary.py (PASS; discovery.rs 997 lines, under the 999 ceiling). Linux, in the runtime image: native_local 10, native_discovery 6, layerfs-api sandbox_operations 7 (all pass). JS: runtime.mjs all 16 modes, vm_placement.mjs all 10 modes, agent native_deployment, calls, exec_output, node --test cli.test.mjs (all pass). Not run: a real Linux local runtime with a native Sandbox beside Docker ones; the vm: storeHolders change ran only against vm_placement's stand-ins. Production LOC: 123262 -> 123405 (delta +143) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 89226d75e3 and the staged tree 2b99241282; after: core 41405; engine 77639; api 4361; Co-Authored-By: Claude Opus 5.5 --- api/agent/test/fixture/fake-native.cjs | 4 +- api/docs/agent.md | 13 +- api/docs/runtime.md | 24 +++- api/runtime/src/platform/docker/linux.js | 3 + api/runtime/src/platform/docker/stores.js | 25 +++- api/runtime/src/platform/vm/index.js | 8 +- api/runtime/src/sandbox/list.js | 23 +++- api/runtime/src/sandbox/records.js | 25 ++++ api/runtime/src/store/volume.js | 9 +- api/runtime/test/runtime.mjs | 27 ++++ engine/crates/layerfs-node/src/discovery.rs | 49 ++++++-- engine/crates/layerfs-node/src/dispatch.rs | 1 + engine/crates/layerfs-node/src/runtime.rs | 13 ++ engine/crates/layerfs-node/src/workspace.rs | 101 ++++++++++++++- engine/crates/layerfs-node/tests/README.md | 6 +- .../crates/layerfs-node/tests/native_local.rs | 116 +++++++++++++++--- 16 files changed, 394 insertions(+), 53 deletions(-) create mode 100644 api/runtime/src/sandbox/records.js diff --git a/api/agent/test/fixture/fake-native.cjs b/api/agent/test/fixture/fake-native.cjs index 3bafa5178..2dff41c1e 100644 --- a/api/agent/test/fixture/fake-native.cjs +++ b/api/agent/test/fixture/fake-native.cjs @@ -11,7 +11,8 @@ // (comma-separated) is refused with code CLI_FAKE_CODE (default Conflict); // `initRefusal`, when set, is what project.init refuses; a policy depth over // 255 is refused as the addon refuses it. -// - Answers: `sandboxList` is the project's running Sandboxes, +// - Answers: `sandboxList` is the project's running Sandboxes, `recordList` +// (by project) every backend's records (runtime.sandbox.records), // `workspaceList` a Sandbox's daemon records. An exec command "exit " // ends with exit code n, stdout "out:" and stderr "err"; any other // command ends with code 3 and 5000 bytes of stdout. @@ -68,6 +69,7 @@ function answer(op, args) { case "sandbox.list_workspaces": return { value: { kind: "ok", version: "1", workspaces: exports.workspaceList } }; case "sandbox.close": return { value: { kind: "Closed", sandbox: args.sandbox } }; case "runtime.sandbox.reclaim": return { value: { kind: "ok", reclaimed: exports.reclaimed ?? [] } }; + case "runtime.sandbox.records": return { value: { kind: "ok", items: exports.recordList?.[args.project] ?? [] } }; // #506 Store-first: Stores, their projects, remotes and transfers case "runtime.store.create": return { value: { kind: "Created", store: args.store, storePath: args.storePath, bytes: 4096, sqlite: "3.50.0" } }; case "runtime.store.add_project": return { value: { kind: "Initialized", project: args.name, store: args.store, layer: "lay0", root: "r00t", storePath: args.storePath } }; diff --git a/api/docs/agent.md b/api/docs/agent.md index dcbf8c053..c0909a241 100644 --- a/api/docs/agent.md +++ b/api/docs/agent.md @@ -211,7 +211,11 @@ keeps it for its life. A Sandbox closes when idle: its daemon ends itself after 2 minutes with no Workspace and no call, and its container stops. Open connections do not keep it. `project.list_sandboxes()` skips a stopped Sandbox and keeps its -records; the next mount or `runtime.sandbox.reclaim` that meets a stopped or +records, and leaves out a Sandbox of another backend than the client's +`LAYERFS_SANDBOX` (a Docker client's list, reclaim and `sandbox.create` +neither fail on nor touch a native or namespaces record, and the reverse; +`runtime.sandbox.records` lists every record with its `runtime` and +`state`, #527 step 12); the next mount or `runtime.sandbox.reclaim` that meets a stopped or removed container reclaims the Sandbox: it deletes a stopped container (unforced, once) and removes the Sandbox's records, so the number is used again. `runtime.sandbox.sweep`, which the runtime runs once when it opens, @@ -296,9 +300,10 @@ is `native` (`LAYERFS_SANDBOX=native`, or the former pair with not reopen it either, #527) and the same `LAYERFS_LOCAL_DIR` and prefix, so it puts that Sandbox exactly where the record says; any other is refused `InvalidInput` -and nothing is deleted. A record of the former `local` runtime (an earlier, -unmerged build) is never used: it is refused the same way and nothing it -names is deleted. A daemon that ends (idle close, crash, kill) is the stopped +when it would reopen the record (a mount or close of that Sandbox), and left +out of listing and reclaim; nothing is deleted. A record of the former +`local` runtime (an earlier, unmerged build) is never used: it is refused +and left out the same way and nothing it names is deleted. A daemon that ends (idle close, crash, kill) is the stopped observation: Workspace calls to it are refused, and the next `sandbox.create` or `runtime.sandbox.reclaim` reclaims it, forcing off any mount the dead daemon left before deleting its directory. Nothing outside that directory is diff --git a/api/docs/runtime.md b/api/docs/runtime.md index d697ad4f7..be404b64d 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -23,7 +23,7 @@ try { await runtime.sandbox.reclaim("shop"); // { reclaimed: [ids] } await runtime.sandbox.list_leftovers(); await runtime.sandbox.clean_leftovers(["layerfs-old-1"]); - await runtime.sandbox.list(); // [{ name, project, sandbox, state, running, startedAt, finishedAt, image, ports, scratch, owned }] + await runtime.sandbox.list(); // [{ name, project, sandbox, runtime, state, running, startedAt, finishedAt, image, ports, scratch, owned }] await runtime.sandbox.sweep(); // { reclaimed: { project: [ids] }, failed: [{ project, code, message }] } await runtime.volume.list(); // [{ name, size, containers, owner, project, live, removable }] await runtime.volume.remove(["layerfs-shop-store-k2"]); // { results: [{ name, ok, message? }] } @@ -107,12 +107,29 @@ lines from now on, or from `since`, each with `actor`, its trace file's name. `scratch`, the bytes of the container's writable layer (what commands wrote outside every Workspace), its ports and whether a project of this home owns it. One `docker ps` and one `docker inspect --size`; it changes nothing. + Each row's `runtime` is `docker`. On Linux, where an SDK run as root can + start native and namespaces Sandboxes on this home's Stores (the platform's + `localSandboxes` capability), each SQLite project's records are read too, + through the binding's `runtime.sandbox.records` (#527 step 12, F6): every + record with its `runtime` and `state` (`running`, `stopped`, `gone` or + `unknown`), whatever backend this runtime's clients use, reopening none. + Their native and namespaces Sandboxes are listed beside the containers, + named by their directory, with no container facts (`scratch`, + `startedAt` and `finishedAt` null, no ports). +- Removing a Store (`project.delete`, `store.remove`) counts those running + native and namespaces Sandboxes (and any whose state is unknown) among its + holders on Linux: they refuse `Busy` like a running container, and with + `stopSandboxes` still `Busy`, naming each, before any container or volume + is removed: only a client of their own backend closes them. A `vm:` home's + holders are read the same way inside the project's VM. - `sandbox.sweep` runs `sandbox.reclaim` for every project of the home that has an exited or dead Sandbox container, found by the container's `layerfs.project` and `layerfs.store` labels rather than its name (the binding owns the name format). The project's records and lock decide what goes, so a container of another home, or one starting now, is never touched; containers no project records stay for `list_leftovers`. + A project's native or namespaces record does not fail its reclaim: a + Docker deployment leaves it out (#527 step 12). `open` runs it once in the background unless `sweep: false`; `status().sweep` is `null`, `{ state: "running" }` or `{ state: "done" | "failed", at, … }`, and `close` waits for it. @@ -138,9 +155,10 @@ on this host, in Docker Desktop's VM or in WSL2) and `platform/vm/` for `status`, `start`, `restart`, `init`, `path`, the Store hooks `createStore`, `storeHolders`, `releaseStoreHolders`, `releaseStore` and `removeStore`, and the home and disk helpers) and may declare capabilities instead of being named: -`initCounts: false` (macOS: this process cannot read Init's counts) and +`initCounts: false` (macOS: this process cannot read Init's counts), `uncertainInit: true` (Windows: any failed Init is kept and recorded, never -cleaned up); `platform/vm/` implements the same interface over a VM +cleaned up) and `localSandboxes: true` (Linux: native and namespaces +Sandboxes can open this placement's Stores, so discovery reads records too); `platform/vm/` implements the same interface over a VM (see [Placement](#placement-one-linux-vm-per-store)). The three Docker platforms also carry `platform.docker`, one Docker group diff --git a/api/runtime/src/platform/docker/linux.js b/api/runtime/src/platform/docker/linux.js index ef2b6fea2..71a5a988d 100644 --- a/api/runtime/src/platform/docker/linux.js +++ b/api/runtime/src/platform/docker/linux.js @@ -11,6 +11,9 @@ const NO_WORKER = "Linux runs Store calls in-process; there is no worker"; export default { name: "linux", + /** Native and namespaces Sandboxes (an SDK's LAYERFS_SANDBOX, run as root here) can open this + * placement's Stores beside its Docker ones, so discovery reads their records too (#527 F6). */ + localSandboxes: true, endpoint: () => null, async status() { return { worker: null }; }, async start() { throw refuse("InvalidInput", NO_WORKER); }, diff --git a/api/runtime/src/platform/docker/stores.js b/api/runtime/src/platform/docker/stores.js index 3054a5310..44ee38ccf 100644 --- a/api/runtime/src/platform/docker/stores.js +++ b/api/runtime/src/platform/docker/stores.js @@ -6,6 +6,8 @@ // `legacy` marks the Store a project's own Init makes, named after it (#506); // any other is a Store of the home. Each uses that platform's own Docker CLI // call (Windows goes through WSL). +import { keyOf } from "../../project/list.js"; +import { holding, recorded, recordingProjects } from "../../sandbox/records.js"; import { refuse } from "../shared.js"; const docker = (runtime, args, options = {}) => runtime.platform.docker.run(runtime.settings, args, options); @@ -28,14 +30,31 @@ export async function createStore(runtime, store) { return volume; } -/** The containers holding the Store's volume now: [{ id, state }], running or not. */ +/** The containers holding the Store's volume now: [{ id, state }], running or not. Where native + * and namespaces Sandboxes can open this placement's Stores too (`localSandboxes`, Linux), the + * running ones of the Store's projects join them, from their records (#527 step 12, F6): + * `{ id: "/", state, runtime, project, sandbox }`. */ export async function storeHolders(runtime, store) { const rows = await docker(runtime, ["ps", "-a", "--filter", `volume=${store.volume}`, "--format", "{{.ID}} {{.State}}"]); - return rows.split("\n").filter(Boolean).map((line) => { const [id, state] = line.split(" "); return { id, state }; }); + const holders = rows.split("\n").filter(Boolean).map((line) => { const [id, state] = line.split(" "); return { id, state }; }); + if (!runtime.platform.localSandboxes) return holders; + for (const project of (await recordingProjects(runtime)).filter((p) => p.store === store.name)) { + for (const item of (await recorded(runtime, project)).filter((r) => r.runtime !== "docker" && holding(r))) { + holders.push({ id: `${keyOf(project)}/${item.sandbox}`, state: item.state, runtime: item.runtime, project: keyOf(project), sandbox: item.sandbox }); + } + } + return holders; } -/** Removes the volume's holders: the running ones only when `force`. */ +/** Removes the volume's holders: the running ones only when `force`. A native or namespaces + * Sandbox is not Docker's to remove: one among them refuses Busy before any effect, naming it, + * so its own deployment closes it (`sandbox.close`). */ export async function releaseStoreHolders(runtime, store, holders, { force = false } = {}) { + const daemons = holders.filter((holder) => holder.runtime); + if (daemons.length) { + const named = daemons.map((d) => `Sandbox ${d.sandbox} of ${d.project} (${d.runtime})`).join(", "); + throw refuse("Busy", `${named} use${daemons.length === 1 ? "s" : ""} Store ${store.name} outside Docker; close ${daemons.length === 1 ? "it" : "them"} with a client whose LAYERFS_SANDBOX names that backend (sandbox.close), then remove the Store`); + } if (!holders.length) return; await docker(runtime, ["rm", ...(force ? ["-f"] : []), ...holders.map((holder) => holder.id)], { timeout: 30_000 }); } diff --git a/api/runtime/src/platform/vm/index.js b/api/runtime/src/platform/vm/index.js index 210499ab9..6f06c19d6 100644 --- a/api/runtime/src/platform/vm/index.js +++ b/api/runtime/src/platform/vm/index.js @@ -32,6 +32,7 @@ import { endpointFile, homeNames, localHome, noHomeStores, ping, ready, refuse, import { readEndpoint, releaseStore } from "../../worker/call.js"; import { callHome, GUEST } from "../../settings.js"; import { NAME, record as projectRecord } from "../../project/list.js"; +import { holding, recorded } from "../../sandbox/records.js"; import microsandbox from "./microsandbox.js"; import appleContainer from "./apple-container.js"; import ssh from "./ssh.js"; @@ -351,13 +352,14 @@ const stores = { if (code !== 0) throw refuse("Failed", `could not make ${GUEST.store} in ${name}: ${stderr.trim()}`, null); return store.volume; }, - /** The Sandboxes holding the project's Store now: its running Sandboxes, by number. A stopped VM runs none. */ + /** The Sandboxes holding the project's Store now, by number: its records' running ones (and any + * whose state is unknown), of every backend, through the binding's runtime.sandbox.records, the + * same read a Linux `local` home uses (#527 step 12). A stopped VM runs none. */ async storeHolders(runtime, store) { const { settings } = runtime, project = holderOf(settings, store, "a Store's holders"), provider = providerOf(settings); const found = await provider.inspect(vmNameOf(settings, project)); if (!found || found.state !== "running") return []; - const held = await runtime.clients.use({ name: project, volume: store.volume }, (client) => client.project.list_sandboxes(1000, 0)); - return held.items.map(({ sandbox }) => ({ id: sandbox, state: "running" })); + return (await recorded(runtime, { name: project })).filter(holding).map(({ sandbox, state }) => ({ id: sandbox, state })); }, /** Stops them the way the SDK does: `sandbox.close`, one per Sandbox. */ async releaseStoreHolders(runtime, store, holders) { diff --git a/api/runtime/src/sandbox/list.js b/api/runtime/src/sandbox/list.js index a72aa0acd..4e5db36fe 100644 --- a/api/runtime/src/sandbox/list.js +++ b/api/runtime/src/sandbox/list.js @@ -4,14 +4,31 @@ // Workspace (/tmp, which is also HOME, and the npm, node and cargo caches // there). It goes only when the container is deleted (sandbox.close, an idle // close followed by a reclaim, or runtime.sandbox.sweep). One `docker ps` -// and one `docker inspect --size` (platform/docker/sandboxes.js); it changes nothing. +// and one `docker inspect --size` (platform/docker/sandboxes.js), plus on Linux one +// runtime.sandbox.records per project (sandbox/records.js); it changes nothing. import { keyOf } from "../project/list.js"; import { dockerOf, VM_SANDBOXES } from "../platform/shared.js"; +import { recorded, recordingProjects } from "./records.js"; -/** `[{ name, project, sandbox, state, running, startedAt, finishedAt, image, ports, scratch, owned }]`, by name. */ +/** `[{ name, project, sandbox, runtime, state, running, startedAt, finishedAt, image, ports, scratch, owned }]`, + * by name. Where native and namespaces Sandboxes can run beside Docker's (`localSandboxes`, Linux), + * each project's records add those (#527 step 12, F6): named by their directory, with no container + * facts (`startedAt`, `finishedAt`, `scratch` null, no ports), `state` from the binding's + * runtime.sandbox.records (running, stopped or unknown). */ export async function list(runtime) { const docker = dockerOf(runtime, "runtime.sandbox.list", VM_SANDBOXES); - const found = await docker.sandboxes.details(runtime); + const found = (await docker.sandboxes.details(runtime)).map((c) => ({ ...c, runtime: "docker" })); + if (runtime.platform.localSandboxes) { + for (const project of await recordingProjects(runtime)) { + for (const item of (await recorded(runtime, project)).filter((r) => r.runtime !== "docker")) { + found.push({ + name: item.name, project: project.name, store: project.shared ? project.store : null, sandbox: item.sandbox, runtime: item.runtime, + state: item.state, running: item.state === "running", startedAt: null, finishedAt: null, image: item.image || null, ports: [], scratch: null, + }); + } + } + found.sort((a, b) => a.name.localeCompare(b.name)); + } if (!found.length) return []; const known = new Set((await runtime.project.list()).map(keyOf)); return found.map((c) => ({ ...c, owned: c.project !== null && known.has(c.store ? `${c.store}/${c.project}` : c.project) })); diff --git a/api/runtime/src/sandbox/records.js b/api/runtime/src/sandbox/records.js new file mode 100644 index 000000000..d711c1acb --- /dev/null +++ b/api/runtime/src/sandbox/records.js @@ -0,0 +1,25 @@ +// The Sandboxes a project's records name, of every backend (#527 step 12, +// F6). The binding's runtime.sandbox.records lists each record with its +// `runtime` (docker, native, namespaces) and `state` (running, stopped, +// gone, unknown) without matching a deployment's backend, and reopens none, +// so a native or namespaces Sandbox is found beside Docker ones. One backend +// call on the project's binding (in this process, or its worker); no client +// and no Store is opened. A `vm:` home's Store holders and a Linux `local` +// home's (platform `localSandboxes`) are read through it. +import { invokeBackend } from "@layerfs/agent/internal"; +import { callHome } from "../settings.js"; + +/** `[{ sandbox, name, runtime, image, state, workspaces, message? }]` of `project` ({ name, store?, shared? }). */ +export async function recorded(runtime, project) { + const args = { project: project.name, home: callHome(runtime.settings), ...(project.shared ? { store: project.store } : {}) }; + return (await invokeBackend("runtime.sandbox.records", args, {})).items; +} + +/** The projects of this home whose records can name a Sandbox of a host backend: SQLite ones with a home entry. */ +export async function recordingProjects(runtime) { + return (await runtime.project.list()).filter((p) => p.initialized && p.kind !== "postgresql"); +} + +/** A record that may still hold its project's Store: running, or of unknown state (a record of the + * former `local` runtime, never used, holds nothing). */ +export const holding = (item) => item.state === "running" || (item.state === "unknown" && item.runtime !== "local"); diff --git a/api/runtime/src/store/volume.js b/api/runtime/src/store/volume.js index 5aa08c202..7bde7ea4a 100644 --- a/api/runtime/src/store/volume.js +++ b/api/runtime/src/store/volume.js @@ -3,9 +3,10 @@ // failed starts and idle Sandboxes go with it. Moved from project/delete.js // (#506), where it was a project's own volume. The four Store hooks are the // platform's, keyed by Store: Docker volumes and containers on a local -// placement (platform/docker/stores.js), the project's VM, its disk and its -// namespace Sandboxes under `vm:` (#515), which holds only a project's own -// Store. One attempt per step; a failed step leaves the rest in place. +// placement (platform/docker/stores.js; on Linux also the running native and +// namespaces Sandboxes the records name, which only their own backend +// closes, #527 step 12), the project's VM, its disk and its Sandboxes under +// `vm:` (#515), which holds only a project's own Store. One attempt per step; a failed step leaves the rest in place. import { LayerFSError } from "@layerfs/agent"; import { STOPPED } from "../platform/docker/sandboxes.js"; @@ -15,7 +16,7 @@ export async function removeVolume(runtime, store, options = {}) { const { settings, platform } = runtime; const holders = await platform.storeHolders(runtime, store); const users = holders.filter((holder) => !STOPPED.has(holder.state)).length; - if (users && !options.stopSandboxes) throw new LayerFSError("Busy", `${users} running container(s) use ${store.volume}; a Sandbox closes 2 minutes after its last Workspace is unmounted, or pass stopSandboxes`, null); + if (users && !options.stopSandboxes) throw new LayerFSError("Busy", `${users} running Sandbox(es) use ${store.volume}; a Sandbox closes 2 minutes after its last Workspace is unmounted, or pass stopSandboxes`, null); await platform.releaseStoreHolders(runtime, store, holders, { force: users > 0 }); await platform.releaseStore(settings, store); await platform.removeStore(runtime, store); diff --git a/api/runtime/test/runtime.mjs b/api/runtime/test/runtime.mjs index 6f25e1a3b..3fd31c734 100644 --- a/api/runtime/test/runtime.mjs +++ b/api/runtime/test/runtime.mjs @@ -241,6 +241,33 @@ try { assert.deepEqual(listed.map((c) => [c.name, c.state, c.scratch, c.owned]), [["layerfs-gone-1", "exited", 1_000_000, false], ["layerfs-shop-1", "running", 4096, true]]); assert.deepEqual([listed[1].ports, listed[1].finishedAt, listed[0].finishedAt], [[{ container: "30421/tcp", host: "127.0.0.1", port: 54321 }], null, "2026-10-24T02:00:00Z"]); assert.deepEqual(calls.find((c) => c[0] === "inspect"), ["inspect", "--size", "id1", "id2", "id3"]); + // #527 step 12: on Linux a project's native and namespaces Sandboxes are read from its records + // (runtime.sandbox.records, every backend, no deployment matched) and listed beside the containers + native.recordList = { shop: [ + { sandbox: "1", name: "layerfs-shop-1", runtime: "docker", image: IMAGE, state: "running", workspaces: 0 }, + { sandbox: "4", name: "layerfs-shop-4", runtime: "native", image: "local", state: "running", workspaces: 1 }, + { sandbox: "5", name: "layerfs-shop-5", runtime: "namespaces", image: IMAGE, state: "stopped", workspaces: 0 }, + ] }; + const asked = native.calls.length; + const both = await runtime.sandbox.list(); + assert.deepEqual(native.args.slice(asked).filter((a, i) => native.calls[asked + i] === "runtime.sandbox.records").map((a) => [a.project, a.home, "deploy" in a]), [["shop", home, false]], "one records call per project, with no deployment"); + assert.deepEqual(both.map((c) => [c.name, c.runtime, c.state, c.running, c.owned]), [ + ["layerfs-gone-1", "docker", "exited", false, false], ["layerfs-shop-1", "docker", "running", true, true], + ["layerfs-shop-4", "native", "running", true, true], ["layerfs-shop-5", "namespaces", "stopped", false, true], + ]); + assert.deepEqual([both[2].scratch, both[2].ports, both[2].sandbox], [null, [], "4"]); + // removing the Store sees the running native Sandbox as a holder: Busy, and with stopSandboxes + // still Busy (it is not Docker's to remove), naming it, before any docker rm + const removing = calls.length; + await assert.rejects(runtime.project.delete("shop", { confirm: "shop" }), { code: "Busy" }); + await assert.rejects(runtime.project.delete("shop", { confirm: "shop", stopSandboxes: true }), { code: "Busy", message: /Sandbox 4 of shop \(native\).*LAYERFS_SANDBOX/ }); + assert.deepEqual(calls.slice(removing).filter((c) => c[0] === "rm" || c[0] === "volume"), [], "nothing was removed"); + assert.ok(existsSync(join(home, "shop"))); + // a stopped one holds nothing: only the containers are removed then (none run on the volume here) + native.recordList = { shop: [{ sandbox: "4", name: "layerfs-shop-4", runtime: "native", image: "local", state: "stopped", workspaces: 0 }] }; + const { storeHolders } = await import("../src/platform/docker/stores.js"); + assert.deepEqual((await storeHolders(runtime, { name: "shop", volume: "vol-shop", legacy: true })).filter((h) => h.runtime), []); + delete native.recordList; // sweep: only shop has an ended container of a project of this home; created ones and other projects are left alone native.reclaimed = ["2"]; const before = native.calls.length; diff --git a/engine/crates/layerfs-node/src/discovery.rs b/engine/crates/layerfs-node/src/discovery.rs index c30ea16d6..66307c915 100644 --- a/engine/crates/layerfs-node/src/discovery.rs +++ b/engine/crates/layerfs-node/src/discovery.rs @@ -637,11 +637,27 @@ fn local_record_of(args: &SdkValue, id: &str, value: &SdkValue) -> Result<(PathB ), )); } - let number = |key: &str| { - value - .get_int(key) - .ok_or_else(|| refused("InvalidInput", format!("local Sandbox record {key}"))) + let process = recorded_process(value)?; + let port = value + .get_int("port") + .ok_or_else(|| refused("InvalidInput", "local Sandbox record port"))?; + let record = LocalRecord { + name: name.to_owned(), + pid: process.pid, + start_time: process.start, + boot: process.boot, + port: u16::try_from(port).map_err(failed)?, + labels: labels(value)?, }; + Ok((directory, record)) +} +/// The daemon (native) or init (namespaces) process a local record names: +/// its id, start time and boot. A record from before boot ids has none. +#[cfg(any(target_os = "linux", target_os = "macos"))] +fn recorded_process(value: &SdkValue) -> Result { + let pid = value + .get_int("pid") + .ok_or_else(|| refused("InvalidInput", "local Sandbox record pid"))?; let boot = match value.get_text("boot") { None => None, Some(hex) => Some( @@ -651,17 +667,26 @@ fn local_record_of(args: &SdkValue, id: &str, value: &SdkValue) -> Result<(PathB .ok_or_else(|| refused("InvalidInput", "local Sandbox record boot"))?, ), }; - let record = LocalRecord { - name: name.to_owned(), - pid: u32::try_from(number("pid")?).map_err(failed)?, - start_time: registry::text(value, "start")? + Ok(LocalProcess { + pid: u32::try_from(pid).map_err(failed)?, + start: registry::text(value, "start")? .parse::() .map_err(failed)?, boot, - port: u16::try_from(number("port")?).map_err(failed)?, - labels: labels(value)?, - }; - Ok((directory, record)) + }) +} +/// Whether the process a native or namespaces record names still runs (id, +/// start time, boot), from this kernel alone: no deployment is consulted. +#[cfg(any(target_os = "linux", target_os = "macos"))] +pub(crate) fn local_running(value: &SdkValue) -> Result { + Ok(recorded_process(value)?.alive()) +} +#[cfg(not(any(target_os = "linux", target_os = "macos")))] +pub(crate) fn local_running(_: &SdkValue) -> Result { + Err(refused( + "Unsupported", + "a local process is read on Linux or macOS", + )) } /// A namespaces record is used only where this backend puts that Sandbox and /// only by a deployment that selects it: another backend never reopens or diff --git a/engine/crates/layerfs-node/src/dispatch.rs b/engine/crates/layerfs-node/src/dispatch.rs index ab21a932e..80764c7e4 100644 --- a/engine/crates/layerfs-node/src/dispatch.rs +++ b/engine/crates/layerfs-node/src/dispatch.rs @@ -154,6 +154,7 @@ pub(crate) fn backend_call(op: String, args: JsUnknown) -> napi::Result crate::sync::add(&args), "runtime.remote.remove" => crate::sync::remove(&args), "runtime.sandbox.reclaim" => workspace::reclaim(&args), + "runtime.sandbox.records" => workspace::all_records(&args), "backend.daemon.sandbox.get_log" => crate::sandbox::get_log(&args), "backend.store.project.get_history" | "backend.store.project.get_storage" diff --git a/engine/crates/layerfs-node/src/runtime.rs b/engine/crates/layerfs-node/src/runtime.rs index a16a3a67d..ccf6af093 100644 --- a/engine/crates/layerfs-node/src/runtime.rs +++ b/engine/crates/layerfs-node/src/runtime.rs @@ -96,6 +96,19 @@ pub(crate) fn backend(deploy: &SdkValue) -> Result, SdkRefusal> Ok(selected) } +/// The backend a Sandbox record names, from its `runtime`: Docker (`None`, +/// a Docker record has none), native or namespaces. A record of the former +/// `local` runtime, or of an unknown one, names none of them (`Err`, with +/// that runtime). +pub(crate) fn recorded(record: &SdkValue) -> Result, &str> { + match record.get_text("runtime") { + None => Ok(None), + Some(NATIVE) => Ok(Some(Backend::Native)), + Some(NAMESPACES) => Ok(Some(Backend::Namespaces)), + Some(other) => Err(other), + } +} + /// The image a Sandbox reports: its container's, the digest a namespaces /// Sandbox's root is an overlay of, or `local` for a native one. pub(crate) fn image(runtime: &Sandbox) -> String { diff --git a/engine/crates/layerfs-node/src/workspace.rs b/engine/crates/layerfs-node/src/workspace.rs index 8dcb0c4ca..90d9b4d24 100644 --- a/engine/crates/layerfs-node/src/workspace.rs +++ b/engine/crates/layerfs-node/src/workspace.rs @@ -138,8 +138,32 @@ fn observed( } } -/// The project's recorded Sandboxes, lowest number first, with each record. +/// The project's recorded Sandboxes that this deployment's backend may +/// reopen, lowest number first, with each record. A Docker record is every +/// deployment's, as before; a native or namespaces record is only its own +/// backend's, and a record of the former `local` runtime nobody's. The +/// others are left out, never refused, so one of them does not fail the +/// listing, reclaim or `sandbox.create` of the rest (#527 step 12); they are +/// neither reopened nor deleted here, and `runtime.sandbox.records` lists +/// them. Reopening one by its number is still refused (step 4). fn records(args: &SdkValue) -> Result, SdkRefusal> { + let deployed = match args.get("deploy") { + Some(deploy) => crate::runtime::backend(deploy)?, + None => None, + }; + let mut own = recorded_all(args)?; + own.retain(|(_, _, value)| match crate::runtime::recorded(value) { + Ok(None) => true, + Ok(backend) => backend == deployed, + Err(_) => false, + }); + Ok(own) +} + +/// Every recorded Sandbox of the project, lowest number first, with each record. +fn recorded_all( + args: &SdkValue, +) -> Result, SdkRefusal> { let mut found = Vec::new(); for id in crate::discovery::sandbox_ids(args)? { let directory = crate::discovery::sandbox_dir(args, &id)?; @@ -170,7 +194,8 @@ pub(crate) fn reclaim_gone(args: &SdkValue) -> Result<(), SdkRefusal> { /// counts its Workspace records. It reads records and inspects each /// container once; it starts nothing and changes nothing. A Sandbox found /// gone or stopped (an idle-closed one) is left out and its records kept: -/// `sandbox.create` and `runtime.sandbox.reclaim` remove them. +/// `sandbox.create` and `runtime.sandbox.reclaim` remove them. A Sandbox +/// of another backend than the deployment's is left out too ([`records`]). pub(crate) fn sandboxes(args: &SdkValue) -> Outcome { let mut items = Vec::new(); for (id, directory, value) in records(args)? { @@ -196,6 +221,78 @@ pub(crate) fn sandboxes(args: &SdkValue) -> Outcome { ])) } +/// `runtime.sandbox.records()`: every recorded Sandbox of the project, of +/// every backend, lowest number first: `{ sandbox, name, runtime, image, +/// state, workspaces }`, with `message` when `state` is `unknown`. `runtime` +/// is `docker`, `native`, `namespaces` (or `local`, the former runtime's); +/// `state` is `running`, `stopped`, `gone` (a Docker container no longer +/// there) or `unknown`. The deployment's backend is not consulted (#527 +/// step 12): a Docker record's container is inspected once at its own +/// Engine, a native or namespaces record's process is read from this kernel +/// by id, start time and boot, and a `local` record is never read. Nothing +/// is reopened, dialed, started or changed. +pub(crate) fn all_records(args: &SdkValue) -> Outcome { + let mut items = Vec::new(); + for (id, directory, value) in recorded_all(args)? { + let (runtime, state) = match crate::runtime::recorded(&value) { + Ok(None) => ( + "docker", + observed(args, &id, &value, &directory).map(|found| match found { + None => "running", + Some((_, true)) => "stopped", + Some((_, false)) => "gone", + }), + ), + Ok(Some(_)) => ( + value.get_text("runtime").unwrap_or_default(), + crate::discovery::local_running(&value).map(|alive| { + if alive { + "running" + } else { + "stopped" + } + }), + ), + Err(other) => ( + other, + Err(crate::job::refused( + "InvalidInput", + "a record of the former local runtime is never used", + )), + ), + }; + let mut fields = vec![ + ("sandbox", SdkValue::text(&id)), + ( + "name", + SdkValue::text(value.get_text("name").unwrap_or_default()), + ), + ("runtime", SdkValue::text(runtime)), + ( + "image", + SdkValue::text(value.get_text("image").unwrap_or_default()), + ), + ("workspaces", SdkValue::Int(recorded(&directory)? as i64)), + ]; + match state { + Ok(state) => fields.push(("state", SdkValue::text(state))), + Err(refusal) => fields.extend([ + ("state", SdkValue::text("unknown")), + ("message", SdkValue::text(refusal.message)), + ]), + } + items.push(SdkValue::Map( + (fields.into_iter()) + .map(|(name, value)| (name.to_owned(), value)) + .collect(), + )); + } + Ok(SdkValue::map([ + ("kind", SdkValue::text("ok")), + ("items", SdkValue::List(items)), + ])) +} + /// `runtime.sandbox.reclaim()`: removes the records of the project's /// Sandboxes whose containers are gone or stopped (and a stopped one's /// container), each under the project's guard, so their numbers are free diff --git a/engine/crates/layerfs-node/tests/README.md b/engine/crates/layerfs-node/tests/README.md index ac60e9b58..2cf0bc583 100644 --- a/engine/crates/layerfs-node/tests/README.md +++ b/engine/crates/layerfs-node/tests/README.md @@ -31,8 +31,10 @@ Node process; the fixture's fork is bounded and released on test unwinding. deployment puts that Sandbox is refused and nothing is deleted, the configured `localDir` must be absolute and plain, a stopped native Sandbox is deleted and its number freed, a damaged boot or port is refused, a native record is used only by -a native deployment, and a record of the former `local` runtime is never used or -deleted. Record handling is the same code on Linux and macOS, so it runs here; +a native deployment (another deployment's reclaim leaves it out, its close +refuses it), a record of the former `local` runtime is never used or +deleted, `LAYERFS_SANDBOX` maps the former pair and refuses conflicts, and +`runtime.sandbox.records` lists every backend's record with its state. Record handling is the same code on Linux and macOS, so it runs here; starting a native Sandbox is supported on macOS (caller identity, loopback NFS) and Linux (root daemon, nonroot 501:20 commands, FUSE). Linux lifecycle qualification also runs `layerfs-sandbox --test native_provider` as root and the SDK smoke with `LAYERFS_SANDBOX=native`. `native_admission` covers initial connection admission and its `Busy` deadline. diff --git a/engine/crates/layerfs-node/tests/native_local.rs b/engine/crates/layerfs-node/tests/native_local.rs index 082436d59..400937fb0 100644 --- a/engine/crates/layerfs-node/tests/native_local.rs +++ b/engine/crates/layerfs-node/tests/native_local.rs @@ -250,21 +250,43 @@ fn a_docker_record_stays_docker_under_a_native_deployment() { assert!(home.0.join("proj/sandboxes/1/sandbox.record").exists()); } +/// `sandbox.close` of Sandbox 1 under a `deploy` (JavaScript object text): +/// it reopens the record, so another backend's is refused (#527 step 4). +fn close_refused_as_mixed(home: &Home, deploy: &str) { + home.node( + &format!( + "const r = await native.call('sandbox.close', {{...args, deploy:{deploy}}}); + {NEITHER} + assert.match(r.refused.message, /never mixed/);" + ), + None, + Duration::from_secs(10), + ); +} + +/// Reclaim under `deploy` leaves another backend's record out: nothing is +/// reclaimed, nothing is refused (#527 step 12). +const LEFT_OUT: &str = "assert.deepEqual(r, {value:{kind:'ok',reclaimed:[]}});"; + #[test] fn a_record_of_the_former_local_runtime_is_never_used_nor_deleted() { let home = Home::new(); let root = root(&home); let own = own(&root); - let mixed = "assert.equal(r.refused?.code, 'InvalidInput', JSON.stringify(r)); - assert.match(r.refused.message, /never mixed/); - assert.match(r.refused.message, /neither used nor deleted/);"; - // a record of the former `local` runtime is used by no deployment + let native = format!("{{sandbox:'native', localDir:{:?}}}", text(&root)); + // a record of the former `local` runtime is used by no deployment: a + // reclaim leaves it out, a reopen refuses it record(&home, "local", text(&own), "layerfs-proj-1", |_| {}); - reclaim(&home, "native", Some(text(&root)), mixed); - reclaim(&home, "docker", Some(text(&root)), mixed); + reclaim(&home, "native", Some(text(&root)), LEFT_OUT); + reclaim(&home, "docker", Some(text(&root)), LEFT_OUT); + close_refused_as_mixed(&home, &native); // nor is a native record by any deployment but a native one record(&home, "native", text(&own), "layerfs-proj-1", |_| {}); - reclaim(&home, "docker", Some(text(&root)), mixed); + reclaim(&home, "docker", Some(text(&root)), LEFT_OUT); + close_refused_as_mixed( + &home, + &format!("{{sandbox:'docker', localDir:{:?}}}", text(&root)), + ); assert!(own.join("daemon.log").exists()); assert!(home.0.join("proj/sandboxes/1/sandbox.record").exists()); // a native deployment uses its own record: stopped, it is reclaimed @@ -276,26 +298,88 @@ fn a_record_of_the_former_local_runtime_is_never_used_nor_deleted() { #[test] fn a_native_record_is_not_reopened_by_a_namespaces_deployment() { // #527 step 4: reopen requires the deployment's own backend both ways; a - // namespaces deployment does not take a native record as its own + // namespaces deployment does not take a native record as its own, and + // since step 12 its reclaim leaves the record out instead of failing + let home = Home::new(); + let root = root(&home); + let own = own(&root); + record(&home, "native", text(&own), "layerfs-proj-1", |_| {}); + reclaim(&home, "namespaces", Some(text(&root)), LEFT_OUT); + close_refused_as_mixed( + &home, + &format!("{{sandbox:'namespaces', localDir:{:?}}}", text(&root)), + ); + assert!(own.join("daemon.log").exists()); + assert!(home.0.join("proj/sandboxes/1/sandbox.record").exists()); + // the same record under a native deployment is its own: reclaimed + reclaim(&home, "native", Some(text(&root)), RECLAIMED); + assert!(!own.exists()); +} + +#[test] +fn every_backend_s_record_is_listed_with_its_runtime_and_state() { + // #527 step 12: runtime.sandbox.records lists a record of any backend + // without matching the deployment's; list_sandboxes and reclaim of a + // Docker deployment leave a native record out instead of failing let home = Home::new(); let root = root(&home); let own = own(&root); + let records = + "await native.backendCall('runtime.sandbox.records', {...args, deploy:{sandbox:'docker'}})"; + let listed = + "await native.call('project.list_sandboxes', {...args, deploy:{sandbox:'docker'}})"; + // a native daemon long gone: stopped record(&home, "native", text(&own), "layerfs-proj-1", |_| {}); home.node( &format!( - "const r = await native.backendCall('runtime.sandbox.reclaim', {{...args, deploy:{{sandbox:'native', sandboxBackend:'namespaces', localDir:{:?}}}}}); - {NEITHER} - assert.match(r.refused.message, /never mixed/);", - text(&root) + "assert.deepEqual({records}, {{value:{{kind:'ok', items:[{{sandbox:'1', name:'layerfs-proj-1', runtime:'native', image:'local', workspaces:0, state:'stopped'}}]}}}}); + assert.deepEqual({listed}, {{value:{{kind:'ok', items:[]}}}});" ), None, Duration::from_secs(10), ); - assert!(own.join("daemon.log").exists()); + reclaim(&home, "docker", None, LEFT_OUT); + // a namespaces record whose process runs (this test's own): running + let stat = std::fs::read_to_string("/proc/self/stat").unwrap(); + let start = stat[stat.rfind(')').unwrap() + 2..] + .split(' ') + .nth(19) + .unwrap() + .to_owned(); + let digest = format!("sha256:{}", "a".repeat(64)); + record( + &home, + "namespaces", + text(&own), + "layerfs-proj-1", + |fields| { + set("pid", Some(SdkValue::Int(i64::from(std::process::id()))))(fields); + set("start", Some(SdkValue::text(&start)))(fields); + set("image", Some(SdkValue::text(&digest)))(fields); + }, + ); + home.node( + &format!( + "const r = {records}; + assert.deepEqual(r.value.items.map((s) => [s.runtime, s.state, s.image]), [['namespaces', 'running', {digest:?}]]); + assert.deepEqual({listed}, {{value:{{kind:'ok', items:[]}}}});" + ), + None, + Duration::from_secs(10), + ); + // a record of the former local runtime is listed and never read + record(&home, "local", text(&own), "layerfs-proj-1", |_| {}); + home.node( + &format!( + "const [item] = ({records}).value.items; + assert.deepEqual([item.runtime, item.state], ['local', 'unknown']); + assert.match(item.message, /never used/);" + ), + None, + Duration::from_secs(10), + ); + assert!(own.join("daemon.log").exists(), "listing deletes nothing"); assert!(home.0.join("proj/sandboxes/1/sandbox.record").exists()); - // the same record under a native deployment is its own: reclaimed - reclaim(&home, "native", Some(text(&root)), RECLAIMED); - assert!(!own.exists()); } #[test] From a1f91f0a9f3a4c4f169b8ec2c2e37bfe5288c729 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:27:16 +0800 Subject: [PATCH 27/37] runtime: Windows releases a Store quietly when no worker holds it The Windows platform's releaseStore read the worker endpoint file with readFileSync and threw when none existed, so removing a Store (project.delete, store.remove, a failed Init's cleanup) failed on a home whose WSL worker had never started. It now does what macOS's does (and both share worker/call.js since step 10c): readEndpoint, and return without a call when there is no endpoint or the worker does not answer a ping, since then no worker has the Store cached. A running worker is still asked once to release it; an invalid volume name is still refused InvalidInput first. No tests deleted. Added: runtime.mjs mode windows-worker (in the usage line): no endpoint resolves with no call; a stand-in worker gets one releaseStore with the WSL home and the volume's Store path; an invalid volume is refused; the endpoint of a worker that has ended sends nothing. Checks: node api/runtime/test/runtime.mjs, all 17 modes (pass); vm_placement.mjs all 10 modes (pass); agent native_deployment, calls, exec_output, node --test cli.test.mjs (pass); tools/check_product_boundary.py (PASS). No Rust changed. Not run on a Windows host. Production LOC: 123405 -> 123406 (delta +1) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent d82d6a3d58 and the staged tree 0c157d7994; after: core 41405; engine 77639; api 4362; Co-Authored-By: Claude Opus 5.5 --- .../src/platform/docker/windows/index.js | 8 +++--- api/runtime/test/runtime.mjs | 25 ++++++++++++++++++- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/api/runtime/src/platform/docker/windows/index.js b/api/runtime/src/platform/docker/windows/index.js index f61ccf51b..4437a1ba3 100644 --- a/api/runtime/src/platform/docker/windows/index.js +++ b/api/runtime/src/platform/docker/windows/index.js @@ -145,12 +145,14 @@ export default { }, // rm gets one checked child directory as an argv item, never shell text async removeHome(settings, name) { await wsl(settings, ["rm", "-rf", "--", projectHome(settings.wsl, name)], { timeout: 10_000 }); }, - /** Before a volume is deleted, the worker closes its cached Store of it. */ + /** Before a volume is deleted, the worker closes its cached Store of it. With no worker endpoint, + * or a worker that does not answer, no worker holds it, so there is nothing to release (as on + * macOS): removing a Store no worker ever opened does not fail here. */ async releaseStore(settings, store) { const { volume } = store; if (!/^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/.test(volume)) throw refuse("InvalidInput", "invalid Store volume name"); - // the worker this process started wrote it: a missing endpoint is an error here - const info = JSON.parse(readFileSync(endpointFile(settings.home), "utf8")); + const info = readEndpoint(endpointFile(settings.home)); + if (!info || !(await ping(info))) return; await releaseStore(info, settings.wsl.home, volumeStore(VOLUMES, volume)); }, async free(settings) { diff --git a/api/runtime/test/runtime.mjs b/api/runtime/test/runtime.mjs index 3fd31c734..1afdd3166 100644 --- a/api/runtime/test/runtime.mjs +++ b/api/runtime/test/runtime.mjs @@ -1,6 +1,6 @@ // @layerfs/runtime with the agent's stand-in binding and a stub Docker (#428): // no Store, Docker or daemon. One case per command: -// node api/runtime/test/runtime.mjs surface|home-mode|projects|init|state|events|leftovers|sandboxes|volumes|transport-order|macos-worker|worker-frames|docker-default|worker-docker|stores|backend +// node api/runtime/test/runtime.mjs surface|home-mode|projects|init|state|events|leftovers|sandboxes|volumes|transport-order|macos-worker|windows-worker|worker-frames|docker-default|worker-docker|stores|backend import assert from "node:assert/strict"; import { appendFileSync, chmodSync, existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, statSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; @@ -426,6 +426,29 @@ try { macos.docker.run = real; worker.close(); } + } else if (selected === "windows-worker") { + // the Windows worker's releaseStore, with a stand-in worker: before a Store's volume goes, + // a running worker closes its cached Store of it; with no endpoint (no worker ever started) + // or one that does not answer, nothing holds it and Store removal is not failed here + const { fakeWorker } = await import("../../agent/test/fixture/fake-worker.mjs"); + const windows = (await import("../src/platform/docker/windows/index.js")).default; + const settings = { home: join(work, "windows-home"), wsl: { home: "/home/me/.layerfs" } }; + const store = { name: "shop", volume: "lfs-shop-store-1", legacy: true }; + assert.equal(existsSync(join(settings.home, "worker", "endpoint.json")), false); + assert.equal(await windows.releaseStore(settings, store), undefined, "no endpoint: nothing to release"); + const worker = await fakeWorker(() => ({ value: null })); + try { + mkdirSync(join(settings.home, "worker"), { recursive: true }); + worker.endpoint(join(settings.home, "worker", "endpoint.json"), settings.wsl.home); + await windows.releaseStore(settings, store); + assert.deepEqual(worker.calls.map((c) => [c.fn, c.args.home, c.args.storePath]), [["releaseStore", "/home/me/.layerfs", "/var/lib/docker/volumes/lfs-shop-store-1/_data/global/store.sqlite"]]); + await assert.rejects(windows.releaseStore(settings, { volume: "../x" }), { code: "InvalidInput" }); + } finally { + worker.close(); + } + // the endpoint of a worker that has ended: it answers no ping, so it holds no Store + await windows.releaseStore(settings, store); + assert.equal(worker.calls.length, 1, "no release was sent to a worker that is gone"); } else if (selected === "worker-frames") { // the real worker/server.js on a stand-in sealed bundle and binding: the // unauthenticated first frame is capped, a silent connection ends after From a1bf3fd4b6a8c001a1c8fa0ac4ab55fa6587d166 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:28:14 +0800 Subject: [PATCH 28/37] test: a cell's setup is bounded by the runner's deadline In the 50e2c2bc87 pass, vm-apple-container C01 and C02 spent more than 115 s in setup (VM create plus a 2.6 GB bundle copy); run.mjs checked its deadline only after setup returned, so the outer 120 s bound killed it with no receipt and no teardown. Setup now races a timer 15 s before the deadline; when it loses, the receipt is written as FAIL (setup) and names what was left for cleanup: the run's work folder (recorded as soon as it is made) and anything named with the run's prefix. Checks: node --check; macos-native C01 with --budget-ms 15050 wrote a FAIL (setup) receipt both when the timer won and when setup finished first (then the existing "only N ms left" refusal); the one leftover work folder of the first check was removed by hand. Production LOC: 123406 -> 123406 (delta 0) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent a1f91f0a9f and the staged tree e2780c5732; after: core 41405; engine 77639; api 4362; Co-Authored-By: Claude Opus 5.5 --- api/runtime/test/verify/cells/run.mjs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/api/runtime/test/verify/cells/run.mjs b/api/runtime/test/verify/cells/run.mjs index 7d0faa8b9..0cad1b44f 100644 --- a/api/runtime/test/verify/cells/run.mjs +++ b/api/runtime/test/verify/cells/run.mjs @@ -203,6 +203,7 @@ function makeWork() { mkdirSync(workRoot(), { recursive: true, mode: 0o755 }); const work = mkdtempSync(join(workRoot(), "lfs527-")); chmodSync(work, 0o755); // a native Linux Sandbox's commands (501:20) traverse it + receipt.driver.work = work; // named at once, so a setup cut at the deadline still names it const home = join(work, "home"), source = join(work, "src"); mkdirSync(home, { mode: 0o700 }); mkdirSync(source); @@ -540,7 +541,15 @@ try { await refusals(); } else { const at = Date.now(); - const made = await SETUP[row]().catch((error) => { throw Object.assign(error, { phase: "setup" }); }); + // Setup is bounded by the invocation's deadline too: a setup still running + // 15 s before it is recorded as a failure, so the receipt is written before + // the outer bound kills this process (C01/C02 of the 50e2c2bc87 pass had none). + // What it made then is named by this run's prefix for the sweep to remove. + let late; + const made = await Promise.race([ + SETUP[row]().catch((error) => { throw Object.assign(error, { phase: "setup" }); }), + new Promise((_, reject) => { late = setTimeout(() => reject(Object.assign(new Error(`setup did not finish within ${Math.round((deadline - 15_000 - at) / 1000)} s; left for cleanup: ${receipt.driver.work ?? "no work folder yet"} and anything named ${prefix}*`), { phase: "setup" })), Math.max(0, deadline - 15_000 - Date.now())); }), + ]).finally(() => clearTimeout(late)); teardowns.push(made.teardown); receipt.driver.setupMs = Date.now() - at; receipt.bundle = bundleIdentity(made.bundle); From 09bf9d1bb0ef15c1d1904542d219eb22e5b32cf5 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:28:43 +0800 Subject: [PATCH 29/37] docs: AGENTS.md names native macOS as a direct Store exception (#527 D5) The owner chose D5's recommended option (2026-11-01): kernel_guard keeps admitting a local apfs or hfs Store directory on macOS (#427), and AGENTS.md, which said direct Store access is Linux only, gains the exception: with LAYERFS_SANDBOX=native the SDK opens the Store in its own process on this one Mac, so the one-kernel, local-filesystem rule holds. Production LOC: 123406 -> 123406 (delta 0) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent a1bf3fd4b6 and the staged tree b916aa02ec; after: core 41405; engine 77639; api 4362; Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 0a17377a7..8537e2773 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -154,6 +154,15 @@ remains a separate MEMORY/OFF/EXCLUSIVE database file. native handles and project discovery. This is independent of the macOS adapter and changes neither the product SDK nor the daemon. A lost reply is never replayed, and an uncertain Init retains its Linux home and volume. +- **Additional exception (owner, 2026-11-01, #527 D5): native macOS.** With + `LAYERFS_SANDBOX=native` on macOS, the SDK loads the macOS addon in its own + process and opens the project's Store directly on a local apfs or hfs + directory (`kernel_guard` admits those two there, #427). Its Sandboxes are + daemon processes serving loopback NFS to this Mac's own client, one user, + no container (see the agent guide's native Sandboxes). Every opener is a + process on this one Mac, so the one-kernel, local-filesystem rule holds; + network and other filesystems are still refused. The Docker, worker and + `vm:` routes on macOS are unchanged. - **Plugin-neutral LayerFS (owner, 2026-10-24).** LayerFS is agnostic to dsh and every other plugin. The macOS and Windows worker routes above are open to any integration: `@layerfs/runtime` starts the worker on those platforms From d610a82ac1553429b86a39ce43a8a39e69f2591b Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:29:13 +0800 Subject: [PATCH 30/37] test: the cell runner's vm-lima and vm-firecracker rows Two rows for the new providers (owner 2026-11-01: all four #516 VMs as real vm: placements). vm-lima is vmRow("lima"). vm-firecracker sets the provider's settings on this process's environment, where the runtime reads them: LAYERFS_FIRECRACKER_LIMA (default lfs527-vzkvm, the Lima vz host with nested virtualization), LAYERFS_FIRECRACKER_DIR (default /var/lib/lfs527-firecracker) and a per-run LAYERFS_FIRECRACKER_STATE_DIR, removed at teardown. Its microVM gets 2G unless LFS527_VM_MEMORY says otherwise, since the host has 4 GiB. Firecracker cells are pass/fail only (#516): their timings describe the nesting. Checks: node --check; setting names match the provider's source. Production LOC: 123406 -> 123406 (delta 0) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 09bf9d1bb0 and the staged tree cba36ad812; after: core 41405; engine 77639; api 4362; Co-Authored-By: Claude Opus 5.5 --- api/runtime/test/verify/cells/run.mjs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/api/runtime/test/verify/cells/run.mjs b/api/runtime/test/verify/cells/run.mjs index 0cad1b44f..96ea8cb19 100644 --- a/api/runtime/test/verify/cells/run.mjs +++ b/api/runtime/test/verify/cells/run.mjs @@ -25,7 +25,10 @@ // Other settings: LFS527_DOCKER (macOS Docker socket), LFS527_WORK (work root), // LFS527_LOCK (lock dir), LFS527_LOCK_WAIT_MS (default 45000), LFS527_VM_CPUS / // LFS527_VM_MEMORY (default 4 / 4G), LFS527_LIMA_VM, LFS527_LIMA_NODE, and for -// vm-ssh the runtime's own LAYERFS_SSH_* settings. +// vm-ssh the runtime's own LAYERFS_SSH_* settings. vm-firecracker runs in the +// Lima vz host LFS527_FIRECRACKER_LIMA (default lfs527-vzkvm) from +// LFS527_FIRECRACKER_DIR (default /var/lib/lfs527-firecracker), with 2G of +// memory unless LFS527_VM_MEMORY says otherwise (the host has 4 GiB). import { spawn, execFileSync } from "node:child_process"; import { createHash } from "node:crypto"; import { chmodSync, copyFileSync, existsSync, renameSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs"; @@ -38,7 +41,7 @@ import { CF, command, sha256 } from "./workloads.mjs"; const SELF = fileURLToPath(import.meta.url); const HERE = dirname(SELF); const CELL = join(HERE, "cell.mjs"); -const ROWS = ["macos-docker", "macos-native", "linux-docker", "linux-native", "linux-namespaces", "vm-apple-container", "vm-microsandbox", "vm-ssh", "refusals"]; +const ROWS = ["macos-docker", "macos-native", "linux-docker", "linux-native", "linux-namespaces", "vm-apple-container", "vm-microsandbox", "vm-lima", "vm-firecracker", "vm-ssh", "refusals"]; const REFUSALS = ["macos-namespaces", "vm-docker"]; // ---- arguments ------------------------------------------------------------ @@ -335,7 +338,7 @@ const need = (value, name) => { return value; }; const macDocker = () => process.env.LFS527_DOCKER || join(homedir(), ".docker", "run", "docker.sock"); -const vmSize = () => ({ cpus: Number(process.env.LFS527_VM_CPUS || 4), memory: process.env.LFS527_VM_MEMORY || "4G" }); +const vmSize = (provider) => ({ cpus: Number(process.env.LFS527_VM_CPUS || 4), memory: process.env.LFS527_VM_MEMORY || (provider === "firecracker" ? "2G" : "4G") }); const SETUP = { async "macos-docker"() { @@ -382,6 +385,8 @@ const SETUP = { }, "vm-apple-container": () => vmRow("apple-container"), "vm-microsandbox": () => vmRow("microsandbox"), + "vm-lima": () => vmRow("lima"), + "vm-firecracker": () => vmRow("firecracker"), "vm-ssh": () => vmRow("ssh"), }; @@ -392,9 +397,17 @@ async function vmRow(provider) { process.env.LAYERFS_SSH_STATE_DIR = join(workRoot(), `lfs527-ssh-state-${id}`); receipt.driver.sshStateDir = process.env.LAYERFS_SSH_STATE_DIR; } + if (provider === "firecracker") { + // the provider's settings, read by the runtime in this process; its + // microVM records go in this run's own folder (removed with it) + process.env.LAYERFS_FIRECRACKER_LIMA ||= process.env.LFS527_FIRECRACKER_LIMA || "lfs527-vzkvm"; + process.env.LAYERFS_FIRECRACKER_DIR ||= process.env.LFS527_FIRECRACKER_DIR || "/var/lib/lfs527-firecracker"; + process.env.LAYERFS_FIRECRACKER_STATE_DIR ||= join(workRoot(), `lfs527-firecracker-state-${id}`); + receipt.driver.firecracker = { lima: process.env.LAYERFS_FIRECRACKER_LIMA, dir: process.env.LAYERFS_FIRECRACKER_DIR, stateDir: process.env.LAYERFS_FIRECRACKER_STATE_DIR }; + } const made = await runtimeRow({ bundle, - settings: { placement: `vm:${provider}`, ...(provider === "ssh" ? {} : { vm: vmSize() }) }, + settings: { placement: `vm:${provider}`, ...(provider === "ssh" ? {} : { vm: vmSize(provider) }) }, after: async (runtime) => { if (provider === "ssh") { // vm:ssh never touches the user's disk on delete (ssh.js removeStore is @@ -412,6 +425,7 @@ async function vmRow(provider) { } await teardownStep("vm.delete", () => runtime.vm.delete(project, { confirm: "delete", discardStore: true })); if (provider === "ssh") await teardownStep("ssh state", () => rmSync(process.env.LAYERFS_SSH_STATE_DIR, { recursive: true, force: true })); + if (provider === "firecracker") await teardownStep("firecracker state", () => rmSync(process.env.LAYERFS_FIRECRACKER_STATE_DIR, { recursive: true, force: true })); }, }); receipt.imageDigest = made.env.LAYERFS_IMAGE ?? null; From b39550bd5c67e397b6e1180980c13d1dee5a93ec Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:29:42 +0800 Subject: [PATCH 31/37] runtime: vm:lima placement (#527 platform pass) What: a fourth real VM provider for @layerfs/runtime's VM placement (owner requirement 2026-11-01: all four VMs of #516 as real vm: adapters). platform/vm/lima.js makes one Lima vmType: vz instance per project with limactl and implements the five adapter steps: - Store disk: a raw Lima disk (limactl disk create --format raw, which vz needs) of storeSize, made before the instance. Lima formats it ext4 on first attach. The adapter bind-mounts /mnt/lima- at /layerfs/store after every boot and checks that it is ext4. - Instance: a template written to "limactl create --name -" on stdin: Ubuntu 24.04 cloud image (or vm.image when it is an https URL or an absolute path), cpus/memory from settings.vm, the home mounted writable at /layerfs/home (virtiofs), and Node.js v22.23.4 installed by a system provision script, checked against nodejs.org's SHASUMS256.txt. - Bundle and Init sources: staged in a private /.vm-copy-* folder and copied by the guest with cp -Rp onto its own disk, the same route Apple Container takes since 24681576cb. The staging folder is removed whatever the outcome. - Guest commands: root (sudo -n) over the instance's own ssh.config, with each argument quoted by ssh.js's shellEscape. The worker's secret goes in a 0600 file from stdin and never in argv. - Private stream: the instance's portForwards rule 127.0.0.1: -> 7070; a last rule ignores every other guest port. - Stop/delete: limactl stop keeps everything. limactl delete --force keeps the disk, which only discardStore (limactl disk delete) removes. settings.js lists lima as macOS only (#527 step 8; vz is Virtualization.framework). index.js registers the provider. vm_real.mjs gains lima in its provider tables and VM_REAL_PREFIX (default lfs-) for its names. Docs: api/docs/runtime.md "The Lima provider (vz)". Why the disk name is short: the first real run showed a VM restart emptying the Store. Lima's boot script finds a formatted disk by the ext4 label lima-, mkfs.ext4 cuts labels at 16 bytes, so a long disk name (lfs527-lima--shop-vm-store) is never found and the disk is formatted again at every boot. The Lima disk is therefore lfs + 8 hex of the Store volume's name. The volume's name and the home are kept as the instance's LAYERFS_STORE/LAYERFS_HOME params, which inspect answers from. Lima 1.0.4 cannot start vz on this Mac at all (gvisor-tap-vsock's resolv.conf watcher opens Docker Desktop's /var/run/docker.sock symlink: "adding watcher failed ... operation not supported on socket"). brew's Lima is now 2.2.1, upgraded by the lead's vz helper. Checks (macOS 26.4.1, M3 Max, Lima 2.2.1; each <= 120 s wall): vm_placement settings|flow|two|bundle|delete|hosts|stores|apple-container| ssh|lima|cleanup: all PASS (0-4 s each) runtime surface|home-mode|projects|init|state|events|leftovers|sandboxes| volumes|transport-order|macos-worker|worker-frames|docker-default| worker-docker|stores|backend: all PASS (0-5 s each) Real proof, one sample each, VM_REAL_PREFIX=lfs527- node api/runtime/test/verify/vm_real.mjs lima: - run 1 (base tree): FAIL at the first agent sandbox.create, "namespaces is Linux only" from cb7dc814ea; reported, fixed by the lead in 34d49eb577 (cherry-picked here as 065824f44b). - run 2 (cb7dc814ea's check reverted locally, uncommitted): FAIL after the VM restart: Lima reformatted the Store disk (the label finding above). - run 3 (short disk names, check reverted locally): PASS, 65.1 s. - run 4 (this tree, on 065824f44b): PASS, "vm real: ok in 65.2 s", 1-min load 3.6. That run covered two projects in two vz VMs, Init through each worker, Sandboxes on the h39 image unpacked on the ext4 Store disk, user namespaces blocked, Commit, stop/start on the same port, worker restart, the leftover Sandbox reclaimed, V8 refusal, and one project removed while the other runs. Afterwards limactl list and limactl disk list held none of its VMs or disks. Production LOC: 123406 -> 123560 (delta +154) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent d610a82ac1 and the staged tree f3af0efd32; after: core 41405; engine 77639; api 4516; Co-Authored-By: Claude Opus 5.5 --- api/docs/runtime.md | 70 +++++++- api/runtime/src/platform/vm/index.js | 3 +- api/runtime/src/platform/vm/lima.js | 238 +++++++++++++++++++++++++ api/runtime/src/settings.js | 9 +- api/runtime/test/fixture/fake-lima.cjs | 157 ++++++++++++++++ api/runtime/test/verify/vm_real.mjs | 17 +- api/runtime/test/vm_placement.mjs | 109 ++++++++++- 7 files changed, 583 insertions(+), 20 deletions(-) create mode 100644 api/runtime/src/platform/vm/lima.js create mode 100644 api/runtime/test/fixture/fake-lima.cjs diff --git a/api/docs/runtime.md b/api/docs/runtime.md index be404b64d..7976e195d 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -236,13 +236,15 @@ its worker runs the real SDK as root; the host reaches only each VM's worker, with one attempt per call and no replay. Providers, verified with stand-in provider CLIs (`test/vm_placement.mjs`; real runs of `test/verify/vm_real.mjs`: see the #527 platform pass): `microsandbox` -(`msb` 0.7.8), `apple-container` (`container` 1.6.1) and `ssh` (any Linux host +(`msb` 0.7.8), `apple-container` (`container` 1.6.1), `ssh` (any Linux host the user provides, reached with the system `ssh` client; see -[the SSH provider](#the-ssh-provider-any-linux-host) below). +[the SSH provider](#the-ssh-provider-any-linux-host) below), `lima` (one Lima +`vmType: vz` instance per project, `limactl` 2.2.1; see +[the Lima provider](#the-lima-provider-vz)). Each provider runs on its own host systems, checked when the settings resolve -and refused `Unsupported` elsewhere: `apple-container` on macOS only, -`microsandbox` on Linux (KVM) and macOS (Apple silicon), `ssh` on Linux and -macOS. No provider runs on a Windows host, since the placement maps this +and refused `Unsupported` elsewhere: `apple-container` and `lima` on macOS +only (vz is Apple's Virtualization.framework), `microsandbox` on Linux (KVM) and +macOS (Apple silicon), `ssh` on Linux and macOS. No provider runs on a Windows host, since the placement maps this host's folders into the guest as POSIX paths (#527 step 8). ```sh @@ -350,12 +352,13 @@ refuse any other the same way. `store.list` still lists the home's records, with folder)` and removed with `project.delete`. The real proof is `node api/runtime/test/verify/vm_real.mjs [microsandbox|apple-container]`: two projects, each in its own VM — Init +bundle> [microsandbox|apple-container|lima]` (`VM_REAL_PREFIX`, default +`lfs-`, starts every name it makes): two projects, each in its own VM — Init through each VM's worker, a fork, a write, a Sandbox, an exec as the nonroot identity with user namespaces blocked, a Commit, a stop/start of one VM and a worker restart, then a check that neither Store holds the other's Branch, and that removing one project leaves the other's VM running. The unit tests -(`node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|cleanup`) +(`node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|lima|cleanup`) use a stand-in provider CLI. ### The SSH provider (any Linux host) @@ -421,6 +424,59 @@ a busy local port, a missing or non-ext4 Store path, a non-Linux host, an unreachable network and a reconnected one, a dropped forward, a rebooted host, a refused and a permitted delete, and a second project on the same host. +### The Lima provider (vz) + +`vm:lima` makes one Lima instance per project with `limactl` (verified with +Lima 2.2.1 on macOS 26.4, Apple M3 Max, #527): `vmType: vz`, Ubuntu 24.04's +cloud image, `cpus` and `memory` from `settings.vm`. Lima 1.0.x cannot start +a vz instance on a Mac whose `/var/run` holds Docker Desktop's `docker.sock` +symlink: its user network's resolv.conf watcher opens that socket and stops +(`adding watcher failed: "/private/var/run/docker.sock": operation not +supported on socket`); Lima 2.2.1 has no such watcher. + +```sh +LAYERFS_PLACEMENT=vm:lima layerfs-home # any integration that sets it +``` + +The adapter's steps on this provider: + +1. the Store disk is a Lima disk, `limactl disk create --format raw` (vz needs + raw) of `storeSize`, made before the instance; Lima formats it ext4 on first + attach and mounts it at `/mnt/lima-`, and the adapter bind-mounts that + at `/layerfs/store` after every boot, checking it is ext4. Lima recognises a + formatted disk by its ext4 label `lima-`, which holds 16 bytes: a + longer disk name is cut, never found, and the disk is **formatted again at + every boot** (found in this pass: a VM restart emptied the Store). So the + Lima disk is named `lfs` + 8 hex digits of the Store volume's name, and the + volume's own name and the home are kept in the instance as its + `LAYERFS_STORE` and `LAYERFS_HOME` params (`/etc/layerfs-vm` in the guest); +2. the instance comes from a template the adapter writes to + `limactl create --name -` on stdin: the home mounted writable at + `/layerfs/home` (virtiofs), the Store disk, and `node` installed by a system + provision script on first boot (Node.js v22.23.4 from nodejs.org, checked + against that release's `SHASUMS256.txt`). `vm.image` names the Lima image + when it is an `https://` URL or an absolute path; the shared default (an OCI + reference) does not describe a Lima disk, so Ubuntu's image is used; +3. the bundle and Init sources reach the guest's own disk through the home + mount, as on Apple Container: a private `/.vm-copy-*` staging folder + (an APFS clone where the volume allows), `cp -Rp` in the guest, the staging + folder removed whatever the outcome; a folder already in the home is read in + place; +4. every guest command runs as root (`sudo -n`, the Lima user's passwordless + sudo) through the instance's own SSH, `ssh -F /ssh.config + lima-`, with each argument quoted by the adapter (`limactl shell` is not + used); the worker's secret goes in a 0600 file from stdin; +5. the private stream is the instance's own `portForwards` rule, + `127.0.0.1:` to guest port 7070, and a last rule ignores every other + guest port, so Lima forwards nothing else; +6. `limactl stop` keeps the instance and its disk; `limactl delete --force` + removes the instance and Lima keeps the disk, which only `discardStore` + (`limactl disk delete`) removes. A kept disk is attached again, not remade, + when the project's instance is made again. + +One sample (#527, load 3.6): `vm_real.mjs lima` passed in 65.2 s +for two projects, both VMs made, restarted and removed. + ## Docker The runtime calls the `docker` CLI, as the dsh Host did. It has no command diff --git a/api/runtime/src/platform/vm/index.js b/api/runtime/src/platform/vm/index.js index 6f06c19d6..89350155f 100644 --- a/api/runtime/src/platform/vm/index.js +++ b/api/runtime/src/platform/vm/index.js @@ -36,8 +36,9 @@ import { holding, recorded } from "../../sandbox/records.js"; import microsandbox from "./microsandbox.js"; import appleContainer from "./apple-container.js"; import ssh from "./ssh.js"; +import lima from "./lima.js"; -const PROVIDERS = { microsandbox, "apple-container": appleContainer, ssh }; +const PROVIDERS = { microsandbox, "apple-container": appleContainer, ssh, lima }; const WORKER_PORT = 7070; const SERVER = "api/runtime/src/worker/server.js"; /** Bundle hashing in the worker comes first, so readiness takes a while. */ diff --git a/api/runtime/src/platform/vm/lima.js b/api/runtime/src/platform/vm/lima.js new file mode 100644 index 000000000..3593cf443 --- /dev/null +++ b/api/runtime/src/platform/vm/lima.js @@ -0,0 +1,238 @@ +// Lima (`limactl`, `vmType: vz`, #527 platform pass, the fourth VM of #516): +// one Lima instance per project, an Ubuntu cloud image booted by Apple's +// Virtualization.framework. The five adapter steps (§6) on this provider: +// ① the VM is one instance made from a template this file writes (stdin to +// `limactl create`), and the Store disk is a Lima disk (`limactl disk +// create --format raw`, the format vz needs) that Lima formats ext4 on +// first attach and mounts at `/mnt/lima-`; this adapter bind-mounts +// it at the Store directory after every boot and checks it is ext4. +// Lima finds an already formatted disk by its ext4 label `lima-`, +// and an ext4 label holds 16 bytes: a longer disk name is cut, never +// found, and **formatted again at every boot** (found on Lima 2.2.1, +// #527). So the Lima disk is named `lfs` + 8 hex of the Store volume's +// name (16 bytes with `lima-`), and the Store volume's own name is kept +// in the instance as its `LAYERFS_STORE` param; +// ② the bundle is copied onto the VM's own disk through the home bind mount +// (virtiofs): cloned into a private `/.vm-copy-*` staging folder, +// copied by the guest with `cp -Rp`, the staging folder removed whatever +// the outcome (the route Apple Container takes, #527: a 2.7 GB bundle in +// seconds rather than a stream through SSH); +// ③ the worker runs as root (`sudo -n`, the Lima user's passwordless sudo) +// with its secret in a 0600 file written from stdin, never in argv; +// ④ the private stream is the instance's `portForwards` rule +// `127.0.0.1: -> guest 7070`; every other guest port is ignored, so +// Lima forwards nothing else; +// ⑤ `limactl stop` keeps the instance and its disk; `limactl delete --force` +// removes the instance and leaves the disk, which only `limactl disk +// delete` (the runtime's `discardStore`) removes. +// The guest has no Node.js of its own: a system provision script installs the +// pinned Node.js 22 tarball from nodejs.org, checked against that release's +// SHASUMS256.txt, once, on first boot. `settings.vm.image` names the Lima +// image when it is an https URL or an absolute file path; the shared default +// (an OCI reference for the microVM providers) does not describe a Lima disk, +// so the Ubuntu 24.04 cloud image is used instead. +// Commands go through ssh rather than `limactl shell` so the argv quoting is +// this file's (ssh.js's `shellEscape`), not the CLI's. One call per step, one +// attempt, no retry. +import { createHash } from "node:crypto"; +import { constants, cpSync, mkdtempSync, rmSync } from "node:fs"; +import { basename, isAbsolute, relative, resolve, sep } from "node:path"; +import { homedir } from "node:os"; +import { join } from "node:path"; +import { answer, capture, readFile, writeFile } from "./cli.js"; +import { shellEscape } from "./ssh.js"; + +const CLI = "limactl"; +/** First boot converts the image and installs Node.js: Lima's own wait is longer than a call's. */ +const BOOT_MS = 300_000, CALL_MS = 30_000, EXEC_MS = 60_000, COPY_MS = 120_000; +const NODE = "v22.23.4"; +const UBUNTU = "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg"; + +const call = (args, options = {}) => answer(CLI, args, { timeout: CALL_MS, ...options }); + +/** The Lima disk of a Store volume: a name whose `lima-` ext4 label fits 16 bytes (see the header). */ +export const diskName = (storeName) => `lfs${createHash("sha256").update(storeName).digest("hex").slice(0, 8)}`; + +/** The instance's folder: Lima keeps it, and its ssh.config, under LIMA_HOME (default ~/.lima). */ +export const instanceDir = (name) => join(process.env.LIMA_HOME || join(homedir(), ".lima"), name); + +/** The ssh arguments that reach an instance as its Lima user, from Lima's own ssh.config. */ +export const sshTo = (name) => ["-F", join(instanceDir(name), "ssh.config"), `lima-${name}`]; + +/** One command in the instance as root; stdin is passed through when given. */ +export const exec = (name, argv, { input = undefined, timeout = EXEC_MS } = {}) => + capture("ssh", [...sshTo(name), "--", ...["sudo", "-n", "--", ...argv].map(shellEscape)], { input, timeout }); + +/** Lima's sizes are binary units: `2G` is `2GiB`. */ +const limaSize = (size) => size.replace(/([MG])$/, "$1iB"); + +/** The instance as `limactl list --json` gives it, or null when Lima has none of that name. */ +export async function inspect(name) { + let text; + try { + text = await call(["list", "--json", name]); + } catch (error) { + if (/No instance matching/i.test(`${error.stderr ?? ""}${error.message ?? ""}`)) return null; + throw error; + } + if (!text) return null; + const record = JSON.parse(text.split("\n")[0]); + if (record.name !== name || typeof record.status !== "string") throw new Error(`limactl list answered a record this adapter does not know for ${name}`); + const config = record.config ?? {}; + const forwards = (config.portForwards ?? []).filter((rule) => !rule.ignore && rule.guestPort); + return { + state: record.status.toLowerCase(), + vmType: record.vmType ?? config.vmType ?? null, + image: config.images?.[0]?.location ?? null, + digest: null, + labels: config.param?.LAYERFS_HOME ? { "layerfs.home": config.param.LAYERFS_HOME } : {}, + ports: forwards.map((rule) => ({ guest: Number(rule.guestPort), host: Number(rule.hostPort), bind: rule.hostIP ?? null })), + home: (config.mounts ?? []).find((mount) => mount.mountPoint === "/layerfs/home")?.location ?? null, + store: config.param?.LAYERFS_STORE ?? null, + disk: config.additionalDisks?.[0]?.name ?? null, + created: null, + }; +} + +/** The Lima disks by name, from `limactl disk list --json` (one object per line). */ +async function disks() { + const text = await call(["disk", "list", "--json"]); + return text.split("\n").filter(Boolean).map((line) => JSON.parse(line)); +} + +/** Store disks this process made: a create that fails removes the one it made, and only that one. */ +const newlyCreatedStores = new Set(); + +/** Step ①'s Store disk: a raw Lima disk of `size`, made once; an existing one keeps its size. */ +export async function ensureStore(name, size) { + if ((await disks()).some((disk) => disk.name === diskName(name))) return; + await call(["disk", "create", diskName(name), "--size", limaSize(size), "--format", "raw"], { timeout: CALL_MS }); + newlyCreatedStores.add(name); +} + +/** Installs the pinned Node.js once; the worker needs it on root's PATH. */ +const NODE_SCRIPT = `#!/bin/sh +set -eu +command -v node >/dev/null 2>&1 && exit 0 +case "$(uname -m)" in aarch64) a=arm64 ;; x86_64) a=x64 ;; *) echo "no Node.js build for $(uname -m)" >&2; exit 1 ;; esac +f=node-${NODE}-linux-$a.tar.xz +t=$(mktemp -d) +curl -fsSL -o "$t/$f" https://nodejs.org/dist/${NODE}/$f +curl -fsSL -o "$t/SHASUMS256.txt" https://nodejs.org/dist/${NODE}/SHASUMS256.txt +(cd "$t" && grep " $f\\$" SHASUMS256.txt | sha256sum -c -) +tar -xJf "$t/$f" -C /usr/local --strip-components=1 +rm -rf "$t" +`; + +/** The instance's template: vz, the home mount, the Store disk, one forwarded port. */ +export function template(config) { + const image = /^(https:\/\/|\/)/.test(config.image ?? "") ? [{ location: config.image }] : [ + { location: `${UBUNTU}-arm64.img`, arch: "aarch64" }, + { location: `${UBUNTU}-amd64.img`, arch: "x86_64" }, + ]; + // JSON is YAML: every value is quoted exactly, and Lima reads it as its template + return `${JSON.stringify({ + vmType: "vz", + cpus: config.cpus, + memory: limaSize(config.memory), + images: image, + containerd: { system: false, user: false }, + mountType: "virtiofs", + mounts: [{ location: config.home, mountPoint: "/layerfs/home", writable: true }], + additionalDisks: [{ name: diskName(config.storeName), format: true, fsType: "ext4" }], + // what the runtime checks a found instance against, kept in the instance itself + param: { LAYERFS_STORE: config.storeName, LAYERFS_HOME: config.home }, + portForwards: [ + { guestPort: config.workerPort, hostIP: "127.0.0.1", hostPort: config.hostPort }, + { guestIP: "0.0.0.0", guestPortRange: [1, 65535], ignore: true }, + ], + provision: [ + { mode: "system", script: NODE_SCRIPT }, + { mode: "system", script: "#!/bin/sh\nprintf 'store=%s\\nhome=%s\\n' \"$PARAM_LAYERFS_STORE\" \"$PARAM_LAYERFS_HOME\" > /etc/layerfs-vm\n" }, + ], + }, null, 2)}\n`; +} + +/** + * The Store disk at the Store directory, by fact: Lima mounts it at + * `/mnt/lima-`; it must be ext4 there, and it is bind-mounted at + * `/layerfs/store` unless it already is (a reboot drops the bind mount). + */ +async function attach(name, store) { + const { code, stderr } = await exec(name, ["sh", "-c", + "test \"$(findmnt -n -o FSTYPE \"$1\")\" = ext4 || { echo \"$1 is not an ext4 mount\" >&2; exit 1; }; mkdir -p /layerfs/store && { mountpoint -q /layerfs/store || mount --bind \"$1\" /layerfs/store; }", + "sh", `/mnt/lima-${store}`]); + if (code !== 0) throw new Error(`could not attach the Store disk ${store} at /layerfs/store in ${name}: ${stderr.trim()}`); +} + +/** Step ①: `limactl create` from the template on stdin, then the first boot. */ +export async function create(config) { + const made = newlyCreatedStores.has(config.storeName); + newlyCreatedStores.delete(config.storeName); + const created = await capture(CLI, ["create", "--name", config.name, "--tty=false", "-"], { input: template(config), timeout: CALL_MS }); + if (created.code !== 0) { + // nothing was made under the name: the disk this create made is removed + if (made) await removeStore(config.storeName).catch(() => {}); + throw new Error(`limactl create ${config.name} failed (exit ${created.code}): ${created.stderr.trim().split("\n").slice(-3).join("; ")}`); + } + // a boot that fails keeps the instance for inspection; the caller reports its state + await call(["start", "--tty=false", config.name], { timeout: BOOT_MS }); + await attach(config.name, diskName(config.storeName)); + return inspect(config.name); +} + +export async function start(name) { + await call(["start", "--tty=false", name], { timeout: BOOT_MS }); + const found = await inspect(name); + if (found?.state === "running" && found.disk) await attach(name, found.disk); + return found; +} + +export const stop = (name) => call(["stop", name], { timeout: CALL_MS * 2 }); +export const restart = async (name) => { await stop(name); return start(name); }; +/** The instance only: Lima unlocks its disk and keeps it. */ +export const remove = (name) => call(["delete", "--force", name], { timeout: CALL_MS * 2 }); +export const removeStore = (storeName) => call(["disk", "delete", diskName(storeName)]); + +/** V4: the VM-wide user-namespace block; the caller reads it back. */ +export const blockUserNamespaces = (name) => exec(name, ["sh", "-c", "echo 0 > /proc/sys/user/max_user_namespaces"]); + +/** Free bytes of the Store disk, or null when `df` cannot answer. */ +export async function storeFree(name) { + const { code, stdout } = await exec(name, ["df", "-kP", "/layerfs/store"]); + if (code !== 0) return null; + const kb = Number(stdout.trim().split("\n").pop().trim().split(/\s+/)[3]); + return Number.isFinite(kb) ? kb * 1024 : null; +} + +/** + * Step ②, and an Init source: a host folder into a guest folder, as a copy the + * VM owns, read through the home the instance mounts (see the header). A folder + * already inside the home is read in place. One attempt; nothing is retried. + */ +export async function copy(name, source, destination) { + const found = await inspect(name); + if (!found?.home) throw new Error(`the VM ${name} mounts no LayerFS home at /layerfs/home, so a folder cannot be staged for it`); + const guestCopy = async (from) => { + const done = await exec(name, ["sh", "-c", "mkdir -p \"$2\" && cp -Rp \"$1/.\" \"$2\"", "sh", from, destination], { timeout: COPY_MS }); + if (done.code !== 0) throw new Error(`could not copy ${source} into ${name}:${destination}: ${(done.stderr || done.stdout).trim()}`); + }; + const inside = relative(found.home, resolve(source)); + if (inside && !inside.startsWith("..") && !isAbsolute(inside)) return guestCopy(`/layerfs/home/${inside.split(sep).join("/")}`); + const stage = mkdtempSync(join(found.home, ".vm-copy-")); + try { + cpSync(source, join(stage, "c"), { recursive: true, mode: constants.COPYFILE_FICLONE, verbatimSymlinks: true, preserveTimestamps: true }); + await guestCopy(`/layerfs/home/${basename(stage)}/c`); + } finally { + rmSync(stage, { recursive: true, force: true }); + } +} + +export const read = (name, path) => readFile(CLI, name, path, exec); +export const write = (name, path, text) => writeFile(CLI, name, path, text, exec); + +export default { + name: "lima", + defaultImage: null, + inspect, ensureStore, create, start, stop, restart, remove, removeStore, blockUserNamespaces, storeFree, read, write, copy, exec, +}; diff --git a/api/runtime/src/settings.js b/api/runtime/src/settings.js index 6359b069c..4b1988915 100644 --- a/api/runtime/src/settings.js +++ b/api/runtime/src/settings.js @@ -15,10 +15,13 @@ const DEFAULT_DOCKER = "/var/run/docker.sock"; * Linux VM per project (V9), by provider, with the host systems each runs on * (#527 step 8). Apple Container is macOS only; Microsandbox runs libkrun * microVMs on Linux (KVM) and macOS (Apple silicon); `ssh` needs only the - * system ssh client and tar. None runs on Windows: the VM placement maps this - * host's folders into the guest as POSIX paths. + * system ssh client and tar; `lima` makes `vmType: vz` instances, which is + * Apple's Virtualization.framework, so it is macOS only. None runs on Windows: the VM placement + * maps this host's folders into the guest as POSIX paths. */ -const PROVIDERS = { microsandbox: ["linux", "macos"], "apple-container": ["macos"], ssh: ["linux", "macos"] }; +const PROVIDERS = { + microsandbox: ["linux", "macos"], "apple-container": ["macos"], ssh: ["linux", "macos"], lima: ["macos"], +}; const NAMES = { linux: "Linux", macos: "macOS", windows: "Windows" }; /** The VM's own settings: the image that holds node and the guest base, and its size. */ const VM = { image: "node:22-trixie-slim", cpus: 2, memory: "2G", storeSize: "20G" }; diff --git a/api/runtime/test/fixture/fake-lima.cjs b/api/runtime/test/fixture/fake-lima.cjs new file mode 100644 index 000000000..90a8e087c --- /dev/null +++ b/api/runtime/test/fixture/fake-lima.cjs @@ -0,0 +1,157 @@ +// The `limactl` and `ssh` stand-in for @layerfs/runtime's vm:lima tests +// (#527 platform pass): no VM. Called as +// `fake-lima.cjs limactl …` or `fake-lima.cjs ssh …` (the test puts one shim of +// each name on PATH). It answers exactly the calls `platform/vm/lima.js` makes, +// and maps each guest's absolute paths +// under FAKE_LIMA_STATE/guest/, so guest reads and writes are real files: +// +// limactl list --json NAME | create --name N --tty=false - | start --tty=false N +// limactl stop N | delete --force N | disk list --json | disk create D … | disk delete D +// ssh -F /ssh.config lima-N -- sudo -n -- ARGV… a root command in instance N +// (a Lima VM's /layerfs/home is the host folder its template mounts there) +// +// ARGV arrives shell-quoted, as the remote shell would see it, and is unquoted +// here. A started worker is the bundle's own worker/server.js with the stand-in +// binding, listening on the VM's forwarded host port. Every call is appended to +// calls.jsonl as { at, tool, argv } with ARGV unquoted. +const { appendFileSync, cpSync, existsSync, mkdirSync, openSync, readFileSync, readdirSync, rmSync, writeFileSync } = require("node:fs"); +const { spawn } = require("node:child_process"); +const { dirname, join } = require("node:path"); + +const state = process.env.FAKE_LIMA_STATE; +if (!state) { console.error("fake lima: FAKE_LIMA_STATE is not set"); process.exit(2); } +const [tool, ...argv] = process.argv.slice(2); + +/** One POSIX-quoted word, unquoted: bare text, '…' runs and backslash escapes. */ +function unquote(word) { + let out = "", quoted = false; + for (let i = 0; i < word.length; i++) { + const c = word[i]; + if (quoted) { if (c === "'") quoted = false; else out += c; } + else if (c === "'") quoted = true; + else if (c === "\\") out += word[++i] ?? ""; + else out += c; + } + return out; +} + +const fail = (message, code = 1) => { console.error(message); process.exit(code); }; +const file = (...parts) => join(state, ...parts); +const readJson = (path) => (existsSync(path) ? JSON.parse(readFileSync(path, "utf8")) : null); +const saveJson = (path, value) => { mkdirSync(dirname(path), { recursive: true }); writeFileSync(path, JSON.stringify(value, null, 1)); }; +const guestIn = (vm) => (path) => join(state, "guest", vm, path.replace(/^\//, "")); +const stdin = () => readFileSync(0); +const log = (args) => appendFileSync(file("calls.jsonl"), `${JSON.stringify({ at: Date.now(), tool, argv: args })}\n`); + +function endWorker(vm) { + const pid = guestIn(vm)("/layerfs/state/worker.pid"); + if (!existsSync(pid)) return; + try { process.kill(Number(readFileSync(pid, "utf8").trim())); } catch { /* already gone */ } + rmSync(pid, { force: true }); +} + +/** The bundle's worker in guest `vm`, listening on `port`. */ +function launchWorker(vm, port) { + endWorker(vm); + const guest = guestIn(vm); + const env = Object.fromEntries(readFileSync(guest("/layerfs/state/worker.env"), "utf8").split("\n").filter(Boolean).map((line) => [line.slice(0, line.indexOf("=")), line.slice(line.indexOf("=") + 1)])); + const script = guest("/layerfs/bundle/api/runtime/src/worker/server.js"); + if (!existsSync(script)) fail("the bundle holds no worker/server.js"); + mkdirSync(guest("/layerfs/state"), { recursive: true }); + const child = spawn(process.execPath, [script], { + env: { ...process.env, ...env, LAYERFS_HOME: guest(env.LAYERFS_HOME), LAYERFS_BUNDLE: guest(env.LAYERFS_BUNDLE), LAYERFS_WORKER_LISTEN: `127.0.0.1:${port}`, LAYERFS_NATIVE: process.env.FAKE_LIMA_NATIVE }, + detached: true, stdio: ["ignore", "ignore", openSync(guest("/layerfs/state/worker.log"), "a")], + }); + child.unref(); + writeFileSync(guest("/layerfs/state/worker.pid"), `${child.pid}\n`); +} + +/** A guest command as the adapter sends it; answers its exit code. */ +async function guestCommand(vm, args, workerPort) { + const guest = guestIn(vm); + const [cmd, flag, script, , ...rest] = args; + if (cmd === "rm") { rmSync(guest(args.at(-1)), { recursive: true, force: true }); return 0; } + if (cmd === "df") { + process.stdout.write("Filesystem 1024-blocks Used Available Capacity Mounted on\n/dev/vdb 20971520 1048576 15728640 6% /layerfs/store\n"); + return 0; + } + if (cmd !== "sh" || flag !== "-c") { console.error(`fake guest does not know ${args.join(" ")}`); return 1; } + const path = rest[0]; + const put = (target, bytes) => { mkdirSync(dirname(guest(target)), { recursive: true }); writeFileSync(guest(target), bytes); }; + if (/test -f "\$1" && cat "\$1"/.test(script)) { + if (!existsSync(guest(path))) return 1; + process.stdout.write(readFileSync(guest(path))); + } else if (/cat > "\$1"/.test(script)) put(path, stdin()); + else if (/umask 022/.test(script)) mkdirSync(guest(path), { recursive: true, mode: 0o755 }); + else if (/max_user_namespaces/.test(script)) put("/proc/sys/user/max_user_namespaces", "0\n"); + else if (/mount --bind/.test(script)) mkdirSync(guest("/layerfs/store"), { recursive: true }); + else if (/cp -Rp "\$1\/\." "\$2"/.test(script)) { + // a Lima VM's /layerfs/home is the host home it mounts (virtiofs) + const home = readJson(vmFile(vm))?.config.mounts?.find((mount) => mount.mountPoint === "/layerfs/home")?.location; + const from = home && path.startsWith("/layerfs/home/") ? join(home, path.slice("/layerfs/home/".length)) : guest(path); + if (!existsSync(from)) { console.error(`cp: cannot stat '${path}/.': No such file or directory`); return 1; } + cpSync(from, guest(rest[1]), { recursive: true }); + } + else if (/tar -C "\$1" -xf -/.test(script)) { + mkdirSync(guest(path), { recursive: true }); + return new Promise((resolve) => { + const tar = spawn("tar", ["-C", guest(path), "-xf", "-"], { stdio: ["pipe", "ignore", "inherit"] }); + process.stdin.pipe(tar.stdin); + tar.on("close", (code) => resolve(code ?? 1)); + }); + } else if (/nohup node/.test(script)) launchWorker(vm, await workerPort()); + return 0; +} + +// --- limactl --- + +const vmFile = (name) => file("vms", `${name}.json`); +function limactl() { + log(argv); + const [command, ...args] = argv; + if (command === "list") { + const name = args.at(-1), vm = readJson(vmFile(name)); + if (!vm) fail(`level=warning msg="No instance matching ${name} found."\nlevel=fatal msg="unmatched instances"`); + process.stdout.write(`${JSON.stringify({ name, status: vm.status, dir: join(process.env.LIMA_HOME, name), vmType: vm.config.vmType, config: vm.config })}\n`); + } else if (command === "create") { + const name = args[args.indexOf("--name") + 1]; + if (readJson(vmFile(name))) fail(`level=fatal msg="instance \\"${name}\\" already exists"`); + const config = JSON.parse(stdin().toString()); + saveJson(vmFile(name), { status: "Stopped", config, template: config }); + } else if (command === "start" || command === "stop") { + const name = args.at(-1), vm = readJson(vmFile(name)) ?? fail(`instance ${name} does not exist`); + if (command === "stop") endWorker(name); + vm.status = command === "start" ? "Running" : "Stopped"; + saveJson(vmFile(name), vm); + } else if (command === "delete") { + const name = args.at(-1); + endWorker(name); + rmSync(vmFile(name), { force: true }); + rmSync(join(state, "guest", name), { recursive: true, force: true }); + } else if (command === "disk") { + const [sub, name] = args; + if (sub === "list") { + for (const entry of existsSync(file("disks")) ? readdirSync(file("disks")) : []) process.stdout.write(`${JSON.stringify(readJson(file("disks", entry)))}\n`); + } else if (sub === "create") { + if (existsSync(file("disks", `${name}.json`))) fail(`disk ${name} already exists`); + saveJson(file("disks", `${name}.json`), { name, size: args[args.indexOf("--size") + 1], format: args[args.indexOf("--format") + 1] }); + } else if (sub === "delete") rmSync(file("disks", `${name}.json`), { force: true }); + } else fail(`fake limactl does not know ${command}`); +} + +async function ssh() { + const dash = argv.indexOf("--"); + const host = argv[dash - 1].replace(/^lima-/, ""); + const remote = argv.slice(dash + 1).map(unquote); + log([...argv.slice(0, dash + 1), ...remote]); + if (remote[0] !== "sudo" || remote[1] !== "-n" || remote[2] !== "--") fail(`fake ssh: not a root command: ${remote.join(" ")}`, 255); + const args = remote.slice(3); + const vm = readJson(vmFile(host)); + if (!vm || vm.status !== "Running") fail(`ssh: connect to lima-${host}: Connection refused`, 255); + const port = vm.config.portForwards?.find((rule) => rule.guestPort)?.hostPort; + process.exit(await guestCommand(host, args, async () => port)); +} + +if (tool === "limactl") limactl(); +else if (tool === "ssh") ssh(); +else fail(`fake lima: call me as limactl or ssh, not ${tool}`); diff --git a/api/runtime/test/verify/vm_real.mjs b/api/runtime/test/verify/vm_real.mjs index 2f1a58417..3291a02d5 100644 --- a/api/runtime/test/verify/vm_real.mjs +++ b/api/runtime/test/verify/vm_real.mjs @@ -14,7 +14,8 @@ // onto a root that boot did not start, the next `sandbox.create` reclaims it and // reuses its number, and that Sandbox runs from the same unpacked image. Everything it made (both VMs, their Store disks, the home and // the sources) is removed afterwards. -// node api/runtime/test/verify/vm_real.mjs [microsandbox|apple-container] +// node api/runtime/test/verify/vm_real.mjs [microsandbox|apple-container|lima] +// VM_REAL_PREFIX (default `lfs-`) starts every VM, disk and container name. // Needs that provider's CLI and the bundle built for the host's Linux VM // (aarch64 on an M-series Mac), with a Sandbox image at `images/<64 hex>.tar`. // Under 2 minutes for small source folders; the first run pulls the image. @@ -28,7 +29,7 @@ import { join } from "node:path"; import { fileURLToPath } from "node:url"; const SELF = fileURLToPath(import.meta.url); -const CLI = { microsandbox: "msb", "apple-container": "container" }; +const CLI = { microsandbox: "msb", "apple-container": "container", lima: "limactl" }; /** An agent process: it names its project, and the endpoint of that project's VM comes from the deployment. */ async function agent(project, deployment, phase = undefined, extra = {}) { @@ -202,7 +203,7 @@ if (process.argv[2] === "agent") { const [bundle, provider = "microsandbox"] = process.argv.slice(2); if (!CLI[provider] || !bundle || process.platform !== "darwin") { - console.error("usage: vm_real.mjs [microsandbox|apple-container] (macOS host)"); + console.error("usage: vm_real.mjs [microsandbox|apple-container|lima] (macOS host)"); process.exit(2); } if (!existsSync(bundle)) { @@ -214,13 +215,17 @@ const { deploymentEnv } = await import("../../src/clients.js"); const { endpointFile } = await import("../../src/platform/shared.js"); // the provider module of the VM this run uses: the verify script reads the VM's // own disk (filesystem, image cache), which no public call answers -const DRIVER = { microsandbox: "../../src/platform/vm/microsandbox.js", "apple-container": "../../src/platform/vm/apple-container.js" }; +const DRIVER = { + microsandbox: "../../src/platform/vm/microsandbox.js", "apple-container": "../../src/platform/vm/apple-container.js", + lima: "../../src/platform/vm/lima.js", +}; const driver = (await import(DRIVER[provider])).default; const shared = process.env.LAYERFS_TEST_DIR || join(homedir(), ".cache", "layerfs-test"); mkdirSync(shared, { recursive: true }); -const work = mkdtempSync(join(shared, `lfs-${provider}-`)); -const home = join(work, "home"), id = Date.now().toString(36), prefix = `lfs-${provider}-${id}-`; +const PREFIX = process.env.VM_REAL_PREFIX || "lfs-"; +const work = mkdtempSync(join(shared, `${PREFIX}${provider}-`)); +const home = join(work, "home"), id = Date.now().toString(36), prefix = `${PREFIX}${provider}-${id}-`; const sources = {}; for (const [name, text] of [["shop", "# Shop\n"], ["blog", "# Blog\n"]]) { sources[name] = join(work, name); diff --git a/api/runtime/test/vm_placement.mjs b/api/runtime/test/vm_placement.mjs index 125283acd..8ad228fe7 100644 --- a/api/runtime/test/vm_placement.mjs +++ b/api/runtime/test/vm_placement.mjs @@ -5,7 +5,7 @@ // fixture keeps one VM record per project, maps each guest's absolute paths // under a temp folder, and starts the adapter's bundle worker so step ④'s // readiness is real. -// node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|cleanup +// node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|lima|cleanup import assert from "node:assert/strict"; import { chmodSync, cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs"; import { execFileSync } from "node:child_process"; @@ -18,6 +18,7 @@ const SOURCE = fileURLToPath(new URL("../src", import.meta.url)); const MSB = fileURLToPath(new URL("fixture/fake-msb.cjs", import.meta.url)); const CONTAINER = fileURLToPath(new URL("fixture/fake-container.cjs", import.meta.url)); const SSH = fileURLToPath(new URL("fixture/fake-ssh.cjs", import.meta.url)); +const LIMA = fileURLToPath(new URL("fixture/fake-lima.cjs", import.meta.url)); process.env.LAYERFS_NATIVE = FAKE; const { LayerFSRuntime } = await import("@layerfs/runtime"); const { resolveSettings, missing, callHome, GUEST } = await import("../src/settings.js"); @@ -50,6 +51,23 @@ function standIn(name, fixture, state) { }; } +/** The `limactl` and `ssh` stand-ins of vm:lima: one fixture, two names on PATH. */ +function limaStandIn(state) { + const bin = join(work, "lima-bin"); + mkdirSync(bin, { recursive: true }); + for (const tool of ["limactl", "ssh"]) { + writeFileSync(join(bin, tool), `#!/bin/sh\nexec "${process.execPath}" "${LIMA}" ${tool} "$@"\n`); + chmodSync(join(bin, tool), 0o755); + } + const saved = { PATH: process.env.PATH }; + process.env.PATH = `${bin}:${saved.PATH}`; + Object.assign(process.env, { FAKE_LIMA_STATE: state, FAKE_LIMA_NATIVE: FAKE, LIMA_HOME: join(state, "lima-home") }); + return () => { + process.env.PATH = saved.PATH; + for (const name of ["FAKE_LIMA_STATE", "FAKE_LIMA_NATIVE", "LIMA_HOME"]) delete process.env[name]; + }; +} + /** A sealed Linux bundle with the adapter's worker and the real SDK packages it imports. * `image` adds a Sandbox image archive at `images/.tar` (H38's convention, V7). */ function makeBundle(tag = "build-one", image = null) { @@ -66,6 +84,8 @@ function makeBundle(tag = "build-one", image = null) { } const calls = (state) => (existsSync(join(state, "calls.jsonl")) ? readFileSync(join(state, "calls.jsonl"), "utf8").trim().split("\n").filter(Boolean).map((line) => JSON.parse(line).argv) : []); +/** The remote command of a stand-in `ssh` call (unquoted by the fixture), or null. */ +const remoteOf = (argv) => (argv.includes("--") ? argv.slice(argv.indexOf("--") + 1) : null); /** Every await that could wait on a provider has a ceiling here, so a stuck * call fails this case with a name instead of hanging the harness. */ @@ -126,6 +146,13 @@ try { for (const host of ["linux", "macos"]) assert.equal(resolveSettings({ home, platform: host, placement: `vm:${provider}` }).placement.provider, provider); } assert.equal(resolveSettings({ home, platform: "macos", placement: "vm:apple-container" }).placement.provider, "apple-container"); + // Lima makes vz instances (Virtualization.framework) + for (const provider of ["lima"]) { + for (const host of ["linux", "windows"]) { + assert.throws(() => resolveSettings({ home, platform: host, placement: `vm:${provider}` }), { code: "Unsupported", message: new RegExp(`vm:${provider} runs on macOS hosts, not ${host === "linux" ? "Linux" : "Windows"}`) }); + } + assert.equal(resolveSettings({ home, platform: "macos", placement: `vm:${provider}`, bundle: "/b" }).placement.provider, provider); + } assert.throws(() => resolveSettings({ home, platform: "linux", placement: "vm:microsandbox", vm: { memory: "8" } }), { code: "InvalidInput", message: /memory/ }); // vm:ssh settings const sshSettings = resolveSettings({ @@ -526,6 +553,82 @@ try { restore(); restoreWorker(work); } + } else if (selected === "lima") { + makeBundle("build-one", "c".repeat(64)); + const state = join(work, "lima"); + mkdirSync(state); + const restore = limaStandIn(state); + const runtime = await LayerFSRuntime.open({ home, bundle, placement: "vm:lima", containerPrefix: prefix, platform: "macos", sweep: false }); + try { + const started = await deadline(60_000, "worker.start", runtime.worker.start("shop")); + assert.deepEqual([started.vm.state, started.worker.state, started.vm.store, started.vm.home], ["running", "running", storeName("shop"), home]); + const endpoint = endpointAt("shop"); + assert.equal(endpoint.vm.provider, "lima"); + // Lima finds a formatted disk by its ext4 label `lima-` (16 bytes at most): a longer + // name would be formatted again at every boot, so the disk has a short name of its own + const { diskName, template: limaTemplate } = await import("../src/platform/vm/lima.js"); + const disk = diskName(storeName("shop")); + assert.match(disk, /^lfs[0-9a-f]{8}$/); + assert.ok(`lima-${disk}`.length <= 16); + const first = calls(state); + // ① a raw Lima disk (vz needs raw) of the configured size, made before the instance + const made = first.find((argv) => argv[0] === "disk" && argv[1] === "create"); + assert.deepEqual(made, ["disk", "create", disk, "--size", "20GiB", "--format", "raw"]); + const create = first.findIndex((argv) => argv[0] === "create"); + assert.ok(create > first.indexOf(made), "the Store disk is made before the instance"); + assert.deepEqual(first[create], ["create", "--name", vmName("shop"), "--tty=false", "-"], "the template comes on stdin"); + const { template } = JSON.parse(readFileSync(join(state, "vms", `${vmName("shop")}.json`), "utf8")); + assert.deepEqual([template.vmType, template.cpus, template.memory, template.mountType], ["vz", 2, "2GiB", "virtiofs"]); + assert.deepEqual(template.mounts, [{ location: home, mountPoint: "/layerfs/home", writable: true }]); + assert.deepEqual(template.additionalDisks, [{ name: disk, format: true, fsType: "ext4" }], "Lima formats the Store disk ext4 on first attach"); + assert.deepEqual(template.param, { LAYERFS_STORE: storeName("shop"), LAYERFS_HOME: home }, "the instance keeps the Store volume's name and its home"); + // ④ the one forwarded port, private to this host's loopback; every other guest port is ignored + assert.deepEqual(template.portForwards, [ + { guestPort: 7070, hostIP: "127.0.0.1", hostPort: endpoint.port }, + { guestIP: "0.0.0.0", guestPortRange: [1, 65535], ignore: true }, + ]); + // the OCI default does not describe a Lima disk: the Ubuntu cloud image is booted, and Node.js is installed checked + assert.match(template.images[0].location, /ubuntu-24\.04-server-cloudimg-arm64\.img$/); + assert.match(template.provision[0].script, /nodejs\.org\/dist\/v22\.[0-9.]+\/SHASUMS256\.txt/); + assert.match(template.provision[0].script, /sha256sum -c/); + // every guest command is root through the instance's own ssh.config + const remote = first.filter((argv) => argv[0] === "-F").map((argv) => [argv[1], argv[2], remoteOf(argv)]); + assert.ok(remote.length > 0 && remote.every(([config, target, argv]) => config === join(state, "lima-home", vmName("shop"), "ssh.config") && target === `lima-${vmName("shop")}` && argv.slice(0, 3).join(" ") === "sudo -n --")); + const scripts = remote.map(([, , argv]) => argv.join(" ")); + assert.ok(scripts.some((line) => line.includes("mount --bind") && line.endsWith(`/mnt/lima-${disk}`)), "the Store disk is bind-mounted at the Store directory"); + assert.ok(scripts.some((line) => /max_user_namespaces/.test(line)), "step ③ blocked user namespaces"); + assert.ok(scripts.some((line) => /nohup node/.test(line)), "step ③ started the worker"); + // step ② through the home the instance mounts: a private staging folder the guest copies from, then removed + assert.ok(scripts.some((line) => /cp -Rp/.test(line) && /\/layerfs\/home\/\.vm-copy-[^/ ]+\/c \/layerfs\/bundle$/.test(line)), "the guest copied the staged bundle onto its own disk"); + assert.deepEqual(readdirSync(home).filter((entry) => entry.startsWith(".vm-copy-")), [], "no staging folder is left in the home"); + assert.equal(existsSync(guestPath(state, vmName("shop"), `/layerfs/bundle/images/${"c".repeat(64)}.tar`)), true, "with its Sandbox image"); + assert.ok(!JSON.stringify(first).includes(endpoint.secret), "no call carried the secret in its arguments"); + assert.match(readFileSync(guestPath(state, vmName("shop"), "/layerfs/state/worker.env"), "utf8"), new RegExp(`^LAYERFS_WORKER_SECRET=${endpoint.secret}$`, "m")); + // a settings image that names a Lima disk is booted as it is + assert.deepEqual(JSON.parse(limaTemplate({ name: "x", image: "https://example.com/a.img", cpus: 1, memory: "512M", home, storeName: "d", hostPort: 1, workerPort: 7070 })).images, [{ location: "https://example.com/a.img" }]); + // ⑤ stop keeps the instance and its disk; a start boots it and attaches the disk again + assert.equal((await deadline(30_000, "vm.stop", runtime.vm.stop("shop"))).state, "stopped"); + const again = await deadline(60_000, "worker.start after stop", runtime.worker.start("shop")); + assert.deepEqual([again.vm.state, again.worker.state], ["running", "running"]); + assert.equal(calls(state).filter((argv) => argv[0] === "create").length, 1, "started, not created again"); + assert.equal(calls(state).filter((argv) => remoteOf(argv)?.join(" ").includes("mount --bind")).length, 2, "the bind mount a reboot drops is made again"); + assert.equal(endpointAt("shop").port, endpoint.port, "the instance keeps its forwarded port"); + // V8, then a delete that keeps the disk, then one that discards it + project("shop"); + await assert.rejects(runtime.vm.delete("shop", { confirm: "delete" }), { code: "Unsupported", message: /never destroys a Store that was not pushed/ }); + forget("shop"); + assert.equal((await runtime.vm.delete("shop", { confirm: "delete" })).store, "kept"); + assert.ok(calls(state).some((argv) => argv.join(" ") === `delete --force ${vmName("shop")}`)); + assert.ok(!calls(state).some((argv) => argv[0] === "disk" && argv[1] === "delete"), "Lima keeps the disk when its instance goes"); + await runtime.worker.start("shop"); + assert.equal(calls(state).filter((argv) => argv[0] === "disk" && argv[1] === "create").length, 1, "the kept disk is attached to the new instance, not made again"); + assert.equal((await runtime.vm.delete("shop", { confirm: "delete", discardStore: true })).store, "discarded"); + assert.ok(calls(state).some((argv) => argv.join(" ") === `disk delete ${disk}`)); + } finally { + restore(); + await runtime.close(); + restoreWorker(work); + } } else if (selected === "cleanup") { // H39v's two findings: a provider create that fails must leave nothing // behind — no Store volume for Apple Container (the CLI makes one before it @@ -567,7 +670,7 @@ try { rmSync(hidden, { recursive: true, force: true }); } } else { - throw new Error("select settings, flow, two, bundle, delete, hosts, stores, apple-container, ssh or cleanup"); + throw new Error("select settings, flow, two, bundle, delete, hosts, stores, apple-container, ssh, lima or cleanup"); } } finally { rmSync(work, { recursive: true, force: true }); @@ -579,7 +682,7 @@ process.exit(0); /** The stand-in's worker outlives its CLI: end it from the pid the fixture wrote. */ function restoreWorker(folder) { - for (const provider of ["msb", "container", "ssh"]) { + for (const provider of ["msb", "container", "ssh", "lima"]) { const guests = join(folder, provider, "guest"); if (existsSync(guests)) { for (const vm of readdirSync(guests)) { From a8cb674f03ae68ee37da95f1411526c7288012d5 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:30:12 +0800 Subject: [PATCH 32/37] runtime: vm:firecracker placement (#527 platform pass) What: the fifth real VM provider of the VM placement (owner requirement 2026-11-01, #516's Firecracker). platform/vm/firecracker.js runs one Firecracker microVM per project inside a long-lived Lima vz instance with nested virtualization (macOS has no KVM). The Lima instance belongs to the user, like an SSH host: - LAYERFS_FIRECRACKER_LIMA names it (default layerfs-firecracker). - LAYERFS_FIRECRACKER_DIR (default /var/lib/layerfs-firecracker) holds bin/firecracker, vmlinux, rootfs.ext4 (node and an sshd) and the guest key id_ed25519. - Before any disk or VM, the adapter checks that the instance runs, that it has /dev/kvm, those files, mkfs.ext4, ip and flock. Anything missing is named. The five steps: - Store disk: /disks/.ext4, sparse and made ext4 by mkfs.ext4. It is the second drive and is mounted at /layerfs/store after boot. - VM: /vms/ holds its own rootfs copy and a config for "firecracker --no-api --config-file" (no PMU: nested KVM here has none). The guest gets 2 MiB huge pages when the host has enough free; #516 found 4 KiB first-touch faults through both hypervisors made boot take 28-55 s. Each VM has a tap lfsfc on 172.30..0/30, with the number taken under flock. The guest address comes from the kernel's ip= argument and the CI rootfs's MAC rule. The boot waits up to 60 s for the guest sshd (a readiness wait). - Guest commands: root over two SSH hops (Lima's, then the host's into the microVM). The bundle goes in as one tar stream (no shared folder). The worker's secret goes from stdin into a 0600 file. - Private stream: ssh -N -L 127.0.0.1::172.30..2:7070 from this machine, with ExitOnForwardFailure and ControlPath=none. A VM runs when its Firecracker process and the forward both run; when only the forward ended, start reopens it without a reboot. - Stop and delete: stop syncs and resets the guest (Firecracker exits), SIGKILLs after 5 s and removes the tap. Delete removes the VM folder and keeps the disk file unless discardStore. lima.js exports its ssh target, instance folder and tar stream for this adapter. settings.js lists firecracker as macOS only and index.js registers it. vm_real.mjs adds firecracker; there it reads the leftover Sandbox record in the guest, because Firecracker shares no folder with this machine. Docs: api/docs/runtime.md "The Firecracker provider (nested in Lima)". Found on the real host: Lima's ssh.config keeps a persistent control master. A multiplexed "ssh -N -L" handed its forward to that master and exited 0 at once, so the adapter could neither see the forward nor end it (smoke run 1; the stray forward was cancelled with ssh -O cancel). The forward now opens its own connection, and the stand-in test checks that. Host used (Lima 2.2.1 instance lfs527-vzkvm: vz, nestedVirtualization, 4 CPUs, 4 GiB, Ubuntu 24.04.5, vm.nr_hugepages=1100 set at runtime), with LAYERFS_FIRECRACKER_DIR=/var/lib/lfs527-firecracker. All downloads were checksum-verified: - Firecracker v1.17.0 aarch64 tgz, sha256 e351ebe4...2256; the binary is OK against the release SHA256SUMS. - CI kernel vmlinux-6.18.56 (ba2081f7...883f) and ubuntu-24.04.squashfs (7aeec171...fde5), from s3.amazonaws.com/spec.ccfc.min/firecracker-ci/20261028-84df49062576-0/aarch64/. - Node.js v22.23.4 linux-arm64, OK against SHASUMS256. The root filesystem is the squashfs plus Node.js plus the key, as a 6 GiB sparse ext4 image. Checks (macOS 26.4.1, M3 Max; each <= 120 s wall): vm_placement settings|flow|two|bundle|delete|hosts|stores|apple-container| ssh|lima|firecracker|cleanup: all PASS (0-8 s each) runtime surface|home-mode|projects|init|state|events|leftovers|sandboxes| volumes|transport-order|macos-worker|worker-frames|docker-default| worker-docker|stores|backend: all PASS (0-5 s each) Real, one sample each (pass/fail only per #516: these timings describe the nesting): - adapter smoke (one VM, then create/exec/remove): boot to SSH 6.6 s; the guest showed kernel 6.18.56, /dev/vdb ext4 at /layerfs/store, /dev/fuse, node v22.23.4 and eth0 172.30.1.2/30. - VM_REAL_PREFIX=lfs527- LAYERFS_VM_MEMORY=1G vm_real.mjs firecracker: - run 1: FAIL at the leftover-record check. It read this machine's home, which a Firecracker guest does not share; the test was fixed. - run 2: PASS, "vm real: ok in 87.3 s", 1-min load 3.5. Both runs tore down cleanly: no VM folders, disks, taps, firecracker processes or forwards left, and HugePages_Free back to 1100. Production LOC: 123560 -> 123808 (delta +248) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent b39550bd5c and the staged tree da35d7f87e; after: core 41405; engine 77639; api 4764; Co-Authored-By: Claude Opus 5.5 --- api/docs/runtime.md | 71 ++++- api/runtime/src/platform/vm/firecracker.js | 322 +++++++++++++++++++++ api/runtime/src/platform/vm/index.js | 3 +- api/runtime/src/platform/vm/lima.js | 33 +++ api/runtime/src/settings.js | 5 +- api/runtime/test/fixture/fake-lima.cjs | 114 +++++++- api/runtime/test/verify/vm_real.mjs | 20 +- api/runtime/test/vm_placement.mjs | 87 +++++- 8 files changed, 624 insertions(+), 31 deletions(-) create mode 100644 api/runtime/src/platform/vm/firecracker.js diff --git a/api/docs/runtime.md b/api/docs/runtime.md index 7976e195d..bc37e6cd7 100644 --- a/api/docs/runtime.md +++ b/api/docs/runtime.md @@ -240,10 +240,13 @@ see the #527 platform pass): `microsandbox` the user provides, reached with the system `ssh` client; see [the SSH provider](#the-ssh-provider-any-linux-host) below), `lima` (one Lima `vmType: vz` instance per project, `limactl` 2.2.1; see -[the Lima provider](#the-lima-provider-vz)). +[the Lima provider](#the-lima-provider-vz)) and `firecracker` (one Firecracker +microVM per project, nested in a Lima vz instance; see +[the Firecracker provider](#the-firecracker-provider-nested-in-lima)). Each provider runs on its own host systems, checked when the settings resolve -and refused `Unsupported` elsewhere: `apple-container` and `lima` on macOS -only (vz is Apple's Virtualization.framework), `microsandbox` on Linux (KVM) and +and refused `Unsupported` elsewhere: `apple-container`, `lima` and +`firecracker` on macOS only (vz is Apple's Virtualization.framework, and +Firecracker runs inside such an instance), `microsandbox` on Linux (KVM) and macOS (Apple silicon), `ssh` on Linux and macOS. No provider runs on a Windows host, since the placement maps this host's folders into the guest as POSIX paths (#527 step 8). @@ -352,13 +355,13 @@ refuse any other the same way. `store.list` still lists the home's records, with folder)` and removed with `project.delete`. The real proof is `node api/runtime/test/verify/vm_real.mjs [microsandbox|apple-container|lima]` (`VM_REAL_PREFIX`, default +bundle> [microsandbox|apple-container|lima|firecracker]` (`VM_REAL_PREFIX`, default `lfs-`, starts every name it makes): two projects, each in its own VM — Init through each VM's worker, a fork, a write, a Sandbox, an exec as the nonroot identity with user namespaces blocked, a Commit, a stop/start of one VM and a worker restart, then a check that neither Store holds the other's Branch, and that removing one project leaves the other's VM running. The unit tests -(`node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|lima|cleanup`) +(`node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|lima|firecracker|cleanup`) use a stand-in provider CLI. ### The SSH provider (any Linux host) @@ -477,6 +480,64 @@ The adapter's steps on this provider: One sample (#527, load 3.6): `vm_real.mjs lima` passed in 65.2 s for two projects, both VMs made, restarted and removed. +### The Firecracker provider (nested in Lima) + +`vm:firecracker` runs one Firecracker microVM per project inside a Lima vz +instance with nested virtualization (macOS has no KVM; nested KVM needs an +Apple M3 or newer and macOS 15+). Per #516 it is pass/fail only: its timings +describe the nesting. The Lima instance is the user's, like an SSH host: the +adapter makes none, names it `LAYERFS_FIRECRACKER_LIMA` (default +`layerfs-firecracker`) and proves what it needs before the first VM. In it, +`LAYERFS_FIRECRACKER_DIR` (default `/var/lib/layerfs-firecracker`) holds: + +| File | What | +| --- | --- | +| `bin/firecracker` | the Firecracker VMM (v1.17.0 verified) | +| `vmlinux` | the guest kernel, with FUSE, overlayfs, ext4 and virtio-net (the Firecracker CI 6.18 kernel has them) | +| `rootfs.ext4` | the base root filesystem: `node` 22 or newer on root's PATH, an sshd that accepts the key, `sh`, `tar`, `cp`, `mount`, `findmnt`, `df`; its eth0 address comes from the kernel's `ip=` argument (or from the MAC, as the CI rootfs does) | +| `id_ed25519` | the key the microVM's root accepts | + +The host must also have `/dev/kvm`, `mkfs.ext4`, `ip` and `flock`; a missing +item is refused by name before any disk or VM is made. + +The adapter's steps on this provider: + +1. the Store disk is `/disks/.ext4`, a sparse file of `storeSize` + made ext4 by `mkfs.ext4`, attached as the microVM's second drive and + mounted at `/layerfs/store` after boot; +2. the VM is `/vms/`: its own copy of `rootfs.ext4`, a config file + for `firecracker --no-api --config-file` (`cpus`, `memory` in MiB, no PMU), + and a tap device `lfsfc` with the /30 network `172.30..0` (host `.1`, + guest `.2`), `n` the lowest free number up to 250, taken under a lock. Guest + memory is on 2 MiB huge pages when the host has enough free + (`vm.nr_hugepages`): nested, every first touch of a 4 KiB page is a fault + through both hypervisors (#516: a 28–55 s boot became 1.9 s). The boot waits + up to 60 s for the guest's sshd (a readiness wait); +3. guest commands run as root through two SSH hops: Lima's into the host, + then the host's into the microVM (point-to-point inside the host, so its + host key is not checked); the bundle goes in as one `tar` stream (there is + no shared folder); +4. the private stream is `ssh -N -L 127.0.0.1::172.30..2:7070` to the + Lima instance with `ExitOnForwardFailure`, a process of this machine whose + record is in `LAYERFS_FIRECRACKER_STATE_DIR` (default + `~/.layerfs/firecracker`). A VM is running when both its Firecracker + process and that forward run; a VM whose forward ended reads as stopped, + and `start` reopens the forward without rebooting it; +5. stop ends the forward, syncs and resets the guest (Firecracker exits on a + guest reset; SIGKILL after 5 s) and removes its tap; delete removes the VM's + folder and keeps the Store disk file unless `discardStore`. + +As on an SSH host, no folder is shared with this machine: Init sources are +copied in, and the guest's `/layerfs/home` (Sandbox records, traces) is its +own, not this machine's home. + +Verified (#527, one sample each, load 3.5): Firecracker v1.17.0, the CI +kernel `vmlinux-6.18.56` and the CI `ubuntu-24.04.squashfs` with Node.js +v22.23.4 added (both from `s3.amazonaws.com/spec.ccfc.min/firecracker-ci/20261028-84df49062576-0/aarch64/`), +in a Lima 2.2.1 vz instance with `nestedVirtualization: true` (4 CPUs, 4 GiB, +1100 huge pages): one microVM booted to SSH in 6.6 s, and +`LAYERFS_VM_MEMORY=1G vm_real.mjs firecracker` passed in 87.3 s. + ## Docker The runtime calls the `docker` CLI, as the dsh Host did. It has no command diff --git a/api/runtime/src/platform/vm/firecracker.js b/api/runtime/src/platform/vm/firecracker.js new file mode 100644 index 000000000..95fc4bad1 --- /dev/null +++ b/api/runtime/src/platform/vm/firecracker.js @@ -0,0 +1,322 @@ +// Firecracker (#527 platform pass, the fifth VM of #516): one Firecracker +// microVM per project, run inside a long-lived Lima `vz` instance with nested +// virtualization (the "Firecracker host": macOS has no KVM, so Firecracker +// cannot run on the Mac itself; nested KVM needs an M3 or newer and macOS 15+). +// Per #516 this placement is pass/fail only: its timings describe the nesting. +// +// The host is the user's, like an SSH host: it is made once with Lima and named +// by `LAYERFS_FIRECRACKER_LIMA` (default `layerfs-firecracker`). This adapter +// makes no host; it proves what it needs by fact before the first VM — the +// host runs, `/dev/kvm` exists in it, and its folder `LAYERFS_FIRECRACKER_DIR` +// (default `/var/lib/layerfs-firecracker`) holds `bin/firecracker`, the guest +// kernel `vmlinux`, the base root filesystem `rootfs.ext4` (an ext4 image with +// node 22 on root's PATH and an sshd that accepts the key) and that key, +// `id_ed25519`. The five adapter steps (§6): +// ① the VM is `/vms/`: its own copy of the root filesystem, a +// Firecracker config file (guest memory on 2 MiB huge pages when the host +// has enough free: under nesting each first touch of a 4 KiB page is a +// fault through both hypervisors, #516), a tap device `lfsfc` with the /30 network +// `172.30..0` (host .1, guest .2, set by the kernel's `ip=` argument), +// and the Store disk `/disks/.ext4`, a sparse file made ext4 +// by `mkfs.ext4`, attached as the second drive and mounted at the Store +// directory after boot; `firecracker --config-file` runs detached; +// ② the bundle is copied in as one `tar` stream: Lima's SSH into the host, +// then the host's SSH into the microVM, unpacked as root; +// ③ the worker runs as root with its secret in a 0600 file written from +// stdin, as on every provider; +// ④ the private stream is `ssh -L 127.0.0.1::172.30..2:7070` to +// the Lima host, from this machine, with `ExitOnForwardFailure`; +// ⑤ stop ends the forward, syncs and resets the guest (Firecracker exits on +// a guest reset) and removes its tap; delete removes the VM's folder and +// keeps the Store disk unless discarded. +// The microVM's SSH is a point-to-point tap inside the host, its address is +// reused by the next VM of that number, and each VM's root filesystem is a copy +// of one image: its host key is not checked (`UserKnownHostsFile=/dev/null`). +// A VM is "running" when both its Firecracker process and this machine's +// forward run; a VM whose forward ended reads as stopped, and `start` opens the +// forward again without rebooting it. One call per step, one attempt, no retry; +// the boot's wait for the guest's sshd is a readiness wait. +import { spawn } from "node:child_process"; +import { closeSync, existsSync, mkdirSync, openSync, readFileSync, rmSync, writeFileSync } from "node:fs"; +import { homedir } from "node:os"; +import { join } from "node:path"; +import { readFile, writeFile } from "./cli.js"; +import lima, { instanceDir, sshTo, stream, UNPACK } from "./lima.js"; +import { isAlive, shellEscape } from "./ssh.js"; + +const BOOT_MS = 120_000, CALL_MS = 60_000, FORWARD_READY_MS = 600, END_MS = 3_000; +const WORKER_PORT = 7070; + +/** The Lima instance that runs Firecracker, and its folder of binaries, images and VMs. */ +export const host = () => process.env.LAYERFS_FIRECRACKER_LIMA || "layerfs-firecracker"; +export const hostDir = () => process.env.LAYERFS_FIRECRACKER_DIR || "/var/lib/layerfs-firecracker"; +const vmDir = (name) => `${hostDir()}/vms/${name}`; +const diskFile = (store) => `${hostDir()}/disks/${store}.ext4`; +/** This machine's forward records, one per VM. */ +export const stateDir = () => process.env.LAYERFS_FIRECRACKER_STATE_DIR || join(homedir(), ".layerfs", "firecracker"); + +const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); +const mib = (size) => Number(size.slice(0, -1)) * (size.endsWith("G") ? 1024 : 1); + +/** One root command in the Firecracker host. */ +const onHost = (argv, options = {}) => lima.exec(host(), argv, { timeout: CALL_MS, ...options }); + +/** One script in the host; a failure is an error naming the step. */ +async function script(what, body, args, options = {}) { + const result = await onHost(["sh", "-c", body, "sh", ...args.map(String)], options); + if (result.code !== 0) throw new Error(`${what} failed in the Firecracker host ${host()} (exit ${result.code}): ${(result.stderr || result.stdout).trim()}`); + return result.stdout; +} + +const SSH_GUEST = "-o BatchMode=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -o ConnectTimeout=5"; + +const CHECK = `# layerfs-firecracker:check +test -c /dev/kvm || { echo "there is no /dev/kvm (the Lima instance needs nestedVirtualization: true, an M3 or newer and macOS 15+)" >&2; exit 1; } +for f in bin/firecracker vmlinux rootfs.ext4 id_ed25519; do test -f "$1/$f" || { echo "$1/$f does not exist" >&2; exit 1; }; done +command -v mkfs.ext4 >/dev/null && command -v ip >/dev/null && command -v flock >/dev/null || { echo "the host needs mkfs.ext4, ip and flock" >&2; exit 1; }`; + +const DISK = `# layerfs-firecracker:disk +f="$1/disks/$2.ext4" +test -f "$f" && exit 0 +mkdir -p "$1/disks" && truncate -s "$3" "$f.part" && mkfs.ext4 -q -F "$f.part" && mv "$f.part" "$f" && echo made`; + +const CREATE = `# layerfs-firecracker:create +set -eu +root=$1 name=$2 store=$3 cpus=$4 mem=$5 +d="$root/vms/$name" +mkdir -p "$root/vms" +exec 9>"$root/vms/.lock" +flock 9 +test ! -e "$d" || { echo "$d already exists" >&2; exit 17; } +test -f "$store" || { echo "the Store disk $store does not exist" >&2; exit 1; } +n=1 +while grep -qx "INDEX=$n" "$root"/vms/*/vm.env 2>/dev/null; do n=$((n+1)); done +[ "$n" -le 250 ] || { echo "every network number is taken" >&2; exit 1; } +mkdir "$d" +cat > "$d/meta.json" +printf 'INDEX=%s\\nTAP=lfsfc%s\\nHOST_IP=172.30.%s.1\\nGUEST_IP=172.30.%s.2\\n' "$n" "$n" "$n" "$n" > "$d/vm.env" +cp --sparse=always "$root/rootfs.ext4" "$d/rootfs.ext4" +mac=$(printf '06:00:AC:1E:%02X:02' "$n") +# 2 MiB huge pages when the host has them free for the whole guest: nested first-touch faults are slow +huge='"None"' +[ "$(( $(awk '/^HugePages_Free/ {print $2}' /proc/meminfo) * 2 ))" -ge "$mem" ] && huge='"2M"' +cat > "$d/config.json" </dev/null; then exit 0; fi +ip link show "$TAP" >/dev/null 2>&1 || ip tuntap add dev "$TAP" mode tap +ip addr replace "$HOST_IP/30" dev "$TAP" +ip link set "$TAP" up +setsid nohup "$root/bin/firecracker" --no-api --config-file "$d/config.json" > "$d/firecracker.log" 2>&1 < /dev/null & +echo $! > "$d/firecracker.pid" +i=0 +until ssh -i "$root/id_ed25519" ${SSH_GUEST} "root@$GUEST_IP" true 2>/dev/null; do + kill -0 "$(cat "$d/firecracker.pid")" 2>/dev/null || { echo "firecracker ended: $(tail -n 5 "$d/firecracker.log")" >&2; exit 1; } + i=$((i+1)); [ "$i" -lt 120 ] || { echo "the microVM did not answer ssh within 60 s" >&2; exit 1; } + sleep 0.5 +done +ssh -i "$root/id_ed25519" ${SSH_GUEST} "root@$GUEST_IP" 'mkdir -p /layerfs/store && { mountpoint -q /layerfs/store || mount -t ext4 /dev/vdb /layerfs/store; } && test "$(findmnt -n -o FSTYPE /layerfs/store)" = ext4'`; + +const INSPECT = `# layerfs-firecracker:inspect +d="$1/vms/$2" +test -f "$d/meta.json" || exit 3 +. "$d/vm.env" +pid=$(cat "$d/firecracker.pid" 2>/dev/null || true) +if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then echo running; else echo stopped; fi +echo "$GUEST_IP" +cat "$d/meta.json"`; + +const STOP = `# layerfs-firecracker:stop +root=$1 d="$1/vms/$2" +test -f "$d/vm.env" || exit 0 +. "$d/vm.env" +pid=$(cat "$d/firecracker.pid" 2>/dev/null || true) +if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then + timeout 10 ssh -i "$root/id_ed25519" ${SSH_GUEST} "root@$GUEST_IP" 'sync; reboot -f' >/dev/null 2>&1 || true + i=0; while kill -0 "$pid" 2>/dev/null && [ "$i" -lt 50 ]; do sleep 0.1; i=$((i+1)); done + kill -0 "$pid" 2>/dev/null && kill -9 "$pid" +fi +rm -f "$d/firecracker.pid" +ip link del "$TAP" 2>/dev/null || true +if [ "\${3:-}" = delete ]; then rm -rf "$d"; fi`; + +/** One command in the microVM, as root, through the host: `$@` stays quoted for the guest's shell. */ +const GUEST = `# layerfs-firecracker:guest +d="$1/vms/$2"; key="$1/id_ed25519"; shift 2 +. "$d/vm.env" +exec ssh -i "$key" ${SSH_GUEST} "root@$GUEST_IP" -- "$@"`; + +const guestArgv = (name, argv) => ["sh", "-c", GUEST, "sh", hostDir(), name, ...argv.map(shellEscape)]; + +export const exec = (name, argv, { input = undefined, timeout = CALL_MS } = {}) => onHost(guestArgv(name, argv), { input, timeout }); + +// --- this machine's forward (step ④), its record and its log --- + +function recordFile(name) { + mkdirSync(stateDir(), { recursive: true, mode: 0o700 }); + return join(stateDir(), `${name}.json`); +} +const forwardLog = (name) => join(stateDir(), `${name}-forward.log`); +function forwardOf(name) { + try { return JSON.parse(readFileSync(recordFile(name), "utf8")); } catch { return null; } +} + +/** + * `ssh -N -L 127.0.0.1:::7070` to the host, its stderr in a log + * file so this process can exit while the VM runs. Its own connection, not + * Lima's shared one: Lima's ssh.config keeps a persistent control master, to + * which a multiplexed `-N -L` hands the forward and exits at once, leaving a + * forward this adapter can neither see nor end. A forward that ends within the + * readiness window is reported with its own reason. + */ +async function openForward(name, hostPort, guestIp) { + const log = forwardLog(name); + mkdirSync(stateDir(), { recursive: true, mode: 0o700 }); + const fd = openSync(log, "w", 0o600); + const child = spawn("ssh", [ + "-F", join(instanceDir(host()), "ssh.config"), "-N", "-o", "ExitOnForwardFailure=yes", "-o", "ControlMaster=no", "-o", "ControlPath=none", + "-L", `127.0.0.1:${hostPort}:${guestIp}:${WORKER_PORT}`, `lima-${host()}`, + ], { stdio: ["ignore", "ignore", fd], detached: true }); + closeSync(fd); + const ended = new Promise((resolve) => child.once("exit", (code, signal) => resolve({ code, signal }))); + const first = await Promise.race([ended.then((value) => ({ ended: true, ...value })), delay(FORWARD_READY_MS).then(() => ({ ended: false }))]); + child.removeAllListeners("exit"); + child.unref(); + if (first.ended) { + const said = existsSync(log) ? readFileSync(log, "utf8").trim().split("\n").slice(-3).join("; ") : ""; + throw new Error(`ssh -L 127.0.0.1:${hostPort} to ${host()} exited (${first.code ?? first.signal}): ${said || "no reason given"}`); + } + writeFileSync(recordFile(name), JSON.stringify({ name, pid: child.pid, hostPort, guestIp }), { mode: 0o600 }); +} + +/** Ends the forward, bounded: SIGTERM, then SIGKILL. */ +async function closeForward(name) { + const pid = forwardOf(name)?.pid; + if (isAlive(pid)) { + try { process.kill(pid, "SIGTERM"); } catch { /* already gone */ } + for (let waited = 0; waited < END_MS && isAlive(pid); waited += 50) await delay(50); + if (isAlive(pid)) try { process.kill(pid, "SIGKILL"); } catch { /* already gone */ } + } + rmSync(recordFile(name), { force: true }); +} + +// --- the provider --- + +/** The VM's record, or null when the host holds no VM of that name. */ +export async function inspect(name) { + const result = await onHost(["sh", "-c", INSPECT, "sh", hostDir(), name]); + if (result.code === 3) return null; + if (result.code !== 0) await hostRuns(); + if (result.code !== 0) throw new Error(`could not read the VM ${name} in the Firecracker host ${host()}: ${result.stderr.trim()}`); + const [vmm, ip, ...rest] = result.stdout.split("\n"); + const meta = JSON.parse(rest.join("\n")); + const running = vmm === "running" && isAlive(forwardOf(name)?.pid); + return { + state: running ? "running" : "stopped", + vmm, + ip, + image: `${hostDir()}/rootfs.ext4`, + digest: null, + labels: meta.labels ?? {}, + ports: [{ guest: WORKER_PORT, host: meta.hostPort, bind: "127.0.0.1" }], + home: meta.home ?? null, + store: meta.store ?? null, + created: meta.created ?? null, + }; +} + +/** The host exists and runs; otherwise the error says which and how. */ +async function hostRuns() { + const found = await lima.inspect(host()); + if (!found) throw new Error(`there is no Lima instance ${host()} to run Firecracker in; make one with vmType: vz and nestedVirtualization: true, or name yours in LAYERFS_FIRECRACKER_LIMA`); + if (found.state !== "running") throw new Error(`the Firecracker host ${host()} is ${found.state}; start it with limactl start ${host()}`); +} + +/** The host runs and holds what a VM needs; each missing thing is named. */ +async function checkHost() { + await hostRuns(); + await script("the host check", CHECK, [hostDir()]); +} + +/** Store disks this process made: a create that fails removes the one it made. */ +const newlyCreatedStores = new Set(); + +export async function ensureStore(name, size) { + await checkHost(); + if ((await script("making the Store disk", DISK, [hostDir(), name, size], { timeout: BOOT_MS })).trim() === "made") newlyCreatedStores.add(name); +} + +export async function create(config) { + const made = newlyCreatedStores.delete(config.storeName); + const meta = { name: config.name, home: config.home, store: config.storeName, hostPort: config.hostPort, created: new Date().toISOString(), labels: { "layerfs.role": "vm", "layerfs.home": config.home } }; + try { + await script("creating the VM", CREATE, [hostDir(), config.name, diskFile(config.storeName), config.cpus, mib(config.memory)], { input: `${JSON.stringify(meta)}\n` }); + } catch (error) { + if (made) await removeStore(config.storeName).catch(() => {}); + throw error; + } + // a boot that fails keeps the VM's folder for inspection; the caller reports it + await script("booting the VM", BOOT, [hostDir(), config.name], { timeout: BOOT_MS }); + const booted = await inspect(config.name); + await openForward(config.name, config.hostPort, booted.ip); + return inspect(config.name); +} + +/** Boots a stopped VM, or only re-opens the forward of one that still runs. */ +export async function start(name) { + const found = await inspect(name); + if (!found) throw new Error(`the Firecracker host holds no VM ${name}`); + if (found.state === "running") return found; + if (found.vmm !== "running") await script("booting the VM", BOOT, [hostDir(), name], { timeout: BOOT_MS }); + await closeForward(name); + await openForward(name, found.ports[0].host, found.ip); + return inspect(name); +} + +export async function stop(name) { + await closeForward(name); + await script("stopping the VM", STOP, [hostDir(), name]); +} + +export const restart = async (name) => { await stop(name); return start(name); }; + +/** The VM's folder and its forward; the Store disk is a separate file and stays. */ +export async function remove(name) { + await closeForward(name); + rmSync(forwardLog(name), { force: true }); + await script("deleting the VM", STOP, [hostDir(), name, "delete"]); +} + +export const removeStore = (storeName) => script("deleting the Store disk", "rm -f \"$1\"", [diskFile(storeName)]); + +/** V4: the microVM-wide user-namespace block; the caller reads it back. */ +export const blockUserNamespaces = (name) => exec(name, ["sh", "-c", "echo 0 > /proc/sys/user/max_user_namespaces"]); + +export async function storeFree(name) { + const { code, stdout } = await exec(name, ["df", "-kP", "/layerfs/store"]); + if (code !== 0) return null; + const kb = Number(stdout.trim().split("\n").pop().trim().split(/\s+/)[3]); + return Number.isFinite(kb) ? kb * 1024 : null; +} + +/** Step ②: one tar stream through both SSH hops, unpacked as root in the microVM. */ +export const copy = (name, source, destination) => + stream("ssh", [...sshTo(host()), "--", ...["sudo", "-n", "--", ...guestArgv(name, [...UNPACK, destination])].map(shellEscape)], source, `${name}:${destination}`); + +export const read = (name, path) => readFile("ssh", name, path, exec); +export const write = (name, path, text) => writeFile("ssh", name, path, text, exec); + +export default { + name: "firecracker", + defaultImage: null, + inspect, ensureStore, create, start, stop, restart, remove, removeStore, blockUserNamespaces, storeFree, read, write, copy, exec, +}; diff --git a/api/runtime/src/platform/vm/index.js b/api/runtime/src/platform/vm/index.js index 89350155f..24fd4ccd8 100644 --- a/api/runtime/src/platform/vm/index.js +++ b/api/runtime/src/platform/vm/index.js @@ -37,8 +37,9 @@ import microsandbox from "./microsandbox.js"; import appleContainer from "./apple-container.js"; import ssh from "./ssh.js"; import lima from "./lima.js"; +import firecracker from "./firecracker.js"; -const PROVIDERS = { microsandbox, "apple-container": appleContainer, ssh, lima }; +const PROVIDERS = { microsandbox, "apple-container": appleContainer, ssh, lima, firecracker }; const WORKER_PORT = 7070; const SERVER = "api/runtime/src/worker/server.js"; /** Bundle hashing in the worker comes first, so readiness takes a while. */ diff --git a/api/runtime/src/platform/vm/lima.js b/api/runtime/src/platform/vm/lima.js index 3593cf443..5df460a47 100644 --- a/api/runtime/src/platform/vm/lima.js +++ b/api/runtime/src/platform/vm/lima.js @@ -34,6 +34,7 @@ // Commands go through ssh rather than `limactl shell` so the argv quoting is // this file's (ssh.js's `shellEscape`), not the CLI's. One call per step, one // attempt, no retry. +import { spawn } from "node:child_process"; import { createHash } from "node:crypto"; import { constants, cpSync, mkdtempSync, rmSync } from "node:fs"; import { basename, isAbsolute, relative, resolve, sep } from "node:path"; @@ -205,6 +206,38 @@ export async function storeFree(name) { return Number.isFinite(kb) ? kb * 1024 : null; } +/** + * Step ②: a host folder's contents as one `tar` stream into a guest folder, + * through `argv` (the command that reads the stream on the far side). Both ends + * are killed when the copy passes its budget; `COPYFILE_DISABLE` keeps the Mac's + * tar from adding AppleDouble `._` entries. + */ +export function stream(command, args, source, what) { + return new Promise((resolve, reject) => { + const pack = spawn("tar", ["-C", source, "-cf", "-", "."], { env: { ...process.env, COPYFILE_DISABLE: "1" }, stdio: ["ignore", "pipe", "pipe"] }); + const unpack = spawn(command, args, { stdio: ["pipe", "ignore", "pipe"] }); + let err = "", tarErr = ""; + const timer = setTimeout(() => { + pack.kill("SIGKILL"); + unpack.kill("SIGKILL"); + reject(new Error(`copy into ${what} did not end within ${COPY_MS / 1000} s`)); + }, COPY_MS); + unpack.stderr.on("data", (chunk) => { err += chunk.toString(); }); + pack.stderr.on("data", (chunk) => { tarErr += chunk.toString(); }); + pack.on("error", (error) => { clearTimeout(timer); reject(error); }); + unpack.on("error", (error) => { clearTimeout(timer); reject(error); }); + unpack.on("close", (code) => { + clearTimeout(timer); + if (code === 0) resolve(); + else reject(new Error(`copy into ${what} failed (exit ${code}): ${(err || tarErr).trim()}`)); + }); + pack.stdout.pipe(unpack.stdin); + }); +} + +/** The tar stream's far side: make the folder and unpack into it, as root (vm:firecracker's copy). */ +export const UNPACK = ["sh", "-c", "mkdir -p \"$1\" && tar -C \"$1\" -xf -", "sh"]; + /** * Step ②, and an Init source: a host folder into a guest folder, as a copy the * VM owns, read through the home the instance mounts (see the header). A folder diff --git a/api/runtime/src/settings.js b/api/runtime/src/settings.js index 4b1988915..63540ae45 100644 --- a/api/runtime/src/settings.js +++ b/api/runtime/src/settings.js @@ -16,11 +16,12 @@ const DEFAULT_DOCKER = "/var/run/docker.sock"; * (#527 step 8). Apple Container is macOS only; Microsandbox runs libkrun * microVMs on Linux (KVM) and macOS (Apple silicon); `ssh` needs only the * system ssh client and tar; `lima` makes `vmType: vz` instances, which is - * Apple's Virtualization.framework, so it is macOS only. None runs on Windows: the VM placement + * Apple's Virtualization.framework; `firecracker` runs nested in such a Lima + * instance, so it is macOS only too. None runs on Windows: the VM placement * maps this host's folders into the guest as POSIX paths. */ const PROVIDERS = { - microsandbox: ["linux", "macos"], "apple-container": ["macos"], ssh: ["linux", "macos"], lima: ["macos"], + microsandbox: ["linux", "macos"], "apple-container": ["macos"], ssh: ["linux", "macos"], lima: ["macos"], firecracker: ["macos"], }; const NAMES = { linux: "Linux", macos: "macOS", windows: "Windows" }; /** The VM's own settings: the image that holds node and the guest base, and its size. */ diff --git a/api/runtime/test/fixture/fake-lima.cjs b/api/runtime/test/fixture/fake-lima.cjs index 90a8e087c..1afb7cc45 100644 --- a/api/runtime/test/fixture/fake-lima.cjs +++ b/api/runtime/test/fixture/fake-lima.cjs @@ -1,21 +1,28 @@ -// The `limactl` and `ssh` stand-in for @layerfs/runtime's vm:lima tests -// (#527 platform pass): no VM. Called as +// The `limactl` and `ssh` stand-in for @layerfs/runtime's vm:lima and +// vm:firecracker tests (#527 platform pass): no VM. Called as // `fake-lima.cjs limactl …` or `fake-lima.cjs ssh …` (the test puts one shim of -// each name on PATH). It answers exactly the calls `platform/vm/lima.js` makes, -// and maps each guest's absolute paths +// each name on PATH). It answers exactly the calls `platform/vm/lima.js` and +// `platform/vm/firecracker.js` make, and maps each guest's absolute paths // under FAKE_LIMA_STATE/guest/, so guest reads and writes are real files: // // limactl list --json NAME | create --name N --tty=false - | start --tty=false N // limactl stop N | delete --force N | disk list --json | disk create D … | disk delete D // ssh -F /ssh.config lima-N -- sudo -n -- ARGV… a root command in instance N // (a Lima VM's /layerfs/home is the host folder its template mounts there) +// ssh -F … -N -o ExitOnForwardFailure=yes -L 127.0.0.1:H:IP:7070 lima-N a forward // // ARGV arrives shell-quoted, as the remote shell would see it, and is unquoted -// here. A started worker is the bundle's own worker/server.js with the stand-in -// binding, listening on the VM's forwarded host port. Every call is appended to -// calls.jsonl as { at, tool, argv } with ARGV unquoted. +// here. In a Lima VM it is the adapter's guest command; in the Firecracker host +// it is one of firecracker.js's marked scripts (`# layerfs-firecracker:`), +// and the `guest` script's own arguments are unquoted once more for the +// microVM. A started worker is the bundle's own worker/server.js with the +// stand-in binding: a Lima VM's listens on its forwarded host port, a microVM's +// on a free port behind the stand-in forward. `FAKE_FC_NO_KVM=1` makes the +// Firecracker host check fail. Every call is appended to calls.jsonl as +// { at, tool, argv } with ARGV unquoted. const { appendFileSync, cpSync, existsSync, mkdirSync, openSync, readFileSync, readdirSync, rmSync, writeFileSync } = require("node:fs"); const { spawn } = require("node:child_process"); +const { createServer, connect } = require("node:net"); const { dirname, join } = require("node:path"); const state = process.env.FAKE_LIMA_STATE; @@ -50,6 +57,12 @@ function endWorker(vm) { rmSync(pid, { force: true }); } +/** A port nothing listens on now. */ +const freePort = () => new Promise((resolve) => { + const server = createServer(); + server.listen(0, "127.0.0.1", () => { const { port } = server.address(); server.close(() => resolve(port)); }); +}); + /** The bundle's worker in guest `vm`, listening on `port`. */ function launchWorker(vm, port) { endWorker(vm); @@ -66,7 +79,7 @@ function launchWorker(vm, port) { writeFileSync(guest("/layerfs/state/worker.pid"), `${child.pid}\n`); } -/** A guest command as the adapter sends it; answers its exit code. */ +/** A guest command (Lima VM or microVM) as the adapters send it; answers its exit code. */ async function guestCommand(vm, args, workerPort) { const guest = guestIn(vm); const [cmd, flag, script, , ...rest] = args; @@ -139,7 +152,89 @@ function limactl() { } else fail(`fake limactl does not know ${command}`); } +// --- the Firecracker host's marked scripts --- + +const fcDir = (name) => file("fc", "vms", name); +const fcIp = (name) => `172.30.${readJson(join(fcDir(name), "vm.json")).index}.2`; + +async function firecrackerScript(op, args) { + const [, name] = args; + if (op === "check") { + if (process.env.FAKE_FC_NO_KVM) { console.error("there is no /dev/kvm (the Lima instance needs nestedVirtualization: true, an M3 or newer and macOS 15+)"); return 1; } + return 0; + } + if (op === "disk") { + const disk = file("fc", "disks", `${args[1]}.json`); + if (existsSync(disk)) return 0; + saveJson(disk, { name: args[1], size: args[2] }); + process.stdout.write("made\n"); + return 0; + } + if (op === "create") { + if (existsSync(fcDir(name))) { console.error(`${fcDir(name)} already exists`); return 17; } + const used = existsSync(file("fc", "vms")) ? readdirSync(file("fc", "vms")).map((vm) => readJson(join(fcDir(vm), "vm.json")).index) : []; + let index = 1; + while (used.includes(index)) index++; + saveJson(join(fcDir(name), "vm.json"), { index, store: args[2], cpus: Number(args[3]), mem: Number(args[4]), vmm: "stopped" }); + writeFileSync(join(fcDir(name), "meta.json"), stdin()); + return 0; + } + if (op === "boot" || op === "stop") { + const vm = readJson(join(fcDir(name), "vm.json")); + if (!vm) return 0; + if (op === "stop") endWorker(name); + vm.vmm = op === "boot" ? "running" : "stopped"; + saveJson(join(fcDir(name), "vm.json"), vm); + if (op === "stop" && args[2] === "delete") rmSync(fcDir(name), { recursive: true, force: true }); + return 0; + } + if (op === "inspect") { + const vm = readJson(join(fcDir(name), "vm.json")); + if (!vm) return 3; + process.stdout.write(`${vm.vmm}\n${fcIp(name)}\n${readFileSync(join(fcDir(name), "meta.json"), "utf8")}`); + return 0; + } + if (op === "guest") { + const guestArgv = args.slice(2).map(unquote); + const workerPort = async () => { + const port = await freePort(); + writeFileSync(join(fcDir(name), "worker.port"), `${port}\n`); + return port; + }; + return guestCommand(name, guestArgv, workerPort); + } + console.error(`fake firecracker host does not know ${op}`); + return 1; +} + +/** The forward to a microVM: lazy, it reads the worker's port when a client connects. */ +function forward(hostPort, ip) { + const server = createServer((client) => { + client.on("error", () => {}); + const vm = (existsSync(file("fc", "vms")) ? readdirSync(file("fc", "vms")) : []).find((name) => fcIp(name) === ip); + const portFile = vm ? join(fcDir(vm), "worker.port") : null; + let tries = 0; + const dial = () => { + const port = portFile && existsSync(portFile) ? Number(readFileSync(portFile, "utf8").trim()) : NaN; + if (!Number.isFinite(port)) return tries++ < 20 ? setTimeout(dial, 50) : client.destroy(); + const upstream = connect(port, "127.0.0.1"); + upstream.on("error", () => client.destroy()); + client.pipe(upstream); + upstream.pipe(client); + }; + dial(); + }); + server.on("error", (error) => { console.error(`bind [127.0.0.1]:${hostPort}: ${error.code === "EADDRINUSE" ? "Address already in use" : error.message}`); process.exit(255); }); + server.listen(hostPort, "127.0.0.1"); +} + async function ssh() { + if (argv.includes("-N")) { + log(argv); + const spec = /^127\.0\.0\.1:(\d+):([\d.]+):(\d+)$/.exec(argv[argv.indexOf("-L") + 1] ?? ""); + if (!spec) fail("ssh: no forward to open", 255); + return forward(Number(spec[1]), spec[2]); + } const dash = argv.indexOf("--"); const host = argv[dash - 1].replace(/^lima-/, ""); const remote = argv.slice(dash + 1).map(unquote); @@ -148,6 +243,9 @@ async function ssh() { const args = remote.slice(3); const vm = readJson(vmFile(host)); if (!vm || vm.status !== "Running") fail(`ssh: connect to lima-${host}: Connection refused`, 255); + const marker = args[0] === "sh" && /^# layerfs-firecracker:(\w+)/.exec(args[2] ?? "")?.[1]; + if (marker) process.exit(await firecrackerScript(marker, args.slice(4))); + if (args[0] === "sh" && args[2] === "rm -f \"$1\"") { rmSync(file("fc", "disks", `${args[4].split("/").pop().replace(/\.ext4$/, "")}.json`), { force: true }); return; } const port = vm.config.portForwards?.find((rule) => rule.guestPort)?.hostPort; process.exit(await guestCommand(host, args, async () => port)); } diff --git a/api/runtime/test/verify/vm_real.mjs b/api/runtime/test/verify/vm_real.mjs index 3291a02d5..39c9fcd49 100644 --- a/api/runtime/test/verify/vm_real.mjs +++ b/api/runtime/test/verify/vm_real.mjs @@ -14,7 +14,8 @@ // onto a root that boot did not start, the next `sandbox.create` reclaims it and // reuses its number, and that Sandbox runs from the same unpacked image. Everything it made (both VMs, their Store disks, the home and // the sources) is removed afterwards. -// node api/runtime/test/verify/vm_real.mjs [microsandbox|apple-container|lima] +// node api/runtime/test/verify/vm_real.mjs [microsandbox|apple-container|lima|firecracker] +// vm:firecracker needs its Lima host (LAYERFS_FIRECRACKER_LIMA, see api/docs/runtime.md). // VM_REAL_PREFIX (default `lfs-`) starts every VM, disk and container name. // Needs that provider's CLI and the bundle built for the host's Linux VM // (aarch64 on an M-series Mac), with a Sandbox image at `images/<64 hex>.tar`. @@ -29,7 +30,7 @@ import { join } from "node:path"; import { fileURLToPath } from "node:url"; const SELF = fileURLToPath(import.meta.url); -const CLI = { microsandbox: "msb", "apple-container": "container", lima: "limactl" }; +const CLI = { microsandbox: "msb", "apple-container": "container", lima: "limactl", firecracker: "limactl" }; /** An agent process: it names its project, and the endpoint of that project's VM comes from the deployment. */ async function agent(project, deployment, phase = undefined, extra = {}) { @@ -203,7 +204,7 @@ if (process.argv[2] === "agent") { const [bundle, provider = "microsandbox"] = process.argv.slice(2); if (!CLI[provider] || !bundle || process.platform !== "darwin") { - console.error("usage: vm_real.mjs [microsandbox|apple-container|lima] (macOS host)"); + console.error("usage: vm_real.mjs [microsandbox|apple-container|lima|firecracker] (macOS host)"); process.exit(2); } if (!existsSync(bundle)) { @@ -217,7 +218,7 @@ const { endpointFile } = await import("../../src/platform/shared.js"); // own disk (filesystem, image cache), which no public call answers const DRIVER = { microsandbox: "../../src/platform/vm/microsandbox.js", "apple-container": "../../src/platform/vm/apple-container.js", - lima: "../../src/platform/vm/lima.js", + lima: "../../src/platform/vm/lima.js", firecracker: "../../src/platform/vm/firecracker.js", }; const driver = (await import(DRIVER[provider])).default; @@ -332,9 +333,12 @@ try { // VM kept is the same directory, and the record it left is reclaimed by the // resume phase, which then starts a Sandbox on that same unpack assert.deepEqual((await disk("shop")).stat, unpacked.stat, "the image cache survived the VM restart unchanged"); - // the Sandbox the reboot ended is still a record in the home, not a running Sandbox - const record = join(home, "shop", "sandboxes", left, "sandbox.record"); - assert.ok(existsSync(record), `the Sandbox record survived the VM restart: ${record}`); + // the Sandbox the reboot ended is still a record in the home, not a running Sandbox. + // A microVM provider mounts this home in the guest; Firecracker shares no folder, + // so its guest home is its own and the record is read there + const record = join("shop", "sandboxes", left, "sandbox.record"); + const recorded = async () => (provider === "firecracker" ? (await guest("shop", `test -f /layerfs/home/${record} && echo yes`)) === "yes" : existsSync(join(home, record))); + assert.ok(await recorded(), `the Sandbox record survived the VM restart: ${record}`); console.log("stopped and restarted the project's VM: ok"); // the restarted worker takes a new secret, and the project's Commit is still readable @@ -343,7 +347,7 @@ try { const resumed = await agent("shop", shopEnv, "resume", { AGENT_LEFTOVER: left }); assert.equal(resumed.code, 0, resumed.text); console.log(resumed.text.trim()); - assert.ok(!existsSync(record), "the record the previous boot left was reclaimed by the resumed agent"); + assert.ok(!(await recorded()), "the record the previous boot left was reclaimed by the resumed agent"); // removing one project takes its own VM and Store disk, and leaves the other alone const removed = await runtime.project.delete("blog", { confirm: "blog", stopSandboxes: true }); diff --git a/api/runtime/test/vm_placement.mjs b/api/runtime/test/vm_placement.mjs index 8ad228fe7..afd61f0f4 100644 --- a/api/runtime/test/vm_placement.mjs +++ b/api/runtime/test/vm_placement.mjs @@ -5,7 +5,7 @@ // fixture keeps one VM record per project, maps each guest's absolute paths // under a temp folder, and starts the adapter's bundle worker so step ④'s // readiness is real. -// node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|lima|cleanup +// node api/runtime/test/vm_placement.mjs settings|flow|two|bundle|delete|hosts|stores|apple-container|ssh|lima|firecracker|cleanup import assert from "node:assert/strict"; import { chmodSync, cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs"; import { execFileSync } from "node:child_process"; @@ -51,7 +51,7 @@ function standIn(name, fixture, state) { }; } -/** The `limactl` and `ssh` stand-ins of vm:lima: one fixture, two names on PATH. */ +/** The `limactl` and `ssh` stand-ins of vm:lima and vm:firecracker: one fixture, two names on PATH. */ function limaStandIn(state) { const bin = join(work, "lima-bin"); mkdirSync(bin, { recursive: true }); @@ -64,7 +64,7 @@ function limaStandIn(state) { Object.assign(process.env, { FAKE_LIMA_STATE: state, FAKE_LIMA_NATIVE: FAKE, LIMA_HOME: join(state, "lima-home") }); return () => { process.env.PATH = saved.PATH; - for (const name of ["FAKE_LIMA_STATE", "FAKE_LIMA_NATIVE", "LIMA_HOME"]) delete process.env[name]; + for (const name of ["FAKE_LIMA_STATE", "FAKE_LIMA_NATIVE", "LIMA_HOME", "LAYERFS_FIRECRACKER_LIMA", "LAYERFS_FIRECRACKER_STATE_DIR", "FAKE_FC_NO_KVM"]) delete process.env[name]; }; } @@ -146,8 +146,8 @@ try { for (const host of ["linux", "macos"]) assert.equal(resolveSettings({ home, platform: host, placement: `vm:${provider}` }).placement.provider, provider); } assert.equal(resolveSettings({ home, platform: "macos", placement: "vm:apple-container" }).placement.provider, "apple-container"); - // Lima makes vz instances (Virtualization.framework) - for (const provider of ["lima"]) { + // Lima makes vz instances (Virtualization.framework), and Firecracker runs nested in one + for (const provider of ["lima", "firecracker"]) { for (const host of ["linux", "windows"]) { assert.throws(() => resolveSettings({ home, platform: host, placement: `vm:${provider}` }), { code: "Unsupported", message: new RegExp(`vm:${provider} runs on macOS hosts, not ${host === "linux" ? "Linux" : "Windows"}`) }); } @@ -629,6 +629,79 @@ try { await runtime.close(); restoreWorker(work); } + } else if (selected === "firecracker") { + makeBundle(); + const state = join(work, "lima"); + mkdirSync(join(state, "vms"), { recursive: true }); + const restore = limaStandIn(state); + // the Firecracker host is a Lima vz instance the user made and named + process.env.LAYERFS_FIRECRACKER_LIMA = "lfs-vm-test-fc-host"; + process.env.LAYERFS_FIRECRACKER_STATE_DIR = join(state, "sessions"); + const runtime = await LayerFSRuntime.open({ home, bundle, placement: "vm:firecracker", containerPrefix: prefix, platform: "macos", sweep: false }); + try { + await assert.rejects(runtime.worker.start("shop"), /no Lima instance lfs-vm-test-fc-host to run Firecracker in/); + writeFileSync(join(state, "vms", "lfs-vm-test-fc-host.json"), JSON.stringify({ status: "Running", config: { vmType: "vz", nestedVirtualization: true } })); + // a host without /dev/kvm is refused by fact, before any disk or VM + process.env.FAKE_FC_NO_KVM = "1"; + await assert.rejects(runtime.worker.start("shop"), /there is no \/dev\/kvm/); + delete process.env.FAKE_FC_NO_KVM; + assert.equal(existsSync(join(state, "fc")), false, "nothing was made on a host that cannot run it"); + + const started = await deadline(60_000, "worker.start", runtime.worker.start("shop")); + assert.deepEqual([started.vm.state, started.worker.state, started.vm.store, started.vm.home], ["running", "running", storeName("shop"), home]); + const blog = await deadline(60_000, "worker.start blog", runtime.worker.start("blog")); + assert.equal(blog.worker.state, "running"); + const marked = (op) => calls(state).filter((argv) => remoteOf(argv)?.[5]?.startsWith(`# layerfs-firecracker:${op}`)); + // every host step is root in the named Lima host, in its folder + assert.ok(marked("create").every((argv) => argv[2] === "lima-lfs-vm-test-fc-host" && remoteOf(argv)[7] === "/var/lib/layerfs-firecracker")); + assert.deepEqual(marked("create").map((argv) => remoteOf(argv).slice(8)), [ + [vmName("shop"), `/var/lib/layerfs-firecracker/disks/${storeName("shop")}.ext4`, "2", "2048"], + [vmName("blog"), `/var/lib/layerfs-firecracker/disks/${storeName("blog")}.ext4`, "2", "2048"], + ], "one microVM per project, each on its own Store disk file, sized from settings.vm"); + assert.equal(marked("disk").length, 2); + assert.equal(marked("boot").length, 2); + // ④ a forward from this host's loopback to each microVM's own address + const shopEndpoint = endpointAt("shop"), blogEndpoint = endpointAt("blog"); + const forwards = calls(state).filter((argv) => argv.includes("-N")).map((argv) => argv[argv.indexOf("-L") + 1]); + assert.deepEqual(forwards, [`127.0.0.1:${shopEndpoint.port}:172.30.1.2:7070`, `127.0.0.1:${blogEndpoint.port}:172.30.2.2:7070`]); + assert.ok(calls(state).filter((argv) => argv.includes("-N")).every((argv) => argv.includes("ExitOnForwardFailure=yes") && argv.includes("ControlPath=none")), "its own connection: a forward handed to Lima's control master would outlive its record"); + assert.notEqual(shopEndpoint.secret, blogEndpoint.secret); + assert.ok(!JSON.stringify(calls(state)).includes(shopEndpoint.secret), "no call carried a secret in its arguments"); + // ② ③ in the microVM, through the host's guest script + const guestCalls = marked("guest").map((argv) => remoteOf(argv).slice(9).join(" ")); + assert.ok(guestCalls.some((line) => /max_user_namespaces/.test(line))); + assert.ok(guestCalls.some((line) => /nohup node/.test(line))); + assert.ok(guestCalls.some((line) => line.includes("tar -C") && line.endsWith("/layerfs/bundle"))); + assert.equal(existsSync(guestPath(state, vmName("shop"), "/layerfs/bundle/.sealed")), true, "the bundle reached the microVM"); + assert.equal(readFileSync(guestPath(state, vmName("shop"), "/proc/sys/user/max_user_namespaces"), "utf8").trim(), "0"); + // a forward that ended reads as a stopped VM; start opens it again without a boot + process.kill(JSON.parse(readFileSync(join(state, "sessions", `${vmName("shop")}.json`), "utf8")).pid); + await new Promise((resolve) => setTimeout(resolve, 200)); + assert.equal((await runtime.vm.status("shop")).state, "stopped"); + const reopened = await deadline(60_000, "worker.start after the forward ended", runtime.worker.start("shop")); + assert.deepEqual([reopened.vm.state, reopened.worker.state], ["running", "running"]); + assert.equal(marked("boot").length, 2, "the microVM still ran: no second boot"); + assert.equal(endpointAt("shop").port, shopEndpoint.port, "the same port"); + // ⑤ stop resets the microVM and ends the forward; start boots it again + assert.equal((await runtime.vm.stop("shop")).state, "stopped"); + assert.equal(marked("stop").length, 1); + assert.equal(existsSync(join(state, "sessions", `${vmName("shop")}.json`)), false, "its forward record is gone"); + assert.equal((await deadline(60_000, "worker.start after stop", runtime.worker.start("shop"))).worker.state, "running"); + assert.equal(marked("boot").length, 3); + // V8 and the delete that discards the Store disk file + project("shop"); + await assert.rejects(runtime.vm.delete("shop", { confirm: "delete" }), { code: "Unsupported", message: /never destroys a Store that was not pushed/ }); + forget("shop"); + assert.equal((await runtime.vm.delete("shop", { confirm: "delete", discardStore: true })).store, "discarded"); + assert.equal(existsSync(join(state, "fc", "vms", vmName("shop"))), false, "the VM's folder is gone"); + assert.equal(existsSync(join(state, "fc", "disks", `${storeName("shop")}.json`)), false, "and its Store disk"); + assert.equal(existsSync(join(state, "fc", "disks", `${storeName("blog")}.json`)), true, "the other project's disk stays"); + assert.equal((await runtime.vm.status("blog")).worker.state, "running"); + } finally { + restore(); + await runtime.close(); + restoreWorker(work); + } } else if (selected === "cleanup") { // H39v's two findings: a provider create that fails must leave nothing // behind — no Store volume for Apple Container (the CLI makes one before it @@ -670,7 +743,7 @@ try { rmSync(hidden, { recursive: true, force: true }); } } else { - throw new Error("select settings, flow, two, bundle, delete, hosts, stores, apple-container, ssh, lima or cleanup"); + throw new Error("select settings, flow, two, bundle, delete, hosts, stores, apple-container, ssh, lima, firecracker or cleanup"); } } finally { rmSync(work, { recursive: true, force: true }); @@ -697,7 +770,7 @@ function restoreWorker(folder) { for (const file of readdirSync(sessions)) { try { const session = JSON.parse(readFileSync(join(sessions, file), "utf8")); - if (session.forwardPid) process.kill(session.forwardPid); + if (session.forwardPid ?? session.pid) process.kill(session.forwardPid ?? session.pid); } catch {} } } From 5431c7e4a9ef01b9f0651682dda1d558f9837df2 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:32:26 +0800 Subject: [PATCH 33/37] test: the cell runner names namespaces with the one Sandbox setting Step 11 made LAYERFS_SANDBOX=docker|native|namespaces the one setting, with the former pair (native + LAYERFS_SANDBOX_BACKEND=namespaces) kept for one release. The linux-namespaces row now sets LAYERFS_SANDBOX=namespaces, and the macos-namespaces refusal expects Unsupported three times: the new name without and with the image settings, and the former pair. Checks: node --check. Production LOC: 123808 -> 123808 (delta 0) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent a8cb674f03 and the staged tree 577c7f7474; after: core 41405; engine 77639; api 4764; Co-Authored-By: Claude Opus 5.5 --- api/runtime/test/verify/cells/run.mjs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/api/runtime/test/verify/cells/run.mjs b/api/runtime/test/verify/cells/run.mjs index 96ea8cb19..6207af961 100644 --- a/api/runtime/test/verify/cells/run.mjs +++ b/api/runtime/test/verify/cells/run.mjs @@ -381,7 +381,7 @@ const SETUP = { const image = opts.image || bundleIdentity(bundle).images?.sandbox; receipt.imageDigest = image; receipt.imageArchive = need(opts.imageArchive, "--image-archive"); - return { ...(await sdkRow({ bundle, rowEnv: { LAYERFS_SANDBOX_BACKEND: "namespaces", LAYERFS_IMAGE: image, LAYERFS_IMAGE_ARCHIVE: opts.imageArchive } })), bundle }; + return { ...(await sdkRow({ bundle, rowEnv: { LAYERFS_SANDBOX: "namespaces", LAYERFS_IMAGE: image, LAYERFS_IMAGE_ARCHIVE: opts.imageArchive } })), bundle }; }, "vm-apple-container": () => vmRow("apple-container"), "vm-microsandbox": () => vmRow("microsandbox"), @@ -451,24 +451,32 @@ async function refusals() { const made = await sdkRow({ bundle, rowEnv: {} }); teardowns.push(made.teardown); const image = opts.image || receipt.bundle.images?.sandbox; - const attempt = async (extra) => { - Object.assign(process.env, { LAYERFS_SANDBOX_BACKEND: "namespaces" }, extra); + // step 11: LAYERFS_SANDBOX=namespaces; the former pair (native + + // LAYERFS_SANDBOX_BACKEND=namespaces, kept one release) is observed too + const attempt = async (extra, named = { LAYERFS_SANDBOX: "namespaces" }) => { + Object.assign(process.env, named, extra); let client = null; const opened = await observe(async () => { client = await made.LayerFS.open(project); return "opened"; }); const created = client ? await observe(() => client.sandbox.create()) : null; if (created && !created.refused) await client.sandbox.close(created.value.sandbox).catch(() => {}); await client?.close(); delete process.env.LAYERFS_SANDBOX_BACKEND; + process.env.LAYERFS_SANDBOX = made.env.LAYERFS_SANDBOX; delete process.env.LAYERFS_IMAGE; delete process.env.LAYERFS_IMAGE_ARCHIVE; return { opened, created }; }; const without = await attempt({}); const withImage = await attempt({ LAYERFS_IMAGE: image, LAYERFS_IMAGE_ARCHIVE: join(made.env.LAYERFS_LOCAL_DIR, "none.tar") }); - receipt.observed = { "namespaces, no image settings": without, "namespaces, with LAYERFS_IMAGE and LAYERFS_IMAGE_ARCHIVE": withImage }; - const code = withImage.created?.code ?? withImage.opened?.code; - receipt.verdict = code === "Unsupported" ? "PASS" : "FAIL"; - receipt.cause = `expected Unsupported; sandbox.create answered ${code ?? "no refusal"}`; + const former = await attempt({ LAYERFS_IMAGE: image, LAYERFS_IMAGE_ARCHIVE: join(made.env.LAYERFS_LOCAL_DIR, "none.tar") }, { LAYERFS_SANDBOX: "native", LAYERFS_SANDBOX_BACKEND: "namespaces" }); + receipt.observed = { + "LAYERFS_SANDBOX=namespaces, no image settings": without, + "LAYERFS_SANDBOX=namespaces, with LAYERFS_IMAGE and LAYERFS_IMAGE_ARCHIVE": withImage, + "former pair native + LAYERFS_SANDBOX_BACKEND=namespaces, with image settings": former, + }; + const codes = [without, withImage, former].map((seen) => seen.created?.code ?? seen.opened?.code); + receipt.verdict = codes.every((code) => code === "Unsupported") ? "PASS" : "FAIL"; + receipt.cause = `expected Unsupported three times; answered ${codes.map((code) => code ?? "no refusal").join(", ")}`; return; } // vm-docker: what a caller who asks for Docker Sandboxes on a vm: home gets From e9b9646148048faa615c291859c0cbe3528af167 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:43:50 +0800 Subject: [PATCH 34/37] agent: a vm: home refuses a Docker deployment before sending it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The final pass's refusals vm-docker cell (5431c7e4a9) sent LAYERFS_SANDBOX=docker to a vm:apple-container home: sandbox.create reached the VM's worker, whose Linux has no Docker Engine, and ended Failed at Create/Volume with Io NotFound (attempted: false, nothing made). Design §3.1 lists Docker on vm:* as impossible; it now has a clean, documented answer. The worker client reads the endpoint's vm field (written by the vm placement at launch) and refuses any call whose deployment is docker, or unset, with Unsupported naming the provider and VM, before anything is sent. The macOS and Windows worker routes (no vm field) still send Docker deployments. Deleted tests: none. native_deployment.mjs adds the vm endpoint cases. Checks (each ≤100 s): native_deployment, calls (39), exec_output ok; vm_placement flow, two, stores, lima, firecracker, apple-container, ssh PASS; runtime macos-worker, windows-worker, worker-frames, worker-docker PASS. Production LOC: 123808 -> 123811 (delta +3) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 5431c7e4a9 and the staged tree 490733759b; after: core 41405; engine 77639; api 4767; Co-Authored-By: Claude Opus 5.5 --- api/agent/src/transport/worker_client.js | 5 +++++ api/agent/test/native_deployment.mjs | 27 ++++++++++++++++++++++++ api/docs/agent.md | 2 +- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/api/agent/src/transport/worker_client.js b/api/agent/src/transport/worker_client.js index 068bd6d9c..fac5e8af9 100644 --- a/api/agent/src/transport/worker_client.js +++ b/api/agent/src/transport/worker_client.js @@ -138,6 +138,11 @@ export function workerClient(file) { async function send(fn, op, args) { let info; try { info = endpointOf(file); } catch (error) { return refused("Failed", `the LayerFS worker is not running for this home: ${error.message}`); } + // a vm: placement's worker has no Docker Engine: its Sandboxes are + // namespaces inside its VM, so a Docker deployment is refused before it is sent + if (info.vm && args?.deploy && (args.deploy.sandbox ?? "docker") === "docker") { + return refused("Unsupported", `deploy.sandbox (LAYERFS_SANDBOX) docker is not available on a vm:${info.vm.provider} home: its Sandboxes are namespaces inside the project's VM ${info.vm.name}; leave LAYERFS_SANDBOX to the runtime`); + } const deploy = { ...args.deploy, ...(info.daemonHost ? { daemonHost: args.deploy?.daemonHost ?? info.daemonHost } : {}), diff --git a/api/agent/test/native_deployment.mjs b/api/agent/test/native_deployment.mjs index 69169c4ad..63da6102f 100644 --- a/api/agent/test/native_deployment.mjs +++ b/api/agent/test/native_deployment.mjs @@ -9,6 +9,10 @@ import assert from "node:assert/strict"; import { createRequire } from "node:module"; import { fileURLToPath } from "node:url"; import { deployment, sandboxHost, STATE } from "../src/client.js"; +import { workerClient } from "../src/transport/worker_client.js"; +import { mkdtempSync, rmSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; const FAKE = fileURLToPath(new URL("./fixture/fake-native.cjs", import.meta.url)); const native = createRequire(import.meta.url)(FAKE); @@ -239,4 +243,27 @@ try { } finally { Object.defineProperty(process, "platform", host); } +// a vm: placement's worker has no Docker: a Docker deployment sent to it is +// refused Unsupported before anything is sent (#527 final pass, refusals +// vm-docker found a raw Io NotFound at volume create instead) +{ + const dir = mkdtempSync(join(tmpdir(), "lfs-vm-endpoint-")); + const file = join(dir, "endpoint.json"); + // port 9 answers nothing here; a refusal must come before any connection + writeFileSync(file, JSON.stringify({ home: "/layerfs/home", port: 9, secret: "a".repeat(64), vm: { provider: "lima", name: "lfs-x-vm", project: "x" } })); + const vm = workerClient(file); + for (const deploy of [{ sandbox: "docker", image: docker.image }, { image: docker.image }]) { + const answer = await vm.call("sandbox.create", { project: "x", deploy }); + assert.equal(answer.refused?.code, "Unsupported", JSON.stringify(answer)); + assert.match(answer.refused.message, /not available on a vm:lima home/); + } + // a namespaces deployment is sent (and here fails to connect, not Unsupported) + const sent = await Promise.race([vm.call("sandbox.create", { project: "x", deploy: { sandbox: "namespaces" } }), new Promise((resolve) => setTimeout(() => resolve({ timedOut: true }), 5000))]); + assert.notEqual(sent.refused?.code, "Unsupported", JSON.stringify(sent)); + // a worker with no vm (the macOS and Windows routes) still sends Docker deployments + writeFileSync(file, JSON.stringify({ home: "/layerfs/home", port: 9, secret: "a".repeat(64) })); + const local = await Promise.race([workerClient(file).call("sandbox.create", { project: "x", deploy: { sandbox: "docker" } }), new Promise((resolve) => setTimeout(() => resolve({ timedOut: true }), 5000))]); + assert.notEqual(local.refused?.code, "Unsupported", JSON.stringify(local)); + rmSync(dir, { recursive: true, force: true }); +} console.log("native_deployment: ok"); diff --git a/api/docs/agent.md b/api/docs/agent.md index c0909a241..b5a4c22a8 100644 --- a/api/docs/agent.md +++ b/api/docs/agent.md @@ -147,7 +147,7 @@ Keep each agent's operations on a Workspace sequential. | `LAYERFS_STORE_PATH` | The installed Store file this client's Store calls open: `global/store.sqlite` in the project's volume. On Linux this process opens it, so it must be on a local filesystem the daemons share, such as `/layerfs-store/global/store.sqlite` where the volume is mounted at `/layerfs-store`; otherwise Store calls fail `Unsupported`. On macOS and Windows the worker opens it, so it is the path inside the worker's Linux, `/var/lib/docker/volumes//_data/global/store.sqlite`. On any other platform Store calls fail `Unsupported`. Unset, they fail `InvalidInput` everywhere. | | `LAYERFS_CONTAINER_PREFIX` | Optional. Names every container this client creates `-` (default prefix `layerfs-`); another LayerFS home on the same Docker engine sets its own, so names never collide. Docker's name rule applies (an ASCII letter or digit, then letters, digits, `_`, `.`, `-`, at most 128). A name another container holds refuses the create before any effect. | | `LAYERFS_DAEMON_HOST` | Optional. The host this process dials for a daemon's port. Each daemon publishes its port on the Docker host's `127.0.0.1` only, and that stays so. A client inside a container does not share that loopback, so it names the host that reaches it, `host.docker.internal` on Docker Desktop. One resolution, its first address, one connect; nothing is tried again. Unset, the client dials `127.0.0.1`. | -| `LAYERFS_SANDBOX` | Optional: the Sandbox backend, `docker`, `native` or `namespaces`. Unset or `docker`: a Sandbox is a Docker container, exactly as described here. `native` (Linux or macOS): a Sandbox is a daemon process with no container and no Docker setting read. On macOS it runs as this user, without root; Workspaces are served over loopback NFS and mounted by this machine's own NFS client, and commands run as this user. On Linux it needs root: the daemon serves FUSE as root and commands run as 501:20 (see [Native Sandboxes](#native-sandboxes-linux-and-macos)). `namespaces` (Linux) is native with each Sandbox's daemon in its own mount, PID and IPC namespaces and its own cgroup v2 directory, on a root from the Sandbox image (`LAYERFS_IMAGE`, `LAYERFS_IMAGE_ARCHIVE`); commands run as the sandbox's uid:gid with no capabilities and no-new-privs; see [Namespace Sandboxes (Linux)](#namespace-sandboxes-linux). It needs root, cgroup v2, `/dev/fuse` and `user.max_user_namespaces=0`, and is refused `Unsupported` elsewhere or without them. Elsewhere `sandbox.create` refuses `native` as `Unsupported`; on Windows the agent itself refuses `native` and `namespaces` before anything is made (a Windows Sandbox is Docker, through the WSL2 worker). Any other value is refused as `InvalidInput` before anything is made. It is read when the client is made and sent with every call, so a Sandbox made with one backend is never reopened as another. | +| `LAYERFS_SANDBOX` | Optional: the Sandbox backend, `docker`, `native` or `namespaces`. Unset or `docker`: a Sandbox is a Docker container, exactly as described here. `native` (Linux or macOS): a Sandbox is a daemon process with no container and no Docker setting read. On macOS it runs as this user, without root; Workspaces are served over loopback NFS and mounted by this machine's own NFS client, and commands run as this user. On Linux it needs root: the daemon serves FUSE as root and commands run as 501:20 (see [Native Sandboxes](#native-sandboxes-linux-and-macos)). `namespaces` (Linux) is native with each Sandbox's daemon in its own mount, PID and IPC namespaces and its own cgroup v2 directory, on a root from the Sandbox image (`LAYERFS_IMAGE`, `LAYERFS_IMAGE_ARCHIVE`); commands run as the sandbox's uid:gid with no capabilities and no-new-privs; see [Namespace Sandboxes (Linux)](#namespace-sandboxes-linux). It needs root, cgroup v2, `/dev/fuse` and `user.max_user_namespaces=0`, and is refused `Unsupported` elsewhere or without them. Elsewhere `sandbox.create` refuses `native` as `Unsupported`; on Windows the agent itself refuses `native` and `namespaces` before anything is made (a Windows Sandbox is Docker, through the WSL2 worker). A `vm:` home's worker has no Docker Engine: the runtime sets `namespaces` for it, and `docker` (or unset) sent to it is refused `Unsupported` before the call leaves this process. Any other value is refused as `InvalidInput` before anything is made. It is read when the client is made and sent with every call, so a Sandbox made with one backend is never reopened as another. | | `LAYERFS_LOCAL_DIR` | With `LAYERFS_SANDBOX=native` or `namespaces`, required: an existing absolute directory, owned by the running user, not group/other writable and traversable by others (0755). Each native or namespaces Sandbox gets its own directory under it. | | `LAYERFS_SANDBOX_BACKEND` | Former, kept for one release: replaced by `LAYERFS_SANDBOX`. `LAYERFS_SANDBOX=native` with `LAYERFS_SANDBOX_BACKEND=namespaces` still means `namespaces`, and with it unset or `native` means `native`. Set beside any other `LAYERFS_SANDBOX` (`namespaces` with `native`, or `docker` with either), or set to another value, it is refused `InvalidInput` before anything is made, naming both settings. | | `LAYERFS_TRACE` | Optional per-call trace file (see [the call trace](backend.md#the-call-trace)); unset means no trace. | From 97d408cc5160347bd66b69b4eede91c173703d42 Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:44:35 +0800 Subject: [PATCH 35/37] test: the vm-docker refusal cell expects the documented answers With e9b9646148, Docker on a vm: home has a documented answer, so the refusals vm-docker cell gives PASS or FAIL instead of OBSERVED: placement vm:docker Unsupported, LAYERFS_SANDBOX=docker on the VM home Unsupported, and LAYERFS_SANDBOX_BACKEND=docker InvalidInput (step 11). Checks: node --check. Production LOC: 123811 -> 123811 (delta 0) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent e9b9646148 and the staged tree c5b85a5ea7; after: core 41405; engine 77639; api 4767; Co-Authored-By: Claude Opus 5.5 --- api/runtime/test/verify/cells/run.mjs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/api/runtime/test/verify/cells/run.mjs b/api/runtime/test/verify/cells/run.mjs index 6207af961..de8c5abd5 100644 --- a/api/runtime/test/verify/cells/run.mjs +++ b/api/runtime/test/verify/cells/run.mjs @@ -503,8 +503,14 @@ async function refusals() { }; receipt.observed[`LAYERFS_SANDBOX=docker on vm:${opts.provider}`] = await attempt({ LAYERFS_SANDBOX: "docker", LAYERFS_VOLUME: `${prefix}none`, LAYERFS_DOCKER: "/var/run/docker.sock", LAYERFS_IMAGE: receipt.bundle.images?.sandbox }); receipt.observed[`LAYERFS_SANDBOX_BACKEND=docker on vm:${opts.provider}`] = await attempt({ LAYERFS_SANDBOX_BACKEND: "docker" }); - receipt.verdict = "OBSERVED"; - receipt.cause = "no documented answer for Docker on a vm: home; see observed"; + // documented answers (e9b9646148, step 11): vm:docker is no provider, Docker + // on a vm: home is Unsupported before it is sent, and the former + // LAYERFS_SANDBOX_BACKEND never names docker + const codeOf = (seen) => seen?.created?.code ?? seen?.opened?.code ?? seen?.code ?? null; + const expected = { "placement vm:docker": "Unsupported", [`LAYERFS_SANDBOX=docker on vm:${opts.provider}`]: "Unsupported", [`LAYERFS_SANDBOX_BACKEND=docker on vm:${opts.provider}`]: "InvalidInput" }; + const answered = Object.fromEntries(Object.keys(expected).map((name) => [name, codeOf(receipt.observed[name])])); + receipt.verdict = Object.entries(expected).every(([name, code]) => answered[name] === code) ? "PASS" : "FAIL"; + receipt.cause = `expected ${JSON.stringify(expected)}; answered ${JSON.stringify(answered)}`; } // ---- the run ------------------------------------------------------------------ From 3c3ddb90094c19e9060e18d2f4b2d8b40ad9156b Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 05:56:31 +0800 Subject: [PATCH 36/37] docs: #527 platform pass, twelve cells on every platform MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PLATFORM-PASS.md (status: dated planning checkpoint) and its receipts. At the final product commit 97d408cc51, all 120 cells PASS on ten rows: macOS docker and native; Linux docker, native and namespaces; vm:apple-container, vm:microsandbox, vm:lima (vz), vm:firecracker (nested in Lima vz, pass/fail only) and vm:ssh. Both refusals (macOS namespaces, Docker on a vm: home) PASS. Windows rows are NOT_RUN (no Windows host). The document lists the receipt identities and why the 5431c7e4a9 receipts count at 97d408cc51, which rows overlapped, the §10 checks, the decisions taken during the pass, the open findings, every commit's LOC line and the cleanup. receipts/ holds the first pass (50e2c2bc87, kept with its failures), the final pass, the vm-docker rerun and the Apple Container fix's proof cell. Production LOC: 123811 -> 123811 (delta 0) Scope: core, engine, api (dsh 0; reference absent, retired R9c; last counted 65,417 at tree 498dd1917812). Method: tools/production_loc.py --root on the first parent 97d408cc51 and the staged tree a18da8acf7; after: core 41405; engine 77639; api 4767; Co-Authored-By: Claude Opus 5.5 --- core/docs/issues/527/PLATFORM-PASS.md | 540 ++++++++++++++++++ ...-C01-2026-10-31T202525067Z-wuosaz1su0.json | 334 +++++++++++ ...-C02-2026-10-31T202532205Z-wuoxt91t9h.json | 334 +++++++++++ ...-C03-2026-10-31T202544272Z-wup74g1ui4.json | 315 ++++++++++ ...-C04-2026-10-31T202553517Z-wupe991v9a.json | 334 +++++++++++ ...-C05-2026-10-31T202601701Z-wupkkl1w2j.json | 334 +++++++++++ ...-C06-2026-10-31T202617834Z-wupx0q1yqk.json | 334 +++++++++++ ...-C07-2026-10-31T202624687Z-wuq2b32066.json | 334 +++++++++++ ...-C08-2026-10-31T202634562Z-wuq9xe20w4.json | 334 +++++++++++ ...-C09-2026-10-31T202642940Z-wuqge32172.json | 376 ++++++++++++ ...-C10-2026-10-31T202651286Z-wuqmty21gm.json | 395 +++++++++++++ ...-C11-2026-10-31T202659597Z-wuqt8t21pu.json | 376 ++++++++++++ ...-C12-2026-10-31T202706883Z-wuqyv7221p.json | 334 +++++++++++ ...-C01-2026-10-31T202828164Z-wuspl023mj.json | 353 ++++++++++++ ...-C02-2026-10-31T202843143Z-wut15323tn.json | 353 ++++++++++++ ...-C03-2026-10-31T202859514Z-wutdru2435.json | 334 +++++++++++ ...-C04-2026-10-31T202917364Z-wutrjo24bf.json | 353 ++++++++++++ ...-C05-2026-10-31T202938534Z-wuu7vq24nj.json | 353 ++++++++++++ ...-C06-2026-10-31T202951727Z-wuui2724u3.json | 353 ++++++++++++ ...-C07-2026-10-31T203004888Z-mvwuus7s7j.json | 353 ++++++++++++ ...-C08-2026-10-31T203018381Z-mvwuv2mlxb.json | 353 ++++++++++++ ...-C09-2026-10-31T203030021Z-vwuvblx158.json | 395 +++++++++++++ ...-C10-2026-10-31T203044811Z-vwuvn0r2qv.json | 414 ++++++++++++++ ...-C11-2026-10-31T203103038Z-vwuw1313hu.json | 395 +++++++++++++ ...-C12-2026-10-31T203118356Z-vwuwcwk4ne.json | 353 ++++++++++++ ...-C01-2026-10-31T202713616Z-wur4282285.json | 335 +++++++++++ ...-C02-2026-10-31T202719962Z-wur8yi22ep.json | 335 +++++++++++ ...-C03-2026-10-31T202727814Z-wurf0m22jd.json | 316 ++++++++++ ...-C04-2026-10-31T202733541Z-wurjfp22sa.json | 335 +++++++++++ ...-C05-2026-10-31T202740760Z-wurp0822ux.json | 335 +++++++++++ ...-C06-2026-10-31T202748112Z-wuruog22zm.json | 335 +++++++++++ ...-C07-2026-10-31T202754171Z-wurzcr2312.json | 335 +++++++++++ ...-C08-2026-10-31T202800842Z-wus4i2236y.json | 335 +++++++++++ ...-C09-2026-10-31T202806375Z-wus8rr238b.json | 377 ++++++++++++ ...-C10-2026-10-31T202811681Z-wuscv5239m.json | 396 +++++++++++++ ...-C11-2026-10-31T202817953Z-wushpd23ey.json | 377 ++++++++++++ ...-C12-2026-10-31T202823329Z-wuslup23i8.json | 335 +++++++++++ ...-C01-2026-10-31T202525829Z-wuosw51svs.json | 312 ++++++++++ ...-C02-2026-10-31T202532635Z-wuoy571tbn.json | 312 ++++++++++ ...-C03-2026-10-31T202542052Z-wup5es1u7w.json | 293 ++++++++++ ...-C04-2026-10-31T202554711Z-wupf6f1va2.json | 312 ++++++++++ ...-C05-2026-10-31T202603112Z-wuplns1wfz.json | 312 ++++++++++ ...-C06-2026-10-31T202616123Z-wupvp71ybs.json | 312 ++++++++++ ...-C07-2026-10-31T202623542Z-wuq1fa1zwl.json | 312 ++++++++++ ...-C08-2026-10-31T202636079Z-wuqb3j20yr.json | 312 ++++++++++ ...-C09-2026-10-31T202643484Z-wuqgt8217m.json | 354 ++++++++++++ ...-C10-2026-10-31T202651748Z-wuqn6s21he.json | 373 ++++++++++++ ...-C11-2026-10-31T202700014Z-wuqtke21qf.json | 354 ++++++++++++ ...-C12-2026-10-31T202707240Z-wuqz542225.json | 312 ++++++++++ ...-C01-2026-10-31T202522600Z-wuoqeg1srj.json | 309 ++++++++++ ...-C02-2026-10-31T202529784Z-wuovy01t3v.json | 309 ++++++++++ ...-C03-2026-10-31T202552637Z-wupdkt1v8m.json | 290 ++++++++++ ...-C04-2026-10-31T202559154Z-wupilu1vg6.json | 309 ++++++++++ ...-C05-2026-10-31T202614510Z-wupuge1y1w.json | 309 ++++++++++ ...-C06-2026-10-31T202631526Z-wuq7l220rh.json | 309 ++++++++++ ...-C07-2026-10-31T202640107Z-wuqe7f214l.json | 309 ++++++++++ ...-C08-2026-10-31T202652433Z-wuqnpt21j5.json | 309 ++++++++++ ...-C09-2026-10-31T202700053Z-wuqtlh21qi.json | 351 ++++++++++++ ...-C10-2026-10-31T202708094Z-wuqzsu2248.json | 370 ++++++++++++ ...-C11-2026-10-31T202719807Z-wur8u722e6.json | 351 ++++++++++++ ...-C12-2026-10-31T202729034Z-wurfyi22ka.json | 309 ++++++++++ ...aces-2026-10-31T202524406Z-wuorsm1ssi.json | 105 ++++ ...-C03-2026-10-31T203127016Z-vwuwjl44p2.json | 128 +++++ ...-C04-2026-10-31T203255077Z-vwuyfj95oy.json | 336 +++++++++++ ...-C05-2026-10-31T203418501Z-vwv07wl6aq.json | 336 +++++++++++ ...-C06-2026-10-31T203539562Z-vwv1yga6lb.json | 336 +++++++++++ ...-C07-2026-10-31T203658654Z-vwv3nha7l4.json | 128 +++++ ...-C08-2026-10-31T203816034Z-vwv5b6q938.json | 128 +++++ ...-C09-2026-10-31T203933153Z-vwv6yoxazr.json | 378 ++++++++++++ ...-C10-2026-10-31T204054322Z-vwv8pbmbli.json | 397 +++++++++++++ ...-C11-2026-10-31T204212774Z-vwvaduucx0.json | 378 ++++++++++++ ...-C12-2026-10-31T204332939Z-vwvc3pndhf.json | 128 +++++ ...-C01-2026-10-31T202528263Z-wuourr1t1d.json | 336 +++++++++++ ...-C02-2026-10-31T202600876Z-wupjxn1vus.json | 336 +++++++++++ ...-C03-2026-10-31T202617983Z-wupx4v1ysg.json | 317 ++++++++++ ...-C04-2026-10-31T202633783Z-wuq9br20uo.json | 336 +++++++++++ ...-C05-2026-10-31T202652348Z-wuqnng21iv.json | 336 +++++++++++ ...-C06-2026-10-31T202714274Z-wur4ki228p.json | 336 +++++++++++ ...-C07-2026-10-31T202735256Z-wurkrc22sx.json | 336 +++++++++++ ...-C08-2026-10-31T202754408Z-wurzjc231u.json | 336 +++++++++++ ...-C09-2026-10-31T202811985Z-wusd3l23ae.json | 378 ++++++++++++ ...-C10-2026-10-31T202829295Z-wusqgf23mz.json | 397 +++++++++++++ ...-C11-2026-10-31T202848073Z-wut4y123vr.json | 378 ++++++++++++ ...-C12-2026-10-31T202908736Z-wutkw0248s.json | 336 +++++++++++ ...-C01-2026-10-31T202533534Z-wuoyu61tgt.json | 346 +++++++++++ ...-C02-2026-10-31T202601803Z-wupknf1w3r.json | 346 +++++++++++ ...-C03-2026-10-31T202634951Z-wuqa8720wl.json | 327 +++++++++++ ...-C04-2026-10-31T202703056Z-wuqvww21uo.json | 346 +++++++++++ ...-C05-2026-10-31T202731442Z-wurhte22lm.json | 346 +++++++++++ ...-C06-2026-10-31T202758466Z-wus2o2233d.json | 346 +++++++++++ ...-C07-2026-10-31T202823008Z-wuslls23he.json | 346 +++++++++++ ...-C08-2026-10-31T202850148Z-wut6jo23wj.json | 346 +++++++++++ ...-C09-2026-10-31T202919103Z-wutsvz24bz.json | 388 +++++++++++++ ...-C10-2026-10-31T202944788Z-wuucpg24q7.json | 407 +++++++++++++ ...-C11-2026-10-31T203007969Z-mvwuuuld96.json | 388 +++++++++++++ ...-C12-2026-10-31T203029685Z-vwuvbcl140.json | 346 +++++++++++ ...-C01-2026-10-31T213613739Z-wx7uln1480.json | 334 +++++++++++ ...-C02-2026-10-31T213625103Z-wx83db14o5.json | 334 +++++++++++ ...-C03-2026-10-31T213635663Z-wx8bin14sz.json | 315 ++++++++++ ...-C04-2026-10-31T213646227Z-wx8jo314z6.json | 334 +++++++++++ ...-C05-2026-10-31T213702263Z-wx8w1j15gx.json | 334 +++++++++++ ...-C06-2026-10-31T213713071Z-wx94dr15sn.json | 334 +++++++++++ ...-C07-2026-10-31T213721420Z-wx9ato163v.json | 334 +++++++++++ ...-C08-2026-10-31T213732344Z-wx9j9416kl.json | 334 +++++++++++ ...-C09-2026-10-31T213739059Z-wx9ofn16sd.json | 376 ++++++++++++ ...-C10-2026-10-31T213747053Z-wx9ulp174s.json | 395 +++++++++++++ ...-C11-2026-10-31T213759433Z-wxa45l17ho.json | 376 ++++++++++++ ...-C12-2026-10-31T213806739Z-wxa9si182g.json | 334 +++++++++++ ...-C01-2026-10-31T213947586Z-wxcflu1g6b.json | 338 +++++++++++ ...-C02-2026-10-31T214033958Z-wxdfdy1hbp.json | 338 +++++++++++ ...-C03-2026-10-31T214059991Z-wxdzh31hw3.json | 319 +++++++++++ ...-C04-2026-10-31T214122070Z-wxegie1ics.json | 338 +++++++++++ ...-C05-2026-10-31T214141629Z-wxevlp1ijt.json | 338 +++++++++++ ...-C06-2026-10-31T214204571Z-wxfdaz1j1v.json | 338 +++++++++++ ...-C07-2026-10-31T214219916Z-wxfp581j4w.json | 338 +++++++++++ ...-C08-2026-10-31T214248349Z-wxgb311jw6.json | 338 +++++++++++ ...-C09-2026-10-31T214305697Z-wxgogx1k4l.json | 380 ++++++++++++ ...-C10-2026-10-31T214326937Z-wxh4ux1khz.json | 399 +++++++++++++ ...-C11-2026-10-31T214345845Z-wxhjg51kn2.json | 380 ++++++++++++ ...-C12-2026-10-31T214408571Z-wxi0zf1l2b.json | 338 +++++++++++ ...-C01-2026-10-31T213814929Z-wxag4118rt.json | 335 +++++++++++ ...-C02-2026-10-31T213824901Z-wxant119in.json | 335 +++++++++++ ...-C03-2026-10-31T213836396Z-wxawoc1a0l.json | 316 ++++++++++ ...-C04-2026-10-31T213845493Z-wxb3p11bco.json | 335 +++++++++++ ...-C05-2026-10-31T213856304Z-wxbc1c1cvx.json | 335 +++++++++++ ...-C06-2026-10-31T213902708Z-wxbgz81egm.json | 335 +++++++++++ ...-C07-2026-10-31T213908531Z-wxblgz1f24.json | 335 +++++++++++ ...-C08-2026-10-31T213915712Z-wxbr0g1f87.json | 335 +++++++++++ ...-C09-2026-10-31T213921127Z-wxbv6v1fe3.json | 377 ++++++++++++ ...-C10-2026-10-31T213926596Z-wxbzes1fmc.json | 396 +++++++++++++ ...-C11-2026-10-31T213935623Z-wxc6dj1fvg.json | 377 ++++++++++++ ...-C12-2026-10-31T213942416Z-wxcbm81g0j.json | 335 +++++++++++ ...-C01-2026-10-31T213613838Z-wx7uoe148m.json | 312 ++++++++++ ...-C02-2026-10-31T213623285Z-wx81yt14ls.json | 312 ++++++++++ ...-C03-2026-10-31T213650791Z-wx8n6v153p.json | 293 ++++++++++ ...-C04-2026-10-31T213702262Z-wx8w1i15gw.json | 312 ++++++++++ ...-C05-2026-10-31T213707710Z-wx908u15lg.json | 312 ++++++++++ ...-C06-2026-10-31T213712746Z-wx944q15rf.json | 312 ++++++++++ ...-C07-2026-10-31T213716586Z-wx973e15z1.json | 312 ++++++++++ ...-C08-2026-10-31T213722168Z-wx9beg165q.json | 312 ++++++++++ ...-C09-2026-10-31T213727031Z-wx9f5j16ch.json | 354 ++++++++++++ ...-C10-2026-10-31T213730652Z-wx9hy416i1.json | 373 ++++++++++++ ...-C11-2026-10-31T213734749Z-wx9l3x16o3.json | 354 ++++++++++++ ...-C12-2026-10-31T213739691Z-wx9ox716vh.json | 312 ++++++++++ ...-C01-2026-10-31T213752893Z-wx9z3x1765.json | 309 ++++++++++ ...-C02-2026-10-31T213802134Z-wxa68m17lq.json | 309 ++++++++++ ...-C03-2026-10-31T213823621Z-wxamth19gh.json | 290 ++++++++++ ...-C04-2026-10-31T213830092Z-wxart819r5.json | 309 ++++++++++ ...-C05-2026-10-31T213854435Z-wxbalf1ceg.json | 309 ++++++++++ ...-C06-2026-10-31T213908073Z-wxbl491ezq.json | 309 ++++++++++ ...-C07-2026-10-31T213916432Z-wxbrkg1f9a.json | 309 ++++++++++ ...-C08-2026-10-31T213929571Z-wxc1pf1fnb.json | 309 ++++++++++ ...-C09-2026-10-31T213939133Z-wxc9311fwy.json | 351 ++++++++++++ ...-C10-2026-10-31T213947659Z-wxcfnv1g6n.json | 370 ++++++++++++ ...-C11-2026-10-31T214000431Z-wxcpin1ghl.json | 351 ++++++++++++ ...-C12-2026-10-31T214015465Z-wxd1491gu8.json | 309 ++++++++++ ...aces-2026-10-31T214022220Z-wxd6bw1h20.json | 117 ++++ ...cker-2026-10-31T214026734Z-wxd9ta1h5b.json | 140 +++++ ...-C01-2026-10-31T213613539Z-wx7ug3145e.json | 335 +++++++++++ ...-C02-2026-10-31T213644476Z-wx8ibg14wm.json | 335 +++++++++++ ...-C03-2026-10-31T213713256Z-wx94iw15ta.json | 316 ++++++++++ ...-C04-2026-10-31T213733813Z-wx9kdx16l1.json | 335 +++++++++++ ...-C05-2026-10-31T213759997Z-wxa4l917i3.json | 335 +++++++++++ ...-C06-2026-10-31T213829379Z-wxar9f19q1.json | 335 +++++++++++ ...-C07-2026-10-31T213901369Z-wxbfy11e3g.json | 335 +++++++++++ ...-C08-2026-10-31T213923365Z-wxbwx11fis.json | 335 +++++++++++ ...-C09-2026-10-31T213944978Z-wxcdle1g26.json | 377 ++++++++++++ ...-C10-2026-10-31T214013621Z-wxczp11gqh.json | 396 +++++++++++++ ...-C11-2026-10-31T214037917Z-wxdifx1hdq.json | 377 ++++++++++++ ...-C12-2026-10-31T214109810Z-wxe71u1hzz.json | 335 +++++++++++ ...-C01-2026-10-31T213412344Z-wx58xk13lu.json | 344 +++++++++++ ...-C02-2026-10-31T213613515Z-wx7uff145d.json | 344 +++++++++++ ...-C03-2026-10-31T213743998Z-wx9s8u1718.json | 325 +++++++++++ ...-C04-2026-10-31T213908341Z-wxblbp1f08.json | 344 +++++++++++ ...-C05-2026-10-31T214031655Z-wxddlz1h81.json | 344 +++++++++++ ...-C06-2026-10-31T214154832Z-wxf5sg1it1.json | 344 +++++++++++ ...-C07-2026-10-31T214307963Z-wxgq7v1k50.json | 344 +++++++++++ ...-C08-2026-10-31T214426248Z-wxiemg1l8n.json | 344 +++++++++++ ...-C09-2026-10-31T214540863Z-wxk0731mms.json | 386 +++++++++++++ ...-C10-2026-10-31T214644675Z-wxldfn1nqb.json | 405 +++++++++++++ ...-C11-2026-10-31T214748671Z-wxmqtb1p2n.json | 386 +++++++++++++ ...-C12-2026-10-31T214853062Z-wxo4hy1q2t.json | 344 +++++++++++ ...-C01-2026-10-31T213613810Z-wx7unm148i.json | 335 +++++++++++ ...-C02-2026-10-31T213716315Z-wx96vv15xn.json | 335 +++++++++++ ...-C03-2026-10-31T213809573Z-wxabz918cp.json | 316 ++++++++++ ...-C04-2026-10-31T213853122Z-wxb9ky1cd4.json | 335 +++++++++++ ...-C05-2026-10-31T213932717Z-wxc44s1fq0.json | 335 +++++++++++ ...-C06-2026-10-31T214014933Z-wxd0ph1gt0.json | 335 +++++++++++ ...-C07-2026-10-31T214114792Z-wxeaw81i4t.json | 335 +++++++++++ ...-C08-2026-10-31T214159356Z-wxf9a41iwz.json | 335 +++++++++++ ...-C09-2026-10-31T214239457Z-wxg4811jo1.json | 377 ++++++++++++ ...-C10-2026-10-31T214323121Z-wxh1wx1kgb.json | 396 +++++++++++++ ...-C11-2026-10-31T214406448Z-wxhzcg1l0q.json | 377 ++++++++++++ ...-C12-2026-10-31T214458591Z-wxj3kv1lp2.json | 335 +++++++++++ ...-C01-2026-10-31T214132060Z-wxeo7w1ig8.json | 335 +++++++++++ ...-C02-2026-10-31T214155885Z-wxf6lp1iuq.json | 335 +++++++++++ ...-C03-2026-10-31T214215301Z-wxfll11j36.json | 316 ++++++++++ ...-C04-2026-10-31T214242634Z-wxg6oa1jr0.json | 335 +++++++++++ ...-C05-2026-10-31T214304920Z-wxgnvc1k3u.json | 335 +++++++++++ ...-C06-2026-10-31T214328441Z-wxh60p1kiy.json | 335 +++++++++++ ...-C07-2026-10-31T214350330Z-wxhmwq1kq1.json | 335 +++++++++++ ...-C08-2026-10-31T214410908Z-wxi2sc1l2u.json | 335 +++++++++++ ...-C09-2026-10-31T214427671Z-wxifpz1lao.json | 377 ++++++++++++ ...-C10-2026-10-31T214448830Z-wxiw1q1lmg.json | 396 +++++++++++++ ...-C11-2026-10-31T214508616Z-wxjbbc1lw8.json | 377 ++++++++++++ ...-C12-2026-10-31T214533568Z-wxjukg1mj0.json | 335 +++++++++++ ...-C01-2026-10-31T214546584Z-wxk4m01mpg.json | 345 +++++++++++ ...-C02-2026-10-31T214616515Z-wxkrpf1n8q.json | 345 +++++++++++ ...-C03-2026-10-31T214640708Z-wxladg1nlx.json | 326 +++++++++++ ...-C04-2026-10-31T214702226Z-wxlqz61o0k.json | 345 +++++++++++ ...-C05-2026-10-31T214732804Z-wxmekk1osa.json | 345 +++++++++++ ...-C06-2026-10-31T214754815Z-wxmvjz1p5t.json | 345 +++++++++++ ...-C07-2026-10-31T214816943Z-wxncmn1pgl.json | 345 +++++++++++ ...-C08-2026-10-31T214839306Z-wxntvu1pul.json | 345 +++++++++++ ...-C09-2026-10-31T214906681Z-wxof091q8m.json | 387 +++++++++++++ ...-C10-2026-10-31T214928092Z-wxovj01qk4.json | 406 +++++++++++++ ...-C11-2026-10-31T214949143Z-wxpbrr1quw.json | 387 +++++++++++++ ...-C12-2026-10-31T215008878Z-wxpqzy1r53.json | 345 +++++++++++ .../97d408cc51/js-checks-97d408cc51.log | 25 + ...cker-2026-10-31T214509567Z-wxjc1r1lwp.json | 133 +++++ ...-C03-2026-10-31T205753744Z-vwvujwwphn.json | 317 ++++++++++ 221 files changed, 73956 insertions(+) create mode 100644 core/docs/issues/527/PLATFORM-PASS.md create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C01-2026-10-31T202525067Z-wuosaz1su0.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C02-2026-10-31T202532205Z-wuoxt91t9h.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C03-2026-10-31T202544272Z-wup74g1ui4.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C04-2026-10-31T202553517Z-wupe991v9a.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C05-2026-10-31T202601701Z-wupkkl1w2j.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C06-2026-10-31T202617834Z-wupx0q1yqk.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C07-2026-10-31T202624687Z-wuq2b32066.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C08-2026-10-31T202634562Z-wuq9xe20w4.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C09-2026-10-31T202642940Z-wuqge32172.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C10-2026-10-31T202651286Z-wuqmty21gm.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C11-2026-10-31T202659597Z-wuqt8t21pu.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C12-2026-10-31T202706883Z-wuqyv7221p.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C01-2026-10-31T202828164Z-wuspl023mj.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C02-2026-10-31T202843143Z-wut15323tn.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C03-2026-10-31T202859514Z-wutdru2435.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C04-2026-10-31T202917364Z-wutrjo24bf.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C05-2026-10-31T202938534Z-wuu7vq24nj.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C06-2026-10-31T202951727Z-wuui2724u3.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C07-2026-10-31T203004888Z-mvwuus7s7j.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C08-2026-10-31T203018381Z-mvwuv2mlxb.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C09-2026-10-31T203030021Z-vwuvblx158.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C10-2026-10-31T203044811Z-vwuvn0r2qv.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C11-2026-10-31T203103038Z-vwuw1313hu.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C12-2026-10-31T203118356Z-vwuwcwk4ne.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C01-2026-10-31T202713616Z-wur4282285.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C02-2026-10-31T202719962Z-wur8yi22ep.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C03-2026-10-31T202727814Z-wurf0m22jd.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C04-2026-10-31T202733541Z-wurjfp22sa.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C05-2026-10-31T202740760Z-wurp0822ux.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C06-2026-10-31T202748112Z-wuruog22zm.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C07-2026-10-31T202754171Z-wurzcr2312.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C08-2026-10-31T202800842Z-wus4i2236y.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C09-2026-10-31T202806375Z-wus8rr238b.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C10-2026-10-31T202811681Z-wuscv5239m.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C11-2026-10-31T202817953Z-wushpd23ey.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/linux-native-C12-2026-10-31T202823329Z-wuslup23i8.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C01-2026-10-31T202525829Z-wuosw51svs.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C02-2026-10-31T202532635Z-wuoy571tbn.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C03-2026-10-31T202542052Z-wup5es1u7w.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C04-2026-10-31T202554711Z-wupf6f1va2.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C05-2026-10-31T202603112Z-wuplns1wfz.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C06-2026-10-31T202616123Z-wupvp71ybs.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C07-2026-10-31T202623542Z-wuq1fa1zwl.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C08-2026-10-31T202636079Z-wuqb3j20yr.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C09-2026-10-31T202643484Z-wuqgt8217m.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C10-2026-10-31T202651748Z-wuqn6s21he.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C11-2026-10-31T202700014Z-wuqtke21qf.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C12-2026-10-31T202707240Z-wuqz542225.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C01-2026-10-31T202522600Z-wuoqeg1srj.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C02-2026-10-31T202529784Z-wuovy01t3v.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C03-2026-10-31T202552637Z-wupdkt1v8m.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C04-2026-10-31T202559154Z-wupilu1vg6.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C05-2026-10-31T202614510Z-wupuge1y1w.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C06-2026-10-31T202631526Z-wuq7l220rh.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C07-2026-10-31T202640107Z-wuqe7f214l.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C08-2026-10-31T202652433Z-wuqnpt21j5.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C09-2026-10-31T202700053Z-wuqtlh21qi.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C10-2026-10-31T202708094Z-wuqzsu2248.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C11-2026-10-31T202719807Z-wur8u722e6.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/macos-native-C12-2026-10-31T202729034Z-wurfyi22ka.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/refusals-macos-namespaces-2026-10-31T202524406Z-wuorsm1ssi.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C03-2026-10-31T203127016Z-vwuwjl44p2.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C04-2026-10-31T203255077Z-vwuyfj95oy.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C05-2026-10-31T203418501Z-vwv07wl6aq.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C06-2026-10-31T203539562Z-vwv1yga6lb.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C07-2026-10-31T203658654Z-vwv3nha7l4.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C08-2026-10-31T203816034Z-vwv5b6q938.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C09-2026-10-31T203933153Z-vwv6yoxazr.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C10-2026-10-31T204054322Z-vwv8pbmbli.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C11-2026-10-31T204212774Z-vwvaduucx0.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C12-2026-10-31T204332939Z-vwvc3pndhf.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C01-2026-10-31T202528263Z-wuourr1t1d.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C02-2026-10-31T202600876Z-wupjxn1vus.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C03-2026-10-31T202617983Z-wupx4v1ysg.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C04-2026-10-31T202633783Z-wuq9br20uo.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C05-2026-10-31T202652348Z-wuqnng21iv.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C06-2026-10-31T202714274Z-wur4ki228p.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C07-2026-10-31T202735256Z-wurkrc22sx.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C08-2026-10-31T202754408Z-wurzjc231u.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C09-2026-10-31T202811985Z-wusd3l23ae.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C10-2026-10-31T202829295Z-wusqgf23mz.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C11-2026-10-31T202848073Z-wut4y123vr.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C12-2026-10-31T202908736Z-wutkw0248s.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C01-2026-10-31T202533534Z-wuoyu61tgt.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C02-2026-10-31T202601803Z-wupknf1w3r.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C03-2026-10-31T202634951Z-wuqa8720wl.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C04-2026-10-31T202703056Z-wuqvww21uo.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C05-2026-10-31T202731442Z-wurhte22lm.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C06-2026-10-31T202758466Z-wus2o2233d.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C07-2026-10-31T202823008Z-wuslls23he.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C08-2026-10-31T202850148Z-wut6jo23wj.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C09-2026-10-31T202919103Z-wutsvz24bz.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C10-2026-10-31T202944788Z-wuucpg24q7.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C11-2026-10-31T203007969Z-mvwuuuld96.json create mode 100644 core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C12-2026-10-31T203029685Z-vwuvbcl140.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C01-2026-10-31T213613739Z-wx7uln1480.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C02-2026-10-31T213625103Z-wx83db14o5.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C03-2026-10-31T213635663Z-wx8bin14sz.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C04-2026-10-31T213646227Z-wx8jo314z6.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C05-2026-10-31T213702263Z-wx8w1j15gx.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C06-2026-10-31T213713071Z-wx94dr15sn.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C07-2026-10-31T213721420Z-wx9ato163v.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C08-2026-10-31T213732344Z-wx9j9416kl.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C09-2026-10-31T213739059Z-wx9ofn16sd.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C10-2026-10-31T213747053Z-wx9ulp174s.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C11-2026-10-31T213759433Z-wxa45l17ho.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C12-2026-10-31T213806739Z-wxa9si182g.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C01-2026-10-31T213947586Z-wxcflu1g6b.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C02-2026-10-31T214033958Z-wxdfdy1hbp.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C03-2026-10-31T214059991Z-wxdzh31hw3.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C04-2026-10-31T214122070Z-wxegie1ics.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C05-2026-10-31T214141629Z-wxevlp1ijt.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C06-2026-10-31T214204571Z-wxfdaz1j1v.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C07-2026-10-31T214219916Z-wxfp581j4w.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C08-2026-10-31T214248349Z-wxgb311jw6.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C09-2026-10-31T214305697Z-wxgogx1k4l.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C10-2026-10-31T214326937Z-wxh4ux1khz.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C11-2026-10-31T214345845Z-wxhjg51kn2.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C12-2026-10-31T214408571Z-wxi0zf1l2b.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C01-2026-10-31T213814929Z-wxag4118rt.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C02-2026-10-31T213824901Z-wxant119in.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C03-2026-10-31T213836396Z-wxawoc1a0l.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C04-2026-10-31T213845493Z-wxb3p11bco.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C05-2026-10-31T213856304Z-wxbc1c1cvx.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C06-2026-10-31T213902708Z-wxbgz81egm.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C07-2026-10-31T213908531Z-wxblgz1f24.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C08-2026-10-31T213915712Z-wxbr0g1f87.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C09-2026-10-31T213921127Z-wxbv6v1fe3.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C10-2026-10-31T213926596Z-wxbzes1fmc.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C11-2026-10-31T213935623Z-wxc6dj1fvg.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/linux-native-C12-2026-10-31T213942416Z-wxcbm81g0j.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C01-2026-10-31T213613838Z-wx7uoe148m.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C02-2026-10-31T213623285Z-wx81yt14ls.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C03-2026-10-31T213650791Z-wx8n6v153p.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C04-2026-10-31T213702262Z-wx8w1i15gw.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C05-2026-10-31T213707710Z-wx908u15lg.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C06-2026-10-31T213712746Z-wx944q15rf.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C07-2026-10-31T213716586Z-wx973e15z1.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C08-2026-10-31T213722168Z-wx9beg165q.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C09-2026-10-31T213727031Z-wx9f5j16ch.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C10-2026-10-31T213730652Z-wx9hy416i1.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C11-2026-10-31T213734749Z-wx9l3x16o3.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C12-2026-10-31T213739691Z-wx9ox716vh.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C01-2026-10-31T213752893Z-wx9z3x1765.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C02-2026-10-31T213802134Z-wxa68m17lq.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C03-2026-10-31T213823621Z-wxamth19gh.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C04-2026-10-31T213830092Z-wxart819r5.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C05-2026-10-31T213854435Z-wxbalf1ceg.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C06-2026-10-31T213908073Z-wxbl491ezq.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C07-2026-10-31T213916432Z-wxbrkg1f9a.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C08-2026-10-31T213929571Z-wxc1pf1fnb.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C09-2026-10-31T213939133Z-wxc9311fwy.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C10-2026-10-31T213947659Z-wxcfnv1g6n.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C11-2026-10-31T214000431Z-wxcpin1ghl.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/macos-native-C12-2026-10-31T214015465Z-wxd1491gu8.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/refusals-macos-namespaces-2026-10-31T214022220Z-wxd6bw1h20.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/refusals-vm-docker-2026-10-31T214026734Z-wxd9ta1h5b.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C01-2026-10-31T213613539Z-wx7ug3145e.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C02-2026-10-31T213644476Z-wx8ibg14wm.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C03-2026-10-31T213713256Z-wx94iw15ta.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C04-2026-10-31T213733813Z-wx9kdx16l1.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C05-2026-10-31T213759997Z-wxa4l917i3.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C06-2026-10-31T213829379Z-wxar9f19q1.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C07-2026-10-31T213901369Z-wxbfy11e3g.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C08-2026-10-31T213923365Z-wxbwx11fis.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C09-2026-10-31T213944978Z-wxcdle1g26.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C10-2026-10-31T214013621Z-wxczp11gqh.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C11-2026-10-31T214037917Z-wxdifx1hdq.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C12-2026-10-31T214109810Z-wxe71u1hzz.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C01-2026-10-31T213412344Z-wx58xk13lu.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C02-2026-10-31T213613515Z-wx7uff145d.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C03-2026-10-31T213743998Z-wx9s8u1718.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C04-2026-10-31T213908341Z-wxblbp1f08.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C05-2026-10-31T214031655Z-wxddlz1h81.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C06-2026-10-31T214154832Z-wxf5sg1it1.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C07-2026-10-31T214307963Z-wxgq7v1k50.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C08-2026-10-31T214426248Z-wxiemg1l8n.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C09-2026-10-31T214540863Z-wxk0731mms.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C10-2026-10-31T214644675Z-wxldfn1nqb.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C11-2026-10-31T214748671Z-wxmqtb1p2n.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C12-2026-10-31T214853062Z-wxo4hy1q2t.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C01-2026-10-31T213613810Z-wx7unm148i.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C02-2026-10-31T213716315Z-wx96vv15xn.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C03-2026-10-31T213809573Z-wxabz918cp.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C04-2026-10-31T213853122Z-wxb9ky1cd4.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C05-2026-10-31T213932717Z-wxc44s1fq0.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C06-2026-10-31T214014933Z-wxd0ph1gt0.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C07-2026-10-31T214114792Z-wxeaw81i4t.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C08-2026-10-31T214159356Z-wxf9a41iwz.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C09-2026-10-31T214239457Z-wxg4811jo1.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C10-2026-10-31T214323121Z-wxh1wx1kgb.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C11-2026-10-31T214406448Z-wxhzcg1l0q.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C12-2026-10-31T214458591Z-wxj3kv1lp2.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C01-2026-10-31T214132060Z-wxeo7w1ig8.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C02-2026-10-31T214155885Z-wxf6lp1iuq.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C03-2026-10-31T214215301Z-wxfll11j36.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C04-2026-10-31T214242634Z-wxg6oa1jr0.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C05-2026-10-31T214304920Z-wxgnvc1k3u.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C06-2026-10-31T214328441Z-wxh60p1kiy.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C07-2026-10-31T214350330Z-wxhmwq1kq1.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C08-2026-10-31T214410908Z-wxi2sc1l2u.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C09-2026-10-31T214427671Z-wxifpz1lao.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C10-2026-10-31T214448830Z-wxiw1q1lmg.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C11-2026-10-31T214508616Z-wxjbbc1lw8.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C12-2026-10-31T214533568Z-wxjukg1mj0.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C01-2026-10-31T214546584Z-wxk4m01mpg.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C02-2026-10-31T214616515Z-wxkrpf1n8q.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C03-2026-10-31T214640708Z-wxladg1nlx.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C04-2026-10-31T214702226Z-wxlqz61o0k.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C05-2026-10-31T214732804Z-wxmekk1osa.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C06-2026-10-31T214754815Z-wxmvjz1p5t.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C07-2026-10-31T214816943Z-wxncmn1pgl.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C08-2026-10-31T214839306Z-wxntvu1pul.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C09-2026-10-31T214906681Z-wxof091q8m.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C10-2026-10-31T214928092Z-wxovj01qk4.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C11-2026-10-31T214949143Z-wxpbrr1quw.json create mode 100644 core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C12-2026-10-31T215008878Z-wxpqzy1r53.json create mode 100644 core/docs/issues/527/receipts/97d408cc51/js-checks-97d408cc51.log create mode 100644 core/docs/issues/527/receipts/97d408cc51/refusals-vm-docker-2026-10-31T214509567Z-wxjc1r1lwp.json create mode 100644 core/docs/issues/527/receipts/ac-fix-try/vm-apple-container-C03-2026-10-31T205753744Z-vwvujwwphn.json diff --git a/core/docs/issues/527/PLATFORM-PASS.md b/core/docs/issues/527/PLATFORM-PASS.md new file mode 100644 index 000000000..4a0bbb7e4 --- /dev/null +++ b/core/docs/issues/527/PLATFORM-PASS.md @@ -0,0 +1,540 @@ +# #527 platform pass: twelve cells on every platform + +> **Status:** Dated planning checkpoint; not release evidence or a product contract. + +Written 2026-11-01 on branch `claude/issue527-platform-pass-e05aa3`, based on +`layerfs_v2_0_0` at `81f8758bcf`. The terminal acceptance pass of #527 ("Sandbox +platform integration and consolidation"): every platform this Mac can run, through +the twelve #516 cells C01–C12. Nothing is pushed or merged; that waits for the owner. + +- **Final commit:** the product is final at `97d408cc51`. This document and the + receipts are committed after it (docs only). +- **Receipts:** `receipts//` beside this file. Each JSON names its row, + cell, verdict, cause, timings, load, identities, lock and teardown. +- **Owner decisions applied:** D1–D7, all at their recommended option (2026-11-01). + The four #516 VMs are real `vm:` providers (owner, 2026-11-01). +- **Delegation:** the owner was asleep and the parent session held the delegated + authority. Reversible choices made during the pass are listed under "Decisions + taken during the pass". + +## Result + +All 120 cells PASS on ten platform rows, and both refusals PASS. + +| Platform (row) | C01 | C02 | C03 | C04 | C05 | C06 | C07 | C08 | C09 | C10 | C11 | C12 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| macOS, local, docker (macos-docker) | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | +| macOS, local, native (macos-native) | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | +| macOS, local, namespaces | REFUSED (expected) | | | | | | | | | | | | +| Linux, local, docker (linux-docker) | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | +| Linux, local, native (linux-native) | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | +| Linux, local, namespaces (linux-namespaces) | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | +| vm:apple-container, namespaces | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | +| vm:microsandbox, namespaces | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | +| vm:lima (vz), namespaces | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | +| vm:firecracker (nested in Lima vz; pass/fail only) | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | +| vm:ssh, namespaces | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | PASS | +| vm:*, docker | REFUSED (expected) | | | | | | | | | | | | +| Windows, local, docker (WSL2 worker) | NOT_RUN — no Windows host | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | NOT_RUN | +| Windows, local, native or namespaces | REFUSED by design (step 8); NOT_RUN on a Windows host | | | | | | | | | | | | + +The refusals are one cell each, since a refused platform runs no cell body. + +- **macOS namespaces** (`refusals-macos-namespaces`, 5431c7e4a9): PASS. The answer + was `Unsupported` three times: for `LAYERFS_SANDBOX=namespaces` without the image + settings, with them, and for the former pair (`native` + + `LAYERFS_SANDBOX_BACKEND=namespaces`). The message is "… namespaces is Linux only; + use native". +- **Docker on a vm: home** (`refusals-vm-docker`): + - At 5431c7e4a9 it was **OBSERVED**, a product finding. + - Placement `vm:docker` was refused `Unsupported` (no such provider). + - `LAYERFS_SANDBOX_BACKEND=docker` was refused `InvalidInput`. + - But `LAYERFS_SANDBOX=docker` on `vm:apple-container` reached the VM's worker + and ended **`Failed`** at Create/Volume with `Io NotFound` (`attempted: false`, + nothing made). The VM's Linux has no Docker Engine. + - Fixed by `e9b9646148`: the agent's worker client refuses a Docker (or unset) + deployment to a worker whose endpoint names a VM, with `Unsupported`, before + sending it. + - Rerun at 97d408cc51: **PASS**, with all three answers as documented. + + Both receipts are kept. + +## Receipt identities and why they count at the final commit + +| Receipts | Product commit | Linux bundle (manifest sha256) | macOS bundle | VM bundle (identity) | run.mjs | +| --- | --- | --- | --- | --- | --- | +| `receipts/5431c7e4a9/` (120 cells, 2 refusals) | 5431c7e4a9 | build-linux-bd7ac86d… | build-macos-c88772be… (`326dd203…`) | cells-bd7ac86d (`a4cc65f2…`) | `9569db7c` ×97, `e8aa4f90` ×25 | +| `receipts/97d408cc51/` (refusals vm-docker) | 97d408cc51 | build-linux-4ee01388… | — | cells-4ee01388 (`8fd20df6…`) | `e8aa4f90` | + +- **Sandbox images.** Docker rows use `sha256:afa1ef9c…` (the index digest, arm64, + node 24). Namespaces and VM rows use the same image as an uncompressed + docker-archive named by its config digest `sha256:1d91885d…`, which the namespaces + backend requires. +- **Why the 5431c7e4a9 receipts count at 97d408cc51** (parent decision, AGENTS.md + §3.4: reuse evidence a change does not affect). `git diff 5431c7e4a9 97d408cc51` + touches four files: + - `api/agent/src/transport/worker_client.js`, the only product file: +5 lines, a + refusal on the path where a Docker deployment is sent to a vm: worker; + - its test; + - one sentence of `api/docs/agent.md`; + - the runner's vm-docker refusal branch (`run.mjs`, `9569db7c` → `e8aa4f90`). + + No row's cell body sends a Docker deployment to a vm: worker. The tests that + change touched were run once at 97d408cc51 and all passed: + - `native_deployment`, `calls` (39) and `exec_output`; + - all 12 `vm_placement` modes; + - `runtime.mjs` macos-worker, windows-worker, worker-frames and worker-docker. + + The log is `receipts/97d408cc51/js-checks-97d408cc51.log`. +- **Runner hash in the middle of the pass.** `97d408cc51` was committed while the + rows were running, and the rows read `run.mjs` from the worktree. So 25 cells + started after it carry `e8aa4f90`: + - linux-namespaces C12; + - vm-microsandbox C08–C12; + - vm-lima C11–C12; + - vm-firecracker C08–C12; + - vm-ssh C01–C12. + + The two runners differ only inside the `refusals vm-docker` branch, which these + cells never enter. `cell.mjs` (`4d8c3431…`) and `workloads.mjs` (`e22d812d…`) are + the same in every receipt. + +## Rows running at the same time + +The final pass ran in five parallel groups: +- macOS rows and the refusals; +- the Linux rows; +- Apple Container then Microsandbox; +- Lima then SSH; +- Firecracker. + +The runner's host-wide lock lets only one timed sample run at a time. Setup, +warm-up and verification may overlap other rows. The overlaps below come from the +receipts' `startedAt`/`endedAt`; the runner was not changed mid-pass to record them. +No cell failed, so no contention rerun was needed (parent rule: such a rerun would +be labelled and shown beside the first receipt). + +| Row | Cells run (UTC) | run.mjs | Rows running at the same time (any cell) | Cells with no other row | +| --- | --- | --- | --- | ---: | +| macos-docker | 21:36:13–21:37:39 | `9569db7c` ×12 | linux-docker, vm-apple-container, vm-firecracker, vm-lima | 0 | +| macos-native | 21:37:52–21:40:15 | `9569db7c` ×12 | linux-docker, linux-namespaces, linux-native, vm-apple-container, vm-firecracker, vm-lima | 0 | +| linux-docker | 21:36:13–21:38:06 | `9569db7c` ×12 | macos-docker, macos-native, vm-apple-container, vm-firecracker, vm-lima | 0 | +| linux-native | 21:38:14–21:39:42 | `9569db7c` ×12 | macos-native, vm-apple-container, vm-firecracker, vm-lima | 0 | +| linux-namespaces | 21:39:47–21:44:08 | `9569db7c` ×11, `e8aa4f90` ×1 | macos-native, refusals macos-namespaces, refusals vm-docker, vm-apple-container, vm-firecracker, vm-lima, vm-microsandbox | 0 | +| vm-apple-container | 21:36:13–21:41:09 | `9569db7c` ×12 | linux-docker, linux-namespaces, linux-native, macos-docker, macos-native, refusals macos-namespaces, refusals vm-docker, vm-firecracker, vm-lima | 0 | +| vm-microsandbox | 21:41:32–21:45:33 | `9569db7c` ×7, `e8aa4f90` ×5 | linux-namespaces, vm-firecracker, vm-lima | 0 | +| vm-lima | 21:36:13–21:44:58 | `9569db7c` ×10, `e8aa4f90` ×2 | linux-docker, linux-namespaces, linux-native, macos-docker, macos-native, refusals macos-namespaces, refusals vm-docker, vm-apple-container, vm-firecracker, vm-microsandbox | 0 | +| vm-firecracker | 21:34:12–21:48:53 | `9569db7c` ×7, `e8aa4f90` ×5 | linux-docker, linux-namespaces, linux-native, macos-docker, macos-native, refusals macos-namespaces, refusals vm-docker, vm-apple-container, vm-lima, vm-microsandbox, vm-ssh | 1 | +| vm-ssh | 21:45:46–21:50:08 | `e8aa4f90` ×12 | vm-firecracker | 1 | +| refusals macos-namespaces | 21:40:22–21:40:22 | `9569db7c` ×1 | linux-namespaces, vm-apple-container, vm-firecracker, vm-lima | 0 | +| refusals vm-docker | 21:40:26–21:40:26 | `9569db7c` ×1 | linux-namespaces, vm-apple-container, vm-firecracker, vm-lima | 0 | + +## Setup and budget per row + +Every cell runs in one command of at most 120 s, with a 115 s runner budget. + +| Row | Project setup (`driver.initMs`) | Budget left for the cell | +| --- | --- | --- | +| macos-docker | 1.1–8.0 s | 86–94 s | +| macos-native | 0.02–1.7 s | 93–95 s | +| linux-docker / -native / -namespaces | ≤ 0.6 s | 87–90 s | +| vm-apple-container | 6.8–18.9 s | 66–78 s | +| vm-microsandbox | 8.4–14.2 s | 71–76 s | +| vm-lima | 28.7–42.0 s | 43–56 s | +| vm-firecracker | 35.6–48.1 s | 37–49 s | +| vm-ssh | 13.8–22.5 s | 62–71 s | + +## The first pass (50e2c2bc87), kept + +`receipts/50e2c2bc87/` holds the first pass, run before the gated steps. + +| Row | Result | +| --- | --- | +| linux-docker | 12/12 PASS | +| linux-native | 12/12 PASS | +| linux-namespaces | 12/12 PASS, but `teardownOk` false: a namespaces Sandbox reopened through a helper path that no longer existed (fixed by `44d41efa33`) | +| macos-docker | 12/12 PASS | +| macos-native | 12/12 PASS | +| vm-microsandbox | 12/12 PASS | +| vm-ssh | 12/12 PASS | +| vm-apple-container | 6 PASS, 6 FAIL in setup (below) | +| refusal macos-namespaces | PASS; it found the ordering fixed by `cb7dc814ea` | + +The six vm-apple-container failures were all in setup: +- **The cause:** project setup took 67–78 s, because `container copy` moved the + 2.6 GB bundle at about 35 MB/s. +- **C03, C07, C08, C12:** stopped at the runner's 15 s minimum budget. +- **C01, C02:** killed by the 120 s bound with no receipt, because setup was not + bounded by the runner's deadline. That runner flaw is fixed in `a1bf3fd4b6`. +- **The fix,** `915522d51b`: the bundle is staged through the home bind mount, and + the guest copies it onto its own disk. Setup dropped to 6.8–18.9 s. + +`receipts/ac-fix-try/` is the one diagnostic proof cell for that fix. It ran on a +derived bundle, not a sealed one. + +## §10 checks + +| Check | Outcome | +| --- | --- | +| `vm_real.mjs` Apple Container and Microsandbox | PASS at the base bundle with the h39 busybox image: Apple Container 30.6 s (attempt 1 failed on the test image's missing bash; the image was then rebuilt with a static bash), Microsandbox 8.2 s. Both rows also pass 12/12 at the final pass | +| `vm_real.mjs` Lima vz and Firecracker (new) | PASS on the providers branch with the h39 bundle and `34d49eb577`: Lima 65.2 s, Firecracker 87.3 s | +| Real `vm:ssh` run | vm-ssh 12/12 PASS (the target is the Lima VM `lfs527-ssh`) | +| `namespaces_userns`, `namespaces_lifecycle` as root | 1/1 and 5/5 in the Lima VM at `44d41efa33`, and again at the ends of steps 9b and 9c (`2d6770fb47`); `layerfs-sandbox` is unchanged since then | +| Linux native end to end as root | linux-native 12/12 PASS | +| Bare macOS SDK with a Docker deployment | `kernel_guard` admits the APFS Store (by design, D5); Init, fork and write succeed; Docker `sandbox.create` fails at Listener ("daemon I/O: No such file or directory") and leaves nothing behind. **Open finding:** `kernel_guard` checks the OS, not the deployment, so this combination reaches Docker and then fails. Recommendation: refuse a Docker deployment in-process on macOS before Init. Not done here | +| macOS worker `releaseStore` | Was a no-op; fixed by `c8f5d8378b`. `macos_real.mjs` at 97d408cc51: PASS in 2.7 s. `project.delete` with the worker holding the Store removed the volume with no error and left nothing behind | +| Windows build (D6) | `layerfs-sandbox` passes Clippy for `x86_64-pc-windows-msvc`, and a build-only `windows-build` CI lane that reports and never gates was added. `layerfs-node` and `layerfs-api` do not compile for Windows: `layerfs-store-service` has 14 Unix-only errors (permission modes, `MetadataExt::uid`, `nix::sys::statvfs`, `STORE_HEADROOM_BYTES`), not gated in this pass. No Windows host: Windows rows NOT_RUN | + +Every helper also ran its own checks before committing. Each commit's message lists +them: Clippy `-D warnings` on macOS and Linux, the product boundary guard, Linux +tests as root, and every `runtime.mjs` and `vm_placement.mjs` mode. + +## Decisions taken during the pass + +All of these are reversible. The owner's own decisions are D1–D7 and the +four-VM requirement. + +1. **Cell protocol details:** + - each cell forks branch `lane` from `main`; + - the warm-up run is unmounted with discard, with no Commit; + - each cell uses one Sandbox, made by `sandbox.create`. +2. **Linux rows run as root in a Lima QEMU VM** (`lfs527-linux`, Ubuntu 24.04, + kernel 6.8.0-147, 4 vCPUs, 4 GiB), because this Mac has no Linux host. The runner + relays into it. It is QEMU because vz was blocked when the VM was made (Lima + 1.0.4). The `vm:ssh` target `lfs527-ssh` is the same kind of VM. +3. **Namespaces and VM rows use the config-digest archive** `1d91885d…`. The + namespaces backend refuses gzip layers and index-digest names. +4. **Release bundles, sealed by `tools/worktree.py build`,** for every row. The VM + bundle is a copy carrying `images/.tar`. +5. **`brew upgrade lima` from 1.0.4 to 2.2.1**, at the user's request to solve the + Lima issue. + - Cause: Lima 1.0.4's gvisor-tap-vsock v0.8.2 watches `/private/var/run` and + fails on Docker Desktop's `docker.sock` symlink (the same cause #516 found). + - colima had no instance. The old keg was removed after the QEMU VMs were + deleted. +6. **Apple Container: stage through the home bind mount** rather than bind-mount + the bundle at VM create. Bind-mounting at create would make a VM unable to + restart once the bundle folder is gone. +7. **Firecracker** uses #516's recipe, all downloads checksum-verified: + - Firecracker v1.17.0, CI kernel 6.18.56, a CI Ubuntu 24.04 rootfs with Node + v22.23.4; + - run nested in Lima vz `lfs527-vzkvm` (4 vCPUs, 4 GiB, `nestedVirtualization`, + 1,100 huge pages); + - each microVM gets 2G and no virtual PMU. + The two-hop bundle stream fit (36–48 s), so the parent's fallback (stage the + bundle in the Lima host) was not needed. +8. **Lima Store disks are named `lfs` + 8 hex characters.** A longer name was cut + to ext4's 16-byte label, so Lima reformatted the disk on every boot. +9. **The final pass ran in five parallel groups**, with the host lock serializing + timed samples. Overlaps are derived from the receipt timestamps. +10. **The runner changed mid-pass** (`97d408cc51`, vm-docker branch only). This is + disclosed above rather than rerunning the 25 cells. +11. **The 5431c7e4a9 receipts are kept for the final commit** (parent decision); the + diff scope is above. +12. **Step 10b behaviour change, accepted by the parent:** Init refuses `Exists` + when its Store volume already exists, instead of reusing it. +13. **Step 12 discovery** uses a new backend-agnostic Rust call, + `runtime.sandbox.records` (parent-approved). A record of another backend is + listed, never reopened. +14. **Windows `releaseStore`** returns quietly when no worker ever started. +15. **The agent refuses a backend by where its Sandbox runs** (`34d49eb577`): Linux + for a worker, this OS otherwise. Found by the vm:lima real proof: + `cb7dc814ea` had refused every vm: row run from macOS. +16. **Docker on a vm: home is refused `Unsupported`** before it is sent + (`e9b9646148`). +17. **Step 7 departures** (Rust helper): + - only `local.rs`'s other-platform branch was removed; those in `sandbox.rs` and + `discovery.rs` stay live on other targets; + - the JSON parser is `json.rs` beside `json/`, because the guard forbids code in + `mod.rs`; + - `ContainerId::random` is built on Linux and macOS only. + +## Findings not fixed in this pass + +- **`kernel_guard` on macOS checks the OS, not the deployment** (§10 row above). +- **`layerfs-store-service` does not compile for Windows** (14 errors), so + `layerfs-node` and `layerfs-api` cannot be gated for Windows yet. +- **`discovery.rs` is at 997 lines**, just under the 999-line ceiling. +- **`lima.js` copies the bundle through the home mount** in the same way as + `apple-container.js`, as duplicated code. The VM providers' `df -kP` parsing + could use `shared.js` `dfFree`. +- **`76-native-mount-session.md`'s revocation paragraph is stale.** +- **A comment in `api/agent/src/index.js` is wrong:** it says + `LAYERFS_SANDBOX_BACKEND` is read per call, but it is read when the client is + made. +- **`vm:ssh` leaves `/layerfs/{home,store}` and a bind mount on its host.** The + runner removes them; the provider does not. +- **Removed tests:** `native_platform::windows_is_refused_before_any_effect`, + deleted with `Runtime::Windows` (step 7). + +## Commits + +Production LOC uses `tools/production_loc.py` on the first parent and the staged +tree. The scope is core, engine and api; the reference is absent (retired R9c; last +counted 65,417 at tree 498dd1917812). Every commit message carries its own line. +Over the branch: **123141 → 123811 (delta +670)**. Of that, +402 is the two new VM +providers and +143 is step 12's discovery call. + +| Commit | Subject | Production LOC | +| --- | --- | --- | +| `133145ffe2` | node: one Sandbox name for every backend (#527 step 5) | 123141 -> 123133 (delta -8) | +| `527c32f626` | sandbox: the provider alone chooses FUSE or NFS (#527 step 6) | 123133 -> 123145 (delta +12) | +| `c6f5dd227d` | sandbox: provider/ into types/, LaunchFailure into the runtime (#527 step 9a) | 123145 -> 123137 (delta -8) | +| `27d1784df3` | runtime: vm: homes refuse Store-level calls before any effect (#527 step 2) | 123137 -> 123155 (delta +18) | +| `18b0810804` | runtime: both deployments name the Sandbox backend (#527 step 3) | 123155 -> 123158 (delta +3) | +| `4083e75590` | runtime, agent: refuse VM providers and native backends on hosts they do not run on (#527 step 8) | 123158 -> 123165 (delta +7) | +| `7080ac9160` | runtime: platform capabilities replace platform.name branches in Init (#527 step 10d) | 123165 -> 123167 (delta +2) | +| `9952d16451` | docs: fix the platform documentation drift of F7 (#527 step 1) | 123167 -> 123167 (delta 0) | +| `24c3c5f828` | sandbox: unpack a Debian image's root entry and long link targets | 123167 -> 123188 (delta +21) | +| `781e1c0236` | runtime: vm:ssh copies carry no AppleDouble files | 123188 -> 123188 (delta 0) | +| `38ad8ab4c2` | node: reopen requires the deployment's own backend (#527 step 4) | 123188 -> 123194 (delta +6) | +| `50e2c2bc87` | test: the twelve-cell runner for the #527 platform pass | 123194 -> 123194 (delta 0) | +| `cb7dc814ea` | agent: refuse namespaces off Linux before reading its image settings | 123194 -> 123197 (delta +3) | +| `c8f5d8378b` | runtime: the macOS worker releases a Store before its volume goes | 123197 -> 123206 (delta +9) | +| `44d41efa33` | sandbox: a namespaces Sandbox reopens with its own helper copy | 123206 -> 123217 (delta +11) | +| `ab00731d51` | sandbox: drop Runtime::Windows, build layerfs-sandbox for Windows (#527 step 7) | 123217 -> 123204 (delta -13) | +| `ad7cb42ee9` | sandbox: backend/ into platform/, json/ and root files (#527 step 9b) | 123204 -> 123207 (delta +3) | +| `2d6770fb47` | sandbox: Docker's files by role, docker/client/, os, ExecExit (#527 step 9c) | 123207 -> 123182 (delta -25) | +| `34d49eb577` | agent: refuse a backend by where its Sandbox runs, not by this OS | 123182 -> 123184 (delta +2) | +| `9b307f35cb` | runtime: the local placement's Docker group under platform/docker/ (#527 step 10a) | 123184 -> 123205 (delta +21) | +| `3f28127edc` | runtime: Store hooks keyed by Store; createStore makes every Store volume (#527 step 10b) | 123205 -> 123209 (delta +4) | +| `9a241c04f2` | runtime: F11's duplicates land once (#527 step 10c) | 123209 -> 123216 (delta +7) | +| `72bd04ccfb` | runtime: sweep finds ended Sandboxes by their labels, not their names (#527 step 12, sweep only) | 123216 -> 123214 (delta -2) | +| `915522d51b` | runtime: Apple Container copies a folder through the home bind mount (#527 platform pass) | 123214 -> 123233 (delta +19) | +| `89226d75e3` | node, agent, runtime: one Sandbox setting, LAYERFS_SANDBOX=docker\|native\|namespaces (#527 step 11) | 123233 -> 123262 (delta +29) | +| `d82d6a3d58` | node, runtime: every backend's Sandbox records listed, and local discovery reads them (#527 step 12, discovery) | 123262 -> 123405 (delta +143) | +| `a1f91f0a9f` | runtime: Windows releases a Store quietly when no worker holds it | 123405 -> 123406 (delta +1) | +| `a1bf3fd4b6` | test: a cell's setup is bounded by the runner's deadline | 123406 -> 123406 (delta 0) | +| `09bf9d1bb0` | docs: AGENTS.md names native macOS as a direct Store exception (#527 D5) | 123406 -> 123406 (delta 0) | +| `d610a82ac1` | test: the cell runner's vm-lima and vm-firecracker rows | 123406 -> 123406 (delta 0) | +| `b39550bd5c` | runtime: vm:lima placement (#527 platform pass) | 123406 -> 123560 (delta +154) | +| `a8cb674f03` | runtime: vm:firecracker placement (#527 platform pass) | 123560 -> 123808 (delta +248) | +| `5431c7e4a9` | test: the cell runner names namespaces with the one Sandbox setting | 123808 -> 123808 (delta 0) | +| `e9b9646148` | agent: a vm: home refuses a Docker deployment before sending it | 123808 -> 123811 (delta +3) | +| `97d408cc51` | test: the vm-docker refusal cell expects the documented answers | 123811 -> 123811 (delta 0) | + +## Cleanup + +Removed: +- **VMs:** every per-cell VM, microVM, Sandbox, container and volume (each cell's + teardown, checked by every row helper), and the pass's Lima VMs `lfs527-linux`, + `lfs527-ssh` and `lfs527-vzkvm` with their disks. +- **Lima:** Lima's download cache (`limactl prune`) and the old Lima 1.0.4 keg. +- **Pulled images:** `node:22-trixie-slim` from Apple Container and Microsandbox. +- **Apple Container:** its service is stopped (the pass had started it). +- **Caches under `~/.cache/layerfs-test`:** the bundle copies, the image archives + (2.7 GB + 0.9 GB + the 6 MB h39 image), the runner copies, the SSH test keys, and + the scratch folders `lfs527-tests-2` and `lfs527-vmreal`. +- **Receipt folders:** the originals (copied here first). +- **Helper worktrees and branches:** `claude/issue527-{js-steps,js-gated,vm-providers,apple-container,lead-side}`, + whose commits are all on this branch. + +Kept: +- **This worktree**, its sealed bundles (166 MB) and its private Cargo target + volumes, warm for the owner's review. Export a cleanup scope for them + (`tools/worktree.py cleanup-scope --release-caches`) once the branch is merged or + dropped. +- **`~/.lima`** (Lima's SSH key and two empty folders), recreated by this pass. + Removing it was refused by this session's permission check; delete it by hand if + it is not wanted. +- **The Docker build cache** of two failed slim-image builds. It is shared, so it + was not pruned. + +Host free space after cleanup: 225.7 GB. Docker guest: 41 GB free. + +## Appendix: per-row identities and timings + +Timings are diagnostic: one sample per cell, never rerun for speed. vm-firecracker +timings describe the nesting (two hypervisors) and are not comparable with other +rows. "lock wait" is the time a cell waited for the host-wide sampling lock. + +### linux-docker + +Where: Linux 6.8.0-147-generic aarch64, 4 vCPUs, 3.8 GiB, cpu.max max 100000; image sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e; source 5431c7e4a9; bundle build-linux-bd7ac86d01304d4e89a2e98057d26d66; 1-min load 0.0–10.8; teardown clean in all: True. + +| Cell | Verdict | command ms | exec wall ms | mount ms | Commit ms (kind) | unmount ms | lock wait ms | +| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | +| C01 | PASS | 813.5 | 867.1 | 16.4 | 189.6 (Committed) | 10.6 | 304.0 | +| C02 | PASS | 1807.0 | 1880.8 | 7.8 | 120.4 (Committed) | 5.7 | 0.0 | +| C03 | PASS | 1330.3 | 1362.7 | 6.4 | 38.3 (UpToDate) | 8.8 | 0.0 | +| C04 | PASS | 2224.1 | 2318.8 | 23.5 | 273.2 (Committed) | 30.7 | 0.0 | +| C05 | PASS | 1395.2 | 1421.0 | 10.9 | 138.6 (Committed) | 4.2 | 915.0 | +| C06 | PASS | 224.0 | 249.1 | 4.0 | 650.7 (Committed) | 14.2 | 0.0 | +| C07 | PASS | 608.9 | 1078.0 | 7.1 | 719.3 (Committed) | 20.8 | 1.0 | +| C08 | PASS | 223.4 | 249.3 | 4.5 | 332.3 (Committed) | 10.2 | 0.0 | +| C09 | PASS | 67.9 | 90.0 | 10.6 | 1.4 (UpToDate) | 4.6 | 0.0 | +| C10 | PASS | 349.5 | 375.1 | 9.2 | 61.4 (Committed) | 16.7 | 609.0 | +| C11 | PASS | 176.1 | 198.7 | 8.4 | 163.2 (UpToDate) | 12.5 | 0.0 | +| C12 | PASS | 486.7 | 520.0 | 7.3 | 74.4 (Committed) | 4.3 | 1.0 | + +### linux-native + +Where: Linux 6.8.0-147-generic aarch64, 4 vCPUs, 3.8 GiB, cpu.max None; image None; source 5431c7e4a9; bundle build-linux-bd7ac86d01304d4e89a2e98057d26d66; 1-min load 0.4–9.3; teardown clean in all: True. + +| Cell | Verdict | command ms | exec wall ms | mount ms | Commit ms (kind) | unmount ms | lock wait ms | +| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | +| C01 | PASS | 658.1 | 661.6 | 5.2 | 101.7 (Committed) | 4.1 | 3437.0 | +| C02 | PASS | 1163.1 | 1167.0 | 4.6 | 100.2 (Committed) | 2.8 | 0.0 | +| C03 | PASS | 1089.3 | 1093.9 | 6.4 | 32.5 (UpToDate) | 4.4 | 0.0 | +| C04 | PASS | 1401.7 | 1408.8 | 10.5 | 132.8 (Committed) | 4.8 | 3094.0 | +| C05 | PASS | 933.1 | 936.0 | 3.6 | 109.0 (Committed) | 3.0 | 0.0 | +| C06 | PASS | 221.1 | 225.0 | 3.5 | 323.7 (Committed) | 12.5 | 508.0 | +| C07 | PASS | 592.2 | 595.2 | 3.8 | 753.6 (Committed) | 22.8 | 0.0 | +| C08 | PASS | 254.9 | 258.9 | 3.8 | 327.7 (Committed) | 14.0 | 0.0 | +| C09 | PASS | 113.3 | 117.0 | 7.4 | 0.7 (UpToDate) | 4.7 | 0.0 | +| C10 | PASS | 604.9 | 611.1 | 9.1 | 63.5 (Committed) | 18.4 | 1.0 | +| C11 | PASS | 367.0 | 372.5 | 8.9 | 157.8 (UpToDate) | 12.8 | 2.0 | +| C12 | PASS | 347.2 | 350.6 | 5.1 | 46.3 (Committed) | 3.0 | 0.0 | + +### linux-namespaces + +Where: Linux 6.8.0-147-generic aarch64, 4 vCPUs, 3.8 GiB, cpu.max None; image sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9; source 5431c7e4a9; bundle build-linux-bd7ac86d01304d4e89a2e98057d26d66; 1-min load 0.8–12.3; teardown clean in all: True. + +| Cell | Verdict | command ms | exec wall ms | mount ms | Commit ms (kind) | unmount ms | lock wait ms | +| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | +| C01 | PASS | 548.2 | 567.4 | 3.8 | 179.8 (Committed) | 3.8 | 4.0 | +| C02 | PASS | 2010.0 | 2042.0 | 46.6 | 214.9 (Committed) | 5.8 | 2.0 | +| C03 | PASS | 828.4 | 847.4 | 4.0 | 14.6 (UpToDate) | 2.3 | 2.0 | +| C04 | PASS | 1286.6 | 1301.0 | 3.9 | 114.3 (Committed) | 2.5 | 0.0 | +| C05 | PASS | 1270.4 | 1288.7 | 3.9 | 107.7 (Committed) | 2.9 | 3.0 | +| C06 | PASS | 203.9 | 225.5 | 3.1 | 327.9 (Committed) | 11.2 | 1.0 | +| C07 | PASS | 501.6 | 520.3 | 3.3 | 635.9 (Committed) | 18.5 | 1.0 | +| C08 | PASS | 234.2 | 247.1 | 4.0 | 344.9 (Committed) | 9.5 | 0.0 | +| C09 | PASS | 135.0 | 151.6 | 13.1 | 0.8 (UpToDate) | 7.0 | 2.0 | +| C10 | PASS | 300.7 | 321.2 | 7.7 | 51.1 (Committed) | 12.6 | 1.0 | +| C11 | PASS | 129.1 | 145.5 | 6.6 | 145.9 (UpToDate) | 10.3 | 0.0 | +| C12 | PASS | 245.9 | 265.2 | 3.9 | 43.5 (Committed) | 2.1 | 1.0 | + +### macos-docker + +Where: Linux 6.12.76-linuxkit aarch64, 8 vCPUs, 7.8 GiB, cpu.max max 100000; image sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e; source 5431c7e4a9; bundle build-linux-bd7ac86d01304d4e89a2e98057d26d66; 1-min load 3.8–11.4; teardown clean in all: True. + +| Cell | Verdict | command ms | exec wall ms | mount ms | Commit ms (kind) | unmount ms | lock wait ms | +| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | +| C01 | PASS | 415.7 | 460.4 | 10.2 | 198.3 (Committed) | 10.9 | 1.0 | +| C02 | PASS | 1971.8 | 2074.6 | 33.1 | 125.7 (Committed) | 10.5 | 1.0 | +| C03 | PASS | 473.3 | 519.8 | 12.9 | 18.6 (UpToDate) | 8.9 | 2.0 | +| C04 | PASS | 1014.0 | 1076.4 | 13.2 | 119.7 (Committed) | 8.7 | 0.0 | +| C05 | PASS | 868.6 | 908.8 | 11.5 | 111.8 (Committed) | 7.2 | 0.0 | +| C06 | PASS | 175.3 | 211.0 | 9.6 | 330.4 (Committed) | 13.3 | 0.0 | +| C07 | PASS | 451.7 | 492.2 | 14.7 | 668.1 (Committed) | 21.8 | 1.0 | +| C08 | PASS | 222.3 | 271.8 | 12.5 | 347.8 (Committed) | 15.5 | 0.0 | +| C09 | PASS | 39.5 | 76.3 | 12.1 | 1.9 (UpToDate) | 7.9 | 0.0 | +| C10 | PASS | 212.1 | 250.7 | 12.8 | 55.5 (Committed) | 14.2 | 0.0 | +| C11 | PASS | 174.8 | 240.5 | 161.2 | 160.2 (UpToDate) | 13.9 | 28.0 | +| C12 | PASS | 243.9 | 297.0 | 16.4 | 72.7 (Committed) | 10.7 | 0.0 | + +### macos-native + +Where: Darwin 25.4.0 arm64, 14 vCPUs, 36.0 GiB, cpu.max None; image None; source 5431c7e4a9; bundle build-macos-c88772be7b1949f1af6289022adb1718; 1-min load 6.8–9.4; teardown clean in all: True. + +| Cell | Verdict | command ms | exec wall ms | mount ms | Commit ms (kind) | unmount ms | lock wait ms | +| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | +| C01 | PASS | 941.6 | 967.6 | 28.8 | 890.4 (Committed) | 28.9 | 0.0 | +| C02 | PASS | 7892.6 | 7913.1 | 29.8 | 283.9 (Committed) | 33.2 | 1.0 | +| C03 | PASS | 1422.8 | 1437.7 | 23.3 | 146.6 (UpToDate) | 20.6 | 0.0 | +| C04 | PASS | 7387.8 | 7492.2 | 28.9 | 939.8 (Committed) | 39.9 | 1.0 | +| C05 | PASS | 4540.2 | 4555.0 | 22.4 | 472.9 (Committed) | 36.0 | 0.0 | +| C06 | PASS | 792.6 | 838.6 | 24.8 | 664.1 (Committed) | 27.6 | 0.0 | +| C07 | PASS | 565.7 | 589.7 | 28.5 | 1128.2 (Committed) | 39.5 | 0.0 | +| C08 | PASS | 424.1 | 470.0 | 46.9 | 1222.5 (Committed) | 37.3 | 0.0 | +| C09 | PASS | 42.0 | 58.0 | 62.5 | 90.0 (UpToDate) | 21.6 | 0.0 | +| C10 | PASS | 270.1 | 289.8 | 24.8 | 448.4 (Committed) | 49.4 | 0.0 | +| C11 | PASS | 213.6 | 230.4 | 21.7 | 565.7 (UpToDate) | 32.7 | 0.0 | +| C12 | PASS | 594.5 | 614.9 | 49.9 | 838.5 (Committed) | 27.2 | 1.0 | + +### vm-apple-container + +Where: Linux 6.18.35 aarch64, 5 vCPUs, 4.0 GiB, cpu.max None; image sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9; source 5431c7e4a9; bundle build-linux-bd7ac86d01304d4e89a2e98057d26d66; 1-min load 3.6–10.8; teardown clean in all: True. + +| Cell | Verdict | command ms | exec wall ms | mount ms | Commit ms (kind) | unmount ms | lock wait ms | +| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | +| C01 | PASS | 528.8 | 552.7 | 8.1 | 171.7 (Committed) | 9.0 | 207.0 | +| C02 | PASS | 915.4 | 936.8 | 10.1 | 110.1 (Committed) | 10.4 | 306.0 | +| C03 | PASS | 618.6 | 634.7 | 10.5 | 10.1 (UpToDate) | 8.7 | 305.0 | +| C04 | PASS | 648.4 | 669.0 | 5.6 | 142.6 (Committed) | 6.3 | 1.0 | +| C05 | PASS | 875.5 | 887.3 | 11.6 | 107.3 (Committed) | 7.6 | 8794.0 | +| C06 | PASS | 142.7 | 166.8 | 11.8 | 302.1 (Committed) | 10.0 | 916.0 | +| C07 | PASS | 294.3 | 315.5 | 3.7 | 600.0 (Committed) | 15.3 | 0.0 | +| C08 | PASS | 187.5 | 205.6 | 5.9 | 308.1 (Committed) | 113.6 | 1.0 | +| C09 | PASS | 52.9 | 73.0 | 6.6 | 1.5 (UpToDate) | 10.8 | 1.0 | +| C10 | PASS | 225.9 | 245.9 | 6.8 | 51.4 (Committed) | 12.4 | 0.0 | +| C11 | PASS | 151.0 | 168.8 | 13.9 | 162.5 (UpToDate) | 17.3 | 2.0 | +| C12 | PASS | 165.2 | 193.4 | 6.3 | 50.8 (Committed) | 6.0 | 1.0 | + +### vm-microsandbox + +Where: Linux 6.12.113 aarch64, 4 vCPUs, 3.8 GiB, cpu.max None; image sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9; source 5431c7e4a9; bundle build-linux-bd7ac86d01304d4e89a2e98057d26d66; 1-min load 8.5–12.6; teardown clean in all: True. + +| Cell | Verdict | command ms | exec wall ms | mount ms | Commit ms (kind) | unmount ms | lock wait ms | +| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | +| C01 | PASS | 381.6 | 409.7 | 8.1 | 106.2 (Committed) | 8.9 | 26.0 | +| C02 | PASS | 968.7 | 1030.4 | 5.6 | 95.6 (Committed) | 11.5 | 1.0 | +| C03 | PASS | 530.1 | 573.4 | 6.9 | 9.4 (UpToDate) | 6.3 | 102.0 | +| C04 | PASS | 589.9 | 634.3 | 5.2 | 437.9 (Committed) | 110.8 | 0.0 | +| C05 | PASS | 842.1 | 893.1 | 6.4 | 104.0 (Committed) | 8.2 | 0.0 | +| C06 | PASS | 171.1 | 233.1 | 5.8 | 304.9 (Committed) | 11.9 | 1.0 | +| C07 | PASS | 291.5 | 340.0 | 5.4 | 586.4 (Committed) | 16.2 | 0.0 | +| C08 | PASS | 133.8 | 189.4 | 5.5 | 297.7 (Committed) | 21.6 | 1.0 | +| C09 | PASS | 84.4 | 160.3 | 11.0 | 2.9 (UpToDate) | 142.0 | 3.0 | +| C10 | PASS | 180.5 | 234.9 | 7.7 | 45.9 (Committed) | 12.9 | 0.0 | +| C11 | PASS | 104.7 | 163.3 | 8.0 | 139.8 (UpToDate) | 11.3 | 1.0 | +| C12 | PASS | 128.2 | 167.4 | 4.5 | 42.6 (Committed) | 7.7 | 1.0 | + +### vm-lima + +Where: Linux 6.8.0-147-generic aarch64, 4 vCPUs, 3.8 GiB, cpu.max None; image sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9; source 5431c7e4a9; bundle build-linux-bd7ac86d01304d4e89a2e98057d26d66; 1-min load 3.8–12.5; teardown clean in all: True. + +| Cell | Verdict | command ms | exec wall ms | mount ms | Commit ms (kind) | unmount ms | lock wait ms | +| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | +| C01 | PASS | 272.7 | 287.7 | 10.0 | 100.1 (Committed) | 17.3 | 1.0 | +| C02 | PASS | 1066.5 | 1078.1 | 6.4 | 101.0 (Committed) | 7.4 | 1.0 | +| C03 | PASS | 656.0 | 670.1 | 9.5 | 24.1 (UpToDate) | 7.2 | 1522.0 | +| C04 | PASS | 1270.3 | 1292.6 | 11.2 | 760.5 (Committed) | 24.5 | 3.0 | +| C05 | PASS | 764.6 | 779.5 | 4.8 | 104.8 (Committed) | 6.5 | 1.0 | +| C06 | PASS | 200.8 | 332.6 | 11.0 | 479.0 (Committed) | 16.8 | 0.0 | +| C07 | PASS | 420.7 | 433.8 | 5.7 | 674.2 (Committed) | 23.6 | 2.0 | +| C08 | PASS | 176.7 | 191.2 | 6.0 | 323.1 (Committed) | 15.9 | 2.0 | +| C09 | PASS | 75.0 | 91.5 | 36.2 | 1.6 (UpToDate) | 10.3 | 0.0 | +| C10 | PASS | 256.5 | 271.8 | 11.5 | 57.4 (Committed) | 20.8 | 13.0 | +| C11 | PASS | 164.6 | 185.3 | 11.0 | 153.5 (UpToDate) | 16.8 | 6.0 | +| C12 | PASS | 164.1 | 188.4 | 4.5 | 45.6 (Committed) | 7.1 | 0.0 | + +### vm-firecracker + +Where: Linux 6.18.56+ aarch64, 4 vCPUs, 1.9 GiB, cpu.max None; image sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9; source 5431c7e4a9; bundle build-linux-bd7ac86d01304d4e89a2e98057d26d66; 1-min load 3.6–11.3; teardown clean in all: True. + +| Cell | Verdict | command ms | exec wall ms | mount ms | Commit ms (kind) | unmount ms | lock wait ms | +| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | +| C01 | PASS | 596.0 | 643.6 | 8.3 | 120.2 (Committed) | 7.3 | 0.0 | +| C02 | PASS | 2047.6 | 2083.8 | 20.5 | 124.0 (Committed) | 8.5 | 1120.0 | +| C03 | PASS | 1173.5 | 1205.9 | 11.2 | 17.2 (UpToDate) | 4.6 | 854.0 | +| C04 | PASS | 1728.7 | 1772.1 | 10.9 | 123.1 (Committed) | 5.5 | 0.0 | +| C05 | PASS | 2159.3 | 2247.2 | 10.1 | 125.1 (Committed) | 8.1 | 3.0 | +| C06 | PASS | 359.5 | 441.9 | 24.1 | 514.8 (Committed) | 26.0 | 0.0 | +| C07 | PASS | 679.6 | 770.4 | 14.2 | 784.6 (Committed) | 34.1 | 0.0 | +| C08 | PASS | 573.6 | 896.5 | 53.2 | 523.4 (Committed) | 31.3 | 9.0 | +| C09 | PASS | 113.2 | 152.1 | 17.0 | 3.2 (UpToDate) | 7.0 | 0.0 | +| C10 | PASS | 447.6 | 518.4 | 17.5 | 100.1 (Committed) | 14.7 | 0.0 | +| C11 | PASS | 236.5 | 272.0 | 20.8 | 150.8 (UpToDate) | 10.7 | 1.0 | +| C12 | PASS | 487.8 | 530.9 | 8.5 | 60.3 (Committed) | 5.5 | 0.0 | + +### vm-ssh + +Where: Linux 6.8.0-147-generic aarch64, 4 vCPUs, 3.8 GiB, cpu.max None; image sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9; source 5431c7e4a9; bundle build-linux-bd7ac86d01304d4e89a2e98057d26d66; 1-min load 5.5–9.5; teardown clean in all: True. + +| Cell | Verdict | command ms | exec wall ms | mount ms | Commit ms (kind) | unmount ms | lock wait ms | +| --- | --- | ---: | ---: | ---: | --- | ---: | ---: | +| C01 | PASS | 438.9 | 461.3 | 4.0 | 101.2 (Committed) | 4.1 | 1.0 | +| C02 | PASS | 1003.0 | 1017.9 | 5.9 | 97.7 (Committed) | 3.9 | 0.0 | +| C03 | PASS | 961.0 | 977.8 | 3.9 | 8.4 (UpToDate) | 3.3 | 1.0 | +| C04 | PASS | 899.2 | 919.4 | 3.8 | 108.4 (Committed) | 3.4 | 0.0 | +| C05 | PASS | 878.7 | 891.8 | 4.8 | 104.0 (Committed) | 3.7 | 1.0 | +| C06 | PASS | 190.4 | 209.6 | 4.1 | 314.6 (Committed) | 10.4 | 0.0 | +| C07 | PASS | 396.4 | 412.4 | 4.6 | 604.9 (Committed) | 17.5 | 1.0 | +| C08 | PASS | 165.5 | 177.1 | 3.7 | 306.5 (Committed) | 10.1 | 0.0 | +| C09 | PASS | 80.0 | 99.8 | 7.2 | 1.8 (UpToDate) | 6.0 | 0.0 | +| C10 | PASS | 216.8 | 239.9 | 7.0 | 51.0 (Committed) | 13.4 | 0.0 | +| C11 | PASS | 102.2 | 125.7 | 6.8 | 137.9 (UpToDate) | 10.5 | 1.0 | +| C12 | PASS | 236.0 | 253.3 | 3.9 | 45.6 (Committed) | 3.0 | 1.0 | + diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C01-2026-10-31T202525067Z-wuosaz1su0.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C01-2026-10-31T202525067Z-wuosaz1su0.json new file mode 100644 index 000000000..3c9c32a1e --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C01-2026-10-31T202525067Z-wuosaz1su0.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-vwuoshc2lu-", + "startedAt": "2026-10-31T20:25:25.067Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.03, + "end": 4.0146484375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-may0D8", + "initMs": 328, + "volume": "lfs527-vwuoshc2lu-c01-store-mvwuosx0", + "setupMs": 887, + "cellBudgetMs": 88799, + "teardownMs": 74 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-vwuoshc2lu-c01-store-mvwuosx0" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-may0D8/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwuoshc2lu-c01-store-mvwuosx0", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwuoshc2lu-c01-store-mvwuosx0/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuoshc2lu-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 3.23291015625, + "grantedAt": "2026-10-31T20:25:27.287Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.03 + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 4.814, + "exec": { + "wallMs": 550.099, + "exitCode": 0, + "stdout": "LFS527 0 1793478326888734801 1793478327416045923\n", + "stderr": "", + "rc": 0, + "ms": 527.311122 + }, + "unmountMs": 4.312, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.498, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 494.643, + "exitCode": 0, + "stdout": "LFS527 0 1793478327458324669 1793478327932159811\n", + "stderr": "", + "rc": 0, + "ms": 473.835142 + }, + "commitMs": 101.401, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12cf7cdee016bd4fc7837ad9bbeabefc434308c04a53bba4ac447173824f48e1be", + "commit": { + "id": "12cf7cdee016bd4fc7837ad9bbeabefc434308c04a53bba4ac447173824f48e1be", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32e7c7872687d3493c8c4b8201f397f6bed730ca08db422248b6ff121f17d32a9e", + "root": "fe89ef3d0c05ee2bc33099e17c07698c572c0af4f2e99e98e1f961d03cff1722", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793478328025, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.59, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.85, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.575, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 200.905, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.809, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 550.087, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.307, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.476, + "ok": true + }, + { + "name": "timed.exec", + "ms": 494.638, + "ok": true + }, + { + "name": "timed.commit", + "ms": 101.395, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.586, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.49, + "ok": true + }, + { + "name": "verify.identity", + "ms": 26.683, + "ok": true + }, + { + "name": "verify.exec", + "ms": 703.147, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.011, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 178.084, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32e7c7872687d3493c8c4b8201f397f6bed730ca08db422248b6ff121f17d32a9e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 8.838, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 3.23291015625, + "grantedAt": "2026-10-31T20:25:27.287Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.03 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.498, + "execWallMs": 494.643, + "commandMs": 473.835142, + "commitMs": 101.401, + "commitKind": "Committed", + "unmountMs": 2.59 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:28.907Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 3.23291015625, + "grantedAt": "2026-10-31T20:25:27.287Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 3.23291015625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C02-2026-10-31T202532205Z-wuoxt91t9h.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C02-2026-10-31T202532205Z-wuoxt91t9h.json new file mode 100644 index 000000000..56744e7aa --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C02-2026-10-31T202532205Z-wuoxt91t9h.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-vwuoxzz2yt-", + "startedAt": "2026-10-31T20:25:32.205Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.27, + "end": 5.89208984375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-tDqu1A", + "initMs": 310, + "volume": "lfs527-vwuoxzz2yt-c02-store-mvwuoyj1", + "setupMs": 990, + "cellBudgetMs": 88487, + "teardownMs": 106 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-vwuoxzz2yt-c02-store-mvwuoyj1" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-tDqu1A/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwuoxzz2yt-c02-store-mvwuoyj1", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwuoxzz2yt-c02-store-mvwuoyj1/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuoxzz2yt-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1215, + "load1": 5.53466796875, + "grantedAt": "2026-10-31T20:25:37.416Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.32 + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.018, + "exec": { + "wallMs": 1661.421, + "exitCode": 0, + "stdout": "LFS527 0 1793478334698419082 1793478336330029599\n", + "stderr": "", + "rc": 0, + "ms": 1631.610517 + }, + "unmountMs": 4.112, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 12.296, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 2096.215, + "exitCode": 0, + "stdout": "LFS527 0 1793478337609140568 1793478339669958344\n", + "stderr": "", + "rc": 0, + "ms": 2060.817776 + }, + "commitMs": 111.207, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12aa6d310386260d94a8d06c4422221f8546feab76e163465d2375563e826786cc", + "commit": { + "id": "12aa6d310386260d94a8d06c4422221f8546feab76e163465d2375563e826786cc", + "branch": null, + "parent": null, + "secondParent": null, + "base": "324011996d596f3c294d97806c49a7d24c1054f114bb9313aad0c02e97a43d38fe", + "root": "87d970a887eecb8fcee0ed8757830be60a57eef762d98f0003209fd35a3b2637", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793478339774, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.155, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.152, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.669, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 493.326, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.01, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1661.38, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.105, + "ok": true + }, + { + "name": "timed.mount", + "ms": 12.289, + "ok": true + }, + { + "name": "timed.exec", + "ms": 2096.157, + "ok": true + }, + { + "name": "timed.commit", + "ms": 111.202, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.15, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.37, + "ok": true + }, + { + "name": "verify.identity", + "ms": 26.366, + "ok": true + }, + { + "name": "verify.exec", + "ms": 1033.793, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.063, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 260.274, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "324011996d596f3c294d97806c49a7d24c1054f114bb9313aad0c02e97a43d38fe", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1223.74, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1215, + "load1": 5.53466796875, + "grantedAt": "2026-10-31T20:25:37.416Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.32 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 12.296, + "execWallMs": 2096.215, + "commandMs": 2060.817776, + "commitMs": 111.207, + "commitKind": "Committed", + "unmountMs": 3.155 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:41.128Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1215, + "load1": 5.53466796875, + "grantedAt": "2026-10-31T20:25:37.416Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 4.0146484375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C03-2026-10-31T202544272Z-wup74g1ui4.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C03-2026-10-31T202544272Z-wup74g1ui4.json new file mode 100644 index 000000000..31802e463 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C03-2026-10-31T202544272Z-wup74g1ui4.json @@ -0,0 +1,315 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-vwup7g94vc-", + "startedAt": "2026-10-31T20:25:44.272Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.5, + "end": 6.1962890625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-qlsJqJ", + "initMs": 316, + "volume": "lfs527-vwup7g94vc-c03-store-mvwup7w4", + "setupMs": 881, + "cellBudgetMs": 88815, + "teardownMs": 77 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-vwup7g94vc-c03-store-mvwup7w4" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-qlsJqJ/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwup7g94vc-c03-store-mvwup7w4", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwup7g94vc-c03-store-mvwup7w4/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwup7g94vc-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1927, + "load1": 6.1962890625, + "grantedAt": "2026-10-31T20:25:49.119Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.45 + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.61, + "exec": { + "wallMs": 961.347, + "exitCode": 0, + "stdout": "LFS527 0 1793478346388319086 1793478347328085242\n", + "stderr": "", + "rc": 0, + "ms": 939.766156 + }, + "unmountMs": 3.021, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.057, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 827.156, + "exitCode": 0, + "stdout": "LFS527 0 1793478349290348498 1793478350096003958\n", + "stderr": "", + "rc": 0, + "ms": 805.65546 + }, + "commitMs": 8.949, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "49490820d271f02b72dff3307cf9c41b39d6e92a40edcbef3ce7b34056adbf4c", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 1.666, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 11.55, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.825, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 308.527, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.602, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 961.333, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.018, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.052, + "ok": true + }, + { + "name": "timed.exec", + "ms": 827.151, + "ok": true + }, + { + "name": "timed.commit", + "ms": 8.944, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 1.663, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.945, + "ok": true + }, + { + "name": "verify.identity", + "ms": 22.537, + "ok": true + }, + { + "name": "verify.exec", + "ms": 18.262, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.269, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 213.346, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32861fd7eb588a76fcbbcee26698f15d3ccba32c2e3f99f1d372b48147a7262d48", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1931.472, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1927, + "load1": 6.1962890625, + "grantedAt": "2026-10-31T20:25:49.119Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.45 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.057, + "execWallMs": 827.156, + "commandMs": 805.65546, + "commitMs": 8.949, + "commitKind": "UpToDate", + "unmountMs": 1.666 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:50.328Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1927, + "load1": 6.1962890625, + "grantedAt": "2026-10-31T20:25:49.119Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 6.30078125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C04-2026-10-31T202553517Z-wupe991v9a.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C04-2026-10-31T202553517Z-wupe991v9a.json new file mode 100644 index 000000000..5941fdf08 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C04-2026-10-31T202553517Z-wupe991v9a.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-vwupeil57l-", + "startedAt": "2026-10-31T20:25:53.517Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.42, + "end": 7.30126953125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-L4Rn8V", + "initMs": 311, + "volume": "lfs527-vwupeil57l-c04-store-mvwupezp", + "setupMs": 910, + "cellBudgetMs": 88786, + "teardownMs": 71 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-vwupeil57l-c04-store-mvwupezp" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-L4Rn8V/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwupeil57l-c04-store-mvwupezp", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwupeil57l-c04-store-mvwupezp/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwupeil57l-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 101, + "load1": 7.30126953125, + "grantedAt": "2026-10-31T20:25:56.686Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.42 + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 4.823, + "exec": { + "wallMs": 1274.887, + "exitCode": 0, + "stdout": "LFS527 0 1793478355466393133 1793478356720048657\n", + "stderr": "", + "rc": 0, + "ms": 1253.655524 + }, + "unmountMs": 3.678, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.352, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 1086.637, + "exitCode": 0, + "stdout": "LFS527 0 1793478356856451064 1793478357921687656\n", + "stderr": "", + "rc": 0, + "ms": 1065.236592 + }, + "commitMs": 107.676, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12d9fa0ef30883aa8f704bed6450c759fbbb9394010e8dc8b5b595ec1edd6675de", + "commit": { + "id": "12d9fa0ef30883aa8f704bed6450c759fbbb9394010e8dc8b5b595ec1edd6675de", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32d3cddefb3de135a68e2162cb63ca1aa3430f6b1b59ead6563a9b49142ccce713", + "root": "e142ee0895bd9986ae69240549d7dc49fe8c8024dc92da6448c42c4cbc1f8e41", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793478358023, + "logical": 0, + "newCanonical": 109367, + "newStored": 8263, + "newMetadata": 8263, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.448, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.428, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.691, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 195.437, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.817, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1274.875, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.672, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.348, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1086.632, + "ok": true + }, + { + "name": "timed.commit", + "ms": 107.671, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.444, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.724, + "ok": true + }, + { + "name": "verify.identity", + "ms": 25.249, + "ok": true + }, + { + "name": "verify.exec", + "ms": 368.144, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.418, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 228.968, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d3cddefb3de135a68e2162cb63ca1aa3430f6b1b59ead6563a9b49142ccce713", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 105.994, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 101, + "load1": 7.30126953125, + "grantedAt": "2026-10-31T20:25:56.686Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.42 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.352, + "execWallMs": 1086.637, + "commandMs": 1065.236592, + "commitMs": 107.676, + "commitKind": "Committed", + "unmountMs": 2.448 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:58.610Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 101, + "load1": 7.30126953125, + "grantedAt": "2026-10-31T20:25:56.686Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 6.1962890625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C05-2026-10-31T202601701Z-wupkkl1w2j.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C05-2026-10-31T202601701Z-wupkkl1w2j.json new file mode 100644 index 000000000..baa88b483 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C05-2026-10-31T202601701Z-wupkkl1w2j.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-vwupkqt7in-", + "startedAt": "2026-10-31T20:26:01.701Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.47, + "end": 8.25244140625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-0gCRrw", + "initMs": 315, + "volume": "lfs527-vwupkqt7in-c05-store-mvwuplb6", + "setupMs": 1042, + "cellBudgetMs": 88602, + "teardownMs": 85 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-vwupkqt7in-c05-store-mvwuplb6" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-0gCRrw/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwupkqt7in-c05-store-mvwuplb6", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwupkqt7in-c05-store-mvwuplb6/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwupkqt7in-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 6290, + "load1": 8.013671875, + "grantedAt": "2026-10-31T20:26:11.892Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.54 + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.983, + "exec": { + "wallMs": 1910.069, + "exitCode": 0, + "stdout": "LFS527 0 1793478363852296851 1793478365736196894\n", + "stderr": "", + "rc": 0, + "ms": 1883.900043 + }, + "unmountMs": 4.399, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 86.301, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 1562.19, + "exitCode": 0, + "stdout": "LFS527 0 1793478372232001475 1793478373710514638\n", + "stderr": "", + "rc": 0, + "ms": 1478.513163 + }, + "commitMs": 129.657, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "124e8ff8e20345fb26f4ae2287cc73ba47e9d8903424ff5aa4de434fe6adb21d76", + "commit": { + "id": "124e8ff8e20345fb26f4ae2287cc73ba47e9d8903424ff5aa4de434fe6adb21d76", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3249cca94ab540228a4cda89fb6d9a6cda9e2712b0dae14e5864371ba281761c7a", + "root": "481ec2eb2115384cb5e871674b500671425c28fe05db433495b372a924b1e8ca", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793478373835, + "logical": 0, + "newCanonical": 109367, + "newStored": 8251, + "newMetadata": 8251, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.588, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 11.089, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.668, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 297.504, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.975, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1910.057, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.393, + "ok": true + }, + { + "name": "timed.mount", + "ms": 86.293, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1562.183, + "ok": true + }, + { + "name": "timed.commit", + "ms": 129.651, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.545, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.896, + "ok": true + }, + { + "name": "verify.identity", + "ms": 37.834, + "ok": true + }, + { + "name": "verify.exec", + "ms": 589.926, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.966, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 261.316, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3249cca94ab540228a4cda89fb6d9a6cda9e2712b0dae14e5864371ba281761c7a", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 6321.23, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 6290, + "load1": 8.013671875, + "grantedAt": "2026-10-31T20:26:11.892Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.54 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 86.301, + "execWallMs": 1562.19, + "commandMs": 1478.513163, + "commitMs": 129.657, + "commitKind": "Committed", + "unmountMs": 3.588 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:14.720Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 6290, + "load1": 8.013671875, + "grantedAt": "2026-10-31T20:26:11.892Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 6.95654296875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C06-2026-10-31T202617834Z-wupx0q1yqk.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C06-2026-10-31T202617834Z-wupx0q1yqk.json new file mode 100644 index 000000000..12dc302de --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C06-2026-10-31T202617834Z-wupx0q1yqk.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-vwupx809tx-", + "startedAt": "2026-10-31T20:26:17.834Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.82, + "end": 8.63232421875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-vyGSuk", + "initMs": 327, + "volume": "lfs527-vwupx809tx-c06-store-mvwupxq1", + "setupMs": 971, + "cellBudgetMs": 88709, + "teardownMs": 79 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-vwupx809tx-c06-store-mvwupxq1" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-vyGSuk/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwupx809tx-c06-store-mvwupxq1", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwupx809tx-c06-store-mvwupxq1/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwupx809tx-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.63232421875, + "grantedAt": "2026-10-31T20:26:20.109Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.83 + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.909, + "exec": { + "wallMs": 381.821, + "exitCode": 0, + "stdout": "LFS527 0 1793478379878668218 1793478380236784093\n", + "stderr": "", + "rc": 0, + "ms": 358.115875 + }, + "unmountMs": 11.09, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.567, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 251.641, + "exitCode": 0, + "stdout": "LFS527 0 1793478380283192157 1793478380509680229\n", + "stderr": "", + "rc": 0, + "ms": 226.488072 + }, + "commitMs": 336.33, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1262b88e3a4a6aa4b8f943d61e802eb7705e2250907d9c63e987236b53680a316e", + "commit": { + "id": "1262b88e3a4a6aa4b8f943d61e802eb7705e2250907d9c63e987236b53680a316e", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32dd6055389f82f8a74ccdac59e4b4639f32acbb24336ad7fb7bc7ef5996db9e8e", + "root": "478d6d0afb0e557f1d7f75f79af772ff651465c4234c1cf0d83104cc894bceb5", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793478380791, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 13.258, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 11.345, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.708, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 277.814, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.902, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 381.774, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 11.083, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.56, + "ok": true + }, + { + "name": "timed.exec", + "ms": 251.634, + "ok": true + }, + { + "name": "timed.commit", + "ms": 336.324, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 13.252, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.827, + "ok": true + }, + { + "name": "verify.identity", + "ms": 29.517, + "ok": true + }, + { + "name": "verify.exec", + "ms": 462.88, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.239, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 233.121, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32dd6055389f82f8a74ccdac59e4b4639f32acbb24336ad7fb7bc7ef5996db9e8e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 4.127, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.63232421875, + "grantedAt": "2026-10-31T20:26:20.109Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.83 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.567, + "execWallMs": 251.641, + "commandMs": 226.488072, + "commitMs": 336.33, + "commitKind": "Committed", + "unmountMs": 13.258 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:21.556Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.63232421875, + "grantedAt": "2026-10-31T20:26:20.109Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.25244140625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C07-2026-10-31T202624687Z-wuq2b32066.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C07-2026-10-31T202624687Z-wuq2b32066.json new file mode 100644 index 000000000..7f9e59848 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C07-2026-10-31T202624687Z-wuq2b32066.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-vwuq2iea6e-", + "startedAt": "2026-10-31T20:26:24.687Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.77, + "end": 9.21044921875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-Xndl5q", + "initMs": 329, + "volume": "lfs527-vwuq2iea6e-c07-store-mvwuq339", + "setupMs": 1074, + "cellBudgetMs": 88652, + "teardownMs": 93 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-vwuq2iea6e-c07-store-mvwuq339" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-Xndl5q/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwuq2iea6e-c07-store-mvwuq339", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwuq2iea6e-c07-store-mvwuq339/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuq2iea6e-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1018, + "load1": 9.14208984375, + "grantedAt": "2026-10-31T20:26:28.527Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.7 + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 4.937, + "exec": { + "wallMs": 726.024, + "exitCode": 0, + "stdout": "LFS527 0 1793478386924407926 1793478387625425354\n", + "stderr": "", + "rc": 0, + "ms": 701.017428 + }, + "unmountMs": 21.084, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.396, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 671.803, + "exitCode": 0, + "stdout": "LFS527 0 1793478388713866920 1793478389351120263\n", + "stderr": "", + "rc": 0, + "ms": 637.253343 + }, + "commitMs": 658.438, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e7aa2d1bc278ca1a2b4b003c7264d3f1f1d5e84691ccc8200085585afc003483", + "commit": { + "id": "12e7aa2d1bc278ca1a2b4b003c7264d3f1f1d5e84691ccc8200085585afc003483", + "branch": null, + "parent": null, + "secondParent": null, + "base": "325115902a7e3697b389f9bb472a16fcccd73398e223ab8b23f0d79ccc97af550e", + "root": "4e0063a4c48f55816f80d6a16a16b6da5abd39d581db6fc84a5abc5309578157", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793478389900, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 20.047, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.649, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.683, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 442.451, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.931, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 726.007, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 21.078, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.379, + "ok": true + }, + { + "name": "timed.exec", + "ms": 671.796, + "ok": true + }, + { + "name": "timed.commit", + "ms": 658.433, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 20.041, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.148, + "ok": true + }, + { + "name": "verify.identity", + "ms": 29.077, + "ok": true + }, + { + "name": "verify.exec", + "ms": 834.43, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.052, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 202.499, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "325115902a7e3697b389f9bb472a16fcccd73398e223ab8b23f0d79ccc97af550e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1026.009, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1018, + "load1": 9.14208984375, + "grantedAt": "2026-10-31T20:26:28.527Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.7 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.396, + "execWallMs": 671.803, + "commandMs": 637.253343, + "commitMs": 658.438, + "commitKind": "Committed", + "unmountMs": 20.047 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:31.089Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1018, + "load1": 9.14208984375, + "grantedAt": "2026-10-31T20:26:28.527Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.14208984375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C08-2026-10-31T202634562Z-wuq9xe20w4.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C08-2026-10-31T202634562Z-wuq9xe20w4.json new file mode 100644 index 000000000..ca95b2387 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C08-2026-10-31T202634562Z-wuq9xe20w4.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-vwuqa4maj3-", + "startedAt": "2026-10-31T20:26:34.562Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.65, + "end": 8.79296875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-Ag92Nx", + "initMs": 316, + "volume": "lfs527-vwuqa4maj3-c08-store-mvwuqan0", + "setupMs": 973, + "cellBudgetMs": 88708, + "teardownMs": 85 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-vwuqa4maj3-c08-store-mvwuqan0" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-Ag92Nx/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwuqa4maj3-c08-store-mvwuqan0", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwuqa4maj3-c08-store-mvwuqan0/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuqa4maj3-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.79296875, + "grantedAt": "2026-10-31T20:26:36.878Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.65 + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 10.326, + "exec": { + "wallMs": 350.952, + "exitCode": 0, + "stdout": "LFS527 0 1793478396695124982 1793478397014859719\n", + "stderr": "", + "rc": 0, + "ms": 319.734737 + }, + "unmountMs": 12.726, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.123, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 299.274, + "exitCode": 0, + "stdout": "LFS527 0 1793478397064217638 1793478397336184757\n", + "stderr": "", + "rc": 0, + "ms": 271.967119 + }, + "commitMs": 364.414, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12f934cf5dbc1c460e4391a635ddd81b1b6b4d52e460504c35fe0c8bee3d07bea4", + "commit": { + "id": "12f934cf5dbc1c460e4391a635ddd81b1b6b4d52e460504c35fe0c8bee3d07bea4", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32e5d2aece2cbf8b4df246da1acb113bd8509c525e60ce3a9873f9ed8bdf556954", + "root": "086b5dae148f55c7276214088bf7d857c2d40c15fc1693739695c428f574d604", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793478397645, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 12.013, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 13.098, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.694, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 369.43, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 10.318, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 350.942, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.719, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.117, + "ok": true + }, + { + "name": "timed.exec", + "ms": 299.267, + "ok": true + }, + { + "name": "timed.commit", + "ms": 364.408, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 12.007, + "ok": true + }, + { + "name": "verify.mount", + "ms": 7.343, + "ok": true + }, + { + "name": "verify.identity", + "ms": 35.232, + "ok": true + }, + { + "name": "verify.exec", + "ms": 745.393, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.209, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 200.969, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32e5d2aece2cbf8b4df246da1acb113bd8509c525e60ce3a9873f9ed8bdf556954", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 4.547, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.79296875, + "grantedAt": "2026-10-31T20:26:36.878Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.65 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.123, + "execWallMs": 299.274, + "commandMs": 271.967119, + "commitMs": 364.414, + "commitKind": "Committed", + "unmountMs": 12.013 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:38.665Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.79296875, + "grantedAt": "2026-10-31T20:26:36.878Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.79296875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C09-2026-10-31T202642940Z-wuqge32172.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C09-2026-10-31T202642940Z-wuqge32172.json new file mode 100644 index 000000000..1670b17e8 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C09-2026-10-31T202642940Z-wuqge32172.json @@ -0,0 +1,376 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-vwuqgqdavi-", + "startedAt": "2026-10-31T20:26:42.940Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.84, + "end": 9.89404296875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-JQVm8M", + "initMs": 314, + "volume": "lfs527-vwuqgqdavi-c09-store-mvwuqhck", + "setupMs": 1109, + "cellBudgetMs": 88585, + "teardownMs": 130 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-vwuqgqdavi-c09-store-mvwuqhck" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-JQVm8M/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwuqgqdavi-c09-store-mvwuqhck", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwuqgqdavi-c09-store-mvwuqhck/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuqgqdavi-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.89404296875, + "grantedAt": "2026-10-31T20:26:46.649Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.85 + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 687.789, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12cd9cfa61c7139f57255aa3e166a9d7c61b1e834def8b7b942e76d4e4d60d06ab", + "commit": { + "id": "12cd9cfa61c7139f57255aa3e166a9d7c61b1e834def8b7b942e76d4e4d60d06ab", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32ebf88bed92c19cbd3288f01f2d05172ff6f8e2a37b932ad22962eab02f0aac8e", + "root": "0f00edf0aeef3fcd79ffea510043a0a9e768f9f851361128f0cda5a02604ea91", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793478406570, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 5.671, + "exec": { + "wallMs": 142.85, + "exitCode": 0, + "stdout": "LFS527 0 1793478406677486138 1793478406794754892\n", + "stderr": "", + "rc": 0, + "ms": 117.268754 + }, + "unmountMs": 7.993, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 8.291, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 213.016, + "exitCode": 0, + "stdout": "LFS527 0 1793478406853307764 1793478407036754245\n", + "stderr": "", + "rc": 0, + "ms": 183.446481 + }, + "commitMs": 2.715, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12cd9cfa61c7139f57255aa3e166a9d7c61b1e834def8b7b942e76d4e4d60d06ab", + "root": "0f00edf0aeef3fcd79ffea510043a0a9e768f9f851361128f0cda5a02604ea91", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 6.533, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.7, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.665, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 608.433, + "ok": true + }, + { + "name": "setup.mount", + "ms": 5.837, + "ok": true + }, + { + "name": "setup.exec", + "ms": 687.754, + "ok": true + }, + { + "name": "setup.commit", + "ms": 351.331, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 11.99, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.667, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 142.843, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 7.979, + "ok": true + }, + { + "name": "timed.mount", + "ms": 8.277, + "ok": true + }, + { + "name": "timed.exec", + "ms": 212.971, + "ok": true + }, + { + "name": "timed.commit", + "ms": 2.711, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 6.523, + "ok": true + }, + { + "name": "verify.mount", + "ms": 9.079, + "ok": true + }, + { + "name": "verify.identity", + "ms": 40.805, + "ok": true + }, + { + "name": "verify.exec", + "ms": 528.38, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.669, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 325.197, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32ebf88bed92c19cbd3288f01f2d05172ff6f8e2a37b932ad22962eab02f0aac8e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 16.784, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.89404296875, + "grantedAt": "2026-10-31T20:26:46.649Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.85 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 8.291, + "execWallMs": 213.016, + "commandMs": 183.446481, + "commitMs": 2.715, + "commitKind": "UpToDate", + "unmountMs": 6.533 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:47.963Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.89404296875, + "grantedAt": "2026-10-31T20:26:46.649Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.44970703125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C10-2026-10-31T202651286Z-wuqmty21gm.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C10-2026-10-31T202651286Z-wuqmty21gm.json new file mode 100644 index 000000000..026e8303d --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C10-2026-10-31T202651286Z-wuqmty21gm.json @@ -0,0 +1,395 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-vwuqn7ab8l-", + "startedAt": "2026-10-31T20:26:51.286Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.78, + "end": 10.13720703125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-jvj8QB", + "initMs": 325, + "volume": "lfs527-vwuqn7ab8l-c10-store-mvwuqnp3", + "setupMs": 961, + "cellBudgetMs": 88730, + "teardownMs": 77 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-vwuqn7ab8l-c10-store-mvwuqnp3" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-jvj8QB/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwuqn7ab8l-c10-store-mvwuqnp3", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwuqn7ab8l-c10-store-mvwuqnp3/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuqn7ab8l-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.13720703125, + "grantedAt": "2026-10-31T20:26:54.515Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.72 + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 422.179, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e33b2d9d4a93e6a94bd757421b1736e314fb547330c0a42307bfc139ae0f855a", + "commit": { + "id": "12e33b2d9d4a93e6a94bd757421b1736e314fb547330c0a42307bfc139ae0f855a", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32c9f97727171fa5f488135f8c9d08a22edf54697faf72b8029accf9bcca7131e0", + "root": "56881bcd7b4a3f49e03370b493e313018ad53bbf7e905de7cb26b0af320de287", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793478414238, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.794, + "exec": { + "wallMs": 358.476, + "exitCode": 0, + "stdout": "LFS527 0 1793478414339470478 1793478414674307455\n", + "stderr": "", + "rc": 0, + "ms": 334.836977 + }, + "unmountMs": 14.665, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.864, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 369.156, + "exitCode": 0, + "stdout": "LFS527 0 1793478414722378950 1793478415068669675\n", + "stderr": "", + "rc": 0, + "ms": 346.290725 + }, + "commitMs": 60.335, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12c91ee670261868d02812f5bcda1ce99739d08f69e12b0946873f3b261594066b", + "commit": { + "id": "12c91ee670261868d02812f5bcda1ce99739d08f69e12b0946873f3b261594066b", + "branch": null, + "parent": "12e33b2d9d4a93e6a94bd757421b1736e314fb547330c0a42307bfc139ae0f855a", + "secondParent": null, + "base": "32c9f97727171fa5f488135f8c9d08a22edf54697faf72b8029accf9bcca7131e0", + "root": "d380bb6ec511fdb4e4b657fddf4ff4cbfb91c84b1b5218a7582e7120da0921ca", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793478415074, + "logical": 134217728, + "newCanonical": 487, + "newStored": 295, + "newMetadata": 295, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 15.636, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.146, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.696, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 268.522, + "ok": true + }, + { + "name": "setup.mount", + "ms": 6.764, + "ok": true + }, + { + "name": "setup.exec", + "ms": 422.165, + "ok": true + }, + { + "name": "setup.commit", + "ms": 363.365, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 11.514, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.789, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 358.47, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 14.659, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.859, + "ok": true + }, + { + "name": "timed.exec", + "ms": 369.15, + "ok": true + }, + { + "name": "timed.commit", + "ms": 60.329, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 15.629, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.88, + "ok": true + }, + { + "name": "verify.identity", + "ms": 29.837, + "ok": true + }, + { + "name": "verify.exec", + "ms": 1178.879, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.119, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 196.563, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32c9f97727171fa5f488135f8c9d08a22edf54697faf72b8029accf9bcca7131e0", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 4.735, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.13720703125, + "grantedAt": "2026-10-31T20:26:54.515Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.72 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.864, + "execWallMs": 369.156, + "commandMs": 346.290725, + "commitMs": 60.335, + "commitKind": "Committed", + "unmountMs": 15.636 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:56.490Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.13720703125, + "grantedAt": "2026-10-31T20:26:54.515Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.0625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C11-2026-10-31T202659597Z-wuqt8t21pu.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C11-2026-10-31T202659597Z-wuqt8t21pu.json new file mode 100644 index 000000000..e170e7fbb --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C11-2026-10-31T202659597Z-wuqt8t21pu.json @@ -0,0 +1,376 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-vwuqtgqblr-", + "startedAt": "2026-10-31T20:26:59.597Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.66, + "end": 10.0458984375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-6683En", + "initMs": 317, + "volume": "lfs527-vwuqtgqblr-c11-store-mvwuqtxz", + "setupMs": 934, + "cellBudgetMs": 88769, + "teardownMs": 78 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-vwuqtgqblr-c11-store-mvwuqtxz" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-6683En/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwuqtgqblr-c11-store-mvwuqtxz", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwuqtgqblr-c11-store-mvwuqtxz/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuqtgqblr-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.0458984375, + "grantedAt": "2026-10-31T20:27:02.246Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.66 + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 257.666, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1237ddaa040a52c913a8a39d679919a0c38fb4a993fcde7ddc015889f306689f86", + "commit": { + "id": "1237ddaa040a52c913a8a39d679919a0c38fb4a993fcde7ddc015889f306689f86", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32b1ad879ddb6cc3b449f701850423720622f837bc51531ab220532d5f52d9bd47", + "root": "2fe332b01d296052bb097fb1716cfffc6f4f1cf2d096f746bfc735d3f4792f3c", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793478422175, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 749, + "newMetadata": 673, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.945, + "exec": { + "wallMs": 164.059, + "exitCode": 0, + "stdout": "LFS527 0 1793478422267536094 1793478422414244061\n", + "stderr": "", + "rc": 0, + "ms": 146.707967 + }, + "unmountMs": 8.933, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.03, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 152.405, + "exitCode": 0, + "stdout": "LFS527 0 1793478422452388779 1793478422586656742\n", + "stderr": "", + "rc": 0, + "ms": 134.267963 + }, + "commitMs": 158.772, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "1237ddaa040a52c913a8a39d679919a0c38fb4a993fcde7ddc015889f306689f86", + "root": "2fe332b01d296052bb097fb1716cfffc6f4f1cf2d096f746bfc735d3f4792f3c", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 16.186, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.701, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.608, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 215.328, + "ok": true + }, + { + "name": "setup.mount", + "ms": 5.872, + "ok": true + }, + { + "name": "setup.exec", + "ms": 257.655, + "ok": true + }, + { + "name": "setup.commit", + "ms": 499.722, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 11.619, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.942, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 164.053, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.929, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.026, + "ok": true + }, + { + "name": "timed.exec", + "ms": 152.397, + "ok": true + }, + { + "name": "timed.commit", + "ms": 158.742, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 16.177, + "ok": true + }, + { + "name": "verify.mount", + "ms": 14.379, + "ok": true + }, + { + "name": "verify.identity", + "ms": 43.358, + "ok": true + }, + { + "name": "verify.exec", + "ms": 400.088, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.054, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 223.617, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32b1ad879ddb6cc3b449f701850423720622f837bc51531ab220532d5f52d9bd47", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 5.779, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.0458984375, + "grantedAt": "2026-10-31T20:27:02.246Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.66 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.03, + "execWallMs": 152.405, + "commandMs": 134.267963, + "commitMs": 158.772, + "commitKind": "UpToDate", + "unmountMs": 16.186 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:03.372Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.0458984375, + "grantedAt": "2026-10-31T20:27:02.246Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.0458984375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C12-2026-10-31T202706883Z-wuqyv7221p.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C12-2026-10-31T202706883Z-wuqyv7221p.json new file mode 100644 index 000000000..e0b877908 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-docker-C12-2026-10-31T202706883Z-wuqyv7221p.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-vwuqz4tbys-", + "startedAt": "2026-10-31T20:27:06.883Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.61, + "end": 10.77197265625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-PIPFgP", + "initMs": 326, + "volume": "lfs527-vwuqz4tbys-c12-store-mvwuqzos", + "setupMs": 1040, + "cellBudgetMs": 88651, + "teardownMs": 68 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-vwuqz4tbys-c12-store-mvwuqzos" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-PIPFgP/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwuqz4tbys-c12-store-mvwuqzos", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwuqz4tbys-c12-store-mvwuqzos/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuqz4tbys-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.77197265625, + "grantedAt": "2026-10-31T20:27:09.492Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.64 + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.577, + "exec": { + "wallMs": 543.533, + "exitCode": 0, + "stdout": "LFS527 0 1793478429150836828 1793478429669426773\n", + "stderr": "", + "rc": 0, + "ms": 518.589945 + }, + "unmountMs": 2.694, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.827, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 366.047, + "exitCode": 0, + "stdout": "LFS527 0 1793478429711455566 1793478430048349404\n", + "stderr": "", + "rc": 0, + "ms": 336.893838 + }, + "commitMs": 50.573, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1211dbe89e1e137b68b34e9d8e3257f29b273f07828fec2e379283a493d3ec15c5", + "commit": { + "id": "1211dbe89e1e137b68b34e9d8e3257f29b273f07828fec2e379283a493d3ec15c5", + "branch": null, + "parent": null, + "secondParent": null, + "base": "325e5f20f3cc9e5f1018e30a442e9f33a28a65b0f6ad17d076f7ebcf99a2cdd747", + "root": "f7b8cc3bddfd0e4413b53f1a7ed754ef2c0d5d559cce339687f29fec630894fb", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793478430095, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26832, + "newMetadata": 6526, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.385, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 13.95, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.76, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 331.824, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.569, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 543.521, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.689, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.821, + "ok": true + }, + { + "name": "timed.exec", + "ms": 366.042, + "ok": true + }, + { + "name": "timed.commit", + "ms": 50.566, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.379, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.284, + "ok": true + }, + { + "name": "verify.identity", + "ms": 27.525, + "ok": true + }, + { + "name": "verify.exec", + "ms": 151.963, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.844, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 177.008, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "325e5f20f3cc9e5f1018e30a442e9f33a28a65b0f6ad17d076f7ebcf99a2cdd747", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 4.224, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.77197265625, + "grantedAt": "2026-10-31T20:27:09.492Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.64 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.827, + "execWallMs": 366.047, + "commandMs": 336.893838, + "commitMs": 50.573, + "commitKind": "Committed", + "unmountMs": 4.385 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:10.371Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.77197265625, + "grantedAt": "2026-10-31T20:27:09.492Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.8818359375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C01-2026-10-31T202828164Z-wuspl023mj.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C01-2026-10-31T202828164Z-wuspl023mj.json new file mode 100644 index 000000000..a67896788 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C01-2026-10-31T202828164Z-wuspl023mj.json @@ -0,0 +1,353 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-vwuspwxjtr-", + "startedAt": "2026-10-31T20:28:28.164Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.95, + "end": 7.47021484375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-u3qYJG", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 20, + "init": { + "kind": "Initialized", + "project": "c01", + "layer": "320112a7559dbb566bac00ccdfc87371a5da0d9a6be32c874c91145f42ede0621c", + "root": "1ac1e371f0b166f53816aba81453797c1d8bc2569cad1465a6f3bb8c4025505a", + "store": "/var/lib/lfs527/lfs527-u3qYJG/store/store.sqlite" + }, + "setupMs": 143, + "cellBudgetMs": 89569, + "teardownMs": 863 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "25844", + "25845", + "25846" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-u3qYJG/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-u3qYJG/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-u3qYJG/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuspwxjtr-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.85986328125, + "grantedAt": "2026-10-31T20:28:37.195Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.03 + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 13.08, + "exec": { + "wallMs": 589.53, + "exitCode": 0, + "stdout": "LFS527 0 1793478516830190402 1793478517383732866\n", + "stderr": "", + "rc": 0, + "ms": 553.542464 + }, + "unmountMs": 2.336, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.65, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-u3qYJG/local/lfs527-vwuspwxjtr-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 465.144, + "exitCode": 0, + "stdout": "LFS527 0 1793478517410506966 1793478517859990155\n", + "stderr": "", + "rc": 0, + "ms": 449.483189 + }, + "commitMs": 106.48, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1201ca2305452a1b9a975b709bea6af57b601139f381e5b982139a08ab0462c4b6", + "commit": { + "id": "1201ca2305452a1b9a975b709bea6af57b601139f381e5b982139a08ab0462c4b6", + "branch": null, + "parent": null, + "secondParent": null, + "base": "320112a7559dbb566bac00ccdfc87371a5da0d9a6be32c874c91145f42ede0621c", + "root": "23f723fd2a805f314d56eaebc8dc87b6d5e4c6d03b1f58528c4198791a2146ad", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793478517957, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18644, + "newMetadata": 9719, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.826, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.353, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.606, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 7615.73, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 13.072, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 589.519, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.332, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.645, + "ok": true + }, + { + "name": "timed.exec", + "ms": 465.137, + "ok": true + }, + { + "name": "timed.commit", + "ms": 106.472, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.822, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.451, + "ok": true + }, + { + "name": "verify.identity", + "ms": 32.868, + "ok": true + }, + { + "name": "verify.exec", + "ms": 674.257, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.531, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1.397, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "320112a7559dbb566bac00ccdfc87371a5da0d9a6be32c874c91145f42ede0621c", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 4.637, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.85986328125, + "grantedAt": "2026-10-31T20:28:37.195Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.03 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.65, + "execWallMs": 465.144, + "commandMs": 449.483189, + "commitMs": 106.48, + "commitKind": "Committed", + "unmountMs": 2.826 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:28:39.401Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.85986328125, + "grantedAt": "2026-10-31T20:28:37.195Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.92236328125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C02-2026-10-31T202843143Z-wut15323tn.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C02-2026-10-31T202843143Z-wut15323tn.json new file mode 100644 index 000000000..fae243392 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C02-2026-10-31T202843143Z-wut15323tn.json @@ -0,0 +1,353 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-vwut1dwk0b-", + "startedAt": "2026-10-31T20:28:43.143Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.27, + "end": 7.8017578125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-pUPKwY", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 22, + "init": { + "kind": "Initialized", + "project": "c02", + "layer": "320fcded664739d65aabe12d657b22078fc923d3ea8cbd1ab61288f67662e4fc39", + "root": "58ef0925b5650f3026829101782756800f06b8bf0184697c355ceeac6508ede7", + "store": "/var/lib/lfs527/lfs527-pUPKwY/store/store.sqlite" + }, + "setupMs": 120, + "cellBudgetMs": 89639, + "teardownMs": 823 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "26080", + "26081", + "26082" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-pUPKwY/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-pUPKwY/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-pUPKwY/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwut1dwk0b-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.2626953125, + "grantedAt": "2026-10-31T20:28:52.241Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.23 + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.867, + "exec": { + "wallMs": 1490.356, + "exitCode": 0, + "stdout": "LFS527 0 1793478530968871484 1793478532429488550\n", + "stderr": "", + "rc": 0, + "ms": 1460.617066 + }, + "unmountMs": 2.71, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.873, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-pUPKwY/local/lfs527-vwut1dwk0b-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 1727.468, + "exitCode": 0, + "stdout": "LFS527 0 1793478532461626489 1793478534169330637\n", + "stderr": "", + "rc": 0, + "ms": 1707.704148 + }, + "commitMs": 109.564, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "120528acdf6275ffe9af6021866fc54a8fede836c122500a7fc5b2d88de161b26c", + "commit": { + "id": "120528acdf6275ffe9af6021866fc54a8fede836c122500a7fc5b2d88de161b26c", + "branch": null, + "parent": null, + "secondParent": null, + "base": "320fcded664739d65aabe12d657b22078fc923d3ea8cbd1ab61288f67662e4fc39", + "root": "dd8c64ae315c1a82719b98c557f3aafe19693b3ff90c95bb24e4ce401ab246e1", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793478534270, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.48, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.639, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.629, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 6970.186, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.859, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1490.344, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.705, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.868, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1727.462, + "ok": true + }, + { + "name": "timed.commit", + "ms": 109.556, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.47, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.548, + "ok": true + }, + { + "name": "verify.identity", + "ms": 44.348, + "ok": true + }, + { + "name": "verify.exec", + "ms": 926.03, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.756, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 0.922, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "320fcded664739d65aabe12d657b22078fc923d3ea8cbd1ab61288f67662e4fc39", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 5.575, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.2626953125, + "grantedAt": "2026-10-31T20:28:52.241Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.23 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.873, + "execWallMs": 1727.468, + "commandMs": 1707.704148, + "commitMs": 109.564, + "commitKind": "Committed", + "unmountMs": 3.48 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:28:55.927Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.2626953125, + "grantedAt": "2026-10-31T20:28:52.241Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.47021484375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C03-2026-10-31T202859514Z-wutdru2435.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C03-2026-10-31T202859514Z-wutdru2435.json new file mode 100644 index 000000000..7aa03e655 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C03-2026-10-31T202859514Z-wutdru2435.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-vwute8ylqh-", + "startedAt": "2026-10-31T20:28:59.514Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.11, + "end": 8.505859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-iylDaG", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 46, + "init": { + "kind": "Initialized", + "project": "c03", + "layer": "32d7aec9557dc4691975a074502cb5d65f8022e4f63dc199090e0430011572d240", + "root": "5854bba722e17bdff90edde8a04b7f5296d5e9ce7b4f70a5802b816549be9d8a", + "store": "/var/lib/lfs527/lfs527-iylDaG/store/store.sqlite" + }, + "setupMs": 274, + "cellBudgetMs": 88959, + "teardownMs": 947 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "28320", + "28321", + "28322" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-iylDaG/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-iylDaG/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-iylDaG/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwute8ylqh-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.11474609375, + "grantedAt": "2026-10-31T20:29:11.787Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.09 + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 12.098, + "exec": { + "wallMs": 1095.491, + "exitCode": 0, + "stdout": "LFS527 0 1793478550932291737 1793478551976075677\n", + "stderr": "", + "rc": 0, + "ms": 1043.78394 + }, + "unmountMs": 2.355, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.609, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-iylDaG/local/lfs527-vwute8ylqh-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 1240.797, + "exitCode": 0, + "stdout": "LFS527 0 1793478552014693401 1793478553230096664\n", + "stderr": "", + "rc": 0, + "ms": 1215.403263 + }, + "commitMs": 10.299, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "5854bba722e17bdff90edde8a04b7f5296d5e9ce7b4f70a5802b816549be9d8a", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 1.899, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 37.089, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.01, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 9420.043, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 12.087, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1095.478, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.351, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.604, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1240.792, + "ok": true + }, + { + "name": "timed.commit", + "ms": 10.294, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 1.894, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.164, + "ok": true + }, + { + "name": "verify.identity", + "ms": 52.786, + "ok": true + }, + { + "name": "verify.exec", + "ms": 19.144, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.414, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1.023, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d7aec9557dc4691975a074502cb5d65f8022e4f63dc199090e0430011572d240", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 6.605, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.11474609375, + "grantedAt": "2026-10-31T20:29:11.787Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.09 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.609, + "execWallMs": 1240.797, + "commandMs": 1215.403263, + "commitMs": 10.299, + "commitKind": "UpToDate", + "unmountMs": 1.899 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:29:14.106Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.11474609375, + "grantedAt": "2026-10-31T20:29:11.787Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.9775390625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C04-2026-10-31T202917364Z-wutrjo24bf.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C04-2026-10-31T202917364Z-wutrjo24bf.json new file mode 100644 index 000000000..697abcddf --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C04-2026-10-31T202917364Z-wutrjo24bf.json @@ -0,0 +1,353 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-vwutrsblwh-", + "startedAt": "2026-10-31T20:29:17.364Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.08, + "end": 7.953125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-4maMop", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 22, + "init": { + "kind": "Initialized", + "project": "c04", + "layer": "322f477faa6c7c9d386d8bf0ed76014ce388d26cfccf73116a29ac00751a427774", + "root": "233d721464c21281b5606ae68125ec899a3129bf1ce6003302bda864accd44f2", + "store": "/var/lib/lfs527/lfs527-4maMop/store/store.sqlite" + }, + "setupMs": 129, + "cellBudgetMs": 89468, + "teardownMs": 700 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "28537", + "28538", + "28539" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-4maMop/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-4maMop/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-4maMop/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwutrsblwh-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.03662109375, + "grantedAt": "2026-10-31T20:29:32.801Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.23 + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.73, + "exec": { + "wallMs": 1144.188, + "exitCode": 0, + "stdout": "LFS527 0 1793478571875647414 1793478572988091196\n", + "stderr": "", + "rc": 0, + "ms": 1112.443782 + }, + "unmountMs": 2.64, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.389, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-4maMop/local/lfs527-vwutrsblwh-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 1108.183, + "exitCode": 0, + "stdout": "LFS527 0 1793478573018092525 1793478574111759879\n", + "stderr": "", + "rc": 0, + "ms": 1093.667354 + }, + "commitMs": 108.398, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1253a785327032316de41d965e32bcfba46e4871996bb3c9f3dd22716cf940823b", + "commit": { + "id": "1253a785327032316de41d965e32bcfba46e4871996bb3c9f3dd22716cf940823b", + "branch": null, + "parent": null, + "secondParent": null, + "base": "322f477faa6c7c9d386d8bf0ed76014ce388d26cfccf73116a29ac00751a427774", + "root": "2e86074eeeee79c3d8565d94ae3ffcf290da1a623402fca1fc0ff92f549ce1f1", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793478574213, + "logical": 0, + "newCanonical": 109367, + "newStored": 8257, + "newMetadata": 8257, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.485, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 23.463, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.597, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 13388.02, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.724, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1144.176, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.636, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.383, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1108.177, + "ok": true + }, + { + "name": "timed.commit", + "ms": 108.393, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.482, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.889, + "ok": true + }, + { + "name": "verify.identity", + "ms": 34.794, + "ok": true + }, + { + "name": "verify.exec", + "ms": 417.326, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.026, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1.006, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "322f477faa6c7c9d386d8bf0ed76014ce388d26cfccf73116a29ac00751a427774", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 8.947, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.03662109375, + "grantedAt": "2026-10-31T20:29:32.801Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.23 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.389, + "execWallMs": 1108.183, + "commandMs": 1093.667354, + "commitMs": 108.398, + "commitKind": "Committed", + "unmountMs": 2.485 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:29:35.210Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.03662109375, + "grantedAt": "2026-10-31T20:29:32.801Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.505859375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C05-2026-10-31T202938534Z-wuu7vq24nj.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C05-2026-10-31T202938534Z-wuu7vq24nj.json new file mode 100644 index 000000000..b07f3bddb --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C05-2026-10-31T202938534Z-wuu7vq24nj.json @@ -0,0 +1,353 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-vwuu87do19-", + "startedAt": "2026-10-31T20:29:38.534Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.33, + "end": 7.65869140625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-qcpPKD", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 20, + "init": { + "kind": "Initialized", + "project": "c05", + "layer": "3240b3eee86d6184874affcbfe5665c669fee4471f2ae35d124f9b1ff386b1a5b0", + "root": "8f4ade30708df16acba63cdde5f6ee4483cfb0fdda5dd475143aac651606a0b7", + "store": "/var/lib/lfs527/lfs527-qcpPKD/store/store.sqlite" + }, + "setupMs": 117, + "cellBudgetMs": 89607, + "teardownMs": 682 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "31298", + "31299", + "31300" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-qcpPKD/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-qcpPKD/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-qcpPKD/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuu87do19-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.65869140625, + "grantedAt": "2026-10-31T20:29:46.076Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.31 + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.12, + "exec": { + "wallMs": 1023.524, + "exitCode": 0, + "stdout": "LFS527 0 1793478585270166742 1793478586268295701\n", + "stderr": "", + "rc": 0, + "ms": 998.128959 + }, + "unmountMs": 2.606, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.278, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-qcpPKD/local/lfs527-vwuu87do19-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 1295.48, + "exitCode": 0, + "stdout": "LFS527 0 1793478586292810036 1793478587573605764\n", + "stderr": "", + "rc": 0, + "ms": 1280.795728 + }, + "commitMs": 103.35, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12f81eba17385543c9ca716ad9be721d0470631105d01cde104edbbf807f7d4aac", + "commit": { + "id": "12f81eba17385543c9ca716ad9be721d0470631105d01cde104edbbf807f7d4aac", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3240b3eee86d6184874affcbfe5665c669fee4471f2ae35d124f9b1ff386b1a5b0", + "root": "28e207f5ee535b1e77dab82b24924b555d4d8ca0c2e578e335283abc3d117b1e", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793478587672, + "logical": 0, + "newCanonical": 109367, + "newStored": 8267, + "newMetadata": 8267, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.111, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.91, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.461, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 5761.958, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.114, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1023.513, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.601, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.274, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1295.475, + "ok": true + }, + { + "name": "timed.commit", + "ms": 103.344, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.107, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.78, + "ok": true + }, + { + "name": "verify.identity", + "ms": 24.95, + "ok": true + }, + { + "name": "verify.exec", + "ms": 366.917, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.125, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 0.719, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3240b3eee86d6184874affcbfe5665c669fee4471f2ae35d124f9b1ff386b1a5b0", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 6.088, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.65869140625, + "grantedAt": "2026-10-31T20:29:46.076Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.31 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.278, + "execWallMs": 1295.48, + "commandMs": 1280.795728, + "commitMs": 103.35, + "commitKind": "Committed", + "unmountMs": 2.111 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:29:48.584Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.65869140625, + "grantedAt": "2026-10-31T20:29:46.076Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.953125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C06-2026-10-31T202951727Z-wuui2724u3.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C06-2026-10-31T202951727Z-wuui2724u3.json new file mode 100644 index 000000000..72e4a5322 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C06-2026-10-31T202951727Z-wuui2724u3.json @@ -0,0 +1,353 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-vwuuiaoq63-", + "startedAt": "2026-10-31T20:29:51.727Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.28, + "end": 7.357421875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-R4tB1D", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 22, + "init": { + "kind": "Initialized", + "project": "c06", + "layer": "3271e601c7516f42142799803b873389559a3f41d866309d2816aa0ee8dc1015f4", + "root": "2215741d3a63f949a00b9a9cec340f8255b65f74b3de252a285302306f96ca81", + "store": "/var/lib/lfs527/lfs527-R4tB1D/store/store.sqlite" + }, + "setupMs": 144, + "cellBudgetMs": 89501, + "teardownMs": 762 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "34064", + "34065", + "34066" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-R4tB1D/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-R4tB1D/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-R4tB1D/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuuiaoq63-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.357421875, + "grantedAt": "2026-10-31T20:29:59.709Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.38 + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.403, + "exec": { + "wallMs": 250.455, + "exitCode": 0, + "stdout": "LFS527 0 1793478599672549001 1793478599893895603\n", + "stderr": "", + "rc": 0, + "ms": 221.346602 + }, + "unmountMs": 10.519, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.453, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-R4tB1D/local/lfs527-vwuuiaoq63-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 219.309, + "exitCode": 0, + "stdout": "LFS527 0 1793478599935190910 1793478600133229945\n", + "stderr": "", + "rc": 0, + "ms": 198.039035 + }, + "commitMs": 328.837, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12483c597cc5caa57852dac19d27e4b5c2f47a65c7a5eb8eb294776bd8ea8b2573", + "commit": { + "id": "12483c597cc5caa57852dac19d27e4b5c2f47a65c7a5eb8eb294776bd8ea8b2573", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3271e601c7516f42142799803b873389559a3f41d866309d2816aa0ee8dc1015f4", + "root": "bd148404da9b14cb5a507fbab82a6dc68634821e1851a73a1c4c0ec7024bd7e3", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793478600410, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.198, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.226, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.56, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 6929.219, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.396, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 250.445, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.513, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.449, + "ok": true + }, + { + "name": "timed.exec", + "ms": 219.303, + "ok": true + }, + { + "name": "timed.commit", + "ms": 328.831, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.192, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.546, + "ok": true + }, + { + "name": "verify.identity", + "ms": 62.749, + "ok": true + }, + { + "name": "verify.exec", + "ms": 447.424, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.007, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 0.863, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3271e601c7516f42142799803b873389559a3f41d866309d2816aa0ee8dc1015f4", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 5.656, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.357421875, + "grantedAt": "2026-10-31T20:29:59.709Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.38 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.453, + "execWallMs": 219.309, + "commandMs": 198.039035, + "commitMs": 328.837, + "commitKind": "Committed", + "unmountMs": 10.198 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:30:01.579Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.357421875, + "grantedAt": "2026-10-31T20:29:59.709Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.525390625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C07-2026-10-31T203004888Z-mvwuus7s7j.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C07-2026-10-31T203004888Z-mvwuus7s7j.json new file mode 100644 index 000000000..60ca19538 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C07-2026-10-31T203004888Z-mvwuus7s7j.json @@ -0,0 +1,353 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-vwuusfwqc9-", + "startedAt": "2026-10-31T20:30:04.888Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.27, + "end": 7.36376953125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-Jjhd18", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 17, + "init": { + "kind": "Initialized", + "project": "c07", + "layer": "32c8625eef48800b2f90887c25b457f635c2dfe68a08449e9fc8f441789c1cf889", + "root": "b0f2d4a475030241e84bfcbee20fd5e5bac704911f9bdc2874b5b33101e34dd8", + "store": "/var/lib/lfs527/lfs527-Jjhd18/store/store.sqlite" + }, + "setupMs": 114, + "cellBudgetMs": 89579, + "teardownMs": 738 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "34286", + "34287", + "34288" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-Jjhd18/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-Jjhd18/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-Jjhd18/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuusfwqc9-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.30859375, + "grantedAt": "2026-10-31T20:30:12.066Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.49 + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.445, + "exec": { + "wallMs": 487.557, + "exitCode": 0, + "stdout": "LFS527 0 1793478611780759552 1793478612244401656\n", + "stderr": "", + "rc": 0, + "ms": 463.642104 + }, + "unmountMs": 17.937, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.356, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-Jjhd18/local/lfs527-vwuusfwqc9-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 466.954, + "exitCode": 0, + "stdout": "LFS527 0 1793478612285371878 1793478612737843205\n", + "stderr": "", + "rc": 0, + "ms": 452.471327 + }, + "commitMs": 633.347, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12833cdab6eb41da006a2f79c760949ea46a7d115eba97519ed8522940b6944bdf", + "commit": { + "id": "12833cdab6eb41da006a2f79c760949ea46a7d115eba97519ed8522940b6944bdf", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32c8625eef48800b2f90887c25b457f635c2dfe68a08449e9fc8f441789c1cf889", + "root": "bb8a26357020a253934630624afef14e5454edc72cf3a33df96bfca769adf2b4", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793478613273, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 837, + "newMetadata": 761, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 18.364, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.844, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.533, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 5983.774, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.439, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 487.546, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 17.93, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.352, + "ok": true + }, + { + "name": "timed.exec", + "ms": 466.948, + "ok": true + }, + { + "name": "timed.commit", + "ms": 633.341, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 18.358, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.236, + "ok": true + }, + { + "name": "verify.identity", + "ms": 37.204, + "ok": true + }, + { + "name": "verify.exec", + "ms": 854.019, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.727, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 0.695, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32c8625eef48800b2f90887c25b457f635c2dfe68a08449e9fc8f441789c1cf889", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 4.248, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.30859375, + "grantedAt": "2026-10-31T20:30:12.066Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.49 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.356, + "execWallMs": 466.954, + "commandMs": 452.471327, + "commitMs": 633.347, + "commitKind": "Committed", + "unmountMs": 18.364 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:30:14.853Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.30859375, + "grantedAt": "2026-10-31T20:30:12.066Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.24853515625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C08-2026-10-31T203018381Z-mvwuv2mlxb.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C08-2026-10-31T203018381Z-mvwuv2mlxb.json new file mode 100644 index 000000000..6d87e1d79 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C08-2026-10-31T203018381Z-mvwuv2mlxb.json @@ -0,0 +1,353 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-vwuv2uxqij-", + "startedAt": "2026-10-31T20:30:18.381Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.88, + "end": 6.99365234375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-YhkJxS", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 17, + "init": { + "kind": "Initialized", + "project": "c08", + "layer": "3259844705e67aec88120a4a410dcacea20e71abe4676936fc075d3d1247c9da14", + "root": "2bca5a56f0d0d60887fb849d76d9916d6883ae4698b6b7d2795219d711270cbb", + "store": "/var/lib/lfs527/lfs527-YhkJxS/store/store.sqlite" + }, + "setupMs": 130, + "cellBudgetMs": 89591, + "teardownMs": 711 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "34512", + "34513", + "34514" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-YhkJxS/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-YhkJxS/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-YhkJxS/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuv2uxqij-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.99365234375, + "grantedAt": "2026-10-31T20:30:25.007Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.89 + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 4.97, + "exec": { + "wallMs": 196.73, + "exitCode": 0, + "stdout": "LFS527 0 1793478625025369192 1793478625197216163\n", + "stderr": "", + "rc": 0, + "ms": 171.846971 + }, + "unmountMs": 8.412, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.032, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-YhkJxS/local/lfs527-vwuv2uxqij-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 192.574, + "exitCode": 0, + "stdout": "LFS527 0 1793478625231670037 1793478625405516703\n", + "stderr": "", + "rc": 0, + "ms": 173.846666 + }, + "commitMs": 314.554, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1249f889425e7ad69a3bac175a7c4c7ad1f13bfa770443e293068fe1891b9d294d", + "commit": { + "id": "1249f889425e7ad69a3bac175a7c4c7ad1f13bfa770443e293068fe1891b9d294d", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3259844705e67aec88120a4a410dcacea20e71abe4676936fc075d3d1247c9da14", + "root": "acc3eccff41b6db18087c8e792b07f167fd037c4a6bb7e45bca33e9ff80516fa", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793478625672, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 9.268, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.67, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.598, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 5751.03, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.964, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 196.72, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.407, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.028, + "ok": true + }, + { + "name": "timed.exec", + "ms": 192.569, + "ok": true + }, + { + "name": "timed.commit", + "ms": 314.548, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 9.264, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.88, + "ok": true + }, + { + "name": "verify.identity", + "ms": 48.537, + "ok": true + }, + { + "name": "verify.exec", + "ms": 358.348, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.073, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 0.658, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3259844705e67aec88120a4a410dcacea20e71abe4676936fc075d3d1247c9da14", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 4.227, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.99365234375, + "grantedAt": "2026-10-31T20:30:25.007Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.89 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.032, + "execWallMs": 192.574, + "commandMs": 173.846666, + "commitMs": 314.554, + "commitKind": "Committed", + "unmountMs": 9.268 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:30:26.673Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.99365234375, + "grantedAt": "2026-10-31T20:30:25.007Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.36376953125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C09-2026-10-31T203030021Z-vwuvblx158.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C09-2026-10-31T203030021Z-vwuvblx158.json new file mode 100644 index 000000000..947dfc7ae --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C09-2026-10-31T203030021Z-vwuvblx158.json @@ -0,0 +1,395 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-vwuvbudqop-", + "startedAt": "2026-10-31T20:30:30.021Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.74, + "end": 7.63330078125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-EaqYhL", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 18, + "init": { + "kind": "Initialized", + "project": "c09", + "layer": "32d7f9a400eb1c105fca0ec258c2cd62da55ec181c36aa010a21df7486bb68b2aa", + "root": "13ff21384285a65c272d5b04eed76460e93e50bda25fa084240e24b825f6e434", + "store": "/var/lib/lfs527/lfs527-EaqYhL/store/store.sqlite" + }, + "setupMs": 113, + "cellBudgetMs": 89627, + "teardownMs": 849 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "34734", + "34735", + "34736" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-EaqYhL/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-EaqYhL/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-EaqYhL/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuvbudqop-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.63330078125, + "grantedAt": "2026-10-31T20:30:39.854Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.7 + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 329.426, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12bdd882a3f3f46cee2915acf61b3f1a4abad11815ddce9493e1ce490f7300b001", + "commit": { + "id": "12bdd882a3f3f46cee2915acf61b3f1a4abad11815ddce9493e1ce490f7300b001", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32d7f9a400eb1c105fca0ec258c2cd62da55ec181c36aa010a21df7486bb68b2aa", + "root": "966d7596ee1f967ed0f7265bea5ba10fe70880d432525ee2bcc9a62b7a8fc059", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793478639858, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.914, + "exec": { + "wallMs": 118.33, + "exitCode": 0, + "stdout": "LFS527 0 1793478639941515174 1793478640040598637\n", + "stderr": "", + "rc": 0, + "ms": 99.083463 + }, + "unmountMs": 4.602, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.817, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-EaqYhL/local/lfs527-vwuvbudqop-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 156.587, + "exitCode": 0, + "stdout": "LFS527 0 1793478640092999280 1793478640223669138\n", + "stderr": "", + "rc": 0, + "ms": 130.669858 + }, + "commitMs": 0.895, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12bdd882a3f3f46cee2915acf61b3f1a4abad11815ddce9493e1ce490f7300b001", + "root": "966d7596ee1f967ed0f7265bea5ba10fe70880d432525ee2bcc9a62b7a8fc059", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 5.728, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.388, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.505, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 8412.031, + "ok": true + }, + { + "name": "setup.mount", + "ms": 8.623, + "ok": true + }, + { + "name": "setup.exec", + "ms": 329.407, + "ok": true + }, + { + "name": "setup.commit", + "ms": 330.501, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 9.839, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.91, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 118.324, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.589, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.811, + "ok": true + }, + { + "name": "timed.exec", + "ms": 156.574, + "ok": true + }, + { + "name": "timed.commit", + "ms": 0.89, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 5.715, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.298, + "ok": true + }, + { + "name": "verify.identity", + "ms": 94.706, + "ok": true + }, + { + "name": "verify.exec", + "ms": 533.176, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.58, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1.242, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d7f9a400eb1c105fca0ec258c2cd62da55ec181c36aa010a21df7486bb68b2aa", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 13.839, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.63330078125, + "grantedAt": "2026-10-31T20:30:39.854Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.7 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.817, + "execWallMs": 156.587, + "commandMs": 130.669858, + "commitMs": 0.895, + "commitKind": "UpToDate", + "unmountMs": 5.728 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:30:41.555Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.63330078125, + "grantedAt": "2026-10-31T20:30:39.854Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 6.673828125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C10-2026-10-31T203044811Z-vwuvn0r2qv.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C10-2026-10-31T203044811Z-vwuvn0r2qv.json new file mode 100644 index 000000000..011df4dcb --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C10-2026-10-31T203044811Z-vwuvn0r2qv.json @@ -0,0 +1,414 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-vwuvn9sqv0-", + "startedAt": "2026-10-31T20:30:44.811Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.56, + "end": 7.84716796875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-69v3Oq", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 23, + "init": { + "kind": "Initialized", + "project": "c10", + "layer": "320afc648b4d0a459f96ac4f4489d43e229d791c1cd2ae7aed2cec47738ddc6afa", + "root": "e868343a503e32e92b307552f63038f1c8cdec68687c816292f4778b6e4640cb", + "store": "/var/lib/lfs527/lfs527-69v3Oq/store/store.sqlite" + }, + "setupMs": 158, + "cellBudgetMs": 89543, + "teardownMs": 727 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "34964", + "34965", + "34966" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-69v3Oq/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-69v3Oq/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-69v3Oq/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuvn9sqv0-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.18212890625, + "grantedAt": "2026-10-31T20:30:57.273Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.63 + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 215.448, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1248cd39117d23aa893b0247f4dfb7fb709805504156921d4acc515a17e976f17c", + "commit": { + "id": "1248cd39117d23aa893b0247f4dfb7fb709805504156921d4acc515a17e976f17c", + "branch": null, + "parent": null, + "secondParent": null, + "base": "320afc648b4d0a459f96ac4f4489d43e229d791c1cd2ae7aed2cec47738ddc6afa", + "root": "a1c2b57d6da4898fcd975eaa49123dad48f4b2afaed715a80f570e5ab87bc11f", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793478657120, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.118, + "exec": { + "wallMs": 275.58, + "exitCode": 0, + "stdout": "LFS527 0 1793478657202383752 1793478657458391945\n", + "stderr": "", + "rc": 0, + "ms": 256.008193 + }, + "unmountMs": 13.603, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.277, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-69v3Oq/local/lfs527-vwuvn9sqv0-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 243.952, + "exitCode": 0, + "stdout": "LFS527 0 1793478657502682194 1793478657727737307\n", + "stderr": "", + "rc": 0, + "ms": 225.055113 + }, + "commitMs": 51.948, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1252fa2cd548da448dce6ca655c8beb124e421810204e21fee83fd5215a7d434a6", + "commit": { + "id": "1252fa2cd548da448dce6ca655c8beb124e421810204e21fee83fd5215a7d434a6", + "branch": null, + "parent": "1248cd39117d23aa893b0247f4dfb7fb709805504156921d4acc515a17e976f17c", + "secondParent": null, + "base": "320afc648b4d0a459f96ac4f4489d43e229d791c1cd2ae7aed2cec47738ddc6afa", + "root": "624bd9155611cd7318711733ce7070582a00eb0da7934e66d349e87534d7a597", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793478657730, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 12.748, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 26.337, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.998, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 10830.651, + "ok": true + }, + { + "name": "setup.mount", + "ms": 7.829, + "ok": true + }, + { + "name": "setup.exec", + "ms": 215.438, + "ok": true + }, + { + "name": "setup.commit", + "ms": 312.827, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 10.109, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.114, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 275.569, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 13.58, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.273, + "ok": true + }, + { + "name": "timed.exec", + "ms": 243.946, + "ok": true + }, + { + "name": "timed.commit", + "ms": 51.942, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 12.743, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.706, + "ok": true + }, + { + "name": "verify.identity", + "ms": 32.371, + "ok": true + }, + { + "name": "verify.exec", + "ms": 704.594, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.301, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1.077, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "320afc648b4d0a459f96ac4f4489d43e229d791c1cd2ae7aed2cec47738ddc6afa", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 6.222, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.18212890625, + "grantedAt": "2026-10-31T20:30:57.273Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.63 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.277, + "execWallMs": 243.952, + "commandMs": 225.055113, + "commitMs": 51.948, + "commitKind": "Committed", + "unmountMs": 12.748 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:30:59.094Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.18212890625, + "grantedAt": "2026-10-31T20:30:57.273Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.74267578125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C11-2026-10-31T203103038Z-vwuw1313hu.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C11-2026-10-31T203103038Z-vwuw1313hu.json new file mode 100644 index 000000000..5c89a843b --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C11-2026-10-31T203103038Z-vwuw1313hu.json @@ -0,0 +1,395 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-vwuw1e7r1i-", + "startedAt": "2026-10-31T20:31:03.038Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.58, + "end": 10.162109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-2lZWgS", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 23, + "init": { + "kind": "Initialized", + "project": "c11", + "layer": "3247f60a4ec50b4808d427c504fe06e2ddbd0d05f57207216d1b5ad3e1e5b5a41b", + "root": "15a5cc477fdd70fb186337b4c76f9fb78d6b18dd0242a7fd236d2eccab5c8b07", + "store": "/var/lib/lfs527/lfs527-2lZWgS/store/store.sqlite" + }, + "setupMs": 276, + "cellBudgetMs": 89018, + "teardownMs": 726 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "35196", + "35197", + "35198" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-2lZWgS/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-2lZWgS/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-2lZWgS/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuw1e7r1i-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.69873046875, + "grantedAt": "2026-10-31T20:31:13.532Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.61 + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 230.525, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12735b6f7b4909bf7cafb1503436539cad8c099196874613bd0da7bcbf66e7c9bb", + "commit": { + "id": "12735b6f7b4909bf7cafb1503436539cad8c099196874613bd0da7bcbf66e7c9bb", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3247f60a4ec50b4808d427c504fe06e2ddbd0d05f57207216d1b5ad3e1e5b5a41b", + "root": "011fa5e310497c6af70a1210ee8c8675a3cb35e956fd27834a08117e8df5c401", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793478673520, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.214, + "exec": { + "wallMs": 137.813, + "exitCode": 0, + "stdout": "LFS527 0 1793478673603317572 1793478673722104901\n", + "stderr": "", + "rc": 0, + "ms": 118.787329 + }, + "unmountMs": 10.329, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.937, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-2lZWgS/local/lfs527-vwuw1e7r1i-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 139.296, + "exitCode": 0, + "stdout": "LFS527 0 1793478673771296028 1793478673883364433\n", + "stderr": "", + "rc": 0, + "ms": 112.068405 + }, + "commitMs": 145.523, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12735b6f7b4909bf7cafb1503436539cad8c099196874613bd0da7bcbf66e7c9bb", + "root": "011fa5e310497c6af70a1210ee8c8675a3cb35e956fd27834a08117e8df5c401", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 9.688, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 18.352, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.204, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 8360.161, + "ok": true + }, + { + "name": "setup.mount", + "ms": 5.304, + "ok": true + }, + { + "name": "setup.exec", + "ms": 230.513, + "ok": true + }, + { + "name": "setup.commit", + "ms": 324.427, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 9.673, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.208, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 137.808, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.324, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.927, + "ok": true + }, + { + "name": "timed.exec", + "ms": 139.29, + "ok": true + }, + { + "name": "timed.commit", + "ms": 145.517, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 9.682, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.329, + "ok": true + }, + { + "name": "verify.identity", + "ms": 31.392, + "ok": true + }, + { + "name": "verify.exec", + "ms": 338.533, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.576, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 0.876, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3247f60a4ec50b4808d427c504fe06e2ddbd0d05f57207216d1b5ad3e1e5b5a41b", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 5.811, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.69873046875, + "grantedAt": "2026-10-31T20:31:13.532Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.61 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.937, + "execWallMs": 139.296, + "commandMs": 112.068405, + "commitMs": 145.523, + "commitKind": "UpToDate", + "unmountMs": 9.688 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:31:14.960Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.69873046875, + "grantedAt": "2026-10-31T20:31:13.532Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.84716796875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C12-2026-10-31T203118356Z-vwuwcwk4ne.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C12-2026-10-31T203118356Z-vwuwcwk4ne.json new file mode 100644 index 000000000..0fb5b34c2 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-namespaces-C12-2026-10-31T203118356Z-vwuwcwk4ne.json @@ -0,0 +1,353 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-vwuwd4tr7t-", + "startedAt": "2026-10-31T20:31:18.356Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.61, + "end": 9.220703125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-G1DCoC", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 15, + "init": { + "kind": "Initialized", + "project": "c12", + "layer": "32f75b09e33f2531755a465eb05f50006d90c5edb54ea1eaa20c5bd5685fd42f1d", + "root": "e22a8f7c7ee8bee882935448c36fb5e21a85b7194e2d26ea27f379da39513096", + "store": "/var/lib/lfs527/lfs527-G1DCoC/store/store.sqlite" + }, + "setupMs": 101, + "cellBudgetMs": 89681, + "teardownMs": 541 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [ + "35421", + "35422", + "35423" + ] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-G1DCoC/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-G1DCoC/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-G1DCoC/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuwd4tr7t-", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.220703125, + "grantedAt": "2026-10-31T20:31:23.922Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.52 + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 10.277, + "exec": { + "wallMs": 376.842, + "exitCode": 0, + "stdout": "LFS527 0 1793478683788982051 1793478684121780233\n", + "stderr": "", + "rc": 0, + "ms": 332.798182 + }, + "unmountMs": 1.716, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 2.836, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-G1DCoC/local/lfs527-vwuwd4tr7t-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 243.297, + "exitCode": 0, + "stdout": "LFS527 0 1793478684143205913 1793478684375442157\n", + "stderr": "", + "rc": 0, + "ms": 232.236244 + }, + "commitMs": 37.07, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "122218c5eedd02d1872bb258ea21887573481c835594567ddf17e2d612f4c65665", + "commit": { + "id": "122218c5eedd02d1872bb258ea21887573481c835594567ddf17e2d612f4c65665", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32f75b09e33f2531755a465eb05f50006d90c5edb54ea1eaa20c5bd5685fd42f1d", + "root": "a309460d9020b1e6d2bc487cec3f7a00cb086aeb45f72c455fd2ea42b718b0d3", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793478684410, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26837, + "newMetadata": 6529, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 1.696, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.601, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.396, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4639.142, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 10.266, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 376.833, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 1.713, + "ok": true + }, + { + "name": "timed.mount", + "ms": 2.831, + "ok": true + }, + { + "name": "timed.exec", + "ms": 243.293, + "ok": true + }, + { + "name": "timed.commit", + "ms": 37.058, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 1.692, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.347, + "ok": true + }, + { + "name": "verify.identity", + "ms": 51.473, + "ok": true + }, + { + "name": "verify.exec", + "ms": 122.6, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 1.353, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 0.725, + "ok": false, + "error": { + "code": "Failed", + "message": "Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }", + "detail": null + } + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32f75b09e33f2531755a465eb05f50006d90c5edb54ea1eaa20c5bd5685fd42f1d", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 5.463, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.220703125, + "grantedAt": "2026-10-31T20:31:23.922Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.52 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "closeError": "sandbox.close: Failed Failed: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Unsupported(\"the namespaces Sandbox runtime needs the layerfs-sandbox-helper executable beside the daemon (or LAYERFS_SANDBOX_HELPER set)\"), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None }" + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 2.836, + "execWallMs": 243.297, + "commandMs": 232.236244, + "commitMs": 37.07, + "commitKind": "Committed", + "unmountMs": 1.696 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": false, + "endedAt": "2026-10-31T20:31:24.949Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.220703125, + "grantedAt": "2026-10-31T20:31:23.922Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.162109375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C01-2026-10-31T202713616Z-wur4282285.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C01-2026-10-31T202713616Z-wur4282285.json new file mode 100644 index 000000000..89267c334 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C01-2026-10-31T202713616Z-wur4282285.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-vwur4a0cby-", + "startedAt": "2026-10-31T20:27:13.616Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.59, + "end": 10.7900390625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-JLQGEb", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 18, + "init": { + "kind": "Initialized", + "project": "c01", + "layer": "327c0506bbe8e74acfab57a3ded537736ae9ccdb8eab3c143c59e4ea7afc94e3e3", + "root": "b364a5d6829c561beba106f2e396b304131530851ea85843f3daae757e9bfce2", + "store": "/var/lib/lfs527/lfs527-JLQGEb/store/store.sqlite" + }, + "setupMs": 139, + "cellBudgetMs": 89565, + "teardownMs": 17 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-JLQGEb/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-JLQGEb/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-JLQGEb/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwur4a0cby-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.7900390625, + "grantedAt": "2026-10-31T20:27:14.880Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.59 + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.609, + "exec": { + "wallMs": 541.823, + "exitCode": 0, + "stdout": "LFS527 0 1793478434522125426 1793478435059783230\n", + "stderr": "", + "rc": 0, + "ms": 537.657804 + }, + "unmountMs": 3.538, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.44, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-JLQGEb/local/lfs527-vwur4a0cby-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 726.977, + "exitCode": 0, + "stdout": "LFS527 0 1793478435075788247 1793478435798319780\n", + "stderr": "", + "rc": 0, + "ms": 722.531533 + }, + "commitMs": 109.364, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1228187e6e785370928dffc68013dd4bebdaedf12ec1ff8e8bf5067f98a70f3601", + "commit": { + "id": "1228187e6e785370928dffc68013dd4bebdaedf12ec1ff8e8bf5067f98a70f3601", + "branch": null, + "parent": null, + "secondParent": null, + "base": "327c0506bbe8e74acfab57a3ded537736ae9ccdb8eab3c143c59e4ea7afc94e3e3", + "root": "61240dd335a5b4c58c3e252532ee21cc7df7f53356a2c66a114a31dbd57788f6", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793478435899, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.19, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.666, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.627, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15.007, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.601, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 541.809, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.531, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.435, + "ok": true + }, + { + "name": "timed.exec", + "ms": 726.968, + "ok": true + }, + { + "name": "timed.commit", + "ms": 109.356, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.183, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.92, + "ok": true + }, + { + "name": "verify.identity", + "ms": 12.558, + "ok": true + }, + { + "name": "verify.exec", + "ms": 993.348, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.374, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.786, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "327c0506bbe8e74acfab57a3ded537736ae9ccdb8eab3c143c59e4ea7afc94e3e3", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.68, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.7900390625, + "grantedAt": "2026-10-31T20:27:14.880Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.59 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.44, + "execWallMs": 726.977, + "commandMs": 722.531533, + "commitMs": 109.364, + "commitKind": "Committed", + "unmountMs": 3.19 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:16.804Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.7900390625, + "grantedAt": "2026-10-31T20:27:14.880Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.77197265625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C02-2026-10-31T202719962Z-wur8yi22ep.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C02-2026-10-31T202719962Z-wur8yi22ep.json new file mode 100644 index 000000000..e27397628 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C02-2026-10-31T202719962Z-wur8yi22ep.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-vwur980ci9-", + "startedAt": "2026-10-31T20:27:19.962Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.54, + "end": 10.56884765625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-7RTrQc", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 19, + "init": { + "kind": "Initialized", + "project": "c02", + "layer": "3250507f18185bd0cffdf6fd973bbc9859f5d5396e5a18f1462a79f8488dd1ca80", + "root": "de1361dbf3ac295560647a4942e556400eff49bf2ea134f1d3ad9fc8b504b5c0", + "store": "/var/lib/lfs527/lfs527-7RTrQc/store/store.sqlite" + }, + "setupMs": 153, + "cellBudgetMs": 89555, + "teardownMs": 16 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-7RTrQc/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-7RTrQc/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-7RTrQc/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwur980ci9-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 306, + "load1": 10.966796875, + "grantedAt": "2026-10-31T20:27:22.363Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.54 + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.512, + "exec": { + "wallMs": 1308.699, + "exitCode": 0, + "stdout": "LFS527 0 1793478440935422725 1793478442240530068\n", + "stderr": "", + "rc": 0, + "ms": 1305.107343 + }, + "unmountMs": 2.538, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.293, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-7RTrQc/local/lfs527-vwur980ci9-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 1417.927, + "exitCode": 0, + "stdout": "LFS527 0 1793478442560187693 1793478443973824235\n", + "stderr": "", + "rc": 0, + "ms": 1413.636542 + }, + "commitMs": 99.251, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12c97e76054c4edd797d30f262865c1bd6722f5b3b838bff80283c4e6f0259113f", + "commit": { + "id": "12c97e76054c4edd797d30f262865c1bd6722f5b3b838bff80283c4e6f0259113f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3250507f18185bd0cffdf6fd973bbc9859f5d5396e5a18f1462a79f8488dd1ca80", + "root": "3df1dde5b53ecff6c685667d9136b7dcc652f65213f920e7e3c18e52d31b6d12", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793478444065, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18644, + "newMetadata": 9719, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.542, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.838, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.514, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15.062, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.505, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1308.688, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.534, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.288, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1417.891, + "ok": true + }, + { + "name": "timed.commit", + "ms": 99.246, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.532, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.396, + "ok": true + }, + { + "name": "verify.identity", + "ms": 8.254, + "ok": true + }, + { + "name": "verify.exec", + "ms": 572.355, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.688, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.495, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3250507f18185bd0cffdf6fd973bbc9859f5d5396e5a18f1462a79f8488dd1ca80", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 310.309, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 306, + "load1": 10.966796875, + "grantedAt": "2026-10-31T20:27:22.363Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.54 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.293, + "execWallMs": 1417.927, + "commandMs": 1413.636542, + "commitMs": 99.251, + "commitKind": "Committed", + "unmountMs": 4.542 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:24.542Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 306, + "load1": 10.966796875, + "grantedAt": "2026-10-31T20:27:22.363Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.966796875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C03-2026-10-31T202727814Z-wurf0m22jd.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C03-2026-10-31T202727814Z-wurf0m22jd.json new file mode 100644 index 000000000..f80b566c3 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C03-2026-10-31T202727814Z-wurf0m22jd.json @@ -0,0 +1,316 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-vwurfafe87-", + "startedAt": "2026-10-31T20:27:27.814Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.74, + "end": 10.12255859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-Pb4q8R", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 24, + "init": { + "kind": "Initialized", + "project": "c03", + "layer": "329ad4ee87b1bb976658ead3b25afc4a15fe61f97e89e65e5093524cbce44c0c31", + "root": "2087a87cd6574b0d562df84a3f1a373d49b3cdcde7ae736aaad70478ca97bcec", + "store": "/var/lib/lfs527/lfs527-Pb4q8R/store/store.sqlite" + }, + "setupMs": 143, + "cellBudgetMs": 89567, + "teardownMs": 13 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-Pb4q8R/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-Pb4q8R/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-Pb4q8R/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwurfafe87-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.12255859375, + "grantedAt": "2026-10-31T20:27:29.345Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.76 + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.507, + "exec": { + "wallMs": 766.089, + "exitCode": 0, + "stdout": "LFS527 0 1793478448766413939 1793478449528276144\n", + "stderr": "", + "rc": 0, + "ms": 761.862205 + }, + "unmountMs": 2.346, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.265, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-Pb4q8R/local/lfs527-vwurfafe87-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 844.525, + "exitCode": 0, + "stdout": "LFS527 0 1793478449542412667 1793478450383512351\n", + "stderr": "", + "rc": 0, + "ms": 841.099684 + }, + "commitMs": 9.35, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "2087a87cd6574b0d562df84a3f1a373d49b3cdcde7ae736aaad70478ca97bcec", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.68, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.082, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.469, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14.596, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.501, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 766.077, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.341, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.262, + "ok": true + }, + { + "name": "timed.exec", + "ms": 844.519, + "ok": true + }, + { + "name": "timed.commit", + "ms": 9.344, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.676, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.876, + "ok": true + }, + { + "name": "verify.identity", + "ms": 9.105, + "ok": true + }, + { + "name": "verify.exec", + "ms": 3.658, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 1.417, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.976, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "329ad4ee87b1bb976658ead3b25afc4a15fe61f97e89e65e5093524cbce44c0c31", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.673, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.12255859375, + "grantedAt": "2026-10-31T20:27:29.345Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.76 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.265, + "execWallMs": 844.525, + "commandMs": 841.099684, + "commitMs": 9.35, + "commitKind": "UpToDate", + "unmountMs": 2.68 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:30.283Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.12255859375, + "grantedAt": "2026-10-31T20:27:29.345Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.56884765625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C04-2026-10-31T202733541Z-wurjfp22sa.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C04-2026-10-31T202733541Z-wurjfp22sa.json new file mode 100644 index 000000000..0e9aace86 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C04-2026-10-31T202733541Z-wurjfp22sa.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-vwurjnqedx-", + "startedAt": "2026-10-31T20:27:33.541Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.78, + "end": 10.0322265625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-JSo2pz", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 19, + "init": { + "kind": "Initialized", + "project": "c04", + "layer": "32fb91d658b2b529ba4e4023b66b339fd6ad2c6619f3cfd0104d9db8c6448a7960", + "root": "98b92008da9919db1780ca4a95ec29ec84f8a2e6bb7a8e0e7ffae065a0f55933", + "store": "/var/lib/lfs527/lfs527-JSo2pz/store/store.sqlite" + }, + "setupMs": 147, + "cellBudgetMs": 89551, + "teardownMs": 13 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-JSo2pz/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-JSo2pz/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-JSo2pz/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwurjnqedx-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.0322265625, + "grantedAt": "2026-10-31T20:27:35.360Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.78 + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.105, + "exec": { + "wallMs": 1091.451, + "exitCode": 0, + "stdout": "LFS527 0 1793478454456096703 1793478455544218226\n", + "stderr": "", + "rc": 0, + "ms": 1088.121523 + }, + "unmountMs": 2.788, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 2.929, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-JSo2pz/local/lfs527-vwurjnqedx-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 1227.915, + "exitCode": 0, + "stdout": "LFS527 0 1793478455557716014 1793478456782481436\n", + "stderr": "", + "rc": 0, + "ms": 1224.765422 + }, + "commitMs": 115.26, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "129230aa9e18c9f6b1682947c587ab84283043c406ff706b27f4c88872f7818621", + "commit": { + "id": "129230aa9e18c9f6b1682947c587ab84283043c406ff706b27f4c88872f7818621", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32fb91d658b2b529ba4e4023b66b339fd6ad2c6619f3cfd0104d9db8c6448a7960", + "root": "cf4e91ebc9057639f48f218258b50c6e9a5115bee8bc649425bf4228e32e48f0", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793478456889, + "logical": 0, + "newCanonical": 109367, + "newStored": 8260, + "newMetadata": 8260, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.701, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.841, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.556, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14.188, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.101, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1091.439, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.783, + "ok": true + }, + { + "name": "timed.mount", + "ms": 2.924, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1227.909, + "ok": true + }, + { + "name": "timed.commit", + "ms": 115.253, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.696, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.932, + "ok": true + }, + { + "name": "verify.identity", + "ms": 10.153, + "ok": true + }, + { + "name": "verify.exec", + "ms": 469.004, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.208, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.622, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32fb91d658b2b529ba4e4023b66b339fd6ad2c6619f3cfd0104d9db8c6448a7960", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.284, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.0322265625, + "grantedAt": "2026-10-31T20:27:35.360Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.78 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 2.929, + "execWallMs": 1227.915, + "commandMs": 1224.765422, + "commitMs": 115.26, + "commitKind": "Committed", + "unmountMs": 3.701 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:37.261Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.0322265625, + "grantedAt": "2026-10-31T20:27:35.360Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.12255859375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C05-2026-10-31T202740760Z-wurp0822ux.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C05-2026-10-31T202740760Z-wurp0822ux.json new file mode 100644 index 000000000..b4c80d124 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C05-2026-10-31T202740760Z-wurp0822ux.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-vwurpgegie-", + "startedAt": "2026-10-31T20:27:40.760Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.72, + "end": 9.55908203125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-Vwc4XN", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 19, + "init": { + "kind": "Initialized", + "project": "c05", + "layer": "322004051aae9cddb6fe0e86f1a65dd4952957a0bbb1b686d8f98fd8c4497df37d", + "root": "fa8d1e9dfc592412d537e4e6d3bd1b39f3b50ee6baf4c53e20a36f28ffb91d19", + "store": "/var/lib/lfs527/lfs527-Vwc4XN/store/store.sqlite" + }, + "setupMs": 166, + "cellBudgetMs": 89487, + "teardownMs": 14 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-Vwc4XN/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-Vwc4XN/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-Vwc4XN/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwurpgegie-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.869140625, + "grantedAt": "2026-10-31T20:27:43.129Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.72 + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.023, + "exec": { + "wallMs": 1262.942, + "exitCode": 0, + "stdout": "LFS527 0 1793478462054305694 1793478463313149721\n", + "stderr": "", + "rc": 0, + "ms": 1258.844027 + }, + "unmountMs": 2.715, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.303, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-Vwc4XN/local/lfs527-vwurpgegie-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 1254.099, + "exitCode": 0, + "stdout": "LFS527 0 1793478463328179506 1793478464579527698\n", + "stderr": "", + "rc": 0, + "ms": 1251.348192 + }, + "commitMs": 104.809, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "122678847b81d7e0ea512b51d21727275850899bc4a1994225f2bf2da6f6ee1c2f", + "commit": { + "id": "122678847b81d7e0ea512b51d21727275850899bc4a1994225f2bf2da6f6ee1c2f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "322004051aae9cddb6fe0e86f1a65dd4952957a0bbb1b686d8f98fd8c4497df37d", + "root": "e13ae4001bc90a8ca11ec1104241dd94e1cf8b0365c604ca0594eb54b2df43dd", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793478464677, + "logical": 0, + "newCanonical": 109367, + "newStored": 8248, + "newMetadata": 8248, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.144, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.726, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.542, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15.809, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.017, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1262.931, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.709, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.298, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1254.091, + "ok": true + }, + { + "name": "timed.commit", + "ms": 104.802, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.138, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.071, + "ok": true + }, + { + "name": "verify.identity", + "ms": 9.125, + "ok": true + }, + { + "name": "verify.exec", + "ms": 402.825, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.313, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 23.728, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "322004051aae9cddb6fe0e86f1a65dd4952957a0bbb1b686d8f98fd8c4497df37d", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.934, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.869140625, + "grantedAt": "2026-10-31T20:27:43.129Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.72 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.303, + "execWallMs": 1254.099, + "commandMs": 1251.348192, + "commitMs": 104.809, + "commitKind": "Committed", + "unmountMs": 3.144 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:44.978Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.869140625, + "grantedAt": "2026-10-31T20:27:43.129Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.869140625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C06-2026-10-31T202748112Z-wuruog22zm.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C06-2026-10-31T202748112Z-wuruog22zm.json new file mode 100644 index 000000000..253453897 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C06-2026-10-31T202748112Z-wuruog22zm.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-vwurv3ain0-", + "startedAt": "2026-10-31T20:27:48.112Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.98, + "end": 9.51416015625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-WKwxkL", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 28, + "init": { + "kind": "Initialized", + "project": "c06", + "layer": "3205430720db261341df19e003eff447afbfa5fc5614333c66052213678885a608", + "root": "88f2c02be6df11d02b905f64fe8671a0c3efbd9851872155d3cbab5eb1db4bbd", + "store": "/var/lib/lfs527/lfs527-WKwxkL/store/store.sqlite" + }, + "setupMs": 149, + "cellBudgetMs": 89568, + "teardownMs": 15 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-WKwxkL/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-WKwxkL/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-WKwxkL/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwurv3ain0-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 306, + "load1": 9.51416015625, + "grantedAt": "2026-10-31T20:27:49.618Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.98 + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.345, + "exec": { + "wallMs": 248.685, + "exitCode": 0, + "stdout": "LFS527 0 1793478469245825624 1793478469490168287\n", + "stderr": "", + "rc": 0, + "ms": 244.342663 + }, + "unmountMs": 10.643, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.057, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-WKwxkL/local/lfs527-vwurv3ain0-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 217.912, + "exitCode": 0, + "stdout": "LFS527 0 1793478469820356849 1793478470034622600\n", + "stderr": "", + "rc": 0, + "ms": 214.265751 + }, + "commitMs": 340.051, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12d8cedd31752f69f829421301339de576d931e8fcc6fbb4d1173e31f65ae9818c", + "commit": { + "id": "12d8cedd31752f69f829421301339de576d931e8fcc6fbb4d1173e31f65ae9818c", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3205430720db261341df19e003eff447afbfa5fc5614333c66052213678885a608", + "root": "16eb6df99014a6d0765cca59fb4570a243188c8dd13588f34d0887a5d7532f05", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793478470314, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 15.694, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.443, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.595, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 13.456, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.338, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 248.672, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.636, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.052, + "ok": true + }, + { + "name": "timed.exec", + "ms": 217.905, + "ok": true + }, + { + "name": "timed.commit", + "ms": 340.044, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 15.687, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.302, + "ok": true + }, + { + "name": "verify.identity", + "ms": 17.043, + "ok": true + }, + { + "name": "verify.exec", + "ms": 454.908, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.279, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 25.898, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3205430720db261341df19e003eff447afbfa5fc5614333c66052213678885a608", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 310.536, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 306, + "load1": 9.51416015625, + "grantedAt": "2026-10-31T20:27:49.618Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.98 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.057, + "execWallMs": 217.912, + "commandMs": 214.265751, + "commitMs": 340.051, + "commitKind": "Committed", + "unmountMs": 15.694 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:50.813Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 306, + "load1": 9.51416015625, + "grantedAt": "2026-10-31T20:27:49.618Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.55908203125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C07-2026-10-31T202754171Z-wurzcr2312.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C07-2026-10-31T202754171Z-wurzcr2312.json new file mode 100644 index 000000000..457da6b4e --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C07-2026-10-31T202754171Z-wurzcr2312.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-vwurzmpisv-", + "startedAt": "2026-10-31T20:27:54.171Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.9, + "end": 8.83203125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-QX0jiG", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 19, + "init": { + "kind": "Initialized", + "project": "c07", + "layer": "324c916e56e2b78d65ef68b8e527cc22764cf4ca51951beff397d801334594ebde", + "root": "b2752e9d21a6b08e0b7546913ff03557212a5107e36a1633ca89be41e6299426", + "store": "/var/lib/lfs527/lfs527-QX0jiG/store/store.sqlite" + }, + "setupMs": 145, + "cellBudgetMs": 89561, + "teardownMs": 14 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-QX0jiG/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-QX0jiG/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-QX0jiG/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwurzmpisv-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.83203125, + "grantedAt": "2026-10-31T20:27:55.476Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.9 + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.094, + "exec": { + "wallMs": 491.105, + "exitCode": 0, + "stdout": "LFS527 0 1793478475157026748 1793478475644843050\n", + "stderr": "", + "rc": 0, + "ms": 487.816302 + }, + "unmountMs": 19.941, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.188, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-QX0jiG/local/lfs527-vwurzmpisv-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 469.321, + "exitCode": 0, + "stdout": "LFS527 0 1793478475678048713 1793478476144288817\n", + "stderr": "", + "rc": 0, + "ms": 466.240104 + }, + "commitMs": 656.866, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1249d5544a30af9fdcef7c3283dbf3aeebfb033e22a45180f4cc54c75007c999c8", + "commit": { + "id": "1249d5544a30af9fdcef7c3283dbf3aeebfb033e22a45180f4cc54c75007c999c8", + "branch": null, + "parent": null, + "secondParent": null, + "base": "324c916e56e2b78d65ef68b8e527cc22764cf4ca51951beff397d801334594ebde", + "root": "7d0e7444d562f550eed066902caa10e5487d59423d9214a0fa3edb0ba1447f03", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793478476696, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 837, + "newMetadata": 761, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 19.565, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.288, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.521, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 16.175, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.088, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 491.093, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 19.935, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.183, + "ok": true + }, + { + "name": "timed.exec", + "ms": 469.315, + "ok": true + }, + { + "name": "timed.commit", + "ms": 656.842, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 19.56, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.066, + "ok": true + }, + { + "name": "verify.identity", + "ms": 9.949, + "ok": true + }, + { + "name": "verify.exec", + "ms": 849.496, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.919, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.748, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "324c916e56e2b78d65ef68b8e527cc22764cf4ca51951beff397d801334594ebde", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.57, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.83203125, + "grantedAt": "2026-10-31T20:27:55.476Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.9 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.188, + "execWallMs": 469.321, + "commandMs": 466.240104, + "commitMs": 656.866, + "commitKind": "Committed", + "unmountMs": 19.565 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:57.564Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.83203125, + "grantedAt": "2026-10-31T20:27:55.476Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.83203125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C08-2026-10-31T202800842Z-wus4i2236y.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C08-2026-10-31T202800842Z-wus4i2236y.json new file mode 100644 index 000000000..8ec3f53dd --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C08-2026-10-31T202800842Z-wus4i2236y.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-vwus4qkiyw-", + "startedAt": "2026-10-31T20:28:00.842Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.83, + "end": 8.52490234375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-hH8aD4", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 18, + "init": { + "kind": "Initialized", + "project": "c08", + "layer": "32d5aabb9e1e1af559be5be9ecc1bb666404ba563ff0da63af8b31e23ad764b9c5", + "root": "51148a52132e068ab0d8a91bbc7a4293a3b1c0b12a68921640b5256524e9bb41", + "store": "/var/lib/lfs527/lfs527-hH8aD4/store/store.sqlite" + }, + "setupMs": 135, + "cellBudgetMs": 89583, + "teardownMs": 13 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-hH8aD4/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-hH8aD4/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-hH8aD4/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwus4qkiyw-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.52490234375, + "grantedAt": "2026-10-31T20:28:01.780Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.83 + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.394, + "exec": { + "wallMs": 221.964, + "exitCode": 0, + "stdout": "LFS527 0 1793478481738869521 1793478481956682824\n", + "stderr": "", + "rc": 0, + "ms": 217.813303 + }, + "unmountMs": 11.607, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.879, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-hH8aD4/local/lfs527-vwus4qkiyw-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 227.193, + "exitCode": 0, + "stdout": "LFS527 0 1793478481981708251 1793478482205886051\n", + "stderr": "", + "rc": 0, + "ms": 224.1778 + }, + "commitMs": 317.613, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12cc52f8a949df55c2905f5a31031188a8c626a90afd967cdd960309874d916512", + "commit": { + "id": "12cc52f8a949df55c2905f5a31031188a8c626a90afd967cdd960309874d916512", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32d5aabb9e1e1af559be5be9ecc1bb666404ba563ff0da63af8b31e23ad764b9c5", + "root": "92b3fb9525e0c1a04633e96418caec682cbfbe9624d77a32fb0ca045d2f9abb3", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793478482474, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.557, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.934, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.591, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15.121, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.389, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 221.932, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 11.6, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.874, + "ok": true + }, + { + "name": "timed.exec", + "ms": 227.17, + "ok": true + }, + { + "name": "timed.commit", + "ms": 317.605, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.552, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.08, + "ok": true + }, + { + "name": "verify.identity", + "ms": 9.88, + "ok": true + }, + { + "name": "verify.exec", + "ms": 404.76, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.613, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.193, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d5aabb9e1e1af559be5be9ecc1bb666404ba563ff0da63af8b31e23ad764b9c5", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.92, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.52490234375, + "grantedAt": "2026-10-31T20:28:01.780Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.83 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.879, + "execWallMs": 227.193, + "commandMs": 224.1778, + "commitMs": 317.613, + "commitKind": "Committed", + "unmountMs": 10.557 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:28:02.822Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.52490234375, + "grantedAt": "2026-10-31T20:28:01.780Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.52490234375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C09-2026-10-31T202806375Z-wus8rr238b.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C09-2026-10-31T202806375Z-wus8rr238b.json new file mode 100644 index 000000000..5ae5433a5 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C09-2026-10-31T202806375Z-wus8rr238b.json @@ -0,0 +1,377 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-vwus932j4t-", + "startedAt": "2026-10-31T20:28:06.375Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.76, + "end": 8.40234375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-LpBh7d", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 26, + "init": { + "kind": "Initialized", + "project": "c09", + "layer": "3247e1691471dd7ae489f80d51a8a19f2c9f29b258e8e921cd3a47c665edac8d57", + "root": "1763768112ec1af3a1f12e3635414d818047b9925461d45f943dfab28aa9012e", + "store": "/var/lib/lfs527/lfs527-LpBh7d/store/store.sqlite" + }, + "setupMs": 158, + "cellBudgetMs": 89557, + "teardownMs": 13 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-LpBh7d/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-LpBh7d/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-LpBh7d/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwus932j4t-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.40234375, + "grantedAt": "2026-10-31T20:28:07.973Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.76 + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 262.078, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "126fee008e9c33ca4c8569a71fd3cebea7bcb73eeb032fd619d3ca3fb3e188ec43", + "commit": { + "id": "126fee008e9c33ca4c8569a71fd3cebea7bcb73eeb032fd619d3ca3fb3e188ec43", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3247e1691471dd7ae489f80d51a8a19f2c9f29b258e8e921cd3a47c665edac8d57", + "root": "c4594c072895818f360e2fcb9b7db384ee94d259d75ee6a833ce9d3ee5895fac", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793478487938, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 8.14, + "exec": { + "wallMs": 117.299, + "exitCode": 0, + "stdout": "LFS527 0 1793478488046897380 1793478488158035347\n", + "stderr": "", + "rc": 0, + "ms": 111.137967 + }, + "unmountMs": 4.472, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.088, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-LpBh7d/local/lfs527-vwus932j4t-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 81.9, + "exitCode": 0, + "stdout": "LFS527 0 1793478488177457957 1793478488255840722\n", + "stderr": "", + "rc": 0, + "ms": 78.382765 + }, + "commitMs": 0.611, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "126fee008e9c33ca4c8569a71fd3cebea7bcb73eeb032fd619d3ca3fb3e188ec43", + "root": "c4594c072895818f360e2fcb9b7db384ee94d259d75ee6a833ce9d3ee5895fac", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.327, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.219, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.654, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14.729, + "ok": true + }, + { + "name": "setup.mount", + "ms": 6.827, + "ok": true + }, + { + "name": "setup.exec", + "ms": 262.066, + "ok": true + }, + { + "name": "setup.commit", + "ms": 344.946, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 15.458, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.133, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 117.294, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.468, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.083, + "ok": true + }, + { + "name": "timed.exec", + "ms": 81.896, + "ok": true + }, + { + "name": "timed.commit", + "ms": 0.606, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.323, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.939, + "ok": true + }, + { + "name": "verify.identity", + "ms": 9.471, + "ok": true + }, + { + "name": "verify.exec", + "ms": 388.847, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.159, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 27.615, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3247e1691471dd7ae489f80d51a8a19f2c9f29b258e8e921cd3a47c665edac8d57", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 5.083, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.40234375, + "grantedAt": "2026-10-31T20:28:07.973Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.76 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.088, + "execWallMs": 81.9, + "commandMs": 78.382765, + "commitMs": 0.611, + "commitKind": "UpToDate", + "unmountMs": 4.327 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:28:08.541Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.40234375, + "grantedAt": "2026-10-31T20:28:07.973Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.40234375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C10-2026-10-31T202811681Z-wuscv5239m.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C10-2026-10-31T202811681Z-wuscv5239m.json new file mode 100644 index 000000000..a8ed8867d --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C10-2026-10-31T202811681Z-wuscv5239m.json @@ -0,0 +1,396 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-vwusd37jat-", + "startedAt": "2026-10-31T20:28:11.681Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.86, + "end": 8.19287109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-68rV3C", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 18, + "init": { + "kind": "Initialized", + "project": "c10", + "layer": "32ae360aa9af98ffdbc7451b747ec5d12e40d07b6b7811a151ba44ecaeba8c553f", + "root": "760d61f75fc26a92e643c7b5e5d18302cd9d0ce954a0730d84b9f3f4b91346ce", + "store": "/var/lib/lfs527/lfs527-68rV3C/store/store.sqlite" + }, + "setupMs": 141, + "cellBudgetMs": 89598, + "teardownMs": 15 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-68rV3C/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-68rV3C/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-68rV3C/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwusd37jat-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.2099609375, + "grantedAt": "2026-10-31T20:28:13.211Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.86 + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 194.187, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e9f3da1f02395a5976148274e2a039e28ec882b8b4edc72bf96de0b5c9ffe252", + "commit": { + "id": "12e9f3da1f02395a5976148274e2a039e28ec882b8b4edc72bf96de0b5c9ffe252", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32ae360aa9af98ffdbc7451b747ec5d12e40d07b6b7811a151ba44ecaeba8c553f", + "root": "5b898c28440123f73db3a1cf67346071d20988999383d0b6107a4b3e51d9e29e", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793478493000, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.217, + "exec": { + "wallMs": 321.877, + "exitCode": 0, + "stdout": "LFS527 0 1793478493069466247 1793478493387918172\n", + "stderr": "", + "rc": 0, + "ms": 318.451925 + }, + "unmountMs": 12.587, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.32, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-68rV3C/local/lfs527-vwusd37jat-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 292.327, + "exitCode": 0, + "stdout": "LFS527 0 1793478493415136433 1793478493703950389\n", + "stderr": "", + "rc": 0, + "ms": 288.813956 + }, + "commitMs": 56.667, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "127b0d3f073c396ffbc0784c7622bf73e210f00efac33193162b9a4552ce6d8792", + "commit": { + "id": "127b0d3f073c396ffbc0784c7622bf73e210f00efac33193162b9a4552ce6d8792", + "branch": null, + "parent": "12e9f3da1f02395a5976148274e2a039e28ec882b8b4edc72bf96de0b5c9ffe252", + "secondParent": null, + "base": "32ae360aa9af98ffdbc7451b747ec5d12e40d07b6b7811a151ba44ecaeba8c553f", + "root": "0f11845dd3b32dc8d1c2ea11763fe7c15fbedbc7c3a708d1a8362d6bf003bcd8", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793478493706, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 13.303, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.063, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.415, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14.575, + "ok": true + }, + { + "name": "setup.mount", + "ms": 5.435, + "ok": true + }, + { + "name": "setup.exec", + "ms": 194.176, + "ok": true + }, + { + "name": "setup.commit", + "ms": 321.388, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 10.759, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.213, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 321.872, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.581, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.316, + "ok": true + }, + { + "name": "timed.exec", + "ms": 292.321, + "ok": true + }, + { + "name": "timed.commit", + "ms": 56.66, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 13.296, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.049, + "ok": true + }, + { + "name": "verify.identity", + "ms": 9.425, + "ok": true + }, + { + "name": "verify.exec", + "ms": 911.25, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.431, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.704, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32ae360aa9af98ffdbc7451b747ec5d12e40d07b6b7811a151ba44ecaeba8c553f", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.631, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.2099609375, + "grantedAt": "2026-10-31T20:28:13.211Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.86 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.32, + "execWallMs": 292.327, + "commandMs": 288.813956, + "commitMs": 56.667, + "commitKind": "Committed", + "unmountMs": 13.303 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:28:14.578Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.2099609375, + "grantedAt": "2026-10-31T20:28:13.211Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.2099609375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C11-2026-10-31T202817953Z-wushpd23ey.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C11-2026-10-31T202817953Z-wushpd23ey.json new file mode 100644 index 000000000..424cb3ea0 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C11-2026-10-31T202817953Z-wushpd23ey.json @@ -0,0 +1,377 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-vwushxqjgy-", + "startedAt": "2026-10-31T20:28:17.953Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.03, + "end": 8.17724609375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-K7fNwq", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 20, + "init": { + "kind": "Initialized", + "project": "c11", + "layer": "32751092c1579df6d3a1e2b766e2f46f55c53951186077336f555e94e3d8543b66", + "root": "2e95f3ed984d5e47e68da6874946c1f5063975f809ec6340f7882f9d67a3f390", + "store": "/var/lib/lfs527/lfs527-K7fNwq/store/store.sqlite" + }, + "setupMs": 156, + "cellBudgetMs": 89506, + "teardownMs": 17 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-K7fNwq/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-K7fNwq/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-K7fNwq/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwushxqjgy-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.17724609375, + "grantedAt": "2026-10-31T20:28:19.366Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.03 + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 187.138, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e08fa2b0d96a3cd814ddb48f4bcf39747e4668cbe9303159ee4d4f9a56842896", + "commit": { + "id": "12e08fa2b0d96a3cd814ddb48f4bcf39747e4668cbe9303159ee4d4f9a56842896", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32751092c1579df6d3a1e2b766e2f46f55c53951186077336f555e94e3d8543b66", + "root": "144ade795b3bb366af1915bbf2b31fcf61a656320436d81bd67409fdd6c844ad", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793478499363, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.086, + "exec": { + "wallMs": 119.358, + "exitCode": 0, + "stdout": "LFS527 0 1793478499429646654 1793478499546188203\n", + "stderr": "", + "rc": 0, + "ms": 116.541549 + }, + "unmountMs": 10.052, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.012, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-K7fNwq/local/lfs527-vwushxqjgy-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 120.389, + "exitCode": 0, + "stdout": "LFS527 0 1793478499568455843 1793478499686150743\n", + "stderr": "", + "rc": 0, + "ms": 117.6949 + }, + "commitMs": 142.839, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12e08fa2b0d96a3cd814ddb48f4bcf39747e4668cbe9303159ee4d4f9a56842896", + "root": "144ade795b3bb366af1915bbf2b31fcf61a656320436d81bd67409fdd6c844ad", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 9.91, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.615, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.465, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14.031, + "ok": true + }, + { + "name": "setup.mount", + "ms": 5.192, + "ok": true + }, + { + "name": "setup.exec", + "ms": 187.128, + "ok": true + }, + { + "name": "setup.commit", + "ms": 312.637, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 10.133, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.082, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 119.353, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.048, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.008, + "ok": true + }, + { + "name": "timed.exec", + "ms": 120.384, + "ok": true + }, + { + "name": "timed.commit", + "ms": 142.833, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 9.906, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.865, + "ok": true + }, + { + "name": "verify.identity", + "ms": 7.918, + "ok": true + }, + { + "name": "verify.exec", + "ms": 321.191, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.567, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.85, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32751092c1579df6d3a1e2b766e2f46f55c53951186077336f555e94e3d8543b66", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.291, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.17724609375, + "grantedAt": "2026-10-31T20:28:19.366Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.03 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.012, + "execWallMs": 120.389, + "commandMs": 117.6949, + "commitMs": 142.839, + "commitKind": "UpToDate", + "unmountMs": 9.91 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:28:20.059Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.17724609375, + "grantedAt": "2026-10-31T20:28:19.366Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.19287109375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C12-2026-10-31T202823329Z-wuslup23i8.json b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C12-2026-10-31T202823329Z-wuslup23i8.json new file mode 100644 index 000000000..97c08c546 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/linux-native-C12-2026-10-31T202823329Z-wuslup23i8.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-vwusm5jjmz-", + "startedAt": "2026-10-31T20:28:23.329Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.95, + "end": 7.92236328125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-S37qNM", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 22, + "init": { + "kind": "Initialized", + "project": "c12", + "layer": "3274c1deab94666127f35f7229599f848628de8abc56780a24c0b6eea7d5c288cf", + "root": "0e3503b41fcba66ae038607447e24edeebab7e9889ad80ca4c147c120d300783", + "store": "/var/lib/lfs527/lfs527-S37qNM/store/store.sqlite" + }, + "setupMs": 141, + "cellBudgetMs": 89620, + "teardownMs": 13 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-S37qNM/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-S37qNM/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-S37qNM/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwusm5jjmz-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.92236328125, + "grantedAt": "2026-10-31T20:28:24.341Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.95 + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 4.751, + "exec": { + "wallMs": 271.905, + "exitCode": 0, + "stdout": "LFS527 0 1793478504261599792 1793478504529747703\n", + "stderr": "", + "rc": 0, + "ms": 268.147911 + }, + "unmountMs": 1.954, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.109, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-S37qNM/local/lfs527-vwusm5jjmz-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 281.314, + "exitCode": 0, + "stdout": "LFS527 0 1793478504543492784 1793478504821847803\n", + "stderr": "", + "rc": 0, + "ms": 278.355019 + }, + "commitMs": 46.105, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1231ae32b7b9a3dd03e5716003329ac75e40265a32ce33330b194a1827d3a817a2", + "commit": { + "id": "1231ae32b7b9a3dd03e5716003329ac75e40265a32ce33330b194a1827d3a817a2", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3274c1deab94666127f35f7229599f848628de8abc56780a24c0b6eea7d5c288cf", + "root": "fada391a18f17e6ba9ca6b70a061abc850f3b2d9c083cdca15ceca5d4440ac30", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793478504865, + "logical": 38413, + "newCanonical": 82507, + "newStored": 27788, + "newMetadata": 6453, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.889, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.294, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.547, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15.04, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.748, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 271.895, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 1.949, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.106, + "ok": true + }, + { + "name": "timed.exec", + "ms": 281.307, + "ok": true + }, + { + "name": "timed.commit", + "ms": 46.1, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.884, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.731, + "ok": true + }, + { + "name": "verify.identity", + "ms": 9.685, + "ok": true + }, + { + "name": "verify.exec", + "ms": 130.79, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 1.917, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.376, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3274c1deab94666127f35f7229599f848628de8abc56780a24c0b6eea7d5c288cf", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.581, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.92236328125, + "grantedAt": "2026-10-31T20:28:24.341Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.95 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.109, + "execWallMs": 281.314, + "commandMs": 278.355019, + "commitMs": 46.105, + "commitKind": "Committed", + "unmountMs": 2.889 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:28:24.885Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.92236328125, + "grantedAt": "2026-10-31T20:28:24.341Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.17724609375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-a266423340453927" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C01-2026-10-31T202525829Z-wuosw51svs.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C01-2026-10-31T202525829Z-wuosw51svs.json new file mode 100644 index 000000000..e85ce21ef --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C01-2026-10-31T202525829Z-wuosw51svs.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wuosw51svs-", + "startedAt": "2026-10-31T20:25:25.829Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 3.23291015625, + "end": 4.0146484375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-mc6qMy", + "initMs": 1119, + "volume": "lfs527-wuosw51svs-c01-store-mvwuosxo", + "setupMs": 1173, + "cellBudgetMs": 93799, + "teardownMs": 326 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-wuosw51svs-c01-store-mvwuosxo" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wuosw51svs-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-mc6qMy/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wuosw51svs-c01-store-mvwuosxo", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wuosw51svs-c01-store-mvwuosxo/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuosw51svs-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-mc6qMy/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 102, + "load1": 3.23291015625, + "grantedAt": "2026-10-31T20:25:27.925Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 14.418, + "exec": { + "wallMs": 396.547, + "exitCode": 0, + "stdout": "LFS527 0 1793478327472543587 1793478327811054046\n", + "stderr": "", + "rc": 0, + "ms": 338.510459 + }, + "unmountMs": 6.918, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.967, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 380.668, + "exitCode": 0, + "stdout": "LFS527 0 1793478327972910087 1793478328311577629\n", + "stderr": "", + "rc": 0, + "ms": 338.667542 + }, + "commitMs": 118.179, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12944ec98c0ea1c866e92d7c26cf2ffb07a51ad235ffd4be580e36729888683c9f", + "commit": { + "id": "12944ec98c0ea1c866e92d7c26cf2ffb07a51ad235ffd4be580e36729888683c9f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32df9c92f1db6482f517abb6cc1ad0e7b70dae26d2c180722566cb34ad9e84e577", + "root": "23699f8d86271d5306292a8c6b1ff204e0096951dcdd6a9ae44bfa9b5df4b6d5", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793478328422, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.779, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.011, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.976, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 309.977, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 14.414, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 396.543, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 6.915, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.964, + "ok": true + }, + { + "name": "timed.exec", + "ms": 380.663, + "ok": true + }, + { + "name": "timed.commit", + "ms": 118.176, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.776, + "ok": true + }, + { + "name": "verify.mount", + "ms": 9.458, + "ok": true + }, + { + "name": "verify.identity", + "ms": 59.879, + "ok": true + }, + { + "name": "verify.exec", + "ms": 454.733, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.601, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 240.023, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32df9c92f1db6482f517abb6cc1ad0e7b70dae26d2c180722566cb34ad9e84e577", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 102.312, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 102, + "load1": 3.23291015625, + "grantedAt": "2026-10-31T20:25:27.925Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.967, + "execWallMs": 380.668, + "commandMs": 338.667542, + "commitMs": 118.179, + "commitKind": "Committed", + "unmountMs": 7.779 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:29.545Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C02-2026-10-31T202532635Z-wuoy571tbn.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C02-2026-10-31T202532635Z-wuoy571tbn.json new file mode 100644 index 000000000..fa007c067 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C02-2026-10-31T202532635Z-wuoy571tbn.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wuoy571tbn-", + "startedAt": "2026-10-31T20:25:32.635Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 4.0146484375, + "end": 5.89208984375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-jC6OTT", + "initMs": 1323, + "volume": "lfs527-wuoy571tbn-c02-store-mvwuoy6t", + "setupMs": 1379, + "cellBudgetMs": 93594, + "teardownMs": 382 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-wuoy571tbn-c02-store-mvwuoy6t" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wuoy571tbn-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-jC6OTT/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wuoy571tbn-c02-store-mvwuoy6t", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wuoy571tbn-c02-store-mvwuoy6t/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuoy571tbn-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-jC6OTT/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 5.53466796875, + "grantedAt": "2026-10-31T20:25:35.974Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 15.202, + "exec": { + "wallMs": 1331.181, + "exitCode": 0, + "stdout": "LFS527 0 1793478334676000924 1793478335957606675\n", + "stderr": "", + "rc": 0, + "ms": 1281.605751 + }, + "unmountMs": 8.704, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 11.349, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 1210.907, + "exitCode": 0, + "stdout": "LFS527 0 1793478336025223425 1793478337190826133\n", + "stderr": "", + "rc": 0, + "ms": 1165.602708 + }, + "commitMs": 151.559, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12ada164980ab8b5fcdd8de223d17440026c388c061907a3963158ad6d93c53af6", + "commit": { + "id": "12ada164980ab8b5fcdd8de223d17440026c388c061907a3963158ad6d93c53af6", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3212871a59b0d752817f6b832295b60ba7561db252686e0c6efe5740f46292c197", + "root": "4a628be0454ff3c642c5c5cb19b44342dde0766db81de6e9eeaa75de0859da07", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793478337335, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18608, + "newMetadata": 9683, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.485, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.438, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.294, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 511.676, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 15.197, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1331.171, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.701, + "ok": true + }, + { + "name": "timed.mount", + "ms": 11.346, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1210.903, + "ok": true + }, + { + "name": "timed.commit", + "ms": 151.555, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.482, + "ok": true + }, + { + "name": "verify.mount", + "ms": 10.869, + "ok": true + }, + { + "name": "verify.identity", + "ms": 55.075, + "ok": true + }, + { + "name": "verify.exec", + "ms": 656.29, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 17.17, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 354.083, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3212871a59b0d752817f6b832295b60ba7561db252686e0c6efe5740f46292c197", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.265, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 5.53466796875, + "grantedAt": "2026-10-31T20:25:35.974Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 11.349, + "execWallMs": 1210.907, + "commandMs": 1165.602708, + "commitMs": 151.559, + "commitKind": "Committed", + "unmountMs": 8.485 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:38.841Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C03-2026-10-31T202542052Z-wup5es1u7w.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C03-2026-10-31T202542052Z-wup5es1u7w.json new file mode 100644 index 000000000..d7aa2c52e --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C03-2026-10-31T202542052Z-wup5es1u7w.json @@ -0,0 +1,293 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wup5es1u7w-", + "startedAt": "2026-10-31T20:25:42.052Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 5.89208984375, + "end": 6.1962890625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-zLZCBB", + "initMs": 1216, + "volume": "lfs527-wup5es1u7w-c03-store-mvwup5ga", + "setupMs": 1267, + "cellBudgetMs": 93699, + "teardownMs": 316 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-wup5es1u7w-c03-store-mvwup5ga" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wup5es1u7w-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-zLZCBB/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wup5es1u7w-c03-store-mvwup5ga", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wup5es1u7w-c03-store-mvwup5ga/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wup5es1u7w-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-zLZCBB/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 5481, + "load1": 6.1962890625, + "grantedAt": "2026-10-31T20:25:50.005Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 14.879, + "exec": { + "wallMs": 723.549, + "exitCode": 0, + "stdout": "LFS527 0 1793478343833665178 1793478344509540845\n", + "stderr": "", + "rc": 0, + "ms": 675.875667 + }, + "unmountMs": 7.978, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 9.876, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 667.781, + "exitCode": 0, + "stdout": "LFS527 0 1793478350044322375 1793478350676259126\n", + "stderr": "", + "rc": 0, + "ms": 631.936751 + }, + "commitMs": 15.278, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "2644a16eab1fbd3347c6a451b267efc1213a88b96271697e05b1adb7b1ee3caa", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 6.396, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.298, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.229, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 355.056, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 14.874, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 723.544, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 7.974, + "ok": true + }, + { + "name": "timed.mount", + "ms": 9.873, + "ok": true + }, + { + "name": "timed.exec", + "ms": 667.778, + "ok": true + }, + { + "name": "timed.commit", + "ms": 15.275, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 6.394, + "ok": true + }, + { + "name": "verify.mount", + "ms": 14.927, + "ok": true + }, + { + "name": "verify.identity", + "ms": 58.935, + "ok": true + }, + { + "name": "verify.exec", + "ms": 54.699, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 13.458, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 272.73, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3283dddc79a79e2abb48c636281039f7b08d9b1465c77202961045e4684ef380c1", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 5482.559, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 5481, + "load1": 6.1962890625, + "grantedAt": "2026-10-31T20:25:50.005Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 9.876, + "execWallMs": 667.781, + "commandMs": 631.936751, + "commitMs": 15.278, + "commitKind": "UpToDate", + "unmountMs": 6.396 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:51.442Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C04-2026-10-31T202554711Z-wupf6f1va2.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C04-2026-10-31T202554711Z-wupf6f1va2.json new file mode 100644 index 000000000..a844a8f9c --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C04-2026-10-31T202554711Z-wupf6f1va2.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wupf6f1va2-", + "startedAt": "2026-10-31T20:25:54.711Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.30126953125, + "end": 6.95654296875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-xXPmjM", + "initMs": 1039, + "volume": "lfs527-wupf6f1va2-c04-store-mvwupf7x", + "setupMs": 1090, + "cellBudgetMs": 93880, + "teardownMs": 302 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-wupf6f1va2-c04-store-mvwupf7x" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wupf6f1va2-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-xXPmjM/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wupf6f1va2-c04-store-mvwupf7x", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wupf6f1va2-c04-store-mvwupf7x/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wupf6f1va2-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-xXPmjM/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 712, + "load1": 7.30126953125, + "grantedAt": "2026-10-31T20:25:57.940Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 18.752, + "exec": { + "wallMs": 976.776, + "exitCode": 0, + "stdout": "LFS527 0 1793478356274762503 1793478357213327087\n", + "stderr": "", + "rc": 0, + "ms": 938.564584 + }, + "unmountMs": 8.381, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 15.447, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 838.87, + "exitCode": 0, + "stdout": "LFS527 0 1793478357999350754 1793478358789710796\n", + "stderr": "", + "rc": 0, + "ms": 790.360042 + }, + "commitMs": 119.453, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12b0d0ead92aa9a7413d30895544cf4a73549eadfae21b282be89cc32c34f081ba", + "commit": { + "id": "12b0d0ead92aa9a7413d30895544cf4a73549eadfae21b282be89cc32c34f081ba", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3286c924371e26d946b03ec19c5871d4f7e843551b1102e8cf24635a5b5bb2bc78", + "root": "d40f6e010510c291c92714393e881952c7a0e3fe974c3038177434317d50b6e2", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793478358904, + "logical": 0, + "newCanonical": 109367, + "newStored": 8269, + "newMetadata": 8269, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.471, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.914, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.883, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 330.308, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 18.748, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 976.771, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.378, + "ok": true + }, + { + "name": "timed.mount", + "ms": 15.444, + "ok": true + }, + { + "name": "timed.exec", + "ms": 838.867, + "ok": true + }, + { + "name": "timed.commit", + "ms": 119.45, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.468, + "ok": true + }, + { + "name": "verify.mount", + "ms": 9.559, + "ok": true + }, + { + "name": "verify.identity", + "ms": 43.07, + "ok": true + }, + { + "name": "verify.exec", + "ms": 250.545, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.892, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 270.966, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3286c924371e26d946b03ec19c5871d4f7e843551b1102e8cf24635a5b5bb2bc78", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 712.946, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 712, + "load1": 7.30126953125, + "grantedAt": "2026-10-31T20:25:57.940Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 15.447, + "execWallMs": 838.87, + "commandMs": 790.360042, + "commitMs": 119.453, + "commitKind": "Committed", + "unmountMs": 7.471 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:59.807Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C05-2026-10-31T202603112Z-wuplns1wfz.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C05-2026-10-31T202603112Z-wuplns1wfz.json new file mode 100644 index 000000000..a78ad8b03 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C05-2026-10-31T202603112Z-wuplns1wfz.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wuplns1wfz-", + "startedAt": "2026-10-31T20:26:03.112Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.95654296875, + "end": 8.013671875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-aZ4L0O", + "initMs": 1216, + "volume": "lfs527-wuplns1wfz-c05-store-mvwuplpf", + "setupMs": 1272, + "cellBudgetMs": 93692, + "teardownMs": 352 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-wuplns1wfz-c05-store-mvwuplpf" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wuplns1wfz-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-aZ4L0O/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wuplns1wfz-c05-store-mvwuplpf", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wuplns1wfz-c05-store-mvwuplpf/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuplns1wfz-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-aZ4L0O/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3943, + "load1": 8.013671875, + "grantedAt": "2026-10-31T20:26:10.229Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 18.67, + "exec": { + "wallMs": 1386.215, + "exitCode": 0, + "stdout": "LFS527 0 1793478364919181632 1793478366260166258\n", + "stderr": "", + "rc": 0, + "ms": 1340.984626 + }, + "unmountMs": 14.051, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 17.194, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 1258.455, + "exitCode": 0, + "stdout": "LFS527 0 1793478370305680052 1793478371495864052\n", + "stderr": "", + "rc": 0, + "ms": 1190.184 + }, + "commitMs": 193.086, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12d6af06239ad2199b812d9557eb7d84231efa3b3782789a631117d56ab9dfa713", + "commit": { + "id": "12d6af06239ad2199b812d9557eb7d84231efa3b3782789a631117d56ab9dfa713", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3243d41c8216f3f7910902c6a892113ac186adbbae0639998fcb1d06f81ffafb74", + "root": "8d42e532ee1ff6338bf68acf45ccf38cb1a074090d53c7f564d66ae97b34bceb", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793478371687, + "logical": 0, + "newCanonical": 109367, + "newStored": 8263, + "newMetadata": 8263, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 107.242, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.941, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.386, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 378.244, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 18.665, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1386.203, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 14.047, + "ok": true + }, + { + "name": "timed.mount", + "ms": 17.191, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1258.451, + "ok": true + }, + { + "name": "timed.commit", + "ms": 193.083, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 107.238, + "ok": true + }, + { + "name": "verify.mount", + "ms": 28.181, + "ok": true + }, + { + "name": "verify.identity", + "ms": 111.778, + "ok": true + }, + { + "name": "verify.exec", + "ms": 391.038, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.876, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 269.136, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3243d41c8216f3f7910902c6a892113ac186adbbae0639998fcb1d06f81ffafb74", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 3944.1, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3943, + "load1": 8.013671875, + "grantedAt": "2026-10-31T20:26:10.229Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 17.194, + "execWallMs": 1258.455, + "commandMs": 1190.184, + "commitMs": 193.086, + "commitKind": "Committed", + "unmountMs": 107.242 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:12.972Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C06-2026-10-31T202616123Z-wupvp71ybs.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C06-2026-10-31T202616123Z-wupvp71ybs.json new file mode 100644 index 000000000..9b1e02f2f --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C06-2026-10-31T202616123Z-wupvp71ybs.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wupvp71ybs-", + "startedAt": "2026-10-31T20:26:16.123Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.25244140625, + "end": 8.63232421875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-3BJ0po", + "initMs": 1220, + "volume": "lfs527-wupvp71ybs-c06-store-mvwupvqr", + "setupMs": 1270, + "cellBudgetMs": 93700, + "teardownMs": 315 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-wupvp71ybs-c06-store-mvwupvqr" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wupvp71ybs-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-3BJ0po/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wupvp71ybs-c06-store-mvwupvqr", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wupvp71ybs-c06-store-mvwupvqr/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wupvp71ybs-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-3BJ0po/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.25244140625, + "grantedAt": "2026-10-31T20:26:18.239Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 15.756, + "exec": { + "wallMs": 354.645, + "exitCode": 0, + "stdout": "LFS527 0 1793478377901799847 1793478378218013597\n", + "stderr": "", + "rc": 0, + "ms": 316.21375 + }, + "unmountMs": 15.059, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 9.406, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 263.907, + "exitCode": 0, + "stdout": "LFS527 0 1793478378283080180 1793478378508024250\n", + "stderr": "", + "rc": 0, + "ms": 224.94407 + }, + "commitMs": 354.487, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12ddc16bf56cca0175f76685d52438a8629e600b7ec0aaa6129af5efbe4060a244", + "commit": { + "id": "12ddc16bf56cca0175f76685d52438a8629e600b7ec0aaa6129af5efbe4060a244", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32f4fbe159749a4b1a5738fd3989f48c708b165331af075cc9312f4b12bbaefa70", + "root": "29c9b14a028012be7a28bebe2f9fb61dbe7d35c6aba8c75e927037c9a76e1b53", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793478378806, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 14.774, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.625, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.483, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 357.067, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 15.751, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 354.638, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 15.056, + "ok": true + }, + { + "name": "timed.mount", + "ms": 9.403, + "ok": true + }, + { + "name": "timed.exec", + "ms": 263.903, + "ok": true + }, + { + "name": "timed.commit", + "ms": 354.484, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 14.77, + "ok": true + }, + { + "name": "verify.mount", + "ms": 8.918, + "ok": true + }, + { + "name": "verify.identity", + "ms": 52.019, + "ok": true + }, + { + "name": "verify.exec", + "ms": 303.528, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.66, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 237.15, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32f4fbe159749a4b1a5738fd3989f48c708b165331af075cc9312f4b12bbaefa70", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.395, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.25244140625, + "grantedAt": "2026-10-31T20:26:18.239Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 9.406, + "execWallMs": 263.907, + "commandMs": 224.94407, + "commitMs": 354.487, + "commitKind": "Committed", + "unmountMs": 14.774 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:19.813Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C07-2026-10-31T202623542Z-wuq1fa1zwl.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C07-2026-10-31T202623542Z-wuq1fa1zwl.json new file mode 100644 index 000000000..0b15fd838 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C07-2026-10-31T202623542Z-wuq1fa1zwl.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wuq1fa1zwl-", + "startedAt": "2026-10-31T20:26:23.542Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.63232421875, + "end": 9.21044921875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-Q5GMw3", + "initMs": 1320, + "volume": "lfs527-wuq1fa1zwl-c07-store-mvwuq1gt", + "setupMs": 1373, + "cellBudgetMs": 93598, + "teardownMs": 344 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-wuq1fa1zwl-c07-store-mvwuq1gt" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wuq1fa1zwl-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-Q5GMw3/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wuq1fa1zwl-c07-store-mvwuq1gt", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wuq1fa1zwl-c07-store-mvwuq1gt/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuq1fa1zwl-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-Q5GMw3/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3965, + "load1": 9.21044921875, + "grantedAt": "2026-10-31T20:26:29.947Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 16.799, + "exec": { + "wallMs": 580.571, + "exitCode": 0, + "stdout": "LFS527 0 1793478385419741669 1793478385952446961\n", + "stderr": "", + "rc": 0, + "ms": 532.705292 + }, + "unmountMs": 23.131, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 27.835, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 926.31, + "exitCode": 0, + "stdout": "LFS527 0 1793478390072658005 1793478390895164922\n", + "stderr": "", + "rc": 0, + "ms": 822.506917 + }, + "commitMs": 708.08, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "120ea5b6384e3f75ae7c74cb5d3f6837a8eb43ce14198e68a31ddfa281c86ec41d", + "commit": { + "id": "120ea5b6384e3f75ae7c74cb5d3f6837a8eb43ce14198e68a31ddfa281c86ec41d", + "branch": null, + "parent": null, + "secondParent": null, + "base": "326d48c3950787b6c2144d8110e82d1b96ef62ffbb01054558d6f0ff3ea977a7af", + "root": "c161cba10c3f63c35edaca3ec4279a210ef34277c25ed94949ba00c42f7092e5", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793478391495, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 25.858, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.325, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.246, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 344.122, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 16.793, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 580.562, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 23.128, + "ok": true + }, + { + "name": "timed.mount", + "ms": 27.832, + "ok": true + }, + { + "name": "timed.exec", + "ms": 926.304, + "ok": true + }, + { + "name": "timed.commit", + "ms": 708.077, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 25.855, + "ok": true + }, + { + "name": "verify.mount", + "ms": 11.279, + "ok": true + }, + { + "name": "verify.identity", + "ms": 67.243, + "ok": true + }, + { + "name": "verify.exec", + "ms": 435.07, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 12.117, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 293.018, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "326d48c3950787b6c2144d8110e82d1b96ef62ffbb01054558d6f0ff3ea977a7af", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 3966.715, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3965, + "load1": 9.21044921875, + "grantedAt": "2026-10-31T20:26:29.947Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 27.835, + "execWallMs": 926.31, + "commandMs": 822.506917, + "commitMs": 708.08, + "commitKind": "Committed", + "unmountMs": 25.858 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:32.803Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C08-2026-10-31T202636079Z-wuqb3j20yr.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C08-2026-10-31T202636079Z-wuqb3j20yr.json new file mode 100644 index 000000000..963705192 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C08-2026-10-31T202636079Z-wuqb3j20yr.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wuqb3j20yr-", + "startedAt": "2026-10-31T20:26:36.079Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.79296875, + "end": 9.44970703125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-QwcPku", + "initMs": 1517, + "volume": "lfs527-wuqb3j20yr-c08-store-mvwuqb50", + "setupMs": 1568, + "cellBudgetMs": 93403, + "teardownMs": 323 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-wuqb3j20yr-c08-store-mvwuqb50" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wuqb3j20yr-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-QwcPku/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wuqb3j20yr-c08-store-mvwuqb50", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wuqb3j20yr-c08-store-mvwuqb50/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqb3j20yr-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-QwcPku/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.79296875, + "grantedAt": "2026-10-31T20:26:38.526Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 17.982, + "exec": { + "wallMs": 320.463, + "exitCode": 0, + "stdout": "LFS527 0 1793478398247045301 1793478398514710551\n", + "stderr": "", + "rc": 0, + "ms": 267.66525 + }, + "unmountMs": 19.104, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 17.055, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 301.578, + "exitCode": 0, + "stdout": "LFS527 0 1793478398598704342 1793478398851682759\n", + "stderr": "", + "rc": 0, + "ms": 252.978417 + }, + "commitMs": 347.352, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e03a6a022d0558a7bffe6bb6e9c5525c1a90bcf8b2bfd516177cf2db553c3ba1", + "commit": { + "id": "12e03a6a022d0558a7bffe6bb6e9c5525c1a90bcf8b2bfd516177cf2db553c3ba1", + "branch": null, + "parent": null, + "secondParent": null, + "base": "326ae6c5b63102cf796d2772b59a50f33c313ccdbc1f121cb3e93cd979b3f529b6", + "root": "90448bf69cb4fdcd0d841529fb64745260a5c81313628d39c7c6044f1cf12a16", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793478399146, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 16.53, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.35, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.495, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 430.423, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 17.978, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 320.457, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 19.099, + "ok": true + }, + { + "name": "timed.mount", + "ms": 17.052, + "ok": true + }, + { + "name": "timed.exec", + "ms": 301.574, + "ok": true + }, + { + "name": "timed.commit", + "ms": 347.347, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 16.527, + "ok": true + }, + { + "name": "verify.mount", + "ms": 12.018, + "ok": true + }, + { + "name": "verify.identity", + "ms": 52.117, + "ok": true + }, + { + "name": "verify.exec", + "ms": 314.729, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.423, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 307.651, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "326ae6c5b63102cf796d2772b59a50f33c313ccdbc1f121cb3e93cd979b3f529b6", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.163, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.79296875, + "grantedAt": "2026-10-31T20:26:38.526Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 17.055, + "execWallMs": 301.578, + "commandMs": 252.978417, + "commitMs": 347.352, + "commitKind": "Committed", + "unmountMs": 16.53 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:40.232Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C09-2026-10-31T202643484Z-wuqgt8217m.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C09-2026-10-31T202643484Z-wuqgt8217m.json new file mode 100644 index 000000000..13d17144e --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C09-2026-10-31T202643484Z-wuqgt8217m.json @@ -0,0 +1,354 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wuqgt8217m-", + "startedAt": "2026-10-31T20:26:43.484Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.44970703125, + "end": 9.89404296875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-Owytyb", + "initMs": 1725, + "volume": "lfs527-wuqgt8217m-c09-store-mvwuqgwe", + "setupMs": 1837, + "cellBudgetMs": 93133, + "teardownMs": 388 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-wuqgt8217m-c09-store-mvwuqgwe" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wuqgt8217m-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-Owytyb/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wuqgt8217m-c09-store-mvwuqgwe", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wuqgt8217m-c09-store-mvwuqgwe/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqgt8217m-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-Owytyb/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.89404296875, + "grantedAt": "2026-10-31T20:26:47.189Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 462.084, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1282da6c5d8f79e67a74625b8eac0cd3efe01116ea377d71dd43aa8b1b50ea807f", + "commit": { + "id": "1282da6c5d8f79e67a74625b8eac0cd3efe01116ea377d71dd43aa8b1b50ea807f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32fe264298c859d482bd253d5237f10234bae35b12a73deb3bc56ef6ddd6486f1e", + "root": "dc328035ede412c65738940c95a010d337387f0d4efc0fdf3694bf7150f466e6", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793478406961, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 750, + "newMetadata": 674, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 16.807, + "exec": { + "wallMs": 136.433, + "exitCode": 0, + "stdout": "LFS527 0 1793478407119910138 1793478407196781222\n", + "stderr": "", + "rc": 0, + "ms": 76.871084 + }, + "unmountMs": 11.872, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 14.709, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 128.422, + "exitCode": 0, + "stdout": "LFS527 0 1793478407279045055 1793478407352804847\n", + "stderr": "", + "rc": 0, + "ms": 73.759792 + }, + "commitMs": 3.287, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "1282da6c5d8f79e67a74625b8eac0cd3efe01116ea377d71dd43aa8b1b50ea807f", + "root": "dc328035ede412c65738940c95a010d337387f0d4efc0fdf3694bf7150f466e6", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.891, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.421, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.232, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 584.907, + "ok": true + }, + { + "name": "setup.mount", + "ms": 39.599, + "ok": true + }, + { + "name": "setup.exec", + "ms": 462.079, + "ok": true + }, + { + "name": "setup.commit", + "ms": 418.674, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 20.108, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 16.804, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 136.426, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 11.868, + "ok": true + }, + { + "name": "timed.mount", + "ms": 14.706, + "ok": true + }, + { + "name": "timed.exec", + "ms": 128.418, + "ok": true + }, + { + "name": "timed.commit", + "ms": 3.284, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.888, + "ok": true + }, + { + "name": "verify.mount", + "ms": 10.757, + "ok": true + }, + { + "name": "verify.identity", + "ms": 50.179, + "ok": true + }, + { + "name": "verify.exec", + "ms": 341.679, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 12.059, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 290.415, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32fe264298c859d482bd253d5237f10234bae35b12a73deb3bc56ef6ddd6486f1e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.315, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.89404296875, + "grantedAt": "2026-10-31T20:26:47.189Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 14.709, + "execWallMs": 128.422, + "commandMs": 73.759792, + "commitMs": 3.287, + "commitKind": "UpToDate", + "unmountMs": 10.891 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:48.444Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C10-2026-10-31T202651748Z-wuqn6s21he.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C10-2026-10-31T202651748Z-wuqn6s21he.json new file mode 100644 index 000000000..68509a32e --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C10-2026-10-31T202651748Z-wuqn6s21he.json @@ -0,0 +1,373 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wuqn6s21he-", + "startedAt": "2026-10-31T20:26:51.748Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.0625, + "end": 10.13720703125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-nIh5jt", + "initMs": 1422, + "volume": "lfs527-wuqn6s21he-c10-store-mvwuqn88", + "setupMs": 1473, + "cellBudgetMs": 93498, + "teardownMs": 307 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-wuqn6s21he-c10-store-mvwuqn88" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wuqn6s21he-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-nIh5jt/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wuqn6s21he-c10-store-mvwuqn88", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wuqn6s21he-c10-store-mvwuqn88/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqn6s21he-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-nIh5jt/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 204, + "load1": 10.13720703125, + "grantedAt": "2026-10-31T20:26:55.052Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 327.955, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "120e0c019f3318cfb0b40d3b37a89011b2281cd24bd3509ece1c07bfecb0a64b57", + "commit": { + "id": "120e0c019f3318cfb0b40d3b37a89011b2281cd24bd3509ece1c07bfecb0a64b57", + "branch": null, + "parent": null, + "secondParent": null, + "base": "322929584606ec824a84d4072c309246c9ed6f12fb26918d5aeb04e3942cd68c97", + "root": "7781e00dd8af786dcce9072e86fb4dc5b3c5ba4ff7ecc3d1971e57de95185809", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793478414408, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 11.164, + "exec": { + "wallMs": 334.16, + "exitCode": 0, + "stdout": "LFS527 0 1793478414532619586 1793478414823937961\n", + "stderr": "", + "rc": 0, + "ms": 291.318375 + }, + "unmountMs": 22.987, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 20.241, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 408.65, + "exitCode": 0, + "stdout": "LFS527 0 1793478415117388003 1793478415480434545\n", + "stderr": "", + "rc": 0, + "ms": 363.046542 + }, + "commitMs": 64.106, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e8995d0095d0e91d7c4e8f1d2c7540fe4627d388b1fe695f7ab7b5af92762776", + "commit": { + "id": "12e8995d0095d0e91d7c4e8f1d2c7540fe4627d388b1fe695f7ab7b5af92762776", + "branch": null, + "parent": "120e0c019f3318cfb0b40d3b37a89011b2281cd24bd3509ece1c07bfecb0a64b57", + "secondParent": null, + "base": "322929584606ec824a84d4072c309246c9ed6f12fb26918d5aeb04e3942cd68c97", + "root": "00b389f1fefe0122f5be9931b843c97fa20a7c1a24a75b2b4760f22cb191f27b", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793478415489, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 21.988, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.768, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.204, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 442.606, + "ok": true + }, + { + "name": "setup.mount", + "ms": 34.5, + "ok": true + }, + { + "name": "setup.exec", + "ms": 327.95, + "ok": true + }, + { + "name": "setup.commit", + "ms": 344.093, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 16.066, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 11.16, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 334.157, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 22.983, + "ok": true + }, + { + "name": "timed.mount", + "ms": 20.238, + "ok": true + }, + { + "name": "timed.exec", + "ms": 408.647, + "ok": true + }, + { + "name": "timed.commit", + "ms": 64.102, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 21.984, + "ok": true + }, + { + "name": "verify.mount", + "ms": 11.203, + "ok": true + }, + { + "name": "verify.identity", + "ms": 56.27, + "ok": true + }, + { + "name": "verify.exec", + "ms": 613.447, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 12.944, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 280.12, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "322929584606ec824a84d4072c309246c9ed6f12fb26918d5aeb04e3942cd68c97", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 205.179, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 204, + "load1": 10.13720703125, + "grantedAt": "2026-10-31T20:26:55.052Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 20.241, + "execWallMs": 408.65, + "commandMs": 363.046542, + "commitMs": 64.106, + "commitKind": "Committed", + "unmountMs": 21.988 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:56.851Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C11-2026-10-31T202700014Z-wuqtke21qf.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C11-2026-10-31T202700014Z-wuqtke21qf.json new file mode 100644 index 000000000..6e03b6768 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C11-2026-10-31T202700014Z-wuqtke21qf.json @@ -0,0 +1,354 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wuqtke21qf-", + "startedAt": "2026-10-31T20:27:00.014Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.0458984375, + "end": 9.8818359375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-BMbnlq", + "initMs": 1018, + "volume": "lfs527-wuqtke21qf-c11-store-mvwuqtm2", + "setupMs": 1076, + "cellBudgetMs": 93896, + "teardownMs": 310 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-wuqtke21qf-c11-store-mvwuqtm2" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wuqtke21qf-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-BMbnlq/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wuqtke21qf-c11-store-mvwuqtm2", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wuqtke21qf-c11-store-mvwuqtm2/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqtke21qf-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-BMbnlq/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.0458984375, + "grantedAt": "2026-10-31T20:27:02.743Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 303.272, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1260656c2287d4c8fda99adac662f1a66e24c9b114fa2172218176a1e9cbb9aa42", + "commit": { + "id": "1260656c2287d4c8fda99adac662f1a66e24c9b114fa2172218176a1e9cbb9aa42", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3204042ea8793b7ef2a8aa0e7a37f6f8bfc64c4d9d1ca784a4bd70d798bdbe72b1", + "root": "09bea1201b472ec139a1cb4235c94f10683d7d3c88a6f61f364fe1f66c80945f", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793478422250, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 10.068, + "exec": { + "wallMs": 396.897, + "exitCode": 0, + "stdout": "LFS527 0 1793478422383046173 1793478422728720798\n", + "stderr": "", + "rc": 0, + "ms": 345.674625 + }, + "unmountMs": 15.623, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 17.157, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 206.315, + "exitCode": 0, + "stdout": "LFS527 0 1793478422821227548 1793478422971143881\n", + "stderr": "", + "rc": 0, + "ms": 149.916333 + }, + "commitMs": 171.171, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "1260656c2287d4c8fda99adac662f1a66e24c9b114fa2172218176a1e9cbb9aa42", + "root": "09bea1201b472ec139a1cb4235c94f10683d7d3c88a6f61f364fe1f66c80945f", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 15.82, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.944, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.677, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 327.775, + "ok": true + }, + { + "name": "setup.mount", + "ms": 16.147, + "ok": true + }, + { + "name": "setup.exec", + "ms": 303.267, + "ok": true + }, + { + "name": "setup.commit", + "ms": 472.991, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 20.411, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 10.065, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 396.894, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 15.62, + "ok": true + }, + { + "name": "timed.mount", + "ms": 17.153, + "ok": true + }, + { + "name": "timed.exec", + "ms": 206.312, + "ok": true + }, + { + "name": "timed.commit", + "ms": 171.168, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 15.816, + "ok": true + }, + { + "name": "verify.mount", + "ms": 12.004, + "ok": true + }, + { + "name": "verify.identity", + "ms": 61.403, + "ok": true + }, + { + "name": "verify.exec", + "ms": 224.957, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.734, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 319.637, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3204042ea8793b7ef2a8aa0e7a37f6f8bfc64c4d9d1ca784a4bd70d798bdbe72b1", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.382, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.0458984375, + "grantedAt": "2026-10-31T20:27:02.743Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 17.157, + "execWallMs": 206.315, + "commandMs": 149.916333, + "commitMs": 171.171, + "commitKind": "UpToDate", + "unmountMs": 15.82 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:04.100Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C12-2026-10-31T202707240Z-wuqz542225.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C12-2026-10-31T202707240Z-wuqz542225.json new file mode 100644 index 000000000..a9eff8e8a --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-docker-C12-2026-10-31T202707240Z-wuqz542225.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wuqz542225-", + "startedAt": "2026-10-31T20:27:07.240Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.8818359375, + "end": 10.77197265625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-T02Uyl", + "initMs": 1620, + "volume": "lfs527-wuqz542225-c12-store-mvwuqz6r", + "setupMs": 1677, + "cellBudgetMs": 93293, + "teardownMs": 319 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-wuqz542225-c12-store-mvwuqz6r" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wuqz542225-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-T02Uyl/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-4bedac61bd884930b3b8e16af1af2a00/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wuqz542225-c12-store-mvwuqz6r", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wuqz542225-c12-store-mvwuqz6r/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqz542225-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-T02Uyl/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 202, + "load1": 10.77197265625, + "grantedAt": "2026-10-31T20:27:09.987Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 14.664, + "exec": { + "wallMs": 336.6, + "exitCode": 0, + "stdout": "LFS527 0 1793478429490112218 1793478429783411343\n", + "stderr": "", + "rc": 0, + "ms": 293.299125 + }, + "unmountMs": 7.245, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.821, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 275.19, + "exitCode": 0, + "stdout": "LFS527 0 1793478430047790801 1793478430280336177\n", + "stderr": "", + "rc": 0, + "ms": 232.545376 + }, + "commitMs": 58.186, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1270678b71d57c918c314420a24e90ac46d4f8261d310920a16a9e1fa784cfb252", + "commit": { + "id": "1270678b71d57c918c314420a24e90ac46d4f8261d310920a16a9e1fa784cfb252", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32aae3d414d02a6f2bc5f770d431e86e1b7d2c14f9c1785f5bd39aeac4a123faaa", + "root": "917e599ea4a189d4ec33dd1034cdb1ca95040100243d26134710e43d81973f06", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793478430338, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26915, + "newMetadata": 6522, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.807, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.672, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.191, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 407.577, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 14.66, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 336.593, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 7.243, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.793, + "ok": true + }, + { + "name": "timed.exec", + "ms": 275.186, + "ok": true + }, + { + "name": "timed.commit", + "ms": 58.184, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.804, + "ok": true + }, + { + "name": "verify.mount", + "ms": 9.152, + "ok": true + }, + { + "name": "verify.identity", + "ms": 57.38, + "ok": true + }, + { + "name": "verify.exec", + "ms": 118.969, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.563, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 244.035, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32aae3d414d02a6f2bc5f770d431e86e1b7d2c14f9c1785f5bd39aeac4a123faaa", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 203.376, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 202, + "load1": 10.77197265625, + "grantedAt": "2026-10-31T20:27:09.987Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.821, + "execWallMs": 275.19, + "commandMs": 232.545376, + "commitMs": 58.186, + "commitKind": "Committed", + "unmountMs": 7.807 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:11.098Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C01-2026-10-31T202522600Z-wuoqeg1srj.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C01-2026-10-31T202522600Z-wuoqeg1srj.json new file mode 100644 index 000000000..cb635ad79 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C01-2026-10-31T202522600Z-wuoqeg1srj.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wuoqeg1srj-", + "startedAt": "2026-10-31T20:25:22.600Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 3.427734375, + "end": 3.23291015625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-N4XzdU", + "initMs": 1033, + "init": { + "kind": "Initialized", + "project": "c01", + "layer": "32852a23ee14a55e97e8664dda1e5d75db55794bfe5005a4ed6e57f12d8b4a3c61", + "root": "2b5308ce47c9d613d355dec50cc36c615c5a73865614f3f9f33ff494dfbf2548", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-N4XzdU/store/store.sqlite" + }, + "setupMs": 1048, + "cellBudgetMs": 93912, + "teardownMs": 37 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-N4XzdU/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-N4XzdU/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-N4XzdU/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuoqeg1srj-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 3.23291015625, + "grantedAt": "2026-10-31T20:25:25.149Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 28.993, + "exec": { + "wallMs": 732.007, + "exitCode": 0, + "stdout": "LFS527 0 1793478324400866000 1793478325110048000\n", + "stderr": "", + "rc": 0, + "ms": 709.182 + }, + "unmountMs": 35.554, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 23.828, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-N4XzdU/local/lfs527-wuoqeg1srj-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 701.865, + "exitCode": 0, + "stdout": "LFS527 0 1793478325186813000 1793478325873958000\n", + "stderr": "", + "rc": 0, + "ms": 687.145 + }, + "commitMs": 168.625, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12df9b79b3f50a30515acdff67722ffd7d39072ad0496e4fbad91c13f271364111", + "commit": { + "id": "12df9b79b3f50a30515acdff67722ffd7d39072ad0496e4fbad91c13f271364111", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32852a23ee14a55e97e8664dda1e5d75db55794bfe5005a4ed6e57f12d8b4a3c61", + "root": "563ae2ebb6e29aa5c8bd07f65a39a82546b690fa4c7ddbd2f72e4382b1a683b2", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793478326031, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 35.947, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.652, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.491, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 594.452, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 28.987, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 731.988, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 35.549, + "ok": true + }, + { + "name": "timed.mount", + "ms": 23.825, + "ok": true + }, + { + "name": "timed.exec", + "ms": 701.85, + "ok": true + }, + { + "name": "timed.commit", + "ms": 168.62, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 35.942, + "ok": true + }, + { + "name": "verify.mount", + "ms": 26.108, + "ok": true + }, + { + "name": "verify.identity", + "ms": 41.593, + "ok": true + }, + { + "name": "verify.exec", + "ms": 327.863, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 25.404, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 54.406, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32852a23ee14a55e97e8664dda1e5d75db55794bfe5005a4ed6e57f12d8b4a3c61", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.285, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 3.23291015625, + "grantedAt": "2026-10-31T20:25:25.149Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 23.828, + "execWallMs": 701.865, + "commandMs": 687.145, + "commitMs": 168.625, + "commitKind": "Committed", + "unmountMs": 35.947 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:26.600Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C02-2026-10-31T202529784Z-wuovy01t3v.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C02-2026-10-31T202529784Z-wuovy01t3v.json new file mode 100644 index 000000000..16da4d70f --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C02-2026-10-31T202529784Z-wuovy01t3v.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wuovy01t3v-", + "startedAt": "2026-10-31T20:25:29.784Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 4.0146484375, + "end": 6.1962890625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-4HRpHR", + "initMs": 18, + "init": { + "kind": "Initialized", + "project": "c02", + "layer": "328c9715b5741435d0c8af5bffe63ba4696613822a45fde4e615e01c1ae5a11b8a", + "root": "0f1cdbae9fee936ef14ba0011bab5e0e024063a840904053f678bd92516d20d6", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-4HRpHR/store/store.sqlite" + }, + "setupMs": 30, + "cellBudgetMs": 94944, + "teardownMs": 43 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-4HRpHR/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-4HRpHR/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-4HRpHR/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuovy01t3v-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 511, + "load1": 5.89208984375, + "grantedAt": "2026-10-31T20:25:39.747Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 29.262, + "exec": { + "wallMs": 9130.572, + "exitCode": 0, + "stdout": "LFS527 0 1793478329975532000 1793478339086326000\n", + "stderr": "", + "rc": 0, + "ms": 9110.794 + }, + "unmountMs": 138.861, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 72.623, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-4HRpHR/local/lfs527-wuovy01t3v-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 8952.261, + "exitCode": 0, + "stdout": "LFS527 0 1793478339842408000 1793478348770791000\n", + "stderr": "", + "rc": 0, + "ms": 8928.383 + }, + "commitMs": 280.873, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12c6faeb2c586e8651b7da7f0bd4f7505d8439214bf88ff7a84f164587b76e541c", + "commit": { + "id": "12c6faeb2c586e8651b7da7f0bd4f7505d8439214bf88ff7a84f164587b76e541c", + "branch": null, + "parent": null, + "secondParent": null, + "base": "328c9715b5741435d0c8af5bffe63ba4696613822a45fde4e615e01c1ae5a11b8a", + "root": "8274de4e5991d70bcd4d8833cb0e591b3e5d6a968c1303cb3785257629c9ad2f", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793478349043, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 32.175, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.794, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.629, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 26.947, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 29.255, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 9130.491, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 138.856, + "ok": true + }, + { + "name": "timed.mount", + "ms": 72.62, + "ok": true + }, + { + "name": "timed.exec", + "ms": 8952.242, + "ok": true + }, + { + "name": "timed.commit", + "ms": 280.869, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 32.169, + "ok": true + }, + { + "name": "verify.mount", + "ms": 24.552, + "ok": true + }, + { + "name": "verify.identity", + "ms": 46.109, + "ok": true + }, + { + "name": "verify.exec", + "ms": 319.588, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 24.535, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 48.681, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "328c9715b5741435d0c8af5bffe63ba4696613822a45fde4e615e01c1ae5a11b8a", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 517.135, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 511, + "load1": 5.89208984375, + "grantedAt": "2026-10-31T20:25:39.747Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 72.623, + "execWallMs": 8952.261, + "commandMs": 8928.383, + "commitMs": 280.873, + "commitKind": "Committed", + "unmountMs": 32.175 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:49.601Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C03-2026-10-31T202552637Z-wupdkt1v8m.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C03-2026-10-31T202552637Z-wupdkt1v8m.json new file mode 100644 index 000000000..265c1d40a --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C03-2026-10-31T202552637Z-wupdkt1v8m.json @@ -0,0 +1,290 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wupdkt1v8m-", + "startedAt": "2026-10-31T20:25:52.637Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.1962890625, + "end": 7.30126953125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-04mIHs", + "initMs": 34, + "init": { + "kind": "Initialized", + "project": "c03", + "layer": "3202bdd09d14af2974becee5ba86e8c23773303bd4a9d7f34a787c5d801fd905fc", + "root": "ea3257a4c140767c910e0a2b4ac4a9c0c2d4ea60e1e9cc4b586b4459bcb89665", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-04mIHs/store/store.sqlite" + }, + "setupMs": 66, + "cellBudgetMs": 94897, + "teardownMs": 58 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-04mIHs/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-04mIHs/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-04mIHs/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wupdkt1v8m-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.30126953125, + "grantedAt": "2026-10-31T20:25:54.141Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 25.535, + "exec": { + "wallMs": 1275.258, + "exitCode": 0, + "stdout": "LFS527 0 1793478352861908000 1793478354121305000\n", + "stderr": "", + "rc": 0, + "ms": 1259.397 + }, + "unmountMs": 16.243, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 20.776, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-04mIHs/local/lfs527-wupdkt1v8m-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 1413.883, + "exitCode": 0, + "stdout": "LFS527 0 1793478354174663000 1793478355574991000\n", + "stderr": "", + "rc": 0, + "ms": 1400.328 + }, + "commitMs": 229.82, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "ea3257a4c140767c910e0a2b4ac4a9c0c2d4ea60e1e9cc4b586b4459bcb89665", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 18.685, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.436, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.451, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 20.288, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 25.53, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1275.236, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 16.238, + "ok": true + }, + { + "name": "timed.mount", + "ms": 20.772, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1413.87, + "ok": true + }, + { + "name": "timed.commit", + "ms": 229.814, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 18.678, + "ok": true + }, + { + "name": "verify.mount", + "ms": 25.377, + "ok": true + }, + { + "name": "verify.identity", + "ms": 42.478, + "ok": true + }, + { + "name": "verify.exec", + "ms": 15.855, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 18.772, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 48.668, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3202bdd09d14af2974becee5ba86e8c23773303bd4a9d7f34a787c5d801fd905fc", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.376, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.30126953125, + "grantedAt": "2026-10-31T20:25:54.141Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 20.776, + "execWallMs": 1413.883, + "commandMs": 1400.328, + "commitMs": 229.82, + "commitKind": "UpToDate", + "unmountMs": 18.685 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:56.045Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C04-2026-10-31T202559154Z-wupilu1vg6.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C04-2026-10-31T202559154Z-wupilu1vg6.json new file mode 100644 index 000000000..1b092a4b2 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C04-2026-10-31T202559154Z-wupilu1vg6.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wupilu1vg6-", + "startedAt": "2026-10-31T20:25:59.154Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.95654296875, + "end": 8.013671875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-KY2jcE", + "initMs": 17, + "init": { + "kind": "Initialized", + "project": "c04", + "layer": "327a1381b767b07faf8070f184e70e42c4cbc8ad65dcea9c6a37355ec48b6bf732", + "root": "e442c3b32880ad94e3f3faa7549417e0071122756d10f3aa1a6984e8e262c916", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-KY2jcE/store/store.sqlite" + }, + "setupMs": 27, + "cellBudgetMs": 94948, + "teardownMs": 128 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-KY2jcE/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-KY2jcE/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-KY2jcE/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wupilu1vg6-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.8408203125, + "grantedAt": "2026-10-31T20:26:04.239Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 23.753, + "exec": { + "wallMs": 4898.524, + "exitCode": 0, + "stdout": "LFS527 0 1793478359323619000 1793478364206356000\n", + "stderr": "", + "rc": 0, + "ms": 4882.737 + }, + "unmountMs": 28.913, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 28.466, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-KY2jcE/local/lfs527-wupilu1vg6-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 5598.448, + "exitCode": 0, + "stdout": "LFS527 0 1793478364290461000 1793478369864919000\n", + "stderr": "", + "rc": 0, + "ms": 5574.458 + }, + "commitMs": 299.077, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "125d549912f4b74a84f435f3d9da2c20b54576ea6a7655d762a3244c76cfb36d4f", + "commit": { + "id": "125d549912f4b74a84f435f3d9da2c20b54576ea6a7655d762a3244c76cfb36d4f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "327a1381b767b07faf8070f184e70e42c4cbc8ad65dcea9c6a37355ec48b6bf732", + "root": "ddec97a6dc667d582cb50946378bc0e72f6055b97a771f49eba9b556568bd7f7", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793478370157, + "logical": 0, + "newCanonical": 109367, + "newStored": 8242, + "newMetadata": 8242, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 31.278, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.632, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.471, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 17.333, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 23.747, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 4898.506, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 28.908, + "ok": true + }, + { + "name": "timed.mount", + "ms": 28.461, + "ok": true + }, + { + "name": "timed.exec", + "ms": 5598.424, + "ok": true + }, + { + "name": "timed.commit", + "ms": 299.073, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 31.274, + "ok": true + }, + { + "name": "verify.mount", + "ms": 21.427, + "ok": true + }, + { + "name": "verify.identity", + "ms": 54.426, + "ok": true + }, + { + "name": "verify.exec", + "ms": 752.395, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 26.975, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 60.815, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "327a1381b767b07faf8070f184e70e42c4cbc8ad65dcea9c6a37355ec48b6bf732", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.526, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.8408203125, + "grantedAt": "2026-10-31T20:26:04.239Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 28.466, + "execWallMs": 5598.448, + "commandMs": 5574.458, + "commitMs": 299.077, + "commitKind": "Committed", + "unmountMs": 31.278 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:11.256Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C05-2026-10-31T202614510Z-wupuge1y1w.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C05-2026-10-31T202614510Z-wupuge1y1w.json new file mode 100644 index 000000000..b90885c95 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C05-2026-10-31T202614510Z-wupuge1y1w.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wupuge1y1w-", + "startedAt": "2026-10-31T20:26:14.510Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.25244140625, + "end": 9.14208984375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-zOK3QJ", + "initMs": 18, + "init": { + "kind": "Initialized", + "project": "c05", + "layer": "32156086aabe32ee82a8bdffc22246de08ae145569a5b8e97f04d230f12fd8139f", + "root": "49171c8dfad4c32ffad40f73f24227c891a047cbcb95eb1994e62954358fb513", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-zOK3QJ/store/store.sqlite" + }, + "setupMs": 80, + "cellBudgetMs": 94812, + "teardownMs": 156 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-zOK3QJ/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-zOK3QJ/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-zOK3QJ/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wupuge1y1w-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 510, + "load1": 8.63232421875, + "grantedAt": "2026-10-31T20:26:20.767Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 24.456, + "exec": { + "wallMs": 5389.002, + "exitCode": 0, + "stdout": "LFS527 0 1793478374850870000 1793478380220747000\n", + "stderr": "", + "rc": 0, + "ms": 5369.877 + }, + "unmountMs": 31.977, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 22.651, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-zOK3QJ/local/lfs527-wupuge1y1w-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 5412.488, + "exitCode": 0, + "stdout": "LFS527 0 1793478380804218000 1793478386201614000\n", + "stderr": "", + "rc": 0, + "ms": 5397.396 + }, + "commitMs": 467.541, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12ab7257c667b8ef1b0c37169094bfa69dec4e4242b008daadbfb9248396a77fe0", + "commit": { + "id": "12ab7257c667b8ef1b0c37169094bfa69dec4e4242b008daadbfb9248396a77fe0", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32156086aabe32ee82a8bdffc22246de08ae145569a5b8e97f04d230f12fd8139f", + "root": "ed99646d2ad912fe76008d224f44baa7effb048c4e5152fcf66950a285bed8a7", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793478386659, + "logical": 0, + "newCanonical": 109367, + "newStored": 8261, + "newMetadata": 8261, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 40.425, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.233, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.534, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 28.955, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 24.449, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 5388.969, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 31.971, + "ok": true + }, + { + "name": "timed.mount", + "ms": 22.646, + "ok": true + }, + { + "name": "timed.exec", + "ms": 5412.473, + "ok": true + }, + { + "name": "timed.commit", + "ms": 467.533, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 40.417, + "ok": true + }, + { + "name": "verify.mount", + "ms": 24.52, + "ok": true + }, + { + "name": "verify.identity", + "ms": 57.352, + "ok": true + }, + { + "name": "verify.exec", + "ms": 962.242, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 43.388, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 110.092, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32156086aabe32ee82a8bdffc22246de08ae145569a5b8e97f04d230f12fd8139f", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 512.513, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 510, + "load1": 8.63232421875, + "grantedAt": "2026-10-31T20:26:20.767Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 22.651, + "execWallMs": 5412.488, + "commandMs": 5397.396, + "commitMs": 467.541, + "commitKind": "Committed", + "unmountMs": 40.425 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:28.085Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C06-2026-10-31T202631526Z-wuq7l220rh.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C06-2026-10-31T202631526Z-wuq7l220rh.json new file mode 100644 index 000000000..1f451cc99 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C06-2026-10-31T202631526Z-wuq7l220rh.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wuq7l220rh-", + "startedAt": "2026-10-31T20:26:31.526Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.21044921875, + "end": 8.79296875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-w87T1o", + "initMs": 162, + "init": { + "kind": "Initialized", + "project": "c06", + "layer": "32a13a41bc95f384d8f25052b5645b9f1ea1c239ac913070f23a38541297eecdff", + "root": "9683333f82f5f799daa0e098d90537ddc7e4aadfab80026ac99aedd7b205df69", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-w87T1o/store/store.sqlite" + }, + "setupMs": 194, + "cellBudgetMs": 94622, + "teardownMs": 45 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-w87T1o/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-w87T1o/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-w87T1o/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuq7l220rh-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 305, + "load1": 9.21044921875, + "grantedAt": "2026-10-31T20:26:32.742Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 31.32, + "exec": { + "wallMs": 297.118, + "exitCode": 0, + "stdout": "LFS527 0 1793478392069462000 1793478392347615000\n", + "stderr": "", + "rc": 0, + "ms": 278.153 + }, + "unmountMs": 86.724, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 27.644, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-w87T1o/local/lfs527-wuq7l220rh-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 311.354, + "exitCode": 0, + "stdout": "LFS527 0 1793478392787212000 1793478393080128000\n", + "stderr": "", + "rc": 0, + "ms": 292.916 + }, + "commitMs": 599.206, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12c9630c6a874f0d1cdf47b06977580fabeac0d80362c61c000a11a068984167c8", + "commit": { + "id": "12c9630c6a874f0d1cdf47b06977580fabeac0d80362c61c000a11a068984167c8", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32a13a41bc95f384d8f25052b5645b9f1ea1c239ac913070f23a38541297eecdff", + "root": "5a869ee8e81efaed08d240f4f208daf8985166e28450da01f23ca597a9d59993", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793478393576, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 19.227, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.977, + "ok": true + }, + { + "name": "branch.fork", + "ms": 12.627, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 30.409, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 31.312, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 297.099, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 86.718, + "ok": true + }, + { + "name": "timed.mount", + "ms": 27.639, + "ok": true + }, + { + "name": "timed.exec", + "ms": 311.341, + "ok": true + }, + { + "name": "timed.commit", + "ms": 599.201, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 19.223, + "ok": true + }, + { + "name": "verify.mount", + "ms": 25.355, + "ok": true + }, + { + "name": "verify.identity", + "ms": 37.512, + "ok": true + }, + { + "name": "verify.exec", + "ms": 2808.312, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 24.679, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 65.598, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32a13a41bc95f384d8f25052b5645b9f1ea1c239ac913070f23a38541297eecdff", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 308.333, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 305, + "load1": 9.21044921875, + "grantedAt": "2026-10-31T20:26:32.742Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 27.644, + "execWallMs": 311.354, + "commandMs": 292.916, + "commitMs": 599.206, + "commitKind": "Committed", + "unmountMs": 19.227 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:36.708Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C07-2026-10-31T202640107Z-wuqe7f214l.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C07-2026-10-31T202640107Z-wuqe7f214l.json new file mode 100644 index 000000000..dfae6441c --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C07-2026-10-31T202640107Z-wuqe7f214l.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wuqe7f214l-", + "startedAt": "2026-10-31T20:26:40.107Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.44970703125, + "end": 10.0625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-5hhAmZ", + "initMs": 28, + "init": { + "kind": "Initialized", + "project": "c07", + "layer": "326d465eac836e6c73d6a67b77c46b90ecc6ea0eb7207d313960d7b5bc1be2b706", + "root": "ddd5e2be80847a698abf8c7f89733ad53dcd09471c85fba7969fb3a7dcf90a7f", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-5hhAmZ/store/store.sqlite" + }, + "setupMs": 41, + "cellBudgetMs": 94908, + "teardownMs": 39 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-5hhAmZ/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-5hhAmZ/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-5hhAmZ/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqe7f214l-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.44970703125, + "grantedAt": "2026-10-31T20:26:40.805Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 28.717, + "exec": { + "wallMs": 453.77, + "exitCode": 0, + "stdout": "LFS527 0 1793478400328534000 1793478400762933000\n", + "stderr": "", + "rc": 0, + "ms": 434.399 + }, + "unmountMs": 37.912, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 28.875, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-5hhAmZ/local/lfs527-wuqe7f214l-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 499.172, + "exitCode": 0, + "stdout": "LFS527 0 1793478400850127000 1793478401331511000\n", + "stderr": "", + "rc": 0, + "ms": 481.384 + }, + "commitMs": 1430.523, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12ad77be5f3a5c3383a4e0d4800fed10accef535925107a97d966686b79e0e780f", + "commit": { + "id": "12ad77be5f3a5c3383a4e0d4800fed10accef535925107a97d966686b79e0e780f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "326d465eac836e6c73d6a67b77c46b90ecc6ea0eb7207d313960d7b5bc1be2b706", + "root": "9aea9599c0121df8daaf85ebecbb8c9b64f5fa8303ba9481fadd1fca025c34fb", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793478402596, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 28.404, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.982, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.579, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 18.783, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 28.711, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 453.748, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 37.907, + "ok": true + }, + { + "name": "timed.mount", + "ms": 28.871, + "ok": true + }, + { + "name": "timed.exec", + "ms": 499.158, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1430.518, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 28.399, + "ok": true + }, + { + "name": "verify.mount", + "ms": 21.165, + "ok": true + }, + { + "name": "verify.identity", + "ms": 39.271, + "ok": true + }, + { + "name": "verify.exec", + "ms": 5691.368, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 29.117, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 52.945, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "326d465eac836e6c73d6a67b77c46b90ecc6ea0eb7207d313960d7b5bc1be2b706", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.396, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.44970703125, + "grantedAt": "2026-10-31T20:26:40.805Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 28.875, + "execWallMs": 499.172, + "commandMs": 481.384, + "commitMs": 1430.523, + "commitKind": "Committed", + "unmountMs": 28.404 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:48.665Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C08-2026-10-31T202652433Z-wuqnpt21j5.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C08-2026-10-31T202652433Z-wuqnpt21j5.json new file mode 100644 index 000000000..8448df2ad --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C08-2026-10-31T202652433Z-wuqnpt21j5.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wuqnpt21j5-", + "startedAt": "2026-10-31T20:26:52.433Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.0625, + "end": 10.13720703125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-veJMDh", + "initMs": 17, + "init": { + "kind": "Initialized", + "project": "c08", + "layer": "3243b3586d117d052bb44c5c8c98ae637d182a33ed0481af666bc5ef8548ab119b", + "root": "dd8d4175aacc88d6995cd4f9d2deb399879d272dff29580a72fdd1968e9487b2", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-veJMDh/store/store.sqlite" + }, + "setupMs": 46, + "cellBudgetMs": 94845, + "teardownMs": 42 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-veJMDh/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-veJMDh/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-veJMDh/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqnpt21j5-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.0625, + "grantedAt": "2026-10-31T20:26:53.040Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 30.241, + "exec": { + "wallMs": 250.659, + "exitCode": 0, + "stdout": "LFS527 0 1793478412773498000 1793478413006939000\n", + "stderr": "", + "rc": 0, + "ms": 233.441 + }, + "unmountMs": 29.726, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 22.866, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-veJMDh/local/lfs527-wuqnpt21j5-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 242.109, + "exitCode": 0, + "stdout": "LFS527 0 1793478413079359000 1793478413303639000\n", + "stderr": "", + "rc": 0, + "ms": 224.28 + }, + "commitMs": 432.662, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1249ff943010d6bb8cd8fd69dd8123ad972726ccff641453370434269487506016", + "commit": { + "id": "1249ff943010d6bb8cd8fd69dd8123ad972726ccff641453370434269487506016", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3243b3586d117d052bb44c5c8c98ae637d182a33ed0481af666bc5ef8548ab119b", + "root": "ba2bb01268270c425d98acfa18d5b1057be5771110d3d20843a1c12e2b750bf6", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793478413663, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 24.043, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 56.984, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.785, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 26.022, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 30.233, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 250.641, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 29.721, + "ok": true + }, + { + "name": "timed.mount", + "ms": 22.861, + "ok": true + }, + { + "name": "timed.exec", + "ms": 242.098, + "ok": true + }, + { + "name": "timed.commit", + "ms": 432.655, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 24.037, + "ok": true + }, + { + "name": "verify.mount", + "ms": 28.997, + "ok": true + }, + { + "name": "verify.identity", + "ms": 56.72, + "ok": true + }, + { + "name": "verify.exec", + "ms": 2869.644, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 20.71, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 51.988, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3243b3586d117d052bb44c5c8c98ae637d182a33ed0481af666bc5ef8548ab119b", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.097, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.0625, + "grantedAt": "2026-10-31T20:26:53.040Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 22.866, + "execWallMs": 242.109, + "commandMs": 224.28, + "commitMs": 432.662, + "commitKind": "Committed", + "unmountMs": 24.043 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:56.838Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C09-2026-10-31T202700053Z-wuqtlh21qi.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C09-2026-10-31T202700053Z-wuqtlh21qi.json new file mode 100644 index 000000000..56e59d035 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C09-2026-10-31T202700053Z-wuqtlh21qi.json @@ -0,0 +1,351 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wuqtlh21qi-", + "startedAt": "2026-10-31T20:27:00.053Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.0458984375, + "end": 9.8818359375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-adgpHv", + "initMs": 18, + "init": { + "kind": "Initialized", + "project": "c09", + "layer": "3255ee1dbdaf3843bf9a5c2af59a4c81c4b3100a80a90b47026db0162752253ff7", + "root": "2d65195e0a480eb2d76f3afb9f185a80bfcbb375566da903a0d441f35d1343e6", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-adgpHv/store/store.sqlite" + }, + "setupMs": 32, + "cellBudgetMs": 94923, + "teardownMs": 46 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-adgpHv/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-adgpHv/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-adgpHv/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqtlh21qi-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.0458984375, + "grantedAt": "2026-10-31T20:27:01.405Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 196.124, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a50346f1bb89cb59a81c66ebd22d539cc7c16c9b7a0c5016b9f35ac719066717", + "commit": { + "id": "12a50346f1bb89cb59a81c66ebd22d539cc7c16c9b7a0c5016b9f35ac719066717", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3255ee1dbdaf3843bf9a5c2af59a4c81c4b3100a80a90b47026db0162752253ff7", + "root": "3ca3661630f4e07c5e3de0ab48fa88f34b38328941932b5acb85e61c96608bdf", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793478421181, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 25.169, + "exec": { + "wallMs": 71.709, + "exitCode": 0, + "stdout": "LFS527 0 1793478421328381000 1793478421382709000\n", + "stderr": "", + "rc": 0, + "ms": 54.328 + }, + "unmountMs": 18.401, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 25.4, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-adgpHv/local/lfs527-wuqtlh21qi-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 61.142, + "exitCode": 0, + "stdout": "LFS527 0 1793478421446400000 1793478421490420000\n", + "stderr": "", + "rc": 0, + "ms": 44.02 + }, + "commitMs": 124.278, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12a50346f1bb89cb59a81c66ebd22d539cc7c16c9b7a0c5016b9f35ac719066717", + "root": "3ca3661630f4e07c5e3de0ab48fa88f34b38328941932b5acb85e61c96608bdf", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 27.76, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.627, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.681, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 17.283, + "ok": true + }, + { + "name": "setup.mount", + "ms": 26.228, + "ok": true + }, + { + "name": "setup.exec", + "ms": 196.105, + "ok": true + }, + { + "name": "setup.commit", + "ms": 825.61, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 26.919, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 25.164, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 71.695, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 18.393, + "ok": true + }, + { + "name": "timed.mount", + "ms": 25.396, + "ok": true + }, + { + "name": "timed.exec", + "ms": 61.13, + "ok": true + }, + { + "name": "timed.commit", + "ms": 124.273, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 27.755, + "ok": true + }, + { + "name": "verify.mount", + "ms": 26.42, + "ok": true + }, + { + "name": "verify.identity", + "ms": 134.925, + "ok": true + }, + { + "name": "verify.exec", + "ms": 2911.817, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 24.162, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 67.308, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3255ee1dbdaf3843bf9a5c2af59a4c81c4b3100a80a90b47026db0162752253ff7", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.282, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.0458984375, + "grantedAt": "2026-10-31T20:27:01.405Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 25.4, + "execWallMs": 61.142, + "commandMs": 44.02, + "commitMs": 124.278, + "commitKind": "UpToDate", + "unmountMs": 27.76 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:04.868Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C10-2026-10-31T202708094Z-wuqzsu2248.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C10-2026-10-31T202708094Z-wuqzsu2248.json new file mode 100644 index 000000000..63d2049be --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C10-2026-10-31T202708094Z-wuqzsu2248.json @@ -0,0 +1,370 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wuqzsu2248-", + "startedAt": "2026-10-31T20:27:08.094Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.8818359375, + "end": 10.7900390625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-EqXBSO", + "initMs": 17, + "init": { + "kind": "Initialized", + "project": "c10", + "layer": "32fa468120b7db5463cf81bce0c196178954081e9115559e38e5636bbbaf64728b", + "root": "96d9201a86a68a64276583383b33c25dc9f28f4ad564358c95dfe427b0d32ab3", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-EqXBSO/store/store.sqlite" + }, + "setupMs": 29, + "cellBudgetMs": 94744, + "teardownMs": 38 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-EqXBSO/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-EqXBSO/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-EqXBSO/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqzsu2248-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 711, + "load1": 10.77197265625, + "grantedAt": "2026-10-31T20:27:10.399Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 305.177, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "122782b5835f7294ff8fefa5b4f975415efd76d0f0d3a17c318e433b91363a17aa", + "commit": { + "id": "122782b5835f7294ff8fefa5b4f975415efd76d0f0d3a17c318e433b91363a17aa", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32fa468120b7db5463cf81bce0c196178954081e9115559e38e5636bbbaf64728b", + "root": "464938841710aae8899e848758df909f893a57dc0db1b4f5422e17c1cc0bf855", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793478429190, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 22.098, + "exec": { + "wallMs": 255.581, + "exitCode": 0, + "stdout": "LFS527 0 1793478429328427000 1793478429566814000\n", + "stderr": "", + "rc": 0, + "ms": 238.387 + }, + "unmountMs": 118.865, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 25.223, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-EqXBSO/local/lfs527-wuqzsu2248-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 249.006, + "exitCode": 0, + "stdout": "LFS527 0 1793478430438125000 1793478430672628000\n", + "stderr": "", + "rc": 0, + "ms": 234.503 + }, + "commitMs": 218.122, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "121bfd3eb4809aafc576d2e657811cfc306e99fb8936836d7a0a0c00d96811244f", + "commit": { + "id": "121bfd3eb4809aafc576d2e657811cfc306e99fb8936836d7a0a0c00d96811244f", + "branch": null, + "parent": "122782b5835f7294ff8fefa5b4f975415efd76d0f0d3a17c318e433b91363a17aa", + "secondParent": null, + "base": "32fa468120b7db5463cf81bce0c196178954081e9115559e38e5636bbbaf64728b", + "root": "1542ebd184c638ef8f58d51551a23733ab4db811cafe633f3a6f787075b47cfe", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793478430821, + "logical": 134217728, + "newCanonical": 487, + "newStored": 295, + "newMetadata": 295, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 23.636, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.441, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.585, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 18.052, + "ok": true + }, + { + "name": "setup.mount", + "ms": 27.624, + "ok": true + }, + { + "name": "setup.exec", + "ms": 305.16, + "ok": true + }, + { + "name": "setup.commit", + "ms": 501.87, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 22.546, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 22.093, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 255.568, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 118.855, + "ok": true + }, + { + "name": "timed.mount", + "ms": 25.215, + "ok": true + }, + { + "name": "timed.exec", + "ms": 248.996, + "ok": true + }, + { + "name": "timed.commit", + "ms": 218.117, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 23.631, + "ok": true + }, + { + "name": "verify.mount", + "ms": 25.14, + "ok": true + }, + { + "name": "verify.identity", + "ms": 43.425, + "ok": true + }, + { + "name": "verify.exec", + "ms": 5623.464, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 24.377, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 50.557, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32fa468120b7db5463cf81bce0c196178954081e9115559e38e5636bbbaf64728b", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 712.354, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 711, + "load1": 10.77197265625, + "grantedAt": "2026-10-31T20:27:10.399Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 25.223, + "execWallMs": 249.006, + "commandMs": 234.503, + "commitMs": 218.122, + "commitKind": "Committed", + "unmountMs": 23.636 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:16.727Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C11-2026-10-31T202719807Z-wur8u722e6.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C11-2026-10-31T202719807Z-wur8u722e6.json new file mode 100644 index 000000000..55656062a --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C11-2026-10-31T202719807Z-wur8u722e6.json @@ -0,0 +1,351 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wur8u722e6-", + "startedAt": "2026-10-31T20:27:19.807Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.966796875, + "end": 10.56884765625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-3bONlD", + "initMs": 19, + "init": { + "kind": "Initialized", + "project": "c11", + "layer": "32b232028d118f1c2500b99bc862d978fbf78d69230cb1a1c070e407d644772146", + "root": "246da6ea899691e6d5d29379297a475ce16ccc04b2163f8fdafd033167bd1c40", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-3bONlD/store/store.sqlite" + }, + "setupMs": 34, + "cellBudgetMs": 94845, + "teardownMs": 37 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-3bONlD/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-3bONlD/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-3bONlD/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wur8u722e6-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 5, + "load1": 10.966796875, + "grantedAt": "2026-10-31T20:27:21.380Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 236.462, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1231dd3b0671986f2df55399cfa985952afa5518e0aeddf1beb5e251900f01ae61", + "commit": { + "id": "1231dd3b0671986f2df55399cfa985952afa5518e0aeddf1beb5e251900f01ae61", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32b232028d118f1c2500b99bc862d978fbf78d69230cb1a1c070e407d644772146", + "root": "d98e3e9cb753eaba8334c0adac2ab0212df5ddae0e192e6c81df134483c4c408", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793478441000, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 747, + "newMetadata": 671, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 23.6, + "exec": { + "wallMs": 193.803, + "exitCode": 0, + "stdout": "LFS527 0 1793478441179676000 1793478441337076000\n", + "stderr": "", + "rc": 0, + "ms": 157.4 + }, + "unmountMs": 34.606, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 23.091, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-3bONlD/local/lfs527-wur8u722e6-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 233.23, + "exitCode": 0, + "stdout": "LFS527 0 1793478441419838000 1793478441636431000\n", + "stderr": "", + "rc": 0, + "ms": 216.593 + }, + "commitMs": 686.34, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "1231dd3b0671986f2df55399cfa985952afa5518e0aeddf1beb5e251900f01ae61", + "root": "d98e3e9cb753eaba8334c0adac2ab0212df5ddae0e192e6c81df134483c4c408", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 27.121, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 17.945, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.039, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 27.386, + "ok": true + }, + { + "name": "setup.mount", + "ms": 26.424, + "ok": true + }, + { + "name": "setup.exec", + "ms": 236.443, + "ok": true + }, + { + "name": "setup.commit", + "ms": 752.832, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 41.35, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 23.595, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 193.79, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 34.596, + "ok": true + }, + { + "name": "timed.mount", + "ms": 23.085, + "ok": true + }, + { + "name": "timed.exec", + "ms": 233.219, + "ok": true + }, + { + "name": "timed.commit", + "ms": 686.333, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 27.117, + "ok": true + }, + { + "name": "verify.mount", + "ms": 40.331, + "ok": true + }, + { + "name": "verify.identity", + "ms": 44.566, + "ok": true + }, + { + "name": "verify.exec", + "ms": 2954.691, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 24.508, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 48.665, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32b232028d118f1c2500b99bc862d978fbf78d69230cb1a1c070e407d644772146", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 7.921, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 5, + "load1": 10.966796875, + "grantedAt": "2026-10-31T20:27:21.380Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 23.091, + "execWallMs": 233.23, + "commandMs": 216.593, + "commitMs": 686.34, + "commitKind": "UpToDate", + "unmountMs": 27.121 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:25.509Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C12-2026-10-31T202729034Z-wurfyi22ka.json b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C12-2026-10-31T202729034Z-wurfyi22ka.json new file mode 100644 index 000000000..b3ed30bed --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/macos-native-C12-2026-10-31T202729034Z-wurfyi22ka.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wurfyi22ka-", + "startedAt": "2026-10-31T20:27:29.034Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.12255859375, + "end": 10.12255859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-hsmXsu", + "initMs": 27, + "init": { + "kind": "Initialized", + "project": "c12", + "layer": "320a0bc5851660fa867607380cf37af7f04eede9b208fd0ee863a317309ca6915b", + "root": "7869dc16ea128d3beda7648e4eabd35458ca7a7c3e793d11852000e0d52acdd1", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-hsmXsu/store/store.sqlite" + }, + "setupMs": 41, + "cellBudgetMs": 94910, + "teardownMs": 35 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-hsmXsu/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-hsmXsu/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-hsmXsu/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wurfyi22ka-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 815, + "load1": 10.12255859375, + "grantedAt": "2026-10-31T20:27:30.808Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 28.347, + "exec": { + "wallMs": 712.183, + "exitCode": 0, + "stdout": "LFS527 0 1793478449269902000 1793478449964117000\n", + "stderr": "", + "rc": 0, + "ms": 694.215 + }, + "unmountMs": 26.096, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 24.998, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-hsmXsu/local/lfs527-wurfyi22ka-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 438.434, + "exitCode": 0, + "stdout": "LFS527 0 1793478450848685000 1793478451271568000\n", + "stderr": "", + "rc": 0, + "ms": 422.883 + }, + "commitMs": 231.24, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1290fc5c68905f168bf70ad36df80c900f1c8ef87f512f59bfd132f3c6c9c3cb9f", + "commit": { + "id": "1290fc5c68905f168bf70ad36df80c900f1c8ef87f512f59bfd132f3c6c9c3cb9f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "320a0bc5851660fa867607380cf37af7f04eede9b208fd0ee863a317309ca6915b", + "root": "82ccdc5bcc866f8bba2a9b00731d4db8a3eb5b7e90ec492c955265e8ca510e34", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793478451497, + "logical": 38445, + "newCanonical": 82440, + "newStored": 27853, + "newMetadata": 6534, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 17.138, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.197, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.45, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 21.669, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 28.341, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 712.161, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 26.091, + "ok": true + }, + { + "name": "timed.mount", + "ms": 24.993, + "ok": true + }, + { + "name": "timed.exec", + "ms": 438.422, + "ok": true + }, + { + "name": "timed.commit", + "ms": 231.235, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 17.131, + "ok": true + }, + { + "name": "verify.mount", + "ms": 25.257, + "ok": true + }, + { + "name": "verify.identity", + "ms": 120.67, + "ok": true + }, + { + "name": "verify.exec", + "ms": 131.437, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 15.986, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 51.137, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "320a0bc5851660fa867607380cf37af7f04eede9b208fd0ee863a317309ca6915b", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 817.428, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 815, + "load1": 10.12255859375, + "grantedAt": "2026-10-31T20:27:30.808Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 24.998, + "execWallMs": 438.434, + "commandMs": 422.883, + "commitMs": 231.24, + "commitKind": "Committed", + "unmountMs": 17.138 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:31.916Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/refusals-macos-namespaces-2026-10-31T202524406Z-wuorsm1ssi.json b/core/docs/issues/527/receipts/50e2c2bc87/refusals-macos-namespaces-2026-10-31T202524406Z-wuorsm1ssi.json new file mode 100644 index 000000000..a41acb9bf --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/refusals-macos-namespaces-2026-10-31T202524406Z-wuorsm1ssi.json @@ -0,0 +1,105 @@ +{ + "receipt": "lfs527-cell/1", + "row": "refusals", + "cell": "macos-namespaces", + "verdict": "PASS", + "cause": "expected Unsupported; sandbox.create answered Unsupported", + "project": "refusal", + "prefix": "lfs527-wuorsm1ssi-", + "startedAt": "2026-10-31T20:25:24.406Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 3.23291015625, + "end": 3.23291015625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-F5UCY3", + "initMs": 18, + "init": { + "kind": "Initialized", + "project": "refusal", + "layer": "32113818729745a9d9329e2af601acdec6253483f97a769ab6e15434d0934df718", + "root": "9ea1d286110b86c98262d8861a82e2c309c1a1f0482d052d8cdf4addbc5e23cc", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-F5UCY3/store/store.sqlite" + }, + "teardownMs": 40 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-b89e2f87374d437099c84dad25fa790b", + "id": "build-macos-b89e2f87374d437099c84dad25fa790b", + "platform": "macos", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "61f1485cb9fa906c282598b903635f782f3fa6c1c7fa2b2d1faaf136d23bd9e2", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 206, + "mismatched": [], + "imageArchives": [] + }, + "observed": { + "namespaces, no image settings": { + "opened": { + "refused": false, + "value": "opened" + }, + "created": { + "refused": true, + "code": "InvalidInput", + "message": "InvalidInput: deploy.image is not configured (LAYERFS_IMAGE)", + "detail": null + } + }, + "namespaces, with LAYERFS_IMAGE and LAYERFS_IMAGE_ARCHIVE": { + "opened": { + "refused": false, + "value": "opened" + }, + "created": { + "refused": true, + "code": "Unsupported", + "message": "Unsupported: deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces is Linux only; use native", + "detail": null + } + } + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:24.512Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C03-2026-10-31T203127016Z-vwuwjl44p2.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C03-2026-10-31T203127016Z-vwuwjl44p2.json new file mode 100644 index 000000000..86a568115 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C03-2026-10-31T203127016Z-vwuwjl44p2.json @@ -0,0 +1,128 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C03", + "verdict": "FAIL", + "cause": "setup: only 6931 ms left for the cell after setup", + "project": "c03", + "prefix": "lfs527-vwuwjl44p2-", + "startedAt": "2026-10-31T20:31:27.016Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.220703125, + "end": 5.853515625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-Y0U5Uz", + "initMs": 77921, + "volume": "lfs527-vwuwjl44p2-c03-store-mvwuwjlw", + "vm": { + "project": "c03", + "name": "lfs527-vwuwjl44p2-c03-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-Y0U5Uz/home", + "store": "lfs527-vwuwjl44p2-c03-vm-store", + "created": "2026-10-31T20:31:27Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 49327 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 78043, + "teardownMs": 492 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-vwuwjl44p2-c03-store-mvwuwjlw" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c03", + "name": "lfs527-vwuwjl44p2-c03-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuwjl44p2-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-Y0U5Uz/home/worker/c03.json" + }, + "error": { + "code": null, + "message": "only 6931 ms left for the cell after setup", + "detail": null + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:32:45.578Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C04-2026-10-31T203255077Z-vwuyfj95oy.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C04-2026-10-31T203255077Z-vwuyfj95oy.json new file mode 100644 index 000000000..0ff78f923 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C04-2026-10-31T203255077Z-vwuyfj95oy.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-vwuyfj95oy-", + "startedAt": "2026-10-31T20:32:55.077Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.3818359375, + "end": 8.2421875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-NgNJph", + "initMs": 69166, + "volume": "lfs527-vwuyfj95oy-c04-store-mvwuyfjt", + "vm": { + "project": "c04", + "name": "lfs527-vwuyfj95oy-c04-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-NgNJph/home", + "store": "lfs527-vwuyfj95oy-c04-vm-store", + "created": "2026-10-31T20:32:55Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 49455 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 69306, + "cellBudgetMs": 15665, + "teardownMs": 4115 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-vwuyfj95oy-c04-store-mvwuyfjt" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c04", + "name": "lfs527-vwuyfj95oy-c04-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuyfj95oy-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-NgNJph/home/worker/c04.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.2822265625, + "grantedAt": "2026-10-31T20:34:08.197Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 11.744, + "exec": { + "wallMs": 562.34, + "exitCode": 0, + "stdout": "LFS527 0 1793478847670617462 1793478848174553379\n", + "stderr": "", + "rc": 0, + "ms": 503.935917 + }, + "unmountMs": 4.796, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.733, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-vwuyfj95oy-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 466.815, + "exitCode": 0, + "stdout": "LFS527 0 1793478848230630921 1793478848667053504\n", + "stderr": "", + "rc": 0, + "ms": 436.422583 + }, + "commitMs": 78.031, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "126f7d7717e79d2fbc1a1fc7aa44d9395677553a37b7e81d49ce32ecab2c2e4dd5", + "commit": { + "id": "126f7d7717e79d2fbc1a1fc7aa44d9395677553a37b7e81d49ce32ecab2c2e4dd5", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3220ec0971a2ec53e3a1268519dd95675461968adef3fa116710b37c84dc04b38d", + "root": "2e9a26803b96418c9169ed70fb93aa426e35ae4db932ef636bcb4bb87a5a85aa", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793478848736, + "logical": 0, + "newCanonical": 109367, + "newStored": 8271, + "newMetadata": 8271, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 5.714, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.466, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.994, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3118.324, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 11.739, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 562.337, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.793, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.731, + "ok": true + }, + { + "name": "timed.exec", + "ms": 466.81, + "ok": true + }, + { + "name": "timed.commit", + "ms": 78.027, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 5.709, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.994, + "ok": true + }, + { + "name": "verify.identity", + "ms": 28.803, + "ok": true + }, + { + "name": "verify.exec", + "ms": 145.762, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.763, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1602.427, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3220ec0971a2ec53e3a1268519dd95675461968adef3fa116710b37c84dc04b38d", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 16.983, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.2822265625, + "grantedAt": "2026-10-31T20:34:08.197Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.733, + "execWallMs": 466.815, + "commandMs": 436.422583, + "commitMs": 78.031, + "commitKind": "Committed", + "unmountMs": 5.714 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:34:14.659Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C05-2026-10-31T203418501Z-vwv07wl6aq.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C05-2026-10-31T203418501Z-vwv07wl6aq.json new file mode 100644 index 000000000..3488efec5 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C05-2026-10-31T203418501Z-vwv07wl6aq.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-vwv07wl6aq-", + "startedAt": "2026-10-31T20:34:18.501Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.2421875, + "end": 5.126953125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-nphlDD", + "initMs": 69614, + "volume": "lfs527-vwv07wl6aq-c05-store-mvwv07xd", + "vm": { + "project": "c05", + "name": "lfs527-vwv07wl6aq-c05-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-nphlDD/home", + "store": "lfs527-vwv07wl6aq-c05-vm-store", + "created": "2026-10-31T20:34:18Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 49568 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 69750, + "cellBudgetMs": 15220, + "teardownMs": 703 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-vwv07wl6aq-c05-store-mvwv07xd" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c05", + "name": "lfs527-vwv07wl6aq-c05-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwv07wl6aq-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-nphlDD/home/worker/c05.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 5.3994140625, + "grantedAt": "2026-10-31T20:35:32.287Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 18.205, + "exec": { + "wallMs": 378.557, + "exitCode": 0, + "stdout": "LFS527 0 1793478931901424962 1793478932263693712\n", + "stderr": "", + "rc": 0, + "ms": 362.26875 + }, + "unmountMs": 4.935, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.032, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-vwv07wl6aq-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 393.115, + "exitCode": 0, + "stdout": "LFS527 0 1793478932302945421 1793478932678900254\n", + "stderr": "", + "rc": 0, + "ms": 375.954833 + }, + "commitMs": 80.728, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12debf3dad6c9a6ac5ed1491c435e8b62257f01f6eba3394a6c3eeb30709c40690", + "commit": { + "id": "12debf3dad6c9a6ac5ed1491c435e8b62257f01f6eba3394a6c3eeb30709c40690", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32d2590d07782bed35e543c0a81262e14c47cc42bb56379f7b804c3539904916da", + "root": "92fd60c9da35ccc5313e1c834f14fd587e012c0495f7ee28c73691ba900d4071", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793478932753, + "logical": 0, + "newCanonical": 109367, + "newStored": 8242, + "newMetadata": 8242, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.221, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.845, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.636, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3523.356, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 18.2, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 378.55, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.924, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.031, + "ok": true + }, + { + "name": "timed.exec", + "ms": 393.11, + "ok": true + }, + { + "name": "timed.commit", + "ms": 80.722, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.217, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.694, + "ok": true + }, + { + "name": "verify.identity", + "ms": 30.103, + "ok": true + }, + { + "name": "verify.exec", + "ms": 122.219, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.29, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1572.643, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d2590d07782bed35e543c0a81262e14c47cc42bb56379f7b804c3539904916da", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 8.158, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 5.3994140625, + "grantedAt": "2026-10-31T20:35:32.287Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.032, + "execWallMs": 393.115, + "commandMs": 375.954833, + "commitMs": 80.728, + "commitKind": "Committed", + "unmountMs": 4.221 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:35:35.217Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C06-2026-10-31T203539562Z-vwv1yga6lb.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C06-2026-10-31T203539562Z-vwv1yga6lb.json new file mode 100644 index 000000000..8fe46e2c9 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C06-2026-10-31T203539562Z-vwv1yga6lb.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-vwv1yga6lb-", + "startedAt": "2026-10-31T20:35:39.562Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 4.87646484375, + "end": 3.87109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-34NeWb", + "initMs": 69084, + "volume": "lfs527-vwv1yga6lb-c06-store-mvwv1yh0", + "vm": { + "project": "c06", + "name": "lfs527-vwv1yga6lb-c06-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-34NeWb/home", + "store": "lfs527-vwv1yga6lb-c06-vm-store", + "created": "2026-10-31T20:35:39Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 49632 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 69223, + "cellBudgetMs": 15744, + "teardownMs": 698 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-vwv1yga6lb-c06-store-mvwv1yh0" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c06", + "name": "lfs527-vwv1yga6lb-c06-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwv1yga6lb-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-34NeWb/home/worker/c06.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 3.8603515625, + "grantedAt": "2026-10-31T20:36:52.153Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.478, + "exec": { + "wallMs": 187.491, + "exitCode": 0, + "stdout": "LFS527 0 1793479011967997920 1793479012134726379\n", + "stderr": "", + "rc": 0, + "ms": 166.728459 + }, + "unmountMs": 14.839, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 29.716, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-vwv1yga6lb-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 145.633, + "exitCode": 0, + "stdout": "LFS527 0 1793479012197367045 1793479012328397504\n", + "stderr": "", + "rc": 0, + "ms": 131.030459 + }, + "commitMs": 218.767, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12ed20b3bed0bfe8b5c6a615b3d07c2876559bb8c90a89f33a875ca37d7442f8e5", + "commit": { + "id": "12ed20b3bed0bfe8b5c6a615b3d07c2876559bb8c90a89f33a875ca37d7442f8e5", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32d3efe832d34d6402cf7647a40ebda7c26a6381e285d84240f5b4fd4c1431bed7", + "root": "60cfd437a3ff38750db6ef34cb543f9c46da8f5a119b4e8a6c52f3116e1bbb52", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793479012514, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.027, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.919, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.205, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3058.843, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.472, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 187.487, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 14.836, + "ok": true + }, + { + "name": "timed.mount", + "ms": 29.713, + "ok": true + }, + { + "name": "timed.exec", + "ms": 145.63, + "ok": true + }, + { + "name": "timed.commit", + "ms": 218.764, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.025, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.203, + "ok": true + }, + { + "name": "verify.identity", + "ms": 24.839, + "ok": true + }, + { + "name": "verify.exec", + "ms": 138.68, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.005, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1031.918, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d3efe832d34d6402cf7647a40ebda7c26a6381e285d84240f5b4fd4c1431bed7", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 3.258, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 3.8603515625, + "grantedAt": "2026-10-31T20:36:52.153Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 29.716, + "execWallMs": 145.633, + "commandMs": 131.030459, + "commitMs": 218.767, + "commitKind": "Committed", + "unmountMs": 8.027 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:36:54.465Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C07-2026-10-31T203658654Z-vwv3nha7l4.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C07-2026-10-31T203658654Z-vwv3nha7l4.json new file mode 100644 index 000000000..e561532ab --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C07-2026-10-31T203658654Z-vwv3nha7l4.json @@ -0,0 +1,128 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C07", + "verdict": "FAIL", + "cause": "setup: only 14887 ms left for the cell after setup", + "project": "c07", + "prefix": "lfs527-vwv3nha7l4-", + "startedAt": "2026-10-31T20:36:58.654Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 3.87109375, + "end": 4.96142578125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-dqG2Cv", + "initMs": 69962, + "volume": "lfs527-vwv3nha7l4-c07-store-mvwv3ni2", + "vm": { + "project": "c07", + "name": "lfs527-vwv3nha7l4-c07-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-dqG2Cv/home", + "store": "lfs527-vwv3nha7l4-c07-vm-store", + "created": "2026-10-31T20:36:58Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 49751 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 70087, + "teardownMs": 3505 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-vwv3nha7l4-c07-store-mvwv3ni2" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c07", + "name": "lfs527-vwv3nha7l4-c07-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwv3nha7l4-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-dqG2Cv/home/worker/c07.json" + }, + "error": { + "code": null, + "message": "only 14887 ms left for the cell after setup", + "detail": null + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:38:12.273Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C08-2026-10-31T203816034Z-vwv5b6q938.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C08-2026-10-31T203816034Z-vwv5b6q938.json new file mode 100644 index 000000000..a71026c2b --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C08-2026-10-31T203816034Z-vwv5b6q938.json @@ -0,0 +1,128 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C08", + "verdict": "FAIL", + "cause": "setup: only 13038 ms left for the cell after setup", + "project": "c08", + "prefix": "lfs527-vwv5b6q938-", + "startedAt": "2026-10-31T20:38:16.034Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 4.80419921875, + "end": 6.7880859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-exZsKB", + "initMs": 71764, + "volume": "lfs527-vwv5b6q938-c08-store-mvwv5b7f", + "vm": { + "project": "c08", + "name": "lfs527-vwv5b6q938-c08-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-exZsKB/home", + "store": "lfs527-vwv5b6q938-c08-vm-store", + "created": "2026-10-31T20:38:16Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 49867 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 71928, + "teardownMs": 466 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-vwv5b6q938-c08-store-mvwv5b7f" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c08", + "name": "lfs527-vwv5b6q938-c08-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwv5b6q938-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-exZsKB/home/worker/c08.json" + }, + "error": { + "code": null, + "message": "only 13038 ms left for the cell after setup", + "detail": null + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:39:28.462Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C09-2026-10-31T203933153Z-vwv6yoxazr.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C09-2026-10-31T203933153Z-vwv6yoxazr.json new file mode 100644 index 000000000..3ee737c83 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C09-2026-10-31T203933153Z-vwv6yoxazr.json @@ -0,0 +1,378 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-vwv6yoxazr-", + "startedAt": "2026-10-31T20:39:33.153Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.96484375, + "end": 4.51123046875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-MWZi0A", + "initMs": 69629, + "volume": "lfs527-vwv6yoxazr-c09-store-mvwv6ype", + "vm": { + "project": "c09", + "name": "lfs527-vwv6yoxazr-c09-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-MWZi0A/home", + "store": "lfs527-vwv6yoxazr-c09-vm-store", + "created": "2026-10-31T20:39:33Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 50113 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 69738, + "cellBudgetMs": 15242, + "teardownMs": 927 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-vwv6yoxazr-c09-store-mvwv6ype" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c09", + "name": "lfs527-vwv6yoxazr-c09-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwv6yoxazr-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-MWZi0A/home/worker/c09.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 4.46875, + "grantedAt": "2026-10-31T20:40:48.004Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 148.823, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12505fac56d012b37839119d73e5a5fd96dbd63ca90fd55ac61a67227eab2c27c9", + "commit": { + "id": "12505fac56d012b37839119d73e5a5fd96dbd63ca90fd55ac61a67227eab2c27c9", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3284a49aeefadb699d69fe72af52fed44e15943e33bfbbf436521fa302ecc8f7af", + "root": "de9f846369e8758c61449f0a19815f13200f5195e84cc552751766cd3c806b10", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793479247891, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.397, + "exec": { + "wallMs": 54.039, + "exitCode": 0, + "stdout": "LFS527 0 1793479247957522921 1793479247992614463\n", + "stderr": "", + "rc": 0, + "ms": 35.091542 + }, + "unmountMs": 5.533, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.599, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-vwv6yoxazr-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 54.263, + "exitCode": 0, + "stdout": "LFS527 0 1793479248028734463 1793479248061178380\n", + "stderr": "", + "rc": 0, + "ms": 32.443917 + }, + "commitMs": 1.241, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12505fac56d012b37839119d73e5a5fd96dbd63ca90fd55ac61a67227eab2c27c9", + "root": "de9f846369e8758c61449f0a19815f13200f5195e84cc552751766cd3c806b10", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 5.453, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.4, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.723, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4590.309, + "ok": true + }, + { + "name": "setup.mount", + "ms": 8.611, + "ok": true + }, + { + "name": "setup.exec", + "ms": 148.819, + "ok": true + }, + { + "name": "setup.commit", + "ms": 222.628, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 9.36, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.394, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 54.035, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 5.531, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.596, + "ok": true + }, + { + "name": "timed.exec", + "ms": 54.261, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1.239, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 5.451, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.246, + "ok": true + }, + { + "name": "verify.identity", + "ms": 18.97, + "ok": true + }, + { + "name": "verify.exec", + "ms": 124.11, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.176, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1301.759, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3284a49aeefadb699d69fe72af52fed44e15943e33bfbbf436521fa302ecc8f7af", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 2.856, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 4.46875, + "grantedAt": "2026-10-31T20:40:48.004Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.599, + "execWallMs": 54.263, + "commandMs": 32.443917, + "commitMs": 1.241, + "commitKind": "UpToDate", + "unmountMs": 5.453 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:40:50.456Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C10-2026-10-31T204054322Z-vwv8pbmbli.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C10-2026-10-31T204054322Z-vwv8pbmbli.json new file mode 100644 index 000000000..199fe5e93 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C10-2026-10-31T204054322Z-vwv8pbmbli.json @@ -0,0 +1,397 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-vwv8pbmbli-", + "startedAt": "2026-10-31T20:40:54.322Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 4.22998046875, + "end": 4.86572265625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-83mZIc", + "initMs": 67024, + "volume": "lfs527-vwv8pbmbli-c10-store-mvwv8pcc", + "vm": { + "project": "c10", + "name": "lfs527-vwv8pbmbli-c10-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-83mZIc/home", + "store": "lfs527-vwv8pbmbli-c10-vm-store", + "created": "2026-10-31T20:40:54Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 50253 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 67184, + "cellBudgetMs": 17788, + "teardownMs": 1066 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-vwv8pbmbli-c10-store-mvwv8pcc" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c10", + "name": "lfs527-vwv8pbmbli-c10-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwv8pbmbli-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-83mZIc/home/worker/c10.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 4.86572265625, + "grantedAt": "2026-10-31T20:42:05.962Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 115.728, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a3de7b91533d9dbedd185b29ddbe8294fa0a45d761333a8d029ffda161463ffb", + "commit": { + "id": "12a3de7b91533d9dbedd185b29ddbe8294fa0a45d761333a8d029ffda161463ffb", + "branch": null, + "parent": null, + "secondParent": null, + "base": "327c0a51501bb983988d5dbdb272a7ff77013c140910181a127acbd5a0d6856398", + "root": "68b6cb0afeaf9ea86770b9bca6c098201ba368c4868a8dbdd2213f83eb75f793", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793479325230, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 38.708, + "exec": { + "wallMs": 601.849, + "exitCode": 0, + "stdout": "LFS527 0 1793479325337377544 1793479325919562920\n", + "stderr": "", + "rc": 0, + "ms": 582.185376 + }, + "unmountMs": 26.503, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 22.033, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-vwv8pbmbli-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 189.991, + "exitCode": 0, + "stdout": "LFS527 0 1793479326009079545 1793479326178616336\n", + "stderr": "", + "rc": 0, + "ms": 169.536791 + }, + "commitMs": 34.227, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12d8c1a591851e1d07b1b7dedf1922d1e3d50999df36232324682cffc71ebff116", + "commit": { + "id": "12d8c1a591851e1d07b1b7dedf1922d1e3d50999df36232324682cffc71ebff116", + "branch": null, + "parent": "12a3de7b91533d9dbedd185b29ddbe8294fa0a45d761333a8d029ffda161463ffb", + "secondParent": null, + "base": "327c0a51501bb983988d5dbdb272a7ff77013c140910181a127acbd5a0d6856398", + "root": "7827cbb1b1752089c1d173322ba54acdd28b07752a903133fab0f43a191f9d26", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793479326181, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 9.076, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 20.097, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.206, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3306.607, + "ok": true + }, + { + "name": "setup.mount", + "ms": 6.656, + "ok": true + }, + { + "name": "setup.exec", + "ms": 115.717, + "ok": true + }, + { + "name": "setup.commit", + "ms": 231.784, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 13.99, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 38.706, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 601.846, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 26.499, + "ok": true + }, + { + "name": "timed.mount", + "ms": 22.03, + "ok": true + }, + { + "name": "timed.exec", + "ms": 189.989, + "ok": true + }, + { + "name": "timed.commit", + "ms": 34.224, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 9.073, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.547, + "ok": true + }, + { + "name": "verify.identity", + "ms": 25.71, + "ok": true + }, + { + "name": "verify.exec", + "ms": 241.588, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.009, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1302.173, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "327c0a51501bb983988d5dbdb272a7ff77013c140910181a127acbd5a0d6856398", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 17.196, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 4.86572265625, + "grantedAt": "2026-10-31T20:42:05.962Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 22.033, + "execWallMs": 189.991, + "commandMs": 169.536791, + "commitMs": 34.227, + "commitKind": "Committed", + "unmountMs": 9.076 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:42:08.878Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C11-2026-10-31T204212774Z-vwvaduucx0.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C11-2026-10-31T204212774Z-vwvaduucx0.json new file mode 100644 index 000000000..4c530f818 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C11-2026-10-31T204212774Z-vwvaduucx0.json @@ -0,0 +1,378 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-vwvaduucx0-", + "startedAt": "2026-10-31T20:42:12.774Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 5.83740234375, + "end": 4.84912109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-1kod33", + "initMs": 69661, + "volume": "lfs527-vwvaduucx0-c11-store-mvwvadvn", + "vm": { + "project": "c11", + "name": "lfs527-vwvaduucx0-c11-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-1kod33/home", + "store": "lfs527-vwvaduucx0-c11-vm-store", + "created": "2026-10-31T20:42:12Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 50523 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 69778, + "cellBudgetMs": 15200, + "teardownMs": 863 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-vwvaduucx0-c11-store-mvwvadvn" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c11", + "name": "lfs527-vwvaduucx0-c11-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwvaduucx0-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-1kod33/home/worker/c11.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 4.84912109375, + "grantedAt": "2026-10-31T20:43:26.430Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 144.856, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12eec9942f5095452442d2d7083aef64a2c38eeeff770b771c62e8a8671f765c16", + "commit": { + "id": "12eec9942f5095452442d2d7083aef64a2c38eeeff770b771c62e8a8671f765c16", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32ce8f5f64d24a3e673cbb306e434e4696e085d66e644c95cae4c782ce8f7d465e", + "root": "b3dd4036d7aca0971e2f219231b6142c8bb0aa531a21ff7c87d20cb4e174dec9", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793479406286, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.737, + "exec": { + "wallMs": 86.442, + "exitCode": 0, + "stdout": "LFS527 0 1793479406356552754 1793479406419128963\n", + "stderr": "", + "rc": 0, + "ms": 62.576209 + }, + "unmountMs": 8.391, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.915, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-vwvaduucx0-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 100.056, + "exitCode": 0, + "stdout": "LFS527 0 1793479406460575546 1793479406536721254\n", + "stderr": "", + "rc": 0, + "ms": 76.145708 + }, + "commitMs": 104.442, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12eec9942f5095452442d2d7083aef64a2c38eeeff770b771c62e8a8671f765c16", + "root": "b3dd4036d7aca0971e2f219231b6142c8bb0aa531a21ff7c87d20cb4e174dec9", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 9.259, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.219, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.408, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3320.096, + "ok": true + }, + { + "name": "setup.mount", + "ms": 7.36, + "ok": true + }, + { + "name": "setup.exec", + "ms": 144.852, + "ok": true + }, + { + "name": "setup.commit", + "ms": 221.775, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 8.755, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.735, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 86.44, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.389, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.912, + "ok": true + }, + { + "name": "timed.exec", + "ms": 100.054, + "ok": true + }, + { + "name": "timed.commit", + "ms": 104.439, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 9.256, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.423, + "ok": true + }, + { + "name": "verify.identity", + "ms": 39.867, + "ok": true + }, + { + "name": "verify.exec", + "ms": 141.674, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.223, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1095.182, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32ce8f5f64d24a3e673cbb306e434e4696e085d66e644c95cae4c782ce8f7d465e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 2.348, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 4.84912109375, + "grantedAt": "2026-10-31T20:43:26.430Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.915, + "execWallMs": 100.056, + "commandMs": 76.145708, + "commitMs": 104.442, + "commitKind": "UpToDate", + "unmountMs": 9.259 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:43:28.804Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C12-2026-10-31T204332939Z-vwvc3pndhf.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C12-2026-10-31T204332939Z-vwvc3pndhf.json new file mode 100644 index 000000000..b9e0c98ca --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-apple-container-C12-2026-10-31T204332939Z-vwvc3pndhf.json @@ -0,0 +1,128 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C12", + "verdict": "FAIL", + "cause": "setup: only 14884 ms left for the cell after setup", + "project": "c12", + "prefix": "lfs527-vwvc3pndhf-", + "startedAt": "2026-10-31T20:43:32.939Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 4.62060546875, + "end": 5.36279296875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-Wpfc4K", + "initMs": 69947, + "volume": "lfs527-vwvc3pndhf-c12-store-mvwvc3q9", + "vm": { + "project": "c12", + "name": "lfs527-vwvc3pndhf-c12-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-Wpfc4K/home", + "store": "lfs527-vwvc3pndhf-c12-vm-store", + "created": "2026-10-31T20:43:33Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 50685 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 70091, + "teardownMs": 435 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-vwvc3pndhf-c12-store-mvwvc3q9" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c12", + "name": "lfs527-vwvc3pndhf-c12-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwvc3pndhf-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-Wpfc4K/home/worker/c12.json" + }, + "error": { + "code": null, + "message": "only 14884 ms left for the cell after setup", + "detail": null + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:44:43.490Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C01-2026-10-31T202528263Z-wuourr1t1d.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C01-2026-10-31T202528263Z-wuourr1t1d.json new file mode 100644 index 000000000..5409ba26f --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C01-2026-10-31T202528263Z-wuourr1t1d.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wuourr1t1d-", + "startedAt": "2026-10-31T20:25:28.263Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 3.23291015625, + "end": 6.1962890625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-3DZsT6", + "initMs": 8616, + "volume": "lfs527-wuourr1t1d-c01-store-mvwuousi", + "vm": { + "project": "c01", + "name": "lfs527-wuourr1t1d-c01-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-3DZsT6/home", + "store": "lfs527-wuourr1t1d-c01-vm-store", + "created": "2026-10-31T20:25:28.430178+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64320 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 8772, + "cellBudgetMs": 76189, + "teardownMs": 478 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-wuourr1t1d-c01-store-mvwuousi" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c01", + "name": "lfs527-wuourr1t1d-c01-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuourr1t1d-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-3DZsT6/home/worker/c01.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 8713, + "load1": 6.1962890625, + "grantedAt": "2026-10-31T20:25:50.739Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.065, + "exec": { + "wallMs": 353.72, + "exitCode": 0, + "stdout": "LFS527 0 1793478341666742131 1793478342015835339\n", + "stderr": "", + "rc": 0, + "ms": 349.093208 + }, + "unmountMs": 8.412, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 14.728, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wuourr1t1d-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 369.954, + "exitCode": 0, + "stdout": "LFS527 0 1793478350826214135 1793478351127012094\n", + "stderr": "", + "rc": 0, + "ms": 300.797959 + }, + "commitMs": 104.323, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1275e1ddcb83f78fc6615623b2ca818da2381a5133ff46497ee1a0bc906b1cb594", + "commit": { + "id": "1275e1ddcb83f78fc6615623b2ca818da2381a5133ff46497ee1a0bc906b1cb594", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32ccca27ebbba710806afc3320170265635c983de529229ec42141a3945589c8ed", + "root": "0997d04e7ce2ab25d80375520f22bb3bf2539500a12fc5c8f339b3fe89ff43dd", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793478351223, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 6.298, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.558, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.354, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4504.295, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.062, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 353.715, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.409, + "ok": true + }, + { + "name": "timed.mount", + "ms": 14.725, + "ok": true + }, + { + "name": "timed.exec", + "ms": 369.951, + "ok": true + }, + { + "name": "timed.commit", + "ms": 104.32, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 6.296, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.07, + "ok": true + }, + { + "name": "verify.identity", + "ms": 52.085, + "ok": true + }, + { + "name": "verify.exec", + "ms": 399.654, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 20.219, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 486.922, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32ccca27ebbba710806afc3320170265635c983de529229ec42141a3945589c8ed", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 8717.643, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 8713, + "load1": 6.1962890625, + "grantedAt": "2026-10-31T20:25:50.739Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 14.728, + "execWallMs": 369.954, + "commandMs": 300.797959, + "commitMs": 104.323, + "commitKind": "Committed", + "unmountMs": 6.298 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:52.686Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C02-2026-10-31T202600876Z-wupjxn1vus.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C02-2026-10-31T202600876Z-wupjxn1vus.json new file mode 100644 index 000000000..d90833e2b --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C02-2026-10-31T202600876Z-wupjxn1vus.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wupjxn1vus-", + "startedAt": "2026-10-31T20:26:00.876Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.95654296875, + "end": 8.25244140625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-wZvCKC", + "initMs": 9108, + "volume": "lfs527-wupjxn1vus-c02-store-mvwupjyh", + "vm": { + "project": "c02", + "name": "lfs527-wupjxn1vus-c02-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-wZvCKC/home", + "store": "lfs527-wupjxn1vus-c02-vm-store", + "created": "2026-10-31T20:26:01.050709+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64444 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 9231, + "cellBudgetMs": 75741, + "teardownMs": 280 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-wupjxn1vus-c02-store-mvwupjyh" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c02", + "name": "lfs527-wupjxn1vus-c02-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wupjxn1vus-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-wZvCKC/home/worker/c02.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.25244140625, + "grantedAt": "2026-10-31T20:26:15.458Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.238, + "exec": { + "wallMs": 915.619, + "exitCode": 0, + "stdout": "LFS527 0 1793478374535674756 1793478375446009798\n", + "stderr": "", + "rc": 0, + "ms": 910.335042 + }, + "unmountMs": 9.4, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.409, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wupjxn1vus-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 960.883, + "exitCode": 0, + "stdout": "LFS527 0 1793478375508639715 1793478376423930840\n", + "stderr": "", + "rc": 0, + "ms": 915.291125 + }, + "commitMs": 96.279, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e0c866d3f23b52e130b22db33e024c785b6463799a0a9fe0c4ebcbd1b6c2bdef", + "commit": { + "id": "12e0c866d3f23b52e130b22db33e024c785b6463799a0a9fe0c4ebcbd1b6c2bdef", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32a4d9ddc0b74c788268a5ff7dd47208333f29ef078dc13950f726d503037a401c", + "root": "69777d928c7555fcf727844a77853aa1687018360446f96c42e5868d8d305c77", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793478376511, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 9.019, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 3.968, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.033, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4316.459, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.234, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 915.614, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 9.398, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.407, + "ok": true + }, + { + "name": "timed.exec", + "ms": 960.879, + "ok": true + }, + { + "name": "timed.commit", + "ms": 96.275, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 9.015, + "ok": true + }, + { + "name": "verify.mount", + "ms": 7.837, + "ok": true + }, + { + "name": "verify.identity", + "ms": 57.545, + "ok": true + }, + { + "name": "verify.exec", + "ms": 564.555, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.197, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 318.189, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32a4d9ddc0b74c788268a5ff7dd47208333f29ef078dc13950f726d503037a401c", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.803, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.25244140625, + "grantedAt": "2026-10-31T20:26:15.458Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.409, + "execWallMs": 960.883, + "commandMs": 915.291125, + "commitMs": 96.279, + "commitKind": "Committed", + "unmountMs": 9.019 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:17.771Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C03-2026-10-31T202617983Z-wupx4v1ysg.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C03-2026-10-31T202617983Z-wupx4v1ysg.json new file mode 100644 index 000000000..f7c79deb3 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C03-2026-10-31T202617983Z-wupx4v1ysg.json @@ -0,0 +1,317 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wupx4v1ysg-", + "startedAt": "2026-10-31T20:26:17.983Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.25244140625, + "end": 9.21044921875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-j0KFGU", + "initMs": 8926, + "volume": "lfs527-wupx4v1ysg-c03-store-mvwupx5l", + "vm": { + "project": "c03", + "name": "lfs527-wupx4v1ysg-c03-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-j0KFGU/home", + "store": "lfs527-wupx4v1ysg-c03-vm-store", + "created": "2026-10-31T20:26:18.150742+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64509 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 9028, + "cellBudgetMs": 75930, + "teardownMs": 248 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-wupx4v1ysg-c03-store-mvwupx5l" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c03", + "name": "lfs527-wupx4v1ysg-c03-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wupx4v1ysg-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-j0KFGU/home/worker/c03.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.21044921875, + "grantedAt": "2026-10-31T20:26:32.163Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.414, + "exec": { + "wallMs": 467.277, + "exitCode": 0, + "stdout": "LFS527 0 1793478391688819631 1793478392151647548\n", + "stderr": "", + "rc": 0, + "ms": 462.827917 + }, + "unmountMs": 8.464, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.252, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wupx4v1ysg-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 509.86, + "exitCode": 0, + "stdout": "LFS527 0 1793478392221698131 1793478392678476381\n", + "stderr": "", + "rc": 0, + "ms": 456.77825 + }, + "commitMs": 9.104, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "cc965c074d87bc19d11a0520f4587cbce784f36d9223786283ef2121564494f6", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 11.845, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.69, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.377, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4454.879, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.411, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 467.271, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.461, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.249, + "ok": true + }, + { + "name": "timed.exec", + "ms": 509.857, + "ok": true + }, + { + "name": "timed.commit", + "ms": 9.1, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 11.842, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.947, + "ok": true + }, + { + "name": "verify.identity", + "ms": 69.511, + "ok": true + }, + { + "name": "verify.exec", + "ms": 4.646, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.228, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 536.587, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "329b33ec9dc7f91200634c9fcc96737637ad07d87c2e41ec5fff5d3c60c0ea36e8", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.779, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.21044921875, + "grantedAt": "2026-10-31T20:26:32.163Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.252, + "execWallMs": 509.86, + "commandMs": 456.77825, + "commitMs": 9.104, + "commitKind": "UpToDate", + "unmountMs": 11.845 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:33.575Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C04-2026-10-31T202633783Z-wuq9br20uo.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C04-2026-10-31T202633783Z-wuq9br20uo.json new file mode 100644 index 000000000..b5e16e881 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C04-2026-10-31T202633783Z-wuq9br20uo.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wuq9br20uo-", + "startedAt": "2026-10-31T20:26:33.783Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.79296875, + "end": 10.0625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-S0tZVg", + "initMs": 9206, + "volume": "lfs527-wuq9br20uo-c04-store-mvwuq9cg", + "vm": { + "project": "c04", + "name": "lfs527-wuq9br20uo-c04-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-S0tZVg/home", + "store": "lfs527-wuq9br20uo-c04-vm-store", + "created": "2026-10-31T20:26:33.946334+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64569 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 9320, + "cellBudgetMs": 75650, + "teardownMs": 294 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-wuq9br20uo-c04-store-mvwuq9cg" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c04", + "name": "lfs527-wuq9br20uo-c04-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuq9br20uo-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-S0tZVg/home/worker/c04.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.0625, + "grantedAt": "2026-10-31T20:26:49.438Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.508, + "exec": { + "wallMs": 813.419, + "exitCode": 0, + "stdout": "LFS527 0 1793478408639147965 1793478409447363590\n", + "stderr": "", + "rc": 0, + "ms": 808.215625 + }, + "unmountMs": 8.916, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.551, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wuq9br20uo-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 748.52, + "exitCode": 0, + "stdout": "LFS527 0 1793478409486869048 1793478410215249215\n", + "stderr": "", + "rc": 0, + "ms": 728.380167 + }, + "commitMs": 105.031, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a2f1a972b02c5427990618afb15834d16cceb5c95cdc51f07c98471638b99546", + "commit": { + "id": "12a2f1a972b02c5427990618afb15834d16cceb5c95cdc51f07c98471638b99546", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32d6eb0c146d95ccbe0872944bae02a6d955d99af987507270505173a7568d91e9", + "root": "e9b2d95f8ece6795fa7ad15222d2982f6c89c4eb281e540b8b3821be299f3d3a", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793478410312, + "logical": 0, + "newCanonical": 109367, + "newStored": 8264, + "newMetadata": 8264, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 6.236, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.663, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.462, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 5405.354, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.504, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 813.414, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.913, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.549, + "ok": true + }, + { + "name": "timed.exec", + "ms": 748.516, + "ok": true + }, + { + "name": "timed.commit", + "ms": 105.028, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 6.234, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.739, + "ok": true + }, + { + "name": "verify.identity", + "ms": 38.884, + "ok": true + }, + { + "name": "verify.exec", + "ms": 328.616, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.143, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1133.348, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d6eb0c146d95ccbe0872944bae02a6d955d99af987507270505173a7568d91e9", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 3.974, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.0625, + "grantedAt": "2026-10-31T20:26:49.438Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.551, + "execWallMs": 748.52, + "commandMs": 728.380167, + "commitMs": 105.031, + "commitKind": "Committed", + "unmountMs": 6.236 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:52.113Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C05-2026-10-31T202652348Z-wuqnng21iv.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C05-2026-10-31T202652348Z-wuqnng21iv.json new file mode 100644 index 000000000..a79d61270 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C05-2026-10-31T202652348Z-wuqnng21iv.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wuqnng21iv-", + "startedAt": "2026-10-31T20:26:52.348Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.0625, + "end": 10.77197265625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-UlDDyG", + "initMs": 8825, + "volume": "lfs527-wuqnng21iv-c05-store-mvwuqno7", + "vm": { + "project": "c05", + "name": "lfs527-wuqnng21iv-c05-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-UlDDyG/home", + "store": "lfs527-wuqnng21iv-c05-vm-store", + "created": "2026-10-31T20:26:52.525997+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64651 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 8980, + "cellBudgetMs": 75991, + "teardownMs": 322 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-wuqnng21iv-c05-store-mvwuqno7" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c05", + "name": "lfs527-wuqnng21iv-c05-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqnng21iv-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-UlDDyG/home/worker/c05.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.8818359375, + "grantedAt": "2026-10-31T20:27:06.338Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 10.051, + "exec": { + "wallMs": 740.352, + "exitCode": 0, + "stdout": "LFS527 0 1793478425598943547 1793478426334171798\n", + "stderr": "", + "rc": 0, + "ms": 735.228251 + }, + "unmountMs": 7.584, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 8.721, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wuqnng21iv-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 927.974, + "exitCode": 0, + "stdout": "LFS527 0 1793478426425157423 1793478427280402173\n", + "stderr": "", + "rc": 0, + "ms": 855.24475 + }, + "commitMs": 108.827, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1218ce3ce602386382434314f77896f4ec70dfadccd4ad4665a797dc704b616253", + "commit": { + "id": "1218ce3ce602386382434314f77896f4ec70dfadccd4ad4665a797dc704b616253", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32be477e568eed400ee3d64e3f0cc7d50485cc26afff7bd6a16e8259feba20db32", + "root": "37f518a20ffa807e8718bf83bf313393963912571331fa51f1d74497308f6122", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793478427381, + "logical": 0, + "newCanonical": 109367, + "newStored": 8270, + "newMetadata": 8270, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.82, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.455, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.195, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4152.814, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 10.047, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 740.346, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 7.581, + "ok": true + }, + { + "name": "timed.mount", + "ms": 8.718, + "ok": true + }, + { + "name": "timed.exec", + "ms": 927.971, + "ok": true + }, + { + "name": "timed.commit", + "ms": 108.824, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.817, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.555, + "ok": true + }, + { + "name": "verify.identity", + "ms": 53.892, + "ok": true + }, + { + "name": "verify.exec", + "ms": 365.306, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.037, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 883.635, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32be477e568eed400ee3d64e3f0cc7d50485cc26afff7bd6a16e8259feba20db32", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.511, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.8818359375, + "grantedAt": "2026-10-31T20:27:06.338Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 8.721, + "execWallMs": 927.974, + "commandMs": 855.24475, + "commitMs": 108.827, + "commitKind": "Committed", + "unmountMs": 8.82 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:09.036Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C06-2026-10-31T202714274Z-wur4ki228p.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C06-2026-10-31T202714274Z-wur4ki228p.json new file mode 100644 index 000000000..081700b71 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C06-2026-10-31T202714274Z-wur4ki228p.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wur4ki228p-", + "startedAt": "2026-10-31T20:27:14.274Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.7900390625, + "end": 10.12255859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-N2HllS", + "initMs": 11654, + "volume": "lfs527-wur4ki228p-c06-store-mvwur4la", + "vm": { + "project": "c06", + "name": "lfs527-wur4ki228p-c06-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-N2HllS/home", + "store": "lfs527-wur4ki228p-c06-vm-store", + "created": "2026-10-31T20:27:14.472178+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64752 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 11769, + "cellBudgetMs": 73201, + "teardownMs": 302 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-wur4ki228p-c06-store-mvwur4la" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c06", + "name": "lfs527-wur4ki228p-c06-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wur4ki228p-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-N2HllS/home/worker/c06.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 306, + "load1": 10.12255859375, + "grantedAt": "2026-10-31T20:27:30.290Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 11.358, + "exec": { + "wallMs": 166.514, + "exitCode": 0, + "stdout": "LFS527 0 1793478449806314423 1793478449967425507\n", + "stderr": "", + "rc": 0, + "ms": 161.111084 + }, + "unmountMs": 16.166, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.781, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wur4ki228p-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 160.483, + "exitCode": 0, + "stdout": "LFS527 0 1793478450322214340 1793478450457975965\n", + "stderr": "", + "rc": 0, + "ms": 135.761625 + }, + "commitMs": 301.371, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "121ce2e467890becaba21d3b456910b848b1d626820bbc61d53c71f48f52fa1bd2", + "commit": { + "id": "121ce2e467890becaba21d3b456910b848b1d626820bbc61d53c71f48f52fa1bd2", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32fcfc12cd6a78a478cd69690b9436af500374d9294887e0f010a9bf39b6ce697d", + "root": "40f55ac6f58a5254f36444e5535266783745df328aade4343f17c5c2ac599a4d", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793478450714, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 11.538, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.119, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.07, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3652.024, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 11.35, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 166.508, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 16.163, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.778, + "ok": true + }, + { + "name": "timed.exec", + "ms": 160.48, + "ok": true + }, + { + "name": "timed.commit", + "ms": 301.368, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 11.535, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.206, + "ok": true + }, + { + "name": "verify.identity", + "ms": 53.433, + "ok": true + }, + { + "name": "verify.exec", + "ms": 267.529, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 17.168, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 605.292, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32fcfc12cd6a78a478cd69690b9436af500374d9294887e0f010a9bf39b6ce697d", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 307.692, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 306, + "load1": 10.12255859375, + "grantedAt": "2026-10-31T20:27:30.290Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.781, + "execWallMs": 160.483, + "commandMs": 135.761625, + "commitMs": 301.371, + "commitKind": "Committed", + "unmountMs": 11.538 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:32.024Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C07-2026-10-31T202735256Z-wurkrc22sx.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C07-2026-10-31T202735256Z-wurkrc22sx.json new file mode 100644 index 000000000..17d2d9701 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C07-2026-10-31T202735256Z-wurkrc22sx.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wurkrc22sx-", + "startedAt": "2026-10-31T20:27:35.256Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.0322265625, + "end": 9.51416015625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-6dPZlj", + "initMs": 9013, + "volume": "lfs527-wurkrc22sx-c07-store-mvwurks3", + "vm": { + "project": "c07", + "name": "lfs527-wurkrc22sx-c07-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-6dPZlj/home", + "store": "lfs527-wurkrc22sx-c07-vm-store", + "created": "2026-10-31T20:27:35.420022+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64841 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 9168, + "cellBudgetMs": 75804, + "teardownMs": 291 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-wurkrc22sx-c07-store-mvwurks3" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c07", + "name": "lfs527-wurkrc22sx-c07-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wurkrc22sx-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-6dPZlj/home/worker/c07.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.55908203125, + "grantedAt": "2026-10-31T20:27:48.607Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.923, + "exec": { + "wallMs": 316.138, + "exitCode": 0, + "stdout": "LFS527 0 1793478468265511214 1793478468577026922\n", + "stderr": "", + "rc": 0, + "ms": 311.515708 + }, + "unmountMs": 27.583, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.215, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wurkrc22sx-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 376.99, + "exitCode": 0, + "stdout": "LFS527 0 1793478468672245464 1793478468990439423\n", + "stderr": "", + "rc": 0, + "ms": 318.193959 + }, + "commitMs": 600.66, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12fefd3d1f7f16dbad39e0701680d2fcf22090a660446f5405322ed45bb153b0bf", + "commit": { + "id": "12fefd3d1f7f16dbad39e0701680d2fcf22090a660446f5405322ed45bb153b0bf", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32f2939966110ddf70e3ad487a266baf65a8806ec4e5142bef1bc8c050acda4daa", + "root": "4ec06c001e03d1091814338a671f56ab6c79a9a7a2d27482950f666618ebc211", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793478469501, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 14.787, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.002, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.296, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3731.761, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.919, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 316.133, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 27.579, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.212, + "ok": true + }, + { + "name": "timed.exec", + "ms": 376.987, + "ok": true + }, + { + "name": "timed.commit", + "ms": 600.657, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 14.784, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.937, + "ok": true + }, + { + "name": "verify.identity", + "ms": 44.911, + "ok": true + }, + { + "name": "verify.exec", + "ms": 528.754, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 17.846, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 672.904, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32f2939966110ddf70e3ad487a266baf65a8806ec4e5142bef1bc8c050acda4daa", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.994, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.55908203125, + "grantedAt": "2026-10-31T20:27:48.607Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.215, + "execWallMs": 376.99, + "commandMs": 318.193959, + "commitMs": 600.66, + "commitKind": "Committed", + "unmountMs": 14.787 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:51.170Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C08-2026-10-31T202754408Z-wurzjc231u.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C08-2026-10-31T202754408Z-wurzjc231u.json new file mode 100644 index 000000000..efddab9e2 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C08-2026-10-31T202754408Z-wurzjc231u.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wurzjc231u-", + "startedAt": "2026-10-31T20:27:54.408Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.83203125, + "end": 8.40234375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-gBjaVq", + "initMs": 8325, + "volume": "lfs527-wurzjc231u-c08-store-mvwurzk3", + "vm": { + "project": "c08", + "name": "lfs527-wurzjc231u-c08-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-gBjaVq/home", + "store": "lfs527-wurzjc231u-c08-vm-store", + "created": "2026-10-31T20:27:54.574929+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64873 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 8437, + "cellBudgetMs": 76533, + "teardownMs": 267 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-wurzjc231u-c08-store-mvwurzk3" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c08", + "name": "lfs527-wurzjc231u-c08-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wurzjc231u-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-gBjaVq/home/worker/c08.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.40234375, + "grantedAt": "2026-10-31T20:28:06.709Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 9.735, + "exec": { + "wallMs": 219.07, + "exitCode": 0, + "stdout": "LFS527 0 1793478486525070005 1793478486686649380\n", + "stderr": "", + "rc": 0, + "ms": 161.579375 + }, + "unmountMs": 16.321, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.864, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wurzjc231u-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 198.557, + "exitCode": 0, + "stdout": "LFS527 0 1793478486762662755 1793478486914130797\n", + "stderr": "", + "rc": 0, + "ms": 151.468042 + }, + "commitMs": 304.779, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "128a40b3898921bd0b592a2c3293ceae509ebb55a632e4a6b8b3ec89bcd384757b", + "commit": { + "id": "128a40b3898921bd0b592a2c3293ceae509ebb55a632e4a6b8b3ec89bcd384757b", + "branch": null, + "parent": null, + "secondParent": null, + "base": "322d6add9dd30041544536d205b7bb118b2e48ce689f48feac5fe8d5d0fcf09830", + "root": "907d8c2d0796360e0b186216b2ac3206cbe5a7a5d942629a78c3d4f7f7bf5450", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793478487175, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 12.364, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.166, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.419, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3522.001, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 9.732, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 219.064, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 16.317, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.862, + "ok": true + }, + { + "name": "timed.exec", + "ms": 198.554, + "ok": true + }, + { + "name": "timed.commit", + "ms": 304.776, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 12.361, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.091, + "ok": true + }, + { + "name": "verify.identity", + "ms": 62.994, + "ok": true + }, + { + "name": "verify.exec", + "ms": 220.396, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.233, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 567.555, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "322d6add9dd30041544536d205b7bb118b2e48ce689f48feac5fe8d5d0fcf09830", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 5.263, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.40234375, + "grantedAt": "2026-10-31T20:28:06.709Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.864, + "execWallMs": 198.557, + "commandMs": 151.468042, + "commitMs": 304.779, + "commitKind": "Committed", + "unmountMs": 12.364 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:28:08.369Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C09-2026-10-31T202811985Z-wusd3l23ae.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C09-2026-10-31T202811985Z-wusd3l23ae.json new file mode 100644 index 000000000..6fb0cc511 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C09-2026-10-31T202811985Z-wusd3l23ae.json @@ -0,0 +1,378 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wusd3l23ae-", + "startedAt": "2026-10-31T20:28:11.985Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.2099609375, + "end": 7.92236328125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-tdD6vr", + "initMs": 8023, + "volume": "lfs527-wusd3l23ae-c09-store-mvwusd4d", + "vm": { + "project": "c09", + "name": "lfs527-wusd3l23ae-c09-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-tdD6vr/home", + "store": "lfs527-wusd3l23ae-c09-vm-store", + "created": "2026-10-31T20:28:12.147539+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64902 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 8155, + "cellBudgetMs": 76816, + "teardownMs": 360 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-wusd3l23ae-c09-store-mvwusd4d" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c09", + "name": "lfs527-wusd3l23ae-c09-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wusd3l23ae-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-tdD6vr/home/worker/c09.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 305, + "load1": 7.92236328125, + "grantedAt": "2026-10-31T20:28:24.732Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 138.87, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "126adc386c3c59895453b04140ffd1ef7c17d55150b060ddd767dc0190ffd1899f", + "commit": { + "id": "126adc386c3c59895453b04140ffd1ef7c17d55150b060ddd767dc0190ffd1899f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32b9001b04efd23ca0c495c010510bcf1b335fd83bd958e62b54d64f68cc556d67", + "root": "85bbd46c423bade9f3fe1ab248660ac0aff862fa0dda8f3b4be43e83b78287fd", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793478504254, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 749, + "newMetadata": 673, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.984, + "exec": { + "wallMs": 102.151, + "exitCode": 0, + "stdout": "LFS527 0 1793478504369267964 1793478504416969922\n", + "stderr": "", + "rc": 0, + "ms": 47.701958 + }, + "unmountMs": 8.526, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 8.571, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wusd3l23ae-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 94.894, + "exitCode": 0, + "stdout": "LFS527 0 1793478504787509672 1793478504836182672\n", + "stderr": "", + "rc": 0, + "ms": 48.673 + }, + "commitMs": 1.494, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "126adc386c3c59895453b04140ffd1ef7c17d55150b060ddd767dc0190ffd1899f", + "root": "85bbd46c423bade9f3fe1ab248660ac0aff862fa0dda8f3b4be43e83b78287fd", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 9.513, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.241, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.168, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3618.632, + "ok": true + }, + { + "name": "setup.mount", + "ms": 7.319, + "ok": true + }, + { + "name": "setup.exec", + "ms": 138.866, + "ok": true + }, + { + "name": "setup.commit", + "ms": 305.043, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 10.516, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.982, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 102.148, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.523, + "ok": true + }, + { + "name": "timed.mount", + "ms": 8.568, + "ok": true + }, + { + "name": "timed.exec", + "ms": 94.891, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1.491, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 9.509, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.439, + "ok": true + }, + { + "name": "verify.identity", + "ms": 29.948, + "ok": true + }, + { + "name": "verify.exec", + "ms": 308.831, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.208, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 500.815, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32b9001b04efd23ca0c495c010510bcf1b335fd83bd958e62b54d64f68cc556d67", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 306.714, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 305, + "load1": 7.92236328125, + "grantedAt": "2026-10-31T20:28:24.732Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 8.571, + "execWallMs": 94.894, + "commandMs": 48.673, + "commitMs": 1.494, + "commitKind": "UpToDate", + "unmountMs": 9.513 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:28:26.067Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C10-2026-10-31T202829295Z-wusqgf23mz.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C10-2026-10-31T202829295Z-wusqgf23mz.json new file mode 100644 index 000000000..a88e351ff --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C10-2026-10-31T202829295Z-wusqgf23mz.json @@ -0,0 +1,397 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wusqgf23mz-", + "startedAt": "2026-10-31T20:28:29.295Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.84814453125, + "end": 7.11181640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-u8LSVt", + "initMs": 9213, + "volume": "lfs527-wusqgf23mz-c10-store-mvwusqh9", + "vm": { + "project": "c10", + "name": "lfs527-wusqgf23mz-c10-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-u8LSVt/home", + "store": "lfs527-wusqgf23mz-c10-vm-store", + "created": "2026-10-31T20:28:29.463934+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64955 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 9349, + "cellBudgetMs": 75616, + "teardownMs": 275 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-wusqgf23mz-c10-store-mvwusqh9" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c10", + "name": "lfs527-wusqgf23mz-c10-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wusqgf23mz-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-u8LSVt/home/worker/c10.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.47021484375, + "grantedAt": "2026-10-31T20:28:43.274Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 131.4, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "128b6107fcf7496d6ed16077db41d3e774a7722c0c76e8a1c519ef8a29f73bdb9d", + "commit": { + "id": "128b6107fcf7496d6ed16077db41d3e774a7722c0c76e8a1c519ef8a29f73bdb9d", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3216b09b2418dc7707d4bf6b93de451e360d5e0e090f57018f66d0a19144d378a5", + "root": "00100374c5e780fc27b24cdb5516f242ee4ef9f89e584384c9d6d82e75ce8645", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793478522993, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.733, + "exec": { + "wallMs": 205.754, + "exitCode": 0, + "stdout": "LFS527 0 1793478523082378423 1793478523258377506\n", + "stderr": "", + "rc": 0, + "ms": 175.999083 + }, + "unmountMs": 13.708, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.441, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wusqgf23mz-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 217.311, + "exitCode": 0, + "stdout": "LFS527 0 1793478523319984339 1793478523498294048\n", + "stderr": "", + "rc": 0, + "ms": 178.309709 + }, + "commitMs": 47.383, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12348a7c53584f6a0e93e04c372d7ff3bb683e966783e8bf031081cc59ee0e2996", + "commit": { + "id": "12348a7c53584f6a0e93e04c372d7ff3bb683e966783e8bf031081cc59ee0e2996", + "branch": null, + "parent": "128b6107fcf7496d6ed16077db41d3e774a7722c0c76e8a1c519ef8a29f73bdb9d", + "secondParent": null, + "base": "3216b09b2418dc7707d4bf6b93de451e360d5e0e090f57018f66d0a19144d378a5", + "root": "4e04ee7ad816df793be741a1b20302fe7d2ebacb583ea78c41021d5c0c0e8009", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793478523501, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 13.773, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.388, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.723, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3828.348, + "ok": true + }, + { + "name": "setup.mount", + "ms": 6.792, + "ok": true + }, + { + "name": "setup.exec", + "ms": 131.394, + "ok": true + }, + { + "name": "setup.commit", + "ms": 298.382, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 11.764, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.731, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 205.75, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 13.705, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.438, + "ok": true + }, + { + "name": "timed.exec", + "ms": 217.307, + "ok": true + }, + { + "name": "timed.commit", + "ms": 47.379, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 13.771, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.423, + "ok": true + }, + { + "name": "verify.identity", + "ms": 51.138, + "ok": true + }, + { + "name": "verify.exec", + "ms": 512.542, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.824, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 358.829, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3216b09b2418dc7707d4bf6b93de451e360d5e0e090f57018f66d0a19144d378a5", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.312, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.47021484375, + "grantedAt": "2026-10-31T20:28:43.274Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.441, + "execWallMs": 217.311, + "commandMs": 178.309709, + "commitMs": 47.383, + "commitKind": "Committed", + "unmountMs": 13.773 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:28:44.778Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C11-2026-10-31T202848073Z-wut4y123vr.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C11-2026-10-31T202848073Z-wut4y123vr.json new file mode 100644 index 000000000..e0fa66cbc --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C11-2026-10-31T202848073Z-wut4y123vr.json @@ -0,0 +1,378 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wut4y123vr-", + "startedAt": "2026-10-31T20:28:48.073Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.11181640625, + "end": 8.29931640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-26q4Sn", + "initMs": 8911, + "volume": "lfs527-wut4y123vr-c11-store-mvwut4yt", + "vm": { + "project": "c11", + "name": "lfs527-wut4y123vr-c11-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-26q4Sn/home", + "store": "lfs527-wut4y123vr-c11-vm-store", + "created": "2026-10-31T20:28:48.245613+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64987 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 9021, + "cellBudgetMs": 75948, + "teardownMs": 299 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-wut4y123vr-c11-store-mvwut4yt" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c11", + "name": "lfs527-wut4y123vr-c11-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wut4y123vr-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-26q4Sn/home/worker/c11.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.29931640625, + "grantedAt": "2026-10-31T20:29:03.745Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 189.927, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e0b57375a9e8938563c2f6fff69f4ebdaacb7e718dd4045339682b623815a06f", + "commit": { + "id": "12e0b57375a9e8938563c2f6fff69f4ebdaacb7e718dd4045339682b623815a06f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32628ee2d94d8e91f5543a04179f2e7b4d12691d274f535c6d02a04e74a6e6e270", + "root": "66fbccf887a1617de89be1a71f2a07564db0a129c7257c71183aec28f958ff1c", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793478543568, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 5.763, + "exec": { + "wallMs": 163.69, + "exitCode": 0, + "stdout": "LFS527 0 1793478543684497382 1793478543792726132\n", + "stderr": "", + "rc": 0, + "ms": 108.22875 + }, + "unmountMs": 12.482, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 8.017, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wut4y123vr-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 159.729, + "exitCode": 0, + "stdout": "LFS527 0 1793478543864797923 1793478543975823799\n", + "stderr": "", + "rc": 0, + "ms": 111.025876 + }, + "commitMs": 134.754, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12e0b57375a9e8938563c2f6fff69f4ebdaacb7e718dd4045339682b623815a06f", + "root": "66fbccf887a1617de89be1a71f2a07564db0a129c7257c71183aec28f958ff1c", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 13.108, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.253, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.179, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 5862.375, + "ok": true + }, + { + "name": "setup.mount", + "ms": 10.562, + "ok": true + }, + { + "name": "setup.exec", + "ms": 189.922, + "ok": true + }, + { + "name": "setup.commit", + "ms": 299.398, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 11.921, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.76, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 163.686, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.479, + "ok": true + }, + { + "name": "timed.mount", + "ms": 8.015, + "ok": true + }, + { + "name": "timed.exec", + "ms": 159.726, + "ok": true + }, + { + "name": "timed.commit", + "ms": 134.751, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 13.105, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.64, + "ok": true + }, + { + "name": "verify.identity", + "ms": 40.165, + "ok": true + }, + { + "name": "verify.exec", + "ms": 336.48, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 11.47, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 613.145, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32628ee2d94d8e91f5543a04179f2e7b4d12691d274f535c6d02a04e74a6e6e270", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 2.533, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.29931640625, + "grantedAt": "2026-10-31T20:29:03.745Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 8.017, + "execWallMs": 159.729, + "commandMs": 111.025876, + "commitMs": 134.754, + "commitKind": "UpToDate", + "unmountMs": 13.108 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:29:05.372Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C12-2026-10-31T202908736Z-wutkw0248s.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C12-2026-10-31T202908736Z-wutkw0248s.json new file mode 100644 index 000000000..1c29a1ff2 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-microsandbox-C12-2026-10-31T202908736Z-wutkw0248s.json @@ -0,0 +1,336 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wutkw0248s-", + "startedAt": "2026-10-31T20:29:08.736Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.11474609375, + "end": 8.126953125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-UYvleP", + "initMs": 8684, + "volume": "lfs527-wutkw0248s-c12-store-mvwutkwq", + "vm": { + "project": "c12", + "name": "lfs527-wutkw0248s-c12-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-UYvleP/home", + "store": "lfs527-wutkw0248s-c12-vm-store", + "created": "2026-10-31T20:29:08.900992+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 65037 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 8791, + "cellBudgetMs": 76181, + "teardownMs": 287 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-wutkw0248s-c12-store-mvwutkwq" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c12", + "name": "lfs527-wutkw0248s-c12-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wutkw0248s-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-UYvleP/home/worker/c12.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.22509765625, + "grantedAt": "2026-10-31T20:29:22.593Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 9.43, + "exec": { + "wallMs": 296.534, + "exitCode": 0, + "stdout": "LFS527 0 1793478562337195547 1793478562582184756\n", + "stderr": "", + "rc": 0, + "ms": 244.989209 + }, + "unmountMs": 8.5, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.957, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wutkw0248s-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 231.842, + "exitCode": 0, + "stdout": "LFS527 0 1793478562636300589 1793478562830445714\n", + "stderr": "", + "rc": 0, + "ms": 194.145125 + }, + "commitMs": 49.735, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1237ee127ce97d84c384443baf2f8a238880a9e9e1d05b770e922938da163f35fc", + "commit": { + "id": "1237ee127ce97d84c384443baf2f8a238880a9e9e1d05b770e922938da163f35fc", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32374b27231c871e934f42c1869f55bcef282ef58897ef4968d3416a59da3ee417", + "root": "9c46e840a3867fa29897ab49639c16c27efd4b2db88410f977795402f24de615", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793478562876, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26838, + "newMetadata": 6523, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 15.814, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.671, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.176, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4659.591, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 9.426, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 296.53, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.497, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.955, + "ok": true + }, + { + "name": "timed.exec", + "ms": 231.838, + "ok": true + }, + { + "name": "timed.commit", + "ms": 49.732, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 15.809, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.803, + "ok": true + }, + { + "name": "verify.identity", + "ms": 58.012, + "ok": true + }, + { + "name": "verify.exec", + "ms": 81.55, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.746, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1085.192, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32374b27231c871e934f42c1869f55bcef282ef58897ef4968d3416a59da3ee417", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.584, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.22509765625, + "grantedAt": "2026-10-31T20:29:22.593Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.957, + "execWallMs": 231.842, + "commandMs": 194.145125, + "commitMs": 49.735, + "commitKind": "Committed", + "unmountMs": 15.814 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:29:24.427Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C01-2026-10-31T202533534Z-wuoyu61tgt.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C01-2026-10-31T202533534Z-wuoyu61tgt.json new file mode 100644 index 000000000..73a083a77 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C01-2026-10-31T202533534Z-wuoyu61tgt.json @@ -0,0 +1,346 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wuoyu61tgt-", + "startedAt": "2026-10-31T20:25:33.534Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 4.0146484375, + "end": 7.30126953125 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wuoyu61tgt", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-3AiAL6", + "initMs": 16248, + "volume": "lfs527-wuoyu61tgt-c01-store-mvwuoyva", + "vm": { + "project": "c01", + "name": "lfs527-wuoyu61tgt-c01-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-3AiAL6/home", + "store": "lfs527-wuoyu61tgt-c01-vm-store", + "created": "2026-10-31T20:25:33.582Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64338 + }, + "disk": { + "free": 35350052864 + } + }, + "setupMs": 16382, + "cellBudgetMs": 68562, + "teardownMs": 882 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-wuoyu61tgt-c01-store-mvwuoyva" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c01", + "name": "lfs527-wuoyu61tgt-c01-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuoyu61tgt-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-3AiAL6/home/worker/c01.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1321, + "load1": 7.30126953125, + "grantedAt": "2026-10-31T20:25:55.853Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.135, + "exec": { + "wallMs": 513.748, + "exitCode": 0, + "stdout": "LFS527 0 1793478354138532427 1793478354621161266\n", + "stderr": "", + "rc": 0, + "ms": 482.628839 + }, + "unmountMs": 3.582, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.817, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wuoyu61tgt-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 636.105, + "exitCode": 0, + "stdout": "LFS527 0 1793478355967212106 1793478356588084462\n", + "stderr": "", + "rc": 0, + "ms": 620.872356 + }, + "commitMs": 100.329, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12428bfd59366f6426e494b8b0b1ab530e3b31cc8c2dd220983203677e860d624f", + "commit": { + "id": "12428bfd59366f6426e494b8b0b1ab530e3b31cc8c2dd220983203677e860d624f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32bf9b45022569fc51619a5421c1b62e53be8c6387e29543953ce0215c951137d3", + "root": "569dba02178001ba883e27087230e16515eab0e458006a406f95ff164bc126c4", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793478356680, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.772, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.357, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.82, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3966.237, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.13, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 513.742, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.58, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.815, + "ok": true + }, + { + "name": "timed.exec", + "ms": 636.102, + "ok": true + }, + { + "name": "timed.commit", + "ms": 100.326, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.769, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.591, + "ok": true + }, + { + "name": "verify.identity", + "ms": 20.089, + "ok": true + }, + { + "name": "verify.exec", + "ms": 756.095, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.456, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 210.861, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32bf9b45022569fc51619a5421c1b62e53be8c6387e29543953ce0215c951137d3", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1322.015, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1321, + "load1": 7.30126953125, + "grantedAt": "2026-10-31T20:25:55.853Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.817, + "execWallMs": 636.105, + "commandMs": 620.872356, + "commitMs": 100.329, + "commitKind": "Committed", + "unmountMs": 3.772 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:25:58.481Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C02-2026-10-31T202601803Z-wupknf1w3r.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C02-2026-10-31T202601803Z-wupknf1w3r.json new file mode 100644 index 000000000..3b10a500b --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C02-2026-10-31T202601803Z-wupknf1w3r.json @@ -0,0 +1,346 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wupknf1w3r-", + "startedAt": "2026-10-31T20:26:01.803Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.95654296875, + "end": 9.21044921875 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wupknf1w3r", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-q41t4H", + "initMs": 17356, + "volume": "lfs527-wupknf1w3r-c02-store-mvwupko7", + "vm": { + "project": "c02", + "name": "lfs527-wupknf1w3r-c02-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-q41t4H/home", + "store": "lfs527-wupknf1w3r-c02-vm-store", + "created": "2026-10-31T20:26:01.839Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64445 + }, + "disk": { + "free": 35350007808 + } + }, + "setupMs": 17504, + "cellBudgetMs": 67467, + "teardownMs": 1575 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-wupknf1w3r-c02-store-mvwupko7" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c02", + "name": "lfs527-wupknf1w3r-c02-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wupknf1w3r-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-q41t4H/home/worker/c02.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2033, + "load1": 9.14208984375, + "grantedAt": "2026-10-31T20:26:26.732Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.864, + "exec": { + "wallMs": 1563.867, + "exitCode": 0, + "stdout": "LFS527 0 1793478383244564986 1793478384787152179\n", + "stderr": "", + "rc": 0, + "ms": 1542.587193 + }, + "unmountMs": 4.597, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.437, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wupknf1w3r-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 1541.383, + "exitCode": 0, + "stdout": "LFS527 0 1793478386850756766 1793478388373037604\n", + "stderr": "", + "rc": 0, + "ms": 1522.280838 + }, + "commitMs": 146.201, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12f4be3fda43da9489fd9a124f9d724e3bd83b607d42a3b4fedd71c748f47748da", + "commit": { + "id": "12f4be3fda43da9489fd9a124f9d724e3bd83b607d42a3b4fedd71c748f47748da", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32745a8db591771e21a6ea96e90d80cdfb63b36bc119e90d09d60d94085a035302", + "root": "56819c0660143f2ffad2a591641248c41dc05f753a853153a4552461a6af600c", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793478388511, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 9.183, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.871, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.055, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3722.594, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.86, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1563.861, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.594, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.434, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1541.38, + "ok": true + }, + { + "name": "timed.commit", + "ms": 146.198, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 9.179, + "ok": true + }, + { + "name": "verify.mount", + "ms": 8.07, + "ok": true + }, + { + "name": "verify.identity", + "ms": 32.789, + "ok": true + }, + { + "name": "verify.exec", + "ms": 813.119, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.75, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 474.341, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32745a8db591771e21a6ea96e90d80cdfb63b36bc119e90d09d60d94085a035302", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 2033.644, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2033, + "load1": 9.14208984375, + "grantedAt": "2026-10-31T20:26:26.732Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.437, + "execWallMs": 1541.383, + "commandMs": 1522.280838, + "commitMs": 146.201, + "commitKind": "Committed", + "unmountMs": 9.183 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:31.349Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C03-2026-10-31T202634951Z-wuqa8720wl.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C03-2026-10-31T202634951Z-wuqa8720wl.json new file mode 100644 index 000000000..cb7fa5071 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C03-2026-10-31T202634951Z-wuqa8720wl.json @@ -0,0 +1,327 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wuqa8720wl-", + "startedAt": "2026-10-31T20:26:34.951Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.79296875, + "end": 10.0458984375 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wuqa8720wl", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-JQ5O9g", + "initMs": 16626, + "volume": "lfs527-wuqa8720wl-c03-store-mvwuqa8y", + "vm": { + "project": "c03", + "name": "lfs527-wuqa8720wl-c03-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-JQ5O9g/home", + "store": "lfs527-wuqa8720wl-c03-vm-store", + "created": "2026-10-31T20:26:34.985Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64570 + }, + "disk": { + "free": 35349962752 + } + }, + "setupMs": 16762, + "cellBudgetMs": 68210, + "teardownMs": 913 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-wuqa8720wl-c03-store-mvwuqa8y" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c03", + "name": "lfs527-wuqa8720wl-c03-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqa8720wl-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-JQ5O9g/home/worker/c03.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.13720703125, + "grantedAt": "2026-10-31T20:26:56.841Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.074, + "exec": { + "wallMs": 1198.094, + "exitCode": 0, + "stdout": "LFS527 0 1793478415781147433 1793478416962102705\n", + "stderr": "", + "rc": 0, + "ms": 1180.955272 + }, + "unmountMs": 4.592, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.62, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wuqa8720wl-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 1045.559, + "exitCode": 0, + "stdout": "LFS527 0 1793478416995652217 1793478418020382909\n", + "stderr": "", + "rc": 0, + "ms": 1024.730692 + }, + "commitMs": 8.629, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "bae183dc98dbd300a23e9bd0332268424463d065d7955afb9716aaa527573533", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.19, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.633, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.523, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3832.366, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.07, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1198.087, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.585, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.617, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1045.557, + "ok": true + }, + { + "name": "timed.commit", + "ms": 8.625, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.188, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.248, + "ok": true + }, + { + "name": "verify.identity", + "ms": 29.027, + "ok": true + }, + { + "name": "verify.exec", + "ms": 26.549, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.711, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 503.422, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3267fd9a04de4fa9c7740cf822150f2f037463ac7c73b7b35249d48af8fc2c4534", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.368, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.13720703125, + "grantedAt": "2026-10-31T20:26:56.841Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.62, + "execWallMs": 1045.559, + "commandMs": 1024.730692, + "commitMs": 8.629, + "commitKind": "UpToDate", + "unmountMs": 3.19 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:26:59.387Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C04-2026-10-31T202703056Z-wuqvww21uo.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C04-2026-10-31T202703056Z-wuqvww21uo.json new file mode 100644 index 000000000..b5c48f754 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C04-2026-10-31T202703056Z-wuqvww21uo.json @@ -0,0 +1,346 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wuqvww21uo-", + "startedAt": "2026-10-31T20:27:03.056Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.0458984375, + "end": 10.56884765625 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wuqvww21uo", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-SRjPVK", + "initMs": 16757, + "volume": "lfs527-wuqvww21uo-c04-store-mvwuqvxp", + "vm": { + "project": "c04", + "name": "lfs527-wuqvww21uo-c04-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-SRjPVK/home", + "store": "lfs527-wuqvww21uo-c04-vm-store", + "created": "2026-10-31T20:27:03.092Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64706 + }, + "disk": { + "free": 35349917696 + } + }, + "setupMs": 16899, + "cellBudgetMs": 68072, + "teardownMs": 980 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-wuqvww21uo-c04-store-mvwuqvxp" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c04", + "name": "lfs527-wuqvww21uo-c04-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuqvww21uo-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-SRjPVK/home/worker/c04.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.56884765625, + "grantedAt": "2026-10-31T20:27:25.530Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 11.429, + "exec": { + "wallMs": 924.686, + "exitCode": 0, + "stdout": "LFS527 0 1793478444783277055 1793478445660316872\n", + "stderr": "", + "rc": 0, + "ms": 877.039817 + }, + "unmountMs": 3.332, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.052, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wuqvww21uo-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 867.551, + "exitCode": 0, + "stdout": "LFS527 0 1793478445687733982 1793478446536844693\n", + "stderr": "", + "rc": 0, + "ms": 849.110711 + }, + "commitMs": 108.34, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1220634b3bb23428390b9718e2f0f38810d4634c02a55216db866ccd40f2a04ef1", + "commit": { + "id": "1220634b3bb23428390b9718e2f0f38810d4634c02a55216db866ccd40f2a04ef1", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32172396945b2e77833e867d60571957bfac59f534e004c9d544c8f6ac01ef6f0d", + "root": "27f836b447730d161a7f7e97ef77a5ebcad6f4a79217458bcd9e7a7bc8bf2cd4", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793478446637, + "logical": 0, + "newCanonical": 109367, + "newStored": 8248, + "newMetadata": 8248, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.008, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.76, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.868, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4536.508, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 11.425, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 924.681, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.329, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.049, + "ok": true + }, + { + "name": "timed.exec", + "ms": 867.547, + "ok": true + }, + { + "name": "timed.commit", + "ms": 108.336, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.005, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.672, + "ok": true + }, + { + "name": "verify.identity", + "ms": 26.1, + "ok": true + }, + { + "name": "verify.exec", + "ms": 309.314, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.039, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 365.844, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32172396945b2e77833e867d60571957bfac59f534e004c9d544c8f6ac01ef6f0d", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.371, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.56884765625, + "grantedAt": "2026-10-31T20:27:25.530Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.052, + "execWallMs": 867.551, + "commandMs": 849.110711, + "commitMs": 108.34, + "commitKind": "Committed", + "unmountMs": 4.008 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:28.214Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C05-2026-10-31T202731442Z-wurhte22lm.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C05-2026-10-31T202731442Z-wurhte22lm.json new file mode 100644 index 000000000..ddde8656e --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C05-2026-10-31T202731442Z-wurhte22lm.json @@ -0,0 +1,346 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wurhte22lm-", + "startedAt": "2026-10-31T20:27:31.442Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.12255859375, + "end": 8.83203125 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wurhte22lm", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-lAKRnl", + "initMs": 15854, + "volume": "lfs527-wurhte22lm-c05-store-mvwurhu5", + "vm": { + "project": "c05", + "name": "lfs527-wurhte22lm-c05-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-lAKRnl/home", + "store": "lfs527-wurhte22lm-c05-vm-store", + "created": "2026-10-31T20:27:31.476Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64825 + }, + "disk": { + "free": 35349876736 + } + }, + "setupMs": 16056, + "cellBudgetMs": 68887, + "teardownMs": 917 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-wurhte22lm-c05-store-mvwurhu5" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c05", + "name": "lfs527-wurhte22lm-c05-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wurhte22lm-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-lAKRnl/home/worker/c05.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.51416015625, + "grantedAt": "2026-10-31T20:27:52.667Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 14.244, + "exec": { + "wallMs": 927.044, + "exitCode": 0, + "stdout": "LFS527 0 1793478471904346560 1793478472796478526\n", + "stderr": "", + "rc": 0, + "ms": 892.131966 + }, + "unmountMs": 4.569, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.38, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wurhte22lm-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 888.388, + "exitCode": 0, + "stdout": "LFS527 0 1793478472831095081 1793478473696607644\n", + "stderr": "", + "rc": 0, + "ms": 865.512563 + }, + "commitMs": 117.026, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "120bb99ea2b3030ea9dd76829d5c15123a8cf74625b1a3aafc801c89566f889290", + "commit": { + "id": "120bb99ea2b3030ea9dd76829d5c15123a8cf74625b1a3aafc801c89566f889290", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32227496569baf5c81ef8805c9c6892a6c76fc9ac7ac81abbf7e91196aa4b99bad", + "root": "94d9417c267072906eed0751dd4875b25755914c57982bc5466fe482d0e80607", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793478473805, + "logical": 0, + "newCanonical": 109367, + "newStored": 8258, + "newMetadata": 8258, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.344, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.231, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.614, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4057.885, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 14.239, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 927.038, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.566, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.377, + "ok": true + }, + { + "name": "timed.exec", + "ms": 888.384, + "ok": true + }, + { + "name": "timed.commit", + "ms": 117.023, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.341, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.902, + "ok": true + }, + { + "name": "verify.identity", + "ms": 25.219, + "ok": true + }, + { + "name": "verify.exec", + "ms": 312.606, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.428, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 194.351, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32227496569baf5c81ef8805c9c6892a6c76fc9ac7ac81abbf7e91196aa4b99bad", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.626, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.51416015625, + "grantedAt": "2026-10-31T20:27:52.667Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.38, + "execWallMs": 888.388, + "commandMs": 865.512563, + "commitMs": 117.026, + "commitKind": "Committed", + "unmountMs": 4.344 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:27:55.143Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C06-2026-10-31T202758466Z-wus2o2233d.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C06-2026-10-31T202758466Z-wus2o2233d.json new file mode 100644 index 000000000..7fb8149c7 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C06-2026-10-31T202758466Z-wus2o2233d.json @@ -0,0 +1,346 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wus2o2233d-", + "startedAt": "2026-10-31T20:27:58.466Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.83203125, + "end": 8.17724609375 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wus2o2233d", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-LFqbrf", + "initMs": 14957, + "volume": "lfs527-wus2o2233d-c06-store-mvwus2ou", + "vm": { + "project": "c06", + "name": "lfs527-wus2o2233d-c06-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-LFqbrf/home", + "store": "lfs527-wus2o2233d-c06-vm-store", + "created": "2026-10-31T20:27:58.501Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64879 + }, + "disk": { + "free": 35349827584 + } + }, + "setupMs": 15093, + "cellBudgetMs": 69878, + "teardownMs": 870 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-wus2o2233d-c06-store-mvwus2ou" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c06", + "name": "lfs527-wus2o2233d-c06-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wus2o2233d-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-LFqbrf/home/worker/c06.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.19287109375, + "grantedAt": "2026-10-31T20:28:17.472Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 9.239, + "exec": { + "wallMs": 206.052, + "exitCode": 0, + "stdout": "LFS527 0 1793478497410228407 1793478497598074957\n", + "stderr": "", + "rc": 0, + "ms": 187.84655 + }, + "unmountMs": 9.471, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.412, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wus2o2233d-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 203.188, + "exitCode": 0, + "stdout": "LFS527 0 1793478497635453010 1793478497816940198\n", + "stderr": "", + "rc": 0, + "ms": 181.487188 + }, + "commitMs": 318.353, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1273e1eb35b2e608ac180536d687d8f320a660547d8fbd585d42d463776456c3f1", + "commit": { + "id": "1273e1eb35b2e608ac180536d687d8f320a660547d8fbd585d42d463776456c3f1", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32857ea8b5e81020fd2196e8bfb730c2f08904a50bcfe5838aa33b1f06131710a2", + "root": "5099e004abe2c85034c119559c166a4064ef2119d5383ca7ca746b72eef78f79", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793478498088, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 9.197, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.184, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.742, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3593.901, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 9.235, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 206.048, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 9.468, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.41, + "ok": true + }, + { + "name": "timed.exec", + "ms": 203.185, + "ok": true + }, + { + "name": "timed.commit", + "ms": 318.35, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 9.194, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.905, + "ok": true + }, + { + "name": "verify.identity", + "ms": 27.555, + "ok": true + }, + { + "name": "verify.exec", + "ms": 472.791, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.333, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 282.394, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32857ea8b5e81020fd2196e8bfb730c2f08904a50bcfe5838aa33b1f06131710a2", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.181, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.19287109375, + "grantedAt": "2026-10-31T20:28:17.472Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.412, + "execWallMs": 203.188, + "commandMs": 181.487188, + "commitMs": 318.353, + "commitKind": "Committed", + "unmountMs": 9.197 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:28:19.673Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C07-2026-10-31T202823008Z-wuslls23he.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C07-2026-10-31T202823008Z-wuslls23he.json new file mode 100644 index 000000000..8a04b38fb --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C07-2026-10-31T202823008Z-wuslls23he.json @@ -0,0 +1,346 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wuslls23he-", + "startedAt": "2026-10-31T20:28:23.008Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.17724609375, + "end": 7.11181640625 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wuslls23he", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-fryWJt", + "initMs": 15543, + "volume": "lfs527-wuslls23he-c07-store-mvwuslo5", + "vm": { + "project": "c07", + "name": "lfs527-wuslls23he-c07-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-fryWJt/home", + "store": "lfs527-wuslls23he-c07-vm-store", + "created": "2026-10-31T20:28:23.101Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64945 + }, + "disk": { + "free": 35349782528 + } + }, + "setupMs": 15712, + "cellBudgetMs": 69229, + "teardownMs": 939 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-wuslls23he-c07-store-mvwuslo5" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c07", + "name": "lfs527-wuslls23he-c07-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuslls23he-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-fryWJt/home/worker/c07.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 304, + "load1": 7.47021484375, + "grantedAt": "2026-10-31T20:28:43.597Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.429, + "exec": { + "wallMs": 463.203, + "exitCode": 0, + "stdout": "LFS527 0 1793478522979202766 1793478523412581734\n", + "stderr": "", + "rc": 0, + "ms": 433.378968 + }, + "unmountMs": 16.187, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.579, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wuslls23he-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 456.274, + "exitCode": 0, + "stdout": "LFS527 0 1793478523760672947 1793478524195427455\n", + "stderr": "", + "rc": 0, + "ms": 434.754508 + }, + "commitMs": 624.126, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1242891451fa2f6eb43cbf73a7b9d8a816553b6ac906e7ea58835b462682f38063", + "commit": { + "id": "1242891451fa2f6eb43cbf73a7b9d8a816553b6ac906e7ea58835b462682f38063", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32ed733a7dd981af14b5da220c2cf41b60655a1f0a2d44f10a73ff86e442d2830e", + "root": "8a430ad5f6d6c13849394dc15671dffc24a3b23a89d25cc762c19daf588b5988", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793478524724, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 833, + "newMetadata": 757, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 16.551, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.173, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.655, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3958.093, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.425, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 463.199, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 16.184, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.577, + "ok": true + }, + { + "name": "timed.exec", + "ms": 456.27, + "ok": true + }, + { + "name": "timed.commit", + "ms": 624.123, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 16.547, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.07, + "ok": true + }, + { + "name": "verify.identity", + "ms": 26.325, + "ok": true + }, + { + "name": "verify.exec", + "ms": 647.65, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.821, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 232.93, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32ed733a7dd981af14b5da220c2cf41b60655a1f0a2d44f10a73ff86e442d2830e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 305.57, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 304, + "load1": 7.47021484375, + "grantedAt": "2026-10-31T20:28:43.597Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.579, + "execWallMs": 456.274, + "commandMs": 434.754508, + "commitMs": 624.126, + "commitKind": "Committed", + "unmountMs": 16.551 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:28:46.562Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C08-2026-10-31T202850148Z-wut6jo23wj.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C08-2026-10-31T202850148Z-wut6jo23wj.json new file mode 100644 index 000000000..710c1dc38 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C08-2026-10-31T202850148Z-wut6jo23wj.json @@ -0,0 +1,346 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wut6jo23wj-", + "startedAt": "2026-10-31T20:28:50.148Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.2626953125, + "end": 8.505859375 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wut6jo23wj", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-rzwKmS", + "initMs": 17645, + "volume": "lfs527-wut6jo23wj-c08-store-mvwut6ki", + "vm": { + "project": "c08", + "name": "lfs527-wut6jo23wj-c08-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-rzwKmS/home", + "store": "lfs527-wut6jo23wj-c08-vm-store", + "created": "2026-10-31T20:28:50.185Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 64990 + }, + "disk": { + "free": 35349737472 + } + }, + "setupMs": 17777, + "cellBudgetMs": 67195, + "teardownMs": 1079 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-wut6jo23wj-c08-store-mvwut6ki" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c08", + "name": "lfs527-wut6jo23wj-c08-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wut6jo23wj-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-rzwKmS/home/worker/c08.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 607, + "load1": 8.11474609375, + "grantedAt": "2026-10-31T20:29:13.058Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.768, + "exec": { + "wallMs": 289.299, + "exitCode": 0, + "stdout": "LFS527 0 1793478552302830674 1793478552558232909\n", + "stderr": "", + "rc": 0, + "ms": 255.402235 + }, + "unmountMs": 19.02, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.928, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wut6jo23wj-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 237.526, + "exitCode": 0, + "stdout": "LFS527 0 1793478553215135192 1793478553438316987\n", + "stderr": "", + "rc": 0, + "ms": 223.181795 + }, + "commitMs": 338.69, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a05e921ef227e504058dc989649868a10da9460085a8c5390a98a5d99f1d31c2", + "commit": { + "id": "12a05e921ef227e504058dc989649868a10da9460085a8c5390a98a5d99f1d31c2", + "branch": null, + "parent": null, + "secondParent": null, + "base": "328bf48e8d9fd46a8d68b5ae2dba0411047d01e42c4576e59465ac551904061311", + "root": "f7ef97bfcaaad0f68aed2eab3f3a89219ed65b9afc7ce841b7dbf28c3fe57ed8", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793478553725, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.408, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.398, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.476, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4109.555, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.764, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 289.293, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 19.014, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.926, + "ok": true + }, + { + "name": "timed.exec", + "ms": 237.523, + "ok": true + }, + { + "name": "timed.commit", + "ms": 338.687, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.405, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.472, + "ok": true + }, + { + "name": "verify.identity", + "ms": 28.883, + "ok": true + }, + { + "name": "verify.exec", + "ms": 557.944, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.528, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 193.952, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "328bf48e8d9fd46a8d68b5ae2dba0411047d01e42c4576e59465ac551904061311", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 609.479, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 607, + "load1": 8.11474609375, + "grantedAt": "2026-10-31T20:29:13.058Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.928, + "execWallMs": 237.526, + "commandMs": 223.181795, + "commitMs": 338.69, + "commitKind": "Committed", + "unmountMs": 10.408 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:29:15.529Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C09-2026-10-31T202919103Z-wutsvz24bz.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C09-2026-10-31T202919103Z-wutsvz24bz.json new file mode 100644 index 000000000..70808ab4d --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C09-2026-10-31T202919103Z-wutsvz24bz.json @@ -0,0 +1,388 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wutsvz24bz-", + "startedAt": "2026-10-31T20:29:19.103Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.22509765625, + "end": 7.71630859375 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wutsvz24bz", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-ETUIIa", + "initMs": 17203, + "volume": "lfs527-wutsvz24bz-c09-store-mvwutswu", + "vm": { + "project": "c09", + "name": "lfs527-wutsvz24bz-c09-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-ETUIIa/home", + "store": "lfs527-wutsvz24bz-c09-vm-store", + "created": "2026-10-31T20:29:19.154Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 65100 + }, + "disk": { + "free": 35349692416 + } + }, + "setupMs": 17335, + "cellBudgetMs": 67636, + "teardownMs": 1108 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-wutsvz24bz-c09-store-mvwutswu" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c09", + "name": "lfs527-wutsvz24bz-c09-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wutsvz24bz-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-ETUIIa/home/worker/c09.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.71630859375, + "grantedAt": "2026-10-31T20:29:39.550Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 188.84, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "122dc76a0a50e4884247d7a5143cae59ba89f0d26871f1d022b8a84ed1fc10235c", + "commit": { + "id": "122dc76a0a50e4884247d7a5143cae59ba89f0d26871f1d022b8a84ed1fc10235c", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32231198eb062025e2efdb70f9dca1a7c0105bf040b9b6a82ccbe65916a0f8212a", + "root": "039baed6d4d358929f20416f6a126b58fc9ccfa87234472723d5b4d27608d8aa", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793478579519, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.939, + "exec": { + "wallMs": 100.477, + "exitCode": 0, + "stdout": "LFS527 0 1793478579603597838 1793478579681824946\n", + "stderr": "", + "rc": 0, + "ms": 78.227108 + }, + "unmountMs": 4.715, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.855, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wutsvz24bz-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 98.815, + "exitCode": 0, + "stdout": "LFS527 0 1793478579711785308 1793478579792415078\n", + "stderr": "", + "rc": 0, + "ms": 80.62977 + }, + "commitMs": 1.413, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "122dc76a0a50e4884247d7a5143cae59ba89f0d26871f1d022b8a84ed1fc10235c", + "root": "039baed6d4d358929f20416f6a126b58fc9ccfa87234472723d5b4d27608d8aa", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.259, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.36, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.302, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 2397.586, + "ok": true + }, + { + "name": "setup.mount", + "ms": 7.996, + "ok": true + }, + { + "name": "setup.exec", + "ms": 188.835, + "ok": true + }, + { + "name": "setup.commit", + "ms": 311.551, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 9.564, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.937, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 100.474, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.713, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.852, + "ok": true + }, + { + "name": "timed.exec", + "ms": 98.812, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1.411, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.257, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.445, + "ok": true + }, + { + "name": "verify.identity", + "ms": 17.343, + "ok": true + }, + { + "name": "verify.exec", + "ms": 402.073, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.174, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 241.066, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32231198eb062025e2efdb70f9dca1a7c0105bf040b9b6a82ccbe65916a0f8212a", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.19, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.71630859375, + "grantedAt": "2026-10-31T20:29:39.550Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.855, + "execWallMs": 98.815, + "commandMs": 80.62977, + "commitMs": 1.413, + "commitKind": "UpToDate", + "unmountMs": 4.259 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:29:41.443Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C10-2026-10-31T202944788Z-wuucpg24q7.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C10-2026-10-31T202944788Z-wuucpg24q7.json new file mode 100644 index 000000000..82e20cf43 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C10-2026-10-31T202944788Z-wuucpg24q7.json @@ -0,0 +1,407 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wuucpg24q7-", + "startedAt": "2026-10-31T20:29:44.788Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.65869140625, + "end": 7.24853515625 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wuucpg24q7", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-d9gCpm", + "initMs": 14028, + "volume": "lfs527-wuucpg24q7-c10-store-mvwuucq6", + "vm": { + "project": "c10", + "name": "lfs527-wuucpg24q7-c10-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-d9gCpm/home", + "store": "lfs527-wuucpg24q7-c10-vm-store", + "created": "2026-10-31T20:29:44.821Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 65187 + }, + "disk": { + "free": 35349647360 + } + }, + "setupMs": 14157, + "cellBudgetMs": 70693, + "teardownMs": 849 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-wuucpg24q7-c10-store-mvwuucq6" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c10", + "name": "lfs527-wuucpg24q7-c10-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wuucpg24q7-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-d9gCpm/home/worker/c10.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.357421875, + "grantedAt": "2026-10-31T20:30:02.681Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 182.839, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "125b8f87e472cc5a849450babd17250e40099e168ebbce1e3c456b0af66b2d438b", + "commit": { + "id": "125b8f87e472cc5a849450babd17250e40099e168ebbce1e3c456b0af66b2d438b", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3212a553dd62afc77b0386f88b07d1f0ada09d09ef347940ee164c38521fb357a6", + "root": "c0789340a65b7d2ab58fcc3d3f999994e766502f0f860bffb97c48fe2b2b091c", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793478602500, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.305, + "exec": { + "wallMs": 242.468, + "exitCode": 0, + "stdout": "LFS527 0 1793478602578898077 1793478602805090757\n", + "stderr": "", + "rc": 0, + "ms": 226.19268 + }, + "unmountMs": 12.409, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.939, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wuucpg24q7-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 241.717, + "exitCode": 0, + "stdout": "LFS527 0 1793478602845671185 1793478603067675247\n", + "stderr": "", + "rc": 0, + "ms": 222.004062 + }, + "commitMs": 51.716, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "129f4910e1d626a043ee91b81f6ec45e4b5001afee876d98e8785707859f493331", + "commit": { + "id": "129f4910e1d626a043ee91b81f6ec45e4b5001afee876d98e8785707859f493331", + "branch": null, + "parent": "125b8f87e472cc5a849450babd17250e40099e168ebbce1e3c456b0af66b2d438b", + "secondParent": null, + "base": "3212a553dd62afc77b0386f88b07d1f0ada09d09ef347940ee164c38521fb357a6", + "root": "6ae7346df01d44396150f031ac2454d5f44f0c6bdfe7d0a6703ff5f914d1224d", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793478603071, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 13.063, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.855, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.309, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 2747.766, + "ok": true + }, + { + "name": "setup.mount", + "ms": 5.535, + "ok": true + }, + { + "name": "setup.exec", + "ms": 182.834, + "ok": true + }, + { + "name": "setup.commit", + "ms": 306.068, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 10.179, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.303, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 242.465, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.407, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.937, + "ok": true + }, + { + "name": "timed.exec", + "ms": 241.714, + "ok": true + }, + { + "name": "timed.commit", + "ms": 51.712, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 13.059, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.898, + "ok": true + }, + { + "name": "verify.identity", + "ms": 20.396, + "ok": true + }, + { + "name": "verify.exec", + "ms": 626.785, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.054, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 134.047, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3212a553dd62afc77b0386f88b07d1f0ada09d09ef347940ee164c38521fb357a6", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.215, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.357421875, + "grantedAt": "2026-10-31T20:30:02.681Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.939, + "execWallMs": 241.717, + "commandMs": 222.004062, + "commitMs": 51.716, + "commitKind": "Committed", + "unmountMs": 13.063 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:30:04.641Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C11-2026-10-31T203007969Z-mvwuuuld96.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C11-2026-10-31T203007969Z-mvwuuuld96.json new file mode 100644 index 000000000..13e7e671f --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C11-2026-10-31T203007969Z-mvwuuuld96.json @@ -0,0 +1,388 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-mvwuuuld96-", + "startedAt": "2026-10-31T20:30:07.969Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.24853515625, + "end": 6.99365234375 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-mvwuuuld96", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-o6Yt5x", + "initMs": 13129, + "volume": "lfs527-mvwuuuld96-c11-store-mvwuuumv", + "vm": { + "project": "c11", + "name": "lfs527-mvwuuuld96-c11-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-o6Yt5x/home", + "store": "lfs527-mvwuuuld96-c11-vm-store", + "created": "2026-10-31T20:30:08.030Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 65257 + }, + "disk": { + "free": 35349602304 + } + }, + "setupMs": 13289, + "cellBudgetMs": 71649, + "teardownMs": 868 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-mvwuuuld96-c11-store-mvwuuumv" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c11", + "name": "lfs527-mvwuuuld96-c11-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-mvwuuuld96-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-o6Yt5x/home/worker/c11.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.99365234375, + "grantedAt": "2026-10-31T20:30:24.695Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 186.784, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e109a32173ce763185c17ed6d6256465a17c9aea7f37829630baccb8653955ad", + "commit": { + "id": "12e109a32173ce763185c17ed6d6256465a17c9aea7f37829630baccb8653955ad", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32e0320dd8a5669c65a1c84f9e32ab7b84806e19d5090abf6e9bbddcdb1f2391e7", + "root": "37805ab7db91f11ee883941b2f0ecaabf4c9b75efe66c6b957d5d0a8a3bd47fc", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793478624644, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.391, + "exec": { + "wallMs": 118.709, + "exitCode": 0, + "stdout": "LFS527 0 1793478624720009206 1793478624822403068\n", + "stderr": "", + "rc": 0, + "ms": 102.393862 + }, + "unmountMs": 9.484, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.615, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-mvwuuuld96-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 123.683, + "exitCode": 0, + "stdout": "LFS527 0 1793478624852873015 1793478624963929236\n", + "stderr": "", + "rc": 0, + "ms": 111.056221 + }, + "commitMs": 138.603, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12e109a32173ce763185c17ed6d6256465a17c9aea7f37829630baccb8653955ad", + "root": "37805ab7db91f11ee883941b2f0ecaabf4c9b75efe66c6b957d5d0a8a3bd47fc", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.089, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.212, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.619, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 2641.33, + "ok": true + }, + { + "name": "setup.mount", + "ms": 7.539, + "ok": true + }, + { + "name": "setup.exec", + "ms": 186.778, + "ok": true + }, + { + "name": "setup.commit", + "ms": 309.516, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 8.921, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.389, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 118.706, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 9.481, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.613, + "ok": true + }, + { + "name": "timed.exec", + "ms": 123.68, + "ok": true + }, + { + "name": "timed.commit", + "ms": 138.6, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.086, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.226, + "ok": true + }, + { + "name": "verify.identity", + "ms": 19.415, + "ok": true + }, + { + "name": "verify.exec", + "ms": 335.862, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.22, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 219.795, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32e0320dd8a5669c65a1c84f9e32ab7b84806e19d5090abf6e9bbddcdb1f2391e7", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.541, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.99365234375, + "grantedAt": "2026-10-31T20:30:24.695Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.615, + "execWallMs": 123.683, + "commandMs": 111.056221, + "commitMs": 138.603, + "commitKind": "UpToDate", + "unmountMs": 10.089 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:30:26.430Z" +} diff --git a/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C12-2026-10-31T203029685Z-vwuvbcl140.json b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C12-2026-10-31T203029685Z-vwuvbcl140.json new file mode 100644 index 000000000..43425b7f4 --- /dev/null +++ b/core/docs/issues/527/receipts/50e2c2bc87/vm-ssh-C12-2026-10-31T203029685Z-vwuvbcl140.json @@ -0,0 +1,346 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-vwuvbcl140-", + "startedAt": "2026-10-31T20:30:29.685Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.673828125, + "end": 8.18212890625 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-vwuvbcl140", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-h0Eoz0", + "initMs": 18036, + "volume": "lfs527-vwuvbcl140-c12-store-mvwuvbde", + "vm": { + "project": "c12", + "name": "lfs527-vwuvbcl140-c12-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-h0Eoz0/home", + "store": "lfs527-vwuvbcl140-c12-vm-store", + "created": "2026-10-31T20:30:29.722Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 65408 + }, + "disk": { + "free": 35349549056 + } + }, + "setupMs": 18186, + "cellBudgetMs": 66770, + "teardownMs": 905 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-vwuvbcl140-c12-store-mvwuvbde" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c12", + "name": "lfs527-vwuvbcl140-c12-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "7587a03bb144443d7a55f0fe0af793f0f4349985eedb93342347ef0de7de6d42", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwuvbcl140-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-h0Eoz0/home/worker/c12.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.18212890625, + "grantedAt": "2026-10-31T20:30:54.535Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.598, + "exec": { + "wallMs": 332.527, + "exitCode": 0, + "stdout": "LFS527 0 1793478654354650099 1793478654666788687\n", + "stderr": "", + "rc": 0, + "ms": 312.138588 + }, + "unmountMs": 4.563, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.394, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-vwuvbcl140-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 357.733, + "exitCode": 0, + "stdout": "LFS527 0 1793478654695892053 1793478655034655637\n", + "stderr": "", + "rc": 0, + "ms": 338.763584 + }, + "commitMs": 77.408, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12d140983ae9f779bc29bf750911dcab6c02ef6e757958efe68243d1b6eea24ceb", + "commit": { + "id": "12d140983ae9f779bc29bf750911dcab6c02ef6e757958efe68243d1b6eea24ceb", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32d02967fb3533bc1b7c28f91b7b99dce5d4c132a06f0f7b9d49766755088aa0f2", + "root": "3c6a09ad70bc8c7fc21e2e8701b1698682bdb54a7a384c806540b3ad061bdc44", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793478655110, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26847, + "newMetadata": 6523, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.221, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.55, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.066, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 6205.709, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.594, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 332.522, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.559, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.391, + "ok": true + }, + { + "name": "timed.exec", + "ms": 357.73, + "ok": true + }, + { + "name": "timed.commit", + "ms": 77.405, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.219, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.259, + "ok": true + }, + { + "name": "verify.identity", + "ms": 23.71, + "ok": true + }, + { + "name": "verify.exec", + "ms": 120.733, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.969, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 779.289, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d02967fb3533bc1b7c28f91b7b99dce5d4c132a06f0f7b9d49766755088aa0f2", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.405, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.18212890625, + "grantedAt": "2026-10-31T20:30:54.535Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.394, + "execWallMs": 357.733, + "commandMs": 338.763584, + "commitMs": 77.408, + "commitKind": "Committed", + "unmountMs": 4.221 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:30:56.821Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C01-2026-10-31T213613739Z-wx7uln1480.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C01-2026-10-31T213613739Z-wx7uln1480.json new file mode 100644 index 000000000..f01e335bd --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C01-2026-10-31T213613739Z-wx7uln1480.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-vwx7ut5tv9-", + "startedAt": "2026-10-31T21:36:13.739Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0, + "end": 4.23583984375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-phMOjt", + "initMs": 323, + "volume": "lfs527-vwx7ut5tv9-c01-store-mvwx7vk2", + "setupMs": 1286, + "cellBudgetMs": 88208, + "teardownMs": 122 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-vwx7ut5tv9-c01-store-mvwx7vk2" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-phMOjt/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwx7ut5tv9-c01-store-mvwx7vk2", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwx7ut5tv9-c01-store-mvwx7vk2/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwx7ut5tv9-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 304, + "load1": 3.8212890625, + "grantedAt": "2026-10-31T21:36:17.454Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.08 + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.109, + "exec": { + "wallMs": 633.1, + "exitCode": 0, + "stdout": "LFS527 0 1793482576694750851 1793482577279903769\n", + "stderr": "", + "rc": 0, + "ms": 585.152918 + }, + "unmountMs": 4.886, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 16.368, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 867.146, + "exitCode": 0, + "stdout": "LFS527 0 1793482577671393499 1793482578484853113\n", + "stderr": "", + "rc": 0, + "ms": 813.459614 + }, + "commitMs": 189.568, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1296239c2eb8bcecd9a6b5a9fb9924e34e326676970b691d5ea57de454266d01f2", + "commit": { + "id": "1296239c2eb8bcecd9a6b5a9fb9924e34e326676970b691d5ea57de454266d01f2", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32342398329d6a3a14fe36b20481b5584ee6c50cca138490e3bed5c9e88ba563af", + "root": "67ee37e12979e99f6da8a956f6ab6fe5cb15509214d633bc1c480e4721b0fa49", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793482578667, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.559, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 20.947, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.761, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 621.944, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.103, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 633.087, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.881, + "ok": true + }, + { + "name": "timed.mount", + "ms": 16.362, + "ok": true + }, + { + "name": "timed.exec", + "ms": 867.131, + "ok": true + }, + { + "name": "timed.commit", + "ms": 189.542, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.545, + "ok": true + }, + { + "name": "verify.mount", + "ms": 11.02, + "ok": true + }, + { + "name": "verify.identity", + "ms": 84.873, + "ok": true + }, + { + "name": "verify.exec", + "ms": 1099.833, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.183, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 257.582, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32342398329d6a3a14fe36b20481b5584ee6c50cca138490e3bed5c9e88ba563af", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 317.648, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 304, + "load1": 3.8212890625, + "grantedAt": "2026-10-31T21:36:17.454Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.08 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 16.368, + "execWallMs": 867.146, + "commandMs": 813.459614, + "commitMs": 189.568, + "commitKind": "Committed", + "unmountMs": 10.559 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:36:20.230Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 304, + "load1": 3.8212890625, + "grantedAt": "2026-10-31T21:36:17.454Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 3.8212890625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C02-2026-10-31T213625103Z-wx83db14o5.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C02-2026-10-31T213625103Z-wx83db14o5.json new file mode 100644 index 000000000..85e30183b --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C02-2026-10-31T213625103Z-wx83db14o5.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-vwx83q2u8j-", + "startedAt": "2026-10-31T21:36:25.103Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.36, + "end": 8.2197265625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-fUfbWc", + "initMs": 537, + "volume": "lfs527-vwx83q2u8j-c02-store-mvwx84uw", + "setupMs": 1999, + "cellBudgetMs": 87260, + "teardownMs": 98 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-vwx83q2u8j-c02-store-mvwx84uw" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-fUfbWc/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwx83q2u8j-c02-store-mvwx84uw", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwx83q2u8j-c02-store-mvwx84uw/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwx83q2u8j-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.15185546875, + "grantedAt": "2026-10-31T21:36:32.072Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.49 + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.89, + "exec": { + "wallMs": 2542.256, + "exitCode": 0, + "stdout": "LFS527 0 1793482589687257951 1793482592192892378\n", + "stderr": "", + "rc": 0, + "ms": 2505.634427 + }, + "unmountMs": 6.394, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.776, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 1880.848, + "exitCode": 0, + "stdout": "LFS527 0 1793482592301294788 1793482594108309044\n", + "stderr": "", + "rc": 0, + "ms": 1807.014256 + }, + "commitMs": 120.408, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a77ef3a3903250faa309027d38b746adef07ad0c76e0b096b286a13e095e2397", + "commit": { + "id": "12a77ef3a3903250faa309027d38b746adef07ad0c76e0b096b286a13e095e2397", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3248c5ca941cc417af8fe164cd92021d4bc236407dacbd10ef0dda00e3b2cb26e3", + "root": "1361ca33d6db41aa4a9ca0491765ecdefb520a9b969c3e691c20342ba8604362", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793482594224, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 5.723, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 242.681, + "ok": true + }, + { + "name": "branch.fork", + "ms": 4.955, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 843.662, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.883, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 2542.228, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 6.386, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.748, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1880.807, + "ok": true + }, + { + "name": "timed.commit", + "ms": 120.401, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 5.711, + "ok": true + }, + { + "name": "verify.mount", + "ms": 9.22, + "ok": true + }, + { + "name": "verify.identity", + "ms": 40.442, + "ok": true + }, + { + "name": "verify.exec", + "ms": 921.38, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.314, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 211.458, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3248c5ca941cc417af8fe164cd92021d4bc236407dacbd10ef0dda00e3b2cb26e3", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 21.974, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.15185546875, + "grantedAt": "2026-10-31T21:36:32.072Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.49 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.776, + "execWallMs": 1880.848, + "commandMs": 1807.014256, + "commitMs": 120.408, + "commitKind": "Committed", + "unmountMs": 5.723 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:36:35.413Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.15185546875, + "grantedAt": "2026-10-31T21:36:32.072Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 4.857421875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C03-2026-10-31T213635663Z-wx8bin14sz.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C03-2026-10-31T213635663Z-wx8bin14sz.json new file mode 100644 index 000000000..cacd98b17 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C03-2026-10-31T213635663Z-wx8bin14sz.json @@ -0,0 +1,315 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-vwx8bq5w5b-", + "startedAt": "2026-10-31T21:36:35.663Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.77, + "end": 8.52197265625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-HWs6H9", + "initMs": 310, + "volume": "lfs527-vwx8bq5w5b-c03-store-mvwx8cbc", + "setupMs": 1067, + "cellBudgetMs": 88528, + "teardownMs": 182 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-vwx8bq5w5b-c03-store-mvwx8cbc" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-HWs6H9/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwx8bq5w5b-c03-store-mvwx8cbc", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwx8bq5w5b-c03-store-mvwx8cbc/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwx8bq5w5b-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.52197265625, + "grantedAt": "2026-10-31T21:36:39.071Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.77 + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.488, + "exec": { + "wallMs": 1236.815, + "exitCode": 0, + "stdout": "LFS527 0 1793482597995794705 1793482599209337811\n", + "stderr": "", + "rc": 0, + "ms": 1213.543106 + }, + "unmountMs": 3.85, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.442, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 1362.701, + "exitCode": 0, + "stdout": "LFS527 0 1793482599255165654 1793482600585471254\n", + "stderr": "", + "rc": 0, + "ms": 1330.3056 + }, + "commitMs": 38.28, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "00b38fe79920bb9c853d307d29a67c8f26fb32cfb60134cf484b79f07668fc0d", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.752, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 11.823, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.759, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 387.215, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.478, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1236.801, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.843, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.434, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1362.656, + "ok": true + }, + { + "name": "timed.commit", + "ms": 38.271, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.744, + "ok": true + }, + { + "name": "verify.mount", + "ms": 13.707, + "ok": true + }, + { + "name": "verify.identity", + "ms": 66.333, + "ok": true + }, + { + "name": "verify.exec", + "ms": 56.908, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.002, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 271.22, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "325924debf5423cf7e2d8e3f074cc7e46c833436e55ae1a004d5730f9bdf90ba79", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 5.323, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.52197265625, + "grantedAt": "2026-10-31T21:36:39.071Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.77 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.442, + "execWallMs": 1362.701, + "commandMs": 1330.3056, + "commitMs": 38.28, + "commitKind": "UpToDate", + "unmountMs": 8.752 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:36:41.202Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.52197265625, + "grantedAt": "2026-10-31T21:36:39.071Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.2197265625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C04-2026-10-31T213646227Z-wx8jo314z6.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C04-2026-10-31T213646227Z-wx8jo314z6.json new file mode 100644 index 000000000..bbef8bec9 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C04-2026-10-31T213646227Z-wx8jo314z6.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-vwx8jx9whs-", + "startedAt": "2026-10-31T21:36:46.227Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.88, + "end": 10.318359375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-bf9VM2", + "initMs": 415, + "volume": "lfs527-vwx8jx9whs-c04-store-mvwx8kj9", + "setupMs": 1200, + "cellBudgetMs": 88406, + "teardownMs": 240 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-vwx8jx9whs-c04-store-mvwx8kj9" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-bf9VM2/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwx8jx9whs-c04-store-mvwx8kj9", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwx8jx9whs-c04-store-mvwx8kj9/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwx8jx9whs-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.47607421875, + "grantedAt": "2026-10-31T21:36:50.805Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.97 + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.199, + "exec": { + "wallMs": 1571.786, + "exitCode": 0, + "stdout": "LFS527 0 1793482609472553590 1793482610935111576\n", + "stderr": "", + "rc": 0, + "ms": 1462.557986 + }, + "unmountMs": 6.622, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 23.54, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 2318.764, + "exitCode": 0, + "stdout": "LFS527 0 1793482611014445412 1793482613238554320\n", + "stderr": "", + "rc": 0, + "ms": 2224.108908 + }, + "commitMs": 273.248, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "125991fe6562442b317b9c68119efd3eed1c7a0b03b72dbe3b0af3d38365fbb621", + "commit": { + "id": "125991fe6562442b317b9c68119efd3eed1c7a0b03b72dbe3b0af3d38365fbb621", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3231763126ad062d7783e5ff1672ad182de53a6580c62aa7cfbc0dd922528b7065", + "root": "5c5809d8c229498493a14e73e62583b1c42a5fb8a5e9ff7773bc0ce55e2bc71c", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793482613565, + "logical": 0, + "newCanonical": 109367, + "newStored": 8242, + "newMetadata": 8242, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 30.732, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 19.72, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.387, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 989.907, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.191, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1571.753, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 6.614, + "ok": true + }, + { + "name": "timed.mount", + "ms": 23.522, + "ok": true + }, + { + "name": "timed.exec", + "ms": 2318.38, + "ok": true + }, + { + "name": "timed.commit", + "ms": 273.239, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 30.658, + "ok": true + }, + { + "name": "verify.mount", + "ms": 40.365, + "ok": true + }, + { + "name": "verify.identity", + "ms": 107.987, + "ok": true + }, + { + "name": "verify.exec", + "ms": 840.301, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 19.482, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1350.894, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3231763126ad062d7783e5ff1672ad182de53a6580c62aa7cfbc0dd922528b7065", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 16.828, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.47607421875, + "grantedAt": "2026-10-31T21:36:50.805Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.97 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 23.54, + "execWallMs": 2318.764, + "commandMs": 2224.108908, + "commitMs": 273.248, + "commitKind": "Committed", + "unmountMs": 30.732 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:36:56.192Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.47607421875, + "grantedAt": "2026-10-31T21:36:50.805Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.56005859375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C05-2026-10-31T213702263Z-wx8w1j15gx.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C05-2026-10-31T213702263Z-wx8w1j15gx.json new file mode 100644 index 000000000..5370d4976 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C05-2026-10-31T213702263Z-wx8w1j15gx.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-vwx8w8wyt1-", + "startedAt": "2026-10-31T21:37:02.263Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.04, + "end": 10.640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-VJ4tYk", + "initMs": 321, + "volume": "lfs527-vwx8w8wyt1-c05-store-mvwx8wvr", + "setupMs": 1139, + "cellBudgetMs": 88385, + "teardownMs": 94 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-vwx8w8wyt1-c05-store-mvwx8wvr" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-VJ4tYk/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-vwx8w8wyt1-c05-store-mvwx8wvr", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-vwx8w8wyt1-c05-store-mvwx8wvr/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwx8w8wyt1-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 915, + "load1": 10, + "grantedAt": "2026-10-31T21:37:07.625Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.12 + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.777, + "exec": { + "wallMs": 1307.201, + "exitCode": 0, + "stdout": "LFS527 0 1793482625567278780 1793482626847821921\n", + "stderr": "", + "rc": 0, + "ms": 1280.543141 + }, + "unmountMs": 3.544, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.91, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 1421.017, + "exitCode": 0, + "stdout": "LFS527 0 1793482627811064631 1793482629206278193\n", + "stderr": "", + "rc": 0, + "ms": 1395.213562 + }, + "commitMs": 138.552, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "127b65295b7d0a383aa8b19901bd6743db6072c96ec05689390403f2bfa0407845", + "commit": { + "id": "127b65295b7d0a383aa8b19901bd6743db6072c96ec05689390403f2bfa0407845", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32b1804a5e935fbf3c97b4b4db4595154d59bd96dc19ec7265166468acf79ed7c3", + "root": "3b353f265ae05c0d0fee0ad0562c877479b21ef7aaa0cb20297b9cc82ea6786e", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793482629338, + "logical": 0, + "newCanonical": 109367, + "newStored": 8234, + "newMetadata": 8234, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.227, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 12.984, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.93, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 1149.538, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.77, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1307.189, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.54, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.904, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1421.012, + "ok": true + }, + { + "name": "timed.commit", + "ms": 138.545, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.213, + "ok": true + }, + { + "name": "verify.mount", + "ms": 7.495, + "ok": true + }, + { + "name": "verify.identity", + "ms": 40.294, + "ok": true + }, + { + "name": "verify.exec", + "ms": 461.864, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.555, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 232.583, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32b1804a5e935fbf3c97b4b4db4595154d59bd96dc19ec7265166468acf79ed7c3", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 923.146, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 915, + "load1": 10, + "grantedAt": "2026-10-31T21:37:07.625Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.12 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.91, + "execWallMs": 1421.017, + "commandMs": 1395.213562, + "commitMs": 138.552, + "commitKind": "Committed", + "unmountMs": 4.227 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:10.080Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 915, + "load1": 10, + "grantedAt": "2026-10-31T21:37:07.625Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.65185546875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C06-2026-10-31T213713071Z-wx94dr15sn.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C06-2026-10-31T213713071Z-wx94dr15sn.json new file mode 100644 index 000000000..7239f9e2b --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C06-2026-10-31T213713071Z-wx94dr15sn.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wx94o3114g-", + "startedAt": "2026-10-31T21:37:13.071Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.27, + "end": 10.5888671875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-iLjCUF", + "initMs": 423, + "volume": "lfs527-wx94o3114g-c06-store-mvwx9565", + "setupMs": 1069, + "cellBudgetMs": 88675, + "teardownMs": 87 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-wx94o3114g-c06-store-mvwx9565" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-iLjCUF/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx94o3114g-c06-store-mvwx9565", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx94o3114g-c06-store-mvwx9565/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx94o3114g-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.5888671875, + "grantedAt": "2026-10-31T21:37:15.464Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.17 + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.509, + "exec": { + "wallMs": 447.55, + "exitCode": 0, + "stdout": "LFS527 0 1793482635170483354 1793482635596453359\n", + "stderr": "", + "rc": 0, + "ms": 425.970005 + }, + "unmountMs": 12.027, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.021, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 249.135, + "exitCode": 0, + "stdout": "LFS527 0 1793482635642144716 1793482635866183956\n", + "stderr": "", + "rc": 0, + "ms": 224.03924 + }, + "commitMs": 650.743, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a0d8ea187a3d7c77ca5d791ac7fd816add296295154360ce6ebdad4794a9eea4", + "commit": { + "id": "12a0d8ea187a3d7c77ca5d791ac7fd816add296295154360ce6ebdad4794a9eea4", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3248a92de7ce8f6334f7ed38058796ad41eeca31000d5cf6fd6544d0f7432e6386", + "root": "53b8277bc174b9ea541845ce90bc3c1e54924a3e6b49e3d17e111960b06f7879", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793482636460, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 14.236, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.697, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.667, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 251.678, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.503, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 447.536, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.021, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.017, + "ok": true + }, + { + "name": "timed.exec", + "ms": 249.128, + "ok": true + }, + { + "name": "timed.commit", + "ms": 650.737, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 14.186, + "ok": true + }, + { + "name": "verify.mount", + "ms": 10.263, + "ok": true + }, + { + "name": "verify.identity", + "ms": 34.669, + "ok": true + }, + { + "name": "verify.exec", + "ms": 494.442, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.024, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 206.096, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3248a92de7ce8f6334f7ed38058796ad41eeca31000d5cf6fd6544d0f7432e6386", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 4.007, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.5888671875, + "grantedAt": "2026-10-31T21:37:15.464Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.17 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.021, + "execWallMs": 249.135, + "commandMs": 224.03924, + "commitMs": 650.743, + "commitKind": "Committed", + "unmountMs": 14.236 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:17.249Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.5888671875, + "grantedAt": "2026-10-31T21:37:15.464Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.640625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C07-2026-10-31T213721420Z-wx9ato163v.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C07-2026-10-31T213721420Z-wx9ato163v.json new file mode 100644 index 000000000..16256b0c7 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C07-2026-10-31T213721420Z-wx9ato163v.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wx9b1511h4-", + "startedAt": "2026-10-31T21:37:21.420Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.07, + "end": 10.79931640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-eRwAkg", + "initMs": 423, + "volume": "lfs527-wx9b1511h4-c07-store-mvwx9bl7", + "setupMs": 1142, + "cellBudgetMs": 88494, + "teardownMs": 80 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-wx9b1511h4-c07-store-mvwx9bl7" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-eRwAkg/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx9b1511h4-c07-store-mvwx9bl7", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx9b1511h4-c07-store-mvwx9bl7/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9b1511h4-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.3916015625, + "grantedAt": "2026-10-31T21:37:25.966Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.99 + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 12.369, + "exec": { + "wallMs": 2135.285, + "exitCode": 0, + "stdout": "LFS527 0 1793482643952434042 1793482646031682132\n", + "stderr": "", + "rc": 0, + "ms": 2079.24809 + }, + "unmountMs": 25.203, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.094, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 1077.964, + "exitCode": 0, + "stdout": "LFS527 0 1793482646592535592 1793482647201387786\n", + "stderr": "", + "rc": 0, + "ms": 608.852194 + }, + "commitMs": 719.288, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "127f68ecf6081aa645f0029afcb11c34d12145371cef9339a4762dfd61a9fd5e78", + "commit": { + "id": "127f68ecf6081aa645f0029afcb11c34d12145371cef9339a4762dfd61a9fd5e78", + "branch": null, + "parent": null, + "secondParent": null, + "base": "322424ccc356fd1530b193b978834a06f0f2cd366d5a8eb254cc4322e66b9bfc0a", + "root": "c9c6b8d79c9197402470cce5e01fbae92b56183ee92f31be4d9cbd5f9b99ffcd", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793482647815, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 20.796, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 12.071, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.666, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 505.225, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 12.359, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 2135.091, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 25.196, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.087, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1077.958, + "ok": true + }, + { + "name": "timed.commit", + "ms": 719.281, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 20.79, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.937, + "ok": true + }, + { + "name": "verify.identity", + "ms": 27.49, + "ok": true + }, + { + "name": "verify.exec", + "ms": 945.313, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.117, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 342.46, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "322424ccc356fd1530b193b978834a06f0f2cd366d5a8eb254cc4322e66b9bfc0a", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 55.156, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.3916015625, + "grantedAt": "2026-10-31T21:37:25.966Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.99 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.094, + "execWallMs": 1077.964, + "commandMs": 608.852194, + "commitMs": 719.288, + "commitKind": "Committed", + "unmountMs": 20.796 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:29.231Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.3916015625, + "grantedAt": "2026-10-31T21:37:25.966Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.38134765625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C08-2026-10-31T213732344Z-wx9j9416kl.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C08-2026-10-31T213732344Z-wx9j9416kl.json new file mode 100644 index 000000000..46ed95d41 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C08-2026-10-31T213732344Z-wx9j9416kl.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wx9jgo11u0-", + "startedAt": "2026-10-31T21:37:32.344Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.91, + "end": 10.25439453125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-gIENys", + "initMs": 312, + "volume": "lfs527-wx9jgo11u0-c08-store-mvwx9jwd", + "setupMs": 872, + "cellBudgetMs": 88853, + "teardownMs": 94 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-wx9jgo11u0-c08-store-mvwx9jwd" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-gIENys/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx9jgo11u0-c08-store-mvwx9jwd", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx9jgo11u0-c08-store-mvwx9jwd/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9jgo11u0-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.25439453125, + "grantedAt": "2026-10-31T21:37:34.272Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.91 + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.938, + "exec": { + "wallMs": 258.787, + "exitCode": 0, + "stdout": "LFS527 0 1793482654169629835 1793482654404803122\n", + "stderr": "", + "rc": 0, + "ms": 235.173287 + }, + "unmountMs": 11.945, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.452, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 249.346, + "exitCode": 0, + "stdout": "LFS527 0 1793482654452267784 1793482654675706915\n", + "stderr": "", + "rc": 0, + "ms": 223.439131 + }, + "commitMs": 332.272, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12c9ec99adc802a60c7c2e03b0cc11f1250e794643413962f39483bf71f5e7e650", + "commit": { + "id": "12c9ec99adc802a60c7c2e03b0cc11f1250e794643413962f39483bf71f5e7e650", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32e01a4c24965cec28e3b43f4a383df793b964064df4c7b221c3216775045f24f1", + "root": "83d8ee67f5a34276eb0c9944328ea3a79f58c08072b5a594fbb89c382c693e4a", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793482654952, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.198, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.626, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.559, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 222.099, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.931, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 258.776, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 11.938, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.445, + "ok": true + }, + { + "name": "timed.exec", + "ms": 249.34, + "ok": true + }, + { + "name": "timed.commit", + "ms": 332.266, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.193, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.077, + "ok": true + }, + { + "name": "verify.identity", + "ms": 27.841, + "ok": true + }, + { + "name": "verify.exec", + "ms": 448.369, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.855, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 303.333, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32e01a4c24965cec28e3b43f4a383df793b964064df4c7b221c3216775045f24f1", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 4.41, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.25439453125, + "grantedAt": "2026-10-31T21:37:34.272Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.91 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.452, + "execWallMs": 249.346, + "commandMs": 223.439131, + "commitMs": 332.272, + "commitKind": "Committed", + "unmountMs": 10.198 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:35.787Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.25439453125, + "grantedAt": "2026-10-31T21:37:34.272Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.79931640625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C09-2026-10-31T213739059Z-wx9ofn16sd.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C09-2026-10-31T213739059Z-wx9ofn16sd.json new file mode 100644 index 000000000..5ed7254f0 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C09-2026-10-31T213739059Z-wx9ofn16sd.json @@ -0,0 +1,376 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wx9opc126s-", + "startedAt": "2026-10-31T21:37:39.059Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.99, + "end": 9.75341796875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-bGZmmS", + "initMs": 315, + "volume": "lfs527-wx9opc126s-c09-store-mvwx9p6p", + "setupMs": 937, + "cellBudgetMs": 88798, + "teardownMs": 160 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-wx9opc126s-c09-store-mvwx9p6p" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-bGZmmS/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx9opc126s-c09-store-mvwx9p6p", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx9opc126s-c09-store-mvwx9p6p/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9opc126s-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.75341796875, + "grantedAt": "2026-10-31T21:37:41.862Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1 + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 271.847, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "121000c7934e82ba50b48ffd452bee603fa72ae58af9b159e20deaf9293cf5c99f", + "commit": { + "id": "121000c7934e82ba50b48ffd452bee603fa72ae58af9b159e20deaf9293cf5c99f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32797f12c725415736a853657695550fbf547caec4c070012a573e74dc31316131", + "root": "158b971901cda897ef3c638ad4b223ccdd0f28ae9bfb3719b2b181222de46f19", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793482661768, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 6.668, + "exec": { + "wallMs": 142.291, + "exitCode": 0, + "stdout": "LFS527 0 1793482661888397606 1793482661999030621\n", + "stderr": "", + "rc": 0, + "ms": 110.633015 + }, + "unmountMs": 5.794, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.583, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 90.03, + "exitCode": 0, + "stdout": "LFS527 0 1793482662044573893 1793482662112447201\n", + "stderr": "", + "rc": 0, + "ms": 67.873308 + }, + "commitMs": 1.431, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "121000c7934e82ba50b48ffd452bee603fa72ae58af9b159e20deaf9293cf5c99f", + "root": "158b971901cda897ef3c638ad4b223ccdd0f28ae9bfb3719b2b181222de46f19", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.623, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.123, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.638, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 399.445, + "ok": true + }, + { + "name": "setup.mount", + "ms": 5.933, + "ok": true + }, + { + "name": "setup.exec", + "ms": 271.823, + "ok": true + }, + { + "name": "setup.commit", + "ms": 383.031, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 15.196, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.659, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 142.269, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 5.789, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.57, + "ok": true + }, + { + "name": "timed.exec", + "ms": 90.015, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1.427, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.618, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.6, + "ok": true + }, + { + "name": "verify.identity", + "ms": 44.49, + "ok": true + }, + { + "name": "verify.exec", + "ms": 381.482, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.612, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 520.006, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32797f12c725415736a853657695550fbf547caec4c070012a573e74dc31316131", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 6.025, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.75341796875, + "grantedAt": "2026-10-31T21:37:41.862Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.583, + "execWallMs": 90.03, + "commandMs": 67.873308, + "commitMs": 1.431, + "commitKind": "UpToDate", + "unmountMs": 4.623 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:43.127Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.75341796875, + "grantedAt": "2026-10-31T21:37:41.862Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.75341796875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C10-2026-10-31T213747053Z-wx9ulp174s.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C10-2026-10-31T213747053Z-wx9ulp174s.json new file mode 100644 index 000000000..241845e29 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C10-2026-10-31T213747053Z-wx9ulp174s.json @@ -0,0 +1,395 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wx9wab12k2-", + "startedAt": "2026-10-31T21:37:47.053Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.91, + "end": 9.41259765625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-XNdvTL", + "initMs": 537, + "volume": "lfs527-wx9wab12k2-c10-store-mvwx9x0m", + "setupMs": 1475, + "cellBudgetMs": 88120, + "teardownMs": 92 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-wx9wab12k2-c10-store-mvwx9x0m" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-XNdvTL/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx9wab12k2-c10-store-mvwx9x0m", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx9wab12k2-c10-store-mvwx9x0m/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9wab12k2-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 609, + "load1": 9.41259765625, + "grantedAt": "2026-10-31T21:37:54.417Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.85 + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 358.627, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a92353cdca7ab2e7b9456d4904df52a0034352ac64ce235a287fd1ea8e8bad1d", + "commit": { + "id": "12a92353cdca7ab2e7b9456d4904df52a0034352ac64ce235a287fd1ea8e8bad1d", + "branch": null, + "parent": null, + "secondParent": null, + "base": "325bba2fb32e99de5b151c6afed3080a6d6cb8172c19b47497f0dd6a6df64f93e4", + "root": "c5ee61ea429e1d8beb312ea789d89dc07e90ae77e1324120c0b3ea21449071cc", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793482673507, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.505, + "exec": { + "wallMs": 357.378, + "exitCode": 0, + "stdout": "LFS527 0 1793482673601816088 1793482673930914607\n", + "stderr": "", + "rc": 0, + "ms": 329.098519 + }, + "unmountMs": 15.222, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 9.248, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 375.112, + "exitCode": 0, + "stdout": "LFS527 0 1793482674601732319 1793482674951225864\n", + "stderr": "", + "rc": 0, + "ms": 349.493545 + }, + "commitMs": 61.391, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1221be2835f4b2af5472ded878376780408ce66cc8ffb441e6db301e9fc3c55479", + "commit": { + "id": "1221be2835f4b2af5472ded878376780408ce66cc8ffb441e6db301e9fc3c55479", + "branch": null, + "parent": "12a92353cdca7ab2e7b9456d4904df52a0034352ac64ce235a287fd1ea8e8bad1d", + "secondParent": null, + "base": "325bba2fb32e99de5b151c6afed3080a6d6cb8172c19b47497f0dd6a6df64f93e4", + "root": "00251d0f20b14b9eac6233a99da04492c51599f4d7544590190174cf78ac9193", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793482674956, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 16.685, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 42.886, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.559, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 1541.576, + "ok": true + }, + { + "name": "setup.mount", + "ms": 6.976, + "ok": true + }, + { + "name": "setup.exec", + "ms": 358.606, + "ok": true + }, + { + "name": "setup.commit", + "ms": 323.136, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 10.453, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.5, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 357.369, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 15.209, + "ok": true + }, + { + "name": "timed.mount", + "ms": 9.243, + "ok": true + }, + { + "name": "timed.exec", + "ms": 375.095, + "ok": true + }, + { + "name": "timed.commit", + "ms": 61.384, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 16.678, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.096, + "ok": true + }, + { + "name": "verify.identity", + "ms": 33.223, + "ok": true + }, + { + "name": "verify.exec", + "ms": 716.126, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.317, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 204.979, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "325bba2fb32e99de5b151c6afed3080a6d6cb8172c19b47497f0dd6a6df64f93e4", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 619.264, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 609, + "load1": 9.41259765625, + "grantedAt": "2026-10-31T21:37:54.417Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.85 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 9.248, + "execWallMs": 375.112, + "commandMs": 349.493545, + "commitMs": 61.391, + "commitKind": "Committed", + "unmountMs": 16.685 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:55.975Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 609, + "load1": 9.41259765625, + "grantedAt": "2026-10-31T21:37:54.417Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.13232421875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C11-2026-10-31T213759433Z-wxa45l17ho.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C11-2026-10-31T213759433Z-wxa45l17ho.json new file mode 100644 index 000000000..1931b6bcb --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C11-2026-10-31T213759433Z-wxa45l17ho.json @@ -0,0 +1,376 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wxa4co12xi-", + "startedAt": "2026-10-31T21:37:59.433Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.78, + "end": 9.29931640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-8d08Jg", + "initMs": 308, + "volume": "lfs527-wxa4co12xi-c11-store-mvwxa4vb", + "setupMs": 974, + "cellBudgetMs": 88658, + "teardownMs": 87 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-wxa4co12xi-c11-store-mvwxa4vb" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-8d08Jg/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wxa4co12xi-c11-store-mvwxa4vb", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wxa4co12xi-c11-store-mvwxa4vb/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxa4co12xi-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.29931640625, + "grantedAt": "2026-10-31T21:38:02.208Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.78 + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 271.219, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "125020dec2b8a6a886d9889a2d6fc1e21d09c9c669a2b3d9bacc35608b0d10c2fc", + "commit": { + "id": "125020dec2b8a6a886d9889a2d6fc1e21d09c9c669a2b3d9bacc35608b0d10c2fc", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3288b14722bbebefa97396582b3a798f6bdc706c7b1eb16a5002c78b30d5d6a346", + "root": "20bf878fa1c938f811ecaa17760dba2fa4b0dae1838dac3fdac4f73cae9252f9", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793482682072, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.395, + "exec": { + "wallMs": 195.434, + "exitCode": 0, + "stdout": "LFS527 0 1793482682164193503 1793482682337917554\n", + "stderr": "", + "rc": 0, + "ms": 173.724051 + }, + "unmountMs": 12.858, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 8.358, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 198.685, + "exitCode": 0, + "stdout": "LFS527 0 1793482682388206653 1793482682564275521\n", + "stderr": "", + "rc": 0, + "ms": 176.068868 + }, + "commitMs": 163.204, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "125020dec2b8a6a886d9889a2d6fc1e21d09c9c669a2b3d9bacc35608b0d10c2fc", + "root": "20bf878fa1c938f811ecaa17760dba2fa4b0dae1838dac3fdac4f73cae9252f9", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 12.528, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.347, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.851, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 308.418, + "ok": true + }, + { + "name": "setup.mount", + "ms": 5.756, + "ok": true + }, + { + "name": "setup.exec", + "ms": 271.206, + "ok": true + }, + { + "name": "setup.commit", + "ms": 329.118, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 10.682, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.39, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 195.426, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.851, + "ok": true + }, + { + "name": "timed.mount", + "ms": 8.351, + "ok": true + }, + { + "name": "timed.exec", + "ms": 198.679, + "ok": true + }, + { + "name": "timed.commit", + "ms": 163.197, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 12.522, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.396, + "ok": true + }, + { + "name": "verify.identity", + "ms": 35.148, + "ok": true + }, + { + "name": "verify.exec", + "ms": 534.8, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.637, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 207.68, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3288b14722bbebefa97396582b3a798f6bdc706c7b1eb16a5002c78b30d5d6a346", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 5.284, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.29931640625, + "grantedAt": "2026-10-31T21:38:02.208Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.78 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 8.358, + "execWallMs": 198.685, + "commandMs": 176.068868, + "commitMs": 163.204, + "commitKind": "UpToDate", + "unmountMs": 12.528 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:03.497Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.29931640625, + "grantedAt": "2026-10-31T21:38:02.208Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.29931640625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C12-2026-10-31T213806739Z-wxa9si182g.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C12-2026-10-31T213806739Z-wxa9si182g.json new file mode 100644 index 000000000..23f3524a5 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-docker-C12-2026-10-31T213806739Z-wxa9si182g.json @@ -0,0 +1,334 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-docker", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wxa9ze13au-", + "startedAt": "2026-10-31T21:38:06.739Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.72, + "end": 9.505859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-xoMXcE", + "initMs": 433, + "volume": "lfs527-wxa9ze13au-c12-store-mvwxaakm", + "setupMs": 1193, + "cellBudgetMs": 88357, + "teardownMs": 122 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-wxa9ze13au-c12-store-mvwxaakm" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-xoMXcE/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/var/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wxa9ze13au-c12-store-mvwxaakm", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wxa9ze13au-c12-store-mvwxaakm/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxa9ze13au-", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.505859375, + "grantedAt": "2026-10-31T21:38:10.045Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.74 + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 9.841, + "exec": { + "wallMs": 857.414, + "exitCode": 0, + "stdout": "LFS527 0 1793482689344069450 1793482690169487396\n", + "stderr": "", + "rc": 0, + "ms": 825.417946 + }, + "unmountMs": 4.756, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.288, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 519.975, + "exitCode": 0, + "stdout": "LFS527 0 1793482690234594238 1793482690721338417\n", + "stderr": "", + "rc": 0, + "ms": 486.744179 + }, + "commitMs": 74.368, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "129fb63c24494dde509fa99f23f94dffa36175176ab5b2cf169fb50148e7cbb450", + "commit": { + "id": "129fb63c24494dde509fa99f23f94dffa36175176ab5b2cf169fb50148e7cbb450", + "branch": null, + "parent": null, + "secondParent": null, + "base": "320a422c9c57a62ce2e5cefe4471299745af89949703bc4f7e4afaf80e8bf2681f", + "root": "a80a6d77db2169432a939b54eaf51e584db22f2d9cd83d1b93e4b86a77c29478", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793482690794, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26831, + "newMetadata": 6526, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.279, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 17.382, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.692, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 460.979, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 9.834, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 857.39, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.749, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.281, + "ok": true + }, + { + "name": "timed.exec", + "ms": 519.957, + "ok": true + }, + { + "name": "timed.commit", + "ms": 74.357, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.272, + "ok": true + }, + { + "name": "verify.mount", + "ms": 40.137, + "ok": true + }, + { + "name": "verify.identity", + "ms": 66.114, + "ok": true + }, + { + "name": "verify.exec", + "ms": 231.105, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.713, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 474.181, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "320a422c9c57a62ce2e5cefe4471299745af89949703bc4f7e4afaf80e8bf2681f", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 17.92, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.505859375, + "grantedAt": "2026-10-31T21:38:10.045Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.74 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.288, + "execWallMs": 519.975, + "commandMs": 486.744179, + "commitMs": 74.368, + "commitKind": "Committed", + "unmountMs": 4.279 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:11.637Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.505859375, + "grantedAt": "2026-10-31T21:38:10.045Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.11474609375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C01-2026-10-31T213947586Z-wxcflu1g6b.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C01-2026-10-31T213947586Z-wxcflu1g6b.json new file mode 100644 index 000000000..d2ad589a3 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C01-2026-10-31T213947586Z-wxcflu1g6b.json @@ -0,0 +1,338 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wxcfsg1b6c-", + "startedAt": "2026-10-31T21:39:47.586Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.76, + "end": 7.38232421875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-NfIqTi", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 19, + "init": { + "kind": "Initialized", + "project": "c01", + "layer": "32eeb4dc1bf0f88942f3f3033120618b5fe20643307ce2fed58cffccfdb4741480", + "root": "3db557ecb740c13db2eca5a7b4ff8d3eb90ca0a29437ba568cd65fe00a5c0afd", + "store": "/var/lib/lfs527/lfs527-NfIqTi/store/store.sqlite" + }, + "setupMs": 151, + "cellBudgetMs": 89543, + "teardownMs": 933 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-NfIqTi/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-NfIqTi/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-NfIqTi/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxcfsg1b6c-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 4, + "load1": 7.5029296875, + "grantedAt": "2026-10-31T21:40:26.657Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.07 + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 66.733, + "exec": { + "wallMs": 569.138, + "exitCode": 0, + "stdout": "LFS527 0 1793482826257996248 1793482826731097583\n", + "stderr": "", + "rc": 0, + "ms": 473.101335 + }, + "unmountMs": 20.393, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.758, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-NfIqTi/local/lfs527-wxcfsg1b6c-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 567.447, + "exitCode": 0, + "stdout": "LFS527 0 1793482826830549116 1793482827378776660\n", + "stderr": "", + "rc": 0, + "ms": 548.227544 + }, + "commitMs": 179.797, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "124ca6043f7b038c07224d00726bbb2bffde34215caa575653dbc42d0357d07915", + "commit": { + "id": "124ca6043f7b038c07224d00726bbb2bffde34215caa575653dbc42d0357d07915", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32eeb4dc1bf0f88942f3f3033120618b5fe20643307ce2fed58cffccfdb4741480", + "root": "00bb65d2b6a0ab453549816db0b3207f5f6984ac363099131f19244695da5b8e", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793482827549, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.809, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.731, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.655, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 37653.072, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 66.715, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 569.124, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 20.385, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.752, + "ok": true + }, + { + "name": "timed.exec", + "ms": 567.42, + "ok": true + }, + { + "name": "timed.commit", + "ms": 179.787, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.804, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.026, + "ok": true + }, + { + "name": "verify.identity", + "ms": 136.205, + "ok": true + }, + { + "name": "verify.exec", + "ms": 989.832, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.01, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 542.625, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32eeb4dc1bf0f88942f3f3033120618b5fe20643307ce2fed58cffccfdb4741480", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 56.398, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 4, + "load1": 7.5029296875, + "grantedAt": "2026-10-31T21:40:26.657Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.07 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.758, + "execWallMs": 567.447, + "commandMs": 548.227544, + "commitMs": 179.797, + "commitKind": "Committed", + "unmountMs": 3.809 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:40:30.099Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 4, + "load1": 7.5029296875, + "grantedAt": "2026-10-31T21:40:26.657Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.1455078125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C02-2026-10-31T214033958Z-wxdfdy1hbp.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C02-2026-10-31T214033958Z-wxdfdy1hbp.json new file mode 100644 index 000000000..4d56b0485 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C02-2026-10-31T214033958Z-wxdfdy1hbp.json @@ -0,0 +1,338 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wxdfn01bda-", + "startedAt": "2026-10-31T21:40:33.958Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.06, + "end": 8.80078125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-M8Jq08", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 19, + "init": { + "kind": "Initialized", + "project": "c02", + "layer": "328adb45b8cd19085272f1fdf813fd5f748b161b0623a8cc3636931ec8016099ac", + "root": "bf1c21d354d8fd0e3a71de037344c5867c5e2096b145c1feff8da1f82449c091", + "store": "/var/lib/lfs527/lfs527-M8Jq08/store/store.sqlite" + }, + "setupMs": 117, + "cellBudgetMs": 89615, + "teardownMs": 1189 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-M8Jq08/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-M8Jq08/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-M8Jq08/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxdfn01bda-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 8.87060546875, + "grantedAt": "2026-10-31T21:40:48.813Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.13 + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 13.67, + "exec": { + "wallMs": 2402.589, + "exitCode": 0, + "stdout": "LFS527 0 1793482846557768326 1793482848924727715\n", + "stderr": "", + "rc": 0, + "ms": 2366.959389 + }, + "unmountMs": 10.911, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 46.551, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-M8Jq08/local/lfs527-wxdfn01bda-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 2042.038, + "exitCode": 0, + "stdout": "LFS527 0 1793482849038182131 1793482851048204888\n", + "stderr": "", + "rc": 0, + "ms": 2010.022757 + }, + "commitMs": 214.883, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "127f9f25ac5a9df9db90a47d7eef9b1d9fa54267a3291744fa73bdb2b1dd18dafe", + "commit": { + "id": "127f9f25ac5a9df9db90a47d7eef9b1d9fa54267a3291744fa73bdb2b1dd18dafe", + "branch": null, + "parent": null, + "secondParent": null, + "base": "328adb45b8cd19085272f1fdf813fd5f748b161b0623a8cc3636931ec8016099ac", + "root": "964c0e294dd75c91a51c7c9e14d659b7452c702cf68033664e69adc659afdd3b", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793482851241, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18644, + "newMetadata": 9719, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 5.759, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.4, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.597, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 11707.276, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 13.663, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 2402.498, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.904, + "ok": true + }, + { + "name": "timed.mount", + "ms": 46.542, + "ok": true + }, + { + "name": "timed.exec", + "ms": 2042.009, + "ok": true + }, + { + "name": "timed.commit", + "ms": 214.875, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 5.753, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.22, + "ok": true + }, + { + "name": "verify.identity", + "ms": 70.201, + "ok": true + }, + { + "name": "verify.exec", + "ms": 1020.088, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.567, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1003.382, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "328adb45b8cd19085272f1fdf813fd5f748b161b0623a8cc3636931ec8016099ac", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 24.041, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 8.87060546875, + "grantedAt": "2026-10-31T21:40:48.813Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.13 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 46.551, + "execWallMs": 2042.038, + "commandMs": 2010.022757, + "commitMs": 214.883, + "commitKind": "Committed", + "unmountMs": 5.759 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:40:54.496Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 8.87060546875, + "grantedAt": "2026-10-31T21:40:48.813Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.111328125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C03-2026-10-31T214059991Z-wxdzh31hw3.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C03-2026-10-31T214059991Z-wxdzh31hw3.json new file mode 100644 index 000000000..e5f33e0e0 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C03-2026-10-31T214059991Z-wxdzh31hw3.json @@ -0,0 +1,319 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wxdzz41d3l-", + "startedAt": "2026-10-31T21:40:59.991Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.09, + "end": 9.57666015625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-mLBd6p", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 65, + "init": { + "kind": "Initialized", + "project": "c03", + "layer": "3281af76a330510e06b402c3857b8ace901bcee57fed52adb174d52c8e7dd44317", + "root": "4b497885b245c8ae3bf8813207b596c3eaf99b5e447e8aca7607794f120265f7", + "store": "/var/lib/lfs527/lfs527-mLBd6p/store/store.sqlite" + }, + "setupMs": 271, + "cellBudgetMs": 89037, + "teardownMs": 834 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-mLBd6p/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-mLBd6p/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-mLBd6p/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxdzz41d3l-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.626953125, + "grantedAt": "2026-10-31T21:41:16.229Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.31 + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 27.984, + "exec": { + "wallMs": 969.028, + "exitCode": 0, + "stdout": "LFS527 0 1793482875530851662 1793482876353837369\n", + "stderr": "", + "rc": 0, + "ms": 822.985707 + }, + "unmountMs": 2.024, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.955, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-mLBd6p/local/lfs527-wxdzz41d3l-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 847.427, + "exitCode": 0, + "stdout": "LFS527 0 1793482876403043919 1793482877231434252\n", + "stderr": "", + "rc": 0, + "ms": 828.390333 + }, + "commitMs": 14.563, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "4b497885b245c8ae3bf8813207b596c3eaf99b5e447e8aca7607794f120265f7", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.251, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 27.621, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.313, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 13448.864, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 27.976, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 969.017, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.016, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.949, + "ok": true + }, + { + "name": "timed.exec", + "ms": 847.421, + "ok": true + }, + { + "name": "timed.commit", + "ms": 14.558, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.248, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.052, + "ok": true + }, + { + "name": "verify.identity", + "ms": 111.568, + "ok": true + }, + { + "name": "verify.exec", + "ms": 50.071, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.955, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 617.994, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3281af76a330510e06b402c3857b8ace901bcee57fed52adb174d52c8e7dd44317", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 23.12, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.626953125, + "grantedAt": "2026-10-31T21:41:16.229Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.31 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.955, + "execWallMs": 847.427, + "commandMs": 828.390333, + "commitMs": 14.563, + "commitKind": "UpToDate", + "unmountMs": 2.251 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:41:18.765Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.626953125, + "grantedAt": "2026-10-31T21:41:16.229Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.056640625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C04-2026-10-31T214122070Z-wxegie1ics.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C04-2026-10-31T214122070Z-wxegie1ics.json new file mode 100644 index 000000000..0164d0c2f --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C04-2026-10-31T214122070Z-wxegie1ics.json @@ -0,0 +1,338 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wxegsr1d9n-", + "startedAt": "2026-10-31T21:41:22.070Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.2, + "end": 9.8486328125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-I1vigH", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 21, + "init": { + "kind": "Initialized", + "project": "c04", + "layer": "32917ca55860501f5d1e8dbe41859397d5fc51df691dd83563ebd33c1c950660b7", + "root": "d67b96cdee8cff1c20de8653ad7383a69ea6b1e5833cad797a33a46bbe624e55", + "store": "/var/lib/lfs527/lfs527-I1vigH/store/store.sqlite" + }, + "setupMs": 160, + "cellBudgetMs": 89441, + "teardownMs": 782 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-I1vigH/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-I1vigH/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-I1vigH/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxegsr1d9n-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.8486328125, + "grantedAt": "2026-10-31T21:41:35.447Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.32 + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 9.21, + "exec": { + "wallMs": 1320.53, + "exitCode": 0, + "stdout": "LFS527 0 1793482894313908432 1793482895587378089\n", + "stderr": "", + "rc": 0, + "ms": 1273.469657 + }, + "unmountMs": 3.002, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.867, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-I1vigH/local/lfs527-wxegsr1d9n-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 1301.037, + "exitCode": 0, + "stdout": "LFS527 0 1793482895616258865 1793482896902851360\n", + "stderr": "", + "rc": 0, + "ms": 1286.592495 + }, + "commitMs": 114.343, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12add2a02c6bba7f8014365629376876e798e6643f11d35de67ff91e654239a3c5", + "commit": { + "id": "12add2a02c6bba7f8014365629376876e798e6643f11d35de67ff91e654239a3c5", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32917ca55860501f5d1e8dbe41859397d5fc51df691dd83563ebd33c1c950660b7", + "root": "18776f3ef3e347620c553f53a04a383dd459bdfeac384881a29458d2b3927645", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793482897009, + "logical": 0, + "newCanonical": 109367, + "newStored": 8246, + "newMetadata": 8246, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.481, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 24.214, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.469, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 11018.557, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 9.203, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1320.518, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.995, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.863, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1301.031, + "ok": true + }, + { + "name": "timed.commit", + "ms": 114.336, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.477, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.855, + "ok": true + }, + { + "name": "verify.identity", + "ms": 30.777, + "ok": true + }, + { + "name": "verify.exec", + "ms": 483.777, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.184, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 191.072, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32917ca55860501f5d1e8dbe41859397d5fc51df691dd83563ebd33c1c950660b7", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 6.818, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.8486328125, + "grantedAt": "2026-10-31T21:41:35.447Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.32 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.867, + "execWallMs": 1301.037, + "commandMs": 1286.592495, + "commitMs": 114.343, + "commitKind": "Committed", + "unmountMs": 2.481 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:41:38.401Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.8486328125, + "grantedAt": "2026-10-31T21:41:35.447Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.57666015625 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C05-2026-10-31T214141629Z-wxevlp1ijt.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C05-2026-10-31T214141629Z-wxevlp1ijt.json new file mode 100644 index 000000000..5c9436cb0 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C05-2026-10-31T214141629Z-wxevlp1ijt.json @@ -0,0 +1,338 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wxevth1fee-", + "startedAt": "2026-10-31T21:41:41.629Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.21, + "end": 9.8515625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-TLiZdc", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 26, + "init": { + "kind": "Initialized", + "project": "c05", + "layer": "32c35718deb466dac263b5954d24a0d59341793f02c714e267e27bc9b2f1a283b0", + "root": "6ec37362d7408e70f15b33cab43a2fe43b8f831402370405d5f313c7ec4ba610", + "store": "/var/lib/lfs527/lfs527-TLiZdc/store/store.sqlite" + }, + "setupMs": 168, + "cellBudgetMs": 89507, + "teardownMs": 773 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-TLiZdc/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-TLiZdc/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-TLiZdc/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxevth1fee-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 9.751953125, + "grantedAt": "2026-10-31T21:41:58.406Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.3 + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 11.217, + "exec": { + "wallMs": 1402.641, + "exitCode": 0, + "stdout": "LFS527 0 1793482917184045106 1793482918529343999\n", + "stderr": "", + "rc": 0, + "ms": 1345.298893 + }, + "unmountMs": 3.288, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.939, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-TLiZdc/local/lfs527-wxevth1fee-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 1288.677, + "exitCode": 0, + "stdout": "LFS527 0 1793482918578414631 1793482919848771839\n", + "stderr": "", + "rc": 0, + "ms": 1270.357208 + }, + "commitMs": 107.731, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "125113854b51d900837fceecc6123623de59861d10823752f52c43d1a800a54688", + "commit": { + "id": "125113854b51d900837fceecc6123623de59861d10823752f52c43d1a800a54688", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32c35718deb466dac263b5954d24a0d59341793f02c714e267e27bc9b2f1a283b0", + "root": "da78093e4e791559c1c2af88be0b1540d68c3a6b976f8a8c4cc6333fd7384d5e", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793482919950, + "logical": 0, + "newCanonical": 109367, + "newStored": 8251, + "newMetadata": 8251, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.86, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 15.236, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.165, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14542.132, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 11.207, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1402.579, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.282, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.934, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1288.665, + "ok": true + }, + { + "name": "timed.commit", + "ms": 107.725, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.855, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.727, + "ok": true + }, + { + "name": "verify.identity", + "ms": 47.084, + "ok": true + }, + { + "name": "verify.exec", + "ms": 380.445, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.197, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 239.435, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32c35718deb466dac263b5954d24a0d59341793f02c714e267e27bc9b2f1a283b0", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 22.015, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 9.751953125, + "grantedAt": "2026-10-31T21:41:58.406Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.3 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.939, + "execWallMs": 1288.677, + "commandMs": 1270.357208, + "commitMs": 107.731, + "commitKind": "Committed", + "unmountMs": 2.86 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:42:01.289Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 9.751953125, + "grantedAt": "2026-10-31T21:41:58.406Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.0205078125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C06-2026-10-31T214204571Z-wxfdaz1j1v.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C06-2026-10-31T214204571Z-wxfdaz1j1v.json new file mode 100644 index 000000000..4730c97ba --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C06-2026-10-31T214204571Z-wxfdaz1j1v.json @@ -0,0 +1,338 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wxfdhr1hjb-", + "startedAt": "2026-10-31T21:42:04.571Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.4, + "end": 9.91552734375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-hxsFxB", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 25, + "init": { + "kind": "Initialized", + "project": "c06", + "layer": "32062996531310e87fb9b5a1f2481e9e96997a5449dcb03c3e6d59b0c841d9adea", + "root": "4031b7157743aedb71480e13a6788c6a1d1fe623ae355e00ed69ac16d863dcf0", + "store": "/var/lib/lfs527/lfs527-hxsFxB/store/store.sqlite" + }, + "setupMs": 162, + "cellBudgetMs": 89440, + "teardownMs": 796 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-hxsFxB/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-hxsFxB/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-hxsFxB/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxfdhr1hjb-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.91552734375, + "grantedAt": "2026-10-31T21:42:14.627Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.33 + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 13.442, + "exec": { + "wallMs": 262.393, + "exitCode": 0, + "stdout": "LFS527 0 1793482934551229008 1793482934761882992\n", + "stderr": "", + "rc": 0, + "ms": 210.653984 + }, + "unmountMs": 10.188, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.146, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-hxsFxB/local/lfs527-wxfdhr1hjb-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 225.511, + "exitCode": 0, + "stdout": "LFS527 0 1793482934801390942 1793482935005248018\n", + "stderr": "", + "rc": 0, + "ms": 203.857076 + }, + "commitMs": 327.94, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12cb16098d32e34f453a47d6a7f2c5aa7ce5146c02ff635cbf95352189b9352d3b", + "commit": { + "id": "12cb16098d32e34f453a47d6a7f2c5aa7ce5146c02ff635cbf95352189b9352d3b", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32062996531310e87fb9b5a1f2481e9e96997a5449dcb03c3e6d59b0c841d9adea", + "root": "6ff6b266d1793d828932ca227b47f38ca2dda022bc71e4b90234849e6f5d9f66", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793482935279, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 11.208, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 11.223, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.71, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 8917.667, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 13.435, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 262.379, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.181, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.142, + "ok": true + }, + { + "name": "timed.exec", + "ms": 225.504, + "ok": true + }, + { + "name": "timed.commit", + "ms": 327.934, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 11.202, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.773, + "ok": true + }, + { + "name": "verify.identity", + "ms": 26.972, + "ok": true + }, + { + "name": "verify.exec", + "ms": 445.728, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.725, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 252.744, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32062996531310e87fb9b5a1f2481e9e96997a5449dcb03c3e6d59b0c841d9adea", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 4.42, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.91552734375, + "grantedAt": "2026-10-31T21:42:14.627Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.33 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.146, + "execWallMs": 225.511, + "commandMs": 203.857076, + "commitMs": 327.94, + "commitKind": "Committed", + "unmountMs": 11.208 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:42:16.752Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.91552734375, + "grantedAt": "2026-10-31T21:42:14.627Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.783203125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C07-2026-10-31T214219916Z-wxfp581j4w.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C07-2026-10-31T214219916Z-wxfp581j4w.json new file mode 100644 index 000000000..cdf02f49f --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C07-2026-10-31T214219916Z-wxfp581j4w.json @@ -0,0 +1,338 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wxfpcx1hpf-", + "startedAt": "2026-10-31T21:42:19.916Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.23, + "end": 12.2763671875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-UyyJer", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 24, + "init": { + "kind": "Initialized", + "project": "c07", + "layer": "324923a20784923f0ac502d79a9dcf88540269701122b9d9abcb73214e0fe9ac55", + "root": "5bbb166082dacb26285001138ed19a9f95b83815d46f2eb106554ef4c96045d0", + "store": "/var/lib/lfs527/lfs527-UyyJer/store/store.sqlite" + }, + "setupMs": 230, + "cellBudgetMs": 89172, + "teardownMs": 776 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-UyyJer/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-UyyJer/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-UyyJer/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxfpcx1hpf-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.64697265625, + "grantedAt": "2026-10-31T21:42:41.712Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.45 + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.395, + "exec": { + "wallMs": 472.053, + "exitCode": 0, + "stdout": "LFS527 0 1793482961387770205 1793482961832984938\n", + "stderr": "", + "rc": 0, + "ms": 445.214733 + }, + "unmountMs": 18.125, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.285, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-UyyJer/local/lfs527-wxfpcx1hpf-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 520.302, + "exitCode": 0, + "stdout": "LFS527 0 1793482961884002690 1793482962385591469\n", + "stderr": "", + "rc": 0, + "ms": 501.588779 + }, + "commitMs": 635.937, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1265c726ce418dc46458b953183cea72f89dc8308ba4eda539e8d8e92b6b4afb83", + "commit": { + "id": "1265c726ce418dc46458b953183cea72f89dc8308ba4eda539e8d8e92b6b4afb83", + "branch": null, + "parent": null, + "secondParent": null, + "base": "324923a20784923f0ac502d79a9dcf88540269701122b9d9abcb73214e0fe9ac55", + "root": "e3f03556e16d364c73869d464affa87b214f9a3b6f36c454926b5043b3e4fec6", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793482962919, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 18.48, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 19.262, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.001, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 19997.277, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.389, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 472.042, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 18.118, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.28, + "ok": true + }, + { + "name": "timed.exec", + "ms": 520.295, + "ok": true + }, + { + "name": "timed.commit", + "ms": 635.93, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 18.474, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.068, + "ok": true + }, + { + "name": "verify.identity", + "ms": 35.993, + "ok": true + }, + { + "name": "verify.exec", + "ms": 896.982, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.624, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 403.812, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "324923a20784923f0ac502d79a9dcf88540269701122b9d9abcb73214e0fe9ac55", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 10.73, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.64697265625, + "grantedAt": "2026-10-31T21:42:41.712Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.45 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.285, + "execWallMs": 520.302, + "commandMs": 501.588779, + "commitMs": 635.937, + "commitKind": "Committed", + "unmountMs": 18.48 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:42:45.054Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.64697265625, + "grantedAt": "2026-10-31T21:42:41.712Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 10.40234375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C08-2026-10-31T214248349Z-wxgb311jw6.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C08-2026-10-31T214248349Z-wxgb311jw6.json new file mode 100644 index 000000000..187b36efb --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C08-2026-10-31T214248349Z-wxgb311jw6.json @@ -0,0 +1,338 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wxgbb21hvu-", + "startedAt": "2026-10-31T21:42:48.349Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.5, + "end": 11.45849609375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-e121QI", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 22, + "init": { + "kind": "Initialized", + "project": "c08", + "layer": "32d95a39a910ee3f8f35fd4818154be3d69f932e1c85e8ded9be55e60f64967a03", + "root": "58638c0c6c8e40da5c034b578c4045b779ff7ba9cfc66e0db56417acebb31d56", + "store": "/var/lib/lfs527/lfs527-e121QI/store/store.sqlite" + }, + "setupMs": 171, + "cellBudgetMs": 89462, + "teardownMs": 768 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-e121QI/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-e121QI/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-e121QI/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxgbb21hvu-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.6728515625, + "grantedAt": "2026-10-31T21:42:58.622Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.42 + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 13.033, + "exec": { + "wallMs": 237.131, + "exitCode": 0, + "stdout": "LFS527 0 1793482978539403559 1793482978755634201\n", + "stderr": "", + "rc": 0, + "ms": 216.230642 + }, + "unmountMs": 9.822, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.999, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-e121QI/local/lfs527-wxgbb21hvu-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 247.077, + "exitCode": 0, + "stdout": "LFS527 0 1793482978790185725 1793482979024355692\n", + "stderr": "", + "rc": 0, + "ms": 234.169967 + }, + "commitMs": 344.856, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12b86bcc3ef376977b63de1bf289fc61bb47bd58155ddc8b9a3e98e13645631e77", + "commit": { + "id": "12b86bcc3ef376977b63de1bf289fc61bb47bd58155ddc8b9a3e98e13645631e77", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32d95a39a910ee3f8f35fd4818154be3d69f932e1c85e8ded9be55e60f64967a03", + "root": "203e9c4abdbdfea835334e2e326e5e935a54cd296202065ca4a92eaefd3c82cf", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793482979318, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 9.507, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.621, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.829, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 9146.384, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 13.026, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 237.12, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 9.815, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.995, + "ok": true + }, + { + "name": "timed.exec", + "ms": 247.071, + "ok": true + }, + { + "name": "timed.commit", + "ms": 344.849, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 9.501, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.336, + "ok": true + }, + { + "name": "verify.identity", + "ms": 26.81, + "ok": true + }, + { + "name": "verify.exec", + "ms": 385.703, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.298, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1586.2, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d95a39a910ee3f8f35fd4818154be3d69f932e1c85e8ded9be55e60f64967a03", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 7.499, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.6728515625, + "grantedAt": "2026-10-31T21:42:58.622Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.42 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.999, + "execWallMs": 247.077, + "commandMs": 234.169967, + "commitMs": 344.856, + "commitKind": "Committed", + "unmountMs": 9.507 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:43:02.040Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.6728515625, + "grantedAt": "2026-10-31T21:42:58.622Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 12.2763671875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C09-2026-10-31T214305697Z-wxgogx1k4l.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C09-2026-10-31T214305697Z-wxgogx1k4l.json new file mode 100644 index 000000000..8bdd42714 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C09-2026-10-31T214305697Z-wxgogx1k4l.json @@ -0,0 +1,380 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wxgoo01i20-", + "startedAt": "2026-10-31T21:43:05.697Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.28, + "end": 11.18115234375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-dUyNzl", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 22, + "init": { + "kind": "Initialized", + "project": "c09", + "layer": "32f98cdc70fbbcd6f37681e82edbbdd3583b93a12ffa500c942e2244442b1511f1", + "root": "9e2b63330a5f232a6cc183dcb3ce242815f88e7f129595fd5049f0163178c712", + "store": "/var/lib/lfs527/lfs527-dUyNzl/store/store.sqlite" + }, + "setupMs": 154, + "cellBudgetMs": 89512, + "teardownMs": 926 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-dUyNzl/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-dUyNzl/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-dUyNzl/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxgoo01i20-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 10.5009765625, + "grantedAt": "2026-10-31T21:43:21.613Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.36 + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 312.756, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12d799da015ebb7221790e797cb99d0441af13603e096196b7e522e11342bbb76d", + "commit": { + "id": "12d799da015ebb7221790e797cb99d0441af13603e096196b7e522e11342bbb76d", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32f98cdc70fbbcd6f37681e82edbbdd3583b93a12ffa500c942e2244442b1511f1", + "root": "59905f31678103fdd0bbe851127206db97d8816d715261c2cf502851cea3d9f9", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793483001457, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.062, + "exec": { + "wallMs": 165.709, + "exitCode": 0, + "stdout": "LFS527 0 1793483001551285400 1793483001692740466\n", + "stderr": "", + "rc": 0, + "ms": 141.455066 + }, + "unmountMs": 5.953, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 13.118, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-dUyNzl/local/lfs527-wxgoo01i20-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 151.621, + "exitCode": 0, + "stdout": "LFS527 0 1793483001794694494 1793483001929728394\n", + "stderr": "", + "rc": 0, + "ms": 135.0339 + }, + "commitMs": 0.813, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12d799da015ebb7221790e797cb99d0441af13603e096196b7e522e11342bbb76d", + "root": "59905f31678103fdd0bbe851127206db97d8816d715261c2cf502851cea3d9f9", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.039, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.33, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.84, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14234.809, + "ok": true + }, + { + "name": "setup.mount", + "ms": 11.84, + "ok": true + }, + { + "name": "setup.exec", + "ms": 312.746, + "ok": true + }, + { + "name": "setup.commit", + "ms": 336.505, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 12.858, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.057, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 165.702, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 5.894, + "ok": true + }, + { + "name": "timed.mount", + "ms": 13.111, + "ok": true + }, + { + "name": "timed.exec", + "ms": 151.608, + "ok": true + }, + { + "name": "timed.commit", + "ms": 0.811, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.026, + "ok": true + }, + { + "name": "verify.mount", + "ms": 9.479, + "ok": true + }, + { + "name": "verify.identity", + "ms": 67.468, + "ok": true + }, + { + "name": "verify.exec", + "ms": 455.67, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.039, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 572.581, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32f98cdc70fbbcd6f37681e82edbbdd3583b93a12ffa500c942e2244442b1511f1", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 65.95, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 10.5009765625, + "grantedAt": "2026-10-31T21:43:21.613Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.36 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 13.118, + "execWallMs": 151.621, + "commandMs": 135.0339, + "commitMs": 0.813, + "commitKind": "UpToDate", + "unmountMs": 7.039 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:43:23.861Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 10.5009765625, + "grantedAt": "2026-10-31T21:43:21.613Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 11.34130859375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C10-2026-10-31T214326937Z-wxh4ux1khz.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C10-2026-10-31T214326937Z-wxh4ux1khz.json new file mode 100644 index 000000000..1e48c000b --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C10-2026-10-31T214326937Z-wxh4ux1khz.json @@ -0,0 +1,399 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wxh51x1i8e-", + "startedAt": "2026-10-31T21:43:26.937Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.25, + "end": 11.57080078125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-8opObn", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 21, + "init": { + "kind": "Initialized", + "project": "c10", + "layer": "3241b1914fec7937586b349706d1c2d10d9d38fb028ace21b7fe3e040d70ef3c99", + "root": "930ec9ade99519e614a5bcc0191a69df9cde3b596a8ac8effab6eda3a0cad5a7", + "store": "/var/lib/lfs527/lfs527-8opObn/store/store.sqlite" + }, + "setupMs": 158, + "cellBudgetMs": 89531, + "teardownMs": 787 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-8opObn/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-8opObn/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-8opObn/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxh51x1i8e-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.62060546875, + "grantedAt": "2026-10-31T21:43:38.284Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.21 + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 238.793, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12811f90dacfab8ae3edf3a3c92a5d884d9a931fc74d20ccd8c670b4db9b3adbc4", + "commit": { + "id": "12811f90dacfab8ae3edf3a3c92a5d884d9a931fc74d20ccd8c670b4db9b3adbc4", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3241b1914fec7937586b349706d1c2d10d9d38fb028ace21b7fe3e040d70ef3c99", + "root": "256fb09e34ed6af86ba8247a977adabf390ae77359824c512fd6359d1d8cf638", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793483017981, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.621, + "exec": { + "wallMs": 369.442, + "exitCode": 0, + "stdout": "LFS527 0 1793483018065474246 1793483018414623419\n", + "stderr": "", + "rc": 0, + "ms": 349.149173 + }, + "unmountMs": 14.425, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.717, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-8opObn/local/lfs527-wxh51x1i8e-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 321.22, + "exitCode": 0, + "stdout": "LFS527 0 1793483018462836801 1793483018763518134\n", + "stderr": "", + "rc": 0, + "ms": 300.681333 + }, + "commitMs": 51.126, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "129aa01f629f26f19ba68ee1b4819377f7654f025c2912574138e56358d9fa9466", + "commit": { + "id": "129aa01f629f26f19ba68ee1b4819377f7654f025c2912574138e56358d9fa9466", + "branch": null, + "parent": "12811f90dacfab8ae3edf3a3c92a5d884d9a931fc74d20ccd8c670b4db9b3adbc4", + "secondParent": null, + "base": "3241b1914fec7937586b349706d1c2d10d9d38fb028ace21b7fe3e040d70ef3c99", + "root": "86fac17f5efeec3ade2dc37d7f631e0d48d2be60c5d879ba4584b1630964f5d6", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793483018766, + "logical": 134217728, + "newCanonical": 487, + "newStored": 297, + "newMetadata": 297, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 12.626, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.836, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.618, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 9638.554, + "ok": true + }, + { + "name": "setup.mount", + "ms": 7.347, + "ok": true + }, + { + "name": "setup.exec", + "ms": 238.782, + "ok": true + }, + { + "name": "setup.commit", + "ms": 318.235, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 10.759, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.616, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 369.436, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 14.419, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.706, + "ok": true + }, + { + "name": "timed.exec", + "ms": 321.213, + "ok": true + }, + { + "name": "timed.commit", + "ms": 51.12, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 12.618, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.615, + "ok": true + }, + { + "name": "verify.identity", + "ms": 30.676, + "ok": true + }, + { + "name": "verify.exec", + "ms": 978.096, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.378, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1869.81, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3241b1914fec7937586b349706d1c2d10d9d38fb028ace21b7fe3e040d70ef3c99", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 4.826, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.62060546875, + "grantedAt": "2026-10-31T21:43:38.284Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.21 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.717, + "execWallMs": 321.22, + "commandMs": 300.681333, + "commitMs": 51.126, + "commitKind": "Committed", + "unmountMs": 12.626 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:43:42.383Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.62060546875, + "grantedAt": "2026-10-31T21:43:38.284Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 11.18115234375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C11-2026-10-31T214345845Z-wxhjg51kn2.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C11-2026-10-31T214345845Z-wxhjg51kn2.json new file mode 100644 index 000000000..2424b69b0 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C11-2026-10-31T214345845Z-wxhjg51kn2.json @@ -0,0 +1,380 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wxhjmr1iew-", + "startedAt": "2026-10-31T21:43:45.845Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.1, + "end": 11.787109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-opuQKx", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 24, + "init": { + "kind": "Initialized", + "project": "c11", + "layer": "3262f35a4268ace9f5dbce434540b12234ed9ab93a071c40da215648b06ecdb564", + "root": "f22ebb3de5109e326c802dd274d4b8f4ac18133e6bb37863450e7490630edde6", + "store": "/var/lib/lfs527/lfs527-opuQKx/store/store.sqlite" + }, + "setupMs": 120, + "cellBudgetMs": 89601, + "teardownMs": 761 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-opuQKx/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-opuQKx/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-opuQKx/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxhjmr1iew-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 12.46533203125, + "grantedAt": "2026-10-31T21:44:02.938Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.14 + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 266.902, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1229f72e380179e31b7de002efcd18694549a75c1436e19fc1c5bc161c8ea99d97", + "commit": { + "id": "1229f72e380179e31b7de002efcd18694549a75c1436e19fc1c5bc161c8ea99d97", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3262f35a4268ace9f5dbce434540b12234ed9ab93a071c40da215648b06ecdb564", + "root": "62e7adabe6c15b2b95cd99d4af42805fa04d4223e7bb1753e1693a8846dd9f77", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793483042833, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.816, + "exec": { + "wallMs": 170.737, + "exitCode": 0, + "stdout": "LFS527 0 1793483042922237714 1793483043069017413\n", + "stderr": "", + "rc": 0, + "ms": 146.779699 + }, + "unmountMs": 9.469, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.634, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-opuQKx/local/lfs527-wxhjmr1iew-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 145.511, + "exitCode": 0, + "stdout": "LFS527 0 1793483043112359393 1793483043241415918\n", + "stderr": "", + "rc": 0, + "ms": 129.056525 + }, + "commitMs": 145.901, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "1229f72e380179e31b7de002efcd18694549a75c1436e19fc1c5bc161c8ea99d97", + "root": "62e7adabe6c15b2b95cd99d4af42805fa04d4223e7bb1753e1693a8846dd9f77", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.282, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.45, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.644, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15663.993, + "ok": true + }, + { + "name": "setup.mount", + "ms": 7.354, + "ok": true + }, + { + "name": "setup.exec", + "ms": 266.889, + "ok": true + }, + { + "name": "setup.commit", + "ms": 317.168, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 10.188, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.812, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 170.729, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 9.459, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.629, + "ok": true + }, + { + "name": "timed.exec", + "ms": 145.505, + "ok": true + }, + { + "name": "timed.commit", + "ms": 145.895, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.275, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.788, + "ok": true + }, + { + "name": "verify.identity", + "ms": 35.128, + "ok": true + }, + { + "name": "verify.exec", + "ms": 363.586, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.95, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 779.321, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3262f35a4268ace9f5dbce434540b12234ed9ab93a071c40da215648b06ecdb564", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 10.564, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 12.46533203125, + "grantedAt": "2026-10-31T21:44:02.938Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.14 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.634, + "execWallMs": 145.511, + "commandMs": 129.056525, + "commitMs": 145.901, + "commitKind": "UpToDate", + "unmountMs": 10.282 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:44:05.231Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 12.46533203125, + "grantedAt": "2026-10-31T21:44:02.938Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 12.00537109375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C12-2026-10-31T214408571Z-wxi0zf1l2b.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C12-2026-10-31T214408571Z-wxi0zf1l2b.json new file mode 100644 index 000000000..5d1354b28 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-namespaces-C12-2026-10-31T214408571Z-wxi0zf1l2b.json @@ -0,0 +1,338 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-namespaces", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wxi16u1ila-", + "startedAt": "2026-10-31T21:44:08.571Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 1.21, + "end": 10.76220703125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-kPT10P", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 21, + "init": { + "kind": "Initialized", + "project": "c12", + "layer": "32d3591f18f041f7123e69d7664d26469ce6d1da78e156f6d8c2d3038bd532fc63", + "root": "f946d5060d869c0cbbaa00247dbe0a3e8305535f1ad1da56e2e095996231d73a", + "store": "/var/lib/lfs527/lfs527-kPT10P/store/store.sqlite" + }, + "setupMs": 127, + "cellBudgetMs": 89606, + "teardownMs": 697 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "imageArchive": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-kPT10P/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-kPT10P/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-kPT10P/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxi16u1ila-", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/Users/yifanxu/.cache/layerfs-test/lfs527-images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.43798828125, + "grantedAt": "2026-10-31T21:44:17.923Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.18 + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.82, + "exec": { + "wallMs": 366.95, + "exitCode": 0, + "stdout": "LFS527 0 1793483057727683088 1793483058066860123\n", + "stderr": "", + "rc": 0, + "ms": 339.177035 + }, + "unmountMs": 1.681, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.919, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-kPT10P/local/lfs527-wxi16u1ila-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 265.166, + "exitCode": 0, + "stdout": "LFS527 0 1793483058096919811 1793483058342814948\n", + "stderr": "", + "rc": 0, + "ms": 245.895137 + }, + "commitMs": 43.513, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "120827da2d10700a69ef4b6c83d8bded9b3973e2fab3ff7ea41fa9d527a13fe9a0", + "commit": { + "id": "120827da2d10700a69ef4b6c83d8bded9b3973e2fab3ff7ea41fa9d527a13fe9a0", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32d3591f18f041f7123e69d7664d26469ce6d1da78e156f6d8c2d3038bd532fc63", + "root": "b53ad74f2e69325d8153ed76c1dbde41fdf617b157f3a585bc5c75c0bf3c6b28", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793483058383, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26832, + "newMetadata": 6523, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.059, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.136, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.597, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 8330.271, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.814, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 366.939, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 1.676, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.915, + "ok": true + }, + { + "name": "timed.exec", + "ms": 265.16, + "ok": true + }, + { + "name": "timed.commit", + "ms": 43.506, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.053, + "ok": true + }, + { + "name": "verify.mount", + "ms": 2.622, + "ok": true + }, + { + "name": "verify.identity", + "ms": 22.681, + "ok": true + }, + { + "name": "verify.exec", + "ms": 113.864, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 1.604, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 196.936, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d3591f18f041f7123e69d7664d26469ce6d1da78e156f6d8c2d3038bd532fc63", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 4.788, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.43798828125, + "grantedAt": "2026-10-31T21:44:17.923Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 1.18 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.919, + "execWallMs": 265.166, + "commandMs": 245.895137, + "commitMs": 43.513, + "commitKind": "Committed", + "unmountMs": 2.059 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:44:19.296Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.43798828125, + "grantedAt": "2026-10-31T21:44:17.923Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 11.787109375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-641eda835112048a" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C01-2026-10-31T213814929Z-wxag4118rt.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C01-2026-10-31T213814929Z-wxag4118rt.json new file mode 100644 index 000000000..0962bfe8d --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C01-2026-10-31T213814929Z-wxag4118rt.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wxagee13ob-", + "startedAt": "2026-10-31T21:38:14.929Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.68, + "end": 9.267578125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-0I1zj0", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 25, + "init": { + "kind": "Initialized", + "project": "c01", + "layer": "32faf345a001491f3fbf7dd6f92b66cc45085bb1dc02203d0fd381a7c0ef2c1e60", + "root": "28a12e8275f87411b11e1c114d5effed24db83dc83148a3fb213cf24326769ab", + "store": "/var/lib/lfs527/lfs527-0I1zj0/store/store.sqlite" + }, + "setupMs": 170, + "cellBudgetMs": 89453, + "teardownMs": 16 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-0I1zj0/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-0I1zj0/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-0I1zj0/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxagee13ob-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3437, + "load1": 9.267578125, + "grantedAt": "2026-10-31T21:38:19.975Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.63 + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.56, + "exec": { + "wallMs": 616.418, + "exitCode": 0, + "stdout": "LFS527 0 1793482696067620512 1793482696679713807\n", + "stderr": "", + "rc": 0, + "ms": 612.093295 + }, + "unmountMs": 3.939, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.185, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-0I1zj0/local/lfs527-wxagee13ob-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 661.569, + "exitCode": 0, + "stdout": "LFS527 0 1793482700134720102 1793482700792838454\n", + "stderr": "", + "rc": 0, + "ms": 658.118352 + }, + "commitMs": 101.669, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12787887022d8c437453f01db200a91ff211009aec755135cb25cb8a3c36b0b908", + "commit": { + "id": "12787887022d8c437453f01db200a91ff211009aec755135cb25cb8a3c36b0b908", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32faf345a001491f3fbf7dd6f92b66cc45085bb1dc02203d0fd381a7c0ef2c1e60", + "root": "4ea5ef720732d06846a0da65e7bf7351ebd82250d95bfe4fffd1af0158f1c26b", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793482700885, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.118, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 14.07, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.691, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15.951, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.555, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 616.405, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.934, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.179, + "ok": true + }, + { + "name": "timed.exec", + "ms": 661.562, + "ok": true + }, + { + "name": "timed.commit", + "ms": 101.662, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.111, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.222, + "ok": true + }, + { + "name": "verify.identity", + "ms": 12.384, + "ok": true + }, + { + "name": "verify.exec", + "ms": 932.753, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.184, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.476, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32faf345a001491f3fbf7dd6f92b66cc45085bb1dc02203d0fd381a7c0ef2c1e60", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 3442.122, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3437, + "load1": 9.267578125, + "grantedAt": "2026-10-31T21:38:19.975Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.63 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.185, + "execWallMs": 661.569, + "commandMs": 658.118352, + "commitMs": 101.669, + "commitKind": "Committed", + "unmountMs": 4.118 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:21.768Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3437, + "load1": 9.267578125, + "grantedAt": "2026-10-31T21:38:19.975Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 9.46533203125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C02-2026-10-31T213824901Z-wxant119in.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C02-2026-10-31T213824901Z-wxant119in.json new file mode 100644 index 000000000..ec18800d6 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C02-2026-10-31T213824901Z-wxant119in.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wxanzz13up-", + "startedAt": "2026-10-31T21:38:24.901Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.58, + "end": 8.31640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-HkOVru", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 23, + "init": { + "kind": "Initialized", + "project": "c02", + "layer": "32c7bceeabd06c41f7548407384df29fc0e4842bb6a604ba12f8c5fb777112555d", + "root": "9efc746e3fd224eabff34a00b26a0b476c9d7560102fbfea4e303df748ea15b9", + "store": "/var/lib/lfs527/lfs527-HkOVru/store/store.sqlite" + }, + "setupMs": 133, + "cellBudgetMs": 89597, + "teardownMs": 15 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-HkOVru/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-HkOVru/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-HkOVru/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxanzz13up-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.60546875, + "grantedAt": "2026-10-31T21:38:26.926Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.58 + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.833, + "exec": { + "wallMs": 1332.245, + "exitCode": 0, + "stdout": "LFS527 0 1793482705735488122 1793482707063435302\n", + "stderr": "", + "rc": 0, + "ms": 1327.94718 + }, + "unmountMs": 5.614, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.636, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-HkOVru/local/lfs527-wxanzz13up-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 1166.956, + "exitCode": 0, + "stdout": "LFS527 0 1793482707085540243 1793482708248687323\n", + "stderr": "", + "rc": 0, + "ms": 1163.14708 + }, + "commitMs": 100.158, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "120b5682a32a31c95583aa6f4f56038f78609c2c09a2c1c9977524882e86b7507e", + "commit": { + "id": "120b5682a32a31c95583aa6f4f56038f78609c2c09a2c1c9977524882e86b7507e", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32c7bceeabd06c41f7548407384df29fc0e4842bb6a604ba12f8c5fb777112555d", + "root": "c6f09f64238dfe51fa746d50f43d74fe0df03a0f3d7a859738bcb39b495959ee", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793482708340, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.845, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.995, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.628, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14.774, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.826, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1332.19, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 5.602, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.628, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1166.949, + "ok": true + }, + { + "name": "timed.commit", + "ms": 100.152, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.84, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.715, + "ok": true + }, + { + "name": "verify.identity", + "ms": 9.419, + "ok": true + }, + { + "name": "verify.exec", + "ms": 711.213, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.728, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 25.453, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32c7bceeabd06c41f7548407384df29fc0e4842bb6a604ba12f8c5fb777112555d", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 6.066, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.60546875, + "grantedAt": "2026-10-31T21:38:26.926Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.58 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.636, + "execWallMs": 1166.956, + "commandMs": 1163.14708, + "commitMs": 100.158, + "commitKind": "Committed", + "unmountMs": 2.845 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:28.997Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.60546875, + "grantedAt": "2026-10-31T21:38:26.926Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 8.60546875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C03-2026-10-31T213836396Z-wxawoc1a0l.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C03-2026-10-31T213836396Z-wxawoc1a0l.json new file mode 100644 index 000000000..c631f5969 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C03-2026-10-31T213836396Z-wxawoc1a0l.json @@ -0,0 +1,316 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wxay2y15ko-", + "startedAt": "2026-10-31T21:38:36.396Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.49, + "end": 7.50537109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-53jNEV", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 57, + "init": { + "kind": "Initialized", + "project": "c03", + "layer": "329857cd685af9704b7097581747861c8c52e699287f11520340e567a95daed46b", + "root": "3e73cf0a922c96e48446db5a2c11bb555eb4c7f97d24f9dd0729ffc9c24e2338", + "store": "/var/lib/lfs527/lfs527-53jNEV/store/store.sqlite" + }, + "setupMs": 178, + "cellBudgetMs": 89413, + "teardownMs": 29 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-53jNEV/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-53jNEV/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-53jNEV/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxay2y15ko-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.50537109375, + "grantedAt": "2026-10-31T21:38:40.055Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.45 + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.443, + "exec": { + "wallMs": 1281.609, + "exitCode": 0, + "stdout": "LFS527 0 1793482718918307650 1793482720191713026\n", + "stderr": "", + "rc": 0, + "ms": 1273.405376 + }, + "unmountMs": 4.19, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.411, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-53jNEV/local/lfs527-wxay2y15ko-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 1093.938, + "exitCode": 0, + "stdout": "LFS527 0 1793482720217258205 1793482721306594571\n", + "stderr": "", + "rc": 0, + "ms": 1089.336366 + }, + "commitMs": 32.504, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "3e73cf0a922c96e48446db5a2c11bb555eb4c7f97d24f9dd0729ffc9c24e2338", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.376, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 15.712, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.585, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 18.674, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.43, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1281.542, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.177, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.403, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1093.888, + "ok": true + }, + { + "name": "timed.commit", + "ms": 32.497, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.371, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.485, + "ok": true + }, + { + "name": "verify.identity", + "ms": 16.092, + "ok": true + }, + { + "name": "verify.exec", + "ms": 5.142, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.957, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 27.411, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "329857cd685af9704b7097581747861c8c52e699287f11520340e567a95daed46b", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 8.027, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.50537109375, + "grantedAt": "2026-10-31T21:38:40.055Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.45 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.411, + "execWallMs": 1093.938, + "commandMs": 1089.336366, + "commitMs": 32.504, + "commitKind": "UpToDate", + "unmountMs": 4.376 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:41.328Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.50537109375, + "grantedAt": "2026-10-31T21:38:40.055Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.810546875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C04-2026-10-31T213845493Z-wxb3p11bco.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C04-2026-10-31T213845493Z-wxb3p11bco.json new file mode 100644 index 000000000..323aaa276 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C04-2026-10-31T213845493Z-wxb3p11bco.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wxb41x15qf-", + "startedAt": "2026-10-31T21:38:45.493Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.41, + "end": 7.1455078125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-m3lwd4", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 60, + "init": { + "kind": "Initialized", + "project": "c04", + "layer": "320cc9d11033dae56e356bb06cba8f92d54a1d28823518a9a19c296725700265ae", + "root": "c43cf34851980100d6f726eb92ccc861dbaa2e6644ca632888854a3bb496992f", + "store": "/var/lib/lfs527/lfs527-m3lwd4/store/store.sqlite" + }, + "setupMs": 203, + "cellBudgetMs": 89422, + "teardownMs": 19 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-m3lwd4/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-m3lwd4/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-m3lwd4/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxb41x15qf-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3094, + "load1": 7.1455078125, + "grantedAt": "2026-10-31T21:38:51.174Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.38 + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 13.843, + "exec": { + "wallMs": 1496.399, + "exitCode": 0, + "stdout": "LFS527 0 1793482726729066562 1793482728220285808\n", + "stderr": "", + "rc": 0, + "ms": 1491.219246 + }, + "unmountMs": 3.705, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.547, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-m3lwd4/local/lfs527-wxb41x15qf-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 1408.756, + "exitCode": 0, + "stdout": "LFS527 0 1793482731345452785 1793482732747110521\n", + "stderr": "", + "rc": 0, + "ms": 1401.657736 + }, + "commitMs": 132.83, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12869a622669cb1c1e2d36da15a33e370f90cf75b6cc27de7e189efeabb6444fdd", + "commit": { + "id": "12869a622669cb1c1e2d36da15a33e370f90cf75b6cc27de7e189efeabb6444fdd", + "branch": null, + "parent": null, + "secondParent": null, + "base": "320cc9d11033dae56e356bb06cba8f92d54a1d28823518a9a19c296725700265ae", + "root": "91246635d84653476b27f3bb74a88e5fbfa0896b988962be9fc0db14ca8fafbd", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793482732873, + "logical": 0, + "newCanonical": 109367, + "newStored": 8252, + "newMetadata": 8252, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.787, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.672, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.637, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15.83, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 13.832, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1496.386, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.698, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.528, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1408.727, + "ok": true + }, + { + "name": "timed.commit", + "ms": 132.821, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.769, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.642, + "ok": true + }, + { + "name": "verify.identity", + "ms": 11.657, + "ok": true + }, + { + "name": "verify.exec", + "ms": 364.113, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.915, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.567, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "320cc9d11033dae56e356bb06cba8f92d54a1d28823518a9a19c296725700265ae", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 3103.988, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3094, + "load1": 7.1455078125, + "grantedAt": "2026-10-31T21:38:51.174Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.38 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.547, + "execWallMs": 1408.756, + "commandMs": 1401.657736, + "commitMs": 132.83, + "commitKind": "Committed", + "unmountMs": 4.787 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:53.201Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3094, + "load1": 7.1455078125, + "grantedAt": "2026-10-31T21:38:51.174Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 6.984375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C05-2026-10-31T213856304Z-wxbc1c1cvx.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C05-2026-10-31T213856304Z-wxbc1c1cvx.json new file mode 100644 index 000000000..211b2a5e7 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C05-2026-10-31T213856304Z-wxbc1c1cvx.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wxbc8817uy-", + "startedAt": "2026-10-31T21:38:56.304Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.43, + "end": 6.8955078125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-7lulVK", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 26, + "init": { + "kind": "Initialized", + "project": "c05", + "layer": "3286d660c24d341092275759f6368738a558ac830052c9460a5e7017aa0406252e", + "root": "48d0267ecfa567e119bbbbe23504678c88a81c2a4ca004f159848909fb072fe0", + "store": "/var/lib/lfs527/lfs527-7lulVK/store/store.sqlite" + }, + "setupMs": 137, + "cellBudgetMs": 89606, + "teardownMs": 14 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-7lulVK/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-7lulVK/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-7lulVK/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxbc8817uy-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.9736328125, + "grantedAt": "2026-10-31T21:38:57.944Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.43 + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.053, + "exec": { + "wallMs": 977.945, + "exitCode": 0, + "stdout": "LFS527 0 1793482737111861767 1793482738086443894\n", + "stderr": "", + "rc": 0, + "ms": 974.582127 + }, + "unmountMs": 2.973, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.647, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-7lulVK/local/lfs527-wxbc8817uy-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 936.045, + "exitCode": 0, + "stdout": "LFS527 0 1793482738100852356 1793482739033990280\n", + "stderr": "", + "rc": 0, + "ms": 933.137924 + }, + "commitMs": 108.969, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12cc37ca8032270d6371d3f9c9f3b8d0162a1103a0ee9622413c71b5055ab85a13", + "commit": { + "id": "12cc37ca8032270d6371d3f9c9f3b8d0162a1103a0ee9622413c71b5055ab85a13", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3286d660c24d341092275759f6368738a558ac830052c9460a5e7017aa0406252e", + "root": "e8d309bd0f27224121d4d0f3fb34ccebe275282ded80339c9340b707225dafee", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793482739135, + "logical": 0, + "newCanonical": 109367, + "newStored": 8255, + "newMetadata": 8255, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.046, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.667, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.471, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14.976, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.048, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 977.933, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 2.967, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.642, + "ok": true + }, + { + "name": "timed.exec", + "ms": 936.039, + "ok": true + }, + { + "name": "timed.commit", + "ms": 108.962, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.041, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.528, + "ok": true + }, + { + "name": "verify.identity", + "ms": 8.21, + "ok": true + }, + { + "name": "verify.exec", + "ms": 303.03, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.527, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 25.618, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3286d660c24d341092275759f6368738a558ac830052c9460a5e7017aa0406252e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.465, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.9736328125, + "grantedAt": "2026-10-31T21:38:57.944Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.43 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.647, + "execWallMs": 936.045, + "commandMs": 933.137924, + "commitMs": 108.969, + "commitKind": "Committed", + "unmountMs": 3.046 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:59.375Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.9736328125, + "grantedAt": "2026-10-31T21:38:57.944Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 6.9736328125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C06-2026-10-31T213902708Z-wxbgz81egm.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C06-2026-10-31T213902708Z-wxbgz81egm.json new file mode 100644 index 000000000..65beac984 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C06-2026-10-31T213902708Z-wxbgz81egm.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wxbh5q19zj-", + "startedAt": "2026-10-31T21:39:02.708Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.39, + "end": 6.82373046875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-Siy2lL", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 19, + "init": { + "kind": "Initialized", + "project": "c06", + "layer": "328118efb65a60d9f5700ff213179bbcc16a5a514d7076c1b5891194f15404303f", + "root": "260faa617e6907c9348b484dd686961d5d8f2b9ee42d004379ffdf0f0cee9217", + "store": "/var/lib/lfs527/lfs527-Siy2lL/store/store.sqlite" + }, + "setupMs": 132, + "cellBudgetMs": 89590, + "teardownMs": 16 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-Siy2lL/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-Siy2lL/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-Siy2lL/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxbh5q19zj-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 508, + "load1": 6.82373046875, + "grantedAt": "2026-10-31T21:39:04.199Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.39 + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.579, + "exec": { + "wallMs": 301.651, + "exitCode": 0, + "stdout": "LFS527 0 1793482743523124330 1793482743820682002\n", + "stderr": "", + "rc": 0, + "ms": 297.557672 + }, + "unmountMs": 14.362, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.477, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-Siy2lL/local/lfs527-wxbh5q19zj-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 224.956, + "exitCode": 0, + "stdout": "LFS527 0 1793482744357706588 1793482744578792766\n", + "stderr": "", + "rc": 0, + "ms": 221.086178 + }, + "commitMs": 323.722, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "124c9a163d232049eda6915809ec896ccf516e3302ea6558b57f05a1a0017cfce2", + "commit": { + "id": "124c9a163d232049eda6915809ec896ccf516e3302ea6558b57f05a1a0017cfce2", + "branch": null, + "parent": null, + "secondParent": null, + "base": "328118efb65a60d9f5700ff213179bbcc16a5a514d7076c1b5891194f15404303f", + "root": "c1dda3b3f4c2c22be177536d2ff8a4a7ae5d0bddb3fbd6222866fe6de7da2752", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793482744849, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 12.518, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.131, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.528, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 13.387, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.573, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 301.63, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 14.351, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.472, + "ok": true + }, + { + "name": "timed.exec", + "ms": 224.95, + "ok": true + }, + { + "name": "timed.commit", + "ms": 323.716, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 12.511, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.496, + "ok": true + }, + { + "name": "verify.identity", + "ms": 10.607, + "ok": true + }, + { + "name": "verify.exec", + "ms": 455.495, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.449, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.2, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "328118efb65a60d9f5700ff213179bbcc16a5a514d7076c1b5891194f15404303f", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 514.338, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 508, + "load1": 6.82373046875, + "grantedAt": "2026-10-31T21:39:04.199Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.39 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.477, + "execWallMs": 224.956, + "commandMs": 221.086178, + "commitMs": 323.722, + "commitKind": "Committed", + "unmountMs": 12.518 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:05.311Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 508, + "load1": 6.82373046875, + "grantedAt": "2026-10-31T21:39:04.199Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 6.8955078125 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C07-2026-10-31T213908531Z-wxblgz1f24.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C07-2026-10-31T213908531Z-wxblgz1f24.json new file mode 100644 index 000000000..eef79ae31 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C07-2026-10-31T213908531Z-wxblgz1f24.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wxblnj1a5e-", + "startedAt": "2026-10-31T21:39:08.531Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.6, + "end": 6.99755859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-9AhKjy", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 24, + "init": { + "kind": "Initialized", + "project": "c07", + "layer": "325a63bbd5e36b4e55495e23169bd48447652ab3a66a67ea2f96ec356cd06745e5", + "root": "7201f50b11ac85da37795c796d4dca36e94e4f10508a442b2ef01c11c3c4e99f", + "store": "/var/lib/lfs527/lfs527-9AhKjy/store/store.sqlite" + }, + "setupMs": 173, + "cellBudgetMs": 89425, + "teardownMs": 18 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-9AhKjy/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-9AhKjy/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-9AhKjy/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxblnj1a5e-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.99755859375, + "grantedAt": "2026-10-31T21:39:10.095Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.71 + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.176, + "exec": { + "wallMs": 521.27, + "exitCode": 0, + "stdout": "LFS527 0 1793482749703448441 1793482750220697046\n", + "stderr": "", + "rc": 0, + "ms": 517.248605 + }, + "unmountMs": 19.606, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.818, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-9AhKjy/local/lfs527-wxblnj1a5e-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 595.225, + "exitCode": 0, + "stdout": "LFS527 0 1793482750252323754 1793482750844520473\n", + "stderr": "", + "rc": 0, + "ms": 592.196719 + }, + "commitMs": 753.591, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e6d5cfe03675596df2dc1f0a5bcd1d79cafa0fa9c6087febd771ae8b9f3bc5cc", + "commit": { + "id": "12e6d5cfe03675596df2dc1f0a5bcd1d79cafa0fa9c6087febd771ae8b9f3bc5cc", + "branch": null, + "parent": null, + "secondParent": null, + "base": "325a63bbd5e36b4e55495e23169bd48447652ab3a66a67ea2f96ec356cd06745e5", + "root": "b56eb92490e036bcdde4965d2b590e0cab2bdc161393a0b0f8bf314934722d9a", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793482751484, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 22.766, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 12.615, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.761, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 18.256, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.167, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 521.256, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 19.601, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.814, + "ok": true + }, + { + "name": "timed.exec", + "ms": 595.218, + "ok": true + }, + { + "name": "timed.commit", + "ms": 753.577, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 22.761, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.275, + "ok": true + }, + { + "name": "verify.identity", + "ms": 13.958, + "ok": true + }, + { + "name": "verify.exec", + "ms": 804.8, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.12, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 25.662, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "325a63bbd5e36b4e55495e23169bd48447652ab3a66a67ea2f96ec356cd06745e5", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.82, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.99755859375, + "grantedAt": "2026-10-31T21:39:10.095Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.71 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.818, + "execWallMs": 595.225, + "commandMs": 592.196719, + "commitMs": 753.591, + "commitKind": "Committed", + "unmountMs": 22.766 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:12.387Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.99755859375, + "grantedAt": "2026-10-31T21:39:10.095Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 6.82373046875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C08-2026-10-31T213915712Z-wxbr0g1f87.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C08-2026-10-31T213915712Z-wxbr0g1f87.json new file mode 100644 index 000000000..05514811a --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C08-2026-10-31T213915712Z-wxbr0g1f87.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wxbr7j1abg-", + "startedAt": "2026-10-31T21:39:15.712Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.66, + "end": 7.07763671875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-88G7oP", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 22, + "init": { + "kind": "Initialized", + "project": "c08", + "layer": "32de45b34f5d25cd292ef9fca538af742e58b30d09e48fbd3edcbf842a09a34054", + "root": "57a59f9be7815a5f06ce28ed9fc36680accad5e473a4d720a53b0bd9b09fb08c", + "store": "/var/lib/lfs527/lfs527-88G7oP/store/store.sqlite" + }, + "setupMs": 133, + "cellBudgetMs": 89593, + "teardownMs": 18 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-88G7oP/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-88G7oP/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-88G7oP/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxbr7j1abg-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.07763671875, + "grantedAt": "2026-10-31T21:39:16.657Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.66 + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.992, + "exec": { + "wallMs": 252.731, + "exitCode": 0, + "stdout": "LFS527 0 1793482756541624932 1793482756789850623\n", + "stderr": "", + "rc": 0, + "ms": 248.225691 + }, + "unmountMs": 12.229, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.801, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-88G7oP/local/lfs527-wxbr7j1abg-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 258.941, + "exitCode": 0, + "stdout": "LFS527 0 1793482756815993198 1793482757070891482\n", + "stderr": "", + "rc": 0, + "ms": 254.898284 + }, + "commitMs": 327.737, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12125f7711fbd63e54ba1d918fd10d1910525000f2b83ab039c5eca4ab142c1ff8", + "commit": { + "id": "12125f7711fbd63e54ba1d918fd10d1910525000f2b83ab039c5eca4ab142c1ff8", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32de45b34f5d25cd292ef9fca538af742e58b30d09e48fbd3edcbf842a09a34054", + "root": "c71f32166e0429f5fdfd3ed1531fb345206313736c88896081fb7c81e1de4982", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793482757346, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 14.021, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.766, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.623, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14.586, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.979, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 252.715, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.22, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.793, + "ok": true + }, + { + "name": "timed.exec", + "ms": 258.933, + "ok": true + }, + { + "name": "timed.commit", + "ms": 327.73, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 14.014, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.901, + "ok": true + }, + { + "name": "verify.identity", + "ms": 10.617, + "ok": true + }, + { + "name": "verify.exec", + "ms": 498.9, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.09, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 25.322, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32de45b34f5d25cd292ef9fca538af742e58b30d09e48fbd3edcbf842a09a34054", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 5.316, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.07763671875, + "grantedAt": "2026-10-31T21:39:16.657Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.66 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.801, + "execWallMs": 258.941, + "commandMs": 254.898284, + "commitMs": 327.737, + "commitKind": "Committed", + "unmountMs": 14.021 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:17.858Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.07763671875, + "grantedAt": "2026-10-31T21:39:16.657Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.07763671875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C09-2026-10-31T213921127Z-wxbv6v1fe3.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C09-2026-10-31T213921127Z-wxbv6v1fe3.json new file mode 100644 index 000000000..f0a216567 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C09-2026-10-31T213921127Z-wxbv6v1fe3.json @@ -0,0 +1,377 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wxbvdx1ahd-", + "startedAt": "2026-10-31T21:39:21.127Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.6, + "end": 6.9912109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-bv2gGk", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 27, + "init": { + "kind": "Initialized", + "project": "c09", + "layer": "325db5aa1ddc205090c07155fc5082b8a987f4338c82a5b3534ab279f9a43fad60", + "root": "de87e3596e913be2a8228e6ddce9174fba156880faa356b88286a554d5fa6f50", + "store": "/var/lib/lfs527/lfs527-bv2gGk/store/store.sqlite" + }, + "setupMs": 163, + "cellBudgetMs": 89475, + "teardownMs": 13 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-bv2gGk/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-bv2gGk/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-bv2gGk/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxbvdx1ahd-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.9912109375, + "grantedAt": "2026-10-31T21:39:22.649Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.6 + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 235.388, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a1acda21770fd84d6ac8b9ebac5a0f7cdf40cc9f5c8b6fc4190f2ccb195c7f61", + "commit": { + "id": "12a1acda21770fd84d6ac8b9ebac5a0f7cdf40cc9f5c8b6fc4190f2ccb195c7f61", + "branch": null, + "parent": null, + "secondParent": null, + "base": "325db5aa1ddc205090c07155fc5082b8a987f4338c82a5b3534ab279f9a43fad60", + "root": "2aaa2dce9d6763f820b3c0c6c2bc2e296dc3b419fa98c841fea8662e8927692e", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793482762613, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.95, + "exec": { + "wallMs": 106.893, + "exitCode": 0, + "stdout": "LFS527 0 1793482762684479096 1793482762787597169\n", + "stderr": "", + "rc": 0, + "ms": 103.118073 + }, + "unmountMs": 6.609, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.417, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-bv2gGk/local/lfs527-wxbvdx1ahd-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 116.964, + "exitCode": 0, + "stdout": "LFS527 0 1793482762810585680 1793482762923850285\n", + "stderr": "", + "rc": 0, + "ms": 113.264605 + }, + "commitMs": 0.665, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12a1acda21770fd84d6ac8b9ebac5a0f7cdf40cc9f5c8b6fc4190f2ccb195c7f61", + "root": "2aaa2dce9d6763f820b3c0c6c2bc2e296dc3b419fa98c841fea8662e8927692e", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.698, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.795, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.672, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14.912, + "ok": true + }, + { + "name": "setup.mount", + "ms": 6.652, + "ok": true + }, + { + "name": "setup.exec", + "ms": 235.377, + "ok": true + }, + { + "name": "setup.commit", + "ms": 323.409, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 11.364, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.946, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 106.886, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 6.603, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.411, + "ok": true + }, + { + "name": "timed.exec", + "ms": 116.957, + "ok": true + }, + { + "name": "timed.commit", + "ms": 0.662, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.693, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.58, + "ok": true + }, + { + "name": "verify.identity", + "ms": 11.846, + "ok": true + }, + { + "name": "verify.exec", + "ms": 486.661, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.294, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 24.209, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "325db5aa1ddc205090c07155fc5082b8a987f4338c82a5b3534ab279f9a43fad60", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.953, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.9912109375, + "grantedAt": "2026-10-31T21:39:22.649Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.6 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.417, + "execWallMs": 116.964, + "commandMs": 113.264605, + "commitMs": 0.665, + "commitKind": "UpToDate", + "unmountMs": 4.698 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:23.355Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.9912109375, + "grantedAt": "2026-10-31T21:39:22.649Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 6.9912109375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C10-2026-10-31T213926596Z-wxbzes1fmc.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C10-2026-10-31T213926596Z-wxbzes1fmc.json new file mode 100644 index 000000000..b247e5a37 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C10-2026-10-31T213926596Z-wxbzes1fmc.json @@ -0,0 +1,396 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wxbzw61and-", + "startedAt": "2026-10-31T21:39:26.596Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.56, + "end": 7.4052734375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-OnkAVI", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 51, + "init": { + "kind": "Initialized", + "project": "c10", + "layer": "3279ac32c23dfa26fc85e0e62bca243ef4726fbfae18d76fd86e0c0b9c52cbff66", + "root": "3bcee93bf3a4ea4fe3fe9fb5fb2834a5fb515b45d5a7945d82814dde741b804a", + "store": "/var/lib/lfs527/lfs527-OnkAVI/store/store.sqlite" + }, + "setupMs": 214, + "cellBudgetMs": 89245, + "teardownMs": 28 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-OnkAVI/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-OnkAVI/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-OnkAVI/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxbzw61and-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.4052734375, + "grantedAt": "2026-10-31T21:39:30.025Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.67 + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 760.485, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12c0c9207fdd95466d4368f2bd5e8d8a69ab5a7914ab3b6cf585df9ce0d9773460", + "commit": { + "id": "12c0c9207fdd95466d4368f2bd5e8d8a69ab5a7914ab3b6cf585df9ce0d9773460", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3279ac32c23dfa26fc85e0e62bca243ef4726fbfae18d76fd86e0c0b9c52cbff66", + "root": "7844daa0a3a9f276fc9f2a217ae36934d4bf03b2e250c6901b9e067b08261d1c", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793482769298, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 15.681, + "exec": { + "wallMs": 754.106, + "exitCode": 0, + "stdout": "LFS527 0 1793482769407974766 1793482770146228076\n", + "stderr": "", + "rc": 0, + "ms": 738.25331 + }, + "unmountMs": 16.823, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 9.125, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-OnkAVI/local/lfs527-wxbzw61and-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 611.145, + "exitCode": 0, + "stdout": "LFS527 0 1793482770191202404 1793482770796140529\n", + "stderr": "", + "rc": 0, + "ms": 604.938125 + }, + "commitMs": 63.531, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12dcd8983ee9ece62092d5a752877933036ef6b673cfc2f8696e9fd5938a6d3b96", + "commit": { + "id": "12dcd8983ee9ece62092d5a752877933036ef6b673cfc2f8696e9fd5938a6d3b96", + "branch": null, + "parent": "12c0c9207fdd95466d4368f2bd5e8d8a69ab5a7914ab3b6cf585df9ce0d9773460", + "secondParent": null, + "base": "3279ac32c23dfa26fc85e0e62bca243ef4726fbfae18d76fd86e0c0b9c52cbff66", + "root": "aefd54ca73d5e5139a3d2eada71732df6d58d78df33d80010f230a82a41bfebd", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793482770801, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 18.437, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 13.18, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.766, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 16.347, + "ok": true + }, + { + "name": "setup.mount", + "ms": 12.044, + "ok": true + }, + { + "name": "setup.exec", + "ms": 760.471, + "ok": true + }, + { + "name": "setup.commit", + "ms": 389.378, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 23.18, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 15.675, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 754.099, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 16.817, + "ok": true + }, + { + "name": "timed.mount", + "ms": 9.117, + "ok": true + }, + { + "name": "timed.exec", + "ms": 611.138, + "ok": true + }, + { + "name": "timed.commit", + "ms": 63.525, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 18.359, + "ok": true + }, + { + "name": "verify.mount", + "ms": 7.277, + "ok": true + }, + { + "name": "verify.identity", + "ms": 36.093, + "ok": true + }, + { + "name": "verify.exec", + "ms": 1455.27, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 20.699, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 32.93, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3279ac32c23dfa26fc85e0e62bca243ef4726fbfae18d76fd86e0c0b9c52cbff66", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 12.639, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.4052734375, + "grantedAt": "2026-10-31T21:39:30.025Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.67 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 9.125, + "execWallMs": 611.145, + "commandMs": 604.938125, + "commitMs": 63.531, + "commitKind": "Committed", + "unmountMs": 18.437 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:32.379Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.4052734375, + "grantedAt": "2026-10-31T21:39:30.025Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 6.83154296875 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C11-2026-10-31T213935623Z-wxc6dj1fvg.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C11-2026-10-31T213935623Z-wxc6dj1fvg.json new file mode 100644 index 000000000..5168580d3 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C11-2026-10-31T213935623Z-wxc6dj1fvg.json @@ -0,0 +1,377 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wxc6km1atj-", + "startedAt": "2026-10-31T21:39:35.623Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.62, + "end": 7.81005859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-FGraFh", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 28, + "init": { + "kind": "Initialized", + "project": "c11", + "layer": "3204ceacbf4d6c842869503973c52aff41a69c17c3fc7e501a751e967e1f2639f7", + "root": "bbc7b5ed533ea514b940d361991356b19584a7ec9e21094a1d4be29930de25f2", + "store": "/var/lib/lfs527/lfs527-FGraFh/store/store.sqlite" + }, + "setupMs": 192, + "cellBudgetMs": 89366, + "teardownMs": 21 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-FGraFh/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-FGraFh/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-FGraFh/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxc6km1atj-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 7.53271484375, + "grantedAt": "2026-10-31T21:39:37.979Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.62 + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 537.741, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1278fa12c2c1cd51f650309d3f03c55ecf40e95e87e3f629e0272222e03236f812", + "commit": { + "id": "1278fa12c2c1cd51f650309d3f03c55ecf40e95e87e3f629e0272222e03236f812", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3204ceacbf4d6c842869503973c52aff41a69c17c3fc7e501a751e967e1f2639f7", + "root": "657d4e2bbdccd927241c6f2ae4898cd0f39f96beef7760d678ef369750df49b3", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793482777621, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.623, + "exec": { + "wallMs": 294.06, + "exitCode": 0, + "stdout": "LFS527 0 1793482777807978071 1793482778096379002\n", + "stderr": "", + "rc": 0, + "ms": 288.400931 + }, + "unmountMs": 14.129, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 8.869, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-FGraFh/local/lfs527-wxc6km1atj-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 372.451, + "exitCode": 0, + "stdout": "LFS527 0 1793482778145395654 1793482778512368941\n", + "stderr": "", + "rc": 0, + "ms": 366.973287 + }, + "commitMs": 157.784, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "1278fa12c2c1cd51f650309d3f03c55ecf40e95e87e3f629e0272222e03236f812", + "root": "657d4e2bbdccd927241c6f2ae4898cd0f39f96beef7760d678ef369750df49b3", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 12.798, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 13.858, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.024, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 16.576, + "ok": true + }, + { + "name": "setup.mount", + "ms": 15.365, + "ok": true + }, + { + "name": "setup.exec", + "ms": 537.712, + "ok": true + }, + { + "name": "setup.commit", + "ms": 395.983, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 103.826, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.618, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 294.053, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 14.122, + "ok": true + }, + { + "name": "timed.mount", + "ms": 8.861, + "ok": true + }, + { + "name": "timed.exec", + "ms": 372.445, + "ok": true + }, + { + "name": "timed.commit", + "ms": 157.778, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 12.792, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.198, + "ok": true + }, + { + "name": "verify.identity", + "ms": 13.972, + "ok": true + }, + { + "name": "verify.exec", + "ms": 592.218, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.298, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 25.278, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3204ceacbf4d6c842869503973c52aff41a69c17c3fc7e501a751e967e1f2639f7", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 19.703, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 7.53271484375, + "grantedAt": "2026-10-31T21:39:37.979Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.62 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 8.869, + "execWallMs": 372.451, + "commandMs": 366.973287, + "commitMs": 157.784, + "commitKind": "UpToDate", + "unmountMs": 12.798 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:39.237Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 7.53271484375, + "grantedAt": "2026-10-31T21:39:37.979Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.53271484375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C12-2026-10-31T213942416Z-wxcbm81g0j.json b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C12-2026-10-31T213942416Z-wxcbm81g0j.json new file mode 100644 index 000000000..c2c76e502 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/linux-native-C12-2026-10-31T213942416Z-wxcbm81g0j.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "linux-native", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wxcbtd1azl-", + "startedAt": "2026-10-31T21:39:42.416Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 0.57, + "end": 8.1455078125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/var/lib/lfs527/lfs527-jLzzHP", + "fs": "ext4", + "maxUserNamespaces": "0", + "initMs": 25, + "init": { + "kind": "Initialized", + "project": "c12", + "layer": "3274ef6222bcb53e06a1d9a9f8324f7510a9fb847ea711de0084ba826f1719b662", + "root": "f4df97eb2fe625b91f11a87787b1e01ca28a16995f236f60524104911a871a53", + "store": "/var/lib/lfs527/lfs527-jLzzHP/store/store.sqlite" + }, + "setupMs": 155, + "cellBudgetMs": 89491, + "teardownMs": 15 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/var/lib/lfs527/lfs527-jLzzHP/local", + "LAYERFS_STORE_PATH": "/var/lib/lfs527/lfs527-jLzzHP/store/store.sqlite", + "LAYERFS_HOME": "/var/lib/lfs527/lfs527-jLzzHP/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxcbtd1azl-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.1455078125, + "grantedAt": "2026-10-31T21:39:43.922Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.57 + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.376, + "exec": { + "wallMs": 687.309, + "exitCode": 0, + "stdout": "LFS527 0 1793482783380060599 1793482784063431488\n", + "stderr": "", + "rc": 0, + "ms": 683.370889 + }, + "unmountMs": 3.861, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.054, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/var/lib/lfs527/lfs527-jLzzHP/local/lfs527-wxcbtd1azl-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 350.576, + "exitCode": 0, + "stdout": "LFS527 0 1793482784081280659 1793482784428521420\n", + "stderr": "", + "rc": 0, + "ms": 347.240761 + }, + "commitMs": 46.316, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e7f53bc4084f3c2ca01c49fb99cdb9db51fe3d5675ddf9bb504b696d5b7a4b78", + "commit": { + "id": "12e7f53bc4084f3c2ca01c49fb99cdb9db51fe3d5675ddf9bb504b696d5b7a4b78", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3274ef6222bcb53e06a1d9a9f8324f7510a9fb847ea711de0084ba826f1719b662", + "root": "067dd968359fa44fa6e773e4856d27148ac75f3dae4759e0dc9b54014f4dbcc6", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793482784471, + "logical": 38413, + "newCanonical": 82507, + "newStored": 27796, + "newMetadata": 6459, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 2.962, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 9.859, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.635, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15.375, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.368, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 687.298, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.856, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.05, + "ok": true + }, + { + "name": "timed.exec", + "ms": 350.569, + "ok": true + }, + { + "name": "timed.commit", + "ms": 46.311, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 2.956, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.329, + "ok": true + }, + { + "name": "verify.identity", + "ms": 9.937, + "ok": true + }, + { + "name": "verify.exec", + "ms": 166.64, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.738, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 25.181, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3274ef6222bcb53e06a1d9a9f8324f7510a9fb847ea711de0084ba826f1719b662", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 5.144, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.1455078125, + "grantedAt": "2026-10-31T21:39:43.922Z", + "staleRemoved": null, + "relayed": true, + "load1Local": 0.57 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.054, + "execWallMs": 350.576, + "commandMs": 347.240761, + "commitMs": 46.316, + "commitKind": "Committed", + "unmountMs": 2.962 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:44.577Z", + "via": { + "lima": "lfs527-linux", + "lock": { + "grants": [ + { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.1455078125, + "grantedAt": "2026-10-31T21:39:43.922Z", + "staleRemoved": null + } + ] + }, + "exit": 0, + "stderr": "" + }, + "load1Outer": { + "start": 7.81005859375 + }, + "runnerCopy": "/Users/yifanxu/.cache/layerfs-test/lfs527-runner-9e95de0ba8694c2b" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C01-2026-10-31T213613838Z-wx7uoe148m.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C01-2026-10-31T213613838Z-wx7uoe148m.json new file mode 100644 index 000000000..76deabe9e --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C01-2026-10-31T213613838Z-wx7uoe148m.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wx7uoe148m-", + "startedAt": "2026-10-31T21:36:13.838Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 3.8212890625, + "end": 4.23583984375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-Nrfkcy", + "initMs": 1522, + "volume": "lfs527-wx7uoe148m-c01-store-mvwx7uqq", + "setupMs": 1604, + "cellBudgetMs": 93367, + "teardownMs": 1138 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-wx7uoe148m-c01-store-mvwx7uqq" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx7uoe148m-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-Nrfkcy/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx7uoe148m-c01-store-mvwx7uqq", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx7uoe148m-c01-store-mvwx7uqq/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx7uoe148m-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-Nrfkcy/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 3.8212890625, + "grantedAt": "2026-10-31T21:36:16.752Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 30.331, + "exec": { + "wallMs": 410.595, + "exitCode": 0, + "stdout": "LFS527 0 1793482576381189637 1793482576733608137\n", + "stderr": "", + "rc": 0, + "ms": 352.4185 + }, + "unmountMs": 10.917, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.18, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 460.441, + "exitCode": 0, + "stdout": "LFS527 0 1793482576798831096 1793482577214566804\n", + "stderr": "", + "rc": 0, + "ms": 415.735708 + }, + "commitMs": 198.272, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1207b87648cfbd2ab3d5304c443fbe79a5824cd553d15f4e8b3f03eaa8d47a68e1", + "commit": { + "id": "1207b87648cfbd2ab3d5304c443fbe79a5824cd553d15f4e8b3f03eaa8d47a68e1", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3297c81d951a413f7c42f04253f364ef6260a7ab2330d5d8d5e077d8b6a93e4c4b", + "root": "5db34f16ac15e433788e95afe2526fc621fe3f571eb61c9fb91ff987d285b2e5", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793482577408, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.884, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.485, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.865, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 653.448, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 30.326, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 410.59, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.915, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.177, + "ok": true + }, + { + "name": "timed.exec", + "ms": 460.437, + "ok": true + }, + { + "name": "timed.commit", + "ms": 198.267, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.88, + "ok": true + }, + { + "name": "verify.mount", + "ms": 18.874, + "ok": true + }, + { + "name": "verify.identity", + "ms": 85.983, + "ok": true + }, + { + "name": "verify.exec", + "ms": 831.112, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 14.032, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 441.336, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3297c81d951a413f7c42f04253f364ef6260a7ab2330d5d8d5e077d8b6a93e4c4b", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.513, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 3.8212890625, + "grantedAt": "2026-10-31T21:36:16.752Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.18, + "execWallMs": 460.441, + "commandMs": 415.735708, + "commitMs": 198.272, + "commitKind": "Committed", + "unmountMs": 10.884 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:36:19.969Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C02-2026-10-31T213623285Z-wx81yt14ls.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C02-2026-10-31T213623285Z-wx81yt14ls.json new file mode 100644 index 000000000..85e686492 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C02-2026-10-31T213623285Z-wx81yt14ls.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wx81yt14ls-", + "startedAt": "2026-10-31T21:36:23.285Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 4.23583984375, + "end": 8.15185546875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-jzPUY7", + "initMs": 1923, + "volume": "lfs527-wx81yt14ls-c02-store-mvwx8225", + "setupMs": 2033, + "cellBudgetMs": 92914, + "teardownMs": 648 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-wx81yt14ls-c02-store-mvwx8225" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx81yt14ls-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-jzPUY7/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx81yt14ls-c02-store-mvwx8225", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx81yt14ls-c02-store-mvwx8225/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx81yt14ls-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-jzPUY7/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 4.857421875, + "grantedAt": "2026-10-31T21:36:28.142Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 24.189, + "exec": { + "wallMs": 2121.584, + "exitCode": 0, + "stdout": "LFS527 0 1793482586058267627 1793482588083480295\n", + "stderr": "", + "rc": 0, + "ms": 2025.212668 + }, + "unmountMs": 25.204, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 33.11, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 2074.569, + "exitCode": 0, + "stdout": "LFS527 0 1793482588268849295 1793482590240696296\n", + "stderr": "", + "rc": 0, + "ms": 1971.847001 + }, + "commitMs": 125.738, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "120d8b8708da213ccc27211048d3ebe43812b7dbbbb188492c629cf6232c1dd713", + "commit": { + "id": "120d8b8708da213ccc27211048d3ebe43812b7dbbbb188492c629cf6232c1dd713", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32481f6d71bd0f71d66ed8b49d5a5ddc652c7acbf8c6f1000d73ac2e3bc137dbc9", + "root": "cc509f54ed5a627aa82ef5985954c5b7b2b66db69b15c9de7b7ab019941560a0", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793482590364, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.503, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.814, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.754, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 524.313, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 24.184, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 2121.574, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 25.2, + "ok": true + }, + { + "name": "timed.mount", + "ms": 33.106, + "ok": true + }, + { + "name": "timed.exec", + "ms": 2074.563, + "ok": true + }, + { + "name": "timed.commit", + "ms": 125.735, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.5, + "ok": true + }, + { + "name": "verify.mount", + "ms": 14.773, + "ok": true + }, + { + "name": "verify.identity", + "ms": 60.597, + "ok": true + }, + { + "name": "verify.exec", + "ms": 1042.647, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 17.436, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 341.147, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32481f6d71bd0f71d66ed8b49d5a5ddc652c7acbf8c6f1000d73ac2e3bc137dbc9", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 4.326, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 4.857421875, + "grantedAt": "2026-10-31T21:36:28.142Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 33.11, + "execWallMs": 2074.569, + "commandMs": 1971.847001, + "commitMs": 125.738, + "commitKind": "Committed", + "unmountMs": 10.503 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:36:32.520Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C03-2026-10-31T213650791Z-wx8n6v153p.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C03-2026-10-31T213650791Z-wx8n6v153p.json new file mode 100644 index 000000000..e298f5df0 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C03-2026-10-31T213650791Z-wx8n6v153p.json @@ -0,0 +1,293 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wx8n6v153p-", + "startedAt": "2026-10-31T21:36:50.791Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.47607421875, + "end": 9.65185546875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-ZdsAKg", + "initMs": 7996, + "volume": "lfs527-wx8n6v153p-c03-store-mvwx8njh", + "setupMs": 8446, + "cellBudgetMs": 86336, + "teardownMs": 343 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-wx8n6v153p-c03-store-mvwx8njh" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx8n6v153p-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-ZdsAKg/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx8n6v153p-c03-store-mvwx8njh", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx8n6v153p-c03-store-mvwx8njh/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx8n6v153p-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-ZdsAKg/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.65185546875, + "grantedAt": "2026-10-31T21:37:00.572Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 17.717, + "exec": { + "wallMs": 602.331, + "exitCode": 0, + "stdout": "LFS527 0 1793482619996074546 1793482620549829630\n", + "stderr": "", + "rc": 0, + "ms": 553.755084 + }, + "unmountMs": 9.214, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 12.93, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 519.839, + "exitCode": 0, + "stdout": "LFS527 0 1793482620619876713 1793482621093176755\n", + "stderr": "", + "rc": 0, + "ms": 473.300042 + }, + "commitMs": 18.561, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "17d516975ae582520f9f11a5c40105719932766f704598b7a32eafe664c6b545", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.894, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.533, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.989, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 318.465, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 17.713, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 602.323, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 9.211, + "ok": true + }, + { + "name": "timed.mount", + "ms": 12.927, + "ok": true + }, + { + "name": "timed.exec", + "ms": 519.835, + "ok": true + }, + { + "name": "timed.commit", + "ms": 18.558, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.891, + "ok": true + }, + { + "name": "verify.mount", + "ms": 10.1, + "ok": true + }, + { + "name": "verify.identity", + "ms": 96.444, + "ok": true + }, + { + "name": "verify.exec", + "ms": 51.035, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.414, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 258.982, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32043b398f2090e44bb8bbae3e99c0bd6384ba80e15ac62e3cd47683794c0e9021", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 2.817, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.65185546875, + "grantedAt": "2026-10-31T21:37:00.572Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 12.93, + "execWallMs": 519.839, + "commandMs": 473.300042, + "commitMs": 18.561, + "commitKind": "UpToDate", + "unmountMs": 8.894 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:01.903Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C04-2026-10-31T213702262Z-wx8w1i15gw.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C04-2026-10-31T213702262Z-wx8w1i15gw.json new file mode 100644 index 000000000..4867a0e75 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C04-2026-10-31T213702262Z-wx8w1i15gw.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wx8w1i15gw-", + "startedAt": "2026-10-31T21:37:02.262Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.65185546875, + "end": 10 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-v5iB6F", + "initMs": 1119, + "volume": "lfs527-wx8w1i15gw-c04-store-mvwx8w37", + "setupMs": 1173, + "cellBudgetMs": 93796, + "teardownMs": 336 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-wx8w1i15gw-c04-store-mvwx8w37" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx8w1i15gw-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-v5iB6F/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx8w1i15gw-c04-store-mvwx8w37", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx8w1i15gw-c04-store-mvwx8w37/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx8w1i15gw-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-v5iB6F/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10, + "grantedAt": "2026-10-31T21:37:05.188Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 22.232, + "exec": { + "wallMs": 1245.555, + "exitCode": 0, + "stdout": "LFS527 0 1793482623967880798 1793482625163636923\n", + "stderr": "", + "rc": 0, + "ms": 1195.756125 + }, + "unmountMs": 10.034, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 13.188, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 1076.396, + "exitCode": 0, + "stdout": "LFS527 0 1793482625248556173 1793482626262549174\n", + "stderr": "", + "rc": 0, + "ms": 1013.993001 + }, + "commitMs": 119.723, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "126f57162f2d0f8300272a5c2dadb6323d918a577b2b8b4cbbfff16d0292a8e62d", + "commit": { + "id": "126f57162f2d0f8300272a5c2dadb6323d918a577b2b8b4cbbfff16d0292a8e62d", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32392e446fb8d39e377ac2e939cfdd852b7016441ab1ea88fd6da5c94181776ebb", + "root": "7b8d9c251d5c385a0d8813c895e792438e02bdb407ff920688f91dbd27c1144b", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793482626382, + "logical": 0, + "newCanonical": 109367, + "newStored": 8253, + "newMetadata": 8253, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.713, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.89, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.839, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 380.024, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 22.228, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1245.55, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.031, + "ok": true + }, + { + "name": "timed.mount", + "ms": 13.184, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1076.391, + "ok": true + }, + { + "name": "timed.commit", + "ms": 119.719, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.71, + "ok": true + }, + { + "name": "verify.mount", + "ms": 11.562, + "ok": true + }, + { + "name": "verify.identity", + "ms": 51.86, + "ok": true + }, + { + "name": "verify.exec", + "ms": 347.407, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.195, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 269.851, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32392e446fb8d39e377ac2e939cfdd852b7016441ab1ea88fd6da5c94181776ebb", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.245, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10, + "grantedAt": "2026-10-31T21:37:05.188Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 13.188, + "execWallMs": 1076.396, + "commandMs": 1013.993001, + "commitMs": 119.723, + "commitKind": "Committed", + "unmountMs": 8.713 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:07.435Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C05-2026-10-31T213707710Z-wx908u15lg.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C05-2026-10-31T213707710Z-wx908u15lg.json new file mode 100644 index 000000000..162110a30 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C05-2026-10-31T213707710Z-wx908u15lg.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wx908u15lg-", + "startedAt": "2026-10-31T21:37:07.710Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10, + "end": 10.640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-gkGsTK", + "initMs": 1218, + "volume": "lfs527-wx908u15lg-c05-store-mvwx90ag", + "setupMs": 1273, + "cellBudgetMs": 93699, + "teardownMs": 369 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-wx908u15lg-c05-store-mvwx90ag" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx908u15lg-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-gkGsTK/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx908u15lg-c05-store-mvwx90ag", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx908u15lg-c05-store-mvwx90ag/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx908u15lg-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-gkGsTK/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.640625, + "grantedAt": "2026-10-31T21:37:10.469Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 18.077, + "exec": { + "wallMs": 989.049, + "exitCode": 0, + "stdout": "LFS527 0 1793482629510884717 1793482630449140634\n", + "stderr": "", + "rc": 0, + "ms": 938.255917 + }, + "unmountMs": 7.469, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 11.46, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 908.771, + "exitCode": 0, + "stdout": "LFS527 0 1793482630510513551 1793482631379103385\n", + "stderr": "", + "rc": 0, + "ms": 868.589834 + }, + "commitMs": 111.815, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "124ba8ee46d44d1859648d7bb975afd9b525b62aa0594539b3e67347a2b6a7be13", + "commit": { + "id": "124ba8ee46d44d1859648d7bb975afd9b525b62aa0594539b3e67347a2b6a7be13", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3291d1608f92ee4929137053c296868611f1f9d8d8de7cf4671f7d377246e17300", + "root": "8faaa5919a6529d3072190ba852bedf5945a4519a45a3173ab77d963f4728707", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793482631485, + "logical": 0, + "newCanonical": 109367, + "newStored": 8250, + "newMetadata": 8250, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.196, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.571, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.153, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 376.441, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 18.073, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 989.041, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 7.466, + "ok": true + }, + { + "name": "timed.mount", + "ms": 11.457, + "ok": true + }, + { + "name": "timed.exec", + "ms": 908.766, + "ok": true + }, + { + "name": "timed.commit", + "ms": 111.813, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.193, + "ok": true + }, + { + "name": "verify.mount", + "ms": 7.894, + "ok": true + }, + { + "name": "verify.identity", + "ms": 48.005, + "ok": true + }, + { + "name": "verify.exec", + "ms": 284.452, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.532, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 277.722, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3291d1608f92ee4929137053c296868611f1f9d8d8de7cf4671f7d377246e17300", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.235, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.640625, + "grantedAt": "2026-10-31T21:37:10.469Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 11.46, + "execWallMs": 908.771, + "commandMs": 868.589834, + "commitMs": 111.815, + "commitKind": "Committed", + "unmountMs": 7.196 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:12.507Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C06-2026-10-31T213712746Z-wx944q15rf.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C06-2026-10-31T213712746Z-wx944q15rf.json new file mode 100644 index 000000000..79330d1e5 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C06-2026-10-31T213712746Z-wx944q15rf.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wx944q15rf-", + "startedAt": "2026-10-31T21:37:12.746Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.640625, + "end": 10.5888671875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-PDDCi9", + "initMs": 1117, + "volume": "lfs527-wx944q15rf-c06-store-mvwx946c", + "setupMs": 1171, + "cellBudgetMs": 93800, + "teardownMs": 496 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-wx944q15rf-c06-store-mvwx946c" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx944q15rf-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-PDDCi9/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx944q15rf-c06-store-mvwx946c", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx944q15rf-c06-store-mvwx946c/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx944q15rf-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-PDDCi9/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.5888671875, + "grantedAt": "2026-10-31T21:37:14.764Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 14.191, + "exec": { + "wallMs": 241.9, + "exitCode": 0, + "stdout": "LFS527 0 1793482634539492178 1793482634739965261\n", + "stderr": "", + "rc": 0, + "ms": 200.473083 + }, + "unmountMs": 13.08, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 9.567, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 211.024, + "exitCode": 0, + "stdout": "LFS527 0 1793482634799955303 1793482634975261511\n", + "stderr": "", + "rc": 0, + "ms": 175.306208 + }, + "commitMs": 330.418, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "126b174d3ba258bb1da65703fe848c617eb3455e480ab4d662f1c1ff7d39053665", + "commit": { + "id": "126b174d3ba258bb1da65703fe848c617eb3455e480ab4d662f1c1ff7d39053665", + "branch": null, + "parent": null, + "secondParent": null, + "base": "328b57c5fa6d5590eac9e6d50a2a40e9fe9868851072d2fa858225b73b3cc48c66", + "root": "c8e5a44da10071ff6a09edfeaf264b4bbbd41cdc1e724146a5a536a94deb4ae6", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793482635257, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 13.255, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.382, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.682, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 486.327, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 14.184, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 241.895, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 13.077, + "ok": true + }, + { + "name": "timed.mount", + "ms": 9.564, + "ok": true + }, + { + "name": "timed.exec", + "ms": 211.021, + "ok": true + }, + { + "name": "timed.commit", + "ms": 330.412, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 13.252, + "ok": true + }, + { + "name": "verify.mount", + "ms": 8.917, + "ok": true + }, + { + "name": "verify.identity", + "ms": 49.761, + "ok": true + }, + { + "name": "verify.exec", + "ms": 236.994, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.965, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 252.016, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "328b57c5fa6d5590eac9e6d50a2a40e9fe9868851072d2fa858225b73b3cc48c66", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.137, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.5888671875, + "grantedAt": "2026-10-31T21:37:14.764Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 9.567, + "execWallMs": 211.024, + "commandMs": 175.306208, + "commitMs": 330.418, + "commitKind": "Committed", + "unmountMs": 13.255 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:16.388Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C07-2026-10-31T213716586Z-wx973e15z1.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C07-2026-10-31T213716586Z-wx973e15z1.json new file mode 100644 index 000000000..4be1d310f --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C07-2026-10-31T213716586Z-wx973e15z1.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wx973e15z1-", + "startedAt": "2026-10-31T21:37:16.586Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.5888671875, + "end": 10.38134765625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-Njf34S", + "initMs": 1522, + "volume": "lfs527-wx973e15z1-c07-store-mvwx9754", + "setupMs": 1581, + "cellBudgetMs": 93388, + "teardownMs": 353 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-wx973e15z1-c07-store-mvwx9754" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx973e15z1-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-Njf34S/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx973e15z1-c07-store-mvwx9754", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx973e15z1-c07-store-mvwx9754/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx973e15z1-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-Njf34S/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.38134765625, + "grantedAt": "2026-10-31T21:37:19.631Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 17.741, + "exec": { + "wallMs": 828.197, + "exitCode": 0, + "stdout": "LFS527 0 1793482638821291680 1793482639592103014\n", + "stderr": "", + "rc": 0, + "ms": 770.811334 + }, + "unmountMs": 23.525, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 14.72, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 492.221, + "exitCode": 0, + "stdout": "LFS527 0 1793482639680494305 1793482640132237958\n", + "stderr": "", + "rc": 0, + "ms": 451.743653 + }, + "commitMs": 668.09, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a36c514ca4a6b1c411eb288d0944bdf89a3b4d2d8b799b158efbbc0eeed2c14d", + "commit": { + "id": "12a36c514ca4a6b1c411eb288d0944bdf89a3b4d2d8b799b158efbbc0eeed2c14d", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32009754909d6c58f300d40849a0ec295eda15e22e58aae4d19937aa816c839b89", + "root": "a060c6f5f167ce54be512b9aa29a4e180a2a50a0f3d67ac8725245f921bace0f", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793482640698, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 21.828, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.901, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.177, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 455.416, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 17.735, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 828.191, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 23.522, + "ok": true + }, + { + "name": "timed.mount", + "ms": 14.717, + "ok": true + }, + { + "name": "timed.exec", + "ms": 492.218, + "ok": true + }, + { + "name": "timed.commit", + "ms": 668.085, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 21.824, + "ok": true + }, + { + "name": "verify.mount", + "ms": 9.001, + "ok": true + }, + { + "name": "verify.identity", + "ms": 37.605, + "ok": true + }, + { + "name": "verify.exec", + "ms": 442.91, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.676, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 252.553, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32009754909d6c58f300d40849a0ec295eda15e22e58aae4d19937aa816c839b89", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 2.488, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.38134765625, + "grantedAt": "2026-10-31T21:37:19.631Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 14.72, + "execWallMs": 492.221, + "commandMs": 451.743653, + "commitMs": 668.09, + "commitKind": "Committed", + "unmountMs": 21.828 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:21.940Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C08-2026-10-31T213722168Z-wx9beg165q.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C08-2026-10-31T213722168Z-wx9beg165q.json new file mode 100644 index 000000000..7265fa268 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C08-2026-10-31T213722168Z-wx9beg165q.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wx9beg165q-", + "startedAt": "2026-10-31T21:37:22.168Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.38134765625, + "end": 11.3916015625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-YsNM6l", + "initMs": 1118, + "volume": "lfs527-wx9beg165q-c08-store-mvwx9bg6", + "setupMs": 1178, + "cellBudgetMs": 93793, + "teardownMs": 883 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-wx9beg165q-c08-store-mvwx9bg6" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx9beg165q-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-YsNM6l/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx9beg165q-c08-store-mvwx9bg6", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx9beg165q-c08-store-mvwx9bg6/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9beg165q-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-YsNM6l/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.3916015625, + "grantedAt": "2026-10-31T21:37:24.374Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 41.536, + "exec": { + "wallMs": 358.965, + "exitCode": 0, + "stdout": "LFS527 0 1793482644043740543 1793482644341904252\n", + "stderr": "", + "rc": 0, + "ms": 298.163709 + }, + "unmountMs": 19.888, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 12.512, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 271.751, + "exitCode": 0, + "stdout": "LFS527 0 1793482644428102418 1793482644650393168\n", + "stderr": "", + "rc": 0, + "ms": 222.29075 + }, + "commitMs": 347.759, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12bbbcc8b88ef7c94f5c1425e4bc41b5f9571c5ab2106c0c1008062563d9bcd14d", + "commit": { + "id": "12bbbcc8b88ef7c94f5c1425e4bc41b5f9571c5ab2106c0c1008062563d9bcd14d", + "branch": null, + "parent": null, + "secondParent": null, + "base": "320fb411a4552f51257ac2ac0cd9bd34992badb95272d5572538589551307a33ba", + "root": "9588cf131c8970820f71448d36519a30c3c9a4b9f69f957ea369b232d21992a1", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793482644945, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 15.514, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.429, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.742, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 499.34, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 41.532, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 358.959, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 19.884, + "ok": true + }, + { + "name": "timed.mount", + "ms": 12.509, + "ok": true + }, + { + "name": "timed.exec", + "ms": 271.747, + "ok": true + }, + { + "name": "timed.commit", + "ms": 347.756, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 15.51, + "ok": true + }, + { + "name": "verify.mount", + "ms": 10.628, + "ok": true + }, + { + "name": "verify.identity", + "ms": 67.025, + "ok": true + }, + { + "name": "verify.exec", + "ms": 302.289, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 16.037, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 433.021, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "320fb411a4552f51257ac2ac0cd9bd34992badb95272d5572538589551307a33ba", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.38, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.3916015625, + "grantedAt": "2026-10-31T21:37:24.374Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 12.512, + "execWallMs": 271.751, + "commandMs": 222.29075, + "commitMs": 347.759, + "commitKind": "Committed", + "unmountMs": 15.514 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:26.739Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C09-2026-10-31T213727031Z-wx9f5j16ch.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C09-2026-10-31T213727031Z-wx9f5j16ch.json new file mode 100644 index 000000000..628b18c00 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C09-2026-10-31T213727031Z-wx9f5j16ch.json @@ -0,0 +1,354 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wx9f5j16ch-", + "startedAt": "2026-10-31T21:37:27.031Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 11.3916015625, + "end": 10.79931640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-0AxhFY", + "initMs": 1115, + "volume": "lfs527-wx9f5j16ch-c09-store-mvwx9f74", + "setupMs": 1170, + "cellBudgetMs": 93799, + "teardownMs": 386 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-wx9f5j16ch-c09-store-mvwx9f74" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx9f5j16ch-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-0AxhFY/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx9f5j16ch-c09-store-mvwx9f74", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx9f5j16ch-c09-store-mvwx9f74/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9f5j16ch-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-0AxhFY/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.79931640625, + "grantedAt": "2026-10-31T21:37:29.378Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 245.527, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1213779987e4e8354b6eab74d67e4c90fd3a10a5a3f200cee543f47100d49f3772", + "commit": { + "id": "1213779987e4e8354b6eab74d67e4c90fd3a10a5a3f200cee543f47100d49f3772", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32c4d17542f6900ae988434ba6b88f640cb4d537eb238dfbe63fb846695b03ffe7", + "root": "271e7010bce46f326a9f0bc5839d08bc13d26c1c2acd0036b7fb706820ebdd40", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793482649187, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 9.141, + "exec": { + "wallMs": 96.954, + "exitCode": 0, + "stdout": "LFS527 0 1793482649306600254 1793482649361909296\n", + "stderr": "", + "rc": 0, + "ms": 55.309042 + }, + "unmountMs": 9.368, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 12.122, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 76.312, + "exitCode": 0, + "stdout": "LFS527 0 1793482649422602962 1793482649462083046\n", + "stderr": "", + "rc": 0, + "ms": 39.480084 + }, + "commitMs": 1.908, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "1213779987e4e8354b6eab74d67e4c90fd3a10a5a3f200cee543f47100d49f3772", + "root": "271e7010bce46f326a9f0bc5839d08bc13d26c1c2acd0036b7fb706820ebdd40", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.853, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.519, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.265, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 359.004, + "ok": true + }, + { + "name": "setup.mount", + "ms": 13.926, + "ok": true + }, + { + "name": "setup.exec", + "ms": 245.521, + "ok": true + }, + { + "name": "setup.commit", + "ms": 329.81, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 13.197, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 9.139, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 96.951, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 9.365, + "ok": true + }, + { + "name": "timed.mount", + "ms": 12.119, + "ok": true + }, + { + "name": "timed.exec", + "ms": 76.309, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1.906, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.85, + "ok": true + }, + { + "name": "verify.mount", + "ms": 8.942, + "ok": true + }, + { + "name": "verify.identity", + "ms": 50.733, + "ok": true + }, + { + "name": "verify.exec", + "ms": 205.63, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.565, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 239.122, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32c4d17542f6900ae988434ba6b88f640cb4d537eb238dfbe63fb846695b03ffe7", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.136, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.79931640625, + "grantedAt": "2026-10-31T21:37:29.378Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 12.122, + "execWallMs": 76.312, + "commandMs": 39.480084, + "commitMs": 1.908, + "commitKind": "UpToDate", + "unmountMs": 7.853 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:30.380Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C10-2026-10-31T213730652Z-wx9hy416i1.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C10-2026-10-31T213730652Z-wx9hy416i1.json new file mode 100644 index 000000000..59ac8d707 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C10-2026-10-31T213730652Z-wx9hy416i1.json @@ -0,0 +1,373 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wx9hy416i1-", + "startedAt": "2026-10-31T21:37:30.652Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.79931640625, + "end": 10.25439453125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-7JhJve", + "initMs": 1118, + "volume": "lfs527-wx9hy416i1-c10-store-mvwx9hzu", + "setupMs": 1179, + "cellBudgetMs": 93782, + "teardownMs": 319 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-wx9hy416i1-c10-store-mvwx9hzu" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx9hy416i1-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-7JhJve/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx9hy416i1-c10-store-mvwx9hzu", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx9hy416i1-c10-store-mvwx9hzu/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9hy416i1-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-7JhJve/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.79931640625, + "grantedAt": "2026-10-31T21:37:33.140Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 229.314, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "125de7292557c514f73012d21a40599f5a11217270ee36dbcb832fc3c5dc71aa70", + "commit": { + "id": "125de7292557c514f73012d21a40599f5a11217270ee36dbcb832fc3c5dc71aa70", + "branch": null, + "parent": null, + "secondParent": null, + "base": "321c7aeae041d79bca02bcf4eef2970bc2aa192213aa5af388aa52ec41323103d6", + "root": "8236541e2180a28ae4bebc48c576b4a061fd793d7d402848d94c293b8ac6672d", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793482652777, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 8.744, + "exec": { + "wallMs": 264.684, + "exitCode": 0, + "stdout": "LFS527 0 1793482652889419381 1793482653113573672\n", + "stderr": "", + "rc": 0, + "ms": 224.154291 + }, + "unmountMs": 21.078, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 12.776, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 250.704, + "exitCode": 0, + "stdout": "LFS527 0 1793482653187027756 1793482653399082964\n", + "stderr": "", + "rc": 0, + "ms": 212.055208 + }, + "commitMs": 55.51, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1297c6cf9c1c64657f5a7d60bab32e11fa83981cce0dc9f03b9b75902681d0e7c6", + "commit": { + "id": "1297c6cf9c1c64657f5a7d60bab32e11fa83981cce0dc9f03b9b75902681d0e7c6", + "branch": null, + "parent": "125de7292557c514f73012d21a40599f5a11217270ee36dbcb832fc3c5dc71aa70", + "secondParent": null, + "base": "321c7aeae041d79bca02bcf4eef2970bc2aa192213aa5af388aa52ec41323103d6", + "root": "61081e5490ac8d4bfeae05e723a50e5b4f10766b7014b8cb02ad4dbb06ddddbf", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793482653406, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 14.249, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.901, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.633, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 317.175, + "ok": true + }, + { + "name": "setup.mount", + "ms": 21.353, + "ok": true + }, + { + "name": "setup.exec", + "ms": 229.306, + "ok": true + }, + { + "name": "setup.commit", + "ms": 325.287, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 13.339, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.742, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 264.68, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 21.075, + "ok": true + }, + { + "name": "timed.mount", + "ms": 12.773, + "ok": true + }, + { + "name": "timed.exec", + "ms": 250.7, + "ok": true + }, + { + "name": "timed.commit", + "ms": 55.507, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 14.245, + "ok": true + }, + { + "name": "verify.mount", + "ms": 8.294, + "ok": true + }, + { + "name": "verify.identity", + "ms": 41.769, + "ok": true + }, + { + "name": "verify.exec", + "ms": 454.829, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.15, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 230.569, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "321c7aeae041d79bca02bcf4eef2970bc2aa192213aa5af388aa52ec41323103d6", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.097, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.79931640625, + "grantedAt": "2026-10-31T21:37:33.140Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 12.776, + "execWallMs": 250.704, + "commandMs": 212.055208, + "commitMs": 55.51, + "commitKind": "Committed", + "unmountMs": 14.249 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:34.544Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C11-2026-10-31T213734749Z-wx9l3x16o3.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C11-2026-10-31T213734749Z-wx9l3x16o3.json new file mode 100644 index 000000000..1b48ae4fd --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C11-2026-10-31T213734749Z-wx9l3x16o3.json @@ -0,0 +1,354 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wx9l3x16o3-", + "startedAt": "2026-10-31T21:37:34.749Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.25439453125, + "end": 9.75341796875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-0de9oD", + "initMs": 1320, + "volume": "lfs527-wx9l3x16o3-c11-store-mvwx9l5h", + "setupMs": 1373, + "cellBudgetMs": 93598, + "teardownMs": 408 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-wx9l3x16o3-c11-store-mvwx9l5h" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx9l3x16o3-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-0de9oD/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx9l3x16o3-c11-store-mvwx9l5h", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx9l3x16o3-c11-store-mvwx9l5h/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9l3x16o3-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-0de9oD/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 28, + "load1": 10.25439453125, + "grantedAt": "2026-10-31T21:37:37.976Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 226.065, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12c7b787270d8962703a85909315bbc713993a4fd07716e81e1b8d65f8f0a1110e", + "commit": { + "id": "12c7b787270d8962703a85909315bbc713993a4fd07716e81e1b8d65f8f0a1110e", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32cbf743b9028a461b06cd61c2488200d8388c5071f955f022814922f199425dc3", + "root": "7b2e23df12dab4f26230e2425929ddd299010d872adf6b78cd060957b2fb48b4", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793482657074, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 8.977, + "exec": { + "wallMs": 349.97, + "exitCode": 0, + "stdout": "LFS527 0 1793482657200356924 1793482657370232466\n", + "stderr": "", + "rc": 0, + "ms": 169.875542 + }, + "unmountMs": 307.35, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 161.177, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/3" + }, + "exec": { + "wallMs": 240.542, + "exitCode": 0, + "stdout": "LFS527 0 1793482658199857966 1793482658374685758\n", + "stderr": "", + "rc": 0, + "ms": 174.827792 + }, + "commitMs": 160.184, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12c7b787270d8962703a85909315bbc713993a4fd07716e81e1b8d65f8f0a1110e", + "root": "7b2e23df12dab4f26230e2425929ddd299010d872adf6b78cd060957b2fb48b4", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 13.92, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.43, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.374, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 334.285, + "ok": true + }, + { + "name": "setup.mount", + "ms": 13.652, + "ok": true + }, + { + "name": "setup.exec", + "ms": 226.056, + "ok": true + }, + { + "name": "setup.commit", + "ms": 335.807, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 16.956, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.974, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 349.956, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 307.342, + "ok": true + }, + { + "name": "timed.mount", + "ms": 161.172, + "ok": true + }, + { + "name": "timed.exec", + "ms": 240.536, + "ok": true + }, + { + "name": "timed.commit", + "ms": 160.179, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 13.913, + "ok": true + }, + { + "name": "verify.mount", + "ms": 9.868, + "ok": true + }, + { + "name": "verify.identity", + "ms": 52.813, + "ok": true + }, + { + "name": "verify.exec", + "ms": 197.82, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.105, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 256.025, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32cbf743b9028a461b06cd61c2488200d8388c5071f955f022814922f199425dc3", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 93.2, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 28, + "load1": 10.25439453125, + "grantedAt": "2026-10-31T21:37:37.976Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 161.177, + "execWallMs": 240.542, + "commandMs": 174.827792, + "commitMs": 160.184, + "commitKind": "UpToDate", + "unmountMs": 13.92 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:39.494Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C12-2026-10-31T213739691Z-wx9ox716vh.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C12-2026-10-31T213739691Z-wx9ox716vh.json new file mode 100644 index 000000000..3fc3dcca9 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-docker-C12-2026-10-31T213739691Z-wx9ox716vh.json @@ -0,0 +1,312 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-docker", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wx9ox716vh-", + "startedAt": "2026-10-31T21:37:39.691Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.75341796875, + "end": 9.13232421875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-DN5h3Y", + "initMs": 1418, + "volume": "lfs527-wx9ox716vh-c12-store-mvwx9oz4", + "setupMs": 1484, + "cellBudgetMs": 93486, + "teardownMs": 702 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-wx9ox716vh-c12-store-mvwx9oz4" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "docker leftovers", + "ok": true, + "value": [ + "lfs527-wx9ox716vh-worker" + ] + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-DN5h3Y/home", + "LAYERFS_SANDBOX": "docker", + "LAYERFS_DOCKER": "/Users/yifanxu/.docker/run/docker.sock", + "LAYERFS_IMAGE": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-linux-bd7ac86d01304d4e89a2e98057d26d66/layerfs-daemon", + "LAYERFS_VOLUME": "lfs527-wx9ox716vh-c12-store-mvwx9oz4", + "LAYERFS_STORE_PATH": "/var/lib/docker/volumes/lfs527-wx9ox716vh-c12-store-mvwx9oz4/_data/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9ox716vh-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-DN5h3Y/home/worker/endpoint.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.13232421875, + "grantedAt": "2026-10-31T21:37:43.729Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 29.62, + "exec": { + "wallMs": 1166.248, + "exitCode": 0, + "stdout": "LFS527 0 1793482662615118469 1793482663645753344\n", + "stderr": "", + "rc": 0, + "ms": 1030.634875 + }, + "unmountMs": 29.03, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 16.445, + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "workspace": { + "sandbox": "1", + "path": "/workspaces/2" + }, + "exec": { + "wallMs": 297.026, + "exitCode": 0, + "stdout": "LFS527 0 1793482663793100719 1793482664036976761\n", + "stderr": "", + "rc": 0, + "ms": 243.876042 + }, + "commitMs": 72.743, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1215883db6595afed9501606229badcb5d16f9d6063044bc003e99554050717a28", + "commit": { + "id": "1215883db6595afed9501606229badcb5d16f9d6063044bc003e99554050717a28", + "branch": null, + "parent": null, + "secondParent": null, + "base": "326dde3cabee5ffdd49824172c3e8a933cb488a0a90c2d55c49e4a6486049f06ab", + "root": "0aa7a7e3b91de958b7b3e5f71476710aa58a338b29a1bcdd8ceba9aa503e559d", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793482664106, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26916, + "newMetadata": 6521, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.723, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.644, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.875, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 1215.523, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 29.61, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1166.236, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 29.026, + "ok": true + }, + { + "name": "timed.mount", + "ms": 16.44, + "ok": true + }, + { + "name": "timed.exec", + "ms": 297.021, + "ok": true + }, + { + "name": "timed.commit", + "ms": 72.74, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.72, + "ok": true + }, + { + "name": "verify.mount", + "ms": 12.888, + "ok": true + }, + { + "name": "verify.identity", + "ms": 57.175, + "ok": true + }, + { + "name": "verify.exec", + "ms": 245.102, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.571, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 596.748, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "326dde3cabee5ffdd49824172c3e8a933cb488a0a90c2d55c49e4a6486049f06ab", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "lock": { + "askedMs": 1.55, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.13232421875, + "grantedAt": "2026-10-31T21:37:43.729Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 16.445, + "execWallMs": 297.026, + "commandMs": 243.876042, + "commitMs": 72.743, + "commitKind": "Committed", + "unmountMs": 10.723 + }, + "where": { + "kernel": "Linux 6.12.76-linuxkit", + "machine": "aarch64", + "cpus": "8", + "memKiB": "8126948", + "memBytes": null, + "cpuMax": "max 100000", + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:45.768Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C01-2026-10-31T213752893Z-wx9z3x1765.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C01-2026-10-31T213752893Z-wx9z3x1765.json new file mode 100644 index 000000000..b973458b6 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C01-2026-10-31T213752893Z-wx9z3x1765.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wx9z3x1765-", + "startedAt": "2026-10-31T21:37:52.893Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.36181640625, + "end": 9.29931640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-nQAwJq", + "initMs": 1667, + "init": { + "kind": "Initialized", + "project": "c01", + "layer": "32e7ceafb8fe327d933021525a033d281cfc4ac0a57fceed4e1bef805be0062a3a", + "root": "e6a6d6d037e508548904247d7dbafa7a292ea13039fa454e89e108d52a59c01a", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-nQAwJq/store/store.sqlite" + }, + "setupMs": 1744, + "cellBudgetMs": 93199, + "teardownMs": 35 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-nQAwJq/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-nQAwJq/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-nQAwJq/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9z3x1765-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.41259765625, + "grantedAt": "2026-10-31T21:37:56.477Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 53.142, + "exec": { + "wallMs": 920.334, + "exitCode": 0, + "stdout": "LFS527 0 1793482675536199000 1793482676431162000\n", + "stderr": "", + "rc": 0, + "ms": 894.963 + }, + "unmountMs": 42.686, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 28.811, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-nQAwJq/local/lfs527-wx9z3x1765-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 967.551, + "exitCode": 0, + "stdout": "LFS527 0 1793482676531539000 1793482677473094000\n", + "stderr": "", + "rc": 0, + "ms": 941.555 + }, + "commitMs": 890.432, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "128b94e4b8ddc7a4a6561c45eec5321e7d98a4020b9c28d78ef0a6ef820dc85b45", + "commit": { + "id": "128b94e4b8ddc7a4a6561c45eec5321e7d98a4020b9c28d78ef0a6ef820dc85b45", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32e7ceafb8fe327d933021525a033d281cfc4ac0a57fceed4e1bef805be0062a3a", + "root": "53c0e60ec39d838e574857de90898e6d8e34997e30f9c7d4bf4b86614495caa3", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793482678354, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 28.912, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 20.111, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.82, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 665, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 53.136, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 920.31, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 42.682, + "ok": true + }, + { + "name": "timed.mount", + "ms": 28.806, + "ok": true + }, + { + "name": "timed.exec", + "ms": 967.538, + "ok": true + }, + { + "name": "timed.commit", + "ms": 890.426, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 28.907, + "ok": true + }, + { + "name": "verify.mount", + "ms": 24.04, + "ok": true + }, + { + "name": "verify.identity", + "ms": 45.776, + "ok": true + }, + { + "name": "verify.exec", + "ms": 333.516, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 27.058, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 46.617, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32e7ceafb8fe327d933021525a033d281cfc4ac0a57fceed4e1bef805be0062a3a", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.26, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.41259765625, + "grantedAt": "2026-10-31T21:37:56.477Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 28.811, + "execWallMs": 967.551, + "commandMs": 941.555, + "commitMs": 890.432, + "commitKind": "Committed", + "unmountMs": 28.912 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:58.915Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C02-2026-10-31T213802134Z-wxa68m17lq.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C02-2026-10-31T213802134Z-wxa68m17lq.json new file mode 100644 index 000000000..eb148249f --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C02-2026-10-31T213802134Z-wxa68m17lq.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wxa68m17lq-", + "startedAt": "2026-10-31T21:38:02.134Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.29931640625, + "end": 9.267578125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-pKCixA", + "initMs": 29, + "init": { + "kind": "Initialized", + "project": "c02", + "layer": "32797acbc876f0ec50b096f38bddab598d6e19538ec4ec68d231533d68ba6cec8f", + "root": "6f476eef65773e556a2521b677f8de9dc6e085a77d0444c46ce04a5439d03156", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-pKCixA/store/store.sqlite" + }, + "setupMs": 45, + "cellBudgetMs": 94878, + "teardownMs": 36 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-pKCixA/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-pKCixA/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-pKCixA/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxa68m17lq-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.505859375, + "grantedAt": "2026-10-31T21:38:11.643Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 21.128, + "exec": { + "wallMs": 9223.254, + "exitCode": 0, + "stdout": "LFS527 0 1793482682377455000 1793482691581462000\n", + "stderr": "", + "rc": 0, + "ms": 9204.007 + }, + "unmountMs": 55.242, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 29.789, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-pKCixA/local/lfs527-wxa68m17lq-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 7913.136, + "exitCode": 0, + "stdout": "LFS527 0 1793482691693021000 1793482699585659000\n", + "stderr": "", + "rc": 0, + "ms": 7892.638 + }, + "commitMs": 283.865, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "122821d2e1e6fd70d0bba0d7b88698c2d4f1b380a95ee3861a8d79a2063520d01e", + "commit": { + "id": "122821d2e1e6fd70d0bba0d7b88698c2d4f1b380a95ee3861a8d79a2063520d01e", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32797acbc876f0ec50b096f38bddab598d6e19538ec4ec68d231533d68ba6cec8f", + "root": "1536f40d022438cfa7f80c414ea521203c190570d5fe1df6b92f7d87135da6f2", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793482699860, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 33.216, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.927, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.648, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 17.617, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 21.12, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 9223.202, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 55.237, + "ok": true + }, + { + "name": "timed.mount", + "ms": 29.785, + "ok": true + }, + { + "name": "timed.exec", + "ms": 7913.12, + "ok": true + }, + { + "name": "timed.commit", + "ms": 283.86, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 33.211, + "ok": true + }, + { + "name": "verify.mount", + "ms": 21.407, + "ok": true + }, + { + "name": "verify.identity", + "ms": 42.852, + "ok": true + }, + { + "name": "verify.exec", + "ms": 355.092, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 22.568, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 47.989, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32797acbc876f0ec50b096f38bddab598d6e19538ec4ec68d231533d68ba6cec8f", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 4.074, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.505859375, + "grantedAt": "2026-10-31T21:38:11.643Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 29.789, + "execWallMs": 7913.136, + "commandMs": 7892.638, + "commitMs": 283.865, + "commitKind": "Committed", + "unmountMs": 33.216 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:20.439Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C03-2026-10-31T213823621Z-wxamth19gh.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C03-2026-10-31T213823621Z-wxamth19gh.json new file mode 100644 index 000000000..7fdf4cd84 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C03-2026-10-31T213823621Z-wxamth19gh.json @@ -0,0 +1,290 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wxamth19gh-", + "startedAt": "2026-10-31T21:38:23.621Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.267578125, + "end": 8.60546875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-qS0ggJ", + "initMs": 17, + "init": { + "kind": "Initialized", + "project": "c03", + "layer": "3267d333ae0fbdb32d63a1ab078e41ad20f71e62f4c6cb17581e20d1c3ea304b15", + "root": "768dc43aa9cd5be545482a1ee3a4bd63cb02a1141f4636b0e732753bfec4688d", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-qS0ggJ/store/store.sqlite" + }, + "setupMs": 33, + "cellBudgetMs": 94925, + "teardownMs": 32 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-qS0ggJ/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-qS0ggJ/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-qS0ggJ/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxamth19gh-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.60546875, + "grantedAt": "2026-10-31T21:38:25.129Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 21.787, + "exec": { + "wallMs": 1305.236, + "exitCode": 0, + "stdout": "LFS527 0 1793482703821894000 1793482705108497000\n", + "stderr": "", + "rc": 0, + "ms": 1286.603 + }, + "unmountMs": 17.119, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 23.319, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-qS0ggJ/local/lfs527-wxamth19gh-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 1437.723, + "exitCode": 0, + "stdout": "LFS527 0 1793482705166877000 1793482706589629000\n", + "stderr": "", + "rc": 0, + "ms": 1422.752 + }, + "commitMs": 146.58, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "768dc43aa9cd5be545482a1ee3a4bd63cb02a1141f4636b0e732753bfec4688d", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 20.589, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.54, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.474, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 18.14, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 21.781, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1305.22, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 17.113, + "ok": true + }, + { + "name": "timed.mount", + "ms": 23.314, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1437.705, + "ok": true + }, + { + "name": "timed.commit", + "ms": 146.575, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 20.583, + "ok": true + }, + { + "name": "verify.mount", + "ms": 21.706, + "ok": true + }, + { + "name": "verify.identity", + "ms": 38.058, + "ok": true + }, + { + "name": "verify.exec", + "ms": 15.67, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 13.948, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 48.14, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3267d333ae0fbdb32d63a1ab078e41ad20f71e62f4c6cb17581e20d1c3ea304b15", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.498, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.60546875, + "grantedAt": "2026-10-31T21:38:25.129Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 23.319, + "execWallMs": 1437.723, + "commandMs": 1422.752, + "commitMs": 146.58, + "commitKind": "UpToDate", + "unmountMs": 20.589 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:26.935Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C04-2026-10-31T213830092Z-wxart819r5.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C04-2026-10-31T213830092Z-wxart819r5.json new file mode 100644 index 000000000..1e8182250 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C04-2026-10-31T213830092Z-wxart819r5.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wxart819r5-", + "startedAt": "2026-10-31T21:38:30.092Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.31640625, + "end": 7.1455078125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-4JxUWw", + "initMs": 22, + "init": { + "kind": "Initialized", + "project": "c04", + "layer": "32ffae899d725402fb5aab40af513105c31d9a58455f26f14bb4b1fed27f5a9751", + "root": "4c7287b55f702e6ce5a449a92b624d818cd807be9bd213006b9227a82e6b6a6a", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-4JxUWw/store/store.sqlite" + }, + "setupMs": 35, + "cellBudgetMs": 94940, + "teardownMs": 45 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-4JxUWw/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-4JxUWw/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-4JxUWw/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxart819r5-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.50537109375, + "grantedAt": "2026-10-31T21:38:41.890Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 22.762, + "exec": { + "wallMs": 11286.43, + "exitCode": 0, + "stdout": "LFS527 0 1793482710387369000 1793482721640788000\n", + "stderr": "", + "rc": 0, + "ms": 11253.419 + }, + "unmountMs": 204.319, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 28.907, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-4JxUWw/local/lfs527-wxart819r5-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 7492.202, + "exitCode": 0, + "stdout": "LFS527 0 1793482722022146000 1793482729409970000\n", + "stderr": "", + "rc": 0, + "ms": 7387.824 + }, + "commitMs": 939.754, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "128cb7d0cb42c00eb92b94a84ecbcf4eb78d2c7769fb2623d16f387c2d8ddfe8ad", + "commit": { + "id": "128cb7d0cb42c00eb92b94a84ecbcf4eb78d2c7769fb2623d16f387c2d8ddfe8ad", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32ffae899d725402fb5aab40af513105c31d9a58455f26f14bb4b1fed27f5a9751", + "root": "a5bd57735e5b5fb9d90324a63403c099cb73b12ad85c6a804b582d0afb10a322", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793482730347, + "logical": 0, + "newCanonical": 109367, + "newStored": 8239, + "newMetadata": 8239, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 39.871, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 127.397, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.538, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15.833, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 22.755, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 11286.217, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 204.314, + "ok": true + }, + { + "name": "timed.mount", + "ms": 28.902, + "ok": true + }, + { + "name": "timed.exec", + "ms": 7492.118, + "ok": true + }, + { + "name": "timed.commit", + "ms": 939.747, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 39.866, + "ok": true + }, + { + "name": "verify.mount", + "ms": 26.688, + "ok": true + }, + { + "name": "verify.identity", + "ms": 57.96, + "ok": true + }, + { + "name": "verify.exec", + "ms": 586.903, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 21.623, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 64.808, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32ffae899d725402fb5aab40af513105c31d9a58455f26f14bb4b1fed27f5a9751", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 18.515, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.50537109375, + "grantedAt": "2026-10-31T21:38:41.890Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 28.907, + "execWallMs": 7492.202, + "commandMs": 7387.824, + "commitMs": 939.754, + "commitKind": "Committed", + "unmountMs": 39.871 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:51.211Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C05-2026-10-31T213854435Z-wxbalf1ceg.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C05-2026-10-31T213854435Z-wxbalf1ceg.json new file mode 100644 index 000000000..5e16b312b --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C05-2026-10-31T213854435Z-wxbalf1ceg.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wxbalf1ceg-", + "startedAt": "2026-10-31T21:38:54.435Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.9736328125, + "end": 6.82373046875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-dle9lU", + "initMs": 17, + "init": { + "kind": "Initialized", + "project": "c05", + "layer": "327598dcac622dbd032fc5dbba8f61b03153860a7fdf138780266bddca930977e1", + "root": "4a66db25e6c1470e10568cb04258b5744dac0b5606b5edca9e19286189c65841", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-dle9lU/store/store.sqlite" + }, + "setupMs": 33, + "cellBudgetMs": 94924, + "teardownMs": 35 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-dle9lU/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-dle9lU/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-dle9lU/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxbalf1ceg-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.8955078125, + "grantedAt": "2026-10-31T21:38:59.014Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 26.578, + "exec": { + "wallMs": 4368.466, + "exitCode": 0, + "stdout": "LFS527 0 1793482734624456000 1793482738979262000\n", + "stderr": "", + "rc": 0, + "ms": 4354.806 + }, + "unmountMs": 32.005, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 22.378, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-dle9lU/local/lfs527-wxbalf1ceg-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 4555.024, + "exitCode": 0, + "stdout": "LFS527 0 1793482739050316000 1793482743590495000\n", + "stderr": "", + "rc": 0, + "ms": 4540.179 + }, + "commitMs": 472.857, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12c94e9f7250027cca6ce539cda8d71d4de332dffac9e4549c6da6c5ae30aeaa2e", + "commit": { + "id": "12c94e9f7250027cca6ce539cda8d71d4de332dffac9e4549c6da6c5ae30aeaa2e", + "branch": null, + "parent": null, + "secondParent": null, + "base": "327598dcac622dbd032fc5dbba8f61b03153860a7fdf138780266bddca930977e1", + "root": "7321ed3e0e2945757261df34b78bf9463c4f5f09d751a482c9fd42d71e8efced", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793482744056, + "logical": 0, + "newCanonical": 109367, + "newStored": 8237, + "newMetadata": 8237, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 35.956, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.34, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.503, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 17.903, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 26.572, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 4368.448, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 32, + "ok": true + }, + { + "name": "timed.mount", + "ms": 22.372, + "ok": true + }, + { + "name": "timed.exec", + "ms": 4555, + "ok": true + }, + { + "name": "timed.commit", + "ms": 472.849, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 35.948, + "ok": true + }, + { + "name": "verify.mount", + "ms": 26.191, + "ok": true + }, + { + "name": "verify.identity", + "ms": 39.592, + "ok": true + }, + { + "name": "verify.exec", + "ms": 509.711, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 24.795, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 112.017, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "327598dcac622dbd032fc5dbba8f61b03153860a7fdf138780266bddca930977e1", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.202, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.8955078125, + "grantedAt": "2026-10-31T21:38:59.014Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 22.378, + "execWallMs": 4555.024, + "commandMs": 4540.179, + "commitMs": 472.857, + "commitKind": "Committed", + "unmountMs": 35.956 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:04.858Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C06-2026-10-31T213908073Z-wxbl491ezq.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C06-2026-10-31T213908073Z-wxbl491ezq.json new file mode 100644 index 000000000..60d9d9c8b --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C06-2026-10-31T213908073Z-wxbl491ezq.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wxbl491ezq-", + "startedAt": "2026-10-31T21:39:08.073Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.82373046875, + "end": 6.99755859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-nSEh7T", + "initMs": 19, + "init": { + "kind": "Initialized", + "project": "c06", + "layer": "3233c343436e2f3cf6219eafb9d21a860ed83585f7a3eaddb717acdc88bc5a57db", + "root": "3281dc28a74a6e76ca4b6f05e9e8f07460e2a43625cd7552d38a6202bc861751", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-nSEh7T/store/store.sqlite" + }, + "setupMs": 31, + "cellBudgetMs": 94927, + "teardownMs": 38 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-nSEh7T/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-nSEh7T/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-nSEh7T/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxbl491ezq-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.82373046875, + "grantedAt": "2026-10-31T21:39:08.499Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 24.859, + "exec": { + "wallMs": 214.235, + "exitCode": 0, + "stdout": "LFS527 0 1793482748271221000 1793482748467747000\n", + "stderr": "", + "rc": 0, + "ms": 196.526 + }, + "unmountMs": 28.454, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 24.764, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-nSEh7T/local/lfs527-wxbl491ezq-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 838.633, + "exitCode": 0, + "stdout": "LFS527 0 1793482748540027000 1793482749332624000\n", + "stderr": "", + "rc": 0, + "ms": 792.597 + }, + "commitMs": 664.077, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12f8f91e0a3cc840b20aa86d7c06b9def6e6edb67c07505ea498780aaae2f3de81", + "commit": { + "id": "12f8f91e0a3cc840b20aa86d7c06b9def6e6edb67c07505ea498780aaae2f3de81", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3233c343436e2f3cf6219eafb9d21a860ed83585f7a3eaddb717acdc88bc5a57db", + "root": "80f9a3e7a71716dfd65d1a782e2ee3fd1a0a4eecd9f0d8103405de10561715a8", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793482749926, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 27.639, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.797, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.482, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 18.579, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 24.853, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 214.216, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 28.45, + "ok": true + }, + { + "name": "timed.mount", + "ms": 24.76, + "ok": true + }, + { + "name": "timed.exec", + "ms": 838.609, + "ok": true + }, + { + "name": "timed.commit", + "ms": 664.072, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 27.634, + "ok": true + }, + { + "name": "verify.mount", + "ms": 28.28, + "ok": true + }, + { + "name": "verify.identity", + "ms": 48.831, + "ok": true + }, + { + "name": "verify.exec", + "ms": 2923.791, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 27.168, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 59.112, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3233c343436e2f3cf6219eafb9d21a860ed83585f7a3eaddb717acdc88bc5a57db", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.394, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.82373046875, + "grantedAt": "2026-10-31T21:39:08.499Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 24.764, + "execWallMs": 838.633, + "commandMs": 792.597, + "commitMs": 664.077, + "commitKind": "Committed", + "unmountMs": 27.639 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:13.195Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C07-2026-10-31T213916432Z-wxbrkg1f9a.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C07-2026-10-31T213916432Z-wxbrkg1f9a.json new file mode 100644 index 000000000..411e1e25e --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C07-2026-10-31T213916432Z-wxbrkg1f9a.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wxbrkg1f9a-", + "startedAt": "2026-10-31T21:39:16.432Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.07763671875, + "end": 6.83154296875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-9SeOFU", + "initMs": 60, + "init": { + "kind": "Initialized", + "project": "c07", + "layer": "32281972d76368a5d5c3907b6aa94bb742798bd14777255c7e6ac6156597d5bc7b", + "root": "483d3bccbfd6254fc70fb9e8082ee92e9a787d507b632101b9a5b60f81759a4f", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-9SeOFU/store/store.sqlite" + }, + "setupMs": 199, + "cellBudgetMs": 94520, + "teardownMs": 116 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-9SeOFU/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-9SeOFU/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-9SeOFU/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxbrkg1f9a-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.07763671875, + "grantedAt": "2026-10-31T21:39:17.831Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 30.788, + "exec": { + "wallMs": 740.842, + "exitCode": 0, + "stdout": "LFS527 0 1793482757099737000 1793482757771287000\n", + "stderr": "", + "rc": 0, + "ms": 671.55 + }, + "unmountMs": 55.675, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 28.525, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-9SeOFU/local/lfs527-wxbrkg1f9a-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 589.687, + "exitCode": 0, + "stdout": "LFS527 0 1793482757882502000 1793482758448249000\n", + "stderr": "", + "rc": 0, + "ms": 565.747 + }, + "commitMs": 1128.215, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12ad9c27225b64eae59d051399fc2153189189bc115aea6676c3c215a3ad6e972e", + "commit": { + "id": "12ad9c27225b64eae59d051399fc2153189189bc115aea6676c3c215a3ad6e972e", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32281972d76368a5d5c3907b6aa94bb742798bd14777255c7e6ac6156597d5bc7b", + "root": "5b52a89d4a1c437221b8e366e42b91d064112d59c41b6743c7d04becb8e64b52", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793482759212, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 39.453, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.711, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.513, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 18.586, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 30.779, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 740.816, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 55.669, + "ok": true + }, + { + "name": "timed.mount", + "ms": 28.52, + "ok": true + }, + { + "name": "timed.exec", + "ms": 589.675, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1128.209, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 39.447, + "ok": true + }, + { + "name": "verify.mount", + "ms": 26.465, + "ok": true + }, + { + "name": "verify.identity", + "ms": 234.558, + "ok": true + }, + { + "name": "verify.exec", + "ms": 5607.954, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 61.616, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 66.12, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32281972d76368a5d5c3907b6aa94bb742798bd14777255c7e6ac6156597d5bc7b", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.85, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.07763671875, + "grantedAt": "2026-10-31T21:39:17.831Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 28.525, + "execWallMs": 589.687, + "commandMs": 565.747, + "commitMs": 1128.215, + "commitKind": "Committed", + "unmountMs": 39.453 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:25.762Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C08-2026-10-31T213929571Z-wxc1pf1fnb.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C08-2026-10-31T213929571Z-wxc1pf1fnb.json new file mode 100644 index 000000000..b099096f1 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C08-2026-10-31T213929571Z-wxc1pf1fnb.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wxc1pf1fnb-", + "startedAt": "2026-10-31T21:39:29.571Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.4052734375, + "end": 7.53271484375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-NwzuYe", + "initMs": 24, + "init": { + "kind": "Initialized", + "project": "c08", + "layer": "32242f8b2d85eaa24d961993d56badec4dcae01e8cbcb1369b62fd8c9681c07890", + "root": "f36f16ceb0e13ec63c4f41e044ba4f1a5d3a96bf9f51b16021ea416cb4b17762", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-NwzuYe/store/store.sqlite" + }, + "setupMs": 54, + "cellBudgetMs": 94829, + "teardownMs": 37 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-NwzuYe/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-NwzuYe/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-NwzuYe/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxc1pf1fnb-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.4052734375, + "grantedAt": "2026-10-31T21:39:31.128Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 29.831, + "exec": { + "wallMs": 1113.206, + "exitCode": 0, + "stdout": "LFS527 0 1793482770016048000 1793482771050592000\n", + "stderr": "", + "rc": 0, + "ms": 1034.544 + }, + "unmountMs": 63.517, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 46.916, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-NwzuYe/local/lfs527-wxc1pf1fnb-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 470.037, + "exitCode": 0, + "stdout": "LFS527 0 1793482771219125000 1793482771643216000\n", + "stderr": "", + "rc": 0, + "ms": 424.091 + }, + "commitMs": 1222.537, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a65aa3cf1e36e1306580a5021e58440b75f4e277e040b4adcca15e9d5aab21d5", + "commit": { + "id": "12a65aa3cf1e36e1306580a5021e58440b75f4e277e040b4adcca15e9d5aab21d5", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32242f8b2d85eaa24d961993d56badec4dcae01e8cbcb1369b62fd8c9681c07890", + "root": "df98061e1ba1be53154e99b62928cb0efc05b67920ca28367bccf33894da51e5", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793482772793, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 37.289, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 12.909, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.761, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 33.056, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 29.823, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1113.186, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 63.511, + "ok": true + }, + { + "name": "timed.mount", + "ms": 46.912, + "ok": true + }, + { + "name": "timed.exec", + "ms": 470.024, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1222.531, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 37.284, + "ok": true + }, + { + "name": "verify.mount", + "ms": 19.932, + "ok": true + }, + { + "name": "verify.identity", + "ms": 41.925, + "ok": true + }, + { + "name": "verify.exec", + "ms": 2778.988, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 20.829, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 54.568, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32242f8b2d85eaa24d961993d56badec4dcae01e8cbcb1369b62fd8c9681c07890", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 3.004, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.4052734375, + "grantedAt": "2026-10-31T21:39:31.128Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 46.916, + "execWallMs": 470.037, + "commandMs": 424.091, + "commitMs": 1222.537, + "commitKind": "Committed", + "unmountMs": 37.289 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:35.867Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C09-2026-10-31T213939133Z-wxc9311fwy.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C09-2026-10-31T213939133Z-wxc9311fwy.json new file mode 100644 index 000000000..0ce285a04 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C09-2026-10-31T213939133Z-wxc9311fwy.json @@ -0,0 +1,351 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wxc9311fwy-", + "startedAt": "2026-10-31T21:39:39.133Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.81005859375, + "end": 8.1455078125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-MSnmTI", + "initMs": 23, + "init": { + "kind": "Initialized", + "project": "c09", + "layer": "32cda881c1ad00f130ba378c7861a5ca3be7186f9a565551ec1726fbdcd2ce0a49", + "root": "4fa145cd6bdfe901d233b2e65c1fe06494d28c0d30c8a3a1818af9e161e6ab5c", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-MSnmTI/store/store.sqlite" + }, + "setupMs": 42, + "cellBudgetMs": 94903, + "teardownMs": 42 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-MSnmTI/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-MSnmTI/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-MSnmTI/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxc9311fwy-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.81005859375, + "grantedAt": "2026-10-31T21:39:41.314Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 301.691, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1278a9706bcc5f54236039478f34c82e2c20b68d6dd8a99879d5a40c2740dcb76a", + "commit": { + "id": "1278a9706bcc5f54236039478f34c82e2c20b68d6dd8a99879d5a40c2740dcb76a", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32cda881c1ad00f130ba378c7861a5ca3be7186f9a565551ec1726fbdcd2ce0a49", + "root": "33bf663778414717234c108a5223d29a4fab960f3bac459af2e09ada76a36740", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793482781112, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 26.073, + "exec": { + "wallMs": 58.117, + "exitCode": 0, + "stdout": "LFS527 0 1793482781247828000 1793482781289354000\n", + "stderr": "", + "rc": 0, + "ms": 41.526 + }, + "unmountMs": 21.417, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 62.482, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-MSnmTI/local/lfs527-wxc9311fwy-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 58.03, + "exitCode": 0, + "stdout": "LFS527 0 1793482781392235000 1793482781434269000\n", + "stderr": "", + "rc": 0, + "ms": 42.034 + }, + "commitMs": 90.032, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "1278a9706bcc5f54236039478f34c82e2c20b68d6dd8a99879d5a40c2740dcb76a", + "root": "33bf663778414717234c108a5223d29a4fab960f3bac459af2e09ada76a36740", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 21.551, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 11.423, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.793, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 82.628, + "ok": true + }, + { + "name": "setup.mount", + "ms": 29.158, + "ok": true + }, + { + "name": "setup.exec", + "ms": 301.671, + "ok": true + }, + { + "name": "setup.commit", + "ms": 1470.714, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 20.648, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 26.068, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 58.105, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 21.408, + "ok": true + }, + { + "name": "timed.mount", + "ms": 62.478, + "ok": true + }, + { + "name": "timed.exec", + "ms": 58.019, + "ok": true + }, + { + "name": "timed.commit", + "ms": 90.027, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 21.545, + "ok": true + }, + { + "name": "verify.mount", + "ms": 21.832, + "ok": true + }, + { + "name": "verify.identity", + "ms": 45.895, + "ok": true + }, + { + "name": "verify.exec", + "ms": 2813.161, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 21.488, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 50.809, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32cda881c1ad00f130ba378c7861a5ca3be7186f9a565551ec1726fbdcd2ce0a49", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.661, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.81005859375, + "grantedAt": "2026-10-31T21:39:41.314Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 62.482, + "execWallMs": 58.03, + "commandMs": 42.034, + "commitMs": 90.032, + "commitKind": "UpToDate", + "unmountMs": 21.551 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:44.551Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C10-2026-10-31T213947659Z-wxcfnv1g6n.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C10-2026-10-31T213947659Z-wxcfnv1g6n.json new file mode 100644 index 000000000..7cdca84d5 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C10-2026-10-31T213947659Z-wxcfnv1g6n.json @@ -0,0 +1,370 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wxcfnv1g6n-", + "startedAt": "2026-10-31T21:39:47.659Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.1455078125, + "end": 7.88916015625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-O6iWNF", + "initMs": 29, + "init": { + "kind": "Initialized", + "project": "c10", + "layer": "32901c7ca4f67e2158352fbbcffff9ce7a0271fea8758163909e89323298f20b7e", + "root": "a8230bf4b5e4e32f5b9d8fa5675eb24429dc6142f3f66c8bc165cbe9a056620a", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-O6iWNF/store/store.sqlite" + }, + "setupMs": 44, + "cellBudgetMs": 94885, + "teardownMs": 67 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-O6iWNF/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-O6iWNF/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-O6iWNF/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxcfnv1g6n-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.0537109375, + "grantedAt": "2026-10-31T21:39:48.964Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 216.242, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12dd988b662a3c2ef4c0d99063ccdc170c4bf9e951e33a0420df6979b91ea847c5", + "commit": { + "id": "12dd988b662a3c2ef4c0d99063ccdc170c4bf9e951e33a0420df6979b91ea847c5", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32901c7ca4f67e2158352fbbcffff9ce7a0271fea8758163909e89323298f20b7e", + "root": "e2e660ebfb95b62dd40a7abf9523290e524a8329824d4ad1a9c2bebe56312db8", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793482788492, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 47.727, + "exec": { + "wallMs": 285.728, + "exitCode": 0, + "stdout": "LFS527 0 1793482788663027000 1793482788929517000\n", + "stderr": "", + "rc": 0, + "ms": 266.49 + }, + "unmountMs": 31.244, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 24.802, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-O6iWNF/local/lfs527-wxcfnv1g6n-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 289.814, + "exitCode": 0, + "stdout": "LFS527 0 1793482789008342000 1793482789278400000\n", + "stderr": "", + "rc": 0, + "ms": 270.058 + }, + "commitMs": 448.429, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1242d1164568151ded2ae758655bd4b278466ca374a4842e10c07877c0d46ed908", + "commit": { + "id": "1242d1164568151ded2ae758655bd4b278466ca374a4842e10c07877c0d46ed908", + "branch": null, + "parent": "12dd988b662a3c2ef4c0d99063ccdc170c4bf9e951e33a0420df6979b91ea847c5", + "secondParent": null, + "base": "32901c7ca4f67e2158352fbbcffff9ce7a0271fea8758163909e89323298f20b7e", + "root": "701a6f786a1c43800d5a8bb96d35af5d5ec087391f27bb069d7a021cd9d9eb89", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793482789537, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 49.424, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.436, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.558, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15.989, + "ok": true + }, + { + "name": "setup.mount", + "ms": 22.457, + "ok": true + }, + { + "name": "setup.exec", + "ms": 216.218, + "ok": true + }, + { + "name": "setup.commit", + "ms": 480.392, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 23.531, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 47.723, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 285.715, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 31.229, + "ok": true + }, + { + "name": "timed.mount", + "ms": 24.797, + "ok": true + }, + { + "name": "timed.exec", + "ms": 289.803, + "ok": true + }, + { + "name": "timed.commit", + "ms": 448.424, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 49.418, + "ok": true + }, + { + "name": "verify.mount", + "ms": 30.791, + "ok": true + }, + { + "name": "verify.identity", + "ms": 48.586, + "ok": true + }, + { + "name": "verify.exec", + "ms": 5494.648, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 58.969, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 107.357, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32901c7ca4f67e2158352fbbcffff9ce7a0271fea8758163909e89323298f20b7e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 2.714, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.0537109375, + "grantedAt": "2026-10-31T21:39:48.964Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 24.802, + "execWallMs": 289.814, + "commandMs": 270.058, + "commitMs": 448.429, + "commitKind": "Committed", + "unmountMs": 49.424 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:55.627Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C11-2026-10-31T214000431Z-wxcpin1ghl.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C11-2026-10-31T214000431Z-wxcpin1ghl.json new file mode 100644 index 000000000..ebc697531 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C11-2026-10-31T214000431Z-wxcpin1ghl.json @@ -0,0 +1,351 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wxcpin1ghl-", + "startedAt": "2026-10-31T21:40:00.431Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.93896484375, + "end": 8.49951171875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-oW8U8F", + "initMs": 71, + "init": { + "kind": "Initialized", + "project": "c11", + "layer": "329ddb1dba0783bcf89f12be025eddc28e1222e1defb32a5bf2ff90e372f02b421", + "root": "12b2160faa29a388ffff577092d6f2ca671c29cc4495ac9165621067b1d267df", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-oW8U8F/store/store.sqlite" + }, + "setupMs": 110, + "cellBudgetMs": 94166, + "teardownMs": 36 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-oW8U8F/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-oW8U8F/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-oW8U8F/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxcpin1ghl-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.54345703125, + "grantedAt": "2026-10-31T21:40:08.344Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 742.702, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12c453841386e922ad9deccd5e3138a0ccbfc70ad9ccf5798bebc4f703cb7c71e4", + "commit": { + "id": "12c453841386e922ad9deccd5e3138a0ccbfc70ad9ccf5798bebc4f703cb7c71e4", + "branch": null, + "parent": null, + "secondParent": null, + "base": "329ddb1dba0783bcf89f12be025eddc28e1222e1defb32a5bf2ff90e372f02b421", + "root": "5c9f41a38f5a4fbaa426078bc9b8e4fc5019645af209280bf45358d81df147ed", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793482808037, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 23.226, + "exec": { + "wallMs": 161.503, + "exitCode": 0, + "stdout": "LFS527 0 1793482808163915000 1793482808310436000\n", + "stderr": "", + "rc": 0, + "ms": 146.521 + }, + "unmountMs": 29.535, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 21.7, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-oW8U8F/local/lfs527-wxcpin1ghl-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 230.435, + "exitCode": 0, + "stdout": "LFS527 0 1793482808382030000 1793482808595655000\n", + "stderr": "", + "rc": 0, + "ms": 213.625 + }, + "commitMs": 565.662, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12c453841386e922ad9deccd5e3138a0ccbfc70ad9ccf5798bebc4f703cb7c71e4", + "root": "5c9f41a38f5a4fbaa426078bc9b8e4fc5019645af209280bf45358d81df147ed", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 32.733, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 62.71, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.136, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 164.399, + "ok": true + }, + { + "name": "setup.mount", + "ms": 43.504, + "ok": true + }, + { + "name": "setup.exec", + "ms": 742.677, + "ok": true + }, + { + "name": "setup.commit", + "ms": 4661.464, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 19.933, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 23.222, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 161.491, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 29.527, + "ok": true + }, + { + "name": "timed.mount", + "ms": 21.692, + "ok": true + }, + { + "name": "timed.exec", + "ms": 230.421, + "ok": true + }, + { + "name": "timed.commit", + "ms": 565.658, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 32.728, + "ok": true + }, + { + "name": "verify.mount", + "ms": 23.19, + "ok": true + }, + { + "name": "verify.identity", + "ms": 73.834, + "ok": true + }, + { + "name": "verify.exec", + "ms": 2789.457, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 22.996, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 46.359, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "329ddb1dba0783bcf89f12be025eddc28e1222e1defb32a5bf2ff90e372f02b421", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 3.584, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.54345703125, + "grantedAt": "2026-10-31T21:40:08.344Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 21.7, + "execWallMs": 230.435, + "commandMs": 213.625, + "commitMs": 565.662, + "commitKind": "UpToDate", + "unmountMs": 32.733 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:40:12.196Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C12-2026-10-31T214015465Z-wxd1491gu8.json b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C12-2026-10-31T214015465Z-wxd1491gu8.json new file mode 100644 index 000000000..2bc183485 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/macos-native-C12-2026-10-31T214015465Z-wxd1491gu8.json @@ -0,0 +1,309 @@ +{ + "receipt": "lfs527-cell/1", + "row": "macos-native", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wxd1491gu8-", + "startedAt": "2026-10-31T21:40:15.465Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.21923828125, + "end": 7.72119140625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-kEEmlO", + "initMs": 19, + "init": { + "kind": "Initialized", + "project": "c12", + "layer": "32ae62f1d52cac0765a6a1ba22f6fdd2e544148673a3fb4ad8953edaf587099df3", + "root": "f8442a9c4971814829f515f6f9d96ee91d2dc6ede68bac0fc9ce578d627004a8", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-kEEmlO/store/store.sqlite" + }, + "setupMs": 43, + "cellBudgetMs": 94905, + "teardownMs": 33 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": null, + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_SANDBOX": "native", + "LAYERFS_NATIVE": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs.node", + "LAYERFS_DAEMON": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/Users/yifanxu/.cache/layerfs-test/lfs527-kEEmlO/local", + "LAYERFS_STORE_PATH": "/Users/yifanxu/.cache/layerfs-test/lfs527-kEEmlO/store/store.sqlite", + "LAYERFS_HOME": "/Users/yifanxu/.cache/layerfs-test/lfs527-kEEmlO/home", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxd1491gu8-" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.21923828125, + "grantedAt": "2026-10-31T21:40:17.013Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 21.852, + "exec": { + "wallMs": 1147.13, + "exitCode": 0, + "stdout": "LFS527 0 1793482815701897000 1793482816807891000\n", + "stderr": "", + "rc": 0, + "ms": 1105.994 + }, + "unmountMs": 178.616, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 49.898, + "image": "local", + "workspace": { + "sandbox": "1", + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-kEEmlO/local/lfs527-wxd1491gu8-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 614.897, + "exitCode": 0, + "stdout": "LFS527 0 1793482817082789000 1793482817677300000\n", + "stderr": "", + "rc": 0, + "ms": 594.511 + }, + "commitMs": 838.481, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12fd5a9cc9047777102451686e43ed3fc5396f0ad87acd5c5fa474b1258d8cbd1b", + "commit": { + "id": "12fd5a9cc9047777102451686e43ed3fc5396f0ad87acd5c5fa474b1258d8cbd1b", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32ae62f1d52cac0765a6a1ba22f6fdd2e544148673a3fb4ad8953edaf587099df3", + "root": "7f8b3c485f07050b0ada7f5e9a0d674b3b0e325043147c63d7049f9798bd6c98", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793482818513, + "logical": 38445, + "newCanonical": 82440, + "newStored": 27864, + "newMetadata": 6535, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 27.17, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.817, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.439, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 41.05, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 21.845, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1147.107, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 178.611, + "ok": true + }, + { + "name": "timed.mount", + "ms": 49.892, + "ok": true + }, + { + "name": "timed.exec", + "ms": 614.882, + "ok": true + }, + { + "name": "timed.commit", + "ms": 838.471, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 27.165, + "ok": true + }, + { + "name": "verify.mount", + "ms": 27.282, + "ok": true + }, + { + "name": "verify.identity", + "ms": 59.989, + "ok": true + }, + { + "name": "verify.exec", + "ms": 335.119, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 24.388, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 54.429, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32ae62f1d52cac0765a6a1ba22f6fdd2e544148673a3fb4ad8953edaf587099df3", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "local" + }, + "lock": { + "askedMs": 3.027, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.21923828125, + "grantedAt": "2026-10-31T21:40:17.013Z", + "staleRemoved": null + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 49.898, + "execWallMs": 614.897, + "commandMs": 594.511, + "commitMs": 838.481, + "commitKind": "Committed", + "unmountMs": 27.17 + }, + "where": { + "kernel": "Darwin 25.4.0", + "machine": "arm64", + "cpus": "14", + "memKiB": null, + "memBytes": "38654705664", + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:40:19.087Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/refusals-macos-namespaces-2026-10-31T214022220Z-wxd6bw1h20.json b/core/docs/issues/527/receipts/5431c7e4a9/refusals-macos-namespaces-2026-10-31T214022220Z-wxd6bw1h20.json new file mode 100644 index 000000000..6fe885255 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/refusals-macos-namespaces-2026-10-31T214022220Z-wxd6bw1h20.json @@ -0,0 +1,117 @@ +{ + "receipt": "lfs527-cell/1", + "row": "refusals", + "cell": "macos-namespaces", + "verdict": "PASS", + "cause": "expected Unsupported three times; answered Unsupported, Unsupported, Unsupported", + "project": "refusal", + "prefix": "lfs527-wxd6bw1h20-", + "startedAt": "2026-10-31T21:40:22.220Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.72119140625, + "end": 7.72119140625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-h5nJeG", + "initMs": 20, + "init": { + "kind": "Initialized", + "project": "refusal", + "layer": "32b8f9d3f1831adbaf55e873c9db8f126788374c82f0f4fdc4a8987b7503fb59a6", + "root": "6b773feeafe76a1f4ab67bdc87b03bb0e5d440f3675d8b4d68316e48866c70da", + "store": "/Users/yifanxu/.cache/layerfs-test/lfs527-h5nJeG/store/store.sqlite" + }, + "teardownMs": 46 + }, + "teardown": [ + { + "name": "sandboxes", + "ok": true, + "value": [] + }, + { + "name": "leftover mounts and processes", + "ok": true, + "value": { + "mounts": [], + "pids": [] + } + }, + { + "name": "work", + "ok": true + } + ], + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-worktrees/issue527-platform-pass-e-f55ee57a9aa7/artifacts/build-macos-c88772be7b1949f1af6289022adb1718", + "id": "build-macos-c88772be7b1949f1af6289022adb1718", + "platform": "macos", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "326dd203f1b78cd249d003514f004a90779de783bb2996a56f59c6d4365014a7", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 214, + "mismatched": [], + "imageArchives": [] + }, + "observed": { + "LAYERFS_SANDBOX=namespaces, no image settings": { + "opened": { + "refused": false, + "value": "opened" + }, + "created": { + "refused": true, + "code": "Unsupported", + "message": "Unsupported: deploy.sandbox (LAYERFS_SANDBOX) namespaces is Linux only; use native", + "detail": null + } + }, + "LAYERFS_SANDBOX=namespaces, with LAYERFS_IMAGE and LAYERFS_IMAGE_ARCHIVE": { + "opened": { + "refused": false, + "value": "opened" + }, + "created": { + "refused": true, + "code": "Unsupported", + "message": "Unsupported: deploy.sandbox (LAYERFS_SANDBOX) namespaces is Linux only; use native", + "detail": null + } + }, + "former pair native + LAYERFS_SANDBOX_BACKEND=namespaces, with image settings": { + "opened": { + "refused": false, + "value": "opened" + }, + "created": { + "refused": true, + "code": "Unsupported", + "message": "Unsupported: deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) namespaces is Linux only; use native", + "detail": null + } + } + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:40:22.592Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/refusals-vm-docker-2026-10-31T214026734Z-wxd9ta1h5b.json b/core/docs/issues/527/receipts/5431c7e4a9/refusals-vm-docker-2026-10-31T214026734Z-wxd9ta1h5b.json new file mode 100644 index 000000000..d20b57230 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/refusals-vm-docker-2026-10-31T214026734Z-wxd9ta1h5b.json @@ -0,0 +1,140 @@ +{ + "receipt": "lfs527-cell/1", + "row": "refusals", + "cell": "vm-docker", + "verdict": "OBSERVED", + "cause": "no documented answer for Docker on a vm: home; see observed", + "project": "refusal", + "prefix": "lfs527-wxd9ta1h5b-", + "startedAt": "2026-10-31T21:40:26.734Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.5029296875, + "end": 7.18212890625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-XcjUzh", + "initMs": 12598, + "volume": "lfs527-wxd9ta1h5b-refusal-store-mvwxda2c", + "vm": { + "project": "refusal", + "name": "lfs527-wxd9ta1h5b-refusal-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-XcjUzh/home", + "store": "lfs527-wxd9ta1h5b-refusal-vm-store", + "created": "2026-10-31T21:40:28Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56010 + }, + "disk": { + "free": 21120929792 + } + }, + "teardownMs": 1874 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "refusal", + "volume": "lfs527-wxd9ta1h5b-refusal-store-mvwxda2c" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "refusal", + "name": "lfs527-wxd9ta1h5b-refusal-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "observed": { + "placement vm:docker": { + "refused": true, + "code": "Unsupported", + "message": "Unsupported: no VM provider is implemented for vm:docker; it is vm:microsandbox or vm:apple-container or vm:ssh or vm:lima or vm:firecracker", + "detail": null + }, + "LAYERFS_SANDBOX=docker on vm:apple-container": { + "opened": { + "refused": false, + "value": "opened" + }, + "created": { + "refused": true, + "code": "Failed", + "message": "Failed: sandbox create stopped at Create: Provider(LaunchFailure { phase: Create, identity: None, cause: Docker(Create(SandboxCreateFailure { request: SandboxRequest { image: \"sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e\", store_volume: Some(\"lfs527-wxd9ta1h5b-none\"), port: 30421, labels: [(\"layerfs.role\", \"sandbox\"), (\"layerfs.project\", \"refusal\"), (\"layerfs.sandbox\", \"1\")] }, phase: Volume, transfer: WireFailure { attempted: false, sent_bytes: 0, request_header_bytes: 0, sent_body_bytes: 0, pending_request: PendingRequest { bytes: 0 }, status: None, cause: Io(Os { code: 2, kind: NotFound, message: \"No such file or directory\" }), fence_error: None, observed_exec: None, observed_container: None, requested_container: None, requested_exec: None, error_body: None } })) })", + "detail": { + "container": null, + "removed": false, + "log": null + } + } + }, + "LAYERFS_SANDBOX_BACKEND=docker on vm:apple-container": { + "opened": { + "refused": false, + "value": "opened" + }, + "created": { + "refused": true, + "code": "InvalidInput", + "message": "InvalidInput: deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) is native or namespaces, not docker; it is replaced by LAYERFS_SANDBOX=native or namespaces", + "detail": null + } + } + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "teardownOk": true, + "endedAt": "2026-10-31T21:40:41.725Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C01-2026-10-31T213613539Z-wx7ug3145e.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C01-2026-10-31T213613539Z-wx7ug3145e.json new file mode 100644 index 000000000..40720906b --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C01-2026-10-31T213613539Z-wx7ug3145e.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wx7ug3145e-", + "startedAt": "2026-10-31T21:36:13.539Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 3.6318359375, + "end": 8.2197265625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-aN7L7x", + "initMs": 9148, + "volume": "lfs527-wx7ug3145e-c01-store-mvwx7ugy", + "vm": { + "project": "c01", + "name": "lfs527-wx7ug3145e-c01-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-aN7L7x/home", + "store": "lfs527-wx7ug3145e-c01-vm-store", + "created": "2026-10-31T21:36:13Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55164 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 9270, + "cellBudgetMs": 75697, + "teardownMs": 1153 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-wx7ug3145e-c01-store-mvwx7ugy" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c01", + "name": "lfs527-wx7ug3145e-c01-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx7ug3145e-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-aN7L7x/home/worker/c01.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 207, + "load1": 8.15185546875, + "grantedAt": "2026-10-31T21:36:30.409Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 16.155, + "exec": { + "wallMs": 620.329, + "exitCode": 0, + "stdout": "LFS527 0 1793482589852851548 1793482590440525007\n", + "stderr": "", + "rc": 0, + "ms": 587.673459 + }, + "unmountMs": 11.567, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 8.144, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wx7ug3145e-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 552.694, + "exitCode": 0, + "stdout": "LFS527 0 1793482590694407924 1793482591223205632\n", + "stderr": "", + "rc": 0, + "ms": 528.797708 + }, + "commitMs": 171.668, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1287a6e93891e6392f054851d98821e38e64776e454748bb3f4774f6d7c065e03f", + "commit": { + "id": "1287a6e93891e6392f054851d98821e38e64776e454748bb3f4774f6d7c065e03f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32b117b3ceee907fe01373c68b00af138c64b2e47314f37981cd452a4e16be7193", + "root": "b856aba0c343498c4233e007b13ad9923152cf9dc01074b60997a4c9c9178f87", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793482591386, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.988, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.198, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.556, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 6514.145, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 16.149, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 620.323, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 11.564, + "ok": true + }, + { + "name": "timed.mount", + "ms": 8.14, + "ok": true + }, + { + "name": "timed.exec", + "ms": 552.691, + "ok": true + }, + { + "name": "timed.commit", + "ms": 171.664, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.985, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.119, + "ok": true + }, + { + "name": "verify.identity", + "ms": 38.847, + "ok": true + }, + { + "name": "verify.exec", + "ms": 698.504, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.095, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 891.624, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32b117b3ceee907fe01373c68b00af138c64b2e47314f37981cd452a4e16be7193", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 211.259, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 207, + "load1": 8.15185546875, + "grantedAt": "2026-10-31T21:36:30.409Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 8.144, + "execWallMs": 552.694, + "commandMs": 528.797708, + "commitMs": 171.668, + "commitKind": "Committed", + "unmountMs": 8.988 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:36:33.953Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C02-2026-10-31T213644476Z-wx8ibg14wm.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C02-2026-10-31T213644476Z-wx8ibg14wm.json new file mode 100644 index 000000000..334cf9fb4 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C02-2026-10-31T213644476Z-wx8ibg14wm.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wx8ibg14wm-", + "startedAt": "2026-10-31T21:36:44.476Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.56005859375, + "end": 10.640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-zhOhJp", + "initMs": 17433, + "volume": "lfs527-wx8ibg14wm-c02-store-mvwx8idd", + "vm": { + "project": "c02", + "name": "lfs527-wx8ibg14wm-c02-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-zhOhJp/home", + "store": "lfs527-wx8ibg14wm-c02-vm-store", + "created": "2026-10-31T21:36:44Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55282 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 17601, + "cellBudgetMs": 67365, + "teardownMs": 946 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-wx8ibg14wm-c02-store-mvwx8idd" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c02", + "name": "lfs527-wx8ibg14wm-c02-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx8ibg14wm-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-zhOhJp/home/worker/c02.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 306, + "load1": 10, + "grantedAt": "2026-10-31T21:37:06.496Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 14.057, + "exec": { + "wallMs": 968.653, + "exitCode": 0, + "stdout": "LFS527 0 1793482624946663800 1793482625894129718\n", + "stderr": "", + "rc": 0, + "ms": 947.465918 + }, + "unmountMs": 8.27, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.067, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wx8ibg14wm-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 936.778, + "exitCode": 0, + "stdout": "LFS527 0 1793482626240907259 1793482627156287551\n", + "stderr": "", + "rc": 0, + "ms": 915.380292 + }, + "commitMs": 110.109, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1287a9b5ba92f6913ed0c56e27eb74364accf96dbcea68464ac26d9884352cf796", + "commit": { + "id": "1287a9b5ba92f6913ed0c56e27eb74364accf96dbcea68464ac26d9884352cf796", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3263970d10c86ac0188e277a31b6441dbd04b5bb223628bd1a535cdde5d3f623b0", + "root": "1e56a06186ffb39211f6dd8ca5ee284635af8e15a07e7060e539e808dc7ec303", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793482627252, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.388, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.379, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.867, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3027.153, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 14.053, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 968.647, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.267, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.065, + "ok": true + }, + { + "name": "timed.exec", + "ms": 936.775, + "ok": true + }, + { + "name": "timed.commit", + "ms": 110.106, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.386, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.369, + "ok": true + }, + { + "name": "verify.identity", + "ms": 25.866, + "ok": true + }, + { + "name": "verify.exec", + "ms": 433.243, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 13.258, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1180.053, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3263970d10c86ac0188e277a31b6441dbd04b5bb223628bd1a535cdde5d3f623b0", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 307.19, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 306, + "load1": 10, + "grantedAt": "2026-10-31T21:37:06.496Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.067, + "execWallMs": 936.778, + "commandMs": 915.380292, + "commitMs": 110.109, + "commitKind": "Committed", + "unmountMs": 10.388 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:10.174Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C03-2026-10-31T213713256Z-wx94iw15ta.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C03-2026-10-31T213713256Z-wx94iw15ta.json new file mode 100644 index 000000000..aa029ff3e --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C03-2026-10-31T213713256Z-wx94iw15ta.json @@ -0,0 +1,316 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wx94iw15ta-", + "startedAt": "2026-10-31T21:37:13.256Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.640625, + "end": 10.79931640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-xhTbhY", + "initMs": 9428, + "volume": "lfs527-wx94iw15ta-c03-store-mvwx94jo", + "vm": { + "project": "c03", + "name": "lfs527-wx94iw15ta-c03-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-xhTbhY/home", + "store": "lfs527-wx94iw15ta-c03-vm-store", + "created": "2026-10-31T21:37:13Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55414 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 9546, + "cellBudgetMs": 75422, + "teardownMs": 920 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-wx94iw15ta-c03-store-mvwx94jo" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c03", + "name": "lfs527-wx94iw15ta-c03-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx94iw15ta-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-xhTbhY/home/worker/c03.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 305, + "load1": 11.3916015625, + "grantedAt": "2026-10-31T21:37:27.808Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 16.766, + "exec": { + "wallMs": 527.933, + "exitCode": 0, + "stdout": "LFS527 0 1793482647424483172 1793482647893052505\n", + "stderr": "", + "rc": 0, + "ms": 468.569333 + }, + "unmountMs": 5.732, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.501, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wx94iw15ta-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 634.723, + "exitCode": 0, + "stdout": "LFS527 0 1793482648231447964 1793482648850090298\n", + "stderr": "", + "rc": 0, + "ms": 618.642334 + }, + "commitMs": 10.124, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "d30d57630be76456cf2af2c9bc3d40b9f66cba1318158aaeabb77e577b63cd50", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.657, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.996, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.584, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4051.286, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 16.763, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 527.928, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 5.729, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.498, + "ok": true + }, + { + "name": "timed.exec", + "ms": 634.72, + "ok": true + }, + { + "name": "timed.commit", + "ms": 10.117, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.653, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.319, + "ok": true + }, + { + "name": "verify.identity", + "ms": 26.071, + "ok": true + }, + { + "name": "verify.exec", + "ms": 7.986, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.926, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1164.95, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32b23c96ca62d64f5360cba18f88a6679e97ef813d2dfee99eeb528c0bdddd560d", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 305.868, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 305, + "load1": 11.3916015625, + "grantedAt": "2026-10-31T21:37:27.808Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.501, + "execWallMs": 634.723, + "commandMs": 618.642334, + "commitMs": 10.124, + "commitKind": "UpToDate", + "unmountMs": 8.657 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:30.609Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C04-2026-10-31T213733813Z-wx9kdx16l1.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C04-2026-10-31T213733813Z-wx9kdx16l1.json new file mode 100644 index 000000000..33927c26b --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C04-2026-10-31T213733813Z-wx9kdx16l1.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wx9kdx16l1-", + "startedAt": "2026-10-31T21:37:33.813Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.25439453125, + "end": 9.41259765625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-p9H7Rx", + "initMs": 7130, + "volume": "lfs527-wx9kdx16l1-c04-store-mvwx9kep", + "vm": { + "project": "c04", + "name": "lfs527-wx9kdx16l1-c04-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-p9H7Rx/home", + "store": "lfs527-wx9kdx16l1-c04-vm-store", + "created": "2026-10-31T21:37:33Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55508 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 7281, + "cellBudgetMs": 77685, + "teardownMs": 1325 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-wx9kdx16l1-c04-store-mvwx9kep" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c04", + "name": "lfs527-wx9kdx16l1-c04-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9kdx16l1-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-p9H7Rx/home/worker/c04.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.36181640625, + "grantedAt": "2026-10-31T21:37:53.566Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 13.522, + "exec": { + "wallMs": 711.605, + "exitCode": 0, + "stdout": "LFS527 0 1793482672888214467 1793482673574588300\n", + "stderr": "", + "rc": 0, + "ms": 686.373833 + }, + "unmountMs": 41.554, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.566, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wx9kdx16l1-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 668.98, + "exitCode": 0, + "stdout": "LFS527 0 1793482673647716759 1793482674296091551\n", + "stderr": "", + "rc": 0, + "ms": 648.374792 + }, + "commitMs": 142.575, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12ed71a24b8ba649a060f63a21cc0688ab1fbacf508fc66a91de091348d0deba06", + "commit": { + "id": "12ed71a24b8ba649a060f63a21cc0688ab1fbacf508fc66a91de091348d0deba06", + "branch": null, + "parent": null, + "secondParent": null, + "base": "322e4592a9354394528c8e37b2ca766d287343d3cf89a93e9be8511f28e931c718", + "root": "d357510bc78429981ed560c28c5532f95d4c178b40c45590036cde684aef17b2", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793482674430, + "logical": 0, + "newCanonical": 109367, + "newStored": 8269, + "newMetadata": 8269, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 6.349, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.177, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.41, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 11560.072, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 13.515, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 711.601, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 41.551, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.563, + "ok": true + }, + { + "name": "timed.exec", + "ms": 668.977, + "ok": true + }, + { + "name": "timed.commit", + "ms": 142.571, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 6.344, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.553, + "ok": true + }, + { + "name": "verify.identity", + "ms": 36.932, + "ok": true + }, + { + "name": "verify.exec", + "ms": 256.155, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 31.584, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 803.159, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "322e4592a9354394528c8e37b2ca766d287343d3cf89a93e9be8511f28e931c718", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 6.16, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.36181640625, + "grantedAt": "2026-10-31T21:37:53.566Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.566, + "execWallMs": 668.98, + "commandMs": 648.374792, + "commitMs": 142.575, + "commitKind": "Committed", + "unmountMs": 6.349 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:56.852Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C05-2026-10-31T213759997Z-wxa4l917i3.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C05-2026-10-31T213759997Z-wxa4l917i3.json new file mode 100644 index 000000000..5ab94a4e3 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C05-2026-10-31T213759997Z-wxa4l917i3.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wxa4l917i3-", + "startedAt": "2026-10-31T21:37:59.997Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.29931640625, + "end": 8.60546875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-9fdPt6", + "initMs": 6826, + "volume": "lfs527-wxa4l917i3-c05-store-mvwxa4m2", + "vm": { + "project": "c05", + "name": "lfs527-wxa4l917i3-c05-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-9fdPt6/home", + "store": "lfs527-wxa4l917i3-c05-vm-store", + "created": "2026-10-31T21:38:00Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55589 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 6948, + "cellBudgetMs": 78021, + "teardownMs": 4045 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-wxa4l917i3-c05-store-mvwxa4m2" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c05", + "name": "lfs527-wxa4l917i3-c05-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxa4l917i3-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-9fdPt6/home/worker/c05.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 8794, + "load1": 9.267578125, + "grantedAt": "2026-10-31T21:38:20.797Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 9.976, + "exec": { + "wallMs": 886.976, + "exitCode": 0, + "stdout": "LFS527 0 1793482691005029796 1793482691879142630\n", + "stderr": "", + "rc": 0, + "ms": 874.112834 + }, + "unmountMs": 8.023, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 11.629, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxa4l917i3-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 887.344, + "exitCode": 0, + "stdout": "LFS527 0 1793482700707479217 1793482701582950093\n", + "stderr": "", + "rc": 0, + "ms": 875.470876 + }, + "commitMs": 107.339, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12c14f1d8d0ab169467398a03b1fffb9ef5c301f0be1bb0ab7cbab412d61e02aaf", + "commit": { + "id": "12c14f1d8d0ab169467398a03b1fffb9ef5c301f0be1bb0ab7cbab412d61e02aaf", + "branch": null, + "parent": null, + "secondParent": null, + "base": "328facc805b3366eeabfba8a3b90a463cc8dde826f690a463f58fcd21fb8ab16d5", + "root": "1be6ac3541079e0e02dd52f9c38680f37a805c62a264736357ddcec47201ee34", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793482701682, + "logical": 0, + "newCanonical": 109367, + "newStored": 8249, + "newMetadata": 8249, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.614, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.184, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.753, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4055.907, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 9.972, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 886.971, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.02, + "ok": true + }, + { + "name": "timed.mount", + "ms": 11.626, + "ok": true + }, + { + "name": "timed.exec", + "ms": 887.34, + "ok": true + }, + { + "name": "timed.commit", + "ms": 107.336, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.61, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.115, + "ok": true + }, + { + "name": "verify.identity", + "ms": 32.371, + "ok": true + }, + { + "name": "verify.exec", + "ms": 230.509, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.575, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 26.367, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "328facc805b3366eeabfba8a3b90a463cc8dde826f690a463f58fcd21fb8ab16d5", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 8796.47, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 8794, + "load1": 9.267578125, + "grantedAt": "2026-10-31T21:38:20.797Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 11.629, + "execWallMs": 887.344, + "commandMs": 875.470876, + "commitMs": 107.339, + "commitKind": "Committed", + "unmountMs": 7.614 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:26.161Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C06-2026-10-31T213829379Z-wxar9f19q1.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C06-2026-10-31T213829379Z-wxar9f19q1.json new file mode 100644 index 000000000..9881efa33 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C06-2026-10-31T213829379Z-wxar9f19q1.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wxar9f19q1-", + "startedAt": "2026-10-31T21:38:29.379Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.31640625, + "end": 6.9736328125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-x43zfs", + "initMs": 18932, + "volume": "lfs527-wxar9f19q1-c06-store-mvwxara6", + "vm": { + "project": "c06", + "name": "lfs527-wxar9f19q1-c06-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-x43zfs/home", + "store": "lfs527-wxar9f19q1-c06-vm-store", + "created": "2026-10-31T21:38:29Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55668 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 19066, + "cellBudgetMs": 65882, + "teardownMs": 827 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-wxar9f19q1-c06-store-mvwxara6" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c06", + "name": "lfs527-wxar9f19q1-c06-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxar9f19q1-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-x43zfs/home/worker/c06.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 916, + "load1": 6.9736328125, + "grantedAt": "2026-10-31T21:38:54.084Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.979, + "exec": { + "wallMs": 170.7, + "exitCode": 0, + "stdout": "LFS527 0 1793482733109952760 1793482733252160385\n", + "stderr": "", + "rc": 0, + "ms": 142.207625 + }, + "unmountMs": 10.146, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 11.778, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxar9f19q1-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 166.826, + "exitCode": 0, + "stdout": "LFS527 0 1793482734216070219 1793482734358804053\n", + "stderr": "", + "rc": 0, + "ms": 142.733834 + }, + "commitMs": 302.15, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12cf28aa3ab4f0051f776fba8cb00bb7715da061fb7767fd07704f38a15d754d22", + "commit": { + "id": "12cf28aa3ab4f0051f776fba8cb00bb7715da061fb7767fd07704f38a15d754d22", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32cddd5394c36518316adbfdb05fc6156d14d3713454b44aa59bb367d1fb67d3f4", + "root": "f926724aa8d493d06c9f695fef2410ac2a10dd0e6d759f87886c525b1abaced0", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793482734617, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.04, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 41.219, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.001, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4377.061, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.975, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 170.694, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.142, + "ok": true + }, + { + "name": "timed.mount", + "ms": 11.776, + "ok": true + }, + { + "name": "timed.exec", + "ms": 166.822, + "ok": true + }, + { + "name": "timed.commit", + "ms": 302.147, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.037, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.202, + "ok": true + }, + { + "name": "verify.identity", + "ms": 33.759, + "ok": true + }, + { + "name": "verify.exec", + "ms": 162.864, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.024, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 776.134, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32cddd5394c36518316adbfdb05fc6156d14d3713454b44aa59bb367d1fb67d3f4", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 917.899, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 916, + "load1": 6.9736328125, + "grantedAt": "2026-10-31T21:38:54.084Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 11.778, + "execWallMs": 166.826, + "commandMs": 142.733834, + "commitMs": 302.15, + "commitKind": "Committed", + "unmountMs": 10.04 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:56.392Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C07-2026-10-31T213901369Z-wxbfy11e3g.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C07-2026-10-31T213901369Z-wxbfy11e3g.json new file mode 100644 index 000000000..903d1aa53 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C07-2026-10-31T213901369Z-wxbfy11e3g.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wxbfy11e3g-", + "startedAt": "2026-10-31T21:39:01.369Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.8955078125, + "end": 6.9912109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-bm42I7", + "initMs": 6897, + "volume": "lfs527-wxbfy11e3g-c07-store-mvwxbfyu", + "vm": { + "project": "c07", + "name": "lfs527-wxbfy11e3g-c07-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-bm42I7/home", + "store": "lfs527-wxbfy11e3g-c07-vm-store", + "created": "2026-10-31T21:39:01Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55729 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 7026, + "cellBudgetMs": 77931, + "teardownMs": 5370 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-wxbfy11e3g-c07-store-mvwxbfyu" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c07", + "name": "lfs527-wxbfy11e3g-c07-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxbfy11e3g-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-bm42I7/home/worker/c07.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.99755859375, + "grantedAt": "2026-10-31T21:39:12.576Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 9.19, + "exec": { + "wallMs": 354.202, + "exitCode": 0, + "stdout": "LFS527 0 1793482751776398754 1793482752108206380\n", + "stderr": "", + "rc": 0, + "ms": 331.807626 + }, + "unmountMs": 15.089, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.747, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxbfy11e3g-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 315.546, + "exitCode": 0, + "stdout": "LFS527 0 1793482752150171005 1793482752444434963\n", + "stderr": "", + "rc": 0, + "ms": 294.263958 + }, + "commitMs": 600.038, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12b3c5c2208f75c8b8425867fbf15e965fcbc1ded042e5aacc147f3a1b9034e203", + "commit": { + "id": "12b3c5c2208f75c8b8425867fbf15e965fcbc1ded042e5aacc147f3a1b9034e203", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32ba81c81c7e53323227bb5c8b6cc15dfa37f9064fa57e0522ced606635ae29271", + "root": "aec69deb06e4291cd687c87a35193d9d4f0bed4d0d10eff746905bb76132eaca", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793482752953, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 15.325, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.955, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.098, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3684.038, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 9.187, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 354.198, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 15.086, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.745, + "ok": true + }, + { + "name": "timed.exec", + "ms": 315.542, + "ok": true + }, + { + "name": "timed.commit", + "ms": 600.035, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 15.322, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.872, + "ok": true + }, + { + "name": "verify.identity", + "ms": 57.892, + "ok": true + }, + { + "name": "verify.exec", + "ms": 335.777, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.002, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 975.802, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32ba81c81c7e53323227bb5c8b6cc15dfa37f9064fa57e0522ced606635ae29271", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.718, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 6.99755859375, + "grantedAt": "2026-10-31T21:39:12.576Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.747, + "execWallMs": 315.546, + "commandMs": 294.263958, + "commitMs": 600.038, + "commitKind": "Committed", + "unmountMs": 15.325 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:20.267Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C08-2026-10-31T213923365Z-wxbwx11fis.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C08-2026-10-31T213923365Z-wxbwx11fis.json new file mode 100644 index 000000000..8c7ff7815 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C08-2026-10-31T213923365Z-wxbwx11fis.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wxbwx11fis-", + "startedAt": "2026-10-31T21:39:23.365Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.9912109375, + "end": 7.81005859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-4XIB5a", + "initMs": 11341, + "volume": "lfs527-wxbwx11fis-c08-store-mvwxbwxu", + "vm": { + "project": "c08", + "name": "lfs527-wxbwx11fis-c08-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-4XIB5a/home", + "store": "lfs527-wxbwx11fis-c08-vm-store", + "created": "2026-10-31T21:39:23Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55800 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 11460, + "cellBudgetMs": 73419, + "teardownMs": 891 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-wxbwx11fis-c08-store-mvwxbwxu" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c08", + "name": "lfs527-wxbwx11fis-c08-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxbwx11fis-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-4XIB5a/home/worker/c08.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.81005859375, + "grantedAt": "2026-10-31T21:39:40.038Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 136.766, + "exec": { + "wallMs": 234, + "exitCode": 0, + "stdout": "LFS527 0 1793482780009776257 1793482780220361507\n", + "stderr": "", + "rc": 0, + "ms": 210.58525 + }, + "unmountMs": 12.636, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.913, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxbwx11fis-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 205.649, + "exitCode": 0, + "stdout": "LFS527 0 1793482780260141882 1793482780447656882\n", + "stderr": "", + "rc": 0, + "ms": 187.515 + }, + "commitMs": 308.059, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12063a1f71b162238a963fda67cc9c82a94e7f3b4e1920767d93534da51bab19b5", + "commit": { + "id": "12063a1f71b162238a963fda67cc9c82a94e7f3b4e1920767d93534da51bab19b5", + "branch": null, + "parent": null, + "secondParent": null, + "base": "322639e51e41c78f830f1e5e081cbad6380f120925d02bcdf090b1b27ae9176d87", + "root": "689dd4def100f20585bfa93780f06368307a6acf58c13a2378b9e854557677f1", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793482780712, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 113.607, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.143, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.376, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4648.604, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 136.762, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 233.996, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.633, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.91, + "ok": true + }, + { + "name": "timed.exec", + "ms": 205.645, + "ok": true + }, + { + "name": "timed.commit", + "ms": 308.056, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 113.604, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.497, + "ok": true + }, + { + "name": "verify.identity", + "ms": 30.968, + "ok": true + }, + { + "name": "verify.exec", + "ms": 201.705, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.259, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 139.616, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "322639e51e41c78f830f1e5e081cbad6380f120925d02bcdf090b1b27ae9176d87", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 3.018, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 7.81005859375, + "grantedAt": "2026-10-31T21:39:40.038Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.913, + "execWallMs": 205.649, + "commandMs": 187.515, + "commitMs": 308.059, + "commitKind": "Committed", + "unmountMs": 113.607 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:41.954Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C09-2026-10-31T213944978Z-wxcdle1g26.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C09-2026-10-31T213944978Z-wxcdle1g26.json new file mode 100644 index 000000000..04e4ae678 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C09-2026-10-31T213944978Z-wxcdle1g26.json @@ -0,0 +1,377 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wxcdle1g26-", + "startedAt": "2026-10-31T21:39:44.978Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.1455078125, + "end": 8.49951171875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-BDjkqP", + "initMs": 7794, + "volume": "lfs527-wxcdle1g26-c09-store-mvwxcdmd", + "vm": { + "project": "c09", + "name": "lfs527-wxcdle1g26-c09-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-BDjkqP/home", + "store": "lfs527-wxcdle1g26-c09-vm-store", + "created": "2026-10-31T21:39:45Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55877 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 7932, + "cellBudgetMs": 77022, + "teardownMs": 2247 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-wxcdle1g26-c09-store-mvwxcdmd" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c09", + "name": "lfs527-wxcdle1g26-c09-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxcdle1g26-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-BDjkqP/home/worker/c09.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.54345703125, + "grantedAt": "2026-10-31T21:40:06.466Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 402.888, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1271cfb3ca60cdf416237a5d962eee1cafc85a4d0e53be0fac51f151b8ec187817", + "commit": { + "id": "1271cfb3ca60cdf416237a5d962eee1cafc85a4d0e53be0fac51f151b8ec187817", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32e013719c30dbff5937861f7e3d3f2765341bc88d4f2c73ee71fe2d4ee149777e", + "root": "b3a067212b5136e74816b216319f3d70186ba41143ac89a95e306cf40eb486aa", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793482806337, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 5.275, + "exec": { + "wallMs": 75.377, + "exitCode": 0, + "stdout": "LFS527 0 1793482806424198301 1793482806477627009\n", + "stderr": "", + "rc": 0, + "ms": 53.428708 + }, + "unmountMs": 8.111, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.616, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxcdle1g26-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 72.98, + "exitCode": 0, + "stdout": "LFS527 0 1793482806518566759 1793482806571481092\n", + "stderr": "", + "rc": 0, + "ms": 52.914333 + }, + "commitMs": 1.489, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "1271cfb3ca60cdf416237a5d962eee1cafc85a4d0e53be0fac51f151b8ec187817", + "root": "b3a067212b5136e74816b216319f3d70186ba41143ac89a95e306cf40eb486aa", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.846, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.997, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.713, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 12383.847, + "ok": true + }, + { + "name": "setup.mount", + "ms": 168.831, + "ok": true + }, + { + "name": "setup.exec", + "ms": 402.882, + "ok": true + }, + { + "name": "setup.commit", + "ms": 357.169, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 11.034, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.268, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 75.374, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.109, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.614, + "ok": true + }, + { + "name": "timed.exec", + "ms": 72.976, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1.487, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.843, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.644, + "ok": true + }, + { + "name": "verify.identity", + "ms": 25.651, + "ok": true + }, + { + "name": "verify.exec", + "ms": 206.958, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.038, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 952.512, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32e013719c30dbff5937861f7e3d3f2765341bc88d4f2c73ee71fe2d4ee149777e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 5.841, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.54345703125, + "grantedAt": "2026-10-31T21:40:06.466Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.616, + "execWallMs": 72.98, + "commandMs": 52.914333, + "commitMs": 1.489, + "commitKind": "UpToDate", + "unmountMs": 10.846 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:40:10.009Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C10-2026-10-31T214013621Z-wxczp11gqh.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C10-2026-10-31T214013621Z-wxczp11gqh.json new file mode 100644 index 000000000..631ed4599 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C10-2026-10-31T214013621Z-wxczp11gqh.json @@ -0,0 +1,396 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wxczp11gqh-", + "startedAt": "2026-10-31T21:40:13.621Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.49951171875, + "end": 7.111328125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-lKAO4n", + "initMs": 10581, + "volume": "lfs527-wxczp11gqh-c10-store-mvwxczqa", + "vm": { + "project": "c10", + "name": "lfs527-wxczp11gqh-c10-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-lKAO4n/home", + "store": "lfs527-wxczp11gqh-c10-vm-store", + "created": "2026-10-31T21:40:14Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55972 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 10749, + "cellBudgetMs": 74109, + "teardownMs": 1589 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-wxczp11gqh-c10-store-mvwxczqa" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c10", + "name": "lfs527-wxczp11gqh-c10-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxczp11gqh-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-lKAO4n/home/worker/c10.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.38232421875, + "grantedAt": "2026-10-31T21:40:29.628Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 186.316, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "122f16cee30eea71d608344a6a9c14b44e2f0e22769c9a2d2ca52ebfcf44bfe446", + "commit": { + "id": "122f16cee30eea71d608344a6a9c14b44e2f0e22769c9a2d2ca52ebfcf44bfe446", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32453a1c5b603406db3bee4d524684192924bf331cd1cbb7aed804b8232a7035b2", + "root": "3eec261ecb96879f4295eee26c6ceeecf9ae566dc5c400e7828d66b2bbac3a98", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793482829580, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 5.518, + "exec": { + "wallMs": 234.649, + "exitCode": 0, + "stdout": "LFS527 0 1793482829671582215 1793482829878884173\n", + "stderr": "", + "rc": 0, + "ms": 207.301958 + }, + "unmountMs": 13.106, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.773, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxczp11gqh-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 245.934, + "exitCode": 0, + "stdout": "LFS527 0 1793482829921730506 1793482830147592340\n", + "stderr": "", + "rc": 0, + "ms": 225.861834 + }, + "commitMs": 51.402, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "124a548e7ea286d61ed4586bcdc6674ebf51bea0cc59953eea596efe0b85cacb84", + "commit": { + "id": "124a548e7ea286d61ed4586bcdc6674ebf51bea0cc59953eea596efe0b85cacb84", + "branch": null, + "parent": "122f16cee30eea71d608344a6a9c14b44e2f0e22769c9a2d2ca52ebfcf44bfe446", + "secondParent": null, + "base": "32453a1c5b603406db3bee4d524684192924bf331cd1cbb7aed804b8232a7035b2", + "root": "dcecaf5354b5d25276ec324d2a4458d51dca366bf947d2cb856d9872e03fac96", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793482830151, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 12.439, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.74, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.517, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4222.385, + "ok": true + }, + { + "name": "setup.mount", + "ms": 21.393, + "ok": true + }, + { + "name": "setup.exec", + "ms": 186.311, + "ok": true + }, + { + "name": "setup.commit", + "ms": 314.134, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 10.841, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.514, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 234.646, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 13.102, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.771, + "ok": true + }, + { + "name": "timed.exec", + "ms": 245.932, + "ok": true + }, + { + "name": "timed.commit", + "ms": 51.4, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 12.436, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.734, + "ok": true + }, + { + "name": "verify.identity", + "ms": 38.954, + "ok": true + }, + { + "name": "verify.exec", + "ms": 353.349, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.518, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1935.827, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32453a1c5b603406db3bee4d524684192924bf331cd1cbb7aed804b8232a7035b2", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 2.489, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.38232421875, + "grantedAt": "2026-10-31T21:40:29.628Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.773, + "execWallMs": 245.934, + "commandMs": 225.861834, + "commitMs": 51.402, + "commitKind": "Committed", + "unmountMs": 12.439 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:40:33.881Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C11-2026-10-31T214037917Z-wxdifx1hdq.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C11-2026-10-31T214037917Z-wxdifx1hdq.json new file mode 100644 index 000000000..8276c30db --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C11-2026-10-31T214037917Z-wxdifx1hdq.json @@ -0,0 +1,377 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wxdifx1hdq-", + "startedAt": "2026-10-31T21:40:37.917Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.111328125, + "end": 9.1318359375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-zoCg1G", + "initMs": 12268, + "volume": "lfs527-wxdifx1hdq-c11-store-mvwxdih7", + "vm": { + "project": "c11", + "name": "lfs527-wxdifx1hdq-c11-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-zoCg1G/home", + "store": "lfs527-wxdifx1hdq-c11-vm-store", + "created": "2026-10-31T21:40:38Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56040 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 12660, + "cellBudgetMs": 72057, + "teardownMs": 2253 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-wxdifx1hdq-c11-store-mvwxdih7" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c11", + "name": "lfs527-wxdifx1hdq-c11-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxdifx1hdq-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-zoCg1G/home/worker/c11.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.056640625, + "grantedAt": "2026-10-31T21:41:00.484Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 298.677, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "127991dc5c1bab2c60d5a2f3445e651295a1d38ebd29cb407c63e8b988822ccfed", + "commit": { + "id": "127991dc5c1bab2c60d5a2f3445e651295a1d38ebd29cb407c63e8b988822ccfed", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32bd8e9d3c52c59de61b1ea92a33a48428145fc099d30e56106e525f9b1e1fcb8a", + "root": "eff7345223a4b9d9cc4316f6a8f11bb07175e8a57e2131a372fa44d81d92e3ba", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793482859935, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 6.636, + "exec": { + "wallMs": 189.663, + "exitCode": 0, + "stdout": "LFS527 0 1793482860056138551 1793482860218107177\n", + "stderr": "", + "rc": 0, + "ms": 161.968626 + }, + "unmountMs": 16.047, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 13.917, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxdifx1hdq-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 168.781, + "exitCode": 0, + "stdout": "LFS527 0 1793482860284226010 1793482860435205968\n", + "stderr": "", + "rc": 0, + "ms": 150.979958 + }, + "commitMs": 162.487, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "127991dc5c1bab2c60d5a2f3445e651295a1d38ebd29cb407c63e8b988822ccfed", + "root": "eff7345223a4b9d9cc4316f6a8f11bb07175e8a57e2131a372fa44d81d92e3ba", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 17.261, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.349, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.891, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 8065.683, + "ok": true + }, + { + "name": "setup.mount", + "ms": 73.705, + "ok": true + }, + { + "name": "setup.exec", + "ms": 298.671, + "ok": true + }, + { + "name": "setup.commit", + "ms": 480.322, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 27.544, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.632, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 189.659, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 16.041, + "ok": true + }, + { + "name": "timed.mount", + "ms": 13.901, + "ok": true + }, + { + "name": "timed.exec", + "ms": 168.778, + "ok": true + }, + { + "name": "timed.commit", + "ms": 162.484, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 17.256, + "ok": true + }, + { + "name": "verify.mount", + "ms": 8.853, + "ok": true + }, + { + "name": "verify.identity", + "ms": 54.307, + "ok": true + }, + { + "name": "verify.exec", + "ms": 315.359, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 31.074, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 2757.386, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32bd8e9d3c52c59de61b1ea92a33a48428145fc099d30e56106e525f9b1e1fcb8a", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 15.047, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.056640625, + "grantedAt": "2026-10-31T21:41:00.484Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 13.917, + "execWallMs": 168.781, + "commandMs": 150.979958, + "commitMs": 162.487, + "commitKind": "UpToDate", + "unmountMs": 17.261 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:41:06.273Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C12-2026-10-31T214109810Z-wxe71u1hzz.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C12-2026-10-31T214109810Z-wxe71u1hzz.json new file mode 100644 index 000000000..9a7c4fe5f --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-apple-container-C12-2026-10-31T214109810Z-wxe71u1hzz.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wxe71u1hzz-", + "startedAt": "2026-10-31T21:41:09.810Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.681640625, + "end": 9.0498046875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-H2UK6l", + "initMs": 10877, + "volume": "lfs527-wxe71u1hzz-c12-store-mvwxe731", + "vm": { + "project": "c12", + "name": "lfs527-wxe71u1hzz-c12-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-H2UK6l/home", + "store": "lfs527-wxe71u1hzz-c12-vm-store", + "created": "2026-10-31T21:41:10Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56087 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 11021, + "cellBudgetMs": 73943, + "teardownMs": 1124 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-wxe71u1hzz-c12-store-mvwxe731" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c12", + "name": "lfs527-wxe71u1hzz-c12-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxe71u1hzz-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-H2UK6l/home/worker/c12.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.0498046875, + "grantedAt": "2026-10-31T21:41:26.197Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 11.962, + "exec": { + "wallMs": 264.225, + "exitCode": 0, + "stdout": "LFS527 0 1793482885593137382 1793482885837471965\n", + "stderr": "", + "rc": 0, + "ms": 244.334583 + }, + "unmountMs": 9.994, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.252, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxe71u1hzz-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 193.422, + "exitCode": 0, + "stdout": "LFS527 0 1793482885889299924 1793482886054485465\n", + "stderr": "", + "rc": 0, + "ms": 165.185541 + }, + "commitMs": 50.819, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1222a095b7f9b01c07099c0c97b3243f86f10b1dcee0c80ff98485bd29691b686e", + "commit": { + "id": "1222a095b7f9b01c07099c0c97b3243f86f10b1dcee0c80ff98485bd29691b686e", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32073220b4b755a57e4930ecc072eed55bdde7865c6f80bc15cc0d24e63fca75d8", + "root": "3b12b832ea4880679831540c97002fafb0aa48f846015542ab21d2de3f6ee233", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793482886098, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26830, + "newMetadata": 6521, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 5.988, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.934, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.421, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4974.016, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 11.958, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 264.22, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 9.99, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.25, + "ok": true + }, + { + "name": "timed.exec", + "ms": 193.419, + "ok": true + }, + { + "name": "timed.commit", + "ms": 50.815, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 5.985, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.42, + "ok": true + }, + { + "name": "verify.identity", + "ms": 28.499, + "ok": true + }, + { + "name": "verify.exec", + "ms": 71.497, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.369, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 951.789, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32073220b4b755a57e4930ecc072eed55bdde7865c6f80bc15cc0d24e63fca75d8", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 6.552, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.0498046875, + "grantedAt": "2026-10-31T21:41:26.197Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.252, + "execWallMs": 193.422, + "commandMs": 165.185541, + "commitMs": 50.819, + "commitKind": "Committed", + "unmountMs": 5.988 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:41:28.646Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C01-2026-10-31T213412344Z-wx58xk13lu.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C01-2026-10-31T213412344Z-wx58xk13lu.json new file mode 100644 index 000000000..fb181d3b0 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C01-2026-10-31T213412344Z-wx58xk13lu.json @@ -0,0 +1,344 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wx58xk13lu-", + "startedAt": "2026-10-31T21:34:12.344Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 4.39892578125, + "end": 4.974609375 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wx58xk13lu" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-a2wbim", + "initMs": 35627, + "volume": "lfs527-wx58xk13lu-c01-store-mvwx58yn", + "vm": { + "project": "c01", + "name": "lfs527-wx58xk13lu-c01-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-a2wbim/home", + "store": "lfs527-wx58xk13lu-c01-vm-store", + "created": "2026-10-31T21:34:12.531Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55082 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 35924, + "cellBudgetMs": 49025, + "teardownMs": 10354 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-wx58xk13lu-c01-store-mvwx58yn" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c01", + "name": "lfs527-wx58xk13lu-c01-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx58xk13lu-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-a2wbim/home/worker/c01.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 5.7841796875, + "grantedAt": "2026-10-31T21:35:00.897Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 47.969, + "exec": { + "wallMs": 839.716, + "exitCode": 0, + "stdout": "LFS527 0 1793482500078770646 1793482500733021979\n", + "stderr": "", + "rc": 0, + "ms": 654.251333 + }, + "unmountMs": 12.908, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 8.332, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wx58xk13lu-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 643.6, + "exitCode": 0, + "stdout": "LFS527 0 1793482500810750604 1793482501406750021\n", + "stderr": "", + "rc": 0, + "ms": 595.999417 + }, + "commitMs": 120.235, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12714220424ed048f16321b5b09ac0b525a8e2c74bd3f0aabdaf2c67a126eccdfe", + "commit": { + "id": "12714220424ed048f16321b5b09ac0b525a8e2c74bd3f0aabdaf2c67a126eccdfe", + "branch": null, + "parent": null, + "secondParent": null, + "base": "323214e5baf85ec948fca2b8c652cfebd2567b823343a18bcd8328e21a00d07423", + "root": "14fa81c6bf7faad53b5a52a939b150693a04b625463e98f7f55f6ac6a6d6d3cb", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793482501518, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.277, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 16.829, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.08, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 11594.614, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 47.962, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 839.711, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.905, + "ok": true + }, + { + "name": "timed.mount", + "ms": 8.33, + "ok": true + }, + { + "name": "timed.exec", + "ms": 643.596, + "ok": true + }, + { + "name": "timed.commit", + "ms": 120.232, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.274, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.481, + "ok": true + }, + { + "name": "verify.identity", + "ms": 138.822, + "ok": true + }, + { + "name": "verify.exec", + "ms": 993.055, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.067, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 250.736, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "323214e5baf85ec948fca2b8c652cfebd2567b823343a18bcd8328e21a00d07423", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.197, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 5.7841796875, + "grantedAt": "2026-10-31T21:35:00.897Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 8.332, + "execWallMs": 643.6, + "commandMs": 595.999417, + "commitMs": 120.235, + "commitKind": "Committed", + "unmountMs": 7.277 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:35:13.431Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C02-2026-10-31T213613515Z-wx7uff145d.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C02-2026-10-31T213613515Z-wx7uff145d.json new file mode 100644 index 000000000..080c72789 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C02-2026-10-31T213613515Z-wx7uff145d.json @@ -0,0 +1,344 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wx7uff145d-", + "startedAt": "2026-10-31T21:36:13.515Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 3.6318359375, + "end": 10.25439453125 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wx7uff145d" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-2CLcz0", + "initMs": 48099, + "volume": "lfs527-wx7uff145d-c02-store-mvwx7ugj", + "vm": { + "project": "c02", + "name": "lfs527-wx7uff145d-c02-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-2CLcz0/home", + "store": "lfs527-wx7uff145d-c02-vm-store", + "created": "2026-10-31T21:36:13.675Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55165 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 48409, + "cellBudgetMs": 36541, + "teardownMs": 10607 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-wx7uff145d-c02-store-mvwx7ugj" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c02", + "name": "lfs527-wx7uff145d-c02-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx7uff145d-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-2CLcz0/home/worker/c02.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1120, + "load1": 10.38134765625, + "grantedAt": "2026-10-31T21:37:20.922Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 19.576, + "exec": { + "wallMs": 2510.422, + "exitCode": 0, + "stdout": "LFS527 0 1793482637901384237 1793482640213894363\n", + "stderr": "", + "rc": 0, + "ms": 2312.510126 + }, + "unmountMs": 21.969, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 20.538, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wx7uff145d-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 2083.832, + "exitCode": 0, + "stdout": "LFS527 0 1793482641468858072 1793482643516476614\n", + "stderr": "", + "rc": 0, + "ms": 2047.618542 + }, + "commitMs": 124.004, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12b584ec948ffc3489ba69a3b278da108faec5114177a203f23770b1a9469a58a8", + "commit": { + "id": "12b584ec948ffc3489ba69a3b278da108faec5114177a203f23770b1a9469a58a8", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32d52951da339a8e8901ac6e6a0f4d6d2327d55d594f84a72725733f545af0c728", + "root": "5e63154d6c863682274d0c894653be68adc5bee967204af89b13c44522c2e740", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793482643627, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.497, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.899, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.656, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15198.712, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 19.571, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 2510.416, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 21.965, + "ok": true + }, + { + "name": "timed.mount", + "ms": 20.535, + "ok": true + }, + { + "name": "timed.exec", + "ms": 2083.829, + "ok": true + }, + { + "name": "timed.commit", + "ms": 124, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.493, + "ok": true + }, + { + "name": "verify.mount", + "ms": 7.817, + "ok": true + }, + { + "name": "verify.identity", + "ms": 107.065, + "ok": true + }, + { + "name": "verify.exec", + "ms": 1632.241, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.299, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 315.069, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32d52951da339a8e8901ac6e6a0f4d6d2327d55d594f84a72725733f545af0c728", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1123.096, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1120, + "load1": 10.38134765625, + "grantedAt": "2026-10-31T21:37:20.922Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 20.538, + "execWallMs": 2083.832, + "commandMs": 2047.618542, + "commitMs": 124.004, + "commitKind": "Committed", + "unmountMs": 8.497 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:35.847Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C03-2026-10-31T213743998Z-wx9s8u1718.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C03-2026-10-31T213743998Z-wx9s8u1718.json new file mode 100644 index 000000000..e2abb41a1 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C03-2026-10-31T213743998Z-wx9s8u1718.json @@ -0,0 +1,325 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wx9s8u1718-", + "startedAt": "2026-10-31T21:37:43.998Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.13232421875, + "end": 6.82373046875 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wx9s8u1718" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-IqbHH3", + "initMs": 43102, + "volume": "lfs527-wx9s8u1718-c03-store-mvwx9say", + "vm": { + "project": "c03", + "name": "lfs527-wx9s8u1718-c03-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-IqbHH3/home", + "store": "lfs527-wx9s8u1718-c03-vm-store", + "created": "2026-10-31T21:37:45.602Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55558 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 43407, + "cellBudgetMs": 41522, + "teardownMs": 10285 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-wx9s8u1718-c03-store-mvwx9say" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c03", + "name": "lfs527-wx9s8u1718-c03-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx9s8u1718-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-IqbHH3/home/worker/c03.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 854, + "load1": 7.1455078125, + "grantedAt": "2026-10-31T21:38:52.838Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 32.267, + "exec": { + "wallMs": 1520.463, + "exitCode": 0, + "stdout": "LFS527 0 1793482730801491027 1793482732216274070\n", + "stderr": "", + "rc": 0, + "ms": 1414.783043 + }, + "unmountMs": 114.93, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 11.197, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wx9s8u1718-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 1205.895, + "exitCode": 0, + "stdout": "LFS527 0 1793482733279165112 1793482734452689237\n", + "stderr": "", + "rc": 0, + "ms": 1173.524125 + }, + "commitMs": 17.153, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "58166dd7da1bc48b339b9fae94d45436e5a6961d00c79e82012f4ee27f03237b", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.617, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 11.346, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.888, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 22731.284, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 32.262, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1520.458, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 114.927, + "ok": true + }, + { + "name": "timed.mount", + "ms": 11.194, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1205.892, + "ok": true + }, + { + "name": "timed.commit", + "ms": 17.15, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.615, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.18, + "ok": true + }, + { + "name": "verify.identity", + "ms": 114.98, + "ok": true + }, + { + "name": "verify.exec", + "ms": 95.047, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.015, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 435.24, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "320d9f10bd60e0e07e24c163382a60f6716c1410fa08c03f71f9e8cb05b390c2a1", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 893.553, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 854, + "load1": 7.1455078125, + "grantedAt": "2026-10-31T21:38:52.838Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 11.197, + "execWallMs": 1205.895, + "commandMs": 1173.524125, + "commitMs": 17.153, + "commitKind": "UpToDate", + "unmountMs": 4.617 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:05.026Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C04-2026-10-31T213908341Z-wxblbp1f08.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C04-2026-10-31T213908341Z-wxblbp1f08.json new file mode 100644 index 000000000..320991f23 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C04-2026-10-31T213908341Z-wxblbp1f08.json @@ -0,0 +1,344 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wxblbp1f08-", + "startedAt": "2026-10-31T21:39:08.341Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.82373046875, + "end": 7.5029296875 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wxblbp1f08" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-H7Tl6u", + "initMs": 41764, + "volume": "lfs527-wxblbp1f08-c04-store-mvwxblci", + "vm": { + "project": "c04", + "name": "lfs527-wxblbp1f08-c04-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-H7Tl6u/home", + "store": "lfs527-wxblbp1f08-c04-vm-store", + "created": "2026-10-31T21:39:08.542Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55762 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 42057, + "cellBudgetMs": 42901, + "teardownMs": 10436 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-wxblbp1f08-c04-store-mvwxblci" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c04", + "name": "lfs527-wxblbp1f08-c04-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxblbp1f08-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-H7Tl6u/home/worker/c04.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.21923828125, + "grantedAt": "2026-10-31T21:40:14.004Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 33.283, + "exec": { + "wallMs": 1942.102, + "exitCode": 0, + "stdout": "LFS527 0 1793482811855555486 1793482813707306487\n", + "stderr": "", + "rc": 0, + "ms": 1851.751001 + }, + "unmountMs": 18.541, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.895, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxblbp1f08-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 1772.072, + "exitCode": 0, + "stdout": "LFS527 0 1793482813792812904 1793482815521474488\n", + "stderr": "", + "rc": 0, + "ms": 1728.661584 + }, + "commitMs": 123.108, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "123c58fe272d282ca26140474521a5c61d038889c51b44eaa90ab23e91fd073dc2", + "commit": { + "id": "123c58fe272d282ca26140474521a5c61d038889c51b44eaa90ab23e91fd073dc2", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32e5ce18200e5efef4867340881b61c129b1eaf3f94f628d5e6df83c743dcacaf0", + "root": "53e1646852bd6c21a571401b012f753f3bde26d545d514fcf563edda9ae76784", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793482815638, + "logical": 0, + "newCanonical": 109367, + "newStored": 8235, + "newMetadata": 8235, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 5.5, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.715, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.201, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 21488.375, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 33.279, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1942.097, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 18.538, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.892, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1772.069, + "ok": true + }, + { + "name": "timed.commit", + "ms": 123.104, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 5.498, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.694, + "ok": true + }, + { + "name": "verify.identity", + "ms": 174.281, + "ok": true + }, + { + "name": "verify.exec", + "ms": 783.197, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 15.848, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 256.525, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32e5ce18200e5efef4867340881b61c129b1eaf3f94f628d5e6df83c743dcacaf0", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 3.032, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.21923828125, + "grantedAt": "2026-10-31T21:40:14.004Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.895, + "execWallMs": 1772.072, + "commandMs": 1728.661584, + "commitMs": 123.108, + "commitKind": "Committed", + "unmountMs": 5.5 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:40:27.596Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C05-2026-10-31T214031655Z-wxddlz1h81.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C05-2026-10-31T214031655Z-wxddlz1h81.json new file mode 100644 index 000000000..501e034ae --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C05-2026-10-31T214031655Z-wxddlz1h81.json @@ -0,0 +1,344 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wxddlz1h81-", + "startedAt": "2026-10-31T21:40:31.655Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.38232421875, + "end": 9.46923828125 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wxddlz1h81" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-OUu7Gm", + "initMs": 47621, + "volume": "lfs527-wxddlz1h81-c05-store-mvwxddmv", + "vm": { + "project": "c05", + "name": "lfs527-wxddlz1h81-c05-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-OUu7Gm/home", + "store": "lfs527-wxddlz1h81-c05-vm-store", + "created": "2026-10-31T21:40:32.425Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56020 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 47905, + "cellBudgetMs": 37052, + "teardownMs": 10442 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-wxddlz1h81-c05-store-mvwxddmv" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c05", + "name": "lfs527-wxddlz1h81-c05-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxddlz1h81-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-OUu7Gm/home/worker/c05.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 9.8486328125, + "grantedAt": "2026-10-31T21:41:37.845Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 47.914, + "exec": { + "wallMs": 2517.855, + "exitCode": 0, + "stdout": "LFS527 0 1793482895184780027 1793482897596087612\n", + "stderr": "", + "rc": 0, + "ms": 2411.307585 + }, + "unmountMs": 11.89, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.139, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxddlz1h81-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 2247.188, + "exitCode": 0, + "stdout": "LFS527 0 1793482897717106779 1793482899876423030\n", + "stderr": "", + "rc": 0, + "ms": 2159.316251 + }, + "commitMs": 125.11, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12b3e3d3010aba325a49a4705550a01d33bd723928231b2bb51fdb401d11ae3c12", + "commit": { + "id": "12b3e3d3010aba325a49a4705550a01d33bd723928231b2bb51fdb401d11ae3c12", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3224ef6bb889638c210d936932a1859cb3bfcf518bcd6953151fea7ad4591ade8c", + "root": "7f5a9a73201c854c431708a05246f65e187a0bcbf908b44d9b83fc624149687e", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793482899993, + "logical": 0, + "newCanonical": 109367, + "newStored": 8267, + "newMetadata": 8267, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.116, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.821, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.472, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15583.485, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 47.91, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 2517.85, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 11.886, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.135, + "ok": true + }, + { + "name": "timed.exec", + "ms": 2247.184, + "ok": true + }, + { + "name": "timed.commit", + "ms": 125.107, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.113, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.628, + "ok": true + }, + { + "name": "verify.identity", + "ms": 92.216, + "ok": true + }, + { + "name": "verify.exec", + "ms": 612.172, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.171, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 250.503, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3224ef6bb889638c210d936932a1859cb3bfcf518bcd6953151fea7ad4591ade8c", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 7.777, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 9.8486328125, + "grantedAt": "2026-10-31T21:41:37.845Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.139, + "execWallMs": 2247.188, + "commandMs": 2159.316251, + "commitMs": 125.11, + "commitKind": "Committed", + "unmountMs": 8.116 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:41:51.651Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C06-2026-10-31T214154832Z-wxf5sg1it1.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C06-2026-10-31T214154832Z-wxf5sg1it1.json new file mode 100644 index 000000000..cb0b508d7 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C06-2026-10-31T214154832Z-wxf5sg1it1.json @@ -0,0 +1,344 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wxf5sg1it1-", + "startedAt": "2026-10-31T21:41:54.832Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.751953125, + "end": 11.34130859375 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wxf5sg1it1" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-SJfgQa", + "initMs": 43636, + "volume": "lfs527-wxf5sg1it1-c06-store-mvwxf5t8", + "vm": { + "project": "c06", + "name": "lfs527-wxf5sg1it1-c06-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-SJfgQa/home", + "store": "lfs527-wxf5sg1it1-c06-vm-store", + "created": "2026-10-31T21:41:55.165Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56236 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 43940, + "cellBudgetMs": 41032, + "teardownMs": 10416 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-wxf5sg1it1-c06-store-mvwxf5t8" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c06", + "name": "lfs527-wxf5sg1it1-c06-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxf5sg1it1-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-SJfgQa/home/worker/c06.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 12.25390625, + "grantedAt": "2026-10-31T21:42:51.656Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 26.647, + "exec": { + "wallMs": 547.411, + "exitCode": 0, + "stdout": "LFS527 0 1793482971293914108 1793482971723520608\n", + "stderr": "", + "rc": 0, + "ms": 429.6065 + }, + "unmountMs": 41.927, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 24.053, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxf5sg1it1-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 441.901, + "exitCode": 0, + "stdout": "LFS527 0 1793482971880576524 1793482972240035358\n", + "stderr": "", + "rc": 0, + "ms": 359.458834 + }, + "commitMs": 514.806, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12158df8f7fdf972a0eb6c4591c74c50ec717cb2947819a8dcf9694b14544a32ac", + "commit": { + "id": "12158df8f7fdf972a0eb6c4591c74c50ec717cb2947819a8dcf9694b14544a32ac", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3200ceb9026e79e4cb1b734cdd2e39628b171f7e0a433893397c4dc559d3bac81e", + "root": "27ae6c4a41ef674799975a8b0d711553dec6681de66720a7963ba84c348089b6", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793482972677, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 26.012, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.499, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.718, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 12168.342, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 26.642, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 547.406, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 41.924, + "ok": true + }, + { + "name": "timed.mount", + "ms": 24.05, + "ok": true + }, + { + "name": "timed.exec", + "ms": 441.898, + "ok": true + }, + { + "name": "timed.commit", + "ms": 514.803, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 26.008, + "ok": true + }, + { + "name": "verify.mount", + "ms": 10.549, + "ok": true + }, + { + "name": "verify.identity", + "ms": 183.139, + "ok": true + }, + { + "name": "verify.exec", + "ms": 623.938, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 13.242, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 73.209, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3200ceb9026e79e4cb1b734cdd2e39628b171f7e0a433893397c4dc559d3bac81e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 2.016, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 12.25390625, + "grantedAt": "2026-10-31T21:42:51.656Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 24.053, + "execWallMs": 441.901, + "commandMs": 359.458834, + "commitMs": 514.806, + "commitKind": "Committed", + "unmountMs": 26.012 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:43:03.989Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C07-2026-10-31T214307963Z-wxgq7v1k50.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C07-2026-10-31T214307963Z-wxgq7v1k50.json new file mode 100644 index 000000000..7a7108c8a --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C07-2026-10-31T214307963Z-wxgq7v1k50.json @@ -0,0 +1,344 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wxgq7v1k50-", + "startedAt": "2026-10-31T21:43:07.963Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 11.34130859375, + "end": 10.76220703125 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wxgq7v1k50" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-bZZiGQ", + "initMs": 43454, + "volume": "lfs527-wxgq7v1k50-c07-store-mvwxgq9a", + "vm": { + "project": "c07", + "name": "lfs527-wxgq7v1k50-c07-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-bZZiGQ/home", + "store": "lfs527-wxgq7v1k50-c07-vm-store", + "created": "2026-10-31T21:43:10.078Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56570 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 43793, + "cellBudgetMs": 41176, + "teardownMs": 10384 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-wxgq7v1k50-c07-store-mvwxgq9a" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c07", + "name": "lfs527-wxgq7v1k50-c07-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxgq7v1k50-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-bZZiGQ/home/worker/c07.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.787109375, + "grantedAt": "2026-10-31T21:44:08.238Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 26.477, + "exec": { + "wallMs": 896.139, + "exitCode": 0, + "stdout": "LFS527 0 1793483047361797816 1793483048119162442\n", + "stderr": "", + "rc": 0, + "ms": 757.364626 + }, + "unmountMs": 32.929, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 14.202, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxgq7v1k50-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 770.38, + "exitCode": 0, + "stdout": "LFS527 0 1793483048309381358 1793483048988948525\n", + "stderr": "", + "rc": 0, + "ms": 679.567167 + }, + "commitMs": 784.623, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a74ddcce962a9c95d38e471e107bbaa15f6f638f97f464cbe242ac91dbd90634", + "commit": { + "id": "12a74ddcce962a9c95d38e471e107bbaa15f6f638f97f464cbe242ac91dbd90634", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32c05324b0bb2dbe1d2c94acfb791611cdc552a9871795796413644a5add5942e0", + "root": "243832faacfa0c446cfc7c136776833aa91823819e4789d6e457fc2321f5b3ca", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793483049656, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 34.135, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 13.011, + "ok": true + }, + { + "name": "branch.fork", + "ms": 4.185, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 15416.091, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 26.473, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 896.133, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 32.926, + "ok": true + }, + { + "name": "timed.mount", + "ms": 14.2, + "ok": true + }, + { + "name": "timed.exec", + "ms": 770.377, + "ok": true + }, + { + "name": "timed.commit", + "ms": 784.62, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 34.132, + "ok": true + }, + { + "name": "verify.mount", + "ms": 10.848, + "ok": true + }, + { + "name": "verify.identity", + "ms": 1360.656, + "ok": true + }, + { + "name": "verify.exec", + "ms": 1126.051, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 11.904, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 162.873, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32c05324b0bb2dbe1d2c94acfb791611cdc552a9871795796413644a5add5942e0", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 2.799, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.787109375, + "grantedAt": "2026-10-31T21:44:08.238Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 14.202, + "execWallMs": 770.38, + "commandMs": 679.567167, + "commitMs": 784.623, + "commitKind": "Committed", + "unmountMs": 34.135 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:44:22.903Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C08-2026-10-31T214426248Z-wxiemg1l8n.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C08-2026-10-31T214426248Z-wxiemg1l8n.json new file mode 100644 index 000000000..f3380159e --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C08-2026-10-31T214426248Z-wxiemg1l8n.json @@ -0,0 +1,344 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wxiemg1l8n-", + "startedAt": "2026-10-31T21:44:26.248Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.14013671875, + "end": 8.8515625 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wxiemg1l8n" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-x5btwv", + "initMs": 41139, + "volume": "lfs527-wxiemg1l8n-c08-store-mvwxien7", + "vm": { + "project": "c08", + "name": "lfs527-wxiemg1l8n-c08-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-x5btwv/home", + "store": "lfs527-wxiemg1l8n-c08-vm-store", + "created": "2026-10-31T21:44:26.392Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56753 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 41419, + "cellBudgetMs": 43550, + "teardownMs": 11266 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-wxiemg1l8n-c08-store-mvwxien7" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c08", + "name": "lfs527-wxiemg1l8n-c08-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxiemg1l8n-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-x5btwv/home/worker/c08.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 9, + "load1": 10.16064453125, + "grantedAt": "2026-10-31T21:45:23.208Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 37.984, + "exec": { + "wallMs": 878.465, + "exitCode": 0, + "stdout": "LFS527 0 1793483122235949358 1793483122923455900\n", + "stderr": "", + "rc": 0, + "ms": 687.506542 + }, + "unmountMs": 76.392, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 53.175, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxiemg1l8n-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 896.457, + "exitCode": 0, + "stdout": "LFS527 0 1793483123403430442 1793483123977061525\n", + "stderr": "", + "rc": 0, + "ms": 573.631083 + }, + "commitMs": 523.401, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1210e13bf4611849437907042d52a5f1ce262988113112c50a796db0688fcf2b80", + "commit": { + "id": "1210e13bf4611849437907042d52a5f1ce262988113112c50a796db0688fcf2b80", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32b5112afd07cae1dd9784b0f673aff086699b681ac5b7987f1c7bf911be5b0bc5", + "root": "db15c3bda7ae2ed9b584a2ad4853de17e399d0da007301721b00d2ddbeb61a64", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793483124468, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 31.322, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 10.796, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.313, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 14382.883, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 37.98, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 878.46, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 76.387, + "ok": true + }, + { + "name": "timed.mount", + "ms": 53.172, + "ok": true + }, + { + "name": "timed.exec", + "ms": 896.448, + "ok": true + }, + { + "name": "timed.commit", + "ms": 523.397, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 31.318, + "ok": true + }, + { + "name": "verify.mount", + "ms": 18.217, + "ok": true + }, + { + "name": "verify.identity", + "ms": 173.359, + "ok": true + }, + { + "name": "verify.exec", + "ms": 1122.882, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 16.338, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 48.092, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32b5112afd07cae1dd9784b0f673aff086699b681ac5b7987f1c7bf911be5b0bc5", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 68.289, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 9, + "load1": 10.16064453125, + "grantedAt": "2026-10-31T21:45:23.208Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 53.175, + "execWallMs": 896.457, + "commandMs": 573.631083, + "commitMs": 523.401, + "commitKind": "Committed", + "unmountMs": 31.322 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:45:37.395Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C09-2026-10-31T214540863Z-wxk0731mms.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C09-2026-10-31T214540863Z-wxk0731mms.json new file mode 100644 index 000000000..0ad90a232 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C09-2026-10-31T214540863Z-wxk0731mms.json @@ -0,0 +1,386 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wxk0731mms-", + "startedAt": "2026-10-31T21:45:40.863Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.86328125, + "end": 7.1591796875 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wxk0731mms" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-6PTinZ", + "initMs": 36396, + "volume": "lfs527-wxk0731mms-c09-store-mvwxk07x", + "vm": { + "project": "c09", + "name": "lfs527-wxk0731mms-c09-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-6PTinZ/home", + "store": "lfs527-wxk0731mms-c09-vm-store", + "created": "2026-10-31T21:45:41.064Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56907 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 36697, + "cellBudgetMs": 48270, + "teardownMs": 10281 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-wxk0731mms-c09-store-mvwxk07x" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c09", + "name": "lfs527-wxk0731mms-c09-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxk0731mms-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-6PTinZ/home/worker/c09.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.08935546875, + "grantedAt": "2026-10-31T21:46:29.731Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 356.136, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12ce5c6c68153fff16bb46e056e92a86c625dc11a4f5737b14cdfd9e307df65448", + "commit": { + "id": "12ce5c6c68153fff16bb46e056e92a86c625dc11a4f5737b14cdfd9e307df65448", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32c1842b0c3311693202b7a8cfa2670d13aa682c393fa1808aa80252ef4c0f28b0", + "root": "502857d99942248e005a408cb076ced5980099f074094d937f5d7c9b8b6842c9", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793483189374, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 11.759, + "exec": { + "wallMs": 232.563, + "exitCode": 0, + "stdout": "LFS527 0 1793483189572579063 1793483189715721688\n", + "stderr": "", + "rc": 0, + "ms": 143.142625 + }, + "unmountMs": 9.541, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 17.004, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxk0731mms-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 152.118, + "exitCode": 0, + "stdout": "LFS527 0 1793483189785180188 1793483189898394563\n", + "stderr": "", + "rc": 0, + "ms": 113.214375 + }, + "commitMs": 3.211, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12ce5c6c68153fff16bb46e056e92a86c625dc11a4f5737b14cdfd9e307df65448", + "root": "502857d99942248e005a408cb076ced5980099f074094d937f5d7c9b8b6842c9", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 6.973, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 14.058, + "ok": true + }, + { + "name": "branch.fork", + "ms": 4.241, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 10985.483, + "ok": true + }, + { + "name": "setup.mount", + "ms": 56.887, + "ok": true + }, + { + "name": "setup.exec", + "ms": 356.131, + "ok": true + }, + { + "name": "setup.commit", + "ms": 371.21, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 28.734, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 11.756, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 232.559, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 9.538, + "ok": true + }, + { + "name": "timed.mount", + "ms": 17, + "ok": true + }, + { + "name": "timed.exec", + "ms": 152.115, + "ok": true + }, + { + "name": "timed.commit", + "ms": 3.209, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 6.969, + "ok": true + }, + { + "name": "verify.mount", + "ms": 13.645, + "ok": true + }, + { + "name": "verify.identity", + "ms": 104.78, + "ok": true + }, + { + "name": "verify.exec", + "ms": 615.101, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 18.61, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 293.774, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32c1842b0c3311693202b7a8cfa2670d13aa682c393fa1808aa80252ef4c0f28b0", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.374, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.08935546875, + "grantedAt": "2026-10-31T21:46:29.731Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 17.004, + "execWallMs": 152.118, + "commandMs": 113.214375, + "commitMs": 3.211, + "commitKind": "UpToDate", + "unmountMs": 6.973 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:46:41.241Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C10-2026-10-31T214644675Z-wxldfn1nqb.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C10-2026-10-31T214644675Z-wxldfn1nqb.json new file mode 100644 index 000000000..be5026674 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C10-2026-10-31T214644675Z-wxldfn1nqb.json @@ -0,0 +1,405 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wxldfn1nqb-", + "startedAt": "2026-10-31T21:46:44.675Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.82568359375, + "end": 8.55029296875 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wxldfn1nqb" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-aHeNyY", + "initMs": 36754, + "volume": "lfs527-wxldfn1nqb-c10-store-mvwxldgg", + "vm": { + "project": "c10", + "name": "lfs527-wxldfn1nqb-c10-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-aHeNyY/home", + "store": "lfs527-wxldfn1nqb-c10-vm-store", + "created": "2026-10-31T21:46:44.849Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57062 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 37044, + "cellBudgetMs": 47928, + "teardownMs": 10249 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-wxldfn1nqb-c10-store-mvwxldgg" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c10", + "name": "lfs527-wxldfn1nqb-c10-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxldfn1nqb-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-aHeNyY/home/worker/c10.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.0302734375, + "grantedAt": "2026-10-31T21:47:32.844Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 344.024, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e27221e86fda624b0908fe7ed37628ebf0df74de32664dbcfbc1782ddb3fdea6", + "commit": { + "id": "12e27221e86fda624b0908fe7ed37628ebf0df74de32664dbcfbc1782ddb3fdea6", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32a8595f43268e4194776b768f7ac437afd71c179521033efba8ec0725ac2c68ab", + "root": "15c956f42d05dad83d4d2552e631800a9e65370ecdac27cbc8bf2e0c0ad723c8", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793483252540, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 11.511, + "exec": { + "wallMs": 642.641, + "exitCode": 0, + "stdout": "LFS527 0 1793483252718642021 1793483253281510229\n", + "stderr": "", + "rc": 0, + "ms": 562.868208 + }, + "unmountMs": 19.923, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 17.548, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxldfn1nqb-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 518.413, + "exitCode": 0, + "stdout": "LFS527 0 1793483253392331396 1793483253839915104\n", + "stderr": "", + "rc": 0, + "ms": 447.583708 + }, + "commitMs": 100.054, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12eb23aae5c8f61b584dbe58458d878e0238b8339ca8ea8240a03621f74a65e956", + "commit": { + "id": "12eb23aae5c8f61b584dbe58458d878e0238b8339ca8ea8240a03621f74a65e956", + "branch": null, + "parent": "12e27221e86fda624b0908fe7ed37628ebf0df74de32664dbcfbc1782ddb3fdea6", + "secondParent": null, + "base": "32a8595f43268e4194776b768f7ac437afd71c179521033efba8ec0725ac2c68ab", + "root": "370dc115b833a4bb03bcd476dadde184e0865594dc893b5aaf8d4c6880a1dd3e", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793483253854, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 14.677, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 12.018, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.456, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 9561.077, + "ok": true + }, + { + "name": "setup.mount", + "ms": 26.019, + "ok": true + }, + { + "name": "setup.exec", + "ms": 344.019, + "ok": true + }, + { + "name": "setup.commit", + "ms": 394.626, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 27.507, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 11.508, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 642.638, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 19.92, + "ok": true + }, + { + "name": "timed.mount", + "ms": 17.545, + "ok": true + }, + { + "name": "timed.exec", + "ms": 518.41, + "ok": true + }, + { + "name": "timed.commit", + "ms": 100.05, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 14.672, + "ok": true + }, + { + "name": "verify.mount", + "ms": 15.129, + "ok": true + }, + { + "name": "verify.identity", + "ms": 154.579, + "ok": true + }, + { + "name": "verify.exec", + "ms": 885.477, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 28.993, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 57.764, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32a8595f43268e4194776b768f7ac437afd71c179521033efba8ec0725ac2c68ab", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.138, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.0302734375, + "grantedAt": "2026-10-31T21:47:32.844Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 17.548, + "execWallMs": 518.413, + "commandMs": 447.583708, + "commitMs": 100.054, + "commitKind": "Committed", + "unmountMs": 14.677 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:47:44.890Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C11-2026-10-31T214748671Z-wxmqtb1p2n.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C11-2026-10-31T214748671Z-wxmqtb1p2n.json new file mode 100644 index 000000000..37a227201 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C11-2026-10-31T214748671Z-wxmqtb1p2n.json @@ -0,0 +1,386 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wxmqtb1p2n-", + "startedAt": "2026-10-31T21:47:48.671Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.55029296875, + "end": 7.82373046875 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wxmqtb1p2n" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-hZrfq6", + "initMs": 36775, + "volume": "lfs527-wxmqtb1p2n-c11-store-mvwxmqu9", + "vm": { + "project": "c11", + "name": "lfs527-wxmqtb1p2n-c11-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-hZrfq6/home", + "store": "lfs527-wxmqtb1p2n-c11-vm-store", + "created": "2026-10-31T21:47:48.891Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57347 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 37058, + "cellBudgetMs": 47913, + "teardownMs": 10248 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-wxmqtb1p2n-c11-store-mvwxmqu9" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c11", + "name": "lfs527-wxmqtb1p2n-c11-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxmqtb1p2n-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-hZrfq6/home/worker/c11.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.56494140625, + "grantedAt": "2026-10-31T21:48:37.971Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 325.536, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "128a869596ee18d42482b46a12129a9fc11798b2dc3ed057c184dc684888fc4922", + "commit": { + "id": "128a869596ee18d42482b46a12129a9fc11798b2dc3ed057c184dc684888fc4922", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32bf28a88ca1dae819bb485310ee7a6276dcae63bbfa8af3fc5bb950d31489a269", + "root": "e9ea0205976ff040257ff98d64792b4ea2d4113fe9cc979c95b87382664c76f4", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793483317862, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 11.598, + "exec": { + "wallMs": 415.926, + "exitCode": 0, + "stdout": "LFS527 0 1793483318063325063 1793483318360736313\n", + "stderr": "", + "rc": 0, + "ms": 297.41125 + }, + "unmountMs": 31.001, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 20.762, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxmqtb1p2n-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 272.029, + "exitCode": 0, + "stdout": "LFS527 0 1793483318459949730 1793483318696450272\n", + "stderr": "", + "rc": 0, + "ms": 236.500542 + }, + "commitMs": 150.782, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "128a869596ee18d42482b46a12129a9fc11798b2dc3ed057c184dc684888fc4922", + "root": "e9ea0205976ff040257ff98d64792b4ea2d4113fe9cc979c95b87382664c76f4", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.667, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 11.342, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.503, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 10954.968, + "ok": true + }, + { + "name": "setup.mount", + "ms": 27.902, + "ok": true + }, + { + "name": "setup.exec", + "ms": 325.531, + "ok": true + }, + { + "name": "setup.commit", + "ms": 343.387, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 29.908, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 11.595, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 415.922, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 30.999, + "ok": true + }, + { + "name": "timed.mount", + "ms": 20.759, + "ok": true + }, + { + "name": "timed.exec", + "ms": 272.025, + "ok": true + }, + { + "name": "timed.commit", + "ms": 150.779, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.664, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.249, + "ok": true + }, + { + "name": "verify.identity", + "ms": 116.281, + "ok": true + }, + { + "name": "verify.exec", + "ms": 504.613, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.478, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 26.76, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32bf28a88ca1dae819bb485310ee7a6276dcae63bbfa8af3fc5bb950d31489a269", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.479, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.56494140625, + "grantedAt": "2026-10-31T21:48:37.971Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 20.762, + "execWallMs": 272.029, + "commandMs": 236.500542, + "commitMs": 150.782, + "commitKind": "UpToDate", + "unmountMs": 10.667 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:48:49.341Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C12-2026-10-31T214853062Z-wxo4hy1q2t.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C12-2026-10-31T214853062Z-wxo4hy1q2t.json new file mode 100644 index 000000000..c6ca2e6ae --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-firecracker-C12-2026-10-31T214853062Z-wxo4hy1q2t.json @@ -0,0 +1,344 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-firecracker", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wxo4hy1q2t-", + "startedAt": "2026-10-31T21:48:53.062Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.82373046875, + "end": 6.8193359375 + }, + "constructionWorkers": "1", + "driver": { + "firecracker": { + "lima": "lfs527-vzkvm", + "dir": "/var/lib/lfs527-firecracker", + "stateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-firecracker-state-wxo4hy1q2t" + }, + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-Fthiix", + "initMs": 35602, + "volume": "lfs527-wxo4hy1q2t-c12-store-mvwxo4j4", + "vm": { + "project": "c12", + "name": "lfs527-wxo4hy1q2t-c12-vm", + "state": "running", + "image": "/var/lib/lfs527-firecracker/rootfs.ext4", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-Fthiix/home", + "store": "lfs527-wxo4hy1q2t-c12-vm-store", + "created": "2026-10-31T21:48:53.244Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57471 + }, + "disk": { + "free": 19866648576 + } + }, + "setupMs": 35937, + "cellBudgetMs": 49031, + "teardownMs": 10214 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-wxo4hy1q2t-c12-store-mvwxo4j4" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c12", + "name": "lfs527-wxo4hy1q2t-c12-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "firecracker state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxo4hy1q2t-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-Fthiix/home/worker/c12.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.521484375, + "grantedAt": "2026-10-31T21:49:40.432Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 24.731, + "exec": { + "wallMs": 797.437, + "exitCode": 0, + "stdout": "LFS527 0 1793483380293493770 1793483380937401604\n", + "stderr": "", + "rc": 0, + "ms": 643.907834 + }, + "unmountMs": 12.254, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 8.466, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxo4hy1q2t-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 530.932, + "exitCode": 0, + "stdout": "LFS527 0 1793483381008786312 1793483381496537854\n", + "stderr": "", + "rc": 0, + "ms": 487.751542 + }, + "commitMs": 60.299, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12b18041c38ddb235b64e7a3e3cdc351e310fa5225fdf1278842cbf8d439b88b50", + "commit": { + "id": "12b18041c38ddb235b64e7a3e3cdc351e310fa5225fdf1278842cbf8d439b88b50", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32fea2ff41743dcbfff058eb70b7e1d89b73bc9c9cefc7ad57b9163e0a54dd374b", + "root": "c2e1f6abce276b3595c90c630ce9fd8d57a63e953fa88e5f848f74afe9b83c2d", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793483381553, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26912, + "newMetadata": 6518, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 5.451, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 12.076, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.109, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 10494.629, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 24.727, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 797.432, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.251, + "ok": true + }, + { + "name": "timed.mount", + "ms": 8.464, + "ok": true + }, + { + "name": "timed.exec", + "ms": 530.928, + "ok": true + }, + { + "name": "timed.commit", + "ms": 60.296, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 5.448, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.395, + "ok": true + }, + { + "name": "verify.identity", + "ms": 83.198, + "ok": true + }, + { + "name": "verify.exec", + "ms": 252.288, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.573, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 209.227, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32fea2ff41743dcbfff058eb70b7e1d89b73bc9c9cefc7ad57b9163e0a54dd374b", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.297, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.521484375, + "grantedAt": "2026-10-31T21:49:40.432Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 8.466, + "execWallMs": 530.932, + "commandMs": 487.751542, + "commitMs": 60.299, + "commitKind": "Committed", + "unmountMs": 5.451 + }, + "where": { + "kernel": "Linux 6.18.56+", + "machine": "aarch64", + "cpus": "4", + "memKiB": "2034572", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:49:51.811Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C01-2026-10-31T213613810Z-wx7unm148i.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C01-2026-10-31T213613810Z-wx7unm148i.json new file mode 100644 index 000000000..1f1c624ec --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C01-2026-10-31T213613810Z-wx7unm148i.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wx7unm148i-", + "startedAt": "2026-10-31T21:36:13.810Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 3.8212890625, + "end": 9.65185546875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-cDkT1V", + "initMs": 33329, + "volume": "lfs527-wx7unm148i-c01-store-mvwx7uof", + "vm": { + "project": "c01", + "name": "lfs527-wx7unm148i-c01-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-cDkT1V/home", + "store": "lfs527-wx7unm148i-c01-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55166 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 33631, + "cellBudgetMs": 51208, + "teardownMs": 633 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-wx7unm148i-c01-store-mvwx7uof" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c01", + "name": "lfs527-wx7unm148i-c01-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx7unm148i-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-cDkT1V/home/worker/c01.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.65185546875, + "grantedAt": "2026-10-31T21:36:59.357Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 33.587, + "exec": { + "wallMs": 420.18, + "exitCode": 0, + "stdout": "LFS527 0 1793482619014240852 1793482619334310977\n", + "stderr": "", + "rc": 0, + "ms": 320.070125 + }, + "unmountMs": 8.471, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wx7unm148i-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 287.688, + "exitCode": 0, + "stdout": "LFS527 0 1793482619398479102 1793482619671159269\n", + "stderr": "", + "rc": 0, + "ms": 272.680167 + }, + "commitMs": 100.121, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12aec94d9a9c3c7502de227289c973b1fc1a0e4bd4385b8ba2cf20dabaa1b6fdd0", + "commit": { + "id": "12aec94d9a9c3c7502de227289c973b1fc1a0e4bd4385b8ba2cf20dabaa1b6fdd0", + "branch": null, + "parent": null, + "secondParent": null, + "base": "329c18a2f275f5fac810a17df08862be78451905df94390483c3f6bb51909876df", + "root": "e5991eca4e5c940d806f86662f682f8c9192599867856ab89c21683432151a0f", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793482619761, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 17.255, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.773, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.753, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 11139.517, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 33.581, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 420.166, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.467, + "ok": true + }, + { + "name": "timed.mount", + "ms": 9.997, + "ok": true + }, + { + "name": "timed.exec", + "ms": 287.685, + "ok": true + }, + { + "name": "timed.commit", + "ms": 100.117, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 17.251, + "ok": true + }, + { + "name": "verify.mount", + "ms": 7.038, + "ok": true + }, + { + "name": "verify.identity", + "ms": 32.062, + "ok": true + }, + { + "name": "verify.exec", + "ms": 455.892, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.575, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 318.489, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "329c18a2f275f5fac810a17df08862be78451905df94390483c3f6bb51909876df", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 18.996, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.65185546875, + "grantedAt": "2026-10-31T21:36:59.357Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997928", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10, + "execWallMs": 287.688, + "commandMs": 272.680167, + "commitMs": 100.121, + "commitKind": "Committed", + "unmountMs": 17.255 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997928", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:37:01.236Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C02-2026-10-31T213716315Z-wx96vv15xn.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C02-2026-10-31T213716315Z-wx96vv15xn.json new file mode 100644 index 000000000..a01cd1e62 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C02-2026-10-31T213716315Z-wx96vv15xn.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wx96vv15xn-", + "startedAt": "2026-10-31T21:37:16.315Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.5888671875, + "end": 9.29931640625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-IzNfNr", + "initMs": 37689, + "volume": "lfs527-wx96vv15xn-c02-store-mvwx96wr", + "vm": { + "project": "c02", + "name": "lfs527-wx96vv15xn-c02-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-IzNfNr/home", + "store": "lfs527-wx96vv15xn-c02-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55422 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 37777, + "cellBudgetMs": 47111, + "teardownMs": 513 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-wx96vv15xn-c02-store-mvwx96wr" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c02", + "name": "lfs527-wx96vv15xn-c02-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wx96vv15xn-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-IzNfNr/home/worker/c02.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.29931640625, + "grantedAt": "2026-10-31T21:37:58.868Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 12.492, + "exec": { + "wallMs": 1089.528, + "exitCode": 0, + "stdout": "LFS527 0 1793482677794509808 1793482678856793059\n", + "stderr": "", + "rc": 0, + "ms": 1062.283251 + }, + "unmountMs": 8.519, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.369, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wx96vv15xn-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 1078.101, + "exitCode": 0, + "stdout": "LFS527 0 1793482678885523184 1793482679952043435\n", + "stderr": "", + "rc": 0, + "ms": 1066.520251 + }, + "commitMs": 101.013, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12ad4a2f737c1a58c8088bc6d31b7ad743ef1322fa85058fc1200f20bd0eba654a", + "commit": { + "id": "12ad4a2f737c1a58c8088bc6d31b7ad743ef1322fa85058fc1200f20bd0eba654a", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3246ba45614f7908534e64ece237386516eb1113770aeb1839c67df704778f0a83", + "root": "73897f1c513fcbf6aaad598514dd676b609fdc809f2bc833446a744cdf902b66", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793482680044, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.431, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.591, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.484, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3458.455, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 12.488, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1089.522, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.516, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.366, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1078.099, + "ok": true + }, + { + "name": "timed.commit", + "ms": 101.009, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.428, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.538, + "ok": true + }, + { + "name": "verify.identity", + "ms": 21.973, + "ok": true + }, + { + "name": "verify.exec", + "ms": 459.036, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.08, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 90.339, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3246ba45614f7908534e64ece237386516eb1113770aeb1839c67df704778f0a83", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.749, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.29931640625, + "grantedAt": "2026-10-31T21:37:58.868Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997928", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.369, + "execWallMs": 1078.101, + "commandMs": 1066.520251, + "commitMs": 101.013, + "commitKind": "Committed", + "unmountMs": 7.431 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997928", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:01.162Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C03-2026-10-31T213809573Z-wxabz918cp.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C03-2026-10-31T213809573Z-wxabz918cp.json new file mode 100644 index 000000000..e22e1722e --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C03-2026-10-31T213809573Z-wxabz918cp.json @@ -0,0 +1,316 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wxabz918cp-", + "startedAt": "2026-10-31T21:38:09.573Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.505859375, + "end": 7.1455078125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-4tPiDx", + "initMs": 30639, + "volume": "lfs527-wxabz918cp-c03-store-mvwxac2e", + "vm": { + "project": "c03", + "name": "lfs527-wxabz918cp-c03-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-4tPiDx/home", + "store": "lfs527-wxabz918cp-c03-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55610 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 30821, + "cellBudgetMs": 54114, + "teardownMs": 681 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-wxabz918cp-c03-store-mvwxac2e" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c03", + "name": "lfs527-wxabz918cp-c03-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxabz918cp-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-4tPiDx/home/worker/c03.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1522, + "load1": 7.1455078125, + "grantedAt": "2026-10-31T21:38:50.458Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 16.149, + "exec": { + "wallMs": 604.398, + "exitCode": 0, + "stdout": "LFS527 0 1793482728255035057 1793482728840281349\n", + "stderr": "", + "rc": 0, + "ms": 585.246292 + }, + "unmountMs": 6.67, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 9.483, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxabz918cp-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 670.056, + "exitCode": 0, + "stdout": "LFS527 0 1793482730396553433 1793482731052590892\n", + "stderr": "", + "rc": 0, + "ms": 656.037459 + }, + "commitMs": 24.13, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "425a0e1770a3c436fc072bec82dd53f242ab33381e4bfd211bba178dce5c3be8", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.161, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 8.35, + "ok": true + }, + { + "name": "branch.fork", + "ms": 3.746, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 7642.933, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 16.145, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 604.394, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 6.666, + "ok": true + }, + { + "name": "timed.mount", + "ms": 9.48, + "ok": true + }, + { + "name": "timed.exec", + "ms": 670.052, + "ok": true + }, + { + "name": "timed.commit", + "ms": 24.125, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.158, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.476, + "ok": true + }, + { + "name": "verify.identity", + "ms": 26.966, + "ok": true + }, + { + "name": "verify.exec", + "ms": 13.806, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.05, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1001.489, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3277f5d0724e4553f2a1862381746a4b948ddc255608f047407571d17e2990ea9d", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1526.723, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1522, + "load1": 7.1455078125, + "grantedAt": "2026-10-31T21:38:50.458Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997924", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 9.483, + "execWallMs": 670.056, + "commandMs": 656.037459, + "commitMs": 24.13, + "commitKind": "UpToDate", + "unmountMs": 7.161 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997924", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:38:52.910Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C04-2026-10-31T213853122Z-wxb9ky1cd4.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C04-2026-10-31T213853122Z-wxb9ky1cd4.json new file mode 100644 index 000000000..ee734a20c --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C04-2026-10-31T213853122Z-wxb9ky1cd4.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wxb9ky1cd4-", + "startedAt": "2026-10-31T21:38:53.122Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.1455078125, + "end": 7.4052734375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-qNNSw0", + "initMs": 29304, + "volume": "lfs527-wxb9ky1cd4-c04-store-mvwxb9m0", + "vm": { + "project": "c04", + "name": "lfs527-wxb9ky1cd4-c04-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-qNNSw0/home", + "store": "lfs527-wxb9ky1cd4-c04-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55708 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 29396, + "cellBudgetMs": 55556, + "teardownMs": 1268 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-wxb9ky1cd4-c04-store-mvwxb9m0" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c04", + "name": "lfs527-wxb9ky1cd4-c04-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxb9ky1cd4-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-qNNSw0/home/worker/c04.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 6.83154296875, + "grantedAt": "2026-10-31T21:39:27.758Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 23.773, + "exec": { + "wallMs": 1342.84, + "exitCode": 0, + "stdout": "LFS527 0 1793482766512578097 1793482767693939847\n", + "stderr": "", + "rc": 0, + "ms": 1181.36175 + }, + "unmountMs": 12.844, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 11.172, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxb9ky1cd4-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 1292.564, + "exitCode": 0, + "stdout": "LFS527 0 1793482767744363222 1793482769014706890\n", + "stderr": "", + "rc": 0, + "ms": 1270.343668 + }, + "commitMs": 760.527, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a2d385a5e5647ffdee9d30ddf1bce6d0121bfdfd5543f03e68d483d47c774895", + "commit": { + "id": "12a2d385a5e5647ffdee9d30ddf1bce6d0121bfdfd5543f03e68d483d47c774895", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32cc01e213cbf242f869f5a68bea72976d14da4cd2334c27bb9540fe97a38e9cca", + "root": "6289e726cb31a83bd1b501a62dbb428b3c232667af147ca97681d48f7456b04f", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793482769767, + "logical": 0, + "newCanonical": 109367, + "newStored": 8263, + "newMetadata": 8263, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 24.519, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.37, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.784, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3738.739, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 23.763, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1342.835, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 12.841, + "ok": true + }, + { + "name": "timed.mount", + "ms": 11.169, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1292.559, + "ok": true + }, + { + "name": "timed.commit", + "ms": 760.523, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 24.516, + "ok": true + }, + { + "name": "verify.mount", + "ms": 11.265, + "ok": true + }, + { + "name": "verify.identity", + "ms": 50.753, + "ok": true + }, + { + "name": "verify.exec", + "ms": 509.556, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 20.83, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 730.385, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32cc01e213cbf242f869f5a68bea72976d14da4cd2334c27bb9540fe97a38e9cca", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 7.869, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 6.83154296875, + "grantedAt": "2026-10-31T21:39:27.758Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997924", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 11.172, + "execWallMs": 1292.564, + "commandMs": 1270.343668, + "commitMs": 760.527, + "commitKind": "Committed", + "unmountMs": 24.519 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997924", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:39:32.451Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C05-2026-10-31T213932717Z-wxc44s1fq0.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C05-2026-10-31T213932717Z-wxc44s1fq0.json new file mode 100644 index 000000000..f9fdd626a --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C05-2026-10-31T213932717Z-wxc44s1fq0.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wxc44s1fq0-", + "startedAt": "2026-10-31T21:39:32.717Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.4052734375, + "end": 8.21923828125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-MqyBSE", + "initMs": 35518, + "volume": "lfs527-wxc44s1fq0-c05-store-mvwxc45l", + "vm": { + "project": "c05", + "name": "lfs527-wxc44s1fq0-c05-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-MqyBSE/home", + "store": "lfs527-wxc44s1fq0-c05-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55832 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 35599, + "cellBudgetMs": 49307, + "teardownMs": 344 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-wxc44s1fq0-c05-store-mvwxc45l" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c05", + "name": "lfs527-wxc44s1fq0-c05-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxc44s1fq0-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-MqyBSE/home/worker/c05.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.49951171875, + "grantedAt": "2026-10-31T21:40:12.551Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 14.337, + "exec": { + "wallMs": 772.197, + "exitCode": 0, + "stdout": "LFS527 0 1793482811793537716 1793482812542479675\n", + "stderr": "", + "rc": 0, + "ms": 748.941959 + }, + "unmountMs": 5.553, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.818, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxc44s1fq0-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 779.512, + "exitCode": 0, + "stdout": "LFS527 0 1793482812569283008 1793482813333864925\n", + "stderr": "", + "rc": 0, + "ms": 764.581917 + }, + "commitMs": 104.825, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12ff008de7a477072ab7aa5cb5c057950d5eee7dc5df5fcb443da89de39e787c38", + "commit": { + "id": "12ff008de7a477072ab7aa5cb5c057950d5eee7dc5df5fcb443da89de39e787c38", + "branch": null, + "parent": null, + "secondParent": null, + "base": "321399667715a2f72b600f32ed83217d1839e155a52d3bf656a5e543b791d1a3f4", + "root": "78071fcee181f1b9d669145311a0066c8e62c114743a9eb03d47e4cbb3f0167c", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793482813431, + "logical": 0, + "newCanonical": 109367, + "newStored": 8273, + "newMetadata": 8273, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 6.539, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.667, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.392, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3240.103, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 14.333, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 772.191, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 5.551, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.816, + "ok": true + }, + { + "name": "timed.exec", + "ms": 779.509, + "ok": true + }, + { + "name": "timed.commit", + "ms": 104.821, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 6.535, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.533, + "ok": true + }, + { + "name": "verify.identity", + "ms": 25.29, + "ok": true + }, + { + "name": "verify.exec", + "ms": 222.209, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.94, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 659.377, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "321399667715a2f72b600f32ed83217d1839e155a52d3bf656a5e543b791d1a3f4", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.293, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.49951171875, + "grantedAt": "2026-10-31T21:40:12.551Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997916", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.818, + "execWallMs": 779.512, + "commandMs": 764.581917, + "commitMs": 104.825, + "commitKind": "Committed", + "unmountMs": 6.539 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997916", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:40:14.714Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C06-2026-10-31T214014933Z-wxd0ph1gt0.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C06-2026-10-31T214014933Z-wxd0ph1gt0.json new file mode 100644 index 000000000..c869e1868 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C06-2026-10-31T214014933Z-wxd0ph1gt0.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wxd0ph1gt0-", + "startedAt": "2026-10-31T21:40:14.933Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.21923828125, + "end": 9.1318359375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-zghZ31", + "initMs": 38639, + "volume": "lfs527-wxd0ph1gt0-c06-store-mvwxd0qa", + "vm": { + "project": "c06", + "name": "lfs527-wxd0ph1gt0-c06-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-zghZ31/home", + "store": "lfs527-wxd0ph1gt0-c06-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 55973 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 38986, + "cellBudgetMs": 45700, + "teardownMs": 309 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-wxd0ph1gt0-c06-store-mvwxd0qa" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c06", + "name": "lfs527-wxd0ph1gt0-c06-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxd0ph1gt0-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-zghZ31/home/worker/c06.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.056640625, + "grantedAt": "2026-10-31T21:41:03.052Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 12.28, + "exec": { + "wallMs": 349.338, + "exitCode": 0, + "stdout": "LFS527 0 1793482862700535186 1793482863022814103\n", + "stderr": "", + "rc": 0, + "ms": 322.278917 + }, + "unmountMs": 17.655, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 11.026, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxd0ph1gt0-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 332.598, + "exitCode": 0, + "stdout": "LFS527 0 1793482863189737728 1793482863390550895\n", + "stderr": "", + "rc": 0, + "ms": 200.813167 + }, + "commitMs": 479.043, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a75b144d416b4fbc173e97b954b8cf4b2384334ef3e844501b2731a102070fff", + "commit": { + "id": "12a75b144d416b4fbc173e97b954b8cf4b2384334ef3e844501b2731a102070fff", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3258a9471f314cd001d35e3a59b3d32453d71bbb9f8e34dd49abb9ea4d6c559289", + "root": "c3b1741681a29ebe08e5019484dab5b0617d2b19907b413b811eb1c6dcb7a0cd", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793482863811, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 16.819, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 7.155, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.095, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 8340.827, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 12.276, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 349.333, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 17.653, + "ok": true + }, + { + "name": "timed.mount", + "ms": 11.024, + "ok": true + }, + { + "name": "timed.exec", + "ms": 332.591, + "ok": true + }, + { + "name": "timed.commit", + "ms": 479.04, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 16.816, + "ok": true + }, + { + "name": "verify.mount", + "ms": 14.871, + "ok": true + }, + { + "name": "verify.identity", + "ms": 59.795, + "ok": true + }, + { + "name": "verify.exec", + "ms": 320.527, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 11.772, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 791.724, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3258a9471f314cd001d35e3a59b3d32453d71bbb9f8e34dd49abb9ea4d6c559289", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 6.32, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.056640625, + "grantedAt": "2026-10-31T21:41:03.052Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997928", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 11.026, + "execWallMs": 332.598, + "commandMs": 200.813167, + "commitMs": 479.043, + "commitKind": "Committed", + "unmountMs": 16.819 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997928", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:41:05.405Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C07-2026-10-31T214114792Z-wxeaw81i4t.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C07-2026-10-31T214114792Z-wxeaw81i4t.json new file mode 100644 index 000000000..6abb4a393 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C07-2026-10-31T214114792Z-wxeaw81i4t.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wxeaw81i4t-", + "startedAt": "2026-10-31T21:41:14.792Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.626953125, + "end": 9.8515625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-4pPno5", + "initMs": 37843, + "volume": "lfs527-wxeaw81i4t-c07-store-mvwxeaym", + "vm": { + "project": "c07", + "name": "lfs527-wxeaw81i4t-c07-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-4pPno5/home", + "store": "lfs527-wxeaw81i4t-c07-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56116 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 37965, + "cellBudgetMs": 46961, + "teardownMs": 491 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-wxeaw81i4t-c07-store-mvwxeaym" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c07", + "name": "lfs527-wxeaw81i4t-c07-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxeaw81i4t-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-4pPno5/home/worker/c07.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.751953125, + "grantedAt": "2026-10-31T21:41:56.203Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 15.614, + "exec": { + "wallMs": 421.501, + "exitCode": 0, + "stdout": "LFS527 0 1793482915776393548 1793482916165957049\n", + "stderr": "", + "rc": 0, + "ms": 389.563501 + }, + "unmountMs": 20.252, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.672, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxeaw81i4t-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 433.776, + "exitCode": 0, + "stdout": "LFS527 0 1793482916208261924 1793482916628940465\n", + "stderr": "", + "rc": 0, + "ms": 420.678541 + }, + "commitMs": 674.237, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "127903ffc9f0d1264fab40913d830338613b6127fe457031976d47e4dc4a5fa014", + "commit": { + "id": "127903ffc9f0d1264fab40913d830338613b6127fe457031976d47e4dc4a5fa014", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32e86c79b1a4846e26790d20360e36d07e87705c3057216513397faaa1b9e1f10a", + "root": "f183cb669443ff3a1c079693cc07d057e7aab42f517c71fe7b061431694020cd", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793482917192, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 23.613, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.569, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.429, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 2841.243, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 15.609, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 421.49, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 20.249, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.669, + "ok": true + }, + { + "name": "timed.exec", + "ms": 433.773, + "ok": true + }, + { + "name": "timed.commit", + "ms": 674.234, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 23.61, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.712, + "ok": true + }, + { + "name": "verify.identity", + "ms": 42.335, + "ok": true + }, + { + "name": "verify.exec", + "ms": 681.566, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 13.574, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 439.934, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32e86c79b1a4846e26790d20360e36d07e87705c3057216513397faaa1b9e1f10a", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 2.668, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 9.751953125, + "grantedAt": "2026-10-31T21:41:56.203Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997924", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.672, + "execWallMs": 433.776, + "commandMs": 420.678541, + "commitMs": 674.237, + "commitKind": "Committed", + "unmountMs": 23.613 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997924", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:41:59.032Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C08-2026-10-31T214159356Z-wxf9a41iwz.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C08-2026-10-31T214159356Z-wxf9a41iwz.json new file mode 100644 index 000000000..762d6a7c0 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C08-2026-10-31T214159356Z-wxf9a41iwz.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wxf9a41iwz-", + "startedAt": "2026-10-31T21:41:59.356Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.8515625, + "end": 10.64697265625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-gMTSxj", + "initMs": 30257, + "volume": "lfs527-wxf9a41iwz-c08-store-mvwxf9az", + "vm": { + "project": "c08", + "name": "lfs527-wxf9a41iwz-c08-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-gMTSxj/home", + "store": "lfs527-wxf9a41iwz-c08-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56244 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 30345, + "cellBudgetMs": 54621, + "teardownMs": 1014 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-wxf9a41iwz-c08-store-mvwxf9az" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c08", + "name": "lfs527-wxf9a41iwz-c08-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxf9a41iwz-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-gMTSxj/home/worker/c08.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 11.0517578125, + "grantedAt": "2026-10-31T21:42:36.281Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 18.359, + "exec": { + "wallMs": 272.908, + "exitCode": 0, + "stdout": "LFS527 0 1793482956050124048 1793482956261235798\n", + "stderr": "", + "rc": 0, + "ms": 211.11175 + }, + "unmountMs": 14.418, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.965, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxf9a41iwz-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 191.217, + "exitCode": 0, + "stdout": "LFS527 0 1793482956300315590 1793482956477018048\n", + "stderr": "", + "rc": 0, + "ms": 176.702458 + }, + "commitMs": 323.121, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1288b381da1ed923248188062eadf297a497afc161524e040e76645725f6580ff5", + "commit": { + "id": "1288b381da1ed923248188062eadf297a497afc161524e040e76645725f6580ff5", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3252289b462eff76a01db257064e0fbc0e81790696d5ad609f642184ca9f0726dd", + "root": "1a377200426898821ab4b09c02dca09ea741e6239386486013783aeb15533627", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793482956743, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 15.898, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.292, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.77, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 6169.798, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 18.355, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 272.903, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 14.415, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.962, + "ok": true + }, + { + "name": "timed.exec", + "ms": 191.215, + "ok": true + }, + { + "name": "timed.commit", + "ms": 323.117, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 15.894, + "ok": true + }, + { + "name": "verify.mount", + "ms": 6.087, + "ok": true + }, + { + "name": "verify.identity", + "ms": 25.992, + "ok": true + }, + { + "name": "verify.exec", + "ms": 299.291, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 12.426, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 871.101, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3252289b462eff76a01db257064e0fbc0e81790696d5ad609f642184ca9f0726dd", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 3.748, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 11.0517578125, + "grantedAt": "2026-10-31T21:42:36.281Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997932", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.965, + "execWallMs": 191.217, + "commandMs": 176.702458, + "commitMs": 323.121, + "commitKind": "Committed", + "unmountMs": 15.898 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997932", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:42:39.052Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C09-2026-10-31T214239457Z-wxg4811jo1.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C09-2026-10-31T214239457Z-wxg4811jo1.json new file mode 100644 index 000000000..2cad55001 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C09-2026-10-31T214239457Z-wxg4811jo1.json @@ -0,0 +1,377 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wxg4811jo1-", + "startedAt": "2026-10-31T21:42:39.457Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.64697265625, + "end": 10.5009765625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-3wfbin", + "initMs": 32528, + "volume": "lfs527-wxg4811jo1-c09-store-mvwxg48v", + "vm": { + "project": "c09", + "name": "lfs527-wxg4811jo1-c09-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-3wfbin/home", + "store": "lfs527-wxg4811jo1-c09-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56422 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 32800, + "cellBudgetMs": 52134, + "teardownMs": 781 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-wxg4811jo1-c09-store-mvwxg48v" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c09", + "name": "lfs527-wxg4811jo1-c09-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxg4811jo1-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-3wfbin/home/worker/c09.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.5009765625, + "grantedAt": "2026-10-31T21:43:20.712Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 230.315, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "129c63f1a4786231f99ac1e96c1af866b79a0954d37d6edc26f3cf79c3ae23e6b1", + "commit": { + "id": "129c63f1a4786231f99ac1e96c1af866b79a0954d37d6edc26f3cf79c3ae23e6b1", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3299baf7c5ce3956b5d35cfff7d192ba5764530a446ca2300c184650a0a5cc622a", + "root": "58888bfbb495878a9b11530123a7ef6b84ee4480213f416f58b338444def111b", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793483000476, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 8.275, + "exec": { + "wallMs": 126.27, + "exitCode": 0, + "stdout": "LFS527 0 1793483000582499716 1793483000693732008\n", + "stderr": "", + "rc": 0, + "ms": 111.232292 + }, + "unmountMs": 14.123, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 36.207, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxg4811jo1-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 91.485, + "exitCode": 0, + "stdout": "LFS527 0 1793483000764717592 1793483000839738508\n", + "stderr": "", + "rc": 0, + "ms": 75.020916 + }, + "commitMs": 1.616, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "129c63f1a4786231f99ac1e96c1af866b79a0954d37d6edc26f3cf79c3ae23e6b1", + "root": "58888bfbb495878a9b11530123a7ef6b84ee4480213f416f58b338444def111b", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.288, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.071, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.851, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 6795.665, + "ok": true + }, + { + "name": "setup.mount", + "ms": 10.592, + "ok": true + }, + { + "name": "setup.exec", + "ms": 230.308, + "ok": true + }, + { + "name": "setup.commit", + "ms": 939.952, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 27.572, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.272, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 126.267, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 14.12, + "ok": true + }, + { + "name": "timed.mount", + "ms": 36.203, + "ok": true + }, + { + "name": "timed.exec", + "ms": 91.478, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1.614, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.284, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.731, + "ok": true + }, + { + "name": "verify.identity", + "ms": 29.496, + "ok": true + }, + { + "name": "verify.exec", + "ms": 397.346, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.179, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 381.288, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3299baf7c5ce3956b5d35cfff7d192ba5764530a446ca2300c184650a0a5cc622a", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 3.962, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.5009765625, + "grantedAt": "2026-10-31T21:43:20.712Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997920", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 36.207, + "execWallMs": 91.485, + "commandMs": 75.020916, + "commitMs": 1.616, + "commitKind": "UpToDate", + "unmountMs": 10.288 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997920", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:43:22.522Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C10-2026-10-31T214323121Z-wxh1wx1kgb.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C10-2026-10-31T214323121Z-wxh1wx1kgb.json new file mode 100644 index 000000000..323673efc --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C10-2026-10-31T214323121Z-wxh1wx1kgb.json @@ -0,0 +1,396 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wxh1wx1kgb-", + "startedAt": "2026-10-31T21:43:23.121Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.5009765625, + "end": 12.46533203125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-VPOKrO", + "initMs": 28687, + "volume": "lfs527-wxh1wx1kgb-c10-store-mvwxh1xz", + "vm": { + "project": "c10", + "name": "lfs527-wxh1wx1kgb-c10-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-VPOKrO/home", + "store": "lfs527-wxh1wx1kgb-c10-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56604 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 28787, + "cellBudgetMs": 56177, + "teardownMs": 690 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-wxh1wx1kgb-c10-store-mvwxh1xz" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c10", + "name": "lfs527-wxh1wx1kgb-c10-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxh1wx1kgb-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-VPOKrO/home/worker/c10.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 13, + "load1": 12.68017578125, + "grantedAt": "2026-10-31T21:43:58.267Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 211.6, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "120b0931ff06e6a42e575daacf6f42e16c4a81b407198b85ef80c5221d5b927b69", + "commit": { + "id": "120b0931ff06e6a42e575daacf6f42e16c4a81b407198b85ef80c5221d5b927b69", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3255c178d079c8ab3706cd7878f177ff50c4f5bf013ac9a6c5e0dac44928770d5e", + "root": "bb8d2104ba93432c1661744ee1420b2c3ee301d75fbd373d3108b84f84030bcb", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793483037848, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 8.875, + "exec": { + "wallMs": 305.841, + "exitCode": 0, + "stdout": "LFS527 0 1793483037945324713 1793483038228964588\n", + "stderr": "", + "rc": 0, + "ms": 283.639875 + }, + "unmountMs": 19.87, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 11.538, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxh1wx1kgb-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 271.826, + "exitCode": 0, + "stdout": "LFS527 0 1793483038293258838 1793483038549767713\n", + "stderr": "", + "rc": 0, + "ms": 256.508875 + }, + "commitMs": 57.383, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12b65c49dbc432d7103ec453c996160c4d47d10f9e7fed17689c45a06d4bebfeb2", + "commit": { + "id": "12b65c49dbc432d7103ec453c996160c4d47d10f9e7fed17689c45a06d4bebfeb2", + "branch": null, + "parent": "120b0931ff06e6a42e575daacf6f42e16c4a81b407198b85ef80c5221d5b927b69", + "secondParent": null, + "base": "3255c178d079c8ab3706cd7878f177ff50c4f5bf013ac9a6c5e0dac44928770d5e", + "root": "16372403b76f6faf6c3f11474fa65149c4c7cdd6415a079a0a36322d3f6a0d61", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793483038555, + "logical": 134217728, + "newCanonical": 487, + "newStored": 295, + "newMetadata": 295, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 20.842, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.958, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.647, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 5332.344, + "ok": true + }, + { + "name": "setup.mount", + "ms": 19.374, + "ok": true + }, + { + "name": "setup.exec", + "ms": 211.595, + "ok": true + }, + { + "name": "setup.commit", + "ms": 327.294, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 16.793, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.865, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 305.838, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 19.866, + "ok": true + }, + { + "name": "timed.mount", + "ms": 11.534, + "ok": true + }, + { + "name": "timed.exec", + "ms": 271.82, + "ok": true + }, + { + "name": "timed.commit", + "ms": 57.38, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 20.837, + "ok": true + }, + { + "name": "verify.mount", + "ms": 9.711, + "ok": true + }, + { + "name": "verify.identity", + "ms": 47.304, + "ok": true + }, + { + "name": "verify.exec", + "ms": 740.266, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 17.372, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1011.053, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3255c178d079c8ab3706cd7878f177ff50c4f5bf013ac9a6c5e0dac44928770d5e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 17.259, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 13, + "load1": 12.68017578125, + "grantedAt": "2026-10-31T21:43:58.267Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997920", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 11.538, + "execWallMs": 271.826, + "commandMs": 256.508875, + "commitMs": 57.383, + "commitKind": "Committed", + "unmountMs": 20.842 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997920", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:44:01.151Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C11-2026-10-31T214406448Z-wxhzcg1l0q.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C11-2026-10-31T214406448Z-wxhzcg1l0q.json new file mode 100644 index 000000000..ee393e654 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C11-2026-10-31T214406448Z-wxhzcg1l0q.json @@ -0,0 +1,377 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wxhzcg1l0q-", + "startedAt": "2026-10-31T21:44:06.448Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 11.787109375, + "end": 12.0908203125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-mDcoRy", + "initMs": 41985, + "volume": "lfs527-wxhzcg1l0q-c11-store-mvwxhzdz", + "vm": { + "project": "c11", + "name": "lfs527-wxhzcg1l0q-c11-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-mDcoRy/home", + "store": "lfs527-wxhzcg1l0q-c11-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56729 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 42088, + "cellBudgetMs": 42878, + "teardownMs": 2272 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-wxhzcg1l0q-c11-store-mvwxhzdz" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c11", + "name": "lfs527-wxhzcg1l0q-c11-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxhzcg1l0q-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-mDcoRy/home/worker/c11.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 6, + "load1": 12.0908203125, + "grantedAt": "2026-10-31T21:44:54.326Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 251.673, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12d0c2d801ae5339d2fef881674e9273f5d391d34fb9f83a3e71dc7243c93ec742", + "commit": { + "id": "12d0c2d801ae5339d2fef881674e9273f5d391d34fb9f83a3e71dc7243c93ec742", + "branch": null, + "parent": null, + "secondParent": null, + "base": "321c27014e5f60ef172fd5e2e5769d96ce6a038d5ced75f24db5b536f3120b09f8", + "root": "9e267a8ad72a15ba4337bf0092044453070e5b267d12030479e73e536cc71ff9", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793483093992, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 8.844, + "exec": { + "wallMs": 170.898, + "exitCode": 0, + "stdout": "LFS527 0 1793483094104526465 1793483094251527965\n", + "stderr": "", + "rc": 0, + "ms": 147.0015 + }, + "unmountMs": 63.843, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 10.953, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxhzcg1l0q-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 185.286, + "exitCode": 0, + "stdout": "LFS527 0 1793483094355520340 1793483094520087257\n", + "stderr": "", + "rc": 0, + "ms": 164.566917 + }, + "commitMs": 153.453, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12d0c2d801ae5339d2fef881674e9273f5d391d34fb9f83a3e71dc7243c93ec742", + "root": "9e267a8ad72a15ba4337bf0092044453070e5b267d12030479e73e536cc71ff9", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 16.817, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.669, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.687, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4795.567, + "ok": true + }, + { + "name": "setup.mount", + "ms": 15.518, + "ok": true + }, + { + "name": "setup.exec", + "ms": 251.667, + "ok": true + }, + { + "name": "setup.commit", + "ms": 352.152, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 18.23, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.841, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 170.895, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 63.84, + "ok": true + }, + { + "name": "timed.mount", + "ms": 10.951, + "ok": true + }, + { + "name": "timed.exec", + "ms": 185.282, + "ok": true + }, + { + "name": "timed.commit", + "ms": 153.445, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 16.813, + "ok": true + }, + { + "name": "verify.mount", + "ms": 7.222, + "ok": true + }, + { + "name": "verify.identity", + "ms": 178.357, + "ok": true + }, + { + "name": "verify.exec", + "ms": 456.47, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 50.904, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 701.564, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "321c27014e5f60ef172fd5e2e5769d96ce6a038d5ced75f24db5b536f3120b09f8", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 8.949, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 6, + "load1": 12.0908203125, + "grantedAt": "2026-10-31T21:44:54.326Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997920", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 10.953, + "execWallMs": 185.286, + "commandMs": 164.566917, + "commitMs": 153.453, + "commitKind": "UpToDate", + "unmountMs": 16.817 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997920", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:44:58.364Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C12-2026-10-31T214458591Z-wxj3kv1lp2.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C12-2026-10-31T214458591Z-wxj3kv1lp2.json new file mode 100644 index 000000000..65d00fbb8 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-lima-C12-2026-10-31T214458591Z-wxj3kv1lp2.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-lima", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wxj3kv1lp2-", + "startedAt": "2026-10-31T21:44:58.591Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 12.0908203125, + "end": 8.8515625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-majEpb", + "initMs": 30802, + "volume": "lfs527-wxj3kv1lp2-c12-store-mvwxj3lo", + "vm": { + "project": "c12", + "name": "lfs527-wxj3kv1lp2-c12-vm", + "state": "running", + "image": "https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-arm64.img", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-majEpb/home", + "store": "lfs527-wxj3kv1lp2-c12-vm-store", + "created": null, + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56813 + }, + "disk": { + "free": 19864657920 + } + }, + "setupMs": 30907, + "cellBudgetMs": 53801, + "teardownMs": 1928 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-wxj3kv1lp2-c12-store-mvwxj3lo" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c12", + "name": "lfs527-wxj3kv1lp2-c12-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxj3kv1lp2-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-majEpb/home/worker/c12.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.27392578125, + "grantedAt": "2026-10-31T21:45:33.160Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.248, + "exec": { + "wallMs": 177.72, + "exitCode": 0, + "stdout": "LFS527 0 1793483132973431589 1793483133138818756\n", + "stderr": "", + "rc": 0, + "ms": 165.387167 + }, + "unmountMs": 6.196, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.489, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxj3kv1lp2-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 188.373, + "exitCode": 0, + "stdout": "LFS527 0 1793483133174814006 1793483133338956381\n", + "stderr": "", + "rc": 0, + "ms": 164.142375 + }, + "commitMs": 45.629, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12afcd786772590f22b3bd9fbf6ea479877bb5493c30c13070d295b39d95112714", + "commit": { + "id": "12afcd786772590f22b3bd9fbf6ea479877bb5493c30c13070d295b39d95112714", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32437d1779215bf625ebf008db8309616e481e94a4279c226d38566cf892c25467", + "root": "187639878e7847c2325123d0928fae7eefcf255d871e040e9b180de14be9079d", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793483133381, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26830, + "newMetadata": 6518, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.058, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.449, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.469, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 2915.91, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.245, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 177.715, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 6.193, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.485, + "ok": true + }, + { + "name": "timed.exec", + "ms": 188.369, + "ok": true + }, + { + "name": "timed.commit", + "ms": 45.625, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.055, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.633, + "ok": true + }, + { + "name": "verify.identity", + "ms": 17.475, + "ok": true + }, + { + "name": "verify.exec", + "ms": 64.677, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.998, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 909.748, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32437d1779215bf625ebf008db8309616e481e94a4279c226d38566cf892c25467", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.045, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.27392578125, + "grantedAt": "2026-10-31T21:45:33.160Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997920", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.489, + "execWallMs": 188.373, + "commandMs": 164.142375, + "commitMs": 45.629, + "commitKind": "Committed", + "unmountMs": 7.058 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3997920", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:45:36.342Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C01-2026-10-31T214132060Z-wxeo7w1ig8.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C01-2026-10-31T214132060Z-wxeo7w1ig8.json new file mode 100644 index 000000000..57ef3aca9 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C01-2026-10-31T214132060Z-wxeo7w1ig8.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wxeo7w1ig8-", + "startedAt": "2026-10-31T21:41:32.060Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.96533203125, + "end": 9.46923828125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-GnDwEL", + "initMs": 10474, + "volume": "lfs527-wxeo7w1ig8-c01-store-mvwxeo8q", + "vm": { + "project": "c01", + "name": "lfs527-wxeo7w1ig8-c01-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-GnDwEL/home", + "store": "lfs527-wxeo7w1ig8-c01-vm-store", + "created": "2026-10-31T21:41:32.359898+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56173 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 10657, + "cellBudgetMs": 74161, + "teardownMs": 300 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-wxeo7w1ig8-c01-store-mvwxeo8q" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c01", + "name": "lfs527-wxeo7w1ig8-c01-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxeo7w1ig8-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-GnDwEL/home/worker/c01.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 26, + "load1": 9.46923828125, + "grantedAt": "2026-10-31T21:41:50.772Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 23.67, + "exec": { + "wallMs": 477.839, + "exitCode": 0, + "stdout": "LFS527 0 1793482910306176174 1793482910729891299\n", + "stderr": "", + "rc": 0, + "ms": 423.715125 + }, + "unmountMs": 11.579, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 8.055, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxeo7w1ig8-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 409.694, + "exitCode": 0, + "stdout": "LFS527 0 1793482910855682799 1793482911237301591\n", + "stderr": "", + "rc": 0, + "ms": 381.618792 + }, + "commitMs": 106.2, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12b9c5ff1d36eea3a9e5fa9c03d033a8893bd7860b759cbde53eeb899ac21947ba", + "commit": { + "id": "12b9c5ff1d36eea3a9e5fa9c03d033a8893bd7860b759cbde53eeb899ac21947ba", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32b62ac3e158ba335e0d7a943c53a7dda0ca24f135bf48100c50a7a118222ab7dc", + "root": "b0e914345fe4c8429f644bb82c98133c0f650076ec4945689ae60d0b97e66036", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793482911334, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.879, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.964, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.318, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 7200.223, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 23.666, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 477.834, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 11.575, + "ok": true + }, + { + "name": "timed.mount", + "ms": 8.05, + "ok": true + }, + { + "name": "timed.exec", + "ms": 409.69, + "ok": true + }, + { + "name": "timed.commit", + "ms": 106.197, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.875, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.426, + "ok": true + }, + { + "name": "verify.identity", + "ms": 51.358, + "ok": true + }, + { + "name": "verify.exec", + "ms": 364.343, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 12.472, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 552.242, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32b62ac3e158ba335e0d7a943c53a7dda0ca24f135bf48100c50a7a118222ab7dc", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 75.23, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 26, + "load1": 9.46923828125, + "grantedAt": "2026-10-31T21:41:50.772Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 8.055, + "execWallMs": 409.694, + "commandMs": 381.618792, + "commitMs": 106.2, + "commitKind": "Committed", + "unmountMs": 8.879 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:41:52.598Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C02-2026-10-31T214155885Z-wxf6lp1iuq.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C02-2026-10-31T214155885Z-wxf6lp1iuq.json new file mode 100644 index 000000000..d6111ea4a --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C02-2026-10-31T214155885Z-wxf6lp1iuq.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wxf6lp1iuq-", + "startedAt": "2026-10-31T21:41:55.885Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.751953125, + "end": 9.56005859375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-Cdp0d0", + "initMs": 8822, + "volume": "lfs527-wxf6lp1iuq-c02-store-mvwxf6mn", + "vm": { + "project": "c02", + "name": "lfs527-wxf6lp1iuq-c02-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-Cdp0d0/home", + "store": "lfs527-wxf6lp1iuq-c02-vm-store", + "created": "2026-10-31T21:41:56.074200+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56239 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 8934, + "cellBudgetMs": 76036, + "teardownMs": 383 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-wxf6lp1iuq-c02-store-mvwxf6mn" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c02", + "name": "lfs527-wxf6lp1iuq-c02-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxf6lp1iuq-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-Cdp0d0/home/worker/c02.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.56005859375, + "grantedAt": "2026-10-31T21:42:08.873Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.231, + "exec": { + "wallMs": 869.048, + "exitCode": 0, + "stdout": "LFS527 0 1793482928011303505 1793482928876153922\n", + "stderr": "", + "rc": 0, + "ms": 864.850417 + }, + "unmountMs": 8.919, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.581, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxf6lp1iuq-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 1030.418, + "exitCode": 0, + "stdout": "LFS527 0 1793482928953889047 1793482929922617756\n", + "stderr": "", + "rc": 0, + "ms": 968.728709 + }, + "commitMs": 95.643, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1222d57bfaf55e5a4d16b7158686331fa14cb5aed13b2d0c0cd036d275416befa3", + "commit": { + "id": "1222d57bfaf55e5a4d16b7158686331fa14cb5aed13b2d0c0cd036d275416befa3", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32554cf239d659c92b4e03f9b860298ddebcce211a2a883b4f735470079043c861", + "root": "e9a0dcd0dc43fcd3195ace7c9d2d1af572b216749ad80143d9f7ccd35e72b5c3", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793482930010, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 11.515, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.702, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.311, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3076.721, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.227, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 869.043, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.917, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.578, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1030.415, + "ok": true + }, + { + "name": "timed.commit", + "ms": 95.64, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 11.512, + "ok": true + }, + { + "name": "verify.mount", + "ms": 8.396, + "ok": true + }, + { + "name": "verify.identity", + "ms": 69.576, + "ok": true + }, + { + "name": "verify.exec", + "ms": 572.656, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.613, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 503.536, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32554cf239d659c92b4e03f9b860298ddebcce211a2a883b4f735470079043c861", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.441, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.56005859375, + "grantedAt": "2026-10-31T21:42:08.873Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.581, + "execWallMs": 1030.418, + "commandMs": 968.728709, + "commitMs": 95.643, + "commitKind": "Committed", + "unmountMs": 11.515 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:42:11.571Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C03-2026-10-31T214215301Z-wxfll11j36.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C03-2026-10-31T214215301Z-wxfll11j36.json new file mode 100644 index 000000000..3bdc9f18e --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C03-2026-10-31T214215301Z-wxfll11j36.json @@ -0,0 +1,316 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wxfll11j36-", + "startedAt": "2026-10-31T21:42:15.301Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.91552734375, + "end": 10.64697265625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-jCIOIA", + "initMs": 14236, + "volume": "lfs527-wxfll11j36-c03-store-mvwxfllu", + "vm": { + "project": "c03", + "name": "lfs527-wxfll11j36-c03-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-jCIOIA/home", + "store": "lfs527-wxfll11j36-c03-vm-store", + "created": "2026-10-31T21:42:15.468249+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56297 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 14347, + "cellBudgetMs": 70605, + "teardownMs": 628 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-wxfll11j36-c03-store-mvwxfllu" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c03", + "name": "lfs527-wxfll11j36-c03-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxfll11j36-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-jCIOIA/home/worker/c03.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 102, + "load1": 11.0517578125, + "grantedAt": "2026-10-31T21:42:36.833Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 12.831, + "exec": { + "wallMs": 541.776, + "exitCode": 0, + "stdout": "LFS527 0 1793482956040204176 1793482956572016093\n", + "stderr": "", + "rc": 0, + "ms": 531.811917 + }, + "unmountMs": 155.046, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.857, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxfll11j36-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 573.41, + "exitCode": 0, + "stdout": "LFS527 0 1793482956883354843 1793482957413427302\n", + "stderr": "", + "rc": 0, + "ms": 530.072459 + }, + "commitMs": 9.356, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "cb3fe299e052504eddb3efe6c896e75ae59e7a07b90419156c87206b559c809f", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 6.325, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.734, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.221, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 6249.349, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 12.825, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 541.771, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 155.043, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.854, + "ok": true + }, + { + "name": "timed.exec", + "ms": 573.407, + "ok": true + }, + { + "name": "timed.commit", + "ms": 9.354, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 6.322, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.965, + "ok": true + }, + { + "name": "verify.identity", + "ms": 55.362, + "ok": true + }, + { + "name": "verify.exec", + "ms": 3.88, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.963, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 585.673, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32eb52deb367fca2609f48ee8c0a32bc30dd835f98c449130256140c85ec579da4", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 105.665, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 102, + "load1": 11.0517578125, + "grantedAt": "2026-10-31T21:42:36.833Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.857, + "execWallMs": 573.41, + "commandMs": 530.072459, + "commitMs": 9.356, + "commitKind": "UpToDate", + "unmountMs": 6.325 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:42:38.719Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C04-2026-10-31T214242634Z-wxg6oa1jr0.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C04-2026-10-31T214242634Z-wxg6oa1jr0.json new file mode 100644 index 000000000..1d23ab621 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C04-2026-10-31T214242634Z-wxg6oa1jr0.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wxg6oa1jr0-", + "startedAt": "2026-10-31T21:42:42.634Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.64697265625, + "end": 11.45849609375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-21U5cz", + "initMs": 9148, + "volume": "lfs527-wxg6oa1jr0-c04-store-mvwxg6p3", + "vm": { + "project": "c04", + "name": "lfs527-wxg6oa1jr0-c04-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-21U5cz/home", + "store": "lfs527-wxg6oa1jr0-c04-vm-store", + "created": "2026-10-31T21:42:42.795440+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56454 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 9252, + "cellBudgetMs": 75698, + "teardownMs": 265 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-wxg6oa1jr0-c04-store-mvwxg6p3" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c04", + "name": "lfs527-wxg6oa1jr0-c04-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxg6oa1jr0-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-21U5cz/home/worker/c04.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.45849609375, + "grantedAt": "2026-10-31T21:42:59.286Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.584, + "exec": { + "wallMs": 713.114, + "exitCode": 0, + "stdout": "LFS527 0 1793482978571272674 1793482979275210716\n", + "stderr": "", + "rc": 0, + "ms": 703.938042 + }, + "unmountMs": 8.088, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.243, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxg6oa1jr0-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 634.309, + "exitCode": 0, + "stdout": "LFS527 0 1793482979335412049 1793482979925346716\n", + "stderr": "", + "rc": 0, + "ms": 589.934667 + }, + "commitMs": 437.941, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1290f59027c1791db6498c00fc5fb75db87d211979a795c485d45d90d3d2e91af9", + "commit": { + "id": "1290f59027c1791db6498c00fc5fb75db87d211979a795c485d45d90d3d2e91af9", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32f42f39e3e413706106d2cb60c1708fdfc8afc57ca16c9c38287507f920a265a7", + "root": "a99dd4f5f38ef2d0bed14528964bd8d570b3c8fe6b941cd9755fe8ad8f476aaa", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793482980352, + "logical": 0, + "newCanonical": 109367, + "newStored": 8250, + "newMetadata": 8250, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 110.773, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.254, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.491, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 6539.633, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.579, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 713.108, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 8.085, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.24, + "ok": true + }, + { + "name": "timed.exec", + "ms": 634.306, + "ok": true + }, + { + "name": "timed.commit", + "ms": 437.933, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 110.769, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.635, + "ok": true + }, + { + "name": "verify.identity", + "ms": 72.51, + "ok": true + }, + { + "name": "verify.exec", + "ms": 258.27, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.596, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 500.85, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32f42f39e3e413706106d2cb60c1708fdfc8afc57ca16c9c38287507f920a265a7", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.664, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.45849609375, + "grantedAt": "2026-10-31T21:42:59.286Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.243, + "execWallMs": 634.309, + "commandMs": 589.934667, + "commitMs": 437.941, + "commitKind": "Committed", + "unmountMs": 110.773 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:43:01.592Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C05-2026-10-31T214304920Z-wxgnvc1k3u.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C05-2026-10-31T214304920Z-wxgnvc1k3u.json new file mode 100644 index 000000000..4466efd40 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C05-2026-10-31T214304920Z-wxgnvc1k3u.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wxgnvc1k3u-", + "startedAt": "2026-10-31T21:43:04.920Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 11.34130859375, + "end": 11.18115234375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-QAuNRd", + "initMs": 11098, + "volume": "lfs527-wxgnvc1k3u-c05-store-mvwxgnwd", + "vm": { + "project": "c05", + "name": "lfs527-wxgnvc1k3u-c05-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-QAuNRd/home", + "store": "lfs527-wxgnvc1k3u-c05-vm-store", + "created": "2026-10-31T21:43:05.126803+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56565 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 11228, + "cellBudgetMs": 73707, + "teardownMs": 278 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-wxgnvc1k3u-c05-store-mvwxgnwd" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c05", + "name": "lfs527-wxgnvc1k3u-c05-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxgnvc1k3u-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-QAuNRd/home/worker/c05.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.5009765625, + "grantedAt": "2026-10-31T21:43:23.272Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 38.176, + "exec": { + "wallMs": 963.473, + "exitCode": 0, + "stdout": "LFS527 0 1793483002349152133 1793483003259708841\n", + "stderr": "", + "rc": 0, + "ms": 910.556708 + }, + "unmountMs": 9.429, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.423, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxgnvc1k3u-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 893.14, + "exitCode": 0, + "stdout": "LFS527 0 1793483003329222675 1793483004171314592\n", + "stderr": "", + "rc": 0, + "ms": 842.091917 + }, + "commitMs": 104.027, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1285904ec904731343b698a9acd065d65d76607d94314b5337723a90d883168d01", + "commit": { + "id": "1285904ec904731343b698a9acd065d65d76607d94314b5337723a90d883168d01", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32ecd8926e5ba50211bf228760916b9c5d8df4384d2f671abda176d66bf844cd26", + "root": "54366d17e66b84e124ac040109d7180f7b35193ed1f50cb24f19b761b8445771", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793483004268, + "logical": 0, + "newCanonical": 109367, + "newStored": 8254, + "newMetadata": 8254, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 8.166, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.279, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.14, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 5966.084, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 38.147, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 963.468, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 9.426, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.419, + "ok": true + }, + { + "name": "timed.exec", + "ms": 893.136, + "ok": true + }, + { + "name": "timed.commit", + "ms": 104.024, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 8.164, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.903, + "ok": true + }, + { + "name": "verify.identity", + "ms": 47.091, + "ok": true + }, + { + "name": "verify.exec", + "ms": 251.882, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.936, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 263.659, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32ecd8926e5ba50211bf228760916b9c5d8df4384d2f671abda176d66bf844cd26", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 2.321, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 10.5009765625, + "grantedAt": "2026-10-31T21:43:23.272Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.423, + "execWallMs": 893.14, + "commandMs": 842.091917, + "commitMs": 104.027, + "commitKind": "Committed", + "unmountMs": 8.166 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:43:25.143Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C06-2026-10-31T214328441Z-wxh60p1kiy.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C06-2026-10-31T214328441Z-wxh60p1kiy.json new file mode 100644 index 000000000..f861345af --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C06-2026-10-31T214328441Z-wxh60p1kiy.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wxh60p1kiy-", + "startedAt": "2026-10-31T21:43:28.441Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 11.18115234375, + "end": 12.00537109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-DmFVLN", + "initMs": 10216, + "volume": "lfs527-wxh60p1kiy-c06-store-mvwxh61h", + "vm": { + "project": "c06", + "name": "lfs527-wxh60p1kiy-c06-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-DmFVLN/home", + "store": "lfs527-wxh60p1kiy-c06-vm-store", + "created": "2026-10-31T21:43:28.611435+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56621 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 10331, + "cellBudgetMs": 74640, + "teardownMs": 427 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-wxh60p1kiy-c06-store-mvwxh61h" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c06", + "name": "lfs527-wxh60p1kiy-c06-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxh60p1kiy-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-DmFVLN/home/worker/c06.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.57080078125, + "grantedAt": "2026-10-31T21:43:43.284Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.041, + "exec": { + "wallMs": 165.773, + "exitCode": 0, + "stdout": "LFS527 0 1793483023106885840 1793483023268207881\n", + "stderr": "", + "rc": 0, + "ms": 161.322041 + }, + "unmountMs": 13.05, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.803, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxh60p1kiy-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 233.057, + "exitCode": 0, + "stdout": "LFS527 0 1793483023350789756 1793483023521904590\n", + "stderr": "", + "rc": 0, + "ms": 171.114834 + }, + "commitMs": 304.89, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12de9464e631f00e6f062403890b180d428e609a69af2973da2b2548ca31659f79", + "commit": { + "id": "12de9464e631f00e6f062403890b180d428e609a69af2973da2b2548ca31659f79", + "branch": null, + "parent": null, + "secondParent": null, + "base": "323b72302a42437ac6dc4044674447dcb9d6463242d6d781cf9ba1b2c566edc63d", + "root": "5c5c623b48f373b408463efe87db683598c11c1f32fa84d9b72a1daf8185a277", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793483023782, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 11.853, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.326, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.316, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4230.506, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.037, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 165.769, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 13.047, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.801, + "ok": true + }, + { + "name": "timed.exec", + "ms": 233.054, + "ok": true + }, + { + "name": "timed.commit", + "ms": 304.888, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 11.849, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.96, + "ok": true + }, + { + "name": "verify.identity", + "ms": 32.133, + "ok": true + }, + { + "name": "verify.exec", + "ms": 327.485, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 63.383, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 993.028, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "323b72302a42437ac6dc4044674447dcb9d6463242d6d781cf9ba1b2c566edc63d", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.468, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 11.57080078125, + "grantedAt": "2026-10-31T21:43:43.284Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.803, + "execWallMs": 233.057, + "commandMs": 171.114834, + "commitMs": 304.89, + "commitKind": "Committed", + "unmountMs": 11.853 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:43:45.692Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C07-2026-10-31T214350330Z-wxhmwq1kq1.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C07-2026-10-31T214350330Z-wxhmwq1kq1.json new file mode 100644 index 000000000..5b359e98d --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C07-2026-10-31T214350330Z-wxhmwq1kq1.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wxhmwq1kq1-", + "startedAt": "2026-10-31T21:43:50.330Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "9569db7c1af5296bc54b8d1bd29888e3a995bb2818a52f8c182c17c9b36a6832", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 12.5654296875, + "end": 11.787109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-P9Jls0", + "initMs": 11927, + "volume": "lfs527-wxhmwq1kq1-c07-store-mvwxhmy8", + "vm": { + "project": "c07", + "name": "lfs527-wxhmwq1kq1-c07-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-P9Jls0/home", + "store": "lfs527-wxhmwq1kq1-c07-vm-store", + "created": "2026-10-31T21:43:50.548161+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56696 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 12048, + "cellBudgetMs": 72911, + "teardownMs": 283 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-wxhmwq1kq1-c07-store-mvwxhmy8" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c07", + "name": "lfs527-wxhmwq1kq1-c07-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxhmwq1kq1-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-P9Jls0/home/worker/c07.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.787109375, + "grantedAt": "2026-10-31T21:44:05.935Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.122, + "exec": { + "wallMs": 335.95, + "exitCode": 0, + "stdout": "LFS527 0 1793483045585896715 1793483045917775548\n", + "stderr": "", + "rc": 0, + "ms": 331.878833 + }, + "unmountMs": 15.229, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.369, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxhmwq1kq1-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 339.966, + "exitCode": 0, + "stdout": "LFS527 0 1793483045988271340 1793483046279739965\n", + "stderr": "", + "rc": 0, + "ms": 291.468625 + }, + "commitMs": 586.387, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e6253ffdcf8f09d89fa6cab5d80a6aec41adf47b97fcb63621f8a9295863736f", + "commit": { + "id": "12e6253ffdcf8f09d89fa6cab5d80a6aec41adf47b97fcb63621f8a9295863736f", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32047f20aa2b813844b7f60f73194b877a3a28a0ec9dec7a16ad88c09fcd0e143a", + "root": "f58dd26ee654f573fd7601d4cfc590ca5fa641ca36ea599dde41dc5bd3323ba5", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793483046780, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 16.243, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.038, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.026, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3068.742, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.119, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 335.946, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 15.226, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.367, + "ok": true + }, + { + "name": "timed.exec", + "ms": 339.949, + "ok": true + }, + { + "name": "timed.commit", + "ms": 586.384, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 16.24, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.217, + "ok": true + }, + { + "name": "verify.identity", + "ms": 67.999, + "ok": true + }, + { + "name": "verify.exec", + "ms": 280.768, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.584, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 240.442, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32047f20aa2b813844b7f60f73194b877a3a28a0ec9dec7a16ad88c09fcd0e143a", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.22, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.787109375, + "grantedAt": "2026-10-31T21:44:05.935Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.369, + "execWallMs": 339.966, + "commandMs": 291.468625, + "commitMs": 586.387, + "commitKind": "Committed", + "unmountMs": 16.243 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:44:07.773Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C08-2026-10-31T214410908Z-wxi2sc1l2u.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C08-2026-10-31T214410908Z-wxi2sc1l2u.json new file mode 100644 index 000000000..13fb97fee --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C08-2026-10-31T214410908Z-wxi2sc1l2u.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wxi2sc1l2u-", + "startedAt": "2026-10-31T21:44:10.908Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 11.5634765625, + "end": 10.14013671875 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-keQaJ2", + "initMs": 8428, + "volume": "lfs527-wxi2sc1l2u-c08-store-mvwxi2xr", + "vm": { + "project": "c08", + "name": "lfs527-wxi2sc1l2u-c08-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-keQaJ2/home", + "store": "lfs527-wxi2sc1l2u-c08-vm-store", + "created": "2026-10-31T21:44:11.277889+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56732 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 8700, + "cellBudgetMs": 76272, + "teardownMs": 263 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-wxi2sc1l2u-c08-store-mvwxi2xr" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c08", + "name": "lfs527-wxi2sc1l2u-c08-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxi2sc1l2u-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-keQaJ2/home/worker/c08.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.76220703125, + "grantedAt": "2026-10-31T21:44:23.326Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.097, + "exec": { + "wallMs": 140.845, + "exitCode": 0, + "stdout": "LFS527 0 1793483063036829255 1793483063172912463\n", + "stderr": "", + "rc": 0, + "ms": 136.083208 + }, + "unmountMs": 138.135, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.455, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxi2sc1l2u-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 189.428, + "exitCode": 0, + "stdout": "LFS527 0 1793483063375267172 1793483063509042964\n", + "stderr": "", + "rc": 0, + "ms": 133.775792 + }, + "commitMs": 297.696, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "125d94ce928e1c43337f065190c178165112dd2c198a456b6bc0865ffd34fd7621", + "commit": { + "id": "125d94ce928e1c43337f065190c178165112dd2c198a456b6bc0865ffd34fd7621", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3253c4682c057d603a20e2f7df404fbfee2b4ac13d18d91855bf270b3ba71c3728", + "root": "cd813a953ecf5abc676e357eaeb68a44ceeabce263e228a5b902ea5385ff5d43", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793483063764, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 21.598, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 3.938, + "ok": true + }, + { + "name": "branch.fork", + "ms": 0.949, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3342.197, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.093, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 140.841, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 138.132, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.453, + "ok": true + }, + { + "name": "timed.exec", + "ms": 189.425, + "ok": true + }, + { + "name": "timed.commit", + "ms": 297.693, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 21.595, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.625, + "ok": true + }, + { + "name": "verify.identity", + "ms": 63.831, + "ok": true + }, + { + "name": "verify.exec", + "ms": 172.89, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.568, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 179.164, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3253c4682c057d603a20e2f7df404fbfee2b4ac13d18d91855bf270b3ba71c3728", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 2.93, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 10.76220703125, + "grantedAt": "2026-10-31T21:44:23.326Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.455, + "execWallMs": 189.428, + "commandMs": 133.775792, + "commitMs": 297.696, + "commitKind": "Committed", + "unmountMs": 21.598 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:44:24.536Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C09-2026-10-31T214427671Z-wxifpz1lao.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C09-2026-10-31T214427671Z-wxifpz1lao.json new file mode 100644 index 000000000..bc2997104 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C09-2026-10-31T214427671Z-wxifpz1lao.json @@ -0,0 +1,377 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wxifpz1lao-", + "startedAt": "2026-10-31T21:44:27.671Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.14013671875, + "end": 11.17626953125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-FiziIt", + "initMs": 8528, + "volume": "lfs527-wxifpz1lao-c09-store-mvwxifqq", + "vm": { + "project": "c09", + "name": "lfs527-wxifpz1lao-c09-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-FiziIt/home", + "store": "lfs527-wxifpz1lao-c09-vm-store", + "created": "2026-10-31T21:44:27.832522+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56754 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 8636, + "cellBudgetMs": 76335, + "teardownMs": 414 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-wxifpz1lao-c09-store-mvwxifqq" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c09", + "name": "lfs527-wxifpz1lao-c09-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxifpz1lao-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-FiziIt/home/worker/c09.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 10.58251953125, + "grantedAt": "2026-10-31T21:44:42.408Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 775.976, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12fac0d36cc833671702dd22f988d1030bdc291c2d2724a6d72dc7f4a3e6cb0600", + "commit": { + "id": "12fac0d36cc833671702dd22f988d1030bdc291c2d2724a6d72dc7f4a3e6cb0600", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32ef3b3690828f4f123f18834d2549102a7a76fbe4297ab78a446edcb1b6d0f0f7", + "root": "34c7912ddc9dbf64931270607f7330acbec791b75a8ec17175b04ebf796a0bec", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793483081914, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 9.604, + "exec": { + "wallMs": 128.07, + "exitCode": 0, + "stdout": "LFS527 0 1793483082167174173 1793483082235917048\n", + "stderr": "", + "rc": 0, + "ms": 68.742875 + }, + "unmountMs": 32.061, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 11.035, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxifpz1lao-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 160.299, + "exitCode": 0, + "stdout": "LFS527 0 1793483082498008465 1793483082582394673\n", + "stderr": "", + "rc": 0, + "ms": 84.386208 + }, + "commitMs": 2.873, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12fac0d36cc833671702dd22f988d1030bdc291c2d2724a6d72dc7f4a3e6cb0600", + "root": "34c7912ddc9dbf64931270607f7330acbec791b75a8ec17175b04ebf796a0bec", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 142.027, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.162, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.261, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4437.247, + "ok": true + }, + { + "name": "setup.mount", + "ms": 17.201, + "ok": true + }, + { + "name": "setup.exec", + "ms": 775.957, + "ok": true + }, + { + "name": "setup.commit", + "ms": 341.248, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 33.258, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 9.601, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 128.057, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 32.055, + "ok": true + }, + { + "name": "timed.mount", + "ms": 11.032, + "ok": true + }, + { + "name": "timed.exec", + "ms": 160.296, + "ok": true + }, + { + "name": "timed.commit", + "ms": 2.868, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 142.023, + "ok": true + }, + { + "name": "verify.mount", + "ms": 11.19, + "ok": true + }, + { + "name": "verify.identity", + "ms": 69.907, + "ok": true + }, + { + "name": "verify.exec", + "ms": 483.499, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 67.537, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1841.229, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32ef3b3690828f4f123f18834d2549102a7a76fbe4297ab78a446edcb1b6d0f0f7", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 23.985, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 3, + "load1": 10.58251953125, + "grantedAt": "2026-10-31T21:44:42.408Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 11.035, + "execWallMs": 160.299, + "commandMs": 84.386208, + "commitMs": 2.873, + "commitKind": "UpToDate", + "unmountMs": 142.027 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:44:45.648Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C10-2026-10-31T214448830Z-wxiw1q1lmg.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C10-2026-10-31T214448830Z-wxiw1q1lmg.json new file mode 100644 index 000000000..f7c34a552 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C10-2026-10-31T214448830Z-wxiw1q1lmg.json @@ -0,0 +1,396 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wxiw1q1lmg-", + "startedAt": "2026-10-31T21:44:48.830Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 11.40234375, + "end": 11.06103515625 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-cGk36T", + "initMs": 11169, + "volume": "lfs527-wxiw1q1lmg-c10-store-mvwxiw2h", + "vm": { + "project": "c10", + "name": "lfs527-wxiw1q1lmg-c10-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-cGk36T/home", + "store": "lfs527-wxiw1q1lmg-c10-vm-store", + "created": "2026-10-31T21:44:48.998143+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56804 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 11287, + "cellBudgetMs": 73685, + "teardownMs": 447 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-wxiw1q1lmg-c10-store-mvwxiw2h" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c10", + "name": "lfs527-wxiw1q1lmg-c10-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxiw1q1lmg-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-cGk36T/home/worker/c10.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.06103515625, + "grantedAt": "2026-10-31T21:45:03.912Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 153.646, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1267aaf01abb3b297bfb9d4b65c3040a625a17a93f012badfaf874fd8da31088a6", + "commit": { + "id": "1267aaf01abb3b297bfb9d4b65c3040a625a17a93f012badfaf874fd8da31088a6", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32561ab35782ef2a6f62dbd20ab393a3a7fd8134b6ecf5f42322315e48523bd7b5", + "root": "ff9d7b757a758feaac7b6aa7de38e039afdb30e41b30a42cd6da960faf42adfb", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793483103573, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 9.569, + "exec": { + "wallMs": 218.328, + "exitCode": 0, + "stdout": "LFS527 0 1793483103705322215 1793483103895455631\n", + "stderr": "", + "rc": 0, + "ms": 190.133416 + }, + "unmountMs": 14.386, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.678, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxiw1q1lmg-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 234.906, + "exitCode": 0, + "stdout": "LFS527 0 1793483103973309798 1793483104153854465\n", + "stderr": "", + "rc": 0, + "ms": 180.544667 + }, + "commitMs": 45.88, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "124a51791ad21ee66158d077b61d6b2b1876019e6e4f068ccdf5a3b3bfba01bbd9", + "commit": { + "id": "124a51791ad21ee66158d077b61d6b2b1876019e6e4f068ccdf5a3b3bfba01bbd9", + "branch": null, + "parent": "1267aaf01abb3b297bfb9d4b65c3040a625a17a93f012badfaf874fd8da31088a6", + "secondParent": null, + "base": "32561ab35782ef2a6f62dbd20ab393a3a7fd8134b6ecf5f42322315e48523bd7b5", + "root": "51773d7d23f0297c8b326457d093009889c4f438712b99da683180e2620e11ea", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793483104157, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 12.933, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.149, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.063, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 2946.503, + "ok": true + }, + { + "name": "setup.mount", + "ms": 20.341, + "ok": true + }, + { + "name": "setup.exec", + "ms": 153.641, + "ok": true + }, + { + "name": "setup.commit", + "ms": 296.781, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 49.29, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 9.565, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 218.325, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 14.383, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.675, + "ok": true + }, + { + "name": "timed.exec", + "ms": 234.903, + "ok": true + }, + { + "name": "timed.commit", + "ms": 45.877, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 12.929, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.711, + "ok": true + }, + { + "name": "verify.identity", + "ms": 38.505, + "ok": true + }, + { + "name": "verify.exec", + "ms": 428.552, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 9.884, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 224.23, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32561ab35782ef2a6f62dbd20ab393a3a7fd8134b6ecf5f42322315e48523bd7b5", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.082, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 11.06103515625, + "grantedAt": "2026-10-31T21:45:03.912Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.678, + "execWallMs": 234.906, + "commandMs": 180.544667, + "commitMs": 45.88, + "commitKind": "Committed", + "unmountMs": 12.933 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:45:05.370Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C11-2026-10-31T214508616Z-wxjbbc1lw8.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C11-2026-10-31T214508616Z-wxjbbc1lw8.json new file mode 100644 index 000000000..65047f1d0 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C11-2026-10-31T214508616Z-wxjbbc1lw8.json @@ -0,0 +1,377 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wxjbbc1lw8-", + "startedAt": "2026-10-31T21:45:08.616Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 11.06103515625, + "end": 9.27392578125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-hyhaiE", + "initMs": 9818, + "volume": "lfs527-wxjbbc1lw8-c11-store-mvwxjbc4", + "vm": { + "project": "c11", + "name": "lfs527-wxjbbc1lw8-c11-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-hyhaiE/home", + "store": "lfs527-wxjbbc1lw8-c11-vm-store", + "created": "2026-10-31T21:45:08.776789+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56847 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 9935, + "cellBudgetMs": 75014, + "teardownMs": 415 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-wxjbbc1lw8-c11-store-mvwxjbc4" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c11", + "name": "lfs527-wxjbbc1lw8-c11-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxjbbc1lw8-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-hyhaiE/home/worker/c11.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.9072265625, + "grantedAt": "2026-10-31T21:45:27.964Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 325.62, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "124b45b73430e14ef45e31239d7180d19b0a8bda0991d0a8561448aff706c344a5", + "commit": { + "id": "124b45b73430e14ef45e31239d7180d19b0a8bda0991d0a8561448aff706c344a5", + "branch": null, + "parent": null, + "secondParent": null, + "base": "325bf88adaf228a9d990d809918eadbe2bbf0b84ec6518e235d3a4795715a6e458", + "root": "9ae5c659b984a155648b7dece9921bf2a02f64ad48727f069d31d53bf32f60a8", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793483127673, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 8.324, + "exec": { + "wallMs": 181.226, + "exitCode": 0, + "stdout": "LFS527 0 1793483127832831217 1793483127946066384\n", + "stderr": "", + "rc": 0, + "ms": 113.235167 + }, + "unmountMs": 11.774, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.998, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxjbbc1lw8-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 163.312, + "exitCode": 0, + "stdout": "LFS527 0 1793483128031440092 1793483128136140509\n", + "stderr": "", + "rc": 0, + "ms": 104.700417 + }, + "commitMs": 139.773, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "124b45b73430e14ef45e31239d7180d19b0a8bda0991d0a8561448aff706c344a5", + "root": "9ae5c659b984a155648b7dece9921bf2a02f64ad48727f069d31d53bf32f60a8", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 11.323, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.262, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.074, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 8352.749, + "ok": true + }, + { + "name": "setup.mount", + "ms": 16.321, + "ok": true + }, + { + "name": "setup.exec", + "ms": 325.614, + "ok": true + }, + { + "name": "setup.commit", + "ms": 308.85, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 36.96, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.32, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 181.223, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 11.771, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.994, + "ok": true + }, + { + "name": "timed.exec", + "ms": 163.308, + "ok": true + }, + { + "name": "timed.commit", + "ms": 139.77, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 11.319, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.064, + "ok": true + }, + { + "name": "verify.identity", + "ms": 53.427, + "ok": true + }, + { + "name": "verify.exec", + "ms": 187.27, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 10.123, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1175.079, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "325bf88adaf228a9d990d809918eadbe2bbf0b84ec6518e235d3a4795715a6e458", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 6.055, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 9.9072265625, + "grantedAt": "2026-10-31T21:45:27.964Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.998, + "execWallMs": 163.312, + "commandMs": 104.700417, + "commitMs": 139.773, + "commitKind": "UpToDate", + "unmountMs": 11.323 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:45:30.140Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C12-2026-10-31T214533568Z-wxjukg1mj0.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C12-2026-10-31T214533568Z-wxjukg1mj0.json new file mode 100644 index 000000000..c2ed2997f --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-microsandbox-C12-2026-10-31T214533568Z-wxjukg1mj0.json @@ -0,0 +1,335 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-microsandbox", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wxjukg1mj0-", + "startedAt": "2026-10-31T21:45:33.568Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.27392578125, + "end": 8.4736328125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-W0lIy0", + "initMs": 9679, + "volume": "lfs527-wxjukg1mj0-c12-store-mvwxjulm", + "vm": { + "project": "c12", + "name": "lfs527-wxjukg1mj0-c12-vm", + "state": "running", + "image": "node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-W0lIy0/home", + "store": "lfs527-wxjukg1mj0-c12-vm-store", + "created": "2026-10-31T21:45:33.870822+00:00", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56902 + }, + "disk": { + "free": 21042118656 + } + }, + "setupMs": 9841, + "cellBudgetMs": 75121, + "teardownMs": 260 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-wxjukg1mj0-c12-store-mvwxjulm" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c12", + "name": "lfs527-wxjukg1mj0-c12-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxjukg1mj0-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-W0lIy0/home/worker/c12.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.4736328125, + "grantedAt": "2026-10-31T21:45:45.631Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.897, + "exec": { + "wallMs": 132.349, + "exitCode": 0, + "stdout": "LFS527 0 1793483145494207587 1793483145622940254\n", + "stderr": "", + "rc": 0, + "ms": 128.732667 + }, + "unmountMs": 5.502, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.535, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxjukg1mj0-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 167.372, + "exitCode": 0, + "stdout": "LFS527 0 1793483145673786338 1793483145802005921\n", + "stderr": "", + "rc": 0, + "ms": 128.219583 + }, + "commitMs": 42.589, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1292e625f0cfbb87f5a5f7fbfd696f444a7f6966f292fefd96def7fd39131b6d55", + "commit": { + "id": "1292e625f0cfbb87f5a5f7fbfd696f444a7f6966f292fefd96def7fd39131b6d55", + "branch": null, + "parent": null, + "secondParent": null, + "base": "328c52e10bb3a10177b8b6fad4725fa05a3ec2f7e0452f6326a782c0f7d7ab9408", + "root": "50ef3bc6dc9071304be4c949ef7cc3b2fec10a5bb0080e0b924766271f2d2109", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793483145841, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26809, + "newMetadata": 6524, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 7.73, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.458, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.498, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 1976.117, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.894, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 132.344, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 5.499, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.533, + "ok": true + }, + { + "name": "timed.exec", + "ms": 167.369, + "ok": true + }, + { + "name": "timed.commit", + "ms": 42.585, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 7.727, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.74, + "ok": true + }, + { + "name": "verify.identity", + "ms": 40.949, + "ok": true + }, + { + "name": "verify.exec", + "ms": 163.368, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 6.868, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 113.989, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "328c52e10bb3a10177b8b6fad4725fa05a3ec2f7e0452f6326a782c0f7d7ab9408", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.401, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.4736328125, + "grantedAt": "2026-10-31T21:45:45.631Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.535, + "execWallMs": 167.372, + "commandMs": 128.219583, + "commitMs": 42.589, + "commitKind": "Committed", + "unmountMs": 7.73 + }, + "where": { + "kernel": "Linux 6.12.113", + "machine": "aarch64", + "cpus": "4", + "memKiB": "4025620", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:45:46.447Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C01-2026-10-31T214546584Z-wxk4m01mpg.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C01-2026-10-31T214546584Z-wxk4m01mpg.json new file mode 100644 index 000000000..5f6820729 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C01-2026-10-31T214546584Z-wxk4m01mpg.json @@ -0,0 +1,345 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C01", + "verdict": "PASS", + "cause": null, + "project": "c01", + "prefix": "lfs527-wxk4m01mpg-", + "startedAt": "2026-10-31T21:45:46.584Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.4736328125, + "end": 8.29638671875 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxk4m01mpg", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-z67PtV", + "initMs": 22454, + "volume": "lfs527-wxk4m01mpg-c01-store-mvwxk4mt", + "vm": { + "project": "c01", + "name": "lfs527-wxk4m01mpg-c01-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-z67PtV/home", + "store": "lfs527-wxk4m01mpg-c01-vm-store", + "created": "2026-10-31T21:45:46.619Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56918 + }, + "disk": { + "free": 35322568704 + } + }, + "setupMs": 22608, + "cellBudgetMs": 62363, + "teardownMs": 881 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c01", + "volume": "lfs527-wxk4m01mpg-c01-store-mvwxk4mt" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c01", + "name": "lfs527-wxk4m01mpg-c01-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "418f8a9d6b71111a34e41a8f4d0a5ba6b1869b684f2d84d72432e65edb8e29b5", + "commandSha256": "eb02a56c9a3fdc7955ab9bd7c5b4383dad120d3a926f76a6c51e712bcee2a85a", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxk4m01mpg-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-z67PtV/home/worker/c01.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.29638671875, + "grantedAt": "2026-10-31T21:46:13.995Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C01", + "project": "c01", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 10.714, + "exec": { + "wallMs": 442.887, + "exitCode": 0, + "stdout": "LFS527 0 1793483173694558083 1793483174124386537\n", + "stderr": "", + "rc": 0, + "ms": 429.828454 + }, + "unmountMs": 4.526, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.021, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxk4m01mpg-c01-1/workspaces/2" + }, + "exec": { + "wallMs": 461.301, + "exitCode": 0, + "stdout": "LFS527 0 1793483174157345311 1793483174596292182\n", + "stderr": "", + "rc": 0, + "ms": 438.946871 + }, + "commitMs": 101.165, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "123b43dae69b440b1cc40de4ab68d2d45ab724c6167e34d2e8afe00e686252a2a6", + "commit": { + "id": "123b43dae69b440b1cc40de4ab68d2d45ab724c6167e34d2e8afe00e686252a2a6", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32011655faed1effc76c40a1a4b5ba2c93942fa00e5b46962549a66db3e880ca92", + "root": "d23cdc21b6a81a38fa463f3cf0e9cca35bc15aa06b9483e14517fbbf915c7d46", + "via": "exec", + "message": "lfs527 C01", + "mergedFrom": null, + "time": 1793483174688, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 4.129, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.957, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.386, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4248.576, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 10.71, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 442.882, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.523, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.019, + "ok": true + }, + { + "name": "timed.exec", + "ms": 461.298, + "ok": true + }, + { + "name": "timed.commit", + "ms": 101.162, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 4.126, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.782, + "ok": true + }, + { + "name": "verify.identity", + "ms": 20.446, + "ok": true + }, + { + "name": "verify.exec", + "ms": 608.174, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.128, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 202.431, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32011655faed1effc76c40a1a4b5ba2c93942fa00e5b46962549a66db3e880ca92", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.333, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.29638671875, + "grantedAt": "2026-10-31T21:46:13.995Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.021, + "execWallMs": 461.301, + "commandMs": 438.946871, + "commitMs": 101.165, + "commitKind": "Committed", + "unmountMs": 4.129 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:46:16.288Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C02-2026-10-31T214616515Z-wxkrpf1n8q.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C02-2026-10-31T214616515Z-wxkrpf1n8q.json new file mode 100644 index 000000000..17f55362f --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C02-2026-10-31T214616515Z-wxkrpf1n8q.json @@ -0,0 +1,345 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C02", + "verdict": "PASS", + "cause": null, + "project": "c02", + "prefix": "lfs527-wxkrpf1n8q-", + "startedAt": "2026-10-31T21:46:16.515Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.29638671875, + "end": 7.1591796875 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxkrpf1n8q", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-TadmVY", + "initMs": 14850, + "volume": "lfs527-wxkrpf1n8q-c02-store-mvwxkrq7", + "vm": { + "project": "c02", + "name": "lfs527-wxkrpf1n8q-c02-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-TadmVY/home", + "store": "lfs527-wxkrpf1n8q-c02-vm-store", + "created": "2026-10-31T21:46:16.550Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 56999 + }, + "disk": { + "free": 35322527744 + } + }, + "setupMs": 14983, + "cellBudgetMs": 69967, + "teardownMs": 889 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c02", + "volume": "lfs527-wxkrpf1n8q-c02-store-mvwxkrq7" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c02", + "name": "lfs527-wxkrpf1n8q-c02-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "76883ee8358e23ebea7af1931db3d7201684d1da240bc0fefec72781ff569cf6", + "commandSha256": "f1708450d58b34975627f5a620fa69cb9df17a0437235feaf302843f81dece18", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxkrpf1n8q-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-TadmVY/home/worker/c02.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.521484375, + "grantedAt": "2026-10-31T21:46:37.433Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C02", + "project": "c02", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 7.303, + "exec": { + "wallMs": 1032.165, + "exitCode": 0, + "stdout": "LFS527 0 1793483196549959610 1793483197563816835\n", + "stderr": "", + "rc": 0, + "ms": 1013.857225 + }, + "unmountMs": 4.298, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.943, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxkrpf1n8q-c02-1/workspaces/2" + }, + "exec": { + "wallMs": 1017.924, + "exitCode": 0, + "stdout": "LFS527 0 1793483197590990213 1793483198593953824\n", + "stderr": "", + "rc": 0, + "ms": 1002.963611 + }, + "commitMs": 97.669, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1257f03a2f2250e69d50715257579922d799039820207bafd11b19a3b074a475ab", + "commit": { + "id": "1257f03a2f2250e69d50715257579922d799039820207bafd11b19a3b074a475ab", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32022c3158fa71a1b27c28fac1eb5a50d0e8463d4fcddd1ef55048da218934fe57", + "root": "4b6cee367a1202e1105b7b850e9e6328e081d8e6c577126a0b2a9e13e60223d2", + "via": "exec", + "message": "lfs527 C02", + "mergedFrom": null, + "time": 1793483198683, + "logical": 3893, + "newCanonical": 124010, + "newStored": 18646, + "newMetadata": 9721, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.85, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.435, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.394, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4772.192, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 7.3, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 1032.159, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 4.295, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.939, + "ok": true + }, + { + "name": "timed.exec", + "ms": 1017.921, + "ok": true + }, + { + "name": "timed.commit", + "ms": 97.666, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.848, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.139, + "ok": true + }, + { + "name": "verify.identity", + "ms": 23.309, + "ok": true + }, + { + "name": "verify.exec", + "ms": 601.077, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 3.887, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 366.597, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32022c3158fa71a1b27c28fac1eb5a50d0e8463d4fcddd1ef55048da218934fe57", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.345, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.521484375, + "grantedAt": "2026-10-31T21:46:37.433Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.943, + "execWallMs": 1017.924, + "commandMs": 1002.963611, + "commitMs": 97.669, + "commitKind": "Committed", + "unmountMs": 3.85 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:46:40.452Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C03-2026-10-31T214640708Z-wxladg1nlx.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C03-2026-10-31T214640708Z-wxladg1nlx.json new file mode 100644 index 000000000..4c5844ab5 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C03-2026-10-31T214640708Z-wxladg1nlx.json @@ -0,0 +1,326 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-wxladg1nlx-", + "startedAt": "2026-10-31T21:46:40.708Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.1591796875, + "end": 8.02490234375 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxladg1nlx", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-wcom8A", + "initMs": 14148, + "volume": "lfs527-wxladg1nlx-c03-store-mvwxlael", + "vm": { + "project": "c03", + "name": "lfs527-wxladg1nlx-c03-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-wcom8A/home", + "store": "lfs527-wxladg1nlx-c03-vm-store", + "created": "2026-10-31T21:46:40.761Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57048 + }, + "disk": { + "free": 35322490880 + } + }, + "setupMs": 14297, + "cellBudgetMs": 70675, + "teardownMs": 906 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-wxladg1nlx-c03-store-mvwxlael" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c03", + "name": "lfs527-wxladg1nlx-c03-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxladg1nlx-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-wcom8A/home/worker/c03.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.02490234375, + "grantedAt": "2026-10-31T21:46:59.595Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.862, + "exec": { + "wallMs": 972.562, + "exitCode": 0, + "stdout": "LFS527 0 1793483218773373389 1793483219726858098\n", + "stderr": "", + "rc": 0, + "ms": 953.484709 + }, + "unmountMs": 3.194, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.898, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxladg1nlx-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 977.774, + "exitCode": 0, + "stdout": "LFS527 0 1793483219752212994 1793483220713228803\n", + "stderr": "", + "rc": 0, + "ms": 961.015809 + }, + "commitMs": 8.412, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "f712bb2076066620e243296c04e33e6ec678e772feeb61daa3d457463dbb99d6", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.28, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.943, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.826, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3513.435, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.853, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 972.557, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.192, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.896, + "ok": true + }, + { + "name": "timed.exec", + "ms": 977.771, + "ok": true + }, + { + "name": "timed.commit", + "ms": 8.408, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.276, + "ok": true + }, + { + "name": "verify.mount", + "ms": 5.146, + "ok": true + }, + { + "name": "verify.identity", + "ms": 29.161, + "ok": true + }, + { + "name": "verify.exec", + "ms": 13.393, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.903, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 463.593, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3226048f65f6553ff38c6710f76d6bc259639adcb69ad27a80e287625c5a74cd15", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.324, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.02490234375, + "grantedAt": "2026-10-31T21:46:59.595Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.898, + "execWallMs": 977.774, + "commandMs": 961.015809, + "commitMs": 8.412, + "commitKind": "UpToDate", + "unmountMs": 3.28 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:47:02.013Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C04-2026-10-31T214702226Z-wxlqz61o0k.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C04-2026-10-31T214702226Z-wxlqz61o0k.json new file mode 100644 index 000000000..e35b38005 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C04-2026-10-31T214702226Z-wxlqz61o0k.json @@ -0,0 +1,345 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C04", + "verdict": "PASS", + "cause": null, + "project": "c04", + "prefix": "lfs527-wxlqz61o0k-", + "startedAt": "2026-10-31T21:47:02.226Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.02490234375, + "end": 9.46826171875 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxlqz61o0k", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-xBRfpe", + "initMs": 15835, + "volume": "lfs527-wxlqz61o0k-c04-store-mvwxlqzz", + "vm": { + "project": "c04", + "name": "lfs527-wxlqz61o0k-c04-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-xBRfpe/home", + "store": "lfs527-wxlqz61o0k-c04-vm-store", + "created": "2026-10-31T21:47:02.262Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57099 + }, + "disk": { + "free": 35322449920 + } + }, + "setupMs": 15971, + "cellBudgetMs": 69001, + "teardownMs": 864 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c04", + "volume": "lfs527-wxlqz61o0k-c04-store-mvwxlqzz" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c04", + "name": "lfs527-wxlqz61o0k-c04-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "bc6078a63239e725c8fb10ee5287616745bcf231705a26dabc9f93c43c66d4f9", + "commandSha256": "fe4b426dbf768ac606bb1d197278d66e441846bb00425c1f5979386745a0612e", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxlqz61o0k-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-xBRfpe/home/worker/c04.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.59619140625, + "grantedAt": "2026-10-31T21:47:21.223Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C04", + "project": "c04", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.741, + "exec": { + "wallMs": 923.536, + "exitCode": 0, + "stdout": "LFS527 0 1793483240459187280 1793483241355599258\n", + "stderr": "", + "rc": 0, + "ms": 896.411978 + }, + "unmountMs": 3.278, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.785, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxlqz61o0k-c04-1/workspaces/2" + }, + "exec": { + "wallMs": 919.371, + "exitCode": 0, + "stdout": "LFS527 0 1793483241383911299 1793483242283108709\n", + "stderr": "", + "rc": 0, + "ms": 899.19741 + }, + "commitMs": 108.409, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12fe84b7fd2012369a15545a2fc736c615f5bbabd4a6feff31eea816731dd76a7c", + "commit": { + "id": "12fe84b7fd2012369a15545a2fc736c615f5bbabd4a6feff31eea816731dd76a7c", + "branch": null, + "parent": null, + "secondParent": null, + "base": "323a4cc3fd4ba445839a8162c31c506356c8ce82144e3848ce48b6c8d492bd5f9c", + "root": "114a4f2dc399de9676c2c44dc16b6530aef12707eec8dfad606384b709adbb37", + "via": "exec", + "message": "lfs527 C04", + "mergedFrom": null, + "time": 1793483242384, + "logical": 0, + "newCanonical": 109367, + "newStored": 8244, + "newMetadata": 8244, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.422, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.626, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.518, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 2007.712, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.738, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 923.531, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.276, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.782, + "ok": true + }, + { + "name": "timed.exec", + "ms": 919.366, + "ok": true + }, + { + "name": "timed.commit", + "ms": 108.406, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.42, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.452, + "ok": true + }, + { + "name": "verify.identity", + "ms": 20.016, + "ok": true + }, + { + "name": "verify.exec", + "ms": 354.214, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.665, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 891.709, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "323a4cc3fd4ba445839a8162c31c506356c8ce82144e3848ce48b6c8d492bd5f9c", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.139, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 9.59619140625, + "grantedAt": "2026-10-31T21:47:21.223Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.785, + "execWallMs": 919.371, + "commandMs": 899.19741, + "commitMs": 108.409, + "commitKind": "Committed", + "unmountMs": 3.422 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:47:24.398Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C05-2026-10-31T214732804Z-wxmekk1osa.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C05-2026-10-31T214732804Z-wxmekk1osa.json new file mode 100644 index 000000000..bf09986cb --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C05-2026-10-31T214732804Z-wxmekk1osa.json @@ -0,0 +1,345 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C05", + "verdict": "PASS", + "cause": null, + "project": "c05", + "prefix": "lfs527-wxmekk1osa-", + "startedAt": "2026-10-31T21:47:32.804Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 9.0302734375, + "end": 8.00390625 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxmekk1osa", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-SdSsna", + "initMs": 14553, + "volume": "lfs527-wxmekk1osa-c05-store-mvwxmelj", + "vm": { + "project": "c05", + "name": "lfs527-wxmekk1osa-c05-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-SdSsna/home", + "store": "lfs527-wxmekk1osa-c05-vm-store", + "created": "2026-10-31T21:47:32.846Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57299 + }, + "disk": { + "free": 35322408960 + } + }, + "setupMs": 14699, + "cellBudgetMs": 70241, + "teardownMs": 1090 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c05", + "volume": "lfs527-wxmekk1osa-c05-store-mvwxmelj" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c05", + "name": "lfs527-wxmekk1osa-c05-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4306a767d8d5316887f0543abef12d01676bbdfdaff121fd039e56cad5742c8d", + "commandSha256": "cf432b9ee6dce623884758b85bd3fca7dd972828a668661c815313c8b402199d", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxmekk1osa-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-SdSsna/home/worker/c05.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.265625, + "grantedAt": "2026-10-31T21:47:51.517Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C05", + "project": "c05", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.286, + "exec": { + "wallMs": 926.893, + "exitCode": 0, + "stdout": "LFS527 0 1793483270743388253 1793483271648846854\n", + "stderr": "", + "rc": 0, + "ms": 905.458601 + }, + "unmountMs": 3.915, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.751, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxmekk1osa-c05-1/workspaces/2" + }, + "exec": { + "wallMs": 891.795, + "exitCode": 0, + "stdout": "LFS527 0 1793483271671908217 1793483272550631208\n", + "stderr": "", + "rc": 0, + "ms": 878.722991 + }, + "commitMs": 103.97, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "125c843831828f70e99cc92e06c34586b4994377b338ad0e9b5669fe659d7643cb", + "commit": { + "id": "125c843831828f70e99cc92e06c34586b4994377b338ad0e9b5669fe659d7643cb", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3275467672b393b82fc96d369b40a89468fd4998c3a001c7f0d18c7a3d48f42b43", + "root": "f01319e606874b0d73e1f67816c079266403f94a1ac375b38793cbf21adb5683", + "via": "exec", + "message": "lfs527 C05", + "mergedFrom": null, + "time": 1793483272647, + "logical": 0, + "newCanonical": 109367, + "newStored": 8251, + "newMetadata": 8251, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.734, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.672, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.387, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 2942.772, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.282, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 926.888, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.912, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.748, + "ok": true + }, + { + "name": "timed.exec", + "ms": 891.792, + "ok": true + }, + { + "name": "timed.commit", + "ms": 103.966, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.731, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.649, + "ok": true + }, + { + "name": "verify.identity", + "ms": 16.177, + "ok": true + }, + { + "name": "verify.exec", + "ms": 334.961, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.907, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 644.917, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3275467672b393b82fc96d369b40a89468fd4998c3a001c7f0d18c7a3d48f42b43", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.221, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.265625, + "grantedAt": "2026-10-31T21:47:51.517Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.751, + "execWallMs": 891.795, + "commandMs": 878.722991, + "commitMs": 103.97, + "commitKind": "Committed", + "unmountMs": 3.734 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:47:54.617Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C06-2026-10-31T214754815Z-wxmvjz1p5t.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C06-2026-10-31T214754815Z-wxmvjz1p5t.json new file mode 100644 index 000000000..23a5d3af1 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C06-2026-10-31T214754815Z-wxmvjz1p5t.json @@ -0,0 +1,345 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C06", + "verdict": "PASS", + "cause": null, + "project": "c06", + "prefix": "lfs527-wxmvjz1p5t-", + "startedAt": "2026-10-31T21:47:54.815Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.00390625, + "end": 8.1796875 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxmvjz1p5t", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-PGtAmO", + "initMs": 15637, + "volume": "lfs527-wxmvjz1p5t-c06-store-mvwxmvkp", + "vm": { + "project": "c06", + "name": "lfs527-wxmvjz1p5t-c06-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-PGtAmO/home", + "store": "lfs527-wxmvjz1p5t-c06-vm-store", + "created": "2026-10-31T21:47:54.847Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57354 + }, + "disk": { + "free": 35322363904 + } + }, + "setupMs": 15768, + "cellBudgetMs": 69205, + "teardownMs": 879 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c06", + "volume": "lfs527-wxmvjz1p5t-c06-store-mvwxmvkp" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c06", + "name": "lfs527-wxmvjz1p5t-c06-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d", + "commandSha256": "d6b326be0d11aa8b375a561c8bbad779165d5b0e0b1e9df26d6b782c3459bc73", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxmvjz1p5t-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-PGtAmO/home/worker/c06.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.1796875, + "grantedAt": "2026-10-31T21:48:14.575Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C06", + "project": "c06", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 5.597, + "exec": { + "wallMs": 200.974, + "exitCode": 0, + "stdout": "LFS527 0 1793483294513834748 1793483294701185586\n", + "stderr": "", + "rc": 0, + "ms": 187.350838 + }, + "unmountMs": 10.467, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.118, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxmvjz1p5t-c06-1/workspaces/2" + }, + "exec": { + "wallMs": 209.569, + "exitCode": 0, + "stdout": "LFS527 0 1793483294736261750 1793483294926696280\n", + "stderr": "", + "rc": 0, + "ms": 190.43453 + }, + "commitMs": 314.636, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12dd3977599f2cb7aa66d32ba077d6d5974f2f39e538b3787553ed7835d5ca32fe", + "commit": { + "id": "12dd3977599f2cb7aa66d32ba077d6d5974f2f39e538b3787553ed7835d5ca32fe", + "branch": null, + "parent": null, + "secondParent": null, + "base": "324020b1fe7748ab9480fa07f17489eea664f9c18b859438d31212228193c7d126", + "root": "8faa76b8819f0f6957d1eb867b013a9d98cb18c5c854e4f44bb4038bdfc7e4e8", + "via": "exec", + "message": "lfs527 C06", + "mergedFrom": null, + "time": 1793483295194, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.36, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.776, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.424, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3683.306, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.591, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 200.97, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.464, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.115, + "ok": true + }, + { + "name": "timed.exec", + "ms": 209.566, + "ok": true + }, + { + "name": "timed.commit", + "ms": 314.633, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.357, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.13, + "ok": true + }, + { + "name": "verify.identity", + "ms": 25.355, + "ok": true + }, + { + "name": "verify.exec", + "ms": 432.474, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.783, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 256.494, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "324020b1fe7748ab9480fa07f17489eea664f9c18b859438d31212228193c7d126", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.205, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 8.1796875, + "grantedAt": "2026-10-31T21:48:14.575Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.118, + "execWallMs": 209.569, + "commandMs": 190.43453, + "commitMs": 314.636, + "commitKind": "Committed", + "unmountMs": 10.36 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:48:16.720Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C07-2026-10-31T214816943Z-wxncmn1pgl.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C07-2026-10-31T214816943Z-wxncmn1pgl.json new file mode 100644 index 000000000..8d1b2201b --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C07-2026-10-31T214816943Z-wxncmn1pgl.json @@ -0,0 +1,345 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C07", + "verdict": "PASS", + "cause": null, + "project": "c07", + "prefix": "lfs527-wxncmn1pgl-", + "startedAt": "2026-10-31T21:48:16.943Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.1796875, + "end": 8.439453125 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxncmn1pgl", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-DLu9y9", + "initMs": 14541, + "volume": "lfs527-wxncmn1pgl-c07-store-mvwxncng", + "vm": { + "project": "c07", + "name": "lfs527-wxncmn1pgl-c07-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-DLu9y9/home", + "store": "lfs527-wxncmn1pgl-c07-vm-store", + "created": "2026-10-31T21:48:16.978Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57389 + }, + "disk": { + "free": 35322327040 + } + }, + "setupMs": 14680, + "cellBudgetMs": 70292, + "teardownMs": 886 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c07", + "volume": "lfs527-wxncmn1pgl-c07-store-mvwxncng" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c07", + "name": "lfs527-wxncmn1pgl-c07-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "4d50a741653d9e90efba6eece312ea5a57b13be6142c3bfc09b57f643088e723", + "commandSha256": "429f5a14d6ed51762e2ee2453ad2081d320b49371e35edd533bfc34840a582a4", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxncmn1pgl-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-DLu9y9/home/worker/c07.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.56494140625, + "grantedAt": "2026-10-31T21:48:36.183Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C07", + "project": "c07", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.695, + "exec": { + "wallMs": 437.27, + "exitCode": 0, + "stdout": "LFS527 0 1793483315885538764 1793483316302174283\n", + "stderr": "", + "rc": 0, + "ms": 416.635519 + }, + "unmountMs": 17.025, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 4.634, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxncmn1pgl-c07-1/workspaces/2" + }, + "exec": { + "wallMs": 412.379, + "exitCode": 0, + "stdout": "LFS527 0 1793483316341229972 1793483316737637743\n", + "stderr": "", + "rc": 0, + "ms": 396.407771 + }, + "commitMs": 604.893, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12d3d104786dcad1191abcd4c0b132990cabd400a85c0f80cc62c2545e55eac341", + "commit": { + "id": "12d3d104786dcad1191abcd4c0b132990cabd400a85c0f80cc62c2545e55eac341", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32179eceb1354514e2b100aa75d5ec08e22e77d6144733de260c7149ee09e80651", + "root": "47a6db1ffcb5769235d86df2dbe32aea04a1862d6d9911425cd1808dc5205950", + "via": "exec", + "message": "lfs527 C07", + "mergedFrom": null, + "time": 1793483317251, + "logical": 134217728, + "newCanonical": 39358, + "newStored": 838, + "newMetadata": 762, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 17.541, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.791, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.52, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3997.657, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.691, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 437.266, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 17.022, + "ok": true + }, + { + "name": "timed.mount", + "ms": 4.631, + "ok": true + }, + { + "name": "timed.exec", + "ms": 412.376, + "ok": true + }, + { + "name": "timed.commit", + "ms": 604.89, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 17.538, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.734, + "ok": true + }, + { + "name": "verify.identity", + "ms": 26.249, + "ok": true + }, + { + "name": "verify.exec", + "ms": 678.737, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.619, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 194.787, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32179eceb1354514e2b100aa75d5ec08e22e77d6144733de260c7149ee09e80651", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.349, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 8.56494140625, + "grantedAt": "2026-10-31T21:48:36.183Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 4.634, + "execWallMs": 412.379, + "commandMs": 396.407771, + "commitMs": 604.893, + "commitKind": "Committed", + "unmountMs": 17.541 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:48:39.024Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C08-2026-10-31T214839306Z-wxntvu1pul.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C08-2026-10-31T214839306Z-wxntvu1pul.json new file mode 100644 index 000000000..0eef16555 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C08-2026-10-31T214839306Z-wxntvu1pul.json @@ -0,0 +1,345 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C08", + "verdict": "PASS", + "cause": null, + "project": "c08", + "prefix": "lfs527-wxntvu1pul-", + "startedAt": "2026-10-31T21:48:39.306Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 8.439453125, + "end": 7.59716796875 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxntvu1pul", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-zfP72U", + "initMs": 13841, + "volume": "lfs527-wxntvu1pul-c08-store-mvwxntwl", + "vm": { + "project": "c08", + "name": "lfs527-wxntvu1pul-c08-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-zfP72U/home", + "store": "lfs527-wxntvu1pul-c08-vm-store", + "created": "2026-10-31T21:48:39.339Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57439 + }, + "disk": { + "free": 35313901568 + } + }, + "setupMs": 13976, + "cellBudgetMs": 70998, + "teardownMs": 1053 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c08", + "volume": "lfs527-wxntvu1pul-c08-store-mvwxntwl" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c08", + "name": "lfs527-wxntvu1pul-c08-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "af994b2385d66c015921c49f44fce0cdb247cb42cbe64710ad36556b418a865d", + "commandSha256": "d039d9afc57fd431e702c0b4a3f6eb23675d6baf61d92a2b2f1ece3a677d9882", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxntvu1pul-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-zfP72U/home/worker/c08.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.59716796875, + "grantedAt": "2026-10-31T21:48:55.645Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C08", + "project": "c08", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 6.953, + "exec": { + "wallMs": 184.288, + "exitCode": 0, + "stdout": "LFS527 0 1793483335605080379 1793483335771077060\n", + "stderr": "", + "rc": 0, + "ms": 165.996681 + }, + "unmountMs": 10.589, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.714, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxntvu1pul-c08-1/workspaces/2" + }, + "exec": { + "wallMs": 177.134, + "exitCode": 0, + "stdout": "LFS527 0 1793483335798652902 1793483335964127495\n", + "stderr": "", + "rc": 0, + "ms": 165.474593 + }, + "commitMs": 306.536, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "1223296d8722fe7e0428a8c4182d9980fcbf257c7cbee778f2b03112f491ae9460", + "commit": { + "id": "1223296d8722fe7e0428a8c4182d9980fcbf257c7cbee778f2b03112f491ae9460", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32958062b7c3d74ef5b163c1a2376079ead1c71cbf9cadcc1df3887e567d224a4e", + "root": "b88f8fed3d6c50624c826f2a359753bc224138c88666e73c4f36ec3689e7d1e3", + "via": "exec", + "message": "lfs527 C08", + "mergedFrom": null, + "time": 1793483336224, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.08, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.981, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.188, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 2070.314, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 6.95, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 184.283, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.586, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.712, + "ok": true + }, + { + "name": "timed.exec", + "ms": 177.131, + "ok": true + }, + { + "name": "timed.commit", + "ms": 306.533, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.077, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.736, + "ok": true + }, + { + "name": "verify.identity", + "ms": 19.547, + "ok": true + }, + { + "name": "verify.exec", + "ms": 355.504, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 5.02, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 560.262, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32958062b7c3d74ef5b163c1a2376079ead1c71cbf9cadcc1df3887e567d224a4e", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.382, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.59716796875, + "grantedAt": "2026-10-31T21:48:55.645Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.714, + "execWallMs": 177.134, + "commandMs": 165.474593, + "commitMs": 306.536, + "commitKind": "Committed", + "unmountMs": 10.08 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:48:58.144Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C09-2026-10-31T214906681Z-wxof091q8m.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C09-2026-10-31T214906681Z-wxof091q8m.json new file mode 100644 index 000000000..0aedc1b5a --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C09-2026-10-31T214906681Z-wxof091q8m.json @@ -0,0 +1,387 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C09", + "verdict": "PASS", + "cause": null, + "project": "c09", + "prefix": "lfs527-wxof091q8m-", + "startedAt": "2026-10-31T21:49:06.681Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.216796875, + "end": 7.78173828125 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxof091q8m", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-uWOZqX", + "initMs": 15426, + "volume": "lfs527-wxof091q8m-c09-store-mvwxof10", + "vm": { + "project": "c09", + "name": "lfs527-wxof091q8m-c09-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-uWOZqX/home", + "store": "lfs527-wxof091q8m-c09-vm-store", + "created": "2026-10-31T21:49:06.715Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57482 + }, + "disk": { + "free": 35313856512 + } + }, + "setupMs": 15560, + "cellBudgetMs": 69414, + "teardownMs": 896 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c09", + "volume": "lfs527-wxof091q8m-c09-store-mvwxof10" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c09", + "name": "lfs527-wxof091q8m-c09-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "37eb10ecfa439aa69bc9e430d39ce029099fa2bb52a44a67ffef8a31ecdac9e5", + "commandSha256": "1017cbd4cd0a42bc4cd14f23c24adf54e47518ad58d7564b0eecf8badb1c6dae", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxof091q8m-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-uWOZqX/home/worker/c09.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.78173828125, + "grantedAt": "2026-10-31T21:49:26.318Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C09", + "project": "c09", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 189.516, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "129748888d41071ab9f32570bbef893a399bd20d851450b3eaec92df9dc131728c", + "commit": { + "id": "129748888d41071ab9f32570bbef893a399bd20d851450b3eaec92df9dc131728c", + "branch": null, + "parent": null, + "secondParent": null, + "base": "321a1e5632246ae70312d06315c686b4255c82b60ce08fae2d0c7b7d57c202b4aa", + "root": "d319a370d2e45013eafb4775af90d116b95f8c50b8e234821ad3e7371cd6b2d8", + "via": "exec", + "message": "lfs527 C09 setup", + "mergedFrom": null, + "time": 1793483366286, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 4.508, + "exec": { + "wallMs": 97.643, + "exitCode": 0, + "stdout": "LFS527 0 1793483366374842702 1793483366448986807\n", + "stderr": "", + "rc": 0, + "ms": 74.144105 + }, + "unmountMs": 6.12, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.161, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxof091q8m-c09-1/workspaces/3" + }, + "exec": { + "wallMs": 99.788, + "exitCode": 0, + "stdout": "LFS527 0 1793483366483591778 1793483366563600928\n", + "stderr": "", + "rc": 0, + "ms": 80.00915 + }, + "commitMs": 1.759, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "129748888d41071ab9f32570bbef893a399bd20d851450b3eaec92df9dc131728c", + "root": "d319a370d2e45013eafb4775af90d116b95f8c50b8e234821ad3e7371cd6b2d8", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 6.015, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 4.921, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.352, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3357.724, + "ok": true + }, + { + "name": "setup.mount", + "ms": 6.18, + "ok": true + }, + { + "name": "setup.exec", + "ms": 189.509, + "ok": true + }, + { + "name": "setup.commit", + "ms": 312.485, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 11.186, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 4.505, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 97.639, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 6.117, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.158, + "ok": true + }, + { + "name": "timed.exec", + "ms": 99.784, + "ok": true + }, + { + "name": "timed.commit", + "ms": 1.757, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 6.012, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.405, + "ok": true + }, + { + "name": "verify.identity", + "ms": 32.612, + "ok": true + }, + { + "name": "verify.exec", + "ms": 301.624, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.929, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 194.563, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "321a1e5632246ae70312d06315c686b4255c82b60ce08fae2d0c7b7d57c202b4aa", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.43, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.78173828125, + "grantedAt": "2026-10-31T21:49:26.318Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.161, + "execWallMs": 99.788, + "commandMs": 80.00915, + "commitMs": 1.759, + "commitKind": "UpToDate", + "unmountMs": 6.015 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:49:27.872Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C10-2026-10-31T214928092Z-wxovj01qk4.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C10-2026-10-31T214928092Z-wxovj01qk4.json new file mode 100644 index 000000000..dff930b72 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C10-2026-10-31T214928092Z-wxovj01qk4.json @@ -0,0 +1,406 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C10", + "verdict": "PASS", + "cause": null, + "project": "c10", + "prefix": "lfs527-wxovj01qk4-", + "startedAt": "2026-10-31T21:49:28.092Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 7.78173828125, + "end": 6.8193359375 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxovj01qk4", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-gNJRLv", + "initMs": 14440, + "volume": "lfs527-wxovj01qk4-c10-store-mvwxovjq", + "vm": { + "project": "c10", + "name": "lfs527-wxovj01qk4-c10-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-gNJRLv/home", + "store": "lfs527-wxovj01qk4-c10-vm-store", + "created": "2026-10-31T21:49:28.125Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57529 + }, + "disk": { + "free": 35313815552 + } + }, + "setupMs": 14590, + "cellBudgetMs": 70356, + "teardownMs": 919 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c10", + "volume": "lfs527-wxovj01qk4-c10-store-mvwxovjq" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c10", + "name": "lfs527-wxovj01qk4-c10-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "60f896e83f6fa71e1713ddd4ffd7e8c14d1ecf17bddb5f191f0ea4f2bdebabed", + "commandSha256": "a4c2ff11f48eb28acd3cb6c1881a5376261e34f1e74c73887008a8885d5ed84f", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxovj01qk4-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-gNJRLv/home/worker/c10.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.2392578125, + "grantedAt": "2026-10-31T21:49:46.706Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C10", + "project": "c10", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 165.485, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "123b66488eb2e79e576fa1e2a79f0ab21063ef92fc671f10f2eba4bb70bc84180b", + "commit": { + "id": "123b66488eb2e79e576fa1e2a79f0ab21063ef92fc671f10f2eba4bb70bc84180b", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32a8ac517629cffca6e165f1b3277724ec0bf3aa6dbabf4f7c189f4f9143c8a01c", + "root": "4586d67a1051373e012903c66611d8c9f4ecfbb762d23ead36bc73ef0743769d", + "via": "exec", + "message": "lfs527 C10 setup", + "mergedFrom": null, + "time": 1793483386513, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 5.075, + "exec": { + "wallMs": 251.415, + "exitCode": 0, + "stdout": "LFS527 0 1793483386597258279 1793483386827855867\n", + "stderr": "", + "rc": 0, + "ms": 230.597588 + }, + "unmountMs": 15.235, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 7.007, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxovj01qk4-c10-1/workspaces/3" + }, + "exec": { + "wallMs": 239.931, + "exitCode": 0, + "stdout": "LFS527 0 1793483386874933383 1793483387091766410\n", + "stderr": "", + "rc": 0, + "ms": 216.833027 + }, + "commitMs": 51.018, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12e7188742ee3b415201930d5c77bbc22ac47245578456fbd69f66c8a8eeee7f1a", + "commit": { + "id": "12e7188742ee3b415201930d5c77bbc22ac47245578456fbd69f66c8a8eeee7f1a", + "branch": null, + "parent": "123b66488eb2e79e576fa1e2a79f0ab21063ef92fc671f10f2eba4bb70bc84180b", + "secondParent": null, + "base": "32a8ac517629cffca6e165f1b3277724ec0bf3aa6dbabf4f7c189f4f9143c8a01c", + "root": "c000795ee0c79e0d3976c3275158cb9b6d06a4193591b331369abd2812770317", + "via": "exec", + "message": "lfs527 C10", + "mergedFrom": null, + "time": 1793483387095, + "logical": 134217728, + "newCanonical": 487, + "newStored": 300, + "newMetadata": 300, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 13.36, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.632, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.572, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3134.24, + "ok": true + }, + { + "name": "setup.mount", + "ms": 6.079, + "ok": true + }, + { + "name": "setup.exec", + "ms": 165.478, + "ok": true + }, + { + "name": "setup.commit", + "ms": 309.196, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 11.098, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 5.072, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 251.411, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 15.232, + "ok": true + }, + { + "name": "timed.mount", + "ms": 7.005, + "ok": true + }, + { + "name": "timed.exec", + "ms": 239.927, + "ok": true + }, + { + "name": "timed.commit", + "ms": 51.015, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 13.357, + "ok": true + }, + { + "name": "verify.mount", + "ms": 4.581, + "ok": true + }, + { + "name": "verify.identity", + "ms": 22.628, + "ok": true + }, + { + "name": "verify.exec", + "ms": 655.703, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 8.099, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 247.953, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32a8ac517629cffca6e165f1b3277724ec0bf3aa6dbabf4f7c189f4f9143c8a01c", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.366, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 0, + "load1": 7.2392578125, + "grantedAt": "2026-10-31T21:49:46.706Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 7.007, + "execWallMs": 239.931, + "commandMs": 216.833027, + "commitMs": 51.018, + "commitKind": "Committed", + "unmountMs": 13.36 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:49:48.880Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C11-2026-10-31T214949143Z-wxpbrr1quw.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C11-2026-10-31T214949143Z-wxpbrr1quw.json new file mode 100644 index 000000000..624450115 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C11-2026-10-31T214949143Z-wxpbrr1quw.json @@ -0,0 +1,387 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C11", + "verdict": "PASS", + "cause": null, + "project": "c11", + "prefix": "lfs527-wxpbrr1quw-", + "startedAt": "2026-10-31T21:49:49.143Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 6.8193359375, + "end": 6.015625 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxpbrr1quw", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-jduaYP", + "initMs": 13968, + "volume": "lfs527-wxpbrr1quw-c11-store-mvwxpbsu", + "vm": { + "project": "c11", + "name": "lfs527-wxpbrr1quw-c11-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-jduaYP/home", + "store": "lfs527-wxpbrr1quw-c11-vm-store", + "created": "2026-10-31T21:49:49.189Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57575 + }, + "disk": { + "free": 35313782784 + } + }, + "setupMs": 14115, + "cellBudgetMs": 70853, + "teardownMs": 907 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c11", + "volume": "lfs527-wxpbrr1quw-c11-store-mvwxpbsu" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c11", + "name": "lfs527-wxpbrr1quw-c11-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "b057769c09c98bda3d759364d4857cd2e1eaf64855296d2bf7a7d225a37d2b40", + "commandSha256": "53077030326a1386f2cf2523f5a850b35feaba2d8fcb1b36e9f40a742be40a0d", + "setupSha256": "68c36eedeb7daf07516db93ca0ac0263bf3859d42549f7d490b1f074475ffc9d" + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxpbrr1quw-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-jduaYP/home/worker/c11.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 6.015625, + "grantedAt": "2026-10-31T21:50:06.813Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C11", + "project": "c11", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "setup": { + "exec": { + "wallMs": 203.701, + "exitCode": 0, + "stdout": "", + "stderr": "", + "rc": null, + "ms": null + }, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "12a11f7bd7469767efeb81c1ea4657505d35137ef9ff5e79d2d91891f28848a7f8", + "commit": { + "id": "12a11f7bd7469767efeb81c1ea4657505d35137ef9ff5e79d2d91891f28848a7f8", + "branch": null, + "parent": null, + "secondParent": null, + "base": "3202b62218a7fdc70316e79c7e12379296afde6ef2fc4c1300738740cb92bd27e7", + "root": "9f634989ee21276e3c35a66aa92aa6db279cc4e4cfd0096b4ff5e2f6379d63d3", + "via": "exec", + "message": "lfs527 C11 setup", + "mergedFrom": null, + "time": 1793483406754, + "logical": 67108864, + "newCanonical": 39263, + "newStored": 748, + "newMetadata": 672, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmount": { + "kind": "Unmounted" + } + }, + "warmup": { + "mountMs": 3.967, + "exec": { + "wallMs": 122.804, + "exitCode": 0, + "stdout": "LFS527 0 1793483406834679619 1793483406939135753\n", + "stderr": "", + "rc": 0, + "ms": 104.456134 + }, + "unmountMs": 10.598, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 6.824, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxpbrr1quw-c11-1/workspaces/3" + }, + "exec": { + "wallMs": 125.662, + "exitCode": 0, + "stdout": "LFS527 0 1793483406982161566 1793483407084381975\n", + "stderr": "", + "rc": 0, + "ms": 102.220409 + }, + "commitMs": 137.856, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": "12a11f7bd7469767efeb81c1ea4657505d35137ef9ff5e79d2d91891f28848a7f8", + "root": "9f634989ee21276e3c35a66aa92aa6db279cc4e4cfd0096b4ff5e2f6379d63d3", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 10.519, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.515, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.565, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 2794.293, + "ok": true + }, + { + "name": "setup.mount", + "ms": 7.377, + "ok": true + }, + { + "name": "setup.exec", + "ms": 203.694, + "ok": true + }, + { + "name": "setup.commit", + "ms": 303.729, + "ok": true + }, + { + "name": "setup.unmount", + "ms": 11.043, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 3.965, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 122.8, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 10.596, + "ok": true + }, + { + "name": "timed.mount", + "ms": 6.822, + "ok": true + }, + { + "name": "timed.exec", + "ms": 125.657, + "ok": true + }, + { + "name": "timed.commit", + "ms": 137.843, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 10.517, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.82, + "ok": true + }, + { + "name": "verify.identity", + "ms": 29.17, + "ok": true + }, + { + "name": "verify.exec", + "ms": 321.793, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 4.962, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 213.337, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "3202b62218a7fdc70316e79c7e12379296afde6ef2fc4c1300738740cb92bd27e7", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.696, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 6.015625, + "grantedAt": "2026-10-31T21:50:06.813Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 6.824, + "execWallMs": 125.662, + "commandMs": 102.220409, + "commitMs": 137.856, + "commitKind": "UpToDate", + "unmountMs": 10.519 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:50:08.582Z" +} diff --git a/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C12-2026-10-31T215008878Z-wxpqzy1r53.json b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C12-2026-10-31T215008878Z-wxpqzy1r53.json new file mode 100644 index 000000000..6c65ebad9 --- /dev/null +++ b/core/docs/issues/527/receipts/5431c7e4a9/vm-ssh-C12-2026-10-31T215008878Z-wxpqzy1r53.json @@ -0,0 +1,345 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-ssh", + "cell": "C12", + "verdict": "PASS", + "cause": null, + "project": "c12", + "prefix": "lfs527-wxpqzy1r53-", + "startedAt": "2026-10-31T21:50:08.878Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 5.61376953125, + "end": 5.458984375 + }, + "constructionWorkers": "1", + "driver": { + "sshStateDir": "/Users/yifanxu/.cache/layerfs-test/lfs527-ssh-state-wxpqzy1r53", + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-gy0s9J", + "initMs": 13950, + "volume": "lfs527-wxpqzy1r53-c12-store-mvwxpr0q", + "vm": { + "project": "c12", + "name": "lfs527-wxpqzy1r53-c12-vm", + "state": "running", + "image": null, + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-gy0s9J/home", + "store": "lfs527-wxpqzy1r53-c12-vm-store", + "created": "2026-10-31T21:50:08.913Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "port": 57616 + }, + "disk": { + "free": 35313737728 + } + }, + "setupMs": 14086, + "cellBudgetMs": 70884, + "teardownMs": 931 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c12", + "volume": "lfs527-wxpqzy1r53-c12-store-mvwxpr0q" + } + }, + { + "name": "ssh host files", + "ok": true, + "value": "/srv/lfs527-store" + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c12", + "name": "lfs527-wxpqzy1r53-c12-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "ssh state", + "ok": true + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "36c5a7aed5e5a44b18dc0a5de3aa3da3eea3ecac9b8affb81eb8f1c85e021fb0", + "commandSha256": "837c1465ba0066de602ad01f51efe880f08ab2ae4cbbbb65901bdbae9a48559b", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-bd7ac86d", + "id": "build-linux-bd7ac86d01304d4e89a2e98057d26d66", + "platform": "linux", + "profile": "release", + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "sourceSha256": "dea9123661697246ff5f09d4033d5ff0cc64a604ca7218fd3108355f367dfb00", + "manifestSha256": "a4cc65f236bc32e9f2cc007fe7d779a01a615b4a632c07001e0f60c662f34b18", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "5431c7e4a9ef01b9f0651682dda1d558f9837df2", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-wxpqzy1r53-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-gy0s9J/home/worker/c12.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 5.458984375, + "grantedAt": "2026-10-31T21:50:26.625Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C12", + "project": "c12", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.074, + "exec": { + "wallMs": 263.51, + "exitCode": 0, + "stdout": "LFS527 0 1793483426514957276 1793483426758550842\n", + "stderr": "", + "rc": 0, + "ms": 243.593566 + }, + "unmountMs": 3.589, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 3.881, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-wxpqzy1r53-c12-1/workspaces/2" + }, + "exec": { + "wallMs": 253.267, + "exitCode": 0, + "stdout": "LFS527 0 1793483426784702903 1793483427020691749\n", + "stderr": "", + "rc": 0, + "ms": 235.988846 + }, + "commitMs": 45.62, + "commitKind": "Committed", + "commit": { + "kind": "Committed", + "head": "129debbb5148fe0d120fe1a90149d49c9d4473898864c2f317f071de16268fa537", + "commit": { + "id": "129debbb5148fe0d120fe1a90149d49c9d4473898864c2f317f071de16268fa537", + "branch": null, + "parent": null, + "secondParent": null, + "base": "32f569d8109944bc07fedd4a4ae2f2f0b065dd6e1fde72923650c1fdc67cad7022", + "root": "7cc9e4332e2a629aaf95cd46091a36d5f8e95446ae783b06b3c902c82450f49a", + "via": "exec", + "message": "lfs527 C12", + "mergedFrom": null, + "time": 1793483427063, + "logical": 36105, + "newCanonical": 80060, + "newStored": 26834, + "newMetadata": 6517, + "displaced": null, + "lww": [], + "lwwTruncated": false + }, + "displacedHead": null, + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 3.03, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 5.246, + "ok": true + }, + { + "name": "branch.fork", + "ms": 1.611, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 3289.117, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.056, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 263.505, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 3.586, + "ok": true + }, + { + "name": "timed.mount", + "ms": 3.879, + "ok": true + }, + { + "name": "timed.exec", + "ms": 253.263, + "ok": true + }, + { + "name": "timed.commit", + "ms": 45.616, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 3.028, + "ok": true + }, + { + "name": "verify.mount", + "ms": 3.698, + "ok": true + }, + { + "name": "verify.identity", + "ms": 24.847, + "ok": true + }, + { + "name": "verify.exec", + "ms": 100.796, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 2.897, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 196.002, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32f569d8109944bc07fedd4a4ae2f2f0b065dd6e1fde72923650c1fdc67cad7022", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 1.31, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 1, + "load1": 5.458984375, + "grantedAt": "2026-10-31T21:50:26.625Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 3.881, + "execWallMs": 253.267, + "commandMs": 235.988846, + "commitMs": 45.62, + "commitKind": "Committed", + "unmountMs": 3.03 + }, + "where": { + "kernel": "Linux 6.8.0-147-generic", + "machine": "aarch64", + "cpus": "4", + "memKiB": "3994696", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T21:50:28.198Z" +} diff --git a/core/docs/issues/527/receipts/97d408cc51/js-checks-97d408cc51.log b/core/docs/issues/527/receipts/97d408cc51/js-checks-97d408cc51.log new file mode 100644 index 000000000..73963a80a --- /dev/null +++ b/core/docs/issues/527/receipts/97d408cc51/js-checks-97d408cc51.log @@ -0,0 +1,25 @@ +HEAD 97d408cc5160347bd66b69b4eede91c173703d42 2026-10-31T21:46:56Z + api/agent/src/transport/worker_client.js | 5 +++++ + api/agent/test/native_deployment.mjs | 27 +++++++++++++++++++++++++++ + api/docs/agent.md | 2 +- + api/runtime/test/verify/cells/run.mjs | 10 ++++++++-- + 4 files changed, 41 insertions(+), 3 deletions(-) +agent native_deployment: native_deployment: ok +agent calls: PASS calls (39 cases) +agent exec_output: exec output: ok +vm_placement settings: PASS vm_placement/settings +vm_placement flow: PASS vm_placement/flow +vm_placement two: PASS vm_placement/two +vm_placement bundle: PASS vm_placement/bundle +vm_placement delete: PASS vm_placement/delete +vm_placement hosts: PASS vm_placement/hosts +vm_placement stores: PASS vm_placement/stores +vm_placement apple-container: PASS vm_placement/apple-container +vm_placement ssh: PASS vm_placement/ssh +vm_placement lima: PASS vm_placement/lima +vm_placement firecracker: PASS vm_placement/firecracker +vm_placement cleanup: PASS vm_placement/cleanup +runtime macos-worker: PASS runtime/macos-worker +runtime windows-worker: PASS runtime/windows-worker +runtime worker-frames: PASS runtime/worker-frames +runtime worker-docker: PASS runtime/worker-docker diff --git a/core/docs/issues/527/receipts/97d408cc51/refusals-vm-docker-2026-10-31T214509567Z-wxjc1r1lwp.json b/core/docs/issues/527/receipts/97d408cc51/refusals-vm-docker-2026-10-31T214509567Z-wxjc1r1lwp.json new file mode 100644 index 000000000..a616be3e4 --- /dev/null +++ b/core/docs/issues/527/receipts/97d408cc51/refusals-vm-docker-2026-10-31T214509567Z-wxjc1r1lwp.json @@ -0,0 +1,133 @@ +{ + "receipt": "lfs527-cell/1", + "row": "refusals", + "cell": "vm-docker", + "verdict": "PASS", + "cause": "expected {\"placement vm:docker\":\"Unsupported\",\"LAYERFS_SANDBOX=docker on vm:apple-container\":\"Unsupported\",\"LAYERFS_SANDBOX_BACKEND=docker on vm:apple-container\":\"InvalidInput\"}; answered {\"placement vm:docker\":\"Unsupported\",\"LAYERFS_SANDBOX=docker on vm:apple-container\":\"Unsupported\",\"LAYERFS_SANDBOX_BACKEND=docker on vm:apple-container\":\"InvalidInput\"}", + "project": "refusal", + "prefix": "lfs527-wxjc1r1lwp-", + "startedAt": "2026-10-31T21:45:09.567Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "e8aa4f90a4d44db8894f2c7185dcba54a332f059922e08a4a79c17e7dc0905fa", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 10.7353515625, + "end": 10.16064453125 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-U9JE8w", + "initMs": 9009, + "volume": "lfs527-wxjc1r1lwp-refusal-store-mvwxjc39", + "vm": { + "project": "refusal", + "name": "lfs527-wxjc1r1lwp-refusal-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-U9JE8w/home", + "store": "lfs527-wxjc1r1lwp-refusal-vm-store", + "created": "2026-10-31T21:45:09Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4ee01388b1e54170bbd20243afe1ca37", + "port": 56850 + }, + "disk": { + "free": 21120929792 + } + }, + "teardownMs": 1068 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "refusal", + "volume": "lfs527-wxjc1r1lwp-refusal-store-mvwxjc39" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "refusal", + "name": "lfs527-wxjc1r1lwp-refusal-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4ee01388", + "id": "build-linux-4ee01388b1e54170bbd20243afe1ca37", + "platform": "linux", + "profile": "release", + "sourceCommit": "97d408cc5160347bd66b69b4eede91c173703d42", + "sourceSha256": "c47fba689c2da30e5066d44893330790165bb3834402b5de9033d2174d82635d", + "manifestSha256": "8fd20df6ecc404b6352526c8d8db884ca6d2d88dd791e888a733cfbec696471d", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 215, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "observed": { + "placement vm:docker": { + "refused": true, + "code": "Unsupported", + "message": "Unsupported: no VM provider is implemented for vm:docker; it is vm:microsandbox or vm:apple-container or vm:ssh or vm:lima or vm:firecracker", + "detail": null + }, + "LAYERFS_SANDBOX=docker on vm:apple-container": { + "opened": { + "refused": true, + "code": "Unsupported", + "message": "Unsupported: deploy.sandbox (LAYERFS_SANDBOX) docker is not available on a vm:apple-container home: its Sandboxes are namespaces inside the project's VM lfs527-wxjc1r1lwp-refusal-vm; leave LAYERFS_SANDBOX to the runtime", + "detail": null + }, + "created": null + }, + "LAYERFS_SANDBOX_BACKEND=docker on vm:apple-container": { + "opened": { + "refused": false, + "value": "opened" + }, + "created": { + "refused": true, + "code": "InvalidInput", + "message": "InvalidInput: deploy.sandboxBackend (LAYERFS_SANDBOX_BACKEND) is native or namespaces, not docker; it is replaced by LAYERFS_SANDBOX=native or namespaces", + "detail": null + } + } + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "teardownOk": true, + "endedAt": "2026-10-31T21:45:19.816Z" +} diff --git a/core/docs/issues/527/receipts/ac-fix-try/vm-apple-container-C03-2026-10-31T205753744Z-vwvujwwphn.json b/core/docs/issues/527/receipts/ac-fix-try/vm-apple-container-C03-2026-10-31T205753744Z-vwvujwwphn.json new file mode 100644 index 000000000..90e057794 --- /dev/null +++ b/core/docs/issues/527/receipts/ac-fix-try/vm-apple-container-C03-2026-10-31T205753744Z-vwvujwwphn.json @@ -0,0 +1,317 @@ +{ + "receipt": "lfs527-cell/1", + "row": "vm-apple-container", + "cell": "C03", + "verdict": "PASS", + "cause": null, + "project": "c03", + "prefix": "lfs527-vwvujwwphn-", + "startedAt": "2026-10-31T20:57:53.744Z", + "host": { + "hostname": "Yifans-MacBook-Pro-10.local", + "platform": "darwin", + "release": "25.4.0", + "cpus": 14, + "memBytes": 38654705664, + "node": "v24.21.0", + "uid": 501 + }, + "runner": { + "run.mjs": "164f91862f99c53e3e28f76f873013e8e13d4eb3d3cc9626d1180720794e9dcd", + "cell.mjs": "4d8c3431e3c5de3b7a261d7aff7f0b1ba816b4cbfe021d8e12d5ae3dea5cdb78", + "workloads.mjs": "e22d812db8858758dc8cae491168b881bb81489663e43b8ebac115f9eec99f62" + }, + "load1": { + "start": 2.939453125, + "end": 3.6787109375 + }, + "constructionWorkers": "1", + "driver": { + "work": "/Users/yifanxu/.cache/layerfs-test/lfs527-Wzq7xE", + "initMs": 11078, + "volume": "lfs527-vwvujwwphn-c03-store-mvwvujxs", + "vm": { + "project": "c03", + "name": "lfs527-vwvujwwphn-c03-vm", + "state": "running", + "image": "docker.io/library/node:22-trixie-slim", + "home": "/Users/yifanxu/.cache/layerfs-test/lfs527-Wzq7xE/home", + "store": "lfs527-vwvujwwphn-c03-vm-store", + "created": "2026-10-31T20:57:53Z", + "worker": { + "state": "running", + "answering": true, + "build": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "port": 52609 + }, + "disk": { + "free": 21120929792 + } + }, + "setupMs": 11214, + "cellBudgetMs": 73737, + "teardownMs": 4070 + }, + "teardown": [ + { + "name": "project.delete", + "ok": true, + "value": { + "kind": "Deleted", + "project": "c03", + "volume": "lfs527-vwvujwwphn-c03-store-mvwvujxs" + } + }, + { + "name": "vm.delete", + "ok": true, + "value": { + "project": "c03", + "name": "lfs527-vwvujwwphn-c03-vm", + "state": "missing", + "store": "kept" + } + }, + { + "name": "runtime.close", + "ok": true + }, + { + "name": "work", + "ok": true + } + ], + "body": { + "sha256": "520773ceacd8c44d633ffd1a40727ceb5d990d63a23259f28af8dd4b96fa204d", + "commandSha256": "f5b32c4a764970421c6d7a7363759df0b5dcce3bfdb63a92ebbb1e1f0872f6e2", + "setupSha256": null + }, + "imageDigest": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "bundle": { + "path": "/Users/yifanxu/.cache/layerfs-test/lfs527-bundles/cells-4bedac61-acfix", + "id": "build-linux-4bedac61bd884930b3b8e16af1af2a00", + "platform": "linux", + "profile": "release", + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "sourceSha256": "b35ec6b35a60f226287494bc283892bf3dbe290b6c47194ba90d0bb87c5c8060", + "manifestSha256": "0ffa831896d9e90dcb6cff2238a1f63dff69c45dcaa10474c00655d052918f3c", + "images": { + "build": "sha256:378b799ef43343fc64008b6a5ef456dd6bf0cb8f6ea4cec72e7b42dfc17d2cd6", + "runtime": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e", + "sandbox": "sha256:afa1ef9c27294f9c7298820c06483e6fb1ddafc43a7cc7d6dec8cd2e67abf38e" + }, + "filesChecked": 207, + "mismatched": [], + "imageArchives": [ + "1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar" + ] + }, + "sourceCommit": "50e2c2bc87c8ffbde05bca046f4b1d407ee10e7b", + "env": { + "LAYERFS_HOME": "/layerfs/home", + "LAYERFS_SANDBOX": "native", + "LAYERFS_SANDBOX_BACKEND": "namespaces", + "LAYERFS_DAEMON": "/layerfs/bundle/layerfs-daemon", + "LAYERFS_LOCAL_DIR": "/layerfs/store/local", + "LAYERFS_IMAGE": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "LAYERFS_IMAGE_ARCHIVE": "/layerfs/bundle/images/1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9.tar", + "LAYERFS_STORE_PATH": "/layerfs/store/global/store.sqlite", + "LAYERFS_CONTAINER_PREFIX": "lfs527-vwvujwwphn-", + "LAYERFS_WORKER_ENDPOINT": "/Users/yifanxu/.cache/layerfs-test/lfs527-Wzq7xE/home/worker/c03.json" + }, + "lock": { + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 3.185546875, + "grantedAt": "2026-10-31T20:58:09.703Z", + "staleRemoved": null + }, + "cellResult": { + "cell": "C03", + "project": "c03", + "branch": "lane", + "ok": true, + "cause": null, + "phases": { + "warmup": { + "mountMs": 8.711, + "exec": { + "wallMs": 416.396, + "exitCode": 0, + "stdout": "LFS527 0 1793480289363845257 1793480289760545423\n", + "stderr": "", + "rc": 0, + "ms": 396.700166 + }, + "unmountMs": 6.285, + "unmount": { + "kind": "Unmounted" + } + }, + "timed": { + "mountMs": 5.019, + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9", + "workspace": { + "sandbox": "1", + "path": "/layerfs/store/local/lfs527-vwvujwwphn-c03-1/workspaces/2" + }, + "exec": { + "wallMs": 424.697, + "exitCode": 0, + "stdout": "LFS527 0 1793480289806708215 1793480290204917924\n", + "stderr": "", + "rc": 0, + "ms": 398.209709 + }, + "commitMs": 10.27, + "commitKind": "UpToDate", + "commit": { + "kind": "UpToDate", + "head": null, + "root": "4c0e6516deb6522f32bd94c0919ee840646661013afb0fa4455ff61fb2895740", + "merged": null, + "lww": [], + "lwwTruncated": false + }, + "unmountMs": 5.89, + "unmount": { + "kind": "Unmounted" + } + }, + "verify": { + "exitCode": 0, + "stdout": "VERIFY OK\n", + "stderr": "" + } + }, + "steps": [ + { + "name": "open", + "ms": 6.412, + "ok": true + }, + { + "name": "branch.fork", + "ms": 2.127, + "ok": true + }, + { + "name": "sandbox.create", + "ms": 4195.028, + "ok": true + }, + { + "name": "warmup.mount", + "ms": 8.705, + "ok": true + }, + { + "name": "warmup.exec", + "ms": 416.38, + "ok": true + }, + { + "name": "warmup.unmount", + "ms": 6.279, + "ok": true + }, + { + "name": "timed.mount", + "ms": 5.014, + "ok": true + }, + { + "name": "timed.exec", + "ms": 424.691, + "ok": true + }, + { + "name": "timed.commit", + "ms": 10.262, + "ok": true + }, + { + "name": "timed.unmount", + "ms": 5.886, + "ok": true + }, + { + "name": "verify.mount", + "ms": 9.161, + "ok": true + }, + { + "name": "verify.identity", + "ms": 24.909, + "ok": true + }, + { + "name": "verify.exec", + "ms": 9.43, + "ok": true + }, + { + "name": "verify.unmount", + "ms": 7.588, + "ok": true + }, + { + "name": "sandbox.close", + "ms": 1922.63, + "ok": true + } + ], + "fork": { + "kind": "Forked", + "branch": "lane", + "base": "32b98023e66243c2a02a167b3dafea69fb16a2da29f10527dac839415b625e4443", + "head": null + }, + "sandbox": { + "sandbox": "1", + "image": "sha256:1d91885de27a20805af0d1b99602ace066f0514983613e391ee1f73ac8e7c2e9" + }, + "lock": { + "askedMs": 7.013, + "lock": "/Users/yifanxu/.cache/layerfs-test/lfs527-sample.lock", + "waitMs": 2, + "load1": 3.185546875, + "grantedAt": "2026-10-31T20:58:09.703Z", + "staleRemoved": null + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + } + }, + "cellExit": { + "code": 0, + "signal": null, + "killed": false, + "stderr": "" + }, + "timings": { + "mountMs": 5.019, + "execWallMs": 424.697, + "commandMs": 398.209709, + "commitMs": 10.27, + "commitKind": "UpToDate", + "unmountMs": 5.89 + }, + "where": { + "kernel": "Linux 6.18.35", + "machine": "aarch64", + "cpus": "5", + "memKiB": "4144688", + "memBytes": null, + "cpuMax": null, + "id": "501:20" + }, + "teardownOk": true, + "endedAt": "2026-10-31T20:58:16.199Z" +} From b02242fd59338e20ad090cb2da7ea3513508237a Mon Sep 17 00:00:00 2001 From: YifanXu1999 Date: Sun, 1 Nov 2026 06:07:02 +0800 Subject: [PATCH 37/37] docs: #527 platform integration and consolidation design The design that the #527 platform pass implemented, written against layerfs_v2_0_0 at 81f8758bcf: support matrix, findings F1-F11, the target Rust and JS layouts, one LAYERFS_SANDBOX setting, the step plan and decisions D1-D7. The status banner records the owner's answers (all recommended, D1 platform/namespaces/) and points to PLATFORM-PASS.md for results. Production LOC: 123811 -> 123811 (delta 0). Docs only. Scope: core, engine and api production source; counted with tools/production_loc.py (blob 686d269d) at the parent and at this tree. Reference absent (retired R9c; last counted 65,417 at tree 498dd1917812). Co-Authored-By: Claude Opus 5.5 --- core/docs/issues/527/README.md | 545 +++++++++++++++++++++++++++++++++ 1 file changed, 545 insertions(+) create mode 100644 core/docs/issues/527/README.md diff --git a/core/docs/issues/527/README.md b/core/docs/issues/527/README.md new file mode 100644 index 000000000..b7206fe07 --- /dev/null +++ b/core/docs/issues/527/README.md @@ -0,0 +1,545 @@ +# #527 Sandbox platform integration and consolidation + +> **Status:** Design record; target LayerFS 2.0.0; not a released contract. +> Written 2026-11-01 against `layerfs_v2_0_0` at `81f8758bcf`, after the +> Area B merges (#523, #524, #525 with #427, #526). The owner answered +> D1–D7 (§9) on 2026-11-01 with the recommended options (D1: +> `platform/namespaces/`). The plan was implemented and checked by the +> terminal pass; its results, decisions and open findings are in +> [PLATFORM-PASS.md](PLATFORM-PASS.md). Findings and paths below describe +> the tree at `81f8758bcf`. + +## 1. Summary + +LayerFS now runs a Sandbox three ways (Docker, native, Linux namespaces) and +places its Store and daemons four ways (this host, Docker Desktop's VM, WSL2, +or a VM per project). The merges that added these left the code arranged by +history rather than by those two choices: + +- The Rust crate `layerfs-sandbox` keeps every backend under `backend/`, next + to OS facts, shared helpers and the helper binary's input format; + `provider/` reaches back into the runtime and into Docker. +- `@layerfs/runtime` makes 15 Docker calls in seven files, each guarded by a + flag its caller must remember. +- The backend is validated in two layers and, on a local placement, decided by + whatever `LAYERFS_SANDBOX*` values happen to be in the environment. + +This proposal names the two choices, gives each one owner, reorganizes both +packages around them, and fixes the defects found on the way. Each change is a +small commit; behaviour changes and file moves never share one (§8). + +## 2. Two choices + +| Word | Question | Values today | Owner | +| --- | --- | --- | --- | +| **Placement** | Whose Linux kernel opens the Store and runs the daemons? | `local` (this host, Docker Desktop's VM or WSL2), `vm:apple-container`, `vm:microsandbox`, `vm:ssh` | `@layerfs/runtime`: [`settings.js`][settings], `platform/` | +| **Backend** | How is one Sandbox run on that kernel? | `docker`, `native`, `namespaces` | `layerfs-sandbox`: `platform/` | + +The backend fixes the isolation: a container, Linux namespaces with a cgroup, +or none. The same folder name, `platform/`, means placement in the runtime and +backend in the Rust crate (D7). + +A VM provider only supplies the kernel. Inside the VM a Rust backend still +runs each Sandbox: `namespaces` in [#512][i512]'s route A, `docker` in its +route B. New providers such as E2B or Vercel therefore add a file to +`api/runtime/src/platform/vm/`, not a Rust backend. + +## 3. What is implemented + +### 3.1 Support matrix + +| Host | Placement | Backend | Status | Store opened by | Mount | Isolation | +| --- | --- | --- | --- | --- | --- | --- | +| Linux | local | docker | supported, default | Linux, in a Docker volume (ext4/xfs/btrfs) | FUSE | container | +| Linux | local | native | SDK only, as root; the runtime never selects it on purpose | Linux, at `LAYERFS_STORE_PATH` | FUSE | none | +| Linux | local | namespaces | SDK only: root, cgroup v2, `user.max_user_namespaces=0`, an image archive | Linux | FUSE | namespaces + cgroup | +| macOS | local | docker | supported through the worker container | Linux, in Docker Desktop's VM | FUSE | container | +| macOS | local | native | SDK only, in-process macOS addon | macOS, on apfs/hfs | loopback NFS | none | +| macOS | local | namespaces | refused `Unsupported` | — | — | — | +| Windows | local | docker | supported through the WSL2 worker | Linux, in WSL2 | FUSE | container | +| Windows | local | native, namespaces | not refused; reaches the WSL worker's Linux addon as root; untested | — | — | — | +| any | `vm:*` | namespaces (a host `LAYERFS_SANDBOX_BACKEND=native` overrides it) | implemented; only fake providers have run | Linux, on the VM's ext4 disk | FUSE | VM + namespaces | +| any | `vm:*` | docker | impossible: the VM deployment hard-codes `SANDBOX: "native"` | — | — | — | + +Sources: placement [`settings.js:40-48`][settings]; local deployment +[`clients.js:33-43`][clients]; VM deployment +[`vm/index.js:369-386`][vmindex]; backend [`runtime.rs:37-66`][noderuntime] +and [`local.rs:233-266`][nodelocal]; Store filesystems +[`kernel_guard.rs:32-90`][kernelguard]. + +### 3.2 Where each decision is made + +| Decision | Places | +| --- | --- | +| docker or native | [`client.js:73-77`][agentclient] and [`runtime.rs:57-66`][noderuntime], same message | +| native or namespaces | [`runtime.rs:37-52`][noderuntime] only; not checked in JS; ambient on a local placement | +| image needs of namespaces | [`client.js:113-117`][agentclient] and [`runtime.rs:91-114`][noderuntime] | +| FUSE or NFS | [`local.rs:315-335`][nodelocal], `native/provider.rs:93-104`, `namespaces/create.rs:194`, `layerfs-daemon/src/application/filesystem.rs:22-23` | +| Sandbox name | `layerfs-node/src/sandbox.rs:262-272`, [`local.rs:340-350`][nodelocal], `sandbox/sweep.js:23` | +| Store path inside a Docker volume | `platform/linux/index.js:34`, `platform/macos/index.js:133`, `platform/windows/index.js:138,150`, Rust `LOCATOR` | +| whether host Docker applies | `hostDocker`/`hostSandboxes` checks in `status.js`, `volume.js`, `sandbox/list.js`, `sandbox/leftovers.js`, `sandbox/sweep.js` | + +## 4. Findings + +Defects, each fixed by a step in §8: + +- **F1. `layerfs-sandbox` cannot compile on Windows.** `provider/launch.rs:2` + and the `From` impls in `provider/options.rs:139-178` use + `crate::backend` with no `cfg`, and `backend` is `#[cfg(unix)]` + (`lib.rs:5`). `layerfs-node` imports `backend::docker` without a `cfg` too. + No CI lane builds Windows. +- **F2. `Runtime::Windows` cannot exist on Windows.** It is declared in the + Unix-only `runtime.rs`, and only `tests/native_platform.rs:38` constructs + it. In `layerfs-node`, the `cfg(not(any(linux, macos)))` branch in + `local.rs:258-266` is dead on every target (`mod local` is itself gated to + Linux and macOS); the ones in `sandbox.rs:154-160` and + `discovery.rs:710-718` matter only on other Unix systems. [#452][i452] adds a + Windows Store route, not a Sandbox backend. +- **F3. Store calls crash on a `vm:` home.** `store.create` + ([`store/calls.js:123`][storecalls]), `start_load` (`store/sync.js:203`) and + `runInto` call `platform.init(settings)` with no project; the VM's `init` + reads `project.name` ([`vm/index.js:409-410`][vmindex]) and throws a plain + `TypeError` with no LayerFS code. `vm.storePath()` also ignores the volume, + so every Store would map to one guest file, and PostgreSQL Stores on `vm:` + homes are not refused explicitly. +- **F4. The local placement does not choose the backend.** Its deployment + ([`clients.js:33-43`][clients]) never sets `LAYERFS_SANDBOX`, + `_SANDBOX_BACKEND` or `_LOCAL_DIR`, so ambient values pass through; on `vm:` + a host `LAYERFS_SANDBOX_BACKEND=native` replaces `namespaces` + ([`vm/index.js:374`][vmindex]). +- **F5. Reopen is asymmetric.** A native record reopens under a namespaces + deployment (`discovery.rs:584-585` checks only `sandbox == native`); a + namespaces record under a native deployment is refused (`:680-692`). +- **F6. Local discovery sees only Docker.** On local placements + `runtime.sandbox.list`, `sweep` and `storeHolders` list containers only, so + removing a Store can miss native or namespaces holders. `vm:` homes already + use `project.list_sandboxes` ([`vm/index.js:342-348`][vmindex]). +- **F7. Documentation disagrees with code.** + + | Where | Says | Code | + | --- | --- | --- | + | [`api/docs/agent.md`][agentmd]`:150, 263-264` | native is macOS only; Linux keeps Docker only | Linux native exists (`local.rs:241-256`) | + | `agent.md:369, 373` | a namespaces Sandbox reports `image` as `local`, not a pinned image | it reports the digest (`runtime.rs:76-83`) | + | `agent.md:152, 362-364` | a record is never reopened as the other kind | see F5 | + | [`AGENTS.md`][agents] | VM providers "verified"; `project.remove` | only fakes ran; the call is `project.delete` | + | `api/cli/src/help.js:31-34` | lists the settings | omits seven `LAYERFS_*` settings | + | `layerfs-api/PROVIDERS.md:5`, `backend/windows/README.md` | four `Runtime` variants | `Namespaces` is missing | + | [`api/docs/runtime.md`][runtimemd] | anchor `#placement-one-linux-vm-per-home` | the heading is "per Store" | + | `core/docs/architecture/76-native-mount-session.md`, `nfs-native-lifecycle.md` | links into `core/crates` | the crates are in `engine/crates` | + + AGENTS.md also says direct Store access is Linux only, while + [`kernel_guard.rs:59-83`][kernelguard] accepts apfs/hfs for macOS native; + that is D5, not a doc fix. + +Structure, fixed by the layouts in §5–§6: + +- **F8. `provider/` is not a leaf.** `provider/launch.rs` needs the runtime's + `Sandbox` and `provider/options.rs` needs Docker's `SandboxRequest`. + (`types/` already is one, apart from `RuntimeError::Docker` behind + `cfg(unix)`.) +- **F9. Namespaces' use of native is hidden.** Namespaces is native with + namespaces added (`LAYERFS_SANDBOX=native`, + `LAYERFS_SANDBOX_BACKEND=namespaces`): it imports native's `Local`, + `LocalPaths`, `LocalPhase`, `LocalProcess` and `search`, Linux's `mounts`, + and five `backend/` helpers (`streams`, `listener`, `identity`, `HelperSpec`, + `json`). The imports are fine; the folders do not show the relationship. +- **F10. Docker in `@layerfs/runtime` has no home.** Docker argv is built in + `platform/shared.js` and in six files outside `platform/` (11 calls); `vm` + supplies a `docker()` that throws, and each caller checks a flag first. + `project/delete.js:65` is protected only because its container listing is. +- **F11. Small duplicates.** `STOPPED` (`shared.js:78`, `delete.js:52`); + `/var/lib/docker/volumes` (three places plus the setting default); `df -kP` + parsing (macOS, Windows, and the three VM providers); reading the worker + endpoint file (four places); the worker `releaseStore` call (Windows, VM); + `homeNames` and `removeHome` (linux, macos, vm). + +## 5. Target layout: `layerfs-sandbox` + +Scope: `engine/crates/layerfs-sandbox/src/` at `81f8758bcf`, counted with +`tools/production_loc.py --files` (blob `686d269d`). Removed files are listed +where they are today and counted in their folder; `—` marks a new file. Tests +live in `tests/` and are not counted. The listing shows D1 option C. + +```diff + src/ [8260] + lib.rs 11 (absorbs backend/mod.rs; root re-exports) + helper_spec.rs 110 (from backend/; the helper binary's input format) + runtime.rs 255 (from backend/; gains LaunchFailure; drops Windows) +- backend/ [33] (removed; partial: the rest is listed where it moves) +- mod.rs 21 (declarations move to lib.rs) +- identity.rs 12 (into types/identity.rs as ContainerId::random) + bin/ [434] (unchanged) + layerfs-sandbox-helper/ [434] + main.rs 45 + exec.rs 141 + init.rs 88 (HelperSpec import path) + mounts.rs 160 (HelperSpec import path) ++ json/ [403] (streaming JSON for Engine replies and image manifests) + mod.rs 231 (from backend/json.rs) + strings.rs 172 (from backend/) ++ platform/ [6488] (every Sandbox backend) ++ mod.rs — new (declarations) + docker/ [3078] (from backend/docker/; a container per Sandbox) + mod.rs 32 + create.rs 223 (from container.rs; stop and delete move to sandbox.rs) + endpoint.rs 273 ++ exec.rs — new (request.rs + provider_exec.rs + inspect.rs) + failure.rs 29 (from provider_failure.rs) +- headers.rs 29 (into client/body.rs) +- inspect.rs 94 (into exec.rs) + listener.rs 197 + provider.rs 118 +- provider_exec.rs 95 (into exec.rs) +- request.rs 131 (into exec.rs) + sandbox.rs 115 (from container_types.rs; gains stop, delete, DockerRecord From impls) + streams.rs 374 + topology.rs 189 + upload.rs 228 (from archive.rs) ++ client/ [951] (the Engine HTTP client) ++ mod.rs — new (declarations) + body.rs 180 (from docker/; absorbs headers.rs) + http.rs 566 (from docker/) + mux.rs 10 (from docker/) + socket.rs 119 (from docker/) + version.rs 76 (from docker/) + namespaces/ [1954] (from backend/namespaces/; Linux; D1) + mod.rs 11 + cgroup.rs 62 + create.rs 250 + exec.rs 103 + host.rs 79 + paths.rs 35 + provider.rs 194 + sandbox.rs 284 + rootfs/ [936] + mod.rs 8 + archive.rs 289 + cache.rs 121 + layers.rs 192 + tar.rs 304 + types.rs 22 + native/ [1456] (from backend/native/; one daemon process per Sandbox) + mod.rs 18 (alias platform becomes os) + create.rs 231 + exec.rs 109 + groups.rs 114 + listener.rs 56 (from backend/) + process.rs 59 + provider.rs 171 + sandbox.rs 271 + search.rs 13 + streams.rs 18 (from backend/) + linux/ [133] (from backend/linux/) + mod.rs 3 + mounts.rs 90 + process.rs 40 + macos/ [263] (from backend/macos/) + mod.rs 3 + darwin.rs 238 (the crate's only unsafe) + mounts.rs 22 +- provider/ [34] (removed; partial: the rest moves to types/) +- mod.rs 10 (into types/mod.rs) +- launch.rs 24 (into runtime.rs) + types/ [492] (values every backend shares) + mod.rs 13 (absorbs provider/mod.rs) + capabilities.rs 29 (from provider/) + execution.rs 32 + failure.rs 97 (absorbs transfer.rs) + identity.rs 62 (gains ContainerId::random) + image.rs 25 + options.rs 171 (from provider/; Docker From impls move out) + request.rs 46 +- transfer.rs 17 (into failure.rs) +``` + +- **One folder per backend, named as the setting names it.** + `platform/{docker, native, namespaces}` match the `LAYERFS_SANDBOX` values + (§7), the `Runtime` variants and the record values. `runtime.rs` stays at the + root as the one `match` over them; it also takes `LaunchFailure`. +- **The same file names for the same roles.** Each backend has `provider.rs` + (what `Runtime` holds), `create.rs` (start one Sandbox), `sandbox.rs` (a + running Sandbox: stop, delete, inspect) and `exec.rs` (one command). Docker + gets there by renaming `container_types → sandbox` and `container → create`, + moving its stop and delete into `sandbox.rs`, and joining `request`, + `provider_exec` and `inspect` into `exec.rs`. `listener.rs` and `streams.rs` + already match between Docker and native. +- **`docker/client/` is the Engine HTTP client**: `http`, `socket`, `body` + (with `headers`), `mux` and `version`. `listener.rs` and `streams.rs` still + read its `Socket`, `Body` and `mux::header`, so its `pub(super)` items become + `pub(in crate::platform::docker)`. +- **`native/` holds the local process lifecycle and its OS facts.** `linux/` + and `macos/` become children of the only code that reads them; native's + `use super::linux as platform` alias becomes `os`, so it no longer shadows + `crate::platform`. Namespaces keeps importing native's lifecycle as a + sibling, which is ordinary Rust; the doc comment on `namespaces/mod.rs` + says so. +- **Shared pieces sit at the root:** `json/` (Docker replies and namespaces' + image manifests), `helper_spec.rs` (the input format shared by namespaces and + `bin/layerfs-sandbox-helper`, compiled on every Unix as today) and `types/`. +- **`types/` takes `provider/`.** Capabilities and options move in; + `ContainerId::random` joins `identity.rs` under `cfg(unix)`; the Docker + `From` impls move to `docker/sandbox.rs` and `LaunchFailure` to + `runtime.rs`. `types/` then depends on no backend except through + `RuntimeError::Docker`. +- **Renames only where a name misleads:** the four Docker files above. `host.rs`, + `rootfs/types.rs` and `types/identity.rs` keep their names. +- **Windows:** `Runtime::Windows` and `backend/windows/README.md` go (D2); + `PROVIDERS.md` states that Windows runs the Linux build through WSL2 or a VM. + +Build notes, from reading the source (nothing was built): + +- `platform/`, `runtime.rs` (with `LaunchFailure`) and `json/` keep + `#[cfg(unix)]`; they no longer inherit it from `backend`. +- `json/mod.rs` and `strings.rs` import each other through `super::`; both + paths change. +- `native/` stays gated to Linux and macOS and `namespaces/` to Linux, as + today; `HelperSpec` stays on every Unix. + +### 5.1 Public surface + +Modules become private. The crate root re-exports what every caller uses: +`Runtime`, `Sandbox`, `LaunchFailure`, the `types/` items, the four providers, +`Docker` and `HelperSpec`. Items specific to one backend stay in one public +module per backend, re-exported at the root so no external path names +`platform/`: `layerfs_sandbox::docker::…`, `::native::…`, `::namespaces::…`. +That keeps the four `Sandbox` types apart without renaming them; a flat root +would collide on `Sandbox`. The unused `DockerInstance`, +`NativeLinuxInstance` and `NativeMacosInstance` aliases go, and `LocalExit` +becomes `ExecExit`. + +Paths that change, as occurrences in other crates, examples and tests +(grouped imports included): `backend::docker::` 22, `backend::native::` 12, +`backend::namespaces::` 5, `backend::HelperSpec` 3, `provider::` 27. The 12 +names the root exports today keep their paths. + +## 6. Target layout: `@layerfs/runtime` + +Scope: `api/runtime/src/` at `81f8758bcf`, same counter; only the files this +change touches are listed. + +```diff + src/ [2199] (partial: files this change touches) + clients.js 91 (both deployments name the backend) + index.js 145 (picks docker/ or vm/) + settings.js 117 (one Sandbox setting; host-OS check per VM provider) + status.js 26 (uses platform.docker) + volume.js 55 (uses platform.docker.disk) + platform/ [1146] + shared.js 62 (worker endpoint, homes, refusals, df parsing) ++ docker/ [295] (the local placement: Docker on this host, Docker Desktop or WSL2) ++ index.js — new (the Docker group, built on each platform's own docker call) ++ disk.js — new (disk use and volume removal for runtime.volume) + linux.js 34 (from linux/index.js) + macos.js 109 (from macos/index.js; Docker Desktop worker) ++ sandboxes.js — new (list, inspect, leftovers, remove; STOPPED) ++ stores.js — new (Store volumes, keyed by Store) + windows/ [152] (from windows/) + index.js 135 (WSL2 worker; docker through wsl.exe) + paths.js 17 + vm/ [789] (vm:: one VM per project; no Docker group) + index.js 312 (Store-keyed hooks refuse; init checks its project) + cli.js 30 + apple-container.js 91 + microsandbox.js 72 + ssh.js 284 + project/ [166] (partial) + delete.js 51 (uses platform.docker.sandboxes) + init.js 115 (platform.name branches become capabilities) + sandbox/ [94] (partial) + leftovers.js 33 (uses platform.docker.sandboxes) + list.js 40 (uses platform.docker.sandboxes) + sweep.js 21 (matches labels, not names) + store/ [326] (partial) + calls.js 139 (makeVolume moves to docker/stores.js) + sync.js 176 + volume.js 11 (Store-keyed hooks) + worker/ [33] (partial) + call.js 33 (one endpoint read and releaseStore call) +``` + +- **`platform/` keeps meaning placement, and has two children**, one per + `LAYERFS_PLACEMENT` kind: `docker/` for `local` (Docker on this host, in + Docker Desktop or in WSL2) and `vm/` for `vm:`. The three Docker + placements move into `docker/` beside what they share (D4). +- **One Docker group replaces three flags.** linux, macos and windows expose + `platform.docker`, built in `docker/index.js` from that platform's own call: + `run` (the host socket on Linux and macOS, `wsl.exe` on Windows), + `sandboxes`, `stores`, `disk` and `version`. `vm` has no `platform.docker`. + `hostDocker`, `hostSandboxes` and the throwing `vm.docker` go. A caller that + finds no group refuses `Unsupported`; that refusal is new (today + `runtime.vm` is simply absent on local placements). Helpers always reach + Docker through `runtime.platform.docker.run`, so tests can still replace it. +- **Store hooks are keyed by Store, not by project.** `createStore` and + `removeStore` join `store/calls.js` `makeVolume` and `shared.js` + `makeStore`; the `vm` versions refuse cleanly until a VM home can hold + Stores (F3). +- **F11's duplicates land once:** `STOPPED` in `docker/sandboxes.js`; the + volumes directory from `settings.volumes` in `docker/index.js`; `df -kP` + parsing, `homeNames` and `removeHome` in `shared.js`; the endpoint read and + `releaseStore` call in `worker/call.js`. +- **Branches on `platform.name` become capabilities** (`initCounts`, + `uncertainInit`; `project/init.js:110, 112, 141, 143`). `platform.name` + stays in `init-failures.jsonl` and messages. +- **Unchanged:** `worker/server.js`'s path (hard-coded in macos, windows, vm, + three test fixtures and a plugin guide) and `vm:ssh`. + +## 7. Settings + +One Sandbox setting replaces two (D3): + +| `LAYERFS_SANDBOX` | Backend | Replaces | +| --- | --- | --- | +| unset or `docker` | docker | `LAYERFS_SANDBOX` unset or `docker` | +| `native` | native | `native` with backend unset or `native` | +| `namespaces` | namespaces | `native` with `LAYERFS_SANDBOX_BACKEND=namespaces` | + +The old pair keeps working for one release. Rust +([`layerfs-node/src/runtime.rs`][noderuntime]) is the one validator and maps +the old pair; JS only checks that the fields each value needs are present. +The runtime always names the backend: local sets `docker`, and `vm:` sets +`namespaces` from its settings, not from `process.env` (F4). + +### 7.1 Names that do not change + +- Record `runtime` values `native`, `namespaces` and `local` + (`layerfs-node/src/runtime.rs:18-24`), and every `layerfs.*` label. +- Capability names `docker`, `native-linux`, `native-macos`, + `namespaces-linux`. +- The helper binary `layerfs-sandbox-helper`, `LAYERFS_SANDBOX_HELPER`, the + spec field names and their asserted errors. +- On-disk names: cgroup `layerfs`, image cache `images`, `daemon.log`, + `groups`, `LAYERFS_DAEMON_LISTEN`, `/layerfs-store`, `/layerfs-local/...`. +- `settings.platform` values, `LAYERFS_PLACEMENT` values and `platform.name` + text. +- Rust variants `Runtime::Namespaces`, `SandboxRecord::Namespaces` and + `ProviderLaunchOptions::Namespaces`. + +## 8. Plan + +Each step is one commit with its production LOC line. "Gated by" names what +must come first. + +| Step | Change | Kind | Gated by | +| --- | --- | --- | --- | +| 1 | Fix the F7 drift that no later step changes (all rows except reopen and settings; not D5) | docs | — | +| 2 | `vm:` homes refuse Store-level calls and PostgreSQL projects before any effect; `vm.init` checks its project (F3) | behaviour | — | +| 3 | Both deployments name the backend (F4) | behaviour | — | +| 4 | Reopen requires the deployment's backend (F5), with a test and the `agent.md` reopen text. Native records reopened under a namespaces deployment, including on `vm:` homes, stop reopening: a compatibility break to state in the commit | behaviour | 3 | +| 5 | One Rust `sandbox_name`, used by `sandbox.rs` and `local.rs` | behaviour | — | +| 6 | The provider alone chooses FUSE or NFS; the daemon keeps its check as an assertion | behaviour | — | +| 7 | Remove `Runtime::Windows` and the dead branches (F2); gate F1 | behaviour | D2, D6 | +| 8 | Host-OS check per VM provider (Apple Container on macOS only); JS refuses native and namespaces on Windows | behaviour | — | +| 9a | `provider/` into `types/`, `LaunchFailure` into `runtime.rs`, Docker `From` impls into Docker (F8) | move | — | +| 9b | `backend/` into `platform/`, `json/` and root files; private modules and the §5.1 public paths; callers, guard and docs updated | move | 9a, D1 | +| 9c | Docker renames and joins, `docker/client/`, the `os` alias, `ExecExit` | move | 9b | +| 10a | `platform/docker/` with the Docker group; Docker placements move in | move | D4 | +| 10b | Store-keyed hooks | behaviour | 2, 10a | +| 10c | F11 duplicates | move | 10a | +| 10d | `platform.name` branches become capabilities | move | — | +| 11 | One Sandbox setting with the mapping; CLI help lists every setting | behaviour | 3, D3 | +| 12 | Local discovery of native and namespaces Sandboxes through `project.list_sandboxes`, reusing the `vm` code (F6); `sweep` matches labels | behaviour | 5, 10a | + +Notes for the move steps: + +- **9b** updates `tools/check_product_boundary.py:21,27` (the audited + `src/backend/macos/darwin.rs`), its test + `tools/test_check_product_boundary.py:127-135` (which also names + `backend/docker/http.rs`), the `lib.rs` comment, both `PROVIDERS.md` files, + the source doc-links, and every caller in §5.1. Historical + `core/docs/issues/**` records keep their old paths. +- **Tests follow AGENTS.md's refactor rule.** Tests that drive removed + internals (`hostDocker`, the throwing `vm.docker`, `backend::` paths that no + longer exist) are deleted rather than adapted when adapting is not cheap, + listed in the commit message and covered on the new code where the behaviour + survives. Test files are renamed only if D1 picks a new folder name. + +Verification follows [`engine/AGENTS.md`][engineagents] (checks and +completion) and [`api/AGENTS.md`][apiagents]; every test command is capped at +120 s. + +## 9. Owner decisions + +- **D1. Where the namespaces backend lives, and its name.** + - **C (recommended): `platform/namespaces/`, a sibling of `docker/` and + `native/`.** The folder matches the setting value, the `Runtime` variant + and the record value; there is no extra level; no backend sits inside + another. Cost: namespaces imports native's lifecycle from a sibling. + - **B (owner direction, 2026-11-01): `platform/vm/`,** with Rust types + renamed `Vm…` and the record value `namespaces` kept. For it: the backend + exists for VM placements, and its own `mod.rs` describes "the project's + VM". Against it: the code needs root, cgroup v2 and blocked user + namespaces, not a VM; `vm` already names a placement; a VM placement can + run the `docker` backend (#512 route B); and Rust names would no longer + match the setting. + - **A: `platform/native/namespaces/`.** Shows that namespaces is native with + namespaces added. Against it: a backend sits beside the OS folders `linux/` + and `macos/`, "native" means no isolation, and paths reach five levels. +- **D2. Windows placeholder.** Remove `Runtime::Windows` and its README + (recommended), or keep a README at `platform/native/windows/`. +- **D3. Setting name.** `LAYERFS_SANDBOX=docker|native|namespaces` + (recommended), or a new `LAYERFS_ISOLATION=container|none|namespaces`. +- **D4. Runtime folders.** Nest the three Docker placements under + `platform/docker/` (recommended, §6), or keep `platform/{linux, macos, + windows}/` flat beside a helper folder `platform/docker/`. +- **D5. macOS native Store.** `kernel_guard.rs` lets the macOS addon open a + Store on apfs/hfs (#427); AGENTS.md says direct Store access is Linux only. + Add a macOS native exception to AGENTS.md, or restrict the guard. +- **D6. Windows build.** Gate the crates so they compile on Windows, with a + build-only CI lane that reports (CI never gates), or document that + `layerfs-sandbox` and `layerfs-node` are Unix only. +- **D7. One word, two meanings.** Keep `platform/` in both packages, as + placement in the runtime and backend in Rust (recommended; each package + documents its meaning), or name the Rust folder after what it holds. + +## 10. Not verified + +Reported `NOT_RUN` until done, at the commit that lands the relevant step: + +- `api/runtime/test/verify/vm_real.mjs` for Apple Container and Microsandbox + (#526 ran fake providers only), and any real `vm:ssh` run (no script + exists). +- `namespaces_userns` and `namespaces_lifecycle` as root at HEAD (one root + pass on a rehearsal tree only). +- Linux native end to end as root. +- The bare macOS SDK with a Docker deployment, to settle whether + `kernel_guard` should check the deployment instead of the OS. +- macOS `releaseStore` is a no-op although its worker caches open Stores; a + volume removal may race a Store the worker still holds (read from code, not + reproduced). +- Any Windows build (F1, D6). + +## 11. Related + +- [#512][i512] tested which agent sandboxes can replace the Docker container. + Route A (no Docker, namespaces inside the platform's VM) passed end to end + on Microsandbox, Apple Container and a Firecracker guest; Daytona and the + Lima VM ran route B (nested Docker) only. +- [#515][i515] designed the per-project VM placement; [#526][i526] implemented + it. #526 is merged into `layerfs_v2_0_0` only (`81f8758bcf`); on GitHub it + is closed against `main` without a merge. It does not support Daytona, E2B, + Vercel or Modal yet: shared-kernel runners need a seccomp filter. +- [#452][i452] adds a Windows Store route, not a Sandbox backend. +- [#523][i523], [#524][i524], [#525][i525] and [#427][i427] added native + Sandboxes on Linux and macOS. + +[settings]: ../../../../api/runtime/src/settings.js +[clients]: ../../../../api/runtime/src/clients.js +[vmindex]: ../../../../api/runtime/src/platform/vm/index.js +[storecalls]: ../../../../api/runtime/src/store/calls.js +[agentclient]: ../../../../api/agent/src/client.js +[noderuntime]: ../../../../engine/crates/layerfs-node/src/runtime.rs +[nodelocal]: ../../../../engine/crates/layerfs-node/src/local.rs +[kernelguard]: ../../../../engine/crates/layerfs-store-service/src/kernel_guard.rs +[agentmd]: ../../../../api/docs/agent.md +[runtimemd]: ../../../../api/docs/runtime.md +[agents]: ../../../../AGENTS.md +[engineagents]: ../../../../engine/AGENTS.md#checks-and-completion +[apiagents]: ../../../../api/AGENTS.md +[i427]: https://github.com/Ephemeral-AI-Lab/layerfs/pull/427 +[i452]: https://github.com/Ephemeral-AI-Lab/layerfs/pull/452 +[i512]: https://github.com/Ephemeral-AI-Lab/layerfs/issues/512 +[i515]: https://github.com/Ephemeral-AI-Lab/layerfs/pull/515 +[i523]: https://github.com/Ephemeral-AI-Lab/layerfs/pull/523 +[i524]: https://github.com/Ephemeral-AI-Lab/layerfs/pull/524 +[i525]: https://github.com/Ephemeral-AI-Lab/layerfs/pull/525 +[i526]: https://github.com/Ephemeral-AI-Lab/layerfs/pull/526