何を見つけたか
backups/snapshot.yml のエントリの created_at が引用符なしの日時(例 created_at: 2026-09-15 23:18:25)だと、PyYAML が datetime として読む。devbase snapshot list は lib/devbase/commands/snapshot.py の _snapshot_list で s.get('created_at', 'N/A')[:19] と文字列として切り出すため、TypeError: 'datetime.datetime' object is not subscriptable で止まる。
どこで見つけたか
PR #263 の実装レビュー(round 2、agy の指摘)の修正の途中。lib/devbase/commands/snapshot.py:74。
なぜこの変更の範囲外なのか
PR #263 は同じ原因の比較の落ち方を SnapshotManager._entry_age(系列の並べ替え・ローテーション)で直した(b58f9ee)。_snapshot_list の表示は PR の差分に無く、受け入れ条件は list の表示の変更を「含まない」としている。変更前から同じ挙動である。
直さないと何が起きるか
devbase 自身は created_at を引用符付きの文字列で書くため、通常は起きない。利用者が snapshot.yml を手で直したときだけ、一覧の表示が例外で止まる。
由来
PR #263
何を見つけたか
backups/snapshot.ymlのエントリのcreated_atが引用符なしの日時(例created_at: 2026-09-15 23:18:25)だと、PyYAML がdatetimeとして読む。devbase snapshot listはlib/devbase/commands/snapshot.pyの_snapshot_listでs.get('created_at', 'N/A')[:19]と文字列として切り出すため、TypeError: 'datetime.datetime' object is not subscriptableで止まる。どこで見つけたか
PR #263 の実装レビュー(round 2、agy の指摘)の修正の途中。
lib/devbase/commands/snapshot.py:74。なぜこの変更の範囲外なのか
PR #263 は同じ原因の比較の落ち方を
SnapshotManager._entry_age(系列の並べ替え・ローテーション)で直した(b58f9ee)。_snapshot_listの表示は PR の差分に無く、受け入れ条件はlistの表示の変更を「含まない」としている。変更前から同じ挙動である。直さないと何が起きるか
devbase 自身は
created_atを引用符付きの文字列で書くため、通常は起きない。利用者がsnapshot.ymlを手で直したときだけ、一覧の表示が例外で止まる。由来
PR #263