{"record":{"id":"6dd8a5673a40357f","repo":"github/spec-kit","slug":"extension-id-mismatch-expected-extension-id","errorCode":null,"errorMessage":"Extension ID mismatch: expected '{extension_id}', got '{zip_extension_id}'","messagePattern":"Extension ID mismatch: expected '(.+?)', got '(.+?)'","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/extensions/_commands.py","lineNumber":2005,"sourceCode":"                                \"expected 'extension' mapping\"\n                            )\n\n                    # Run the same manifest and compatibility validation as a\n                    # normal install while the existing extension is still\n                    # untouched. Reuse the exact bounded bytes selected above.\n                    with tempfile.TemporaryDirectory(\n                        prefix=\"speckit-update-manifest-\"\n                    ) as manifest_tmpdir:\n                        manifest_file = Path(manifest_tmpdir) / \"extension.yml\"\n                        manifest_file.write_bytes(manifest_bytes)\n                        preflight_manifest = ExtensionManifest(manifest_file)\n                        manager.check_compatibility(\n                            preflight_manifest, speckit_version\n                        )\n\n                    zip_extension_id = preflight_manifest.id\n                    if zip_extension_id != extension_id:\n                        raise ValueError(\n                            f\"Extension ID mismatch: expected '{extension_id}', got '{zip_extension_id}'\"\n                        )\n\n                    expected_version = pkg_version.Version(update[\"available\"])\n                    archive_version = pkg_version.Version(\n                        preflight_manifest.version\n                    )\n                    if archive_version != expected_version:\n                        raise ValueError(\n                            \"Extension version mismatch: \"\n                            f\"expected '{update['available']}', \"\n                            f\"got '{preflight_manifest.version}'\"\n                        )\n\n                    # Match the remaining deterministic install validation\n                    # before crossing the destructive boundary. The helper\n                    # excludes this extension's current registry entry while\n                    # still detecting namespace, core, duplicate, and","sourceCodeStart":1987,"sourceCodeEnd":2023,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/extensions/_commands.py#L1987-L2023","documentation":"Error \"Extension ID mismatch: expected '{extension_id}', got '{zip_extension_id}'\" thrown in github/spec-kit.","triggerScenarios":"Thrown at src/specify_cli/extensions/_commands.py:2005 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Publish the archive whose extension id matches the requested id, or request the id the archive actually provides."],"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"}