From 64f80322948869aaf9cc742138d2c5751d2e0dc8 Mon Sep 17 00:00:00 2001 From: Noor-ul-ain001 Date: Mon, 13 Jul 2026 09:51:02 +0500 Subject: [PATCH] fix(integrations): declare kiro-cli multi-install safe (#3471) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit kiro-cli confines all of its managed files to an isolated agent root (`.kiro/`, with commands in `.kiro/prompts`) that no other integration writes to, so it meets every documented criterion for multi-install safety — but `KiroCliIntegration` never set `multi_install_safe = True`. As a result, co-installing kiro-cli alongside any other integration left `specify integration status` permanently in ERROR: error unsafe-multi-install: Installed integrations are not all declared multi-install safe: kiro-cli `--force` bypasses the install-time gate but does not clear the status error, and there is no flag or config to acknowledge it, so the error is permanent while both integrations remain installed. Set `multi_install_safe = True`. The registry's parametrized multi-install-safe contract tests (static isolated root, distinct agent roots / command dirs, disjoint manifests) now cover kiro-cli automatically, and a focused regression test pins the declaration so a future edit cannot silently drop it and reintroduce the error. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/specify_cli/integrations/kiro_cli/__init__.py | 7 +++++++ tests/integrations/test_registry.py | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/specify_cli/integrations/kiro_cli/__init__.py b/src/specify_cli/integrations/kiro_cli/__init__.py index 4c176e5127..868e4e64f0 100644 --- a/src/specify_cli/integrations/kiro_cli/__init__.py +++ b/src/specify_cli/integrations/kiro_cli/__init__.py @@ -26,3 +26,10 @@ class KiroCliIntegration(MarkdownIntegration): "args": _KIRO_ARG_FALLBACK, "extension": ".md", } + + # Kiro CLI keeps everything under a static, isolated agent root + # (``.kiro/`` with commands in ``.kiro/prompts``) that no other + # integration writes to, so it is safe to install alongside others + # (issue #3471). The registry's multi-install-safe contract tests + # enforce that isolation for every integration setting this flag. + multi_install_safe = True diff --git a/tests/integrations/test_registry.py b/tests/integrations/test_registry.py index d3049b4265..13d4968927 100644 --- a/tests/integrations/test_registry.py +++ b/tests/integrations/test_registry.py @@ -272,6 +272,20 @@ def test_safe_integrations_have_disjoint_manifests( f"these files: {sorted(overlap)}" ) + def test_kiro_cli_is_declared_multi_install_safe(self): + """kiro-cli confines itself to an isolated ``.kiro/`` root that no + other integration touches, so it must be declared multi-install safe + (issue #3471). + + Before the fix, co-installing kiro-cli alongside another integration + left ``specify integration status`` permanently in ERROR + (``unsafe-multi-install``) with no way to acknowledge it. The + parametrized isolation/manifest contracts above already exercise + kiro-cli once the flag is set; this pins the declaration itself so a + future edit cannot silently drop it and reintroduce the error. + """ + assert INTEGRATION_REGISTRY["kiro-cli"].multi_install_safe is True + class TestCatalogParity: """The discovery catalog must list every registered integration."""