コンテンツにスキップ

対応形式と理由コード

修正計画と修正PRが扱う入力形式、実行環境、結果の値、理由コードをまとめます。 有効化は有効化の手順を参照してください。

対応範囲

利用環境

項目 対応範囲
コンテナ環境 Dockerモードに対応し、Kubernetesモードでは修正計画を有効にできない
ソースの対応付け ComposeのWorkloadに対して、変更先のソースを指定
ソースホスト GitHub
作業用コンテナ Linuxのamd64・arm64
言語更新の実行環境 対応する実行環境に記載した系列
Sensor 修正計画と修正PRの利用には不要

更新対象

対象 取得元 ソースの対応付け
配布イメージ 公開レジストリ、認証を設定した非公開レジストリ 比較結果の表示には不要で、Composeを変更するPRには必要
Dockerfileのベースイメージ 公開レジストリ、認証を設定した非公開レジストリ 計画の作成からDockerfileまたはComposeの対応付けが必要
npm・pnpmの依存パッケージ 公開npmレジストリ 計画の作成から依存ディレクトリの対応付けが必要
pip・uvの依存パッケージ 公開PyPI 計画の作成から依存ディレクトリの対応付けが必要

非公開npmレジストリや非公開PyPIは更新対象にできません。 イメージレジストリの認証は、依存パッケージの取得には使いません。

対応する入力形式

Composeの形式

入力 対応範囲
編集箇所 services.<service>.imageに直接記述したイメージ参照
イメージ参照 稼働中のリポジトリとタグに一致し、変更箇所を特定できる文字列
固定タグ 完全な版を指定するタグを、同じ系列の新しいパッチへ変更可能
浮動タグ 再pullの候補となり、同じタグの参照を書き換えるPRは作らない
変数・digest 編集対象のイメージ参照では未対応
YAMLのアンカー・エイリアス・マージキー 編集箇所に関わる場合は未対応
ブロックスカラー・文字列以外のimage 未対応
include・対象サービスのextends 自動編集では未対応
build:を持つサービス 完成イメージを配布イメージの検索から除外

タグの選び方は配布イメージのタグ、ビルド対象の扱いはローカルビルドの除外を参照してください。

Dockerfileの形式

入力 対応範囲
FROMの固定タグ 変数やdigestを使わず、タグの位置を特定できる参照を編集可能
FROMの浮動タグ ベースの確認対象となるが、タグ更新PRの対象外
ビルドtarget ステージ名を指定可能で、省略時は最後のステージが対象
前のステージの継承 外部のベースイメージまでたどれる構成に対応
--platform 外部ベースを指定するFROMの静的な指定に対応し、継承途中のFROMでの指定は未対応
FROM内の変数・scratch・digest参照 自動編集では未対応
標準以外の構文フロントエンド・escapeディレクティブ 自動編集では未対応
継承元ステージやベースイメージのONBUILD 自動更新では未対応
Composeのbuild context リポジトリ内の静的なパスに対応
Composeのdockerfile・target 対応する静的な指定からDockerfileの編集先を特定可能
リモートbuild context・dockerfile_inline・additional_contexts Composeからの編集先の特定では未対応

編集先の決め方と対応付けの照合はベースイメージの特定を参照してください。

npmの依存ファイル

入力 対応範囲
必須ファイル 単一プロジェクトのpackage.jsonとpackage-lock.json
lockfile形式 lockfileVersionが2または3で、packagesにルートの記録がある形式
取得元 公開npmレジストリの配布物
workspace 未対応
Git・URL・ローカル参照・別名でのインストール 対象パッケージの自動更新では未対応
同梱依存・独自のshrinkwrap 対象パッケージの自動更新では未対応
overridesによる版の固定 該当するパッケージは手動対応
.npmrcの非公開レジストリ指定 未対応
依存元からの再解決 通常更新で修正版に届かず、依存元が古い版を要求していると確認できる推移的依存に限定

再解決の対応範囲と上限

依存元の版指定が修正版への更新を妨げる推移的依存に使います。 次の例では、最小の修正版をnpm・pnpmでは1.2.8、uvでは2.0.0と仮定します。

依存元の指定の例 使われるか 補足
npm・pnpmの0.0.8 使われる 修正前の版への完全一致
npm・pnpmの<1.0 使われる 上限が修正版に届かない
uvの==1.2.3・<1.0 使われる 完全一致または上限により修正版に届かない
uvの~=1.4 使われる 1.4以上2.0未満の指定で、修正版が2.0以上の場合
npm・pnpmの^1.2.0 使われない 指定範囲内で修正版を選べる
npm・pnpmの\|\|を含む範囲・latestなどのタグ 使われない 再解決を始める根拠にしない
uvの!=1.2.3・===1.2.3・==1.2.* 使われない 除外指定・厳密一致・ワイルドカードは再解決を始める根拠にしない

