{"record":{"id":"b1410d92ab0485a3","repo":"OpenBMB/ChatDev","slug":"design-parsing-failed-for-config-path-exc","errorCode":null,"errorMessage":"Design parsing failed for '{config_path}': {exc}","messagePattern":"Design parsing failed for '(.+?)': (.+?)","errorType":"exception","errorClass":"DesignError","httpStatus":null,"severity":"error","filePath":"check/check.py","lineNumber":84,"sourceCode":"        raise DesignError(\"YAML root must be a mapping\")\n\n    if vars_override:\n        merged_vars = dict(raw_data.get(\"vars\") or {})\n        merged_vars.update(vars_override)\n        raw_data = dict(raw_data)\n        raw_data[\"vars\"] = merged_vars\n\n    data = prepare_design_mapping(raw_data, source=str(config_path))\n\n    schema_errors = validate_design(data, set_defaults=set_defaults, fn_module_ref=fn_module)\n    if schema_errors:\n        formatted = \"\\n\".join(f\"- {err}\" for err in schema_errors)\n        raise DesignError(f\"Design validation failed for '{config_path}':\\n{formatted}\")\n\n    try:\n        design = DesignConfig.from_dict(data, path=\"root\")\n    except ConfigError as exc:\n        raise DesignError(f\"Design parsing failed for '{config_path}': {exc}\") from exc\n\n    logic_errors = check_workflow_structure(data)\n    if logic_errors:\n        formatted = \"\\n\".join(f\"- {err}\" for err in logic_errors)\n        raise DesignError(f\"Workflow logical issues detected for '{config_path}':\\n{formatted}\")\n    else:\n        print(\"Workflow OK.\")\n\n    graph = data.get(\"graph\") or {}\n    _ensure_supported(graph)\n\n    return design\n\n\ndef check_config(yaml_content: Any) -> str:\n    if not isinstance(yaml_content, dict):\n        return \"YAML root must be a mapping\"\n","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/OpenBMB/ChatDev/blob/4fb2db0ea90375ce1059f44fe03ffbd191a7a169/check/check.py#L66-L102","documentation":"500 returned by GET of Vue graph content when loading the file raises an unexpected exception (not merely a missing file). The true exception is logged with the filename before this generic message is returned.","triggerScenarios":"GET /api/vuegraphs/{filename} where the file exists but reading fails: permission denied, file locked, corrupted storage backend.","commonSituations":"Permission changes after deployment; files created by another user; partial writes leaving unreadable files.","solutions":["Check server logs for 'Failed to load Vue graph content' with the real error.","Fix read permissions on the graph file and its directory.","If the file is corrupted, restore from source or re-save the graph."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"catch (e) { if (e.status === 500 && e.detail === 'Unable to read graph content') reportServerIssue(filename); }","preventionTips":["Fix read permissions on graph storage","Keep the log correlation (filename) handy when reporting"],"tags":["vuegraph","storage","internal-error","fastapi"],"backgroundTag":"file-read-failed","analyzedSha":"4fb2db0ea90375ce1059f44fe03ffbd191a7a169","analyzedAt":"2026-08-27T14:35:29.622Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}