何を見つけたか
env backend test と env backend migrate の要約・一覧の桁揃えが、全角文字を 1 文字幅として数えるため崩れる。
書式は :<16 / :<24 / :<28 / :<40 のように文字数で指定されており、表示幅を見ていない。
v3.7.0 を配布した実環境(version: 2 / group_aliases: {default: nyle})での env backend test の実測。
グローバル(グループ default → nyle) devbase/team/nyle/global 22 変数
個人のグローバル(グループ default → nyle) devbase/users/takemi_ohama/nyle/global 26 変数
プロジェクト 'adminer'(グループ default → nyle) devbase/team/nyle/projects/adminer 0 変数
個人のプロジェクト 'carmo-autonavi-wordpress'(グループ default → nyle) devbase/team/… 0 変数
1 行目は揃うが、2 行目以降はパスの開始位置がばらばらである。
読み替えの有無とは関係が無い。 読み替えの無いグループでも、参照の名前が長ければ同じように
崩れる。設計の時点で プロジェクト 'carmo-ai'(グループ default) が 31 文字で、
既に :<28 を超えることを実測している。#188 が見出しへ → nyle を足したことで崩れる行が
増えたが、原因は #188 ではない。
どこで見つけたか
v3.7.0 の振り返り(起票の取りこぼしを拾う工程)。設計が「別の課題である」と明言しながら、
番号が付いていない。
| 場所 |
記述 |
/Users/takemi_ohama/devbase/issues/old/PLAN64_secret-label-group-design.md:287 |
「桁揃えそのものの見直しは、この変更とは別の課題である」 |
同 :323(未確認のまま残ること) |
「この変更では扱わない」 |
| PR #223 の Test plan |
「桁あふれを実測した」 |
| PR #237 の「やらないこと」 |
同旨 |
同じ PLAN64 の棚卸しから出た env_migrate.Target.label のデッドコードは #222 として
起票されており、扱いが揃っていない。 確定仕様 docs/specifications/secret-backend.md にも
桁揃えの記述は移っていない(grep 桁 が 0 件)。
現象の場所は次のとおりである(いずれも lib/devbase/commands/env_backend.py)。
| 場所 |
出すもの |
書式 |
cmd_env_backend_test(:472) |
env backend test の一覧 |
:<28 / :<40 |
env backend migrate の完了後の一覧(:594) |
--to age でサーバに残す参照 |
:<24 |
_heading(:706) |
env backend migrate の要約(移行する機密・衝突するキー)の見出し |
:<24 |
print_left_on_server(:731) |
サーバ上に残す他のグループの共通の参照 |
:<16 |
env list(lib/devbase/commands/env.py の cmd_env_list)の見出しと件数行は桁揃えを持たないため、この崩れは出ない。
なぜこの変更の範囲外なのか
PLAN64(#188)の受け入れ条件は、見出しに読み替えの前後を出すことと、その適用範囲
(エラー文言・ログは読み替え前のまま)だけを対象としている。桁揃えの方式は受け入れ条件に
含まれていない。
直さないと何が起きるか
- 参照の名前が長い環境(プロジェクトが多い・グループ名が長い)で、一覧が読めない。
この端末では 74 件の参照のうち大半が崩れている
- 日本語の見出しを持つ出力すべてに同じ形が出るため、今後この方式で新しい一覧を足すたびに
同じ崩れが増える
直し方の案
| 案 |
内容 |
| A |
表示幅を数える関数を 1 つ置き(unicodedata.east_asian_width が W / F を返す文字を 2 と数える)、桁揃えをそこへ寄せる。修正レイヤーはここである |
| B |
桁揃えをやめ、見出しとパスを別の行に出す。幅の計算が要らなくなる |
| C |
見出しを短くする((グループ default → nyle) を末尾に 1 度だけ出す)。崩れは減るが無くならない |
A が原因の場所で、B は形を変えて回避する。どちらを採るかは、この一覧を何に使うかで決まる。
由来
issue #188(v3.7.0 の振り返り、PR #212)
何を見つけたか
env backend testとenv backend migrateの要約・一覧の桁揃えが、全角文字を 1 文字幅として数えるため崩れる。書式は
:<16/:<24/:<28/:<40のように文字数で指定されており、表示幅を見ていない。v3.7.0 を配布した実環境(
version: 2/group_aliases: {default: nyle})でのenv backend testの実測。1 行目は揃うが、2 行目以降はパスの開始位置がばらばらである。
読み替えの有無とは関係が無い。 読み替えの無いグループでも、参照の名前が長ければ同じように
崩れる。設計の時点で
プロジェクト 'carmo-ai'(グループ default)が 31 文字で、既に
:<28を超えることを実測している。#188 が見出しへ→ nyleを足したことで崩れる行が増えたが、原因は #188 ではない。
どこで見つけたか
v3.7.0 の振り返り(起票の取りこぼしを拾う工程)。設計が「別の課題である」と明言しながら、
番号が付いていない。
/Users/takemi_ohama/devbase/issues/old/PLAN64_secret-label-group-design.md:287:323(未確認のまま残ること)同じ PLAN64 の棚卸しから出た
env_migrate.Target.labelのデッドコードは #222 として起票されており、扱いが揃っていない。 確定仕様
docs/specifications/secret-backend.mdにも桁揃えの記述は移っていない(
grep 桁が 0 件)。現象の場所は次のとおりである(いずれも
lib/devbase/commands/env_backend.py)。cmd_env_backend_test(:472)env backend testの一覧:<28/:<40env backend migrateの完了後の一覧(:594)--to ageでサーバに残す参照:<24_heading(:706)env backend migrateの要約(移行する機密・衝突するキー)の見出し:<24print_left_on_server(:731):<16env list(lib/devbase/commands/env.pyのcmd_env_list)の見出しと件数行は桁揃えを持たないため、この崩れは出ない。なぜこの変更の範囲外なのか
PLAN64(#188)の受け入れ条件は、見出しに読み替えの前後を出すことと、その適用範囲
(エラー文言・ログは読み替え前のまま)だけを対象としている。桁揃えの方式は受け入れ条件に
含まれていない。
直さないと何が起きるか
この端末では 74 件の参照のうち大半が崩れている
同じ崩れが増える
直し方の案
unicodedata.east_asian_widthがW/Fを返す文字を 2 と数える)、桁揃えをそこへ寄せる。修正レイヤーはここである(グループ default → nyle)を末尾に 1 度だけ出す)。崩れは減るが無くならないA が原因の場所で、B は形を変えて回避する。どちらを採るかは、この一覧を何に使うかで決まる。
由来
issue #188(v3.7.0 の振り返り、PR #212)