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."""