| name | 01a-select-scenario |
| description | 指定シナリオID(おすすめ選択や明示指定で決まったID)があればそれを採用し、無ければフォールバックとして演習済みシナリオIDを除外して未演習シナリオを無作為順に並べ、今回の主シナリオと内部状況ファイルを作るためのskill。 |
シナリオ選定
このskillはステップ1で使います。広い推論ではなく、制御に近い処理です。
言語
人間に見せる文言は必ず日本語で書きます。このステップは通常、内部ファイルだけを書きますが、公開する引き継ぎ文が必要な場合も日本語にします。
入力
SCENARIO.tsv
- 準備モード(アドホック生成 / 事前生成再利用。
00-run-exercise が事前生成3点の有無から自動決定)
- 訓練モード(
whole=全体訓練 / individual=個別訓練。00-run-exercise のステップ3.5 設定質疑で決定)
- 個別訓練のとき: 自部門(対応者の所属部署。
00-run-exercise のステップ3.5 で取得した正規化済みの部署名)と SCENARIO-LIST.tsv(無作為選定時に自部門が関与するシナリオへ絞るため 初動対応部署 / 受動対応部署 を参照する)
- 事前生成再利用モードのとき:
timelines/ 配下の事前生成済みシナリオ別ディレクトリ
- 任意の指定シナリオID(起動時にシナリオが明示指定された場合、または設定質疑(ステップ3.5)の一覧・おすすめから候補を1つ選んだ場合。指定があれば無作為選定(フォールバック)より優先する)
- 任意の演習済みシナリオID一覧
- 任意の乱数seed
- 任意の既存runディレクトリ
./ref 配下の仕様・設計文書
./ops 配下の障害対応手順書・監視手順・Runbook
ref / ops の参照
対応者からの質問に答えるために必要な場合、./ref と ./ops を参照してよいです。ただし、このステップの選定結果、隠し状況、未来情報は開示してはいけません。
出力
.ai/runs/<run-id>/situation.tsv を次の列で書きます。
selected_at primary_scenario_id related_scenario_ids selection_method training_mode primary_department disclosure
disclosure は internal にします。training_mode / primary_department は 00-run-exercise から渡された値をそのまま書きます(全体訓練なら training_mode=whole・primary_department 空、個別訓練なら training_mode=individual・primary_department に自部門名)。定義は ../../shared/references/data-formats.md「状況」節に従います。
手順
SCENARIO.tsv を読む。
- 指定シナリオIDがある場合(明示指定の経路):
- 指定IDが
SCENARIO.tsv に存在することを確認する。存在しなければ選定を止め、内部ログにエラーを記録して操作者へ選び直しを促す。
- 事前生成再利用モードの場合は
timelines/<SCN>/ に事前生成3点(TIMELINE-1.tsv / QUESTIONS-1.tsv / ANSWERS-1.tsv)が揃っているか確認する。揃っていなければ選定を止め、内部ログに記録して 00-run-exercise 側へ戻す(事前生成が無いシナリオは 00-run-exercise がアドホック生成へ自動切替するか、設定質疑で別IDを尋ね直す)。
- 指定IDをそのまま
primary_scenario_id にする(ランダム順・シャッフルは行わない)。操作者の明示指定なので演習済みID一覧より優先する。指定IDが演習済みだった場合は内部ログに「演習済みだが明示指定」と記録する。
selection_method を specified にする。手順6へ進む。
- 個別訓練の場合、自部門はこの明示指定とは独立に取得済みなのでそのまま
primary_department に使う。指定シナリオの 初動対応部署(初動)にも 受動対応部署 にも自部門が含まれない場合でも、操作者の明示指定を尊重して採用するが、内部ログに「自部門が関与しないシナリオを明示指定」と記録する(06 が自部門の関与開始点を見つけられないときのフォールバックに備える)。
- 指定シナリオIDが無い場合(フォールバックの無作為選定経路。おすすめ選択も明示指定もされなかったとき): 演習済みシナリオID一覧があれば、そのIDを除外する。
- 事前生成再利用モードの場合のみ、
timelines/<SCN>/ に事前生成3点(TIMELINE-1.tsv / QUESTIONS-1.tsv / ANSWERS-1.tsv)が揃っていないシナリオを除外する。アドホック生成モードでは全シナリオが選定対象。個別訓練の場合はさらに、SCENARIO-LIST.tsv を参照し、自部門が 初動対応部署(初動)にも 受動対応部署 にも含まれないシナリオを除外する(自部門が初動または受動で関与するシナリオだけを無作為対象にする)。除外後に候補が0件なら、選定を止め、内部ログに記録して、別部署の指定・シナリオIDの明示指定・全体訓練への切替のいずれにするかを操作者へ確認する。
- 乱数seedが指定されていれば、再現可能な選定に使い
selection_method を seed にする。指定がなければ shuf 相当でランダム順にし selection_method を random にする。残った未演習シナリオの先頭を primary_scenario_id にする。
同時発生候補ID がある場合、行の内容と入力情報から妥当な候補だけを選ぶ。不確かな場合は空欄にする。
- 状況ファイルを書く。
training_mode と primary_department は 00-run-exercise から渡された値を書く(個別訓練は individual +自部門名、全体訓練は whole +空)。
internal_log.jsonl に内部イベントを書く。
開示ルール
演習中、選定されたシナリオ、関連シナリオID、隠れた原因、選定方法を人間に開示してはいけません。個別訓練の自部門は対応者本人の所属なので秘匿不要ですが、自部門が受動対応で選ばれた事実や、シナリオの他の受動対応部署名は開示してはいけません。
個別デバッグ
指定シナリオIDがある場合は、毎回そのIDが選定されることを確認します。指定が無い場合は、同じ演習済みID一覧と乱数seedを指定して再実行すると、選定を再現できるようにします。