From e7ce60fd214bd483360b92cfd9220f3938ab1afa Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Thu, 6 Aug 2026 07:27:54 -0400 Subject: [PATCH] fix(#3035): add kimi-code detection and flag to review workflow (#3115) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(#3035): add kimi-code detection and flag to review workflow The kimi-code reviewer lane was declared in REVIEWER_LANES, documented in docs/COMMANDS.md, resolved via --kimi-code, and functional when reached — but review.md's detect_clis hardcoded 11 of 12 lanes (no kimi probe) and the flag-parse list omitted --kimi-code. /gsd:review --kimi-code could never reach SELECTED_REVIEWERS. Added command -v kimi detection and the --kimi-code flag to the review workflow's CLI detection and flag-parse steps. * chore(#3035): backfill changeset PR number 3115 --------- Co-authored-by: sim --- .changeset/humble-birds-roar.md | 5 +++++ gsd-core/workflows/review.md | 2 ++ ...994-fragmentize-review-and-discuss-phase-assumptions.json | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/humble-birds-roar.md diff --git a/.changeset/humble-birds-roar.md b/.changeset/humble-birds-roar.md new file mode 100644 index 000000000..fb4308291 --- /dev/null +++ b/.changeset/humble-birds-roar.md @@ -0,0 +1,5 @@ +--- +type: Fixed +pr: 3115 +--- +**`--kimi-code` reviewer lane is now selectable in `/gsd:review`** — the lane was declared, documented, and its flag resolved, but the review workflow's CLI detection and flag list omitted it (hardcoded to 11 of 12 lanes). Both now include Kimi CLI detection and the `--kimi-code` flag. (#3035) diff --git a/gsd-core/workflows/review.md b/gsd-core/workflows/review.md index 75cc7f0b3..a5d131980 100644 --- a/gsd-core/workflows/review.md +++ b/gsd-core/workflows/review.md @@ -24,6 +24,7 @@ command -v opencode >/dev/null 2>&1 && echo "opencode:available" || echo "openco command -v qwen >/dev/null 2>&1 && echo "qwen:available" || echo "qwen:missing" command -v cursor-agent >/dev/null 2>&1 && echo "cursor:available" || echo "cursor:missing" command -v agy >/dev/null 2>&1 && echo "antigravity:available" || echo "antigravity:missing" +command -v kimi >/dev/null 2>&1 && echo "kimi-code:available" || echo "kimi-code:missing" # Check local model servers (OpenAI-compatible HTTP API — no CLI binary required) OLLAMA_HOST=$(gsd_run query config-get review.ollama_host --raw 2>/dev/null || echo "") @@ -75,6 +76,7 @@ Parse flags from `$ARGUMENTS`: - `--qwen` → include Qwen Code - `--cursor` → include Cursor - `--agy` or `--antigravity` → include Antigravity CLI +- `--kimi-code` → include Kimi CLI - `--ollama` → include Ollama (local server, OpenAI-compatible) - `--lm-studio` → include LM Studio (local server, OpenAI-compatible) - `--llama-cpp` → include llama.cpp (local server, OpenAI-compatible) diff --git a/tests/emitted-drift-acks/2994-fragmentize-review-and-discuss-phase-assumptions.json b/tests/emitted-drift-acks/2994-fragmentize-review-and-discuss-phase-assumptions.json index 74b641bed..a258d707e 100644 --- a/tests/emitted-drift-acks/2994-fragmentize-review-and-discuss-phase-assumptions.json +++ b/tests/emitted-drift-acks/2994-fragmentize-review-and-discuss-phase-assumptions.json @@ -1,6 +1,6 @@ { "version": 1, "paths": { - "review.md": "#2994 (epic #1671 Phase 6.3, further amendment): fragmentizes review.md onto the marker grammar, admitting `state:reviewer-instances-configured` (shared by two peripheral notes, `reviewer-instances-note-1` in detect_clis and `reviewer-instances-note-2` in invoke_reviewers — the core reviewer-lane dispatch itself stays unmarked). Also retargets the init line from the shared `init.phase-op` to a new dedicated `init.review` entry point (cmdInitReview), which computes the reviewer-instances-configured fact via `review.reviewer_instances` config presence. Net SOURCE growth is +55 bytes (29,063 -> 29,118): two `` marker-pair stubs (~331 B and ~195 B) replace their extracted prose bodies (328 B and 277 B respectively, now living in gsd-core/workflows/review/steps/*.md), and `init.phase-op` shrinks by 2 bytes to `init.review` on the gather_context init line. The EMITTED artifact composeWorkflow produces at install time still includes the extracted prose verbatim (markers strip, gap+section bodies re-join byte-for-byte) when the atom is unresolved (section_manifest null -> read-everything fallback), so installed behavior is unchanged; only the SOURCE file's on-disk byte count moves. #2962 amendment: 2 bash blocks with for-glob loops (PLAN_FILE copy iteration ~line 254, RUN_DIR plan-file args ~line 327) gained a nullglob shim (shopt -s nullglob 2>/dev/null; setopt NULL_GLOB 2>/dev/null) so zsh no longer aborts the block on an unmatched for-list glob (+342 bytes)." + "review.md": "#2994 (epic #1671 Phase 6.3, further amendment): fragmentizes review.md onto the marker grammar, admitting `state:reviewer-instances-configured` (shared by two peripheral notes, `reviewer-instances-note-1` in detect_clis and `reviewer-instances-note-2` in invoke_reviewers — the core reviewer-lane dispatch itself stays unmarked). Also retargets the init line from the shared `init.phase-op` to a new dedicated `init.review` entry point (cmdInitReview), which computes the reviewer-instances-configured fact via `review.reviewer_instances` config presence. Net SOURCE growth is +55 bytes (29,063 -> 29,118): two `` marker-pair stubs (~331 B and ~195 B) replace their extracted prose bodies (328 B and 277 B respectively, now living in gsd-core/workflows/review/steps/*.md), and `init.phase-op` shrinks by 2 bytes to `init.review` on the gather_context init line. The EMITTED artifact composeWorkflow produces at install time still includes the extracted prose verbatim (markers strip, gap+section bodies re-join byte-for-byte) when the atom is unresolved (section_manifest null -> read-everything fallback), so installed behavior is unchanged; only the SOURCE file's on-disk byte count moves. #2962 amendment: 2 bash blocks with for-glob loops (PLAN_FILE copy iteration ~line 254, RUN_DIR plan-file args ~line 327) gained a nullglob shim (shopt -s nullglob 2>/dev/null; setopt NULL_GLOB 2>/dev/null) so zsh no longer aborts the block on an unmatched for-list glob (+342 bytes). #3035 amendment: added kimi-code CLI detection probe (command -v kimi) and --kimi-code flag to detect_clis and flag-parse steps (+127 bytes)." } }