main 6580c3b のRAIOPS-4で、資格情報なしの一時プロファイルを使い、dbt設定とモデルが解釈・空コンパイルできることを確認した。tools/check_dbt_static_contract.py と tests/test_dbt_static_contract.py も通過し、CI品質ゲート 28577692921 とPagesビルド 28577691531 も成功している。
テストパターン一覧
Retail AI Ops Copilotで使うべき検証パターンを、実行結果ではなく「何を証明するか」「何を証明しないか」の単位で整理する。 静的検査、単体テスト、契約テスト、ローカルデータ確認、コンパイル、結合確認、画面E2Eを混ぜず、後続のセマンティックモデル、ゴールデン評価、Streamlit、Cortex準備度、RBAC/コストガードレール準備度へ渡せる形にする。
証跡レベル
同じ「テスト」でも、証明できる範囲が違う。準備度報告ではレベル名と限界を一緒に残す。
状態語と証跡境界
並列セッションと遠隔Issue運用では、配送、受理、報告、レビュー、統合判断を同じ言葉で扱わない。
posted / delivered
タスクやペイン送信が存在する段階。担当セッションが読んで作業を受けた証拠ではない。
accepted / reported
担当セッションが受理または報告した段階。成果物の正しさや統合可否はまだ別確認。
reviewed / integration_ready
監督側レビューと統合判断の語。レーン単独のHTML実装では宣言しない。
パターン一覧
各パターンは「使うべきか」「証明すること」「証明しないこと」を同じ粒度で見る。
dbt解析 / 空コンパイル
使う。dbt編集の最初の安全確認。ただしSnowflake実環境でデータを読めた証明にはしない。
dbt parse --project-dir dbt --profiles-dir /tmp/retail-ai-ops-dbt-profilesdbt compile --no-populate-cache --no-introspect --empty
YAML、Jinja、マクロ、セレクタ、テスト定義が構文上壊れておらず、レビュー可能なdbt生成物へ進めること。
実環境dbtビルド/テストは未証明。Snowflake実接続、ウェアハウス上の行数、ロール権限、Snowflake実データ上のdbtテスト成功、SQL結果正当性、Cortex Analyst、回答品質、Streamlit E2Eは証明しない。証跡ラベル: NOT_EXECUTED_NOT_PROVEN
プロジェクトファミリー、クライアント納品向け汎用スキル、Backlog受入基準、ドキュメントテンプレート。
dbtステージング/中間/マート、RAIOPS-4 dbt品質ゲート、セマンティックモデル準備度。
実環境資格情報を使う別レーンでdbt seed/build/testを実行し、ターゲット、ロール、スキーマ、失敗したテスト名を残す。
RAIOPS-12 Snowpark評価/トレース補強境界
main 6eb57f7 に、Snowparkで評価結果とトレース情報を補強する契約が統合済み。実装コミットは 1471323、ea7ac07、6eb57f7。CI品質ゲート 28580571344 とPages実行 28580570625 は成功し、フィードバック反映コミットは 2734ecb。
使う。SnowparkやCortexの実環境経路へ進む前に、ローカル契約、実行時失敗のJSON証跡、負例境界を分け、失敗時にローカルフィクスチャ成功へ黙って逃げないことを固定する。
python3 -m retail_ai_ops.eval_runner --jsonl-output /tmp/raiops12-eval.jsonlpython3 tools/run_snowpark_enrichment.py --runtime-mode local_explicit_test --eval-jsonl /tmp/raiops12-eval.jsonl --output /tmp/raiops12-enrichment.jsonpython3 tools/run_snowpark_enrichment.py --runtime-mode snowpark --eval-jsonl /tmp/raiops12-eval.jsonl --output /tmp/raiops12-snowpark.jsonpytest -q tests/test_snowpark_enrichment.pypytest -q
明示したローカル評価JSONLを集計し、18件の品質期待と8件の既知ギャップを分けて出せること。Snowparkモードでは前提不足のときに終了コード2で止まり、どの層の不足かを失敗JSONに残す。監査用の正確なキーは quality_passed=18、known_gaps_observed=8、live_external_executed=false、local_fallback_used=false などで確認する。
James修正後、入力欠落と不正JSONLでも失敗JSONを書き、成功時と失敗時のJSONが後続工程で同じ形で読めることをテストした。Harveyの第三者テスト、対象pytest、全体pytest、Linnaeusの契約フローE2Eはいずれもローカル証跡として成功。
Snowflake実接続成功、Snowparkセッション作成、ストアドプロシージャ / UDF / dbt Pythonモデル実行、Cortex実行、トレース保存への実環境保存、SQL結果正当性、回答品質は証明しない。Pages成功は公開ビルド証跡であり、実環境ランタイム証跡ではない。
Snowpark実行層、評価/トレース補強、ツールアダプタ、トレース保存、ゴールデン評価、失敗時JSON証跡の整合、Backlog受入基準。
RAIOPS-12、Snowpark Python、ゴールデン評価、トレース保存、エラー分類、L6公開面更新。
実環境資格情報とSnowpark実行環境が揃う別レーンで、ターゲット、ロール/スキーマ、ストアドプロシージャ/UDF/dbt Pythonモデル、Cortex境界、失敗時JSON証跡を別証跡として追加する。ローカル契約を実環境成功に読み替えない。
RAIOPS-7 実環境トレースランナー境界
RAIOPS-7はソース統合 b1a8568 と証跡修正 1555300 がmain統合済み。CI品質ゲート 28573780045 とPagesビルド 28573778991 は成功。候補 8408616 のローカル静的境界証跡をPages向け説明へ反映し、L4第三者テストも通過している。L5実環境境界レーンはSnowflake資格情報なしで停止。
使う。実環境実行を始める前に、環境変数不足時の明示停止、暗黙フォールバック禁止、トレース項目契約、秘密情報らしいエラーのマスキングを安いローカル静的証跡で固定する。
tools/run_live_trace.py --runtime snowflake --trace-path ...tools/run_live_trace.py --runtime local_explicit_test --trace-path ...tests/test_planner_and_trace.pytests/test_streamlit_browser_e2e.py
環境変数不足時のトレースは error_category=live_prerequisite_missing、live_external_attempted=false、live_external_executed=false、local_fallback_used=false。疑似実環境失敗では live_external_attempted=true かつ live_external_executed=false。明示ローカルトレースは6レコードで、SQLを含む行も request_text は元の質問として残り、生成SQLとは分離されている。
Snowflake/Cortexの実環境成功、Cortex Analyst実行、Snowflake OPSテーブル書き込み、Slack/Backlog/API/Webhookの実送信、SQL結果正当性、回答品質、本番運用向けの観測性は証明しない。
ツールアダプタ、トレースロガー、トレース保存、実環境統合準備度、公開面の証跡境界。
RAIOPS-7、ツールアダプタ、トレースロガー、L2統合候補、L4第三者テスト、L5実環境境界レーン。
実環境Snowflake/Cortex資格情報が揃うまでは実環境成功扱いにしない。live_external_attempted と live_external_executed を同一視しない。
RAIOPS-13 RBAC / LLM安全 / コストトレース境界
main 45c867d にRAIOPS-13のRBAC、コストガードレール、LLM安全フィールド、Snowflakeセッション制御が統合済み。CI品質ゲート 28584336684 とPagesビルド 28584336044 は成功。証跡は .agent-feedback/SUBAGENT_INVOCATIONS.md の INV-20260702-044 から INV-20260702-047、実装レポートは docs/project-management/raiops13-rbac-cost-guardrail-report.md。
使う。RBAC、LLM安全フィールド、生データ/個人情報の安全停止、コストガードレール、Snowflakeクライアントのセッションパラメータ、トレースメタデータ整合を、実環境資格情報なしでも壊れにくい契約として固定する。
pytest -q tests/test_planner_and_trace.py は 70 passed。pytest -q は 116 passed, 2 skipped。node tools/check_parallel_session_guardrails.mjs、node tools/check_feedback_reflection.mjs、python3 tools/sync_obsidian_docs.py --direction check、git diff --check はmain側確認済み。
ROLE_BOUNDARIES と LLM_SAFE_FIELDS が計画とトレースに入ること、生データ/個人情報フィールドヒントが sensitive_or_raw_data_request で安全停止すること、安全でない RETAIL_AI_OPS_LLM_SAFE_FIELDS と非正のコスト値が安全側停止になること、SQL limit とトレースメタデータが設定と一致すること、疑似Snowflakeコネクタが QUERY_TAG と STATEMENT_TIMEOUT_IN_SECONDS を受けること。
Snowflake実クエリ、実ロール付与/RLS/IAM、リソースモニター作成、ウェアハウス履歴上のクエリタグ確認、Snowflake OPS.COPILOT_TRACE_LOG への書き込み、Cortex Analyst/Search/Agents実行、SQL結果正当性、回答品質、本番FinOpsダッシュボードは証明しない。証跡ラベル: NOT_EXECUTED_NOT_PROVEN
RBAC / アクセス制御、コストガードレール、プランナー、エージェントルーター、ツールアダプタ、トレースロガー、トレース保存、Backlog受入基準、公開面の証跡境界。
RAIOPS-13、RBAC、コストガードレール、プランナー、エージェントルーター、ツールアダプタ、トレースロガー、トレース保存、L6公開面更新。
実環境資格情報と権限が揃う別レーンで、Snowflakeロール、セッションパラメータ、リソースモニター、トレース書き込み、Cortex実行を別証跡として追加する。ローカル契約や疑似コネクタ成功を実環境成功やintegration_readyとして扱わない。
dbtスキーマ / 汎用テスト / 個別SQLテスト / 静的契約ゲート
main 6580c3b のRAIOPS-4で、モデルのスキーマテスト、汎用テスト、dbt/tests/singular/、dbt/seeds/schema.yml、KPIシード契約、再集計リスクの負例フィクスチャを静的契約ゲートへ統合。tools/check_dbt_static_contract.py とpytest 7件、CI品質ゲート 28577692921、Pagesビルド 28577691531 は成功。
使う。セマンティックモデルとゴールデン評価へ渡すKPI定義、粒度、率系/再集計リスクの最低契約を守る。
python3 tools/check_dbt_static_contract.py.venv/bin/python -m pytest tests/test_dbt_static_contract.py -qdbt/models/**/schema.ymldbt/tests/generic/*.sqldbt/tests/singular/*.sqldbt/seeds/schema.yml
モデル列のnot_null/unique/rangeなどの契約、汎用テストマクロ、KPIシード行、未対応/ギャップ表現、再集計注意の個別SQL契約がリポジトリ内に静的に存在し、解釈・コンパイル可能な状態であること。
実環境dbtビルド/テストは未証明。Snowflake実データ上のdbtテスト成功、SQL結果正当性、Cortex Analyst、回答品質、Streamlit E2E、率KPIを月別以外へ安全に再集計できることは証明しない。証跡ラベル: NOT_EXECUTED_NOT_PROVEN
プロジェクト内、プロジェクトファミリー、リント・CI、Backlog受入基準、クライアント納品向け汎用スキル。
kpi_definitions シード、mart_retail_monthly_kpi、セマンティック入力、評価入力。
実環境資格情報を使う別レーンでdbt seed/build/testを実行し、Snowflakeターゲット、ロール、スキーマ、行数、失敗したテスト名、SQL結果正当性を別証跡として追加する。率系KPIの再集計はセマンティック/ゴールデン評価側のケースへ接続する。
率KPIの変異テスト / 分母ゼロ防止
L5コミット ef6a825 をローカル静的レビュー候補として反映。tests/test_semantic_contract.py、tools/validate_semantic_contract.py --json、全体pytestで、セマンティック契約の負例を検出できることを確認している。監査用ラベル: reviewed-candidate_local-static
使う。率KPIを保存済み率のまま SUM / AVG する誤用と、分母ゼロ防止の欠落をセマンティック契約変更時に早く検知する。
PYTHONDONTWRITEBYTECODE=1 pytest -q tests/test_semantic_contract.pyPYTHONDONTWRITEBYTECODE=1 python3 tools/validate_semantic_contract.py --jsonPYTHONDONTWRITEBYTECODE=1 pytest -q
セマンティック検証器が、保存済み率の SUM / AVG 誤用と、分母ゼロ防止の契約違反をローカル静的に検出できること。
Snowflake実行、Cortex Analyst登録または実応答、SQL結果正当性、回答品質、実環境外部実行は証明しない。L4ブラウザE2Eは別証跡で扱い、セマンティック検証器の追加進捗には加算しない。
セマンティックKPIモデル、検証済みクエリ、ゴールデン評価の率KPIケース、CIの契約検証器、Backlog受入基準。
セマンティックKPIモデル、dbtテスト、ゴールデン評価、L5セマンティック検証器レーン。
実環境Snowflake/Cortex、SQL結果正当性、回答品質は別証跡で追加する。L4ブラウザE2EはUI証跡として扱い、セマンティック公開面の進捗には加算しない。
Backlog / Slack 外部送信なしシミュレーション Nodeテスト
このリポジトリ群では、外部送信しない通知シミュレーションをテストパターンとして扱う。このブランチ単体では、main統合前のレーン成果物が未搭載の場合がある。監査用モード名: private_simulation
使う。遠隔報告やBacklog/Slack文面の決定的テストとして有効。ただし実配送の証跡語と分ける。
node --test tests/backlog_slack_notification.test.mjs--mode private_simulationsent_external=false
フィクスチャ入力から本文、重複抑止、宛先メタデータ、外部送信しない安全経路が期待通りになること。
実Slack投稿、実Backlog API配送、相手ペインの受理、GitHub Issue上の報告確認。
プロジェクトファミリー、クライアント納品向け汎用スキル、Backlog受入基準、ドキュメントテンプレート。
遠隔Issue報告、Backlog/Slack通知レーン、並列セッション運用。
main統合後に現物ファイル名でコマンドを固定し、実配送確認とは別の実環境結合項目を作る。
構成図品質リント
接続線の幾何、テキスト配置、構成図品質をまとめて見るNodeラッパーがある。構成図HTMLの変更時に必須ゲートとして扱う。
使う。GitHub Pagesの構成図品質を安定させるための低コストで決定的な静的ゲート。
node tools/check_diagram_quality.mjstools/check_diagram_connectors.mjstools/check_diagram_text_layout.mjs
HTML/SVGの接続線、矢印、ラベル、テキストはみ出しなどのページ品質ルールが壊れていないこと。
ビジネスロジック、dbt契約、元画像との芸術的忠実度、Snowflake/Cortex実行成功。
リント・CI、プロジェクトファミリー、クライアント納品向け汎用スキル、ドキュメントテンプレート。
構成図HTML、構成図レビューレーン、準備度オーバーレイ。
構成図変更時だけでなく、公開前のPages簡易確認と組み合わせる。今回のテストパターンページ自体には構成図リントを適用しない。
フィードバック反映リント
tools/check_feedback_reflection.mjsがプロジェクト内台帳、ルール、子スキルの構造を検査する。
使う。レビュワー指摘や改善手順を反映する変更では必須。今回のHTMLレーンでは編集禁止のため提案に留める。
node tools/check_feedback_reflection.mjs.agent-feedback/構造、プロジェクトスキル、子スキル一覧。
台帳行、target_scope、trigger_decision、子スキル経路などの構造的な反映漏れがないこと。
自然言語上の全トリガーを人間が拾えたこと、反映内容の品質、mainセッションの統合承認。
プロジェクト内、リント・CI、クライアント納品向け汎用スキル、Backlog受入基準。
フィードバック台帳、エージェントスキル統制、レビュー引き継ぎ。
共有スキルや台帳更新はこのレーンでは行わず、mainセッションで反映可否を決める。
並列セッションガードレールリント
親スキルとタスク分割文書にガードレールがある。専用リントは候補で、現時点では文書レビューと関連リントで補助している。
使うべき。posted、delivered、accepted、reported、reviewed、integration_readyの混同を機械的に止める余地が大きい。
parallel-session-review-orchestration/SKILL.mddocs/project-management/parallel-session-task-split-20260630.md
将来の状態語リント。
タスクブリーフ、レーン報告、レビュー引き継ぎで状態語が段階別に書かれていることを検知できる。
相手ペインが実際に作業を受理したこと、成果物がレビュー済みであること、統合してよいこと。
プロジェクトファミリー、クライアント納品向け汎用スキル、リント・CI、Backlog受入基準。
並列委任、遠隔Issue報告、オーケストレーター側レビュー。
mainセッションでリント化対象の文面と誤検知許容度を決める。レーン単独ではintegration_readyを宣言しない。
Python pytest プランナー / トレース / Obsidian同期
tests/test_planner_and_trace.pyとtests/test_sync_obsidian_docs.pyがある。pytestを実行できる環境がない場合は環境未整備として扱う。
使う。LLMルーティング、安全停止、トレース、ゴールデン評価フィクスチャ、ドキュメント同期の局所回帰を安く検知できる。
python3 -m pytest -qpython3 tools/sync_obsidian_docs.py --direction check
ローカルPython環境でプランナー/トレースやドキュメント同期のフィクスチャが期待通り動くこと。
Cortex、Snowflake、Streamlitの実環境動作、公開Pages到達、LLM回答品質の網羅性。
プロジェクト内、プロジェクトファミリー、リント・CI、Backlog受入基準。
エージェントプランナー、トレース記録、Obsidianドキュメントミラー、ゴールデン評価シード。
pytest未導入なら実施済みにしない。Python環境固定後にコマンド、ランタイム、スキップ理由を報告形式へ入れる。
RAIOPS-11 Streamlitコンポーネント簡易確認
L4コミット 7b3656d9 を、ローカルのコンポーネント簡易確認済み候補として公開面へ反映。mainセッション/オーケストレーター再実行ではStreamlit UI簡易確認と全体pytestが成功している。監査用ラベル: reviewed-candidate_local-component-smoke
使う。Streamlitの利用者向け表示経路を作り始めた段階で、暗黙フォールバックやフィクスチャ成功条件の緩みを安く止める。
tests/test_streamlit_ui_e2e_smoke.pydocs/project-management/raiops11-ui-e2e-smoke-report.mdpython3 -m retail_ai_ops.eval_runner は EVAL_EXIT=1、9/10 passed、既知ギャップは golden-005 のみ。
Snowflake資格情報なしで暗黙フォールバックしないこと、local_explicit_testだけがフィクスチャ成功扱いになること。構造化KPI、追加質問、曖昧質問、未対応質問、危険操作の5シナリオで、ルート、ツール計画、SQLリクエスト、結果、引用、トレース保存、人間承認候補を確認する。
Playwrightまたは実ブラウザDOM操作、スクリーンショット、レスポンシブ、アクセシビリティ、Snowflake / Cortex実環境実行、回答品質、SQL結果正当性、外部Slack/Backlog送信は未証明。利用者向けE2E未満として扱う。証跡ラベル: live_external_executed=false
Streamlit UI、アプリ実行層、トレース記録、人間承認候補表示、GitHub Pages公開面の証跡境界。
Streamlit UI、アプリ実行層、エージェントルーター、プランナー、ゴールデン評価、人手レビューキュー。
Playwrightまたは実ブラウザDOM、スクリーンショット、レスポンシブ、アクセシビリティ、実環境Snowflake/Cortex、回答品質、SQL結果正当性は別証跡として追加する。
RAIOPS-11 StreamlitブラウザE2E
main統合 65ff7c3 の監督セッション再実行では、初回ブラウザE2Eで1件のタイミング不安定を検出し、直後の再実行で6件成功した。直前の修正後 c150168 でもブラウザE2EとUI簡易確認が成功している。
使う。コンポーネント簡易確認では見えない、実ブラウザDOM、チャット入力、タブ表示、SQLプレビュー、結果、トレース保存、スクリーンショットの利用者経路を検査する。
tests/test_streamlit_browser_e2e.pytests/test_streamlit_ui_e2e_smoke.pyrequirements-e2e.txtoutputs/raiops11-browser-e2e/*.png / *.jsonl はローカル実行証跡。
Playwright ChromiumでStreamlitサーバーをサブプロセス起動し、/_stcore/health 待機後に主要シナリオを実ブラウザ経由で確認すること。Snowflake資格情報欠落時は明示停止し、ローカルフィクスチャへ暗黙フォールバックせず、不要な欠落証跡ファイルも作らない。
Snowflake/Cortex UIの実環境連携、実SQL結果正当性、回答品質、レスポンシブ/アクセシビリティ/クロスブラウザ網羅、外部Slack/Backlog送信、本番承認キュー永続化は証明しない。初回の引用DOM失敗は、直後再実行成功後もDOMタイミング不安定リスクとして残す。
Streamlit UI、アプリ実行層、SQLプレビュー、トレース記録、人間承認候補表示、公開面の証跡境界。
Streamlit UI、データアナリスト、アプリ実行層、トレースロガー、人手レビューキュー、L4 RAIOPS-11ブラウザE2Eレーン。
実環境UI結合、回答品質、SQL結果正当性、アクセシビリティ/レスポンシブ、クロスブラウザ確認は別証跡として追加する。コンポーネント簡易確認とブラウザE2Eを実環境成功として扱わない。トレース/スクリーンショットはgit管理外のローカル出力として扱う。
ゴールデン評価 / 利用者向け回答品質
main統合 65ff7c3 の監督セッション再実行では、pytestとNodeの外部送信なしシミュレーションが成功した。L4修正後 c150168 のローカル静的フィクスチャ評価では、18件の品質期待が通り、8件の既知ギャップを観測し、想定外失敗はなかった。監査用の正確なカウンターは後続の証跡欄に残す。
使う。dbt契約だけでは防げない、質問意図、KPI粒度、未対応回答、率系再集計の品質劣化を検知する。
python -m retail_ai_ops.eval_runnerpython -m retail_ai_ops.eval_runner --strict-known-gaps.venv/bin/pytest -qnode --test tests/backlog_slack_notification.test.mjs
ローカル静的フィクスチャ評価で、18件の品質期待が通り、8件の既知ギャップが想定通り観測され、想定外失敗がないこと。厳格な既知ギャップモードでは既知ギャップを失敗として扱い、品質ゲート圧力を残す。監査用キー: evaluation_mode=local_static_fixture、quality_passed=18、known_gaps_observed=8、matched_expectation=26
Snowflake実行、Cortex実呼び出し、UI操作性、全質問の正しさ、セマンティック契約とプランナーの完全整合は証明しない。証跡ラベル: live_external_executed=false
プロジェクトファミリー、クライアント納品向け汎用スキル、Backlog受入基準、ドキュメントテンプレート。
セマンティックモデル、ゴールデン評価、Streamlit UI、Cortex Analyst/Search/Agents準備度。
厳格な既知ギャップモードは品質ゲート圧力として別扱い。ブランチ内証跡レポートのカウンターが変わった場合は、古い正確なカウンター行を残さず更新してから公開面へ反映する。
統合証跡レポートのカウンター鮮度
main統合 65ff7c3 はCI品質ゲート 28563040190 とPagesデプロイ 28563039370 が成功。L2修正 c150168 後のL4再確認で、品質期待18件、既知ギャップ8件、厳格モード失敗8件、期待一致26件を再確認した。ただしintegration_readyとは扱わない。
使う。評価カウンターが変わるたびに公開面、ブランチ内レポート、リントトークンのどれかが古いままだと、ローカル静的証跡と公開Pages証跡がずれる。
git diff --check HEAD~1..HEADrgで旧カウンター行の不在確認node tools/check_public_surface_links.mjs
公開説明が最新のローカル静的評価カウンターを参照し、古いレポートを正として扱っていないこと。
実環境Snowflake/Cortex実行、実SQL結果正当性、回答品質そのもの、Pages公開後のHTTP 200。
ゴールデン評価、統合証跡レポート、公開面リント、並列セッション引き継ぎ。
L2統合証跡更新、L4最終統合テスト確認、L5最終ブラウザE2E、ゴールデン評価、docs/index、公開面レーン。
新しいカウンター変更を公開する場合は、ローカル静的評価、ブラウザE2E、実環境結合、公開Pagesを同じ状態語へ畳まない。
HTML構文解析 / リンク / ローカルプレビュー確認
構成図やレビュー補助HTMLを公開面として扱うため、HTMLパーサー、リンク確認、ローカルプレビューをレーン内で実施できる。
使う。docs/index.htmlから到達できること、タイトル、主要語、はみ出しがないことを確認する。
python3 - <<'PY'でHTMLパーサー検査rg -n "test-patterns.html|テストパターン" docs/index.html docs/project-management/test-patterns.html
ローカルホストプレビュー。
静的HTMLとして壊れておらず、入口から到達でき、人間が読む主文言が存在すること。
GitHub Pages上のHTTP 200、CI通過、コンテンツの設計妥当性、実環境結合準備度。
プロジェクトファミリー、リント・CI、ドキュメントテンプレート、Backlog受入基準。
docs/index.html、プロジェクト管理HTML、公開レビュー面。
公開後はPages URLのHTTP 200とブラウザ表示を別証跡として追加する。
このプロジェクトで使う順序
最初からすべてを実環境E2Eにしない。安い検知で契約を固め、実環境と利用者向け確認は別証跡として積む。
HTML、ドキュメント、構成図、dbt解析/コンパイルで構造破損を先に止める。
シード、マート、通知、ワークフロー状態の契約をローカルフィクスチャで固定する。
Snowflake、Backlog、Slack、Cortexなどはターゲットと実ログを添えて別証跡にする。
ゴールデン評価、Streamlit、Cortex回答の品質は、ユーザーが見る経路として検証する。