Skip to content

mvv-gate: 設計のプランで、設計の前に打った requirements-check の exit 2 を材料に読み、関門 1 の助言が unknown になる #1502

Open

Description

@takemi-ohama

何を見つけたか

設計 PR の本文の「テスト」の表が、on_fail で分岐した run ステップの exit を最終の結果として載せる。 MVV 判定はこの本文を材料に読む下流で、同じ誤りを引き継いで unknown を返す。

スプリント m1483 の設計プラン(supervise.py new sprint --design 1483 1436 --state ...、ndf 10.17.45、2026-09-29)で、関門 1 の助言の MVV 判定(mvv-gate.py check --gate design --advise)が 2 本とも「判定できない(unknown)」になった。

  • 設計のプランは先頭で spec-copy.py check <課題> issues/issue-<課題>-requirements.md を打つ。写しがまだ無いので終了コード 2 になる。これは想定どおりの動きで、次の requirements のステップが写しを作る
  • 判定は、この最初の exit 2 を「requirements-check が止まった」と読んだ。そのうえで「要求の写しが本文と揃っているか確かめられない」を理由に unknown を返した(PR 1499・1500 の MVV 判定のコメント)
  • 関門の時点で spec-copy.py check を打ち直すと、2 本とも「本文と一致する」で通った

今の作り

  • 設計のプランは先頭で requirements-check(plugins/ndf/scripts/supervise_lib/sprint_waves.py:157-162 、on_fail: requirements )を打つ。写しがまだ無いときの exit 2 は、要求を書くステップへ進むための分岐である
  • review の後には requirements-recheck(sprint_waves.py:77 、設計のプランのレビューの修正が要求の写しだけを手で直し、課題の本文(正)と写しが食い違ったまま進む #1769 )が写しと課題の本文の一致を確かめ直す。ただし PR 本文を作る pr ステップ(sprint_waves.py:192 )はそれより前にある
  • pr ステップの本文は plugins/ndf/scripts/supervise_lib/pr.py:255-258 の _machine_body が作る。state.results の run ステップを全部(分岐の exit 2 の requirements-check を含む)「テスト」の表へ載せる
  • MVV 判定(sprint_waves.py:389(ndf 10.21.0) の check --gate design --pr {pr} と、助言の判定)は plugins/ndf/scripts/mvv-gate.py:116,135 で gh pr view の本文をそのまま材料にする。よって本文の表の誤りが MVV 判定へ渡る

直さないと何が起きるか

normal では助言なので、承認の材料が 1 つ欠けて見えるだけで済む。pace: auto / fast では、関門 1 の MVV 判定が毎回 unknown になり、人の承認へ戻る。MVV の事前承認で関門を通すという仕組みが、設計のプランでは働かない。

期待する振る舞い

PR 本文の「テスト」の表は、分岐のための非 0 を失敗として載せない。例えば、on_fail で分岐した run ステップの exit を「写しがまだ無い(要求を書くステップへ進む)」として載せる。または、後の再確認(requirements-recheck)の結果で置き換える。MVV 判定は PR 本文を読むので、本文が直れば同じ形で直る。

由来

スプリント m1483(#1483・#1436)の承認ゲート 1

同じ根で見つけたこと(2026-09-30、スプリント m1316)

設計 PR #1515 の本文の「テスト」の表が、先頭の requirements-check の exit 2 を最終の結果として載せ、「requirements-check は通っていません。実行した場所や時点を確かめてから再実行する必要があります」と書いた。design ブランチの写しで spec-copy.py check 1316 を打ち直すと「本文と一致する」で通る。PR 本文の生成も、MVV 判定と同じく requirements のステップより後の状態を渡す対象に含める。

直す場所

  • 現象レイヤー: mvv-gate の関門 1 の助言(unknown)と、設計 PR の本文の「テスト」の表
  • 修正レイヤー: plugins/ndf/scripts/supervise_lib/pr.py の _machine_body が作る「テスト」の表
  • 修正方針: 向きの修正。表が分岐のための非 0 を失敗として載せず、後の再確認の結果で置き換えるようにする。MVV 判定と PR 本文の両方が同じ形で直る

再確認(ndf 10.21.0、2026-10-25)

同じ現象の観測(2026-10-31〜11 月)

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: ndf-skillNDF の Skill 本体priority: medium保守性・設計一貫性など、計画的に対応する

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions