Skip to content

v0.21.2

Choose a tag to compare

@wfukatsu wfukatsu released this 06 Aug 23:35
· 196 commits to main since this release

状態管理ダッシュボードが「完了済みのプロジェクトを未着手として表示する」問題を修正したパッチリリースです。あわせてダッシュボード全体の網羅性を点検し、9 件の不整合を修正しました。

ハイライト

完了済みプロジェクトが全て pending と表示される問題を修正

フェーズのステータスは進捗レジストリ (work/pipeline-progress.json) が無条件に優先していました。しかしこのレジストリを書くのは、各 SKILL.md 末尾の「pipeline-progress.json を completed に更新する」という緩い手順です。実際には頻繁に飛ばされ、オーケストレータ経由でない単独実行では最初から走りません。

その結果、未更新のフェーズは初期値の pending に留まり続け、23 フェーズ全ての成果物がディスク上に存在するプロジェクトが 2/23 完了 と表示されていました。各行は自己矛盾しています。

フェーズ 2/23 完了  ##..................  pending 21 | completed 1 | skipped 1

調査                                0/1
   `- investigate                [====]   4/4 !  o pending     84d前    ← 4/4 書けているのに pending
分析                                0/2
   +- analyze                    [====]   4/4 !  o pending     84d前
評価                                0/3
   +- evaluate-mmi               [====]   2/2 !  o pending     84d前

pendingレジストリの初期値であって、何も主張していない値です。全フェーズがそこから始まり、スキルがスタンプを忘れれば居残るだけ。一方 in_progress / completed / failed / skipped はスキルが実際に行った主張です。

この非対称性を反映し、pending は実在する宣言済み出力に負けるようになりました。他の記録済みステータスは従来通り優先されます。

フェーズ 16/23 完了  ##############......  pending 4 | completed 15 | skipped 1 | stale 3

調査                                1/1
   `- investigate                [====]   4/4 !  * completed   84d前
分析                                1/2
   +- analyze                    [====]   4/4 !  * completed   84d前
レビュー                            5/7
   `- review-synthesizer         [====]   2/2 !  @ stale       84d前
レポート                            0/2
   +- report                     [====]   1/1 !  @ stale       57d前

食い違い自体はドリフト (!) として引き続き表示されるため、レジストリ未更新が黙って隠蔽されることはありません。

副次的に stale 判定の連鎖も復活しました。 pending のフェーズは stale になり得ないため、レジストリ未更新の箇所では v0.21.1 で入れた無効化の伝播が丸ごと抑制されていました。上の例では review-scalardb が 48 日前に書き直されたことが効いて、review-synthesizerreportreview-reportstale として現れています。これは今まで完全に見えていなかった実在の信号です。

ダッシュボード網羅性の点検 (9 件)

  • 2 つのタブが矛盾しなくなった — バックログビューのパイプライン行は進捗レジストリを直接数えていたため、合計が「レジストリに記載されたフェーズ数」になり stale も無視していた。同じ画面で片方が pipeline 2/5、Tab 1 回で切り替わるもう片方が フェーズ 2/24 完了 と表示される状態だった。パイプラインビューと同じ状態レイヤーで導出するようになった
  • キー凡例と日本語ラベルの追従Taba? は動作していたのに下部バーに無く、ヘッダの 4 ラベルが --lang=ja でも英語のままだった
  • フィルタが --json にも効く — 適用内容を filters オブジェクトに記録
  • 不正な --phase / --epic は終了コード 2 — 従来は空のツリーを表示して 0 で終了しており、「そのフェーズが空」と読めてしまっていた。実在するフェーズ / Epic ID を stderr に列挙する
  • 更新ポーリングが 3 階層下まで見る — architect が実際に書く深さ 3 のレポート上書きを検知できていなかった
  • 拡張ティアが SKILL.md の約束通りの出力を宣言 — 進捗バーが 0/1 や 1/1 しか出せなかった。report-token-cost を 15 番目のメンバーとして追加
  • investigate-security の出力ファイル名からコロンを除去architect:investigate-security.md は kebab-case 規約外で、実際にマッチし得なかった。security-assessment.md に変更

テスト

tools/nexus-status.test.sh を新設し、スクラッチプロジェクト上で CLI の契約を検証します(プロジェクト解決と終了コード 0/1/2、--view=auto の選択、--md のフロントマターと --ascii の純度を含む全出力モード、フィルタによる絞り込み、2 ビュー間の一致、更新ポーリングの検知)。pipeline_status_data.test.py には未スタンプ pending の契約と拡張ティアの検証を追加。全 8 スイート pass。

アップグレード

/plugin marketplace update nexus-architect

3 プラグイン (product / architect / scalardb) は同一バージョンで一括リリースされます。スキルの呼び出し方や出力構造に破壊的変更はありません。

Full Changelog: v0.21.1...v0.21.2