課題 / 目的
macOS版OpenScreen 1.10.0で録画停止後に保存失敗が表示され、エディターが開かない事象が発生した。
利用者の録画データを失わないため、ネイティブhelperの停止通知が失敗しても、完成済みで読み取り可能なMP4が残っている場合は録画セッションとして救済する。
観測事実
- 発生環境: macOS arm64 / OpenScreen 1.10.0
- 失敗した録画本体は
recordings/recording-1788352573602.mp4 として残っている。
ffprobe でH.264動画、34.231667秒、18,933,868 bytesとして読み取れる。
- 対応する
.session.json と .mp4.cursor.json は作成されず、プロジェクトも作成されていない。
- 同じ起動セッションで行った約7秒の再現用録画は正常終了し、MP4、カーソルsidecar、session manifest、projectが作成された。
- 直前診断はhelper出力を保持しておらず、元のhelper終了理由は確定できていない。
対象範囲
- macOSネイティブ録画の停止・保存処理
- 停止通知失敗時に残ったMP4の安全な妥当性判定
- 妥当なMP4をsession manifestへ接続し、エディターへ渡す救済経路
- 成功、救済、救済不可を区別する回帰テスト
- 診断ログに救済結果と元の停止エラーを残す
対象外
- Windows / Linux録画経路の変更
- 録画・編集UIのデザイン変更
- 不完全または書き込み中のMP4を無条件で開くこと
- 自動マージ、リリース、公開
完了条件
実装計画
- macOS録画停止結果とMP4妥当性判定をNode-pure moduleへ分離する
- 失敗する回帰テストを追加する
stop-native-mac-recording に安全な救済分岐を追加する
- テスト・typecheck・lintを実行する
- macOS実機で短時間録画を行い、保存物とエディター表示を確認する
- Draft PRを作成し、人間レビュー前で停止する
テスト / CI計画
- unit: MP4 atom判定(正常、moov欠落、mdat欠落、切断atom、小容量)
- unit: helper終了済みのみ救済し、稼働中は救済しない判断
- targeted Vitest
npx tsc --noEmit
npx tsc -p tsconfig.test.json --noEmit
npm run lint
- 必要に応じて
npm run test
- macOS desktop E2Eの録画停止・エディター表示
リスク / 停止条件
- 不完全なMP4を救済するとエディター側で二次障害になるため、構造確認なしのsize-only判定は採用しない。
- helperが生存中のファイルは書き込み中の可能性があるため救済しない。
- 同じ原因で品質ゲートが2回失敗した場合は原因と再開点を記録して停止する。
- merge、release、deployは人間承認まで行わない。
ナレッジログ
- 2026-09-02: インストール済み1.10.0を確認。失敗録画のMP4本体は正常に読めるが、sidecar / manifest / projectが欠落している。
- 2026-09-02: 同一環境で短時間録画は成功。恒常的な画面収録権限・保存先権限の問題ではない。
- 2026-09-02: Cursor Context ScoutはCursor APIキー未設定のため利用できず、
rgで停止処理とテストを手動特定した。
Beads TODO
Issue確定後に同期する。
課題 / 目的
macOS版OpenScreen 1.10.0で録画停止後に保存失敗が表示され、エディターが開かない事象が発生した。
利用者の録画データを失わないため、ネイティブhelperの停止通知が失敗しても、完成済みで読み取り可能なMP4が残っている場合は録画セッションとして救済する。
観測事実
recordings/recording-1788352573602.mp4として残っている。ffprobeでH.264動画、34.231667秒、18,933,868 bytesとして読み取れる。.session.jsonと.mp4.cursor.jsonは作成されず、プロジェクトも作成されていない。対象範囲
対象外
完了条件
実装計画
stop-native-mac-recordingに安全な救済分岐を追加するテスト / CI計画
npx tsc --noEmitnpx tsc -p tsconfig.test.json --noEmitnpm run lintnpm run testリスク / 停止条件
ナレッジログ
rgで停止処理とテストを手動特定した。Beads TODO
Issue確定後に同期する。