バックエンド実装時に使用。DRY原則遵守。コーディング規約準拠。
中文简介正在准备中。当前显示原文说明。
変更内容からミューテーション/E2Eの推奨度を判定し、強く推奨・範囲が小さい・副作用なしのものは確認なしで実施し、それ以外は最後の報告で確認する。quality-check Step 5から参照実行されるほか、開発中の任意タイミングで単体実行できる。
中文简介正在准备中。当前显示原文说明。
查看安装方法安装前可以查看交给 AI 代理的指令内容。
本スキルは追加テスト(ミューテーションテストと E2E テストの総称。常に実行される quality-check Step 2〜4 に対し、推奨度と範囲で実施を決める)を担う。役割は次の 4 つ。
strong / recommended / none)を判定するdocuments/development/test-recommendation-ledger.md)quality-check の Step 5 は本スキルを参照実行する。それとは別に、開発中の任意タイミングで単体実行もできる(判定・区分・実行・台帳更新は同一。記録先のみ異なる — 「記録」節参照)。判定・区分・実行・記録の手順は本スキルを単一ソースとし、quality-check 側には転記しない。区分の数値(範囲の上限)は quality-policy §2「自動実施の範囲の上限」を正とする。
追加テストの見送り・実施後の生存ミュータントは記録のみ・非ブロックである(quality-check から実行された場合もフラグ作成をブロックしない)。唯一の例外は E2E を実施して失敗した場合で、実バグとして修正が必要になる(Step 4 参照)。
Step 1: 判定対象の差分取得 + 永続台帳の参照 + ヒューリスティクス判定
↓
Step 2: 区分(自動実施 / 確認 / 記録のみ)→ 自動実施分は確認なしで Step 3・4 へ。確認の対象は最後の 1 通で聞く
↓
Step 3: ミューテーション実行(自動実施分・確認で実施と決まった分。通過判定なし — 生存の対処は既定の規則で AI が決める)
↓
Step 4: E2E 実行(同上。サーバー起動 → シナリオ実行 → 必ず停止)
↓
Step 5: 永続台帳の更新 + 記録
git diff origin/main...HEAD
ベース ref の解決は quality-check Step 1 と同一とする(既定は origin/main、無ければ origin/master、いずれも無ければローカルの main / master。探索順の正は quality-policy §2「差分スコープの定義」。基幹が異なるプロダクトは quality-check Step 1 と同じ ref を用いる)。単体実行時も同じ差分を判定対象とする。
判定の前に永続台帳(Step 5 参照)を読み取り、導線の状態(pending / scenario_added / dismissed)を判定に反映する。台帳が読み取れない場合の扱いは Step 5「生成と保全」に従う(黙って上書きしない)。
リスクレベルは、quality-check から実行された場合は Step 1 の判定結果(risk_level)を用いる。単体実行時は quality-policy §1 の定義に照らして判定する(判定基準の表は同 §1 を正とし、ここには転記しない)。
トリガーは「テストスイートの判別力を疑うべきシグナル」と「メタ検証を掛ける価値のある重要なまとまり」に限る。個々のロジック変更では提案しない(ユニットテストの守備範囲にミューテーションを重ねない)。
| 推奨度 | 条件 |
|---|---|
強推奨(strong) | High リスク領域の中核ロジックのまとまった実装差分(決済・金額計算 / 認証・認可 / データ整合性を伴う状態遷移) |
推奨(recommended) | テストの信頼性に疑義があるシグナル: ① 既存テストの期待値を実装に合わせて変更した ② まとまった新規ロジックに対しテストも同時に新規作成された(オラクルが実装と同時生成 = 相関故障リスク) ③ 追加ロジック量に対して追加テストが明らかに薄い |
提案しない(none) | 個別の条件分岐・境界値の変更(ユニットテストの守備範囲 — quality-check Step 3 と QAエンジニア(ファルシフィケーション型)で担保)/ 型・設定・文言のみ / テスト緑のままの純リファクタ |
E2E はフロントメイン・シナリオベースとする。バックエンドの API 検証は quality-check Step 3 の統合テストで担保するため、「フロントとバックにまたがる」ことは E2E の提案理由にしない。
| 推奨度 | 条件 |
|---|---|
強推奨(strong) | 既存 E2E シナリオの通過経路(画面・ルート・導線)に触れるフロント変更 / High リスク領域を通る新規導線の追加(シナリオ起草 + 実行を提案) |
推奨(recommended) | 新規導線の追加でシナリオ未整備(シナリオ起草 + 実行を提案) |
提案しない(none) | バックエンドのみの変更 / シナリオ経路外のフロント変更 / docs・infra のみ |
recommendation_basis に記録して recommended に倒す(走査を続けない)not_configured を記録し、必要なら lint-scaffolding を案内する(ミューテーション設定の配線は同スキル Step 3-3。現行の quality-check と同じ扱い)recommended に倒して提示する(E2E spec の経路突き合わせ不能等。提案しない側に倒すと黙って穴になる)。判定不能であった事実を根拠欄(recommendation_basis)に記録するstrong / recommended / none の 3 値追加テストを実行しない場合の記録は、次の優先順位表で決める(上から先に一致した行を記録する)。
| 条件 | 記録 |
|---|---|
quality-check の領域テーブルで Step 3 欄が -(docs のみ / infra のみ) | ミューテーションのヒューリスティクス判定を行わない。mutation: { executed: false, reason: "out_of_scope" } を記録し recommendation 以下は省略する(quality-policy §2「マトリクス優先順位原則」 — 領域による対象外を最優先)。E2E は領域による対象外を設けず、ヒューリスティクスで none と判定して記録する |
| ツール(Stryker / PIT)未導入 | 提案しない。reason: "not_configured" を記録し recommendation 以下は省略する(lint-scaffolding を案内する) |
上記以外で推奨度 none | reason: null / recommendation: "none" / user_decision: "not_proposed" を記録する |
| 実施が決まった後に空スコープ / 導出失敗 / ツール起動失敗 | reason: "empty_scope" / "scope_error" / "tool_error" を記録する(「実行の失敗」節参照) |
推奨度が strong / recommended の対象を、次の区分に分ける(none は従来どおり記録のみ)。
| 区分 | 条件 | 動き |
|---|---|---|
| 自動実施 | 次のすべてを満たす: 推奨度が strong / 範囲が小さい(quality-policy §2「自動実施の範囲の上限」以内)/ 副作用が無い(下記)/ 同じ対象をユーザーが見送った記録が無い(下記「ユーザーの見送りと AI の持ち越し」) | 確認せずに Step 3・4 で実施する。decided_by: "auto" を記録し、結果は PR 本文に書く |
| 確認 | 上のどれかを満たさない(recommended、判定不能で recommended に倒したもの、範囲が大きい、副作用がある、過去にユーザーが見送った) | 途中では止まらず、最後の 1 通(documents/development/development-policy.md §1.0「承認後の進め方」)の「判断が必要なこと」で、推奨度・根拠・範囲の大きさ・見込みの時間を添えてまとめて聞く。decided_by: "user" |
| 記録のみ | none | 提示しない。判定結果だけを記録する |
副作用が無いこと(E2E): プロジェクトの固定ポートで、他プロジェクトのプロセスを止めずにサーバーを起動できる(quality-check Step 1 のポート確認の結果を使う)/ 個人の認証情報・手作業のログイン・有料の外部 API など、AI が自分で用意できないものを必要としない / E2E スイート・実行手段が導入済み / 接続先が server-startup で起動したサーバーとローカル(使い捨て)の DB・モックに閉じ、共有環境(共有の開発 DB・staging 等)や外部サービスへの書き込み・送信をしない(判断できなければ確認の区分)。server-startup の停止規則は変えない(自動実施だけ一段厳しい条件にする)。
確認の対象があるときの順序(quality-check から実行された場合): 自動実施分の実行 → Step 5 の差分のコミット → --check-untracked で未追跡の確認(最初の push の前。quality-check Step 6 の手順)→ push → PR 作成 → 最後の 1 通 → 返答 → 実施と決まったものを実行・記録し、同じ PR にコミット → PR 本文の更新 → quality-check Step 6(フラグ作成。設計との差異の項目がある場合は、その項目への OK を受けてから)→ PR 本文の Flag commit を更新 → push(その後にマージ)。PR は通常の PR で作り(draft にはしない)、本文に「確認待ち」と書く。リモートや PR を使わないプロジェクトでは push・PR を省き、仕上げた feature ブランチで最後の 1 通を送る(documents/development/development-policy.md §1.0「承認後の進め方」7)。確認待ちの PR は、その PR の作業ツリーで、返答 → フラグ作成の後にだけマージする(別の作業ツリーから PR 番号を指定してマージしない)。返答までフラグは作らない。返答を受けたら Step 0 からやり直さず、ここから再開する(.quality-check-report.json を残す)。
確認で示す選択肢:
| 対象 | 選択肢 |
|---|---|
| ミューテーション | ① 実施 ② 見送り(2 択) |
| E2E(既存シナリオ経路) | ① 実施 ② 見送り(2 択) |
| E2E(新規導線・シナリオ未整備) | シナリオのドラフトを提示した上で ① シナリオ追加 + 実行 ② シナリオ追加のみ(実行見送り) ③ 見送り(3 択) |
recommendation_basis に未導入の事実を記録する)documents/features/ 等)から導出し、実装コードから逆算しない(quality-policy §4 のテストオラクル原則と同じ規律)none の対象は提示せず、判定結果のみを記録する(「記録」節参照)decline_reason と永続台帳に記録するrecommended・過去の見送り)を recommendation_basis に書くミューテーションはテストスイートが全て成功している状態でのみ実行する。quality-check から実行される場合はサイクル完了後(テスト緑確認後)に到達するためこの前提は満たされている。単体実行時はテストを実行して緑を確認してから起動する。今回の作業による失敗なら直してから実行する(通常の作業)。今回の作業と無関係な失敗なら実行せず、その事実を記録して最後の報告に 1 行書く(ユーザーに途中で確認しない)。
差分スコープ・ベース ref の規律は従来どおりとする。
mutation:diff が、ベース ref との merge-base に対する作業ツリーの差分の hunk を行範囲として mutate に渡す。glob 特殊文字を含むパスはファイル単位に縮退)または変更クラス(PIT: mutationDiff -PmutationDiffBase=origin/main)。定義は quality-policy §2「差分スコープの定義」を正とする。変更ファイル全体・プロジェクト全体のフル実行は行わないMUTATION_BASE_REF で Step 1 と同じ ref を指定する)。HEAD は Step 1 の基幹になり得ないため無効: MUTATION_BASE_REF=HEAD の計測、および stderr に [mutation:diff] warning: ... resolves to HEAD itself が出た計測(作業ツリーの未コミット行のみのスコープ)は、ゲートの計測(executed)として記録しない。その場合は Step 1 の基幹を MUTATION_BASE_REF に指定して再実行し(runs に数えない)、基幹を解決できないときは scope_error として記録する。基幹を指定しても同じ警告が出るのは Step 1 の差分(origin/main...HEAD)が空、すなわち変更がまだコミットされていない状態なので、コミットしてから quality-check を実行する(exit 0 の実行を scope_error として記録しない)。使用した ref を mutation.base_ref に、粒度を mutation.scope(changed_lines / changed_classes。旧配線のままファイル単位で実行された場合は changed_files — lint-scaffolding の再配線を案内する)に記録するmutation:diff(JS)/ mutationDiff(Java)を実行し、レポート(Stryker: reports/mutation/mutation.json / PIT: build/reports/pitest/mutations.xml)からミュータント総数・生スコア・生存ミュータントを読み取る(killed / 生存 / 集計外の status 対応は quality-policy §2「ツール status との対応」— NoCoverage は生存として台帳に載せる)
mutation.survivors に一覧化する(テスト設計メモの不変条件・ファルシフィケーション項目に対応する変更行のものは memo_linked: true とする)本スキルのミューテーションに通過判定はない。 スコアは参考情報として記録するのみで、いかなる基準との比較もブロックには用いない。生存ミュータントへの対処は、ユーザーと合意せずに次の既定の規則で AI が決める(自動実施・確認で実施のどちらでも同じ)— いずれもブロックしない。① memo_linked: true を先に、撃殺できるものは撃殺テストを追加する(red-green 検証、1 実行あたり最大 5 件 — 「トリアージ規律」)② equivalent は 1 件ずつ論証できたものだけ ③ 残りは unresolved として台帳に持ち越す(「台帳更新」の書き方に従う)。
| 対処 | 内容 |
|---|---|
| その場でテスト追加 | 撃殺テストを追加する(red-green 検証必須 — 下記)。再計測は対処予定の生存を全て処理してから 1 回だけ行い(1 件ごとに再計測しない)、台帳を更新する。撃殺テスト・台帳更新の差分は quality-check Step 6 のフラグ作成より前にコミットする(「台帳更新」節のコミット順序参照) |
| 台帳に持ち越し | 生存への対処を持ち越す。永続台帳のミューテーション見送り履歴に対象領域・理由を記録する |
| 対処不要と判断 | 理由を記録して確定する(equivalent / accepted の論証がある場合) |
同一ブランチ内での再実行(撃殺テスト追加後の再計測)では Stryker の incremental を許可する。
初回計測は MUTATION_INCREMENTAL を明示的に外して(キャッシュなしで)行い、撃殺テスト追加後の再計測を MUTATION_INCREMENTAL=1(Windows は cross-env / $env:。受理値・キャッシュの仕組み・その限界は stack README「Re-measurement」を正とする)で実行する。実行時に stderr へ出る [mutation:diff] incremental: 行(reusing / starting / disabled for this run — 最後は前回キャッシュを削除できずキャッシュ無しで実行した意味)を確認し、キャッシュを再利用した計測かどうかを mutation.incremental に記録する(reusing のみ true。スキーマ参照)。キャッシュの再利用判定は行番号ベースであり、同一ファイルの大きな編集ではキャッシュ由来のミュータントが変更行の外に現れうる(README が明記する残存制限)。変更行以外の行に生存が報告された場合は、フラグを外して 1 回だけ再実行して確認する — この確認実行は mutation.runs に数え、上限(「実行回数の上限」)を超える場合は実行せず、該当する生存を unresolved として持ち越す(承認は求めない)。
1 回の quality-check(単体実行時は 1 セッション)でのミューテーション実行は、初回計測 1 回+縮退再試行 1 回+撃殺テスト追加後の再計測 1 回の最大 3 回とする。上限に達したら追加の実行はせず、残りの生存を unresolved として持ち越して記録する(承認は求めない)。実行回数は mutation.runs に記録する(バジェットの数値・キーは従来どおり quality-policy §2 を参照する。縮退再試行が 1 回である旨も同 §2 を正とする)。計測が一切得られなかった試行(tool_error / scope_error で終了し、解消手順を試して再試行した場合)は runs に数えない。
実行時間バジェットの既定値と上書きキーは quality-policy §2「上書きの契約」を参照する(数値・キー名は本スキルに置かない)。超過時は縮退再試行(スコープ絞り込み。絞った場合は mutation.scope_reduced に記録)を行い、それでも完走できない場合は正規 outcome として aborted_reason: "unmeasurable_within_budget" を記録して先へ進む(非ブロック)。
equivalent 判定の基準: 結果が同一でも、副作用・発行文数・実行経路の観測可能な差を生む変異は equivalent としない。複数変異の一括判定をしない。 判断根拠を 1 件ずつ記録する。「観測可能な挙動がその関数に到達しうる入力全体で不変」を論証できたときにのみ equivalent と判定する(「現行テストで落ちない」は根拠にならない)。その論証は呼び出し元の現在の構成(「今の呼び出し元は空配列を渡さない」等)に依存させず、関数契約(不変条件)と直接入力テストで関数境界に閉じて行う — 呼び出し元に依存した論証は呼び出し元が増えた時点で無効になるkilled を主張する。この検証なしに killed を主張してはならない。検証時に実行するのは当該テストファイル(対象テストのみ)とし、スイート全体は回さない。検証を要するのは killed を主張する生存に限り、1 実行あたり最大 5 件(memo_linked: true を優先)。上限超過分は unresolved として台帳に持ち越す(非ブロック)tool_false_negative(ツール偽陰性): トリアージ決定値に含まれる。Stryker の static: true かつ Survived のミュータントは機械判定でこれに分類する。 score_raw はツール算出の生値であり tool_false_negative を含む。台帳に件数を明示し、スコアの解釈時に差し引いて読むmutation.survivors — 永続台帳は生存を行単位で持たない)にない生存が出た場合: 前回の生存台帳と突き合わせる前に、その行が今回の差分で初めてスコープ入りしたかを確認する(前回計測の生存台帳が参照できない場合は、この確認のみを行う)。変更行スコープは行単位のため、非挙動差分(className・整形・同一行にある別の式の編集)でも同じ行の既存の分岐が対象に入る(変更行の上位集合 — 設計どおりの挙動であり、今回の修正が欠陥を持ち込んだことを意味しない)。非挙動差分でスコープ入りした既存分岐の生存は「既存コードのテスト欠落の発見」として扱い、第一選択として撃殺テストを追加する。再計測で出た生存に追加した撃殺テストは red-green 検証で担保し、そのための再計測は行わない(実行回数の上限 — 超過する再計測はしない)。red-green の上限(1 実行あたり 5 件)を超える分と対処しない分は unresolved として台帳に持ち越す(非ブロック)file:line:mutator:replacement を鍵にするミューテーションを実施し、memo_linked: true の生存または equivalent / accepted 判定が残った場合は、QAエンジニア(ファルシフィケーション型)1 体を(起動前に review-budget begin --phase mutation --roles falsification-qa で予約し、)サブエージェントとして起動し、台帳の分類妥当性を検証する(指摘が出ても非ブロック。指摘に従って分類を直し、直さない指摘は理由を記録する。ユーザーと合意しない)。mutation フェーズの予約は 1 回で延長できない。上限なら検証を追加せず、残りを記録して進む。実装者の自己トリアージだけで分類を確定しない。 使用モデルは quality-check SKILL.md Step 4「使用モデル(必須)」の規定に従う。
ミューテーションの実施・生存ゼロは、行網羅・配線検証の証明ではない。 既知の穴として、Stryker は ObjectLiteral を既定で除外しており、また呼び出し引数の識別子置換(引数に別の変数を渡す誤り等)には変異が生成されない。ミューテーション結果を「この行がテストされている」「この配線が正しい」の証明として扱ってはならない。
| 状況 | 挙動 |
|---|---|
差分スコープが空(mutation:diff / mutationDiff が終了コード 0 + empty scope メッセージで終了。実行して初めてミュータント数 0(全て除外種別等)と判明した場合も同様。実行単位が複数に分かれる構成(PIT をモジュールごとに適用したマルチモジュール等)では各単位が自分の行を出すため、どの単位もミュータントを 1 つも生成しなかった(empty scope 行、またはスコープはあるがミュータント数 0 で完走)ときだけ空スコープとする — 1 単位の行で全体を判定しない。本行が空スコープ判定の正であり、スタック README は観測される出力の説明として参照する) | 実行しない(または実行結果を破棄する)。reason: "empty_scope" を記録する(提示・確認はしない) |
差分スコープの導出に失敗(ベース ref 未取得・ローカル基幹が HEAD と同一・スコープとして表現できないパス(Stryker の否定パターンと衝突する ! 始まりのルート直下パス)・前回のレポートを削除できない(ディレクトリや実行ディレクトリ外を指す jsonReporter.fileName は削除しない)、等で非 0 終了。cannot resolve the merge base / no base ref found / cannot scope 等) | empty_scope として記録してはならない。 reason: "scope_error" を記録し、エラーメッセージが示す解消手順(git fetch origin main、MUTATION_BASE_REF の設定、ファイルの改名または mutate グロブからの除外、レポートの手動削除または jsonReporter.fileName の修正 等)を AI が 1 回試して再実行する。解消しなければ記録して最後の報告に 1 行書く。非ブロック |
| ツールの起動失敗 | 解消手順を AI が 1 回試して再実行する。解消しなければ reason: "tool_error" を記録し(非ブロック)、最後の報告に 1 行書く |
ミューテーションテストはローカルで実行し、CI には組み込まない(quality-policy §2「ミューテーションテストの実行ポリシー」)。ミュータント単位のタイムアウトは Stryker / PIT の組み込み機構をそのまま使う。
documents/development/development-policy.md §1.0「承認後の進め方」 の例外 X5)— ① 方針を変えて修正を継続する(変更する方針を明示させる — 方針の変更がない再実行は認めない。継続後の反復にも同じ上限(最大 2 回)を再適用し、上限到達のたびに本判断へ戻る — 都度ユーザーの明示選択が必要)② 中断する(フラグは作成されない)。E2E の失敗を受容したままフラグを作成する選択肢は存在しない(quality-check SKILL.md Step 5 / スキーマの e2e.result 規約のとおり、失敗は修正を経ないとフラグに到達できない)。反復中はサーバーを起動したままにしてよい(① で継続する場合を含む)。② で中断する場合、および全反復の完了時は、サーバー停止(手順 3)が必須である(起動したまま放置しない)documents/development/test-recommendation-ledger.md)コミット対象の markdown 台帳。E2E シナリオ未整備の導線一覧とミューテーション見送り履歴の 2 表を持つ。フォーマットの正は本節の雛形とする(init は同内容を documents/development/test-recommendation-ledger.md に copy-if-missing で配布する)。手で編集してよいのは状態の是正のみ。
# Test Recommendation Ledger
test-recommendation スキル(quality-check Step 5)が管理する永続台帳。**手で編集してよいのは状態の是正のみ**。フォーマットを変えないこと(スキルが読み書きする)。
運用規則:
- 行の一意キーは「導線」(E2E 表)/「対象領域」(ミューテーション表)。同じ対象を再検出・再提示したときは**既存行を更新**する(重複行を作らない)
- 行は各表のヘッダ区切り行の直後に追記する
- `scenario_added` のまま 6 か月以上更新のない行は、末尾の「アーカイブ」節へ移してよい(以降の判定は実 E2E spec への突き合わせで行われるため)。**`dismissed` の行はアーカイブしない** — 恒久的に再提案しないというユーザー判断の記録そのものであり、台帳に残り続けることで効力を持つ
## E2E シナリオ未整備の導線
<!-- 状態: pending(再提案対象)/ scenario_added(シナリオ追加済み)/ dismissed(恒久的に不要とユーザーが判断 — 再提案しない) -->
| 導線 | 検出日 | 最終提示日 | 見送り回数 | 状態 | 状態更新日 | 見送り理由 |
|---|---|---|---|---|---|---|
## ミューテーション見送り履歴
<!-- 推奨度: strong(強推奨)/ recommended(推奨) -->
| 対象領域 | 検出日 | 最終提示日 | 見送り回数 | 推奨度 | 見送り理由 |
|---|---|---|---|---|---|
## アーカイブ
(判定対象外の旧行をここへ移す)
init とするが、copy-if-missing(存在しなければコピー)の例外扱いである — 台帳はプロダクトの蓄積データであり、init 再実行時の上書き refresh の経路に乗せてはならないinit を再実行していない既存プロダクトでは、本スキルが初回実行時に本節の雛形から生成する(generate-if-missing のフォールバック)documents/development/development-policy.md §1.0「承認後の進め方」 の例外 X7)documents/ 配下のため、quality-check「ハーネスのみ変更の免除」の対象ではない(docs 変更として統合レビュアーのレビュー対象)| 状態 | 挙動 |
|---|---|
pending | その導線に触れる変更が来たら再提案する |
dismissed | 再提案しない(ユーザーが恒久的に不要と判断したもの) |
scenario_added | 以降の判定は既存シナリオ経路の突き合わせに移る |
declined 済みの同一対象領域は、台帳の最終提示日以降に当該領域へ新たな実装差分が入っていない場合は再提案しない(判定は台帳の最終提示日と変更差分の突き合わせで機械的に行う。日付粒度で判定が曖昧な場合 — 最終提示日と同日の差分等 — は再提案する側に倒す。記録のみ更新する)。新たな実装差分が入った場合は再提案する。見送り回数が 3 回以上の対象領域は個別の詳細提示をせず「継続見送り: N 件」の 1 行サマリに含める。ブランチを跨いだ恒久抑止はしない — 恒久的な抑止は E2E 側の dismissed と異なり、ミューテーションには設けない。いずれの場合も台帳の最終提示日を更新し、見送り回数はユーザーが見送ったときだけ増やす(下記「ユーザーの見送りと AI の持ち越し」)。ミューテーション見送り履歴の表は履歴(最終提示日・見送り回数)の記録であり、E2E 表のような状態(pending 等)の管理はしないpending 行は個別提示せず、「継続 pending: N 件」の 1 行サマリで提示する(シナリオドラフトの起草は行わない)recommended に倒した対象も台帳に記録し、同じ見送り回数規定を適用する(毎回の再提示を防ぐ)台帳の書式(列・見出し)は変えず、値の書き方で区別する。自動実施の条件「同じ対象をユーザーが見送った記録が無い」はこれで判定する。
自動持ち越し: の部分を含める(「台帳更新」)。3.3.0 以前の行で見送り回数が 1 以上のもの(ユーザーが 3 択で持ち越しを選んだ行を含む)は、ユーザーの判断として扱う(確認に回る)pending かつ見送り回数 1 以上なら、ユーザーが見送ったものとして確認に回す。dismissed は従来どおり再提案しないscenario_added、③ 見送り → pending(次回も再提案)または dismissed(ユーザーが恒久的に不要と明示した場合のみ)。見送り理由を記録する。状態(pending / scenario_added / dismissed)を変更したときは状態更新日を併せて更新するunresolved)は見送り回数を増やさず、見送り理由を 自動持ち越し: 生存 N 件(unresolved) の形で書く(既存の行があれば最終提示日を更新し、見送り理由はユーザーの過去の見送り理由を残し、既にある 自動持ち越し: の部分は今回の内容で置き換え、無ければ / で足す)git add -A / git commit -a を使わない。ユーザーの未追跡ファイルを巻き込まないため)(台帳は documents/ 配下でハーネス免除の対象外のため、フラグ発行後のコミットはフラグを無効化し hook がマージをブロックする — quality-check SKILL.md Step 6「フラグの性質」)。単体実行時は同ブランチの通常フローでコミットする.quality-check-report.json の mutation / e2e オブジェクトに記録する。フィールド定義は _schemas/quality-check-report.schema.md を正とする(値の閉集合・必須性はスキーマに従う)。
| オブジェクト | 内容 |
|---|---|
mutation | recommendation(strong / recommended / none)/ recommendation_basis(該当ヒューリスティクス項目。判定不能の事実・確認の区分にした理由を含む)/ user_decision(executed / declined / not_proposed。自動実施を含む)/ decided_by(auto / user)/ decline_reason。実行時は scope / base_ref / mutants_total / score_raw / survivors / incremental(最後の実行がキャッシュを再利用したか)等の実行時フィールドを併せて記録する(実行モード・スコア基準等の旧キーは廃止 — 記録しない) |
e2e | recommendation / recommendation_basis / user_decision / decided_by / result / issues / new_scenarios(起草したシナリオと 3 択の判断)。旧トップレベルの e2e_result / e2e_issues を置き換える |
none の対象も判定結果を記録する(recommendation / recommendation_basis、user_decision: "not_proposed")e2e.user_decision: "added_only"・e2e.result: "skipped"・new_scenarios[].decision: "added_only" を記録する.quality-check-report.json には触れない(レポートは quality-check の実行単位のため)。実行結果・判断は永続台帳とセッション出力に記録する。
git diff で判定対象を取得したnot_configured / E2E スイート不在時は新規導線検出のみ / 判定不能は recommended に倒し根拠欄に記録)strong / recommended を自動実施 / 確認に区分した(自動実施は strong・範囲が上限以内・副作用なし・ユーザーの見送りなしのすべて。none は提示せず記録のみ)mutation / e2e と decided_by、単体実行は台帳 + セッション出力。見送りは decline_reason 付き)tool_false_negative の機械判定 / バジェット超過は縮退再試行 → unmeasurable_within_budget で先へ / 検証対象が残れば QAエンジニア(ファルシフィケーション型)で分類妥当性を検証)还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
バックエンド実装時に使用。DRY原則遵守。コーディング規約準拠。
中文简介正在准备中。当前显示原文说明。
Use before implementing any feature, behavior change, or refactor - settles requirements and design, then gets the design independently reviewed and approved by the user before code is written
中文简介正在准备中。当前显示原文说明。
作業開始時に使用。mainブランチでの作業禁止。Issue先行作成必須。
中文简介正在准备中。当前显示原文说明。
UI実装後の検証時に使用。agent-browser CLIでブラウザ上の動作を手動検証する。「UIを確認」「画面テスト」と言われたら使用(プロジェクトの E2E スイート実行は quality-check Step 5(推奨度・範囲で自動実施または確認)/ server-startup が担当)。
中文简介正在准备中。当前显示原文说明。
DBマイグレーション作成時に使用。バージョン番号競合防止。mainブランチ確認必須。
中文简介正在准备中。当前显示原文说明。
Use when independent tasks benefit from parallel work without shared state or sequential dependencies
中文简介正在准备中。当前显示原文说明。