astrid-runtime/astrid · error

{error}

Error message

{error}

What it means

Validation guard in run_launch (error string is the underlying message passed through): the FUSE service launch failed validate_launch — schema mismatch, invalid lease/token, or bad mount parameters — and the specific reason is carried verbatim in the error.

Solutions

  1. Fix the launch parameters named in the embedded error and retry the mount
  2. Verify the parent process emits the current STORAGE_FILESYSTEM_SERVICE_LAUNCH_SCHEMA_V1 launch payload
  3. Check that the lease token and mount id are fresh and match the registry record
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/astrid-storage-provider-fuse/src/service.rs:59 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of astrid-runtime/astrid@affd8760f4 (2026-09-09). Data as JSON: /api/errors/1ab6feee9d744ae7. Report an issue: GitHub.

Appendix: source

Thrown at crates/astrid-storage-provider-fuse/src/service.rs:59

        serde_json::from_slice(&bytes).context("decode target-free FUSE service launch")?;
    run_launch(launch).await
}

async fn run_launch(launch: StorageProviderServiceLaunchV1) -> Result<()> {
    if launch.schema != STORAGE_FILESYSTEM_SERVICE_LAUNCH_SCHEMA_V1 {
        bail!("unsupported FUSE service launch schema {}", launch.schema);
    }
    validate_launch(&launch)?;
    let challenge = storage_provider_service_ready_challenge(
        &launch.parent.token,
        STORAGE_FILESYSTEM_SERVICE_READY_SCHEMA_V1,
        crate::PROVIDER_NAME,
        launch.lease.mount_id.as_uuid(),
        &launch.control_path,
        &launch.lease.resource_path,
        &launch.lease.callback_path,
    )
    .map_err(|error| anyhow::anyhow!(error))?;
    if !parent_is_alive(&launch.parent) {
        bail!("FUSE service parent process is not alive");
    }
    probe_callback(&launch).await?;
    let listener = bind_control_listener(&launch.control_path)?;
    let mut session = match filesystem::start_session(launch.lease.clone(), &launch.mountpoint) {
        Ok(session) => Some(session),
        Err(error) => {
            let _ = std::fs::remove_file(&launch.control_path);
            return Err(error);
        },
    };
    let ready = StorageProviderServiceReadyV1 {
        schema: STORAGE_FILESYSTEM_SERVICE_READY_SCHEMA_V1,
        provider: crate::PROVIDER_NAME.to_owned(),
        mount_id: launch.lease.mount_id.as_uuid(),
        control_path: launch.control_path.clone(),
        challenge,

View on GitHub (pinned to affd8760f4)