V37 Gate 7: Conversation Persistence Privacy#117
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
a99c89d to
5d02a61
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a99c89d249
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (PROTECTED_CONTEXT_RE.test(redacted)) { | ||
| redactionApplied = true; | ||
| redacted = redacted.replace(PROTECTED_CONTEXT_RE, '[redacted:conversation-persistence-protected-context]'); |
There was a problem hiding this comment.
Redact every protected-context match in persisted text
redactConversationPersistenceText only replaces the first protected-context match because PROTECTED_CONTEXT_RE is used without a global replacement path. If a message contains multiple protected markers (for example both raw prompt and later protected source segments), only the first marker is masked and subsequent protected segments remain in the stored payload, which weakens the privacy guarantee this gate introduces.
Useful? React with 👍 / 👎.
| const retentionPosture = | ||
| visibilityTier === 'operator_only' | ||
| ? 'operator_audit_only' | ||
| : visibilityTier === 'organization_visible' | ||
| ? 'durable_organization_visible' | ||
| : visibilityTier === 'buyer_visible' | ||
| ? 'buyer_rights_visible' | ||
| : visibilityTier === 'reviewer_visible' | ||
| ? 'reviewer_limited_visible' | ||
| : 'durable_user_visible'; |
There was a problem hiding this comment.
Map
public visibility to ephemeral retention posture
buildConversationPersistenceEnvelope accepts visibilityTier: 'public' but falls through to 'durable_user_visible' because the retention mapping omits a public branch. This produces durable retention metadata for a tier that should be route-local/ephemeral (as already modeled in the UI helper), so any caller that sets public will emit the wrong persistence policy in envelope proofs and downstream audits.
Useful? React with 👍 / 👎.
Adds package-owned ConversationPersistencePrivacyRedaction canon source and generated artifact. Redacts conversation message content, attachment metadata, and execution payloads before durable storage. Wires source-safe persistence privacy UI, tests, docs, and gate/canon workflow validation.
5d02a61 to
ca3154c
Compare
Summary
Validation