Repository navigation
docs(legal): privacy section for the data assistant preview - #12208
Merged
Merged
Conversation
Describe the admin-only "use with my data" chat on the legal page: model provider and region (Claude via Vertex AI, EU), in-memory sessions, the content-free pseudonymous telemetry (180 days, europe-west4), the HMAC-keyed attribution lines (30 days), feedback cases (files 180 days, row until asked), a legal basis per purpose, a processor row, and a no-personal-data hint. Separate browsing the catalogue from using the assistant in the "no ai training" bullet. Pin the new claims in LegalPage.test.tsx and point the telemetry reference at the new section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GdMSqLR5ww4ji74EUSmk9M
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GdMSqLR5ww4ji74EUSmk9M
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The disclosures overstate session-data expiry and what the feedback CSV opt-out excludes.
2 open findings
What changed in this PR
Adds privacy disclosures for the data assistant preview alongside the existing catalogue policy.
Changes:
- Documents model processing, retention, telemetry, feedback cases, and legal grounds.
- Updates processor information and deletion rights.
- Adds disclosure tests and aligns telemetry documentation.
| File | Description |
|---|---|
| docs/reference/agent-telemetry.md | Links telemetry documentation to the legal disclosures. |
| changelog.d/legal-ai-assistant.md | Records the privacy policy update. |
| app/src/pages/LegalPage.tsx | Adds assistant disclosures and updates existing claims. |
| app/src/pages/LegalPage.test.tsx | Checks the new privacy wording. |
🧠 Review effort: Balanced
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
…and profile sample Owner addition: the assistant part opens with a scope line (only if you use the data assistant; browsing is unaffected), and the processor row says "only when you use the data assistant". Copilot findings: name the renderer's in-memory cache of its last 16 results, which has no idle timer, and say that unticking "# include data.csv" leaves out that file only, while the profile sample (first 5 rows), the conversation, the code and the images stay in the case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GdMSqLR5ww4ji74EUSmk9M
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
This PR adds an "only if you use the data assistant (preview)" part to the privacy section of the legal page. It describes the admin-only "use with my data" chat as a preview, so the text stays correct the day the chat opens.
Opens the part with a scope line (owner addition of 2026-10-16): everything in it applies only to people who use the assistant, and readers who only browse the catalogue aren't affected. The processor row and the table intro say the same.
Adds the model provider and region, the session lifetime, the usage telemetry, the attribution lines, the feedback cases, a legal basis per purpose, and a hint not to paste personal data you aren't allowed to share.
Adds an "ai assistant" row to the processor table and names the assistant's region in the table's intro.
Splits the "no ai training" bullet: browsing the catalogue keeps the old claim, and the assistant is named as the one place where input reaches a model.
Limits the data controller's "the ground for all of it is legitimate interest" to the site itself, because the assistant now names its own grounds.
Extends "your rights" to assistant feedback cases, including early deletion through the existing admin@ line.
Pins the new claims in
app/src/pages/LegalPage.test.tsx, and replaces the "page stays unchanged for now" paragraph indocs/reference/agent-telemetry.mdwith a pointer to the new section.Claims and their sources
api/routers/agent.pyroutes under/debug/agent, gated byrequire_admin_identity(api/routers/debug.py)agents/anyplot/settings.py(provider="anthropic-vertex",location="eu");agents/cloudbuild.yaml(AGENT_LOCATION=eu,_PROVIDER: anthropic-vertex); live service env checked withgcloud run services describe anyplot-agentsagents/main.py(InMemorySessionService);agents/anyplot/settings.pysession_idle_s = 3600, not overridden inagents/cloudbuild.yamlagents/renderer/main.pyDONE_CACHE = 16,_forget(no time-based expiry)docs/reference/agent-telemetry.md("What is recorded");agents/anyplot/telemetry.py(extra="forbid", closed sets)agents/anyplot/plugins/ledger.pySESSION_SALT,salted;docs/reference/agent-telemetry.md("Session hash", "No user id")docs/reference/agent-telemetry.md("Where the lines go");gcloud logging buckets listshows theeurope-west4bucket with 180 days and theagent-telemetrysinkapi/routers/agent.pyderive_user_id(HMAC-SHA256 underAGENT_USER_ID_KEY);agents/anyplot/plugins/ledger.pyattribution; 30 days is the existing server-log claim (_Defaultbucket, 30 days)api/routers/agent.pysubmit_feedback;app/src/sections/agent-chat/ResultFeedback.tsx,ChatFeedback.tsxagents/main.pybundle(transcript, profile, bindings, PNGs, code);api/agent_cases.pymodule docstringagents/anyplot/data/parse.py(sample=rows[:MAX_SAMPLE_ROWS]);agents/anyplot/schemas.pyMAX_SAMPLE_ROWS = 5app/src/sections/agent-chat/ResultFeedback.tsx(useState(... ?? true));api/routers/agent.pyFeedbackBody.include_data(required, strict bool);api/agent_cases.py(the manifest keeps the bundle, profile included, whateverinclude_datais)api/agent_cases.pydocstring;gcloud storage buckets describe gs://anyplot-agent-cases(EUROPE-WEST4, delete rule at age 180)core/database/models.pyAgentFeedback(reaction,message,user_hash,spec_id,library_id,model, ...);docs/reference/database.md("the row stays")/debug/agentNo existing claim was dropped. Two were narrowed on purpose, both because they would otherwise be false once the assistant is described:
Testing
yarn lint,yarn fm:check,yarn type-check,yarn build: pass.yarn test: 1161 of 1162 pass.DataPanel.test.tsx"asks before it replaces text in the box" failed once under full-suite load and passes three runs in isolation. It's unrelated to this change.uv run python -m tools.changelog check --base origin/main: pass./legalon the production build (vite preview) with Playwright: desktop 1280 px in light theme and mobile 375 px in dark theme. There's no horizontal scroll, and the new table row wraps cleanly. The console errors come only from the missing local API and from font CORS on localhost.🤖 Generated with Claude Code
https://claude.ai/code/session_01GdMSqLR5ww4ji74EUSmk9M