{"record":{"id":"4cddc532efb1e55f","repo":"github/spec-kit","slug":"integration-must-be-a-mapping","errorCode":null,"errorMessage":"'integration' must be a mapping","messagePattern":"'integration' must be a mapping","errorType":"validation","errorClass":"IntegrationDescriptorError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/integrations/catalog.py","lineNumber":709,"sourceCode":"        if not isinstance(self.data, dict):\n            raise IntegrationDescriptorError(\n                f\"Descriptor root must be a YAML mapping, got {type(self.data).__name__}\"\n            )\n        for field in self.REQUIRED_TOP_LEVEL:\n            if field not in self.data:\n                raise IntegrationDescriptorError(\n                    f\"Missing required field: {field}\"\n                )\n\n        if self.data[\"schema_version\"] != self.SCHEMA_VERSION:\n            raise IntegrationDescriptorError(\n                f\"Unsupported schema version: {self.data['schema_version']} \"\n                f\"(expected {self.SCHEMA_VERSION})\"\n            )\n\n        integ = self.data[\"integration\"]\n        if not isinstance(integ, dict):\n            raise IntegrationDescriptorError(\n                \"'integration' must be a mapping\"\n            )\n        for field in (\"id\", \"name\", \"version\", \"description\"):\n            if field not in integ:\n                raise IntegrationDescriptorError(\n                    f\"Missing integration.{field}\"\n                )\n            if not isinstance(integ[field], str):\n                raise IntegrationDescriptorError(\n                    f\"integration.{field} must be a string, got {type(integ[field]).__name__}\"\n                )\n\n        if not re.match(r\"^[a-z0-9-]+$\", integ[\"id\"]):\n            raise IntegrationDescriptorError(\n                f\"Invalid integration ID '{integ['id']}': \"\n                \"must be lowercase alphanumeric with hyphens only\"\n            )\n","sourceCodeStart":691,"sourceCodeEnd":727,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/integrations/catalog.py#L691-L727","documentation":"Error \"'integration' must be a mapping\" thrown in github/spec-kit.","triggerScenarios":"Thrown at src/specify_cli/integrations/catalog.py:709 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Make the 'integration' value in the descriptor a mapping."],"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"}