{"record":{"id":"a52137c2b2d545ed","repo":"clockworklabs/SpacetimeDB","slug":"unknown-misc-export","errorCode":null,"errorMessage":"unknown misc export","messagePattern":"unknown misc export","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/schema/src/def/validate/v9.rs","lineNumber":1620,"sourceCode":"        }\n    }\n\n    ErrorStream::add_extra_errors(Ok((reducers_map, procedures_map, views_map)), errors)\n}\n\nfn check_non_procedure_misc_exports(\n    misc_exports: Vec<RawMiscModuleExportV9>,\n    validator: &ModuleValidatorV9,\n    tables: &mut IdentifierMap<TableDef>,\n) -> Result<()> {\n    misc_exports\n        .into_iter()\n        .map(|export| match export {\n            RawMiscModuleExportV9::ColumnDefaultValue(cdv) => process_column_default_value(&cdv, validator, tables),\n            RawMiscModuleExportV9::Procedure(_proc) => {\n                unreachable!(\"Procedure defs should already have been sorted out of `misc_exports`\")\n            }\n            _ => unimplemented!(\"unknown misc export\"),\n        })\n        .collect_all_errors::<()>()\n}\n\nfn process_column_default_value(\n    cdv: &RawColumnDefaultValueV9,\n    validator: &ModuleValidatorV9,\n    tables: &mut IdentifierMap<TableDef>,\n) -> Result<()> {\n    // Validate the default value\n    let validated_value = validator.validate_column_default_value(tables, cdv)?;\n\n    let table_name = validator.core.resolve_identifier_with_case(cdv.table.clone())?;\n    let table = tables\n        .get_mut(&table_name)\n        .ok_or_else(|| ValidationError::TableNotFound {\n            table: cdv.table.clone(),\n        })?;","sourceCodeStart":1602,"sourceCodeEnd":1638,"githubUrl":"https://github.com/clockworklabs/SpacetimeDB/blob/524b4487d949b61a07d4f39c862d1290259dfd20/crates/schema/src/def/validate/v9.rs#L1602-L1638","documentation":"After procedure exports are sorted out earlier in the pipeline, check_non_procedure_misc_exports (crates/schema/src/def/validate/v9.rs:1620) handles only ColumnDefaultValue; the Procedure arm is unreachable!() (proving the list is pre-filtered) and every other misc-export variant hits unimplemented!(). The branch exists to catch module ABIs carrying export kinds this host cannot interpret.","triggerScenarios":"Publishing a module whose ABI contains a misc export other than a column default value or a procedure — typically a module produced by a newer SDK enabling a feature the host predates.","commonSituations":"Version skew: module built with a preview/newer spacetimedb SDK while the server runs an older minor; enabling experimental module features in Rust and publishing to a stable cluster.","solutions":["Align versions: update the host, or pin the SDK to the host's version, then rebuild the module and republish","Disable/remove preview module features that emit new export kinds","Verify with spacetime version that module toolchain and host agree before publishing"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# Gate publish on version compatibility:\nHOST=$(spacetime version)\nSDK=$(cargo tree -p spacetimedb --depth 0 | grep -o 'spacetimedb v[0-9.]*')\n# fail the pipeline if SDK major.minor > HOST major.minor before calling spacetime publish","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep one source of truth for the SpacetimeDB version across module SDK, CLI, and server","Avoid preview module features in production publishes","Smoke-publish to a throwaway database after any version bump"],"tags":["schema","module-exports","validation","abi","version-skew","unimplemented","spacetimedb"],"backgroundTag":"abi-version-mismatch","analyzedSha":"524b4487d949b61a07d4f39c862d1290259dfd20","analyzedAt":"2026-08-16T23:58:54.611Z","schemaVersion":2},"datasetVersion":"2026-08-17T04:17:16.089Z"}