次の場合は対象外です。

  • 直したいパッケージをプロジェクト自身が直接依存として宣言している
  • 対象や必要な依存元が別名・ローカル・Git・URL参照、またはoverridesで固定されている
  • 同じ依存先への宣言が食い違い、版指定を一つに決められない
  • pipを使っている、またはpnpmが9・10・11・12.10.0以上の12.xのいずれでもない
上限の対象 上限と対処
再解決の起点となる直接依存 5パッケージまで、超える場合はdependents_update_limitで手動対応
更新対象以外に追加・変更・削除するパッケージ 合計64まで、超える結果はchain_move_limitで不合格
1項目の処理量 実行回数・通信量・作業時間などに上限があり、保留を繰り返すとdependents_update_limitで手動対応

再解決の検査条件

次の変化がある結果は採用しません。 Webhookでは、パッケージごとのpackages[].reasonと、詳しい理由を示すupdate.chain.reasonを併せて確認します。

変化の例 記録される理由コード
どこかの経路で版が下がる、または更新前後の版を対応付けられない chain_downgrade
通常更新の対象でも再解決の起点でもない直接依存の版や参照先が変わる unexplained_dependency_diff
更新対象以外に動くパッケージが上限を超える chain_move_limit
直したい脆弱性が更新後のスキャンでも検出される source_target_still_detected
脆弱な新しいパッケージが入る source_introduced_findings
脆弱なパッケージを使う依存元が増える source_introduced_findings
新しい版に、対応する旧版にはない脆弱性がある source_introduced_findings
1つの版が複数の脆弱な版に分かれる、または複数の経路が合流して脆弱なパッケージの旧版を一つに決められない source_introduced_findings
KEV掲載の脆弱性が新たに入る、または上記の増加・分岐・合流などにKEV掲載の脆弱性が関わる source_introduced_kev

依存関係上の同じ位置で版だけが変わり、旧版にもある脆弱性が増えずに残る場合は、持ち越しとして認めることがあります。 例は脆弱性の持ち越しを参照してください。

この検査には次の限界があります。

  • スキャンで検出されない脆弱性や、深刻度設定の範囲外の脆弱性は確認できない
  • 持ち越した脆弱性は直らず、今回直したい脆弱性を持ち越して合格にはできない
  • プロジェクトから脆弱なパッケージまでの経路の総数は比較しない

公開後の待機と再試行

新たに入る版は公開から72時間待ちます。 元のlockfileに同じパッケージの同じ版がある場合は待機の対象外で、公開日時を確認できない版は採用しません。

  • 公開後の待機による再試行時刻はWebhookのretry_afterで確認する
  • 公開後の待機、または同じ種類の処理上限で3回連続して保留になると、同じ入力での再解決を停止する
  • 再試行時刻より前に処理を見送る回は、3回に含めない
  • 停止後も検査に合格する通常更新の結果は採用し、残る対象は次の理由コードで手動対応にする
停止の原因 残る対象の理由コード
公開後の待機が3回連続する dependents_update_rejected
同じ種類の処理上限による保留が3回連続する dependents_update_limit

pnpmの依存ファイル

入力 対応範囲
必須ファイル package.jsonとpnpm-lock.yaml
lockfile形式 lockfileVersion: '9.0'で、importerが.だけの形式
manifestとの整合 直接依存の宣言とimporterが一致する構成
workspace・catalog・パッチ適用済み依存 未対応
公開npmレジストリ以外の取得元 対象パッケージの自動更新では未対応
runtimeの自動取得を記録したlockfile 未対応
resolutions・configDependencies・executionEnvなど 解決方法や追加取得を変える未対応設定
pnpm 12 12.10.0以上に対応。12.10.0より前の12.xは手動対応
依存元からの再解決 通常更新で修正版に届かず、依存元が古い版を要求していると確認できる推移的依存に限定

同じディレクトリのpnpm-workspace.yamlは、次の設定だけを持つ場合に読み取れます。 ファイルがあるだけでworkspaceとは判断しません。

設定 対応する形式
allowBuilds パッケージの指定をキーとし、真偽値または文字列を値とする対応表
onlyBuiltDependencies・ignoredBuiltDependencies・neverBuiltDependencies パッケージ名の文字列リスト
supportedArchitectures os・cpu・libcごとの文字列リスト
packages workspace宣言として扱うため未対応
上記以外のキー 未対応
依存ディレクトリより上にあるpnpm-workspace.yaml リポジトリのルートまで確認し、存在する場合は手動対応

package.jsonのpnpm設定も、上表のビルド許可とアーキテクチャの設定が対象です。 読み取れるビルド許可設定があっても、更新時のスクリプト実行は無効です。

pipの依存ファイル

