{"record":{"id":"88f2bf8c532d7f2b","repo":"astrid-runtime/astrid","slug":"unsupported-fuse-service-launch-schema","errorCode":null,"errorMessage":"unsupported FUSE service launch schema {}","messagePattern":"unsupported FUSE service launch schema (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/astrid-storage-provider-fuse/src/service.rs","lineNumber":47,"sourceCode":"/// Run the hidden target-free service mode.\npub(crate) async fn run() -> Result<()> {\n    let mut bytes = Vec::new();\n    std::io::stdin()\n        .lock()\n        .take(MAX_LAUNCH_BYTES + 1)\n        .read_to_end(&mut bytes)\n        .context(\"read target-free FUSE service launch\")?;\n    if bytes.len() as u64 > MAX_LAUNCH_BYTES {\n        bail!(\"FUSE service launch exceeds limit\");\n    }\n    let launch: StorageProviderServiceLaunchV1 =\n        serde_json::from_slice(&bytes).context(\"decode target-free FUSE service launch\")?;\n    run_launch(launch).await\n}\n\nasync fn run_launch(launch: StorageProviderServiceLaunchV1) -> Result<()> {\n    if launch.schema != STORAGE_FILESYSTEM_SERVICE_LAUNCH_SCHEMA_V1 {\n        bail!(\"unsupported FUSE service launch schema {}\", launch.schema);\n    }\n    validate_launch(&launch)?;\n    let challenge = storage_provider_service_ready_challenge(\n        &launch.parent.token,\n        STORAGE_FILESYSTEM_SERVICE_READY_SCHEMA_V1,\n        crate::PROVIDER_NAME,\n        launch.lease.mount_id.as_uuid(),\n        &launch.control_path,\n        &launch.lease.resource_path,\n        &launch.lease.callback_path,\n    )\n    .map_err(|error| anyhow::anyhow!(error))?;\n    if !parent_is_alive(&launch.parent) {\n        bail!(\"FUSE service parent process is not alive\");\n    }\n    probe_callback(&launch).await?;\n    let listener = bind_control_listener(&launch.control_path)?;\n    let mut session = match filesystem::start_session(launch.lease.clone(), &launch.mountpoint) {","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/astrid-runtime/astrid/blob/affd8760f44190dbdfbec23403f4c4b642c33112/crates/astrid-storage-provider-fuse/src/service.rs#L29-L65","documentation":"run_launch validates that the decoded launch payload's schema field equals STORAGE_FILESYSTEM_SERVICE_LAUNCH_SCHEMA_V1. Any other schema string is rejected, because the service only implements that launch contract version.","triggerScenarios":"Sending a launch JSON with schema set to a different version (V0, V2) or a schema string from another provider/service type.","commonSituations":"Caller and service version skew after an upgrade; hand-written launch documents with a wrong or typo'd schema string; copying a launch doc from a different provider.","solutions":["Update the caller to emit STORAGE_FILESYSTEM_SERVICE_LAUNCH_SCHEMA_V1 in the schema field","Upgrade or downgrade the service/caller pair so versions match","Fix the schema string in the launch document to the exact expected constant","Regenerate the launch payload with the current SDK/tooling version"],"exampleFix":"// before\n{\"schema\":\"astrid.storage.filesystem.launch.v0\", ...}\n// after\n{\"schema\":\"astrid.storage.filesystem.launch.v1\", ...}","handlingStrategy":"validation","validationCode":"fn launch_schema_is_supported(launch: &StorageProviderServiceLaunchV1) -> bool {\n    launch.schema == STORAGE_FILESYSTEM_SERVICE_LAUNCH_SCHEMA_V1\n}","typeGuard":"fn has_supported_schema(launch: &StorageProviderServiceLaunchV1) -> bool {\n    launch.schema == STORAGE_FILESYSTEM_SERVICE_LAUNCH_SCHEMA_V1\n}","tryCatchPattern":"match run().await {\n    Err(e) if e.to_string().starts_with(\"unsupported FUSE service launch schema\") => {\n        eprintln!(\"caller/service version mismatch; align launch schema to v1\");\n    }\n    other => other?,\n}","preventionTips":["Always set the schema field from the shared constant, not a literal","Keep caller and service versions in lockstep during upgrades","Validate the schema string before piping the launch document","Copy launch docs only from the matching provider type"],"tags":["fuse","schema","versioning"],"backgroundTag":"schema-validation-failed","analyzedSha":"affd8760f44190dbdfbec23403f4c4b642c33112","analyzedAt":"2026-09-09T21:28:12.402Z","contentChangedAt":"2026-09-09T21:28:12.402Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}