{"record":{"id":"90908188082f21c7","repo":"github/spec-kit","slug":"manifest-is-not-valid-utf-8-path-e-reason-at-909081","errorCode":null,"errorMessage":"Manifest is not valid UTF-8: {path} ({e.reason} at byte {e.start})","messagePattern":"Manifest is not valid UTF-8: (.+?) \\((.+?) at byte (.+?)\\)","errorType":"validation","errorClass":"PresetValidationError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/presets/__init__.py","lineNumber":292,"sourceCode":"\n        Raises:\n            PresetValidationError: If manifest is invalid\n        \"\"\"\n        self.path = manifest_path\n        self.data = self._load_yaml(manifest_path)\n        self._validate()\n\n    def _load_yaml(self, path: Path) -> dict:\n        \"\"\"Load YAML file safely.\"\"\"\n        try:\n            with open(path, 'r', encoding='utf-8') as f:\n                data = yaml.safe_load(f)\n        except yaml.YAMLError as e:\n            raise PresetValidationError(f\"Invalid YAML in {path}: {e}\")\n        except FileNotFoundError:\n            raise PresetValidationError(f\"Manifest not found: {path}\")\n        except UnicodeDecodeError as e:\n            raise PresetValidationError(\n                f\"Manifest is not valid UTF-8: {path} ({e.reason} at byte {e.start})\"\n            )\n        except OSError as e:\n            raise PresetValidationError(f\"Could not read manifest {path}: {e}\")\n        if data is None:\n            return {}\n        if not isinstance(data, dict):\n            raise PresetValidationError(\n                f\"Manifest must be a YAML mapping, got {type(data).__name__}: {path}\"\n            )\n        return data\n\n    def _validate(self):\n        \"\"\"Validate manifest structure and required fields.\"\"\"\n        # Check required top-level fields\n        for field in self.REQUIRED_FIELDS:\n            if field not in self.data:\n                raise PresetValidationError(f\"Missing required field: {field}\")","sourceCodeStart":274,"sourceCodeEnd":310,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/presets/__init__.py#L274-L310","documentation":"Error \"Manifest is not valid UTF-8: {path} ({e.reason} at byte {e.start})\" thrown in github/spec-kit.","triggerScenarios":"Thrown at src/specify_cli/presets/__init__.py:292 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-save the preset manifest as UTF-8 text, removing invalid bytes at the reported offset."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c","analyzedAt":"2026-08-14T19:43:37.150Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}