GWpy 挙動互換性ポリシー#
GWexpy は、既存の GWpy API が返す既定の科学的結果を暗黙に変えることなく GWpy を拡張します。
既存の GWpy API に対応する API では、GWpy が有限の数値結果を正常に返す場合、対応する import を既定optionの GWexpy に置き換えても、数値、shapeと選択sample、軸情報、正常終了を維持しなければなりません。これらの保証から意図的に外れる場合は、GWexpy 固有の API またはoptionによる明示的な user opt-in が必要です。ただし、以下のすべてのgateを満たす名前付き・human-approvedの安全例外は除きます。内部実装を変更できるのは、科学的挙動を維持し、性能またはresourceに重大な退行を生じさせない場合だけです。
一致させる対象#
次のすべてを満たす場合に、このポリシーを適用します。
操作が既存の公開 GWpy API に対応している。
呼び出しが GWexpy 固有の opt-in ではなく既定挙動を使っている。
GWpy が入力を受理し、有限の数値結果を正常に返す。
実装ではなく、観測可能な結果を比較します。
対象 |
必須の比較 |
|---|---|
数値結果 |
対応する API が公開する |
選択 |
|
軸 |
|
終了状態 |
GWpy で正常終了する操作を GWexpy 固有の例外に変えない |
必須比較のいずれかに差異がある場合、userが明示的な GWexpy 固有 API またはoptionを選んだ場合、または差異が以下のすべての要件を満たす名前付き・human-approvedの安全例外である場合を除き、release blockerです。
名前付き安全例外#
安全例外は、GWpy の挙動を改善、再解釈、置換する一般的な許可ではありません。通常の GWpy 結果が危険である、または要求されたsample-selection domainの外側にあることを実証できる、狭く特定されたsubcaseだけで許可されます。すべての安全例外は次の条件を満たさなければなりません。
影響を受けるcaseだけにinventory markerとして記録された安定した名前。
サポート対象のすべての GWpy oracle に対する直接の dual-oracle evidence。
意図的な差異に対するhuman scientific/data-model approval。
変更前後の挙動を特定するrelease-note disclosure。
public API 全体より狭いscopeであり、親のerrorとその他すべての結果を維持すること。
承認済みの例外は non_intersecting_window_safety だけです。これは、親の HDF5 TimeSeriesDict.read() が成功した後、明示的なread windowと返却seriesが数学的に完全非交差であり、GWpy が要求されたsample-selection domainの外側にあるsampleだけを選択した場合に適用します。GWexpy はその非交差keyにzero-length entryを返します。親のerrorを再解釈せず、部分交差を変更せず、pad=を上書きせず、collection keyを削除せず、その他の結果も変更しません。
説明のない差異、markerのない差異、またはこの例外を当該subcaseより広げる提案は、引き続きrelease blockerです。
拡張が許される範囲#
GWexpy は、GWpy が提供しないcontainer、metadata、精度保持状態、I/O format、解析methodを追加できます。これらの追加機能は、対応する GWpy API の既定挙動から分離しなければなりません。GWexpy を import するだけでは、異なる数値semanticsへの opt-in にはなりません。
不正または矛盾した GWexpy 固有metadataは、引き続き fail closed にできます。このような不正な拡張metadataは正常な有限結果の対象外であり、明示的なvalidation testが必要です。
内部変更とresource使用量#
公開された科学的挙動が同じであれば、内部構造は変更できます。性能に影響し得るbootstrap、dispatch、I/O、数値kernel pathの変更には、riskに応じた性能・resource non-regression evidenceが必要です。maintainerがtrade-offを明示的に承認し文書化しない限り、重大な退行は変更をblockします。
文書だけの変更では、resource evidenceを該当なしと記録できます。
Review checklist#
これは既存の GWpy API か。
review対象のcaseで GWpy は正常な有限結果を返すか。
GWpy と GWexpy の既定挙動は、値、shapeと選択sample、軸、終了挙動で一致するか。
差異がある場合、明示的な GWexpy 固有 opt-in の背後にあるか、または上記のすべてのgateを満たす名前付き・human-approvedの安全例外か。
内部変更の場合、相応の性能・resource evidenceが添付されているか。
step 4を満たさずstep 3に失敗した場合、review verdictは BLOCK です。