<!-- source: openspec/changes/surface-entity-identification/proposal.md -->

# Proposal — surface-entity-identification

> Status: Phase 1 — implementation. Linear: to be filed (epic under "Rapoport Studio SLR").
> Siblings it consumes from:
> - [`establish-studio-entity-baseline`](../establish-studio-entity-baseline/) — owns the
>   registration triplet (IDNO, registered office, registration date). This change consumes the
>   **confirmed IDNO** and surfaces it publicly; it does not author the entity-baseline methodology.

## Why

The studio operates as **Rapoport Studio SRL**, a Moldovan limited-liability company with a
confirmed IDNO (`1026023043928`). That identity is **not legible** on the public site:

- The `/legal/imprint` page is a hand-authored stub. Its facts (name, address, register number)
  are hard-coded strings inside i18n, the address is the vague `"Republic of Moldova"`, and the
  register line reads `"pending MITP registration closure"` — even though the IDNO is now issued.
- There is **no single source** of entity facts. Each surface that needs the legal name or IDNO
  would re-type it, inviting drift.
- The footer carries **no entity line at all** — a visitor cannot see who operates the site
  without navigating into the legal section.
- The page omits most of the EU e-commerce **Art. 5** identification set (legal form, registration
  number, legal representative, VAT status, controlling language).

EU/Moldova service providers are expected to disclose a defined identification set (Directive
2000/31/EC Art. 5; Moldova mirrors this for e-commerce operators). A counterparty doing light due
diligence should be able to confirm the studio's legal identity in seconds from the footer, and in
full from one page — **without the studio inventing any fact it has not confirmed**.

## What changes

- **Add** a single source-of-truth module `apps/web/src/config/entity-identity.ts` exporting an
  `EntityIdentity`. Confirmed facts (legal name, legal form, IDNO, administrator, contact email,
  controlling language) carry values; unconfirmed facts (registered office, VAT number, IT Park
  residency) carry a `{ status: "to-verify" }` marker. The IDNO literal lives **only** here.
- **Rewrite** `/legal/imprint` to source every fact from that module, render the Art. 5 field set
  in a defined order, render unconfirmed fields as honest **pending** strings (never fabricated,
  never blank), and add a controlling-language notice. No `DraftWatermark` — this is fact, not a
  draft contract.
- **Add** a footer entity micro-line (bottom strip) reading the legal name + IDNO from the module.
- **Update** i18n: restructure `web.legal.imprint.*` to carry labels + pending phrasing +
  controlling-language notice (no entity values, no IDNO literal); add `common.footer.entity.idno`.
  Three locales (en/ru/ro), RO controlling.

## Out of scope

- Recording the confirmed IDNO into `establish-studio-entity-baseline` Phase 2 and the
  `publish-legal-bundle` placeholders — owned by those changes (noted as follow-ups).
- Authoring public ToS / Privacy / DPA copy — owned by `publish-legal-bundle`.
- Any homepage-hero entity block, trust badges, seals, or certification imagery — explicitly excluded.
- VAT registration, IT Park residency, and registered-office disclosure — gated on registration
  milestones; surfaced as honest pending state until confirmed.

## Impact

- Capability spec: `openspec/current/home/blocks.md` Footer block gains the entity micro-line note
  (applied at archive time).
- Surfaces: `/legal/imprint` (all locales) and the global footer.
- No new dependencies. No secrets. No schema changes.
