背景
サイクル v0.3.1 Unit 001 (tests/token.bats 新設) で lib/token.sh の _cmd_rotate / _cmd_delete をテストする過程で、本体に tty ガード欠如の構造的な問題があることが判明した。
現状の問題
lib/token.sh の以下 2 箇所で stty -echo / stty echo を [ -t 0 ] のガードなしで呼んでいる:
_cmd_rotate (L169 stty -echo, L171 stty echo)
_cmd_delete は stty を直接呼んでいないが、read _yn 前に対話入力の副作用があり、将来同型のパターンが追加された際に同じ問題が発生する可能性がある
_cmd_add は [ -t 0 ] でガードされている (L128, L130) が、rotate 側は未ガード。非 tty 環境 (bats, CI, パイプ経由など) で実行すると stty: stdin isn't a terminal のエラーが出て set -eu により rotate 処理全体が stty 直前で停止する。
Unit 001 では stty を PATH shim で no-op 化することで回避したが、本体の堅牢性向上として _cmd_rotate にも _cmd_add と同じ [ -t 0 ] ガードを追加すべき。
対象ファイル/箇所
lib/token.sh L168-L172 周辺 (_cmd_rotate の stty -echo / read _token / stty echo ブロック)
推奨対応
_cmd_add と同じパターンでガードを追加:
printf '[%s] Enter new token: ' "$_name"
if [ -t 0 ]; then stty -echo; fi
read _token
if [ -t 0 ]; then stty echo; echo; fi
想定影響範囲
- 本体 1 ファイル (
lib/token.sh) の修正
- 既存のインタラクティブ挙動 (tty 環境) は変わらない
- 非 tty 環境での実行時、
stty エラーで停止していた処理が通るようになる (これまで CI から rotate が直接実行される運用はないが、スクリプト経由 / 自動化の観点で堅牢化)
確度区分
confirmed(Unit 001 のテスト実装中に実際に観測した挙動)
参照
- サイクル v0.3.1 Unit 001:
.aidlc/cycles/v0.3.1/plans/unit-001-plan.md(承認前提および境界外バックログ記載)
- 観測経路: tests/token.bats の R1 / D1 ケースで PATH shim による stty 差し替えを使った
背景
サイクル v0.3.1 Unit 001 (
tests/token.bats新設) でlib/token.shの_cmd_rotate/_cmd_deleteをテストする過程で、本体に tty ガード欠如の構造的な問題があることが判明した。現状の問題
lib/token.shの以下 2 箇所でstty -echo/stty echoを[ -t 0 ]のガードなしで呼んでいる:_cmd_rotate(L169stty -echo, L171stty echo)_cmd_deleteはsttyを直接呼んでいないが、read _yn前に対話入力の副作用があり、将来同型のパターンが追加された際に同じ問題が発生する可能性がある_cmd_addは[ -t 0 ]でガードされている (L128, L130) が、rotate 側は未ガード。非 tty 環境 (bats, CI, パイプ経由など) で実行するとstty: stdin isn't a terminalのエラーが出てset -euにより rotate 処理全体が stty 直前で停止する。Unit 001 では
sttyを PATH shim で no-op 化することで回避したが、本体の堅牢性向上として_cmd_rotateにも_cmd_addと同じ[ -t 0 ]ガードを追加すべき。対象ファイル/箇所
lib/token.shL168-L172 周辺 (_cmd_rotateのstty -echo/read _token/stty echoブロック)推奨対応
_cmd_addと同じパターンでガードを追加:想定影響範囲
lib/token.sh) の修正sttyエラーで停止していた処理が通るようになる (これまで CI から rotate が直接実行される運用はないが、スクリプト経由 / 自動化の観点で堅牢化)確度区分
confirmed(Unit 001 のテスト実装中に実際に観測した挙動)参照
.aidlc/cycles/v0.3.1/plans/unit-001-plan.md(承認前提および境界外バックログ記載)