Repository navigation
test: 内部整理前の共通コレクション契約を固定する - #571
Conversation
lambig
left a comment
There was a problem hiding this comment.
レビュー(Assistant Tech Lead/PM/PO)
判定:要補強(契約固定テストの不足1件)。 既存6試験の構成と、head bde1678 のPR起動CI成功は確認しました。非評価、引数順、値の同値性、collectorの順序、Listの独立性・変更拒否、mapper例外の同一性は、実装と整合しています。
Tech Lead/修正要求:現行実装が持つ次のnull契約をテストで固定してください。
Iterables.toListはStream.toList()を使用しており、mapperがnullを返した場合も要素として保持します。今回の試験では未確認です。後続で別の集約方法に置換するとnull拒否へ変わり得ます。Optionals.optionallyはCollectors.collectingAndThen(downstream, Optional::of)なので、downstreamの最終結果がnullならNullPointerExceptionになります。Optional.ofNullableへの変更では結果が変わります。
この2件は新機能追加ではなく、内部整理前の現存契約の保存です。それぞれ独立した小さな試験で十分です。意図的に互換性の保証対象外とするなら、G1の契約判断でその根拠と利用箇所への影響を明示してください。
PM:回帰基準の拡充はG0の部分成果として計上できます。702件の基準回帰・追加試験成功とG1の内部整理完了は別判定に保つのが妥当です。
PO:将来の独立consumerが期待するnull・例外の振る舞いを確定することが、切り出し先を選ぶ前の受け入れ根拠になります。上記以外に今回の差分でブロッカーは見つかりません。
lambig
left a comment
There was a problem hiding this comment.
前回レビュー指摘の対応確認(Tech Lead/PM/PO)
判定:未対応、変更要求を継続します。
最新headは前回確認時と同じ bde16782af13eac590885fbe7e009c432bbd463e で、差分も CollectionContractsTest.java の既存6試験のままです。前回の指摘以降の修正コミットや対応コメントはありません。既存PR起動CI(run 39926759270)は成功しています。
Iterables.toListのmapperがnullを返した際にnull要素を保持する契約Optionals.optionallyのdownstreamがnullで終了した際にNullPointerExceptionを送出する契約
この2点は現行実装を確認済みですが、今回追加された回帰試験では固定されていません。内部整理前の契約固定という本PRの目的から、独立した試験を追加するか、保証しない判断と利用箇所への影響をG1の契約判断に明記してください。
PM/PO観点でも、現在の成功CIは既存6試験の合格を示すものです。G0の部分成果としては有効ですが、前回の残指摘が解消されたとは判定できません。
Both/Optionals/Iterablesの内部整理で保持する契約を、直接の回帰試験として固定します。#471のG0で基準版と対象回帰を確認した後、#248の対象単位の内部整理へ進むための変更です。
欠損値で述語・写像を呼ばないこと、組の引数順と同値性、空の集約結果の扱い、後段コレクタの順序・終了処理、Iterableの順序・重複・変更不能性・例外伝播を確認します。非評価や変更拒否そのものを試す箇所に、理由を付けたメソッド単位のPMD例外を設けています。
基準は最新main
c0391f58872fe78a6618a8f278b9922bfecb3669。実機試験用の固定版と別worktreeで実行しました。基準版ではlib・domain model・domain service・architectureの702試験が成功しています。追加した6試験とテスト規約1試験、Checkstyle・PMD・Spotlessも成功しています。DB統合試験と全E2Eは今回のテスト追加の確認範囲外です。今回閉じるのは共通処理の回帰基準の不足です。共通VOの配置、モデル・入力・遷移の内部整理、所有先/API判断、ライブラリ更新は後続です。G1到達やv1.11完成の判定は残ります。公開権限・署名の確認は独立した残件として扱います。
レビュー観点は、利用側が依存する上記の契約を保持できるか、PMDの局所例外が非評価・変更拒否の検証に限定されているか、対象の内部整理へ進む基準として十分かです。
2026-10-23の利用者による#471を基にした着手指示と、ABServiceの既存の実装・検証・公開権限に基づく変更です。既存仕様の回帰確認で、利用者の操作・データ経路・外部依存は変えません。全体の残工数と次の判断地点は#471の現行報告に集約します。
Refs #471, #248