import re
IDENT = re.compile(r"[0-9A-Za-z-]+")
def prerelease_cmp(left, right):
for item in (*left, *right):
if not isinstance(item, str) or not IDENT.fullmatch(item):
raise ValueError("identifier")
if item.isascii() and item.isdigit() and len(item) > 1 and item[0] == "0":
raise ValueError("leading zero")
if not left or not right:
return (not left) - (not right)
for a, b in zip(left, right):
if a == b: continue
an, bn = a.isdigit(), b.isdigit()
if an != bn: return -1 if an else 1
if an and len(a) != len(b): return (len(a) > len(b)) - (len(a) < len(b))
return (a > b) - (a < b)
return (len(left) > len(right)) - (len(left) < len(right))- プロジェクト
- 複数桁の数、共通接頭部、安定版の空タプルを試し、先頭ゼロや無効な識別子を拒否してください。
- 適用前に確認
- 実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
- モデル
- OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
import re
IDENT = re.compile(r"[0-9A-Za-z-]+")
def prerelease_cmp(left, right):
for item in (*left, *right):
if not isinstance(item, str) or not IDENT.fullmatch(item):
raise ValueError("identifier")
if item.isascii() and item.isdigit() and len(item) > 1 and item[0] == "0":
raise ValueError("leading zero")
if not left or not right:
return (not left) - (not right)
for a, b in zip(left, right):
if a == b: continue
an, bn = a.isdigit(), b.isdigit()
if an != bn: return -1 if an else 1
if an and len(a) != len(b): return (len(a) > len(b)) - (len(a) < len(b))
return (a > b) - (a < b)
return (len(left) > len(right)) - (len(left) < len(right))リリースの判断をコードまで追跡できるようにする
バージョン処理は、小さな比較関数を重要なアプリケーションの判断に結び付けます。Prevernalは、関連するプロジェクトファイルを手元で見ながらその関係を検討するWindows用AIコーディング環境です。どのリリース候補が選ばれるかなど、誤って見える判断から始め、それを生む処理経路を調べるよう接続したモデルに依頼します。
具体的には、更新ロジックが使うプレリリース識別子の比較を依頼できます。代表的なラベルとプロジェクトで必要な順序を示します。不正なラベルと、有効だが優先順位の低いバージョンを分ける提案を求め、その区別が呼び出し元にどう伝わるか調べます。これにより、一般的な比較の授業ではなくアプリケーションの動作にタスクを絞れます。
異なる識別子型、同じ接頭部分、正式リリースを扱うテストデータで修正案をレビューします。呼び出し元が比較結果と例外のどちらを期待するか確認し、関連するプロジェクトのテストを実行します。受け入れる構文が変わるなら、付随的な改善ではなく互換性の判断として扱ってください。
PrevernalはOpenAI互換またはAnthropicのエンドポイントへの接続に対応します。提供される場合、この開発作業で拒否抑制を除去したAIモデルを選択できます。プロバイダーの制限、コンテキスト上限、利用可能なツールは設定したサービスに依存します。モデルは支援を提供し、受け入れ基準はプロジェクトのリリース方針が定めます。
リリース順序の変更をレビューする
- 誤った更新候補の報告には何を添えますか?
候補のラベル、選ばれるべき候補、選択コードを示し、プロジェクトの順序方針を含めます。これにより、比較の不具合と、更新経路の別の場所にあるフィルタリングや選択ロジックの問題を区別できます。
- 不正な識別子は有効なものより下位に並べるべきですか?
仕様でそう定める場合だけです。拒否と順序付けは別の判断であり、不正な入力に黙って順位を付けると上流のエラーが隠れることがあります。検証の変更を採用する前に、呼び出し元が各ケースをどう扱うか確認してください。
- 構文の修正は既存利用者にどう影響しますか?
パーサーの厳格化で、以前は通ったラベルを拒否する場合があります。ラベルの発生元を特定し、保存済みまたは受信する代表値を含めます。比較ロジックがすっきりしたかどうかとは別に、互換性をレビューしてください。
- Prevernalはソフトウェアをリリース・インストールしますか?
このタスクでは開発環境を使って、リリースに関わる実装を調べます。公開とインストールはプロジェクト独自の工程です。リリースの判断に使う前に、自分の検証でコード案を確かめてください。
Prevernal · 更新日 2026-10-25