Diosix のレビュー
Diosix におけるすべてのコードおよびドキュメント変更は、コミットまたはマージ前に厳格かつ多角的な監査を通過しなければなりません。変更を機械的に承認したり、壊れた・不完全・未検証のコードにサインオフしてはいけません。以下のレビュー基準は developing-diosix および documenting-diosix と1:1で対応しており、作成スキルを適用することでコミット前・マージ前の手戻りを排除します。
必須の4段階検証ワークフロー
- ビルド、完全性、テストゲート(前提条件):
- 機能が設計通り100%実装され、
TODOスタブ、デッドコード、モックされたプロダクションパスがゼロであることを確認します。 - 500行を超えるファイルをリファクタリングする場合、機能やユニットテストを決して切り詰めず、常に過大なファイルを凝集性のあるサブフォルダ(
vm/run.zig、panes/modal.zig、tests/gui.zig)にコンポーネント化し、フラットなprefix_subname.zigファイルにしないでください。また、すべてのサブモジュールがその親のtestブロックで参照されていることを確認します(例:_ = @import("vm/run.zig");)。これによりzig build testがそのユニットテストを実行します。 - ユニットテストがテスト対象の
.zigソースファイルと同じ場所にあり、統合テストが別のtests/ディレクトリにあることを確認します。 - ファイル形式と行/列チェックのスコープを追跡対象のソースディレクトリ(
build.zig、hypervisor、tools、scripts)に限定し、.zig-cache/やzig-out/に対して無制限の再帰グロブを実行しないようにします。 ./scripts/build.sh test --summary allと./scripts/build.shを、すべてのコンパイルステップとテストステップが警告やリークなしで100%成功するまで実行します。
- 機能が設計通り100%実装され、
- 4ペルソナ深層レビュー:
- 変更されたすべてのファイルとその周辺コンテキストを、4つの異なるレンズを通して監査します:
- 懐疑的なベテランエンジニア(完全性、イディオム、フラットな
prefix_subname.zigファイルの代わりにサブフォルダ階層、小文字16進リテラル0xfff、マジックビットマスクの代わりにPAGE_OFFSET_MASKやcrossesPageBoundaryなどの名前付き定数/ヘルパー、Spinlock/アライメント/パスバリデータのコピーペースト重複ゼロ、同一バージョンの内部パスに対するDEFAULT_GUEST_CANDIDATESのような過去の候補リストフォールバック配列なし、usizeの代わりに明示的な固定幅u64ABI 型、リテラルを含む@min/@maxに明示的なusize型注釈、500行超えファイルの切り詰めなしでのコンポーネント化、80桁制限、動的バッファ vs 静的バッファ、ポリシーのビルド/実行時設定への外部化、Zig でのオンザフライのバイナリ/ELF/イメージ合成なし、tools/overlay-common/内の生成ファイルなし) - パラノイアなセキュリティ専門家(ハイパーバイザーのブラスト半径分離、ゲストメモリ上のシングルコピー・ダブルフェッチ/TOCTOU 防止、
atomic.Spinlockによる IRQ セーフなロック、暗号/ページのゼロ化、チェック付き算術境界) - Diosix メンテナー(モジュール性、可読性、
defer/errdefer、ABIcomptimeサイズ/オフセットアサーション、外部コントラクトの後方互換性 vs アトミックなツリー内マイグレーション、サブモジュールのテストカバレッジ) - 初心者およびエキスパートユーザー(手間のかからない UX、明確な英語のエラー、設定の柔軟性、パフォーマンス)
- 懐疑的なベテランエンジニア(完全性、イディオム、フラットな
- 変更されたすべてのファイルとその周辺コンテキストを、4つの異なるレンズを通して監査します:
- Rust スタイルの借用チェッカーおよびポインタ寿命監査:
- すべての制御フローパスにわたって、すべてのポインタ、スライス、アロケーションを手動でトレースし、Use-After-Free(UAF)、ダブルフリー、リサイズ/リマップ時のポインタ無効化、ぶら下がりスタック参照がゼロであることを保証します。
- ドキュメント、スペル、スタイルゲート:
docs/がすべてのコード変更(SBI FID、C 構造体型、CLI フラグ、モジュール化されたファイルパスを含む)と一致し、明確で文法的に正しいアメリカ英語で書かれ、スペルが確認され、docs/style-guide.mdおよびdocs/development.mdに準拠していることを確認します。- レビュー修正後、
zig fmt --check build.zig hypervisor tools scriptsと./scripts/build.sh test --summary allを再実行します。
- 不明な場合は、リードメンテナーに確認してから進める: レビューでアーキテクチャ上のトレードオフや不足しているプリミティブが明らかになった場合、推測して進めずにリードメンテナーに指示を仰いでください。
集中参照ガイド
各レビュー中に以下の参照チェックリストを参照してください:
- 4つのレビューペルソナチェックリスト: 懐疑的なベテランエンジニア、パラノイアなセキュリティ専門家、Diosix メンテナー、初心者/エキスパートユーザーのための詳細な検査基準。
- 借用チェッカー監査: Zig におけるポインタの由来、ライフタイム、エイリアス可変性、クロス権限メモリ安全性をトレースするためのステップバイステップの方法論。
- コミット前ゲート:
develまたはstableにコミットまたはマージする前に必要な具体的な検証コマンドとサインオフ基準。