入力 対応範囲
必須ファイル UTF-8のrequirements.txt
厳密な固定版 name==1.2.3形式を更新可能
範囲指定・版指定なし 修正版を許す場合は再ビルドの見込みを示し、固定版への書き換えは行わない
extras name[extra]形式を読み取り可能
コメント・継続行 読み取り可能
既存の--hash 固定版の更新時に、PyPIのwheel情報から更新
環境マーカー 自動評価せず、対象パッケージを手動対応にする
-r・-cなどの別ファイル参照 未対応
取得元を変更するオプション 未対応
Git・URL・ローカル参照 対象パッケージの自動更新では未対応
ソース配布物しかない版 自動更新では未対応

稼働イメージに合わせた検証対象の条件はpipの検証環境を参照してください。

uvの依存ファイル

入力 対応範囲
必須ファイル 単一プロジェクトの静的なpyproject.tomlとuv.lock
lockfile形式 version = 1・revision = 5
プロジェクト [project]があり、動的なメタデータを要求しない構成
Pythonの要件 自動更新には[project]のrequires-pythonが必要
取得元 公開PyPI
workspace 未対応
Git・URL・ローカル参照 対象パッケージの自動更新では未対応
ソースのビルドが必要な依存 自動更新では未対応
[tool.uv] required-version・dev-dependencies・sources・packageを読み取り可能
上記以外の[tool.uv]設定 未対応
uv.toml 依存ディレクトリからリポジトリのルートまでのいずれかに存在する場合は未対応
依存元からの再解決 依存元が古い版を要求していると確認できる推移的依存に限定し、最初の更新結果が依存の差分検査で拒否された場合の再判定も含む

[tool.uv]のキーを読み取れる場合も、依存の取得元やプロジェクト構成が対応範囲内である必要があります。

Node.jsの版宣言

宣言 対応する形式
.nvmrc・.node-version 最初の空でない行にある22・22.14・22.14.0などの数値指定で、先頭のvも使用可能
.nvmrcのLTS指定 lts/*と、認識できるLTS系列名
package.jsonのengines.node 正確な版、比較演算子、^・~、ワイルドカードなどの解釈可能な範囲
devEngines.runtime・engines.runtime Node.jsを指定するオブジェクトまたは配列と、その版の範囲
system・currentなどの指定 実行する系列を特定できないため未対応
プレリリースを境界に含む範囲 未対応
runtime宣言のonFail: download 未対応

版ファイルはmajor系列の選択に使い、実際のminor・patch版は同梱の表に従います。 宣言の組み合わせ方はNode.jsの選定を参照してください。

Pythonの版宣言

宣言 対応する形式
uvのrequires-python >=3.12,<3.15などの解釈可能なPython版の条件
.python-version 最初の空でない行にある3.13・3.13.5などの指定
CPythonの接頭辞 cpython-3.13・cpython@3.13など
.python-versions 複数版の指定は未対応
PyPy・GraalPy・Pyodide・system 未対応
free-threaded版 未対応

.python-versionはPython X.Y系列の選択に使い、記載したpatch版と実行版の違いは許容します。 宣言の整合条件はuv用Pythonの選定を参照してください。

ツールの版宣言

宣言 対応する形式
packageManager npm@11.21.0・pnpm@11.28.5などのマネージャー名と正確な版
packageManagerのハッシュ name@version+<algorithm>.<hex>形式
ハッシュのアルゴリズム sha1・sha224・sha256・sha384・sha512
devEngines.packageManager マネージャー名と、正確な版または解釈可能な範囲
engines.npm・engines.pnpm 正確な版または解釈可能な範囲
tool.uv.required-version ==0.13.0などの正確な版、または解釈可能な範囲
プレリリース・ビルドメタデータ付きのツール版 未対応
ツール 扱える版 既定の版
npm 9〜12系列で、選んだNode.jsと互換性がある版 11.21.0
pnpm 9〜12系列で、選んだNode.jsと互換性がある版(12系列は12.10.0以上) 11.28.5
uv 0.12.22以上の対応する安定版 0.13.0
pip 作業用の公式Pythonイメージに含まれる版 Python 3.13の作業用イメージでは26.2.1

宣言版と既定版の選び方はツール版の選定、公開後の利用条件はツール公開後の待機を参照してください。

対応する実行環境

対応する実行環境は、同梱の表にあるサポート中の系列(現時点で Node.js 22・24・26、Python 3.11〜3.15)です。 次の版と期限はKestreLynxが持つ情報であり、KestreLynxの更新に伴って変わります。

系列 同梱の表の実行版 サポート終了日
Node.js 22 22.23.3 2027-04-30
Node.js 24 24.21.0 2028-04-30
Node.js 26 26.11.1 2029-04-30
Python 3.11 3.11.17 2027-10-31
Python 3.12 3.12.15 2028-10-31
Python 3.13 3.13.16 2029-10-31
Python 3.14 3.14.8 2030-10-31
Python 3.15 3.15.0 2031-10-31
用途 既定の実行環境
Node.jsの宣言がないnpm・pnpm更新 現時点ではNode.js 24で、同梱の表のLTS開始日に従い2026-10-28から26が候補になる
pip更新の作業用コンテナ Python 3.13
uv更新 Pythonの宣言に従って選定
同梱の表にある終了済み系列 サポート終了日
Node.js 20 2026-04-30
Python 3.9 2025-10-31
Python 3.10 2026-10-01

サポート期限を過ぎた系列は更新に使いません。 選定条件は実行環境の選定を参照してください。

結果の値

計画の分類値

categoryは、イメージや依存ディレクトリなどの計画項目全体の分類です。

値 意味
pr_candidate 検査を通り、PRでの変更を提案できる候補
dependency_update_candidate ソースと修正版情報から選んだ依存更新候補で、更新結果は未検証
pull_again 同じタグの内容を再取得することで改善が見込める、比較済みの候補
rebuild_expected 依存範囲から、再ビルドで修正版が入る見込み(Slackの「再ビルド」には、分類がnot_comparableの浮動タグのベースの案内も表示される)
manual 自動では進めず、利用者の判断や手動対応が必要
not_comparable 比較に必要な情報や条件がそろわない
deferred 上限、待機、取得の問題などで処理を保留
no_candidate 新しい候補がない、内容が同じ、または候補で対象が解消しない
excluded 自動で候補を探す対象外
failed 処理に失敗

パッケージの処理値

actionは個々のパッケージの扱いです。 項目全体のcategoryとは別に確認してください。

値 意味
update 依存ファイルを更新する対象
rebuild_expected 現在の依存範囲が修正版を許し、再ビルドによる解消を見込む対象
manual 手動対応が必要な対象

updateだけでは更新の実行や検証の完了を表しません。 版の読み分けは更新目標と採用版を参照してください。

PRの状態値

PR処理結果のstatusには、次の値があります。

値 意味
pr_created 今回の処理でPRを作成した
pr_open 同じ更新を提案するPRが開いている
pr_merged 同じ更新のPRがマージ済みで、配置済みかは未確認
pr_suppressed 未マージで閉じた更新のため、再作成を抑止した
manual 自動編集できず、手動対応が必要
deferred 上限や候補の変化などにより、後の処理へ延期した
failed GitHubへの書き込みなどに失敗した
write_blocked 記録やGitHub上の状態などの問題により、書き込みを停止した
write_disabled PR作成が無効であることを表す値で、通常のPR処理では生成しない

PR記録のstateには、次の値があります。

値 意味
open オープン中
closed 未マージでクローズ済み
merged マージ済み
replaced 新しいPRに置き換えるため、KestreLynxがクローズ済み

理由コード

結果のreasonには、候補を選んだ理由や処理を進められなかった理由が入ります。 コードの意味と、関連する判定・確認操作を次に示します。

イメージ候補の理由

コード 意味 詳しい説明
scan_failed スキャンに失敗した 比較条件
entity_unverified 稼働イメージを確認できない、またはレジストリの内容と比較できない 比較条件
conditions_unknown スキャンの条件が分からない 比較条件
conditions_differ スキャンの条件がそろっていない 比較条件
platform_unknown イメージのプラットフォームが分からない 比較条件
platform_differ 比較するイメージのプラットフォームが異なる 比較条件
variant_unsupported 対応していない種類のイメージである 比較条件
packages_missing スキャン結果にパッケージ一覧がない 比較条件
packages_truncated スキャン結果のパッケージ一覧が途中で切れている 比較条件
unknown_package_type 対応していない種類のパッケージの所見がある 比較条件
type_not_analysed 候補のスキャンが対象の種類のパッケージを解析していない 比較条件
no_newer_tag より新しいタグがない 配布イメージのタグ
same_content 新しいタグも内容が同じである 配布イメージのタグ
candidate_does_not_resolve_targets 候補では対象の所見が解消しない 比較条件
auth_required レジストリへのログインが必要である 非公開イメージの認証
platform_not_found 候補に同じプラットフォームのイメージがない 比較条件
platform_ambiguous 候補にプラットフォームが合うイメージが複数ある 比較条件
platform_mismatch 候補のプラットフォームが稼働イメージと異なる 比較条件
registry_error レジストリがエラーを返した 計画が出ない場合
targets_not_detected_on_baseline 比較元のスキャンで対象の所見が検出されなかった 比較条件
analysis_incomplete イメージの解析が不完全だった 比較条件
tag_listing_incomplete タグ一覧を最後まで取得できなかった タグ一覧の探索
candidate_scan_limit 1回の実行でスキャンできる候補数の上限に達した 計画が出ない場合
baseline_rescan_limit 比較元イメージを再スキャンできる数の上限に達した 計画が出ない場合
tag_page_limit タグ一覧の取得回数の上限に達した タグ一覧の探索
registry_budget_exhausted レジストリへの要求数の上限に達した タグ一覧の探索
rate_limited レジストリのレート制限に掛かった 計画が出ない場合
cycle_deadline 実行時間の上限に達した 計画が出ない場合
registry_timeout レジストリへの要求がタイムアウトした 計画が出ない場合
locally_built ホストでビルドしたイメージのため、配布イメージの検索対象外である ローカルビルドの除外
partial_improvement 候補では一部の所見だけが解消する 比較条件
introduced_findings 候補で新たな所見が入る 比較条件
introduced_kev 候補でKEV掲載の脆弱性が新たに入る 比較条件
adopted 候補を採用した 比較条件
digest_only タグがなくdigestだけで指定されている 配布イメージのタグ
tag_and_digest タグとdigestの両方で指定されている 配布イメージのタグ
prerelease タグがプレリリース版の形式である 配布イメージのタグ
bare_digest digestだけの参照で、リポジトリが分からない 配布イメージのタグ
unparsable イメージ参照を解釈できない 配布イメージのタグ
unsupported_tag_format 対応していない形式のタグである 配布イメージのタグ
base_layers_mismatch タグが指すベースのレイヤーが、稼働イメージの先頭部分と一致しない ベースレイヤーの照合
base_layers_unusable 稼働イメージとベースイメージのレイヤーを比較できない ベースレイヤーの照合
base_onbuild ベースイメージにONBUILDトリガーがある ベースイメージの特定
no_base_derived_findings 修正可能な所見が、ベースイメージのレイヤーにない ベースレイヤーの照合
base_unchanged タグが指す現在のベースのレイヤーが稼働イメージの先頭と一致し、ベースの更新を確認できない ベースレイヤーの照合
floating_base_unconfirmed 稼働イメージの作成元のベースを確認できない ベースレイヤーの照合
dockerfile_set_not_adopted 同じDockerfileを使うWorkloadのすべてで、同じ候補を採用できなかった(個々のWorkloadの理由も確認する) ベースイメージの特定
compose_set_not_adopted 同じイメージを使うサービスのすべてで、同じ候補を採用できなかった(個々のサービスの理由も確認する) PRを作れない場合

ソースの理由

コード 意味 詳しい説明
dockerfile_file_not_found 設定したパスにDockerfileがない 計画が出ない場合
dockerfile_file_unusable Dockerfileが編集できる種類のファイルではない 計画が出ない場合
dockerfile_invalid Dockerfileを解釈できない、または編集の検証に失敗した
dockerfile_target_missing 指定したビルドステージがない ベースイメージの特定
dockerfile_stage_cycle ステージの参照をたどっても外部イメージに行き着かない ベースイメージの特定
dockerfile_variable ベースイメージまたはプラットフォームに変数が含まれる
dockerfile_scratch ベースがscratchである
dockerfile_digest ベースがdigestで指定されている
dockerfile_tag_unsupported ベースのタグが候補を探せない形式である 配布イメージのタグ
dockerfile_frontend 標準以外の構文フロントエンドを指定している
dockerfile_escape escapeディレクティブを設定している
dockerfile_ambiguous_range ファイル内でタグの位置を正確に特定できない
dockerfile_onbuild 継承元のステージにONBUILDがある
dockerfile_stage_platform 継承途中のFROMに--platformがある
dockerfile_not_editable ベースが固定タグではない ベースイメージの特定
dockerfile_source_mismatch ファイルのベースイメージが想定と異なる ベースイメージの特定
dockerfile_mapping_differs 設定したDockerfileとComposeが指すDockerfileが一致しない ベースイメージの特定
compose_no_build 対象サービスにbuildの指定がない ベースイメージの特定
compose_build_remote_context build contextがURLまたはリポジトリである
compose_build_inline dockerfile_inlineを使っている
compose_build_additional additional_contextsを使っている
compose_build_path ビルドのパスが絶対パス、リポジトリ外、または不正な形式である
compose_build_unsupported_form buildの書き方に対応していない
compose_build_undetermined サービスのビルド方法を判断できない ローカルビルドの除外
compose_invalid Composeファイルを解釈できない、または編集の検証に失敗した
compose_service_missing Composeファイルに対象サービスまたはimageキーがない
compose_build サービスがイメージをビルドしている ローカルビルドの除外
compose_include_or_extends Composeファイルがincludeまたはextendsを使っている
compose_merge_key imageへの経路にマージキーがある
compose_anchor_or_alias imageがYAMLのアンカーまたはエイリアスに関わっている
compose_not_string imageの値が単純な文字列ではない
compose_block_scalar imageの値がブロックスカラーである
compose_variable imageの値に変数が含まれる
compose_digest imageの値にdigestが付いている
compose_source_mismatch ファイルのimageが稼働イメージと異なる ソースの確認
compose_file_not_found 設定したパスにComposeファイルがない 計画が出ない場合
compose_file_unusable Composeファイルが編集できる種類のファイルではない 計画が出ない場合
dependency_files_not_found 依存ファイルが見つからない 計画が出ない場合
ambiguous_dependency_files 依存ファイルの組み合わせが複数あり、一意に決められない 計画が出ない場合
dependency_file_unusable 依存ファイルを利用できない 計画が出ない場合
unsupported_lockfile lockfileの形式に対応していない
workspace_unsupported プロジェクトのworkspace構成に対応していない
workspace_settings_unsupported workspace設定ファイルの内容に対応していない
dynamic_metadata プロジェクトのメタデータが動的に決まる
unsupported_requirements requirementsの書き方に対応していない
unparsable_source 依存ファイルを解析できない
unsupported_source_settings 対応していないパッケージ取得元の設定がある
scan_not_pinned スキャン結果が特定のイメージに結び付いていない ソースの確認
not_found_in_source 依存ファイルに稼働版のパッケージが載っていない ソースの確認
non_registry_source 対応する公開レジストリ以外から取得されるパッケージである
sdist_only パッケージにソース配布物しかない
forced_by_override パッケージの版がoverrideで固定されている
marker_not_evaluated 依存指定の環境マーカーを評価していない
invalid_marker 依存指定の環境マーカーが不正である
multiple_versions 同名パッケージの複数の版や出現箇所を、1つの更新として扱えない
unparsable_version パッケージの版を解釈できない
source_not_found 取得元のリポジトリまたはブランチが見つからない 計画が出ない場合
source_access_denied 取得元のリポジトリにアクセスできない GitHubアクセスの準備
source_too_large 取得元が大きすぎて読み込めない 計画が出ない場合
file_too_large 依存ファイルが大きすぎて読み込めない 計画が出ない場合
byte_budget_exhausted 取得元から読み込める容量の上限に達した 計画が出ない場合
source_error 取得元の読み込みに失敗した 計画が出ない場合
github_budget_exhausted GitHubへの要求数の上限に達した 計画が出ない場合
source_read_failed 依存ファイルの再取得に失敗した 更新を実行できない場合

実行環境の理由

コード 意味 詳しい説明
node_spec_invalid 宣言されたNode.jsの版を解釈できない Node.jsの選定
python_spec_invalid 宣言されたPythonの版を解釈できない uv用Pythonの選定
manager_spec_invalid 宣言されたパッケージマネージャーの版を解釈できない ツール版の選定
node_spec_conflict Node.jsの版宣言どうしが矛盾している Node.jsの選定
python_spec_conflict Pythonの版宣言どうしが矛盾している uv用Pythonの選定
manager_spec_conflict パッケージマネージャーの宣言どうしが矛盾している ツール版の選定
node_spec_unsupported 宣言されたNode.jsの版に対応していない Node.jsの選定
python_spec_unsupported 宣言されたPythonの版に対応していない uv用Pythonの選定
manager_spec_unsupported 宣言されたパッケージマネージャーの版に対応していない ツール版の選定
work_program_mismatch 作業用コンテナ内のプログラムが、実行中のKestreLynxに付属するものと異なる 更新を実行できない場合
work_environment_rejected 作業用コンテナがプログラムの実行要件を満たしていない 実行時の制限
runtime_eol 更新対象の実行環境がサポート終了している 実行環境の選定
runtime_engines_mismatch 更新した依存が、プロジェクトの宣言する最小Node.js版に対応していない Node.jsの互換条件
requires_python_unsupported 必要なPython版の条件を満たせない、または条件がない・解釈できない uv用Pythonの選定
pip_target_undecidable パッケージが動く環境を判断できない pipの検証環境
pip_target_mismatch pipの依存解決対象と、パッケージが動く環境が一致しない pipの検証環境
work_image_not_configured 更新用の作業環境が用意されていない 更新を実行できない場合
work_image_unavailable 作業用イメージを用意できなかった 公式イメージの固定

ツール取得の理由

コード 意味 詳しい説明
tool_fetch_config_unsupported マネージャー自身によるツール取得や、未対応の解決設定が指定されている 更新を実行できない場合
tool_version_unsupported パッケージマネージャーの版に対応していない ツール版の選定
tool_version_not_found 指定したパッケージマネージャーの版が見つからない ツールの取得と照合
tool_hash_mismatch ツールの配布物がチェックサムと一致しない ツールの取得と照合
tool_hash_unsupported ツールの配布物のチェックサムを検証できない ツールの取得と照合
tool_artifact_invalid ツールの配布物が不正である ツールの取得と照合
tool_metadata_invalid ツールのリリース情報が不正である ツールの取得と照合
tool_too_new ツールの公開後待機時間を満たしたと確認できない ツール公開後の待機
tool_fetch_failed ツールの取得に失敗した ツールの取得と照合
tool_fetch_budget ツールの取得回数の上限に達した 更新を実行できない場合
tool_cache_full ツールキャッシュに空きを確保できない ツールキャッシュの再利用
tool_file_mismatch キャッシュ内のツール配布物が記録と異なる ツールキャッシュの再利用

更新結果の理由

コード 意味 詳しい説明
update_candidate_in_source ソース内のパッケージに対応する修正版の更新候補がある 修正版の下限
range_allows_fix 依存範囲が修正版を許し、再ビルドで入る見込みがある 直接依存の版指定
no_fixed_version_above_installed 稼働版より新しい修正版がない、または修正対象がない 修正版の下限
constraint_excludes_fix 候補または更新後の版が依存の制約を満たさない 直接依存の版指定・推移的依存の更新範囲
constraint_not_evaluable 版の制約を評価できない、または修正版がpipで選ばれないプレリリースである 直接依存の版指定
packages_need_manual_update 自動更新できるパッケージがない 更新を実行できない場合
update_job_limit 1回の実行で行える更新ジョブ数の上限に達した 更新を実行できない場合
update_input_limit 更新に使うファイルがサイズ上限を超えている コンテナへの入力
update_job_failed 更新の実行に失敗した 更新を実行できない場合
update_result_invalid 更新ジョブの結果が不正である 結果の回収
update_job_timed_out 更新の実行がタイムアウトした 実行時の制限
distribution_lookup_failed レジストリでのパッケージ照会に失敗した 付随変更の検査
source_scan_failed 依存ファイルのスキャンに失敗した 比較条件
update_input_invalid 更新の入力が不正である コンテナへの入力
update_job_input_rejected 更新ジョブが入力を受け付けなかった コンテナへの入力
manifest_edit_required 自動更新では行えないmanifestの変更が必要である 直接依存の版指定
input_modified 読み取り専用のはずの設定ファイルが変更された 付随変更の検査
lockfile_inconsistent lockfileがプロジェクトと整合していない マネージャー別の更新処理
no_wheel_for_version 対象の版に必要なプラットフォーム向けのwheelがない マネージャー別の更新処理
release_yanked 対象のリリースが取り下げられている 付随変更の検査
requirements_rewrite_unsupported 今回の更新方法ではrequirementsを書き換えられない マネージャー別の更新処理
update_set_not_applied 同時に更新する別のパッケージを更新できなかった 部分PRの成立条件
target_not_in_lockfile 更新対象のパッケージがlockfileに載っていない マネージャー別の更新処理
no_reresolve_trigger 再解決のきっかけとして一時的に外せる依存がない マネージャー別の更新処理
pnpm12_removal_unsupported 12.10.0より前のpnpm 12では、現在の更新方法を使えない マネージャー別の更新処理
update_step_failed 更新中の処理に失敗した マネージャー別の更新処理
post_update_check_failed 更新後の検査に失敗した 付随変更の検査
unexpected_files 更新で想定外のファイルが変更された 付随変更の検査
release_age_violation 依存のリリースが、プロジェクトの定める公開後の最低経過期間を満たさない 付随変更の検査
manifest_changed 更新でmanifestに許可していない変更が入った 付随変更の検査
output_files_invalid 出力ファイルが不正、または読み取れない 結果の回収
lockfile_format_changed 更新でlockfileの形式が変わった 付随変更の検査
target_not_updated 更新しても目標の版に上がらなかった 部分PRの成立条件
target_removed 更新後に対象パッケージがなくなった、または依存関係から到達できなくなった 部分PRの成立条件
fix_condition_not_met 更新後の版が脆弱性の修正条件を満たさない 部分PRの成立条件
unexplained_dependency_diff 更新との関係を説明できない依存の変更がある 付随変更の検査
distribution_mismatch パッケージがレジストリの公開内容やpipの解決結果と一致しない 付随変更の検査
registry_check_limit 更新時のレジストリ照会数の上限に達した 更新を実行できない場合
update_package_limit 更新するパッケージ数が上限を超えている 更新を実行できない場合
resolved_source_changed パッケージの取得元が変わった 付随変更の検査
post_update_lockfile_unstable lockfileを再生成すると、さらに内容が変わる マネージャー別の更新処理
drop_side_effect 再解決のために一時的に外した依存が元の状態に戻らなかった マネージャー別の更新処理
source_target_not_detected_before 更新前の依存ファイルで対象の脆弱性が検出されなかった 比較条件
source_target_not_analysed_after 更新後の依存ファイルで対象を解析できなかった 比較条件
source_target_still_detected 更新後も対象の脆弱性が検出される 対象別の検証範囲
source_introduced_findings 更新で依存ファイルに新たな所見が入る 比較条件
source_introduced_kev 更新で依存ファイルにKEV掲載の脆弱性が新たに入る 比較条件
source_scan_incomplete 依存ファイルのスキャンが不完全だった 比較条件
update_verified 更新結果の検証が完了した 対象別の検証範囲
dependents_update_not_fixed 依存元を解決し直したが、今回の再解決では修正版に届かなかった 依存元からの再解決
dependents_update_rejected 依存元の更新が検査を通らなかった 再解決の検査条件
dependents_update_unsupported 依存元をこのツールでは更新できない 再解決の対応範囲と上限
dependents_update_limit 依存元の更新が上限を超える 再解決の対応範囲と上限
release_too_new 更新で入る版の公開から72時間経っていない 公開後の待機と再試行
chain_downgrade 更新でパッケージが古い版に下がる、または版の対応を確定できない 再解決の検査条件
chain_move_limit 更新で動くパッケージ数が上限を超える 再解決の対応範囲と上限
chain_item_budget 更新に必要な作業が1項目の上限を超える 公開後の待機と再試行

依存元からの再解決では、パッケージごとの理由と、再解決全体の詳しい理由を分けて記録します。 Webhookでは、packages[].reasonとupdate.chain.reasonを併せて確認します。

  • dependents_update_rejectedには、公開後の待機が3回続いて再解決を停止した場合も含む
  • dependents_update_limitには、同じ種類の作業上限による停止や、待機記録を保存できない場合も含む
  • source_introduced_findingsとsource_introduced_kevには、脆弱なエントリ数・要求数の増加や、依存関係上の位置の検査による拒否も含む
  • 実行や取得に失敗した場合は、通常更新と共通の失敗コードも使う

PR処理の理由

コード 意味 詳しい説明
pr_limit 1回の実行で作成するPR数、またはオープン中のPR数の上限に達した(どちらかはdetailで確認する) PRを作れない場合
candidate_changed PRの準備中に候補が変わった PRを作れない場合
base_moved PRの準備中にベースブランチが進んだ PRを作れない場合
github_rate_limited GitHubのレート制限に掛かった PRを作れない場合
write_outcome_unknown GitHubへの書き込み結果を確認できない 書き込みの停止
reconciliation_failed 既存PRとの照合に失敗した 既存PRとの照合
repository_mismatch リポジトリが記録と異なる 書き込みの停止
attempt_unsettled 前回のPR作成結果がまだ確定していない 既存PRとの照合
branch_not_ours 同名のブランチが存在し、KestreLynxが作成したものではない 書き込みの停止
pull_request_not_as_created PRが作成時の状態と異なる 書き込みの停止
github_refused GitHubが書き込みを拒否した PRを作れない場合
github_error GitHubがエラーを返した PRを作れない場合
candidate_recheck_failed PR作成前に候補を再確認できなかった PRを作れない場合
source_changed 計画の元にしたファイルが変更された PRを作れない場合
artifact_content_missing 更新したファイルの内容が保持されていない PRを作れない場合
artifacts_unusable 更新したファイルをそのままPRへ書き込めない PRを作れない場合
open_pr_not_inherited 同じファイルの既存PRに、今回の更新が引き継いでいない修正がある 古いPRの置き換え
language_set_too_large 更新するパッケージが多すぎてPRの記録に収まらない PRを作れない場合
update_already_proposed この更新を提案するPRがすでにある 既存PRとの照合

保存処理の理由

コード 意味 詳しい説明
store_locked PRの記録が別のプロセスにロックされている 記録を照合できない場合
storage_failed PRの記録を保存できなかった 記録の保存順序
storage_full PRの記録に空きを確保できない 書き込みの停止
records_unverified 既存PRの記録を確認できない 記録の復旧
proposal_not_found この更新を提案していたPRの記録が見つからない 既存PRとの照合

保存ファイル

修正計画の記録は、remediation.storage_dirの下に保存します。

ファイル・ディレクトリ 内容 記録時点
plan.json 最新の計画、ソースの場所、比較に使ったスキャン、実行した依存更新の検査結果 依存更新の処理後、PR処理前
delivered.json 配信した計画と、Slackに表示した内容をそれぞれ識別する情報 対応する通知の配信後
prs.json PRの識別情報、状態、作成試行、再作成の抑止、GitHub操作の記録 PRの処理や照合、操作結果の記録時
tools 取得・照合したnpm・pnpm・uvのキャッシュ ツールの取得時など

prs.jsonには、依存元からの再解決の待機時刻、同じ種類の保留が続いた回数、入力ごとの停止記録も保存します。 この記録は依存更新の処理後にも更新します。

plan.jsonは、PR処理後の結果を含めて再保存しません。 PR処理の今回の結果は通知で、継続して管理する記録はprs.jsonで確認できます。

保存とPR処理の関係は記録の保存順序、保存先の設定は保存先を参照してください。