背景 / 現状
native recordingで必要となるmacOS capability/permissionは、初回prompt、拒否、System Settingsでの撤回、sleep/relaunch後まで一貫して説明・再評価されなければならない。現在はDiagnosticsの「取得しない」説明とrecording導線がある一方、TCC permission lifecycle、prompt前説明、deny/revoke時の安全なimport-first継続を一つのproduct contractとして所有していない。
目的
native recordingが必要とする最小権限を透明に扱い、拒否・撤回・未対応Macでもデータを失わず、CSV/JSON importだけで安全に業務分析を続けられるようにする。
対象
collector capability inventoryとrequired/optional permissionのallowlist
prompt前の日英説明(目的、取得data、取得しないdata、撤回方法、拒否時の代替)
launch、record開始、resume、System Settings復帰時のpermission preflight/recheck
missing/denied/revokedのstable error/recovery action、System Settings導線、import-only fallback
consent explanation、recording indicator、diagnostics、support bundleでの一貫した状態
packaged clean-Macでのdeny/revoke E2E
非対象
Claude Code実装契約
native collectorが実際に使うOS APIからpermission inventoryを導出し、required/optional/no-permissionをcodeとdocsで同じallowlistにする。不要なTCC promptを将来のために予約しない。
promptの前に、目的・収集する最小data・明示的に収集しないdata・拒否/撤回方法・import-only fallbackを日英で表示する。実際のrequired permissionと説明が違う場合はrecord開始をfail closedする。
permission stateを起動、record開始、pause/resume、foreground復帰、agent reconnectで再評価する。denied/revoked/unknown時はnew collectionを開始/継続せず、既存dataを削除せず、#63のsafe recovery actionを返す。
importはpermissionの有無に関わらず利用できる。recording unavailableを製品全体の利用不可と表示しない。
#64のparticipant説明、#98の常時indicator/emergency pause、[P1][Operations UX] ワンクリックのprivacy-safe診断レポートと復旧導線を提供する #55 /#94のdiagnostics/support bundleは同じcapability/statusを示す。status、path、token、event内容をlog/bundleへ保存しない。
prohibited permission requestが0であることを自動検証し、実装差分でcapability/entitlement/Info.plistが増えたらreview/CIで検出する。
受け入れ条件
prompt前説明と実際に要求するpermissionが一致し、不要なScreen Recording/Microphone/Camera/Input Monitoring requestが0件。
permission不要のCSV/JSON import、analysis、safe exportは全permission stateで利用できる。
deny/revoke/unknown状態ではnew native collectionが0件で、indicator、diagnostics、participant explanation、recovery actionが一致する。
revoke後に既存eventを消さず、resume/record開始は安全に止まり、System Settingsまたはimport-onlyへの導線がkeyboard/VoiceOverで操作できる。
日英、restart/sleep/relaunch、agent crash/permission changeで状態が古くならない。
clean packaged Macのpermission-denied/revoked E2Eが通る。
検証
capability matrix、TCC deny/revoke simulation、restart/sleep/agent reconnect、PII sentinel scan、locale/accessibility、entitlement/Info.plist diff、packaged E2E。
依存関係
#63 、#64 、#78 、#85 、#98 、#114 。project/consent scopeは #40 /#93 に従う。
PR運用
1 Issue = 1 branch / PR。permission inventory、実要求、fallback、テストMac/OS、残余riskをPR本文とparticipant-facing docsに記載する。
背景 / 現状
native recordingで必要となるmacOS capability/permissionは、初回prompt、拒否、System Settingsでの撤回、sleep/relaunch後まで一貫して説明・再評価されなければならない。現在はDiagnosticsの「取得しない」説明とrecording導線がある一方、TCC permission lifecycle、prompt前説明、deny/revoke時の安全なimport-first継続を一つのproduct contractとして所有していない。
目的
native recordingが必要とする最小権限を透明に扱い、拒否・撤回・未対応Macでもデータを失わず、CSV/JSON importだけで安全に業務分析を続けられるようにする。
対象
非対象
Claude Code実装契約
受け入れ条件
検証
capability matrix、TCC deny/revoke simulation、restart/sleep/agent reconnect、PII sentinel scan、locale/accessibility、entitlement/Info.plist diff、packaged E2E。
依存関係
#63、#64、#78、#85、#98、#114。project/consent scopeは #40/#93 に従う。
PR運用
1 Issue = 1 branch / PR。permission inventory、実要求、fallback、テストMac/OS、残余riskをPR本文とparticipant-facing docsに記載する。