<!-- source: openspec/changes/publish-legal-bundle/proposal.md -->

# Publish Legal Bundle — public ToS + Privacy Policy + per-engagement DPA + sub-processor surface

> **Status:** proposed
> **Owner:** Pavel Rapoport <pavel@rapoport.studio>.
> **Linear epic:** [RAP-695](https://linear.app/rapoport-studio-slr/issue/RAP-695/publish-legal-bundle-public-tos-privacy-policy-per-engagement-dpa-sub) — 7 phase sub-issues: RAP-696 (Phase 2), RAP-698 (Phase 3), RAP-699 (Phase 4), RAP-702 (Phase 5 — counsel review, gate), RAP-704 (Phase 6 — site impl), RAP-705 (Phase 7), RAP-707 (Phase 8 — archive).
> **Opened:** 2026-05-13.
> **Affects capability specs (at archive):** `web.md`, `i18n.md`, `linkable-ui.md`. Spec-делт сюда не добавляем — публичный legal bundle живёт как операционная поверхность по образцу `_legal/`; на capability-level поднимаем отдельным change, если baseline стабилизируется.
> **Affects code:** `apps/web/src/app/[locale]/(marketing)/terms/page.tsx` (new), `apps/web/src/app/[locale]/(marketing)/privacy/page.tsx` (new), `apps/web/src/app/[locale]/(marketing)/sub-processors/page.tsx` (new), `apps/web/src/components/footer.tsx` (links под legal column), `apps/web/src/app/sitemap.ts` (3 новые записи), `packages/i18n/messages/{en,ru,ro}/web.json` (новый namespace `pages.terms.*`, `pages.privacy.*`, `pages.subProcessors.*`), `_legal/policies/terms-of-service.md` (источник правды для `/terms`), `_legal/policies/privacy-policy.md` (новый), `_legal/policies/dpa-template.md` (новый), `_legal/policies/ai-usage-policy.md` (upgrade v0.1 → v1.0), `_legal/policies/human-review-protocol.md` (новый), `_legal/vendors/` (обновление карточек + добавление `cloudflare.md`, `telegram.md`, `whatsapp.md`, `n8n.md`, `infisical.md`, `plausible.md`).
> **Blast radius:** средний. Контент-первый change: 3 публичные страницы на marketing site + per-engagement DPA-template + операционные политики. Не трогает БД, auth, public API, runtime критические пути. Юридическая значимость существенная — публикуем обязывающие документы; гейт = ревью лицензированного юриста (Moldovan commercial + EU privacy/AI counsel) перед merge финальной версии. До ревью документы помечаются `v0.1 draft — requires legal review`.
> **Capability prefix:** `LB` (Legal Bundle). Decisions ratify as `D-LB-N`; open questions as `Q-LB-N`.

---

## Почему

Студия достигла точки, где публичный legal surface стал блокером, а не «надо когда-нибудь».

1. **Footer уже показывает заголовок «Legal», но без ссылок.** [`apps/web/src/components/footer.tsx:77`](../../../apps/web/src/components/footer.tsx) — комментарий «no link entries until routes ship». i18n-ключи `legal.terms` и `legal.privacy` зарезервированы в [`packages/i18n/messages/en/common.json:22-26`](../../../packages/i18n/messages/en/common.json). Visitor видит обрезанный footer — каждый день это маленькая просадка в trust signal.
2. **Первый EU corporate engagement не закроется без подписанного DPA.** GDPR Art. 28(3) требует письменного controller→processor контракта на каждое взаимодействие, где студия обрабатывает PII клиента. Сейчас у студии нет ни одного исполненного клиентского DPA, и `_legal/vendors/anthropic.md` явно флагнул «отсутствие формального DPA» с самим Anthropic — это разрыв в processor-каскаде, который любой ответственный EU клиент закроет на этапе due diligence.
3. **Internal AI ops опередили external legal surface.** Forge/Maestro/Muse уже работают в production против клиентского кода (`openspec/current/platform.md`, `openspec/current/forge/`). У нас есть `_legal/policies/ai-usage-policy.md` v0.1 как internal-facing документ, но нет публичной hallucination/transparency disclosure, нет sub-processor list с Anthropic/OpenAI поимённо, нет EU AI Act role statement (Article 4 в силе с 2025-02-02, Article 50 — с 2026-08-02). Контракт без этих оговорок не защищает студию.
4. **Three-specialist research (2026-05-13) сошёлся на единой архитектуре.** Запущены три параллельных research-агента (Commercial Lawyer, AI Governance Counsel, Privacy/DPO). Все три независимо пришли к одному выводу: одной страницы `/terms` недостаточно — нужен **трёхдокументный bundle** (ToS + Privacy Policy + per-engagement DPA) плюс публичный sub-processor list. Отчёты приложены в `research/`.

---

## Что меняется

### 1. Документная архитектура — три артефакта + sub-processor list

| Артефакт | URL / форма | Что внутри | Обязательность |
|---|---|---|---|
| **Terms of Service** | `rapoport.studio/terms` (EN controlling; RU/RO mirrors) | Контрактный каркас (24 секции): scope, IP, liability, governing law, AI-disclosures, ссылки на остальные документы | Публичный, односторонний |
| **Privacy Policy** | `rapoport.studio/privacy` (EN controlling; RU/RO mirrors) | GDPR Art. 13/14 disclosures, cookies, retention, data subject rights — для случаев где студия = controller | Публичный, обязательный под GDPR/Moldova/Israel |
| **Data Processing Agreement (DPA)** | подписывается per engagement; шаблон в `_legal/policies/dpa-template.md` | GDPR Art. 28(3) processor-обязательства, SCCs (2021/914), sub-processor cascade, TOMs | Обязательный для каждого engagement с обработкой PII клиента |
| **Sub-processor list** | `rapoport.studio/sub-processors` (генерится из `_legal/vendors/`) | Таблица: вендор → данные → юрисдикция → transfer mechanism → DPA link | Источник правды, на который ссылаются ToS и Privacy Policy |

### 2. Операционные предпосылки — гейт перед публикацией

Контракт без этих пунктов = ложь. Каждый закрывается отдельным task'ом в `tasks.md`.

1. **AI usage policy v0.1 → v1.0** + задокументированное обучение персонала. Article 4 EU AI Act уже в силе.
2. **Human-review protocol** — письменный документ `_legal/policies/human-review-protocol.md`, описывающий review depth per deliverable type (код / written / plan). Контрактный hook для hallucination disclaimer и Article 50(4) editorial-control exemption.
3. **Executed vendor DPAs** (по приоритету): Anthropic → OpenAI → Supabase → Cloudflare → GitHub → Linear. Все на текущих 2025/2026 commercial terms.
4. **ZDR (Zero-Data-Retention) uplift** с Anthropic для чувствительных клиентских сегментов (legal/HR-adjacent) — roadmap item, не блокер v1.
5. **`legal@rapoport.studio`** mailbox — legal notices не должны идти на личный email.
6. **Analytics vendor lock-in: Plausible** (EU-hosted, cookieless) — отменяет необходимость cookie consent banner на marketing site.
7. **Vendor cards update** — добавить `cloudflare.md`, `telegram.md`, `whatsapp.md`, `n8n.md`, `infisical.md`, `plausible.md` под `_legal/vendors/`. Существующие шесть карточек (Anthropic / Supabase / Vercel / OpenAI / Linear / GitHub) пройти ревью на актуальность 2026-05-13 и подписать DPA.

### 3. Site implementation

- 3 новые route segments под `apps/web/src/app/[locale]/(marketing)/` — `terms/`, `privacy/`, `sub-processors/`. Каждая страница: server component, читает контент из `_legal/policies/*.md` (через build-time MDX или статический рендер — выбор в design.md).
- Footer ([`apps/web/src/components/footer.tsx:77`](../../../apps/web/src/components/footer.tsx)) — добавить три `<li>` со ссылками под `tFoot("legal.heading")` column. i18n-ключи `legal.privacy` и `legal.terms` уже зарезервированы; добавляем `legal.subProcessors`.
- `apps/web/src/app/sitemap.ts` — 3 новые записи во всех трёх локалях.
- `packages/i18n/messages/{en,ru,ro}/web.json` — новый namespace `pages.terms.*`, `pages.privacy.*`, `pages.subProcessors.*` для page-level UI (heading, last-updated, версия, language-switcher notice).

### 4. Counsel review gate

Финальный merge всех публичных документов происходит только после ревью двух типов counsel:
- **Moldovan commercial lawyer** (по recommendation Commercial counsel: scope, IP, liability, governing law).
- **EU privacy/AI counsel** (по recommendation Privacy + AI Governance: GDPR/DPA/AI Act).

До ревью документы помечаются `v0.1 draft — requires legal review` и могут быть запушены в репо как draft, но публикация на сайт гейтится через counsel sign-off.

### 5. Approved decisions (зафиксированы Pavel 2026-05-13, до открытия этого PR)

Pavel подтвердил все семь решений synthesis-этапа. Подробности в design.md `D-LB-1…D-LB-7`. Заголовки:

- **D-LB-1.** Трёхдокументная архитектура (ToS + Privacy Policy + DPA) + sub-processor page.
- **D-LB-2.** Governing law = Moldovan law + CICA Chișinău arbitration (English, 1 arbitrator < EUR 100k, 3 иначе); Chișinău state court для unpaid-invoice < EUR 10k.
- **D-LB-3.** Tiered liability cap: Bespoke Services = 100% engagement fees / EUR 5k floor; Tooling Access = 12 months fees / EUR 1k floor. Uncapped carve-out для нарушений GDPR Art. 28 в DPA.
- **D-LB-4.** IP indemnity = 2× super-cap общая; AI-output indemnity = sub-cap по fees за affected deliverable.
- **D-LB-5.** Analytics vendor = Plausible (EU-hosted, cookieless, без consent banner).
- **D-LB-6.** Sequencing: executable vendor DPAs first → потом параллельно Privacy Policy + DPA template + ToS → публикация всех трёх + sub-processor page одним релизом.
- **D-LB-7.** Counsel review: один Moldovan commercial + один EU privacy/AI counsel.

### 6. Amendment 2026-05-25 — counsel-gate scope narrowed (D-LB-7.v2)

**D-LB-7.v2 (amendment 2026-05-25, ratified Pavel).** Гейт counsel-review **сужен**: counsel sign-off требуется только для перевода frontmatter `_legal/policies/*.md` из `v0.1 draft — requires legal review` в `v1.0 counsel-reviewed`. Это означает:

- **Phase 6 (RAP-704) — UNGATED.** Route infrastructure (`/terms`, `/privacy`, `/sub-processors`), footer wiring, sitemap, i18n chrome, `<DraftWatermark>` component, build-time codegen для legal markdown — всё ship'ится без counsel. На `/terms` и `/privacy` рендерится prominent `<DraftWatermark>` banner с текстом "v0.1 draft — not legally binding, do not rely on. Final version publishes after counsel sign-off." `/sub-processors` — без watermark (рендер фактологии из `_legal/vendors/*.md`, не контрактное обещание).
- **Phase 7 (RAP-705) — GATED.** Один PR со swap'ом frontmatter (`version: 0.1` → `1.0`, `status: draft` → `counsel-reviewed`); `<DraftWatermark>` автоматически перестаёт рендериться, потому что читает frontmatter; публичный announcement.
- **RAP-704 unblocked from RAP-702.** Линейная зависимость "Phase 6 blocked by Phase 5 counsel" в Linear issue body уже неверна — переписывается одновременно с этим amendment.

Принцип: counsel-гейт стоит там, где документ становится обязывающим. Draft-страница с явным watermark — это honest disclosure ("we publish in the open; this is what we're drafting; final v1.0 after counsel"), не enforceable obligation. Гейт точечный, scheduling counsel больше не блокирует инфраструктуру.

---

## Вне рамок

- **Нанять и оплатить услуги counsel.** Бюджет и контрактование с юристами идут вне OpenSpec — этот change только подготавливает draft-материал для ревью и описывает gate, через который ревью замыкается.
- **Capability-level spec под `openspec/current/legal.md`.** Поднимем на spec-уровень отдельным change, когда public bundle переживёт хотя бы один внешний триггер (engagement подписан, supervisory authority запросил, инцидент). До тех пор `_legal/` остаётся операционной директорией (по аналогии с `_audit/`, `_finance/`).
- **MNDA / NDA шаблон.** Mutual NDA per engagement делается отдельным change-предложением после того, как DPA template стабилизируется.
- **Cookie consent banner UI.** D-LB-5 фиксирует Plausible, которое снимает потребность в banner. Если позже потребуется не-essential cookie (ремаркетинг, A/B и т.д.) — banner добавляется отдельным change.
- **DPF reassessment monitoring automation.** EU-US Data Privacy Framework под живым challenge в CJEU (Latombe appeal 31.10.2025; Schrems III в подготовке). Этот change фиксирует **SCC fallback в текущей версии DPA**; автоматизация мониторинга DPF-статуса — отдельная operational задача.
- **Telegram alternative для EU corporate clients.** Если EU corporate client откажется от Telegram canvas surface из-за joint-controller flag — отдельный change на migration к email/in-platform alternative.
- **Локализация юридического содержания на RU/RO.** EN — controlling. RU/RO mirrors производятся профессиональным переводчиком после counsel sign-off на EN; **не AI-переводом** на этом этапе (юр. термины не толерантны к LLM hallucination).
