## 何を見つけたか `--context` を受け付けない道で補完が `--context` を出しても、一致テストは落ちない。`tests/cli/test_name_context_consistency.py` の `test_bash_completion_offers_context_after_path`・`test_bash_completion_offers_context_after_name`・`test_zsh_completion_offers_context` は、`--context` の集合(`CONTEXT_PATHS`)の道で `--context` が**欠けていないか**だけを見る。たとえば bash の `env set` の分岐に `--context` を足すか、zsh の `env set` の分岐に `'--context[Docker context]:context:'` を足しても、全体のテストは通る。argparse は `devbase env set --context x` を退けるため、補完が勧めた旗で利用者のコマンドが止まる。 #435 の設計(決定 5)は「一致テストは `--context` の欠けと余分の両方を比べる。余分を比べる道は子の parser を持たない末端の道に限る」と決め、不変条件 I4・I6 とテスト設計にも余分の行があったが、実装(PR #449)に余分の比べ方が入らず、PR の本文にも外した理由が書かれていない。 ## どこで見つけたか スプリント m10b の確定仕様化(PR #451)で、#435 の設計の決定の記録を実装と突き合わせたとき。確定仕様 `docs/specifications/cli-argument-resolution.md` には、実装にない決定 5 を写していない。 ## なぜこの変更の範囲外なのか #435 の受け入れ条件 1〜8 は欠けの検出だけを求め(受け入れ条件 5)、余分の比べ方は設計の判断で足したものである。受け入れ条件は満たしており、確定仕様化の PR はコードを変えない。根拠: Mission(MVV 版 1) ## 直さないと何が起きるか 補完の写しが列挙の正本より広がっても検査で拾えない。`--context` を取らない道に誤って `--context` を足す変更が入ると、利用者が補完に従って打ったコマンドが argparse のエラー(終了コード 2)で止まる。今の補完に余分があるかは確かめていない。 ## 受け入れ条件 2026-10-12 に足した(スプリント m8b のモード判定と要求)。#435 の設計の決定 5 を、この課題で実装へ入れる。 | # | 条件 | 確かめ方 | | --- | --- | --- | | 1 | bash の補完で、`--context` を受け付けない末端の道(子の parser を持たない道。例 `env set`)に `--context` を足すと、一致テストがその道を挙げて落ちる | 補完の bash の分岐へ一時に `--context` を足して、全体のテストで落ちることを確かめ、戻す | | 2 | zsh の補完で同じく `--context` を足すと、一致テストがその道を挙げて落ちる。比べるのは #455 の道具(`tests/cli/zsh_completion_harness.py`)で得た実際の候補でよい | 1 と同じく zsh の分岐へ一時に足して確かめる | | 3 | 余分を比べるのは子の parser を持たない末端の道に限り、親の道(`project profile` など)の zsh の本体が子の分岐を含むことで誤って落ちない | 今の main の補完で一致テストが通る | | 4 | 今の補完に余分があれば直す(無ければ「無かった」と PR の本文に書く) | 1〜3 のテストが今の補完で通る | | 5 | 既存の欠けの検査(`test_bash_completion_offers_context_after_path` など)は弱めない | 道を 1 つ消すと従来どおり落ちる | ## 関連 - #455(閉じた)— zsh を起動して補完の実際の候補を比べる道具 `tests/cli/zsh_completion_harness.py` と、それを使うテスト `tests/cli/test_zsh_completion_run.py` が入った。zsh の側の余分は、分岐の文字列ではなく実際の候補で比べられる ## 由来 issue #435 ## 進行 モード: — - [ ] 要求と受け入れ条件 - [x] 作業場所の用意 — 2026-10-12 22:54 - [ ] 設計 - [ ] 素材の収集と出典の確定 - [ ] ドキュメント再構成 - [ ] ドキュメントレビュー - [x] 計画 — 2026-10-12 22:53 - [x] 実装 — 2026-10-12 23:39 - [x] 構造改善 — 2026-10-12 23:51 - [x] 実装レビュー — 2026-10-13 00:09 - [x] 完了判定 — 2026-10-12 23:42 - [x] Pull Request — 2026-10-12 23:46 - [x] 確定仕様化 — 2026-10-13 00:50 - [x] 後片付け — 2026-10-13 01:00 - [x] 配布 — 2026-10-13 01:00 - [ ] 体裁レビュー - [x] リリース後テスト — 2026-10-13 01:03 - [x] 振り返り — 2026-10-13 01:03 - [x] 棚卸し — 2026-10-13 01:20 <!-- ndf:section-end --> 振り返り: https://github.com/devbasex/devbase/pull/472#issuecomment-6128207833
Activity
Merge pull request #471 from devbasex/feat/issue-453-m8b
Merge pull request #474 from devbasex/docs/m8b-spec