何が起きたか
devbase のマイルストーン v3.6.0(設計 PR #204 / #205、確定仕様 PR #210)で、レビューの差し戻し 4 件が設計文書の「〜しない」の範囲が広すぎることに集中した。
| 書いた文 |
実際 |
build --help は「cd も env の読み込みもしない」 |
入口のシェルは起動直後に $DEVBASE_ROOT/env と現在地の env を必ず読む。保証できるのは「切り替え先のプロジェクトの env を読まない」だけ |
--context=--help は「context 名として下流へ渡る」 |
下流の argparse で値不足の usage エラー(終了コード 2)になる |
| 衝突は「対象のディレクトリの中で実行すれば避けられる」 |
名前解決は現在地を見ないため避けられない |
「projects/ の外へ cd せず env も読まない」 |
projects/<name> は symlink で、cd はリンクの先へ移動する。保証の対象は位置引数のパストラバーサルに限られる |
どれも実装は正しく、文の側だけが実装より強い保証を述べていた。レビュー(codex)が 4 件とも拾ったが、設計 Pull Request と確定仕様の両方で同じ形の差し戻しが出た。
直し方の案
design の手順(入出力の契約 / 決定の記録)に、否定形の保証を書くときの決まりを足す。
- 「〜しない」と書いたら、何に対して成り立たないか(対象・経路・入力の範囲)を同じ文か直後の表に書く
- 既存の共通処理(起動時の読み込み・リンクの解決・下流の parser)を経由する場合は、そこは保証の外であることを明記する
由来
devbasex/devbase のマイルストーン v3.6.0 の振り返り(https://github.com/devbasex/devbase/pull/211#issuecomment-5739397561)
何が起きたか
devbase のマイルストーン v3.6.0(設計 PR #204 / #205、確定仕様 PR #210)で、レビューの差し戻し 4 件が設計文書の「〜しない」の範囲が広すぎることに集中した。
build --helpは「cd も env の読み込みもしない」$DEVBASE_ROOT/envと現在地のenvを必ず読む。保証できるのは「切り替え先のプロジェクトの env を読まない」だけ--context=--helpは「context 名として下流へ渡る」projects/の外へ cd せず env も読まない」projects/<name>は symlink で、cd はリンクの先へ移動する。保証の対象は位置引数のパストラバーサルに限られるどれも実装は正しく、文の側だけが実装より強い保証を述べていた。レビュー(codex)が 4 件とも拾ったが、設計 Pull Request と確定仕様の両方で同じ形の差し戻しが出た。
直し方の案
designの手順(入出力の契約 / 決定の記録)に、否定形の保証を書くときの決まりを足す。由来
devbasex/devbase のマイルストーン v3.6.0 の振り返り(https://github.com/devbasex/devbase/pull/211#issuecomment-5739397561)