From 5b12b74fbb104e010838401c3386c78164287c56 Mon Sep 17 00:00:00 2001 From: Quratulain-bilal Date: Sun, 12 Jul 2026 03:19:52 +0500 Subject: [PATCH] fix(integrations): declare kiro-cli multi-install safe kiro-cli uses a fully isolated .kiro/ root and .kiro/prompts command dir, a stable "." separator with no dynamic paths, and a dedicated install manifest - it meets every documented multi-install-safe criterion. but the flag was never set, so co-installing it (e.g. alongside claude) left `integration status` permanently in ERROR (unsafe-multi-install) with no way to resolve it; --force bypasses the install gate but not the status finding. set multi_install_safe = True. the registry contract tests auto-parametrize over every safe integration and now prove kiro-cli's roots, command dirs, and install manifests are disjoint from all other safe integrations (365 pass). added an explicit assertion in the kiro-cli test file and listed it in the multi-install-safe docs table. --- docs/reference/integrations.md | 1 + src/specify_cli/integrations/kiro_cli/__init__.py | 6 ++++++ tests/integrations/test_integration_kiro_cli.py | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/docs/reference/integrations.md b/docs/reference/integrations.md index f538fac86f..fac1932544 100644 --- a/docs/reference/integrations.md +++ b/docs/reference/integrations.md @@ -264,6 +264,7 @@ The currently declared multi-install safe integrations are: | `gemini` | `.gemini/commands`, `GEMINI.md` | | `junie` | `.junie/commands`, `.junie/AGENTS.md` | | `kilocode` | `.kilocode/workflows`, `.kilocode/rules/specify-rules.md` | +| `kiro-cli` | `.kiro/prompts` | | `qodercli` | `.qoder/commands`, `QODER.md` | | `qwen` | `.qwen/commands`, `QWEN.md` | | `shai` | `.shai/commands`, `SHAI.md` | diff --git a/src/specify_cli/integrations/kiro_cli/__init__.py b/src/specify_cli/integrations/kiro_cli/__init__.py index 4c176e5127..fb56b6b10f 100644 --- a/src/specify_cli/integrations/kiro_cli/__init__.py +++ b/src/specify_cli/integrations/kiro_cli/__init__.py @@ -26,3 +26,9 @@ class KiroCliIntegration(MarkdownIntegration): "args": _KIRO_ARG_FALLBACK, "extension": ".md", } + # Isolated agent root (.kiro/) and command dir (.kiro/prompts) that do not + # collide with any other integration, a stable "." separator with no + # dynamic paths, and a dedicated install manifest — so kiro-cli meets every + # documented multi-install-safe criterion. The registry contract tests + # enforce this isolation against every other safe integration (#3471). + multi_install_safe = True diff --git a/tests/integrations/test_integration_kiro_cli.py b/tests/integrations/test_integration_kiro_cli.py index 29adb0a4a6..96c5aedd9d 100644 --- a/tests/integrations/test_integration_kiro_cli.py +++ b/tests/integrations/test_integration_kiro_cli.py @@ -53,6 +53,16 @@ def test_registrar_config(self): assert i.registrar_config["format"] == "markdown" assert i.registrar_config["extension"] == ".md" + def test_declared_multi_install_safe(self): + """kiro-cli uses a fully isolated .kiro/ root, a stable "." separator, + and a dedicated manifest, so it must be declared multi-install safe — + otherwise co-installing it (e.g. alongside claude) leaves + `integration status` permanently in ERROR with no way to resolve it + (#3471). The registry contract tests enforce the actual path isolation + against every other safe integration.""" + i = get_integration(self.KEY) + assert i.multi_install_safe is True + def test_registrar_config_args_is_exact_prose_fallback(self): """Layer 1 — pin the exact fallback so wording drift requires a deliberate paired commit (production constant + test update)."""