v0.21.1
状態管理ダッシュボードの completed が永続してしまう問題を修正したパッチリリースです。
ハイライト
completed は永続しない — 上流の変更で下流フェーズを無効化
前の工程を修正しても(再実行しても、出力レポートを手で直しても)下流のフェーズは completed のまま残り、すでに存在しない入力から作られた成果物でパイプラインが「完了」と表示され続けていました。ダッシュボードが進捗レジストリの状態を最終的な答えとして読み、時系列を見ていなかったためです。
依存先が自分の完了後に出力を書いているフェーズは、completed に代えて stale(↺、ASCII では @)と表示し、どの依存がいつ変わったかを併記します。
Investigation 1/1
└─ investigate [====] 4/4 ● completed ← 修正した本人は completed のまま
Analysis 0/2
├─ analyze [====] 4/4 ↺ stale ← 直接の無効化
Evaluation 0/3
├─ evaluate-mmi [====] 2/2 ↺ stale ← 伝播
└─ integrate-evaluations [====] 2/2 ↺ stale
next: analyze
stale (このフェーズを再実行すると変更が反映される):
analyze <- investigate 更新 08-06 23:55
無効化は依存グラフを 1 回のトポロジカル走査で伝播するので、パイプライン上流 1 箇所の修正がその下の連鎖全体を un-complete します。
n/m 完了の分子とグループ集計から外れ、進捗バーが落ちる- 再び実行可能になり、既定アクションが再実行に変わる
次:の推奨はその中で最も上流のもの(上流から再実行すれば残りは自然に解消する)fの状態フィルタ、?のヘルプ、詳細ペイン(どの依存がいつ変わったか)、aの質問文に対応- 書き戻しは一切なし — レジストリは無変更で、
--jsonは記録上のstatusと表示用のdisplay_statusを両方返す
フラグの信頼性を保つための線引きも明確にしています: 同一実行内の書き込み順のズレは 5 秒の猶予で吸収/未実行(pending・skipped)の依存は何も無効化しない/出力を宣言しているのに 1 つも書いていないフェーズは従来どおりドリフト扱い(実ファイルに否定されている記録は、何より古いかを判断する根拠になりません)。
product パイプラインでも同様に働きます(ビジョンを直せば、そこから導出したペルソナ・モック・機能が stale になる)。こちらの定石は全部の再実行ではなく /product:adapt-change です。
契約テスト
tools/lib/pipeline_status_data.test.py に stale 連鎖のフィクスチャを追加 — 伝播、猶予窓、集計・next:・アクション・フィルタへの波及、そして誤検知してはいけない条件まで検証します。
詳細は CHANGELOG.md / CHANGELOG_ja.md を参照。