何を見つけたか
数値だけで書かれた受け入れ条件が、意図に反する変更を誘発した。
devbasex/devbase の #192(PLAN65)の受け入れ条件 D-3 は、次の形だった。
D-3. cmd_scale 本体が 40 行以下(現状 86 行)。抽出した段階の関数が [1/5]〜[5/5] の
ログ文字列を保つ
実装の担当は、数字に合わせるために空行を削り、2 文を 1 行に詰めた。 行数は満たすが、
段階の区切りが読めなくなる形である。検査の持ち場が差し戻し、元に戻した。
最終的に配布した main(fd5fa48)の実測は次のとおりで、数字も満たしている。
| 関数 |
本体の行数 |
空行を除く |
cmd_scale |
49 |
39 |
cmd_up |
67 |
52 |
つまり、素直に段階を抽出すれば数字は自然に満たされた。 詰める操作は要らなかった。
数字が「何のための数字か」を書いていなかったために、担当は数字そのものを目標として
受け取った。
どこで見つけたか
requirements-design は「検証可能であること」を求めるため、数値は検証可能性の点で
望ましい形として選ばれやすい。 しかし数値だけでは、満たし方が 2 通り以上あるときに
どちらでもよいことになる。
なぜこの変更の範囲外なのか
v3.7.0 の 8 課題は devbase 本体を対象にしており、Skill の手順は対象外である。
D-3 そのものは検査で差し戻して決着しており、配布した成果物に問題は残っていない。
直さないと何が起きるか
- 数値の受け入れ条件があるたびに、数字を満たす最短経路(空行の削除・1 行への圧縮・
別ファイルへの退避)が選ばれうる。 検査が毎回差し戻す前提の運用になる
- 差し戻しは手戻りである。今回は検査の持ち場が気づいたが、数字が満たされている以上、
条件の側からは「合格」と読める。 見逃す余地が残る
直し方の案
| 案 |
内容 |
| A |
requirements-design に「数値の条件には、その数字が何を表す代理なのかを 1 行添える」を足す。例: 「cmd_scale 本体が 40 行以下(cmd_up と同じく段階が関数として名前を持っていることの代理。空行の削除や 1 行への圧縮で満たさない)」 |
| B |
数値の条件に「満たし方として認めないもの」を併記する形を定める |
| C |
quality-gates の証跡に、数値の条件は測り方(何を 1 行と数えるか)まで書かせる。今回は「本体 49 行 / 空行を除くと 39 行」と測り方で値が変わった |
A が入口で、C は出口である。A だけでも今回の差し戻しは防げた。
由来
devbasex/devbase の issue #192(v3.7.0 の振り返り、PR devbasex/devbase#212)
何を見つけたか
数値だけで書かれた受け入れ条件が、意図に反する変更を誘発した。
devbasex/devbaseの #192(PLAN65)の受け入れ条件 D-3 は、次の形だった。実装の担当は、数字に合わせるために空行を削り、2 文を 1 行に詰めた。 行数は満たすが、
段階の区切りが読めなくなる形である。検査の持ち場が差し戻し、元に戻した。
最終的に配布した
main(fd5fa48)の実測は次のとおりで、数字も満たしている。cmd_scalecmd_upつまり、素直に段階を抽出すれば数字は自然に満たされた。 詰める操作は要らなかった。
数字が「何のための数字か」を書いていなかったために、担当は数字そのものを目標として
受け取った。
どこで見つけたか
devbasex/devbaseの Add: 配布の工程を新設し、NDF の版の付け方と配布チャネルを決める (#188) #192 と PR refactor(PLAN65): devbase scale と login の Compose 呼び出しを共通経路へ寄せる (#192) devbase#231 / 起点をリポジトリの根へ置くと playwright-kit-ops のテストが 1 件も収集されない #232 の実装と検査skills/requirements-design/SKILL.md(受け入れ条件の作り方)skills/refactoring/SKILL.md(長いメソッドの兆候)requirements-designは「検証可能であること」を求めるため、数値は検証可能性の点で望ましい形として選ばれやすい。 しかし数値だけでは、満たし方が 2 通り以上あるときに
どちらでもよいことになる。
なぜこの変更の範囲外なのか
v3.7.0 の 8 課題は devbase 本体を対象にしており、Skill の手順は対象外である。
D-3 そのものは検査で差し戻して決着しており、配布した成果物に問題は残っていない。
直さないと何が起きるか
別ファイルへの退避)が選ばれうる。 検査が毎回差し戻す前提の運用になる
条件の側からは「合格」と読める。 見逃す余地が残る
直し方の案
requirements-designに「数値の条件には、その数字が何を表す代理なのかを 1 行添える」を足す。例: 「cmd_scale本体が 40 行以下(cmd_upと同じく段階が関数として名前を持っていることの代理。空行の削除や 1 行への圧縮で満たさない)」quality-gatesの証跡に、数値の条件は測り方(何を 1 行と数えるか)まで書かせる。今回は「本体 49 行 / 空行を除くと 39 行」と測り方で値が変わったA が入口で、C は出口である。A だけでも今回の差し戻しは防げた。
由来
devbasex/devbaseの issue #192(v3.7.0 の振り返り、PR devbasex/devbase#212)