Skip to content

env backend test / env list の見出しが読み替え前のグループ名だけを出す(グループ default) #188

Description

@takemi-ohama

何が起きたか

version: 2group_aliases: {default: nyle})の端末で devbase env backend test を打つと、見出しが読み替え前の名前だけになる。

  グローバル(グループ default)          devbase/team/nyle/global                 22 変数

env backend statusグループ: default → nyle と両方を出すのに、SecretRef.label() を使う見出し(env backend testenv list)は default だけで、隣のパス(nyle)と食い違って見える。

現象は v3.6.0 でも再現する。SecretRef.label()lib/devbase/env/secret_store.py:151)は self.group をそのまま埋め込み、storage_groupdisplay_group も呼ばない。

仕様書が自己矛盾している

docs/specifications/secret-backend.md に、相反する 2 つの記述がある。

箇所 記述
label() はグループがあれば (グループ <名前>) を後ろに付ける」 読み替え前を出す
「文言には読み替えの前と後を default → nyle の形で出す(display_group)」 読み替え後も出す

list の見出しの例は === グローバル(グループ with) (...) === で固定されているが、with は読み替えの無いグループなので、この例では前後が一致してしまい矛盾が表に出ない。コードを直す前に、どちらを採るかを仕様の側で決める必要がある。

修正レイヤー

現象レイヤー: env backend test の見出し(lib/devbase/commands/env_backend.py:472)と env list の見出し(lib/devbase/commands/env.pycmd_env_list / _group_suffix)。

修正レイヤー: SecretRef.label()lib/devbase/env/secret_store.py:151)が返すグループの表示。呼び出される側の契約であり、env list_group_suffix は「文言は SecretRef.label() が持ち、ここでは写さずに差分だけを取り出す」と明記して label() に従っている。見出しを 1 か所ずつ直すと、この従属関係が崩れる。

label()SecretRef にあり OpenBaoSettings を知らないため、読み替えの前後を出すには表示の側へ設定を渡す必要がある。label() のコメントは「チーム単位の文字列は変えない(誤りの伝達や桁揃えに埋め込まれている)」と断っているので、label() にグループの表示だけを差し替える引数を足すか、表示用のラッパを 1 つ置くかを設計で決める。

採る手: 移動(move_responsibility)。グループの表示の責務を、呼び出し側から label() の契約へ寄せる。

波及の範囲

label()lib/ の中で 52 か所 / 10 ファイルから呼ばれる。大半はエラー文言とログである。

ファイル 件数
env/openbao.py 11
commands/env_migrate.py 10
commands/env_backend.py 9
env/io_import.py 6
env/cache.py 5
env/secret_store.py 4
commands/env.py 3
commands/env_ops.py 2
env/runtime.py / env/backend_config.py 各 1

既定の振る舞いを変えると 52 か所すべてに及ぶ。 見出しだけを変えるなら、差し替えるのは commands/env_backend.py:472commands/env.py_group_suffix の 2 か所で足りる。どちらにするかが設計の分かれ目である。

期待すること

見出しのグループ名も status と同じく読み替えの前後を出す(OpenBaoSettings.display_group を使う)。version: 1 とファイル backend の見出しは変えない。

受け入れ条件

  • group_aliases のあるグループで env backend testenv list の見出しが読み替えの前後を出す
  • docs/specifications/secret-backend.md の 2 つの記述の矛盾が解け、list の見出しの例に読み替えのある場合(default → nyle)が加わる
  • version: 1 とファイル backend の見出しが変わらない

既存のテストは、見出しを固定している 3 ファイル(tests/env/test_groups.py:126-128tests/commands/test_env_user_axis.py:475,499-503tests/env/test_runtime.py:802,816)がいずれも読み替えの無いグループ(with / kkg)を使っているため、読み替え後を出すようにしても出力は変わらない。読み替えのあるグループのテストは新しく書く。

見つけた場面

PLAN57(#187)の単位 2 で env backend test の出力を記録したとき。

Refs #182 / #184

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions