安全性と守る方針
1. 外部通信ゼロ方針 (No-Network Policy)
原則
配布物、アプリ本体、依存ライブラリ、関連ツール、ビルド生成物のすべてにおいて、一切のネットワーク通信を行わない設計を義務付けます。
適用範囲と無効化措置
- 自動アップデート・更新確認: 実装禁止およびコンパイルオプションで除去。
- テレメトリ・クラッシュレポート・広告SDK: 配布物に含めない。
- オンライン辞書・Web検索・翻訳: 無効化。
- LibreOffice コンパイル時:
wininet,winhttp,curl,oauth2,updatefeedなどのネットワークモジュールをカスタムパッチおよびビルドフラグで完全カット。
検証
- 静的検査ツール
safety_scansによる API 走査。 - バイナリスキャン
binary_scan.pyによるWS2_32.dll/WININET.dllなどの通信 DLL リンク検出スキャン。
2. ファイル破壊・情報損失ゼロ (Data Protection & Non-Destructive Storage)
原則
異常終了、クラッシュ、電源断、権限エラーなどの異常系が発生した場合でも、ユーザーの PDF 原本やノート、注釈データを破棄・損壊させない設計にします。
安全機構
1. 原本非破壊: PDF 原本は読み取り専用で扱い、注釈は別ファイル .clrop に保存。
2. アトミック書き込み (run_atomic_write):
- 一時ファイル(.tmp)へ書き込み・検証を完了した後に、元のファイルへアトミック置換。
3. Stage ガード (_stage):
- 編集途中の状態を stage 領域に自動保存し、次回起動時に安全に自動復元・ロールバック可能。
3. 無音遵守 (Silent UI Policy)
原則
アプリから突然の音やビープ音を鳴らさない設計にします。入力エラーや警告は静かな視覚通知(ダイアログやステータス表示)で伝えます。
実装ルール
PlaySound、Beep、MessageBeepの使用を禁止。- メディアの自動再生を実装しない。
- Windows の「一般の警告音」が鳴る未解消の既知問題については、発生経路を特定して解消する(音量設定変更による回避は認めない)。