Skip to content

[P0][Privacy][Export] activity・app・手動labelの外部共有分類と小標本再識別抑止を導入する #133

Description

@tuzuminami

背景 / 現状

#76がraw title/URL/aliasを除去しても、activity、application name、manual label、variant名、自由入力のrule結果は、顧客名・人名・案件名・機微な業務名を含み得る。少数case、rare variant、極端なduration、時刻範囲と組み合わせると、外部共有したCSV/Markdown/Mermaid/LLM handoffから個人や案件を再識別できる。

「rawではないから安全」ではなく、外部共有してよい表示文字列と粒度を明示的に判断する必要がある。

目的

local analysisの可読性を保ちつつ、外部へ保存・共有するartifactでは、表示値のshareability分類、small-cell/rare-path抑止、scope確認を必ず適用する。LLMへ送信は実装せず、手動handoffを含む全external-share profileを安全にする。

対象

  • activity、app name、manual/rule label、variant/finding/evidence表示値のshareability classification
  • local-only分析表示とexternal export profileの分離
  • unknown/unreviewed/confidential classification、block/warning/review flow
  • minimum group-size、rare variant/path、unique timestamp/duration、small projectのsuppression/generalization
  • CSV/JSON/Markdown/Mermaid/draw.io/report/deliverable ZIP/LLM handoffの同一外部共有policy
  • project/filter/provenance/consent/purpose/retentionとの照合、日英・accessibility・receipt

非対象

  • LLM/API key、external upload、cloud DLP、個人の自動識別
  • raw PII detectionが完全であるという保証
  • local analysisから必要なactivityを一律削除すること
  • #76のraw field minimization、#89のformat escape、#127の保存先policyそのもの

Claude Code実装契約

  1. external exportは「local display allowed」と「external-share allowed」を分ける。classificationがunknown、unreviewed、confidential、stale、scope外、consent/purpose不一致なら、actual artifactを生成せず理由と解決先を示す。
  2. activity/app/labelをrawとみなさず自動で安全扱いしない。source/provenance、manual/rule authoring、classification version、review time、reason codeをprivacy-safeに記録し、自由文のreview reasonは保存しない。
  3. low-count group、unique/rare variant、single participant-like path、非常に狭い時刻/duration bucketはexport profileごとのminimum thresholdに従ってsuppress/generalize/aggregateする。threshold未達を0件やcomplete evidenceに見せない。
  4. previewと実export/ZIP/manifest/receiptは同じ disclosure-control resultを使う。suppressed count/reason、scope/filter、policy version、coverage/limitationを含めるが、抑止前の値、case/user/source ID、internal path、secretは出さない。
  5. userはUIでexternal-share profileと影響を確認できるが、warningを一回クリックで恒久bypassしない。overrideを許す場合はscope、duration、typed confirmation、receipt、policy authorityを明示し、[P0][Consent] versioned consent receipt・purpose limitation・withdrawalをデータmodelへ追加する #93/#127に従う。
  6. #126のmanual Mermaid handoffでは、観測事実と仮説の区別に加え、対象dataがexternal-share profileを満たすことを保存前に再検証する。OpsMineFlow自身は外部LLMへ送信しない。
  7. classification/suppressionはproject isolation、rule version、analysis revision、filter、undo/redo、backup/restore、deleteと整合させ、stale結果を共有可能として扱わない。

受け入れ条件

  • customer/person/secret sentinelをactivity/app/manual/rule labelに置き、unknown/unreviewed/confidential状態で全external exportとLLM handoffがblockされ、UI/receipt/diagnosticsに生値が出ない。
  • rare variant、single-case、small project、unique time/duration fixtureで、profileのthresholdに従うsuppress/generalize/aggregateとreason-coded coverageがpreview・artifact・receiptで一致する。
  • local analysis表示を必要以上に壊さず、非エンジニアがUIだけで分類→impact review→safe exportまたはblocked recoveryを日英/keyboard/VoiceOverで完走できる。
  • project switch、stale rule/analysis/filter、withdrawn consent、tampered/stale profile、cancel/retryで外部artifactを作らず、既存dataを変えない。
  • raw/suppressed value、case/user/source ID、internal path、secretがCSV/JSON/Markdown/Mermaid/draw.io/ZIP/manifest/support bundleに0件。

検証

classification/suppression decision table、rare/small-cell/property tests、PII sentinel scan、all-format golden、scope/consent/provenance/stale-revision matrix、accessibility/i18n、packaged E2E、no-network check。

依存関係

前提: #40#76#89#93#99#100#118#122。連携: #44#50#51#64#86#94#119#126#127#128

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:exportExports and LLM handoff artifactsarea:governanceOSS governance, docs, and release policyarea:privacyPrivacy, consent, retention, and data minimizationarea:uxNon-engineer user experiencepriority:P0Release blockerrelease:v1.0Targeted for OpsMineFlow v1.0.0

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions