切り替え前後の状態を両方用意する
対応する web Profile の運用では、直接追加した @dsh-themes/* パッケージを 1 つだけ有効にします。切り替え時は、対象パッケージを追加する前に以前のパッケージを削除するため、最初の変更を行う前に復旧手段を用意する必要があります。
- 01
現在の状態を確認して特定する
web Profile から、直接追加されたパッケージ名と正確なバージョンを読み取ります。依存関係が曖昧な場合や、バージョン範囲が使われている場合は中止します。
- 02
対象成果物を確認する
成果物全体の SHA-256、manifest ID、正確な互換性、slug、version と一致する、管理されたダウンロードを確認します。
- 03
以前の成果物を確認する
正確な以前の .tgz と digest を用意します。以前の状態が @dsh-themes/* パッケージを使わない組み込み palette なら、その事実を記録します。
- 04
ロールバック記録を作る
以前の ID と対象 ID、検証済み成果物の絶対パス、成果物全体の digest を記録します。Profile の内容や認証情報は含めません。
- 05
変更内容を最終確認する
何かを削除する前に、現在の状態、切り替え対象、互換性、用意したロールバック情報を確認します。
node /absolute/path/to/dsh-theme-manager/scripts/run-dsh.mjs plugin --profile web remove @dsh-themes/current-theme
node /absolute/path/to/dsh-theme-manager/scripts/run-dsh.mjs plugin --profile web add /absolute/path/to/verified-target.tgz --save-exact
node /absolute/path/to/dsh-theme-manager/scripts/run-dsh.mjs plugin --profile web list --json
node /absolute/path/to/dsh-theme-manager/scripts/run-dsh.mjs --profile web --dump-config記録と現在の状態が一致するときだけロールバックする
- 01
記録を検証する
Profile を変更する前に、不正、不完全、移動済み、不一致の成果物参照を拒否します。
- 02
現在の対象がまだ一致するか確認する
切り替え後に別の変更が加えられた Profile へ、古いロールバック記録を適用してはいけません。
- 03
以前の成果物を再検証する
インストールの直前に、成果物全体のバイト列を再確認します。payload hash で代用してはいけません。
- 04
対象を削除し、以前の正確な状態を復元する
以前の正確なパッケージをインストールします。組み込み palette へ戻す場合は、@dsh-themes/* パッケージを残しません。
- 05
再起動して検証する
想定する直接依存関係が 1 つだけであることを確認し、出力した構成を調べ、DSH を再起動して、実際のランタイム ID を検証します。
検証済みの入力だけを使って操作する
よくある質問
変更を行う前に
フォーマット、互換性、証拠、ロールバックに関する回答
このガイドでは何を確認しますか?
このガイドの対象:有効な直接依存関係は 1 つだけ、正確なロールバック成果物の記録、CLI と実ランタイムによる事後確認
最初に何をすべきですか?
安全に切り替えるには、適用したい対象と、復元できる直前の正確な状態という 2 つの準備が必要です。
最も重要な境界は何ですか?
切り替えが途中で失敗した場合は、不完全な対象を削除し、あらかじめ用意した以前の成果物を再インストールします。安定状態として想定されるのは、直接追加した @dsh-themes/* パッケージが 1 つだけある状態、または組み込み palette の状態です。
学習を続ける
検証済みの証拠から続ける
公開済みのアーティファクトを比較するか、インストール手順に戻ります。