Skip to content

test: 内部整理前の共通コレクション契約を固定する - #571

Merged
lambig merged 1 commit into
mainfrom
work/v111-internal-baseline
Oct 23, 2026
Merged

lambig merged 1 commit into
mainfrom
work/v111-internal-baseline

Conversation

@lambig

@lambig lambig commented Oct 23, 2026

Copy link
Copy Markdown
Owner

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

@lambig lambig left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

レビュー(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 lambig left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

前回レビュー指摘の対応確認(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の部分成果としては有効ですが、前回の残指摘が解消されたとは判定できません。

@lambig
lambig merged commit 6308175 into main Oct 23, 2026
23 checks passed

lambig commented Oct 23, 2026

Copy link
Copy Markdown
Owner Author

2026-10-23、実装担当による対応報告です。前回の残指摘は、マージ後のmainを基準にした #572 で補強しました。

Iterables.toListのnull保持とOptionals.optionallyのnull終了結果に対するNullPointerExceptionを、それぞれ独立した試験で固定しています。head c74b37a625983cd923cdd0eb48192279fcbda84c で契約8試験・テスト規約1試験、Checkstyle・PMD・Spotlessが成功しました。再レビューは#572の対象headでお願いします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant