{"record":{"id":"85385b967b4fb5aa","repo":"BigPizzaV3/CodexPlusPlus","slug":"manifest-85385b","errorCode":null,"errorMessage":"manifest 发布者、许可证或来源说明为空","messagePattern":"manifest 发布者、许可证或来源说明为空","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codex-plus-core/src/dream_skin_package.rs","lineNumber":966,"sourceCode":"        bail!(\"manifest.capabilities 无效或缺少 safe-css 能力\");\n    }\n    if !safe_manifest_text(&manifest.publisher.display_name, 1, 80, false)\n        || manifest.publisher.id.is_empty()\n        || manifest.publisher.id.len() > 64\n        || !manifest\n            .publisher\n            .id\n            .bytes()\n            .all(|byte| byte.is_ascii_alphanumeric() || matches!(byte, b'_' | b'-'))\n        || manifest.license.is_empty()\n        || manifest.license.len() > 64\n        || !manifest.license.bytes().enumerate().all(|(index, byte)| {\n            byte.is_ascii_alphanumeric()\n                || (index > 0 && matches!(byte, b' ' | b'.' | b'+' | b'(' | b')' | b'-'))\n        })\n        || !safe_manifest_text(&manifest.provenance.summary, 1, 500, true)\n    {\n        bail!(\"manifest 发布者、许可证或来源说明为空\");\n    }\n    if manifest\n        .key_id\n        .as_deref()\n        .is_some_and(|key| !valid_key_id(key))\n        || !valid_rfc3339(&manifest.created_at)\n    {\n        bail!(\"manifest keyId 或 createdAt 无效\");\n    }\n    if manifest.files.len() < 2 || manifest.files.len() > 8 {\n        bail!(\"manifest.files 数量无效\");\n    }\n    Ok(())\n}\n\nfn validate_theme(\n    theme: &Value,\n    manifest: &DreamSkinPackageManifest,","sourceCodeStart":948,"sourceCodeEnd":984,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/crates/codex-plus-core/src/dream_skin_package.rs#L948-L984","documentation":"validate_manifest 对发布者与法律元数据的组合校验失败：publisher.display_name 未通过 safe_manifest_text(1..80)、publisher.id 为空或超 64 字符或含非法字符、license 为空/超 64/含非法字符，或 provenance.summary 未通过 safe_manifest_text(1..500)。这些字段用于主题来源展示与信任判断。","triggerScenarios":"Thrown at crates/codex-plus-core/src/dream_skin_package.rs:966 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["补全 publisher.id/display_name、license 和 provenance.summary","publisher.id 只用字母数字、下划线和连字符","把 summary 控制在 500 字符内并去掉控制字符"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f2074595a281bc057525c748175c8eb9805b0673","analyzedAt":"2026-08-23T12:52:24.489Z","contentChangedAt":"2026-08-23T12:52:24.489Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}