{"record":{"id":"190ad61eee20aff0","repo":"bytedance/deer-flow","slug":"openviking-name-must-be-a-boolean","errorCode":null,"errorMessage":"OpenViking {name} must be a boolean","messagePattern":"OpenViking (.+?) must be a boolean","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"backend/packages/harness/deerflow/agents/memory/backends/openviking/config.py","lineNumber":173,"sourceCode":"    if not isinstance(value, dict):\n        raise ValueError(f\"OpenViking {name} must be a mapping\")\n    return dict(value)\n\n\ndef _optional_float(value: Any) -> float | None:\n    return None if value is None else float(value)\n\n\ndef _boolean(value: Any, name: str) -> bool:\n    if isinstance(value, bool):\n        return value\n    if isinstance(value, str):\n        normalized = value.strip().lower()\n        if normalized in {\"true\", \"1\", \"yes\", \"on\"}:\n            return True\n        if normalized in {\"false\", \"0\", \"no\", \"off\"}:\n            return False\n    raise ValueError(f\"OpenViking {name} must be a boolean\")\n","sourceCodeStart":155,"sourceCodeEnd":174,"githubUrl":"https://github.com/bytedance/deer-flow/blob/1dd6ba1acb03700589994b0366c5d1c7d05e2eff/backend/packages/harness/deerflow/agents/memory/backends/openviking/config.py#L155-L174","documentation":"The _boolean() helper in the OpenViking config parser rejects a value that is neither a bool nor a recognized boolean string. It is only used for memory.backend_config.allow_insecure_http. Accepted inputs: true/false (YAML booleans) and the case-insensitive strings 'true','1','yes','on' / 'false','0','no','off'.","triggerScenarios":"Setting memory.backend_config.allow_insecure_http to an unrecognized value such as 'maybe', 'trusted', an integer other than 0/1 strings (e.g. 2), or a YAML string like 'TRUE ' is fine after strip/lower but 'y', 'enabled' fail. Raised during OpenVikingConfig.from_backend_config.","commonSituations":"Typing allow_insecure_http: yes!! or 'y' in config.yaml, or passing a YAML-quoted value like \"enabled\" copied from other tools' configs.","solutions":["Set allow_insecure_http: true or false (plain YAML boolean) in memory.backend_config","If a string is unavoidable, use one of true/1/yes/on or false/0/no/off (case-insensitive)","Restart the Gateway after the config edit"],"exampleFix":"# before (config.yaml)\nmemory:\n  backend_config:\n    allow_insecure_http: enabled   # not recognized\n\n# after\nmemory:\n  backend_config:\n    allow_insecure_http: true","handlingStrategy":"validation","validationCode":"val = raw_backend_config.get(\"allow_insecure_http\", False)\nvalid_strings = {\"true\", \"1\", \"yes\", \"on\", \"false\", \"0\", \"no\", \"off\"}\nok = isinstance(val, bool) or (isinstance(val, str) and val.strip().lower() in valid_strings)\nassert ok, \"allow_insecure_http must be a boolean (true/false)\"","typeGuard":"def is_valid_openviking_boolean(value: object) -> bool:\n    if isinstance(value, bool):\n        return True\n    return isinstance(value, str) and value.strip().lower() in {\"true\", \"1\", \"yes\", \"on\", \"false\", \"0\", \"no\", \"off\"}","tryCatchPattern":null,"preventionTips":["Write allow_insecure_http as a plain YAML boolean (true/false)","Avoid creative spellings like 'enabled'/'y' in config files","Only enable it for trusted internal networks, per the HTTP-scheme check it feeds"],"tags":["openviking","config","validation","boolean"],"backgroundTag":null,"analyzedSha":"1dd6ba1acb03700589994b0366c5d1c7d05e2eff","analyzedAt":"2026-08-14T21:20:34.804Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}