Skip to content

v0.21.1

Choose a tag to compare

@wfukatsu wfukatsu released this 06 Aug 15:22
· 200 commits to main since this release

状態管理ダッシュボードの 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 秒の猶予で吸収/未実行(pendingskipped)の依存は何も無効化しない/出力を宣言しているのに 1 つも書いていないフェーズは従来どおりドリフト扱い(実ファイルに否定されている記録は、何より古いかを判断する根拠になりません)。

product パイプラインでも同様に働きます(ビジョンを直せば、そこから導出したペルソナ・モック・機能が stale になる)。こちらの定石は全部の再実行ではなく /product:adapt-change です。

契約テスト

tools/lib/pipeline_status_data.test.py に stale 連鎖のフィクスチャを追加 — 伝播、猶予窓、集計・next:・アクション・フィルタへの波及、そして誤検知してはいけない条件まで検証します。

詳細は CHANGELOG.md / CHANGELOG_ja.md を参照。