Releases: feel-flow/ff-dev-toolkit
Release list
v0.82.0 — 週次 public CI の Actions を v7 系へ SHA ピン昇格し、ピン説明コメントを相対参照化
概要
週次 public run-all ワークフローの GitHub Actions を SHA ピンのまま最新版へ昇格し、あわせて SHA ピンの説明コメントを「昇格のたびに腐らない」書き方へ改めました。
変更
- 週次 public run-all ワークフローが参照する
actions/checkoutを v7.0.1、actions/setup-nodeを v7.0.0 の commit SHA へ更新しました。両 SHA は上流の該当タグが指すコミットであることを API で照合済みです - 同ワークフローの SHA ピン説明コメントが固定のメジャー版を名指ししていたのを改め、行末のバージョンコメントが示す版を参照する書き方へ変更しました。Dependabot が更新するのは
uses:行と行末コメントだけなので、説明側に版を直書きすると昇格のたびに説明だけが古くなります。同一行内の相対参照にすることでこのずれが再発しません
- CHANGELOG
- Full Changelog: v0.81.1...v0.82.0
v0.81.1 — 同梱 MCP の fast-uri / qs を更新(Dependabot high 4 / moderate 2 解消)
概要
同梱 MCP サーバー(spec-docs)の推移的依存に対する Dependabot alert 6 件(fast-uri high 4 / qs moderate 2)を解消するセキュリティリリース。
セキュリティ
- 同梱 MCP サーバー(spec-docs)の推移的依存を更新した: fast-uri を 3.1.5 から 3.1.7 へ(high 4 件の advisory、修正版 3.1.6 以上)、qs を 6.15.3 から 6.16.0 へ(moderate 2 件の advisory、修正版 6.16.0 以上)。fast-uri は配布バンドル
mcp/dist/index.jsに同梱されるため dist を再ビルドして更新した(qs は stdio-only の配布物に含まれない)。あわせて lockfile から vite 8 の optional peer である入れ子の esbuild 0.28.2 が除かれ、npm installを実行しても lockfile に差分が出なくなった
v0.81.0 — 配布リポジトリを Public へ戻す
概要
配布リポジトリを Public へ戻した版です。v0.80.0 で一時的に Private 化しましたが、Public での公開に戻しました。CLI からの導入に git の認証は不要です。README の「Private リポジトリの認証」節を削除し、組織のプラグインディレクトリ配布はミラー複製の案内へ戻しました。
変更
- 配布リポジトリを Public へ戻した(2026-09-02 に一時 Private 化したが、翌日に Public での公開へ戻した)。CLI からの導入に git の認証は不要になり、README の「Private リポジトリの認証」節を削除し、組織のプラグインディレクトリ配布はミラー複製の案内へ戻した。更新通知 hook の認証失敗時の無音スキップと、同梱テスト(changelog-fragments の footer ケース)が固定する認証ヘルパー対応・
url.*.insteadOfの送信前検出は維持する
v0.80.1 — 同梱テストを Private 配布リポジトリの前提へ追従
概要
v0.80.0 の同期後に入った修正のみのパッチ版です。同梱テスト(changelog-fragments の footer ケースと fake git fixture)を、配布リポジトリが Private になった前提(HTTPS の認証ヘルパー・認証不在とアクセス権不足の診断・insteadOf 書き換えの検出)へ追従させました。
修正
- 同梱テスト
tests/changelog-fragments/の footer ケースと fake git fixture を、配布リポジトリが Private になった前提(HTTPS の認証ヘルパーを global 設定から読む・認証不在とアクセス権不足を別々に診断する・global のurl.*.insteadOfによる書き換えを送信前に検出する)へ追従させた。認証ヘルパーを切り離す旧設定へ戻す変更は fixture が非 0 で検出する
v0.80.0 — 配布リポジトリの Private 化と CHANGELOG 公開タグ検査の統合
概要
配布リポジトリを Private(feel-flow 組織メンバーと招待済み collaborator 限定)へ切り替えた版です。CLI 導入には HTTPS の git 認証ヘルパー(gh auth setup-git)が前提になります。CHANGELOG の公開タグ検査 2 本を tests/changelog-public-tags/ へ統合し、plugin root の実行時ガード・docs Frontmatter の bump 幅検査・終了コード誤読ガード・週次 CI のサプライチェーン検証を追加しました。
追加
- 開発リポジトリ向けの隔離セルフテスト(
tests/live-ace-gates-selftest/。ACE スクリプトの mirror を要するため配布物単体では実行対象外)に、圧縮済みエントリを後日アーカイブした形と、統合先が後日アーカイブされて統合元のポインタがアーカイブ内へ着地する形の fixture を追加した。どちらも実際のアーカイブ(追記型・provenance 行を重ねる並び)を写しており、Changelog のアーカイブ記録を消した場合とポインタを live 基準へ戻した場合に、docs-template 同梱のアーカイブリンク検査(check-archive-links)が非 0 で落ちることを併せて実測する - 検証コマンドの終了コード誤読を静的に検出するガードを追加した。
cmd | head -20; echo "EXIT=$?"のように出力整形フィルタ(head / tail / less / more / cat / tee / wc。| sudo tee xのような前置き 1 段も同じ)で終わるパイプラインの直後で$?を読む書き方と、zsh では空へ展開されて機能しないPIPESTATUSの参照を、tracked の shell スクリプトと SKILL.md / docs-template の bash フェンス本文から行番号つきで報告する。読む形は代入・echoのほかif [ $? -ne 0 ]などの制御構文も含み、$?を変えない空行・コメント行を跨いだ次の行も追う。パイプを挟まずログをファイルへ落として$?を読む形、終端そのものが測定対象の入力供給パイプ、コマンド置換・プロセス置換の内側のパイプ、引用符やコメントの中の記述は検出しない - 同梱 resource を参照する skill の SKILL.md へ、plugin root が解決できない場合に案内付きで停止する実行時ガードを追加した。ガードは plugin root 固定契約の fence 直後に専用 marker で囲んだ byte 一致の複製で、シェルの
set -eに依存せずifで構造的に停止する(status 2) tests/plugin-root-contract/verify.shへ、この実行時ガードの削除とset -e依存形への弱体化をそれぞれ赤にする negative control と、ガードが契約 fence の直後にあり resource 呼び出しより前で走ることを見る配置検査を追加した。review 系 resource を直接呼ぶ skill は root を解決するのが正本の resolver 側なのでガードの対象外とし、理由付き allowlist と対象数の絶対下限で黙って外れないようにした- docs Frontmatter の回帰ゲート(
tests/docs-frontmatter-repo/)へ、version の bump 幅(major / minor / patch)とchangeImpact(high / medium / low)の対応検査を追加した。対応表は開発リポジトリのdocs/MASTER.mdのバージョニングルール節から導出し、suite へ複製しない(同文書が無いチェックアウトでは suite 全体を skip する)。比較 base は既定ブランチと HEAD の merge-base で、base 側に文書が無い初版と version 据え置きは緑、base 側に文書が在るのに blob を読めない場合は検査不能として赤、対応表を導出できないツリーは fail-closed で赤、base ref を解決できないチェックアウトではこの検査だけを部分 skip する
変更
- CHANGELOG の公開タグ検査 2 本(footer 比較リンクの追従検査と、最新版節の path-like マーカーの帰属検査)を
tests/changelog-public-tags/へ統合し、対の selftest もtests/changelog-public-tags-selftest/へ 1 本化した。検査内容は統合前と同じで、ネットワーク到達不可による suite 全体の○ skip判定だけを suite 内 1 箇所へ集約している - 統合にともない、最新版節に compare リンクが無い場合と一時ディレクトリを作れない場合は、suite 全体ではなく帰属検査だけをインデント付きの部分 skip にした。同じ入力で成立する footer リンクの検査結果が、丸ごと skip に巻き込まれて報告から消えることがなくなる
- 検査対象を差し替えるテスト用 env は
FF_CHANGELOG_PUBLIC_TAGS_FILE/FF_CHANGELOG_PUBLIC_TAGS_REPO_URLへ統合した(旧FF_CHANGELOG_LINKS_*/FF_CHANGELOG_ATTRIBUTION_*は廃止) - テストランナーの回帰検証 suite(
tests/run-all/)をランナー契約の核心 4 領域(集計 / skip 判定 / fail-closed 経路 / 選択モード)へ縮小した。同じ検出対象を別の疑似 suite で二重に踏んでいたケースを検出力単位で統合した(削除したケースの検出対象は残るケースが引き継ぐ) .claude/agent-config.yamlで実際に読まれるキーの説明を Multi-CLI Agent Orchestration ガイド(docs-template/05-operations/deployment/multi-cli-agent-orchestration.md)の「実際に読まれるキー」節へ単一化し、multi-review / multi-explore / multi-implement / setup-ai-config の各スキルは同節への参照だけを持つようにした。同じ説明文を各スキルへ複製する運用をやめたので、複製同士のドリフト検査も不要になり削除したagent-config-doc-syncの照合を強化した。正本リンクの一致は閉じ括弧まで含む完全な Markdown リンク単位で見るようにし、複製の再検出は改行・連続空白を正規化してから照合するようにした- 検査総数ガード廃止後に write-only 化していた会計変数(TOTAL / CASES / MAPPING_CASES / REPO_DOCS_CHECKED)と、
ok/badを素通しするだけのラッパー(mapping_ok/mapping_bad)を tests 配下の4 suite から除去した - 配布リポジトリを Public から Private に変更し、feel-flow 組織メンバー(および招待された collaborator)限定の配布へ切り替えた。CLI からの導入には HTTPS の git 認証ヘルパー(
gh auth setup-git)が前提になる。SSH 鍵だけでは同梱の更新通知 hook が HTTPS URL を固定で照会するため通知が出ない。認証ヘルパーがない環境では hook はハングせず無音でスキップする。README の「組織のプラグインディレクトリ(GitHubから同期)」節を、ミラー複製の案内から本リポジトリの直接登録へ改めた。LICENSE(Apache-2.0)は変えない - Markdown 契約検査の節スコープ照合を
tests/lib/section-scope.shへ切り出した。見出しの一致本数が 1 本でなければ fail-closed とし、見出しから次の見出しまでを切り出してから固定文言を照合する。ace-refinesuite のローカル実装だった同関数を置き換え、検査内容と結果は据え置き refine-issue-skip-contractとissue-label-contractの SKILL.md 検査のうち、「その節に在ること」自体が要件だった針を節スコープ照合へ移した。規定を別の節へ書き写しただけで手順側から消える退行が、文書全体の固定文言検索では緑のまま通っていた- どの検査を節スコープへ寄せ、どれを文書全体のままにするかの判断基準を
tests/lib/section-scope.shのヘッダーコメントに置いた - 見出し数を数える awk が失敗し
heading_hitsが空になるケースを検査不能として名指しし、fail-closed で赤くする分岐を追加した skill-frontmatterテストが全プラグインの SKILL.md を検査するようになった(旧: ff-dev-toolkit 内のスキルのみ)。description への未クォートのコロン+半角スペース混入も新たに検出する
修正
- docs 走査マスクの awk 実装と同梱 MCP の TypeScript 実装で、コードフェンス行頭のインデントとして受理する空白を半角空白とタブに統一した。TypeScript 側は正規表現の空白クラスに NBSP(U+00A0)や垂直タブも含めていたため、それらでインデントされたフェンスを片側だけがマスクしていた
- HTML コメントの閉じマーカー探索でもインラインコードスパンを区別するようにした。散文がコードスパンで閉じマーカーを引用しているだけの箇所でコメントが閉じ、本来コメント内の記述が走査対象へ漏れていた(開始マーカー側は既に区別していた非対称の解消)
- 閉じマーカーの探索がフェンスを跨ぐ現挙動は、CommonMark の HTML ブロックと同じ判定として維持することを明示的に選択し、両実装の照合ゲートに fixture を追加して固定した
- テストスイートの一時ディレクトリ確保で、
mktemp -dが警告を stderr へ出しながら成功する環境でも実体を検査するようにした。以前は警告文がパスへ混入し、以後の処理が原因不明のエラーで落ちて「一時領域を用意できなかった」ことが読み取れなかった - plugin root 固定契約の検査対象を、root 変数(
FF_DEV_TOOLKIT_ROOT/${CLAUDE_PLUGIN_ROOT})の出現ではなく同梱 resource への参照から導出するようにした。同梱物を相対パスや散文で参照していたharness-review/create-issue/assess-impact/out-of-scope-issue/pre-commit-checkが契約対象へ入り、5 スキルへ既存と同一の root 固定契約を追加した。sibling スキルの同梱 resource を、別スキル配下のreferences/へ向く相対パスで参照する形も導出できるようにした - 契約対象外にするスキルは理由付きの明示 allowlist へ登録する形にし、その項目を毎回の検査報告へ出すようにした。検査対象が空振り(母集団 0 件・root 変数 0 件・allowlist による全件除外)した場合と、母集団が絶対下限を下回った場合は fail-closed で失敗する
- Git Workflow が plugin root 経由で起動する
check-merge-freshness.sh/update-version-claim.sh/check-version-claims.shを、Multi-CLI Review Orchestration ガイドの plugin root 固定契約の対象列挙と、同じ fence 内の resource 検証ループへ追加した(列挙だけが増えて検証が追従せず、0 バイト化したスクリプトが guard を通る経路を塞いだ)
ドキュメント
docs-template/04-quality/TESTING.mdの「変異注入の適用確認」節に、変異の復元手順(sed 往復、または変異前にコミットしてからgit checkout)を追記した。未コミット変更が残る状態でのgit checkout --は対象ファイルの本修正まで巻き戻すためtests/run-all/README.mdの検証ケース表を実装(case 1〜35 + 2b)へ追随させ、fixtures 一覧の乖離を解消した
セキュリティ
- 週次 public run-all ワークフロー(
weekly-public-run-all.yml)の外部取得にサプライチェーン検証を追加した。yq バイナリは既存バイナリの有無で分岐せず毎回固定版を取得し、リリース同梱チェックサムの SHA-256 で照合してから実行可能として配置する(不一致時は使用前に止まる)。actions/checkout/actions/setup-nodeは可変タグ参照から SHA ピン(+ バージョンコメント)へ変更した。SHA の更新は開発元(SSOT)側の Dependabot が担い、公開同期で本ワークフローへ届く
v0.79.1 — Compacted: 行の ID 区切り検出を Archived/Promoted と同じ厳密さにする
概要
ACE の refine 不変条件ゲートで、Changelog の - Compacted: 行だけ ID どうしの区切りが無検証だった問題を修正しました。
修正
ACE-1-1 / ACE-2-1やACE-1-1。ACE-2-1のように,/、以外で並べた行は、- Archived:/- Promoted:と同じく違反として報告します。- 注記の直後に区切りを置かない
ACE-1-1(18 → 12 行)ACE-2-1と、閉じ括弧が余るACE-1-1)ACE-2-1は、これまで括弧を詰めた結果ACE-1-1ACE-2-1という実在しない ID を 1 件拾い、実在する 2 件を未検証のまま通していました。これらも違反として報告します。 - Compacted:に固有の書式は引き続き受理します(前置きの散文、ID ごとの括弧注記、ID 列の後ろに続く補足散文)。ただし前置きにも補足にも ID を裸で書けなくなりました(列挙の続きと区別できないため。ID に触れるときは括弧の中へ置いてください)。- 違反メッセージも、括弧の閉じ忘れだけでなく区切りと裸の ID を原因として名指しするようになりました。
v0.79.0 — 観測台帳のリポジトリ分散と ACE 抽象度レポート
概要
観測台帳をリポジトリごとに分散し、導入先からの [observation] 受け渡し便を廃止しました。ACE には抽象度レポートと「抽象度の下限」運用、観測台帳には mitigated(対策済み)状態が加わり、refine 不変条件ゲートと /ace-curate のコミット手順が修正されています。
追加
- ACE エントリの抽象度レポート
ace-abstraction-report.tsを追加した。エントリ本文に残る固有名(Issue / PR 参照・ファイルパス・コードスパン識別子)をスコア化して「抽象度の下限を下回る候補」を挙げ、抽象度を 1 段上げれば同一のアクションへ畳める統合候補の組をカテゴリ横断で提示する。組は極大クリークとして列挙するので、閾値を満たした候補対はすべていずれかの組に含まれる。読み取り専用の dry-run で書き換えオプションを持たず、候補が何件出ても終了コードは 0(非 0 になるのは入力そのものが測れないとき — パス不備・ACE エントリ 0 件・閉じていないコードフェンス・読み込み失敗)。--jsonで機械可読出力も出せる - ACE Playbook テンプレートへ「追記の抽象度の下限」の運用ルールと「抽象度の下限と棄却基準」の節を追加した。判定は「適用条件が固有名なしで書けるか」で、過度な抽象化は「上位主張から元エントリのアクションが再導出できるか」で棄却する(固有名がアクションの本体である 5 類型を列挙)
/ace-curateの新規性バーへ抽象度の下限のチェック項目を追加し、/ace-refineの手順へ抽象度レポートの実行(手順 1b)と、統合手順が候補組を入力に取る運用を追加した。抽象度統合で残す側の本文を上位主張へ書き換えるときは、書き換える前に残す側の原文もアーカイブへ保全し、索引テーブルのタイトルも同時に更新する手順を明記した/retrospectiveの観測台帳にmitigated(対策済み)という終端状態を追加した。昇格閾値へ到達しても対策が別の場所(Issue・スキル・文書)に定義済みで起票を見送ったエントリをこの状態にすると、以後の再発では観測の記録だけを続け、昇格提案は再演されないmitigatedのエントリはIssue列へ対策の所在を接頭辞付きの書式で書き、参照先の対策が失われた場合と、対策を適用したのに再発した場合にはactiveへ戻して昇格閾値の判定対象へ復帰させる- 観測台帳テンプレートの
Status値域の記述を、新しい終端状態に合わせて更新した
変更
/retrospectiveの観測台帳を作業中リポジトリごとのdocs/08-knowledge/OBSERVATIONS.mdへ分散した。台帳が無ければ振り返り時にdocs-template/08-knowledge/OBSERVATIONS.md(新設)から自動作成し、閾値到達時の起票先は改善対象で分岐する(ツール群の改善は到達可能な開発元、プロジェクト固有の改善はそのリポジトリ自身)。導入先から[observation]接頭辞の Issue で観測を 1 件ずつ受け渡す経路は廃止し、残存分は開発元での実行時に一度だけ台帳へ取り込む
修正
-
ACE の refine 不変条件ゲートで、Changelog の
- Archived:/- Promoted:行の ID 列が句点や括弧書きの後ろで別の区切りに続く場合(ACE-1-1。ACE-2-1、ACE-1-1(注記) / ACE-2-1)に、先頭の ID だけを採用して後続 ID を黙って検証対象から外していた問題を修正した。これらの行は「ID 列が途中で切れている」違反として報告する。括弧の閉じ忘れで後続 ID が落ちる行も同様に違反にする。 -
/ace-curateのコミット手順に、commitlint の type 許容リスト確認と、default branch が保護されたリポジトリでの PR 経路への分岐を追加しました。従来はknowledge:プレフィックスの commitlint 拒否と、保護ブランチへの直 push 拒否(Changes must be made through a pull request)が毎回 1 回ずつ起きていました(報告: #67 )。commitlint も保護も無いリポジトリでは、従来どおりknowledge:プレフィックス単独コミットの直 push がそのまま通ります -
CHANGELOG: https://github.com/feel-flow/ff-dev-toolkit/blob/v0.79.0/CHANGELOG.md
-
Compare: v0.78.0...v0.79.0
v0.78.0 — 週次 CI 健全性判定の検査・sync ガードの回帰強化・Git Workflow 手順書の追従
概要
週次 CI 健全性判定の挙動を固定するテスト suite の追加、同期スクリプトの worktree ガード回帰テストの強化、README の Skills 件数修正と検査、Git Workflow 手順書の起票参考例の差し替え・claim 照合・Epic 一括対応手順の追記。
追加
- 週次フル run-all の健全性判定スクリプトの挙動を固定するテスト suite
tests/weekly-health-contract/を追加した。モックした GitHub CLI で、cron の生存確認と成功実績の判定が別々の出力行に分かれること、既定ブランチ上で完了した手動実行 run が成功実績として受理されること、success 以外の完了 run は採用されたうえで不合格として扱われ古い成功へ遡らないこと、既定ブランチ以外の run と鮮度上限を超えた run が成功実績にならないこと、API 不達や壊れた応答が「健全」へ倒れず判定不能として扱われること、判定を緩める CLI オプションや環境変数が存在しないことを実測する
変更
- 同期スクリプトの worktree target ガードを検証する回帰テストに、「ガードが中断した実行は target を一切書き換えない」ことを見るアサーションを追加した。sentinel ファイルの内容ハッシュ・target にしか無いファイルの存続・同期元 SHA 記録・target 配下(
.gitを除く)のファイル一覧とハッシュを実行前後で突き合わせる。書き込みを伴う本実行で上書き・削除・記録破壊を検出し、--dry-runでは同じ契約をガードの中断が成立した回にかぎって確認する。ガードがミラー処理や記録削除より後ろへ移動する退行を、終了コードと.gitの存続だけに頼らず検出できるようにした
修正
- README「収録内容」の Skills 見出しに書かれた件数が実際の収録スキル数より少ないままだったのを修正しました
- 収録スキル数の整合検査に、README の Skills 見出しの数字を実スキル数と照合する検査を追加しました。見出しの書式が変わって数字を一意に取り出せない場合も検査は赤になります
ドキュメント
- Git Workflow 手順書のステップ1「Issue作成」の起票参考例を、
/create-issueスキルと同じ body-file + 単純コマンド分割方式(本文を一時ファイルへ書く、gh label list --limit 200の単独実行で実在照合、gh issue create --label ... --body-file ...の単独実行)へ差し替えた。旧 1 ブロック方式(label_args配列・bash 3.2 の空配列展開・fail-soft 分岐)は worktree 隔離セッションの複合コマンド拒否ガードに当たるため撤去し、ラベル「不在」と「照会失敗」の書き分け規則は説明に維持した。tests/docs-gatesが照会と起票が別フェンスにあること・--body-fileとラベルのプレースホルダ・旧方式の指紋の不在を固定する - Git Workflow 手順書のステップ4「自動テストの実行」に、claim を要求される文書を触った回の claim 照合を短い検証として明記した。
.version-claims/を導入したプロジェクトでは、default branch を fetch して祖先検査を通したうえで、frontmatter version を持つ文書の新規追加・その version の変更・PLAYBOOK / PATTERNS の版不変更新についてscripts/update-version-claim.shで claim を再生成し、docs/配下の変更と claim をまとめて stage してscripts/check-version-claims.shで確認してから、同じ commit へ含める。helper は fetch しないため、この前段を飛ばすと stale base の claim が byte 不一致で弾かれる。非 0 は exit 1(claim の不足・stale・orphan、対象 path の未 stage / 未追跡)と exit 2(default branch を解決・取得できない検査不能)に分かれる。.version-claims/を導入していないプロジェクトでは validator が「未導入」として skip するので、この手順自体を省く - Git Workflow 手順書へ「Epic の一括対応(バッチ分割・worktree 並列・直列マージ)」節を追加した。対象ファイル集合が互いに素になるようバッチを組む、実装は worktree 隔離のサブエージェントで並列・レビューとマージは親が直列、Issue 本文の順序制約をバッチ境界に採用する、changelog は断片方式にする、の 4 点と、並列マージ後の rebase で必要になる version claim 再生成の位置を規定した。契約文は
tests/docs-gatesが固定する
リンク
v0.77.0 — E2BIG 診断とテスト有効性の報告閾値例外、失敗 CLI の残タスクスキップ
概要
マルチ CLI クロスモデルレビュー基盤の改善 3 件。導入先から公開リポジトリへ寄せられた報告 2 件(#55 / #54)への対応を含みます。
変更
- 認証切れ・残高切れで失敗した CLI の残タスクを、同じ実行内でスキップするようにしました。これらは CLI 単位の状態に由来する失敗なので、残りのタスクもプロンプト構築とタイムアウト待ちを払ったうえで確実に同じ失敗を繰り返していました。スキップしたタスクは実行ログと統合レポートで理由とともに名指しされ、「失敗」ではなく「未実行」として扱われます(次回の再開実行では通常どおり実行対象)。切り分けられない失敗とタイムアウトではスキップせず、従来どおり全タスクを実行します
- コードレビュー観点の報告閾値に「テスト有効性」のカテゴリ例外を追加しました(#54)。テストが対象の機構を通らない・別経路で条件を満たす・片方向しか固定していない、という 3 形の指摘は信頼度 50 以上で報告します。全ゲートが緑のまま無効なテストが merge される経路を閉じるためで、閾値全体は下げないためノイズは増えません
修正
- CLI が起動できなかった失敗(
Argument list too long/ E2BIG)を、認証切れ・残高切れと同じ形で切り分けて報告するようにしました(#55)。従来は終了コードだけが出るため、起動前に落ちた実行に対して制限時間の延長という的外れな次の一手へ誘導していました - レビュー対象の diff が OS の引数リスト上限(
getconf ARG_MAX)を超える規模でも 4 つの CLI アダプタがすべて完走することを、実寸の上限を跨ぐ回帰テストで固定しました
v0.76.0 — CLI 失敗の認証/残高切り分けと pair モードの観測性
概要
マルチ CLI レビュー基盤の「失敗したときに何が起きたか読める」度合いを上げた版です。失敗の原因を認証切れと残高切れに切り分けて次の一手を案内し、pair モードで副レビュワーが立たなかった事実をレポートへ残します。あわせて staging クリアが出力ディレクトリ内側の symlink をたどって別 CLI の生成物を消しうる問題を修正しました。
追加
- CLI 失敗の原因切り分け — multi-CLI 実行でタスクが失敗したとき、CLI の stderr から「資格情報が拒否された」「クレジット・利用残高が尽きた」を切り分けて理由と次の一手を出します。前者はその CLI の再ログインコマンド、後者は再実行しても同じ結果になる旨と代替 CLI の再実行コマンドを案内します。これまではどちらも「時間を足しても直らない失敗」の 1 行に丸められ、再ログインで復帰できるのか別 CLI へ切り替えるべきかが読めませんでした
- 判定材料は成果物に保全済みの CLI stderr だけで、追加のプロセス・ネットワーク・課金は発生しません。判定できない失敗はこれまでどおりの案内に落ちます
修正
- multi-CLI implement の staging クリアが、出力ディレクトリの内側を指す symlink をたどって別 CLI・別観点の生成物を削除しうる問題を修正しました。symlink はもう追わず、パス自体がリンクならリンクだけを外して続行し、途中のコンポーネントがリンクなら理由を名指しして中断します(退避先ディレクトリの掃除と同じ方針に揃えました)
- pair モードで副レビュワーが居ない既定構成のとき、総合観点が誰にも割り当てられない事実を実行ログで名指しするようにしました。これまではプランの件数が 1 つ少なくなるだけで理由が残りませんでした
- mode の値を pair / distributed / cross-model の範囲で検証し、範囲外の値はコマンドライン・設定ファイルのどちらから来た場合も出所を添えて拒否します。これまでは打ち間違いが分散モードとして黙って実行され、プラン表示には誤った値がそのまま出ていました
- 副レビュワーが立てられず単一レビュワーで走った事実を、統合レポートの Reviewers 行として残すようにしました。これまでは実行ログにしか出ず、レポートだけを後から読むとクロスモデルで検証済みと誤読できました
- 除外指定した観点に対して「主レビュワーへ回した」と宣言してから捨てる、矛盾した出力を修正しました
詳細は CHANGELOG を参照してください。
Full Changelog: v0.75.0...v0.76.0