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

# Tasks — surface-entity-identification

Single-phase change. All work lands in one PR.

## Implementation

- [x] Add `apps/web/src/config/entity-identity.ts` — `EntityIdentity` type + `ENTITY_IDENTITY`
      constant. Confirmed: legal name, legal form, IDNO (`1026023043928`), administrator, contact
      email, controlling language. `to-verify`: registered office, VAT, IT Park residency. (D-SEI-1, D-SEI-3)
- [x] Rewrite `apps/web/src/app/[locale]/(marketing)/legal/imprint/page.tsx` — source every fact
      from the module; render the Art. 5 set in D-SEI-4 order; render `to-verify` fields via i18n
      pending strings; add the controlling-language notice; no `DraftWatermark`. (D-SEI-2, D-SEI-4, D-SEI-5)
- [x] Add the footer entity micro-line in `apps/web/src/components/footer/footer-grid.tsx` —
      legal name + IDNO read from the module, label from `common.footer.entity.idno`. (D-SEI-2)
- [x] Restructure `web.legal.imprint.*` in `packages/i18n/messages/{en,ru,ro}/web.json` to labels +
      pending strings + controlling-language notice (no entity values, no IDNO literal). (D-SEI-6)
- [x] Add `common.footer.entity.idno` to `packages/i18n/messages/{en,ru,ro}/common.json`. (D-SEI-6)

## Tests

- [x] Replace the imprint page test with assertions for: IDNO renders once from the module; each
      `to-verify` field renders its pending string (no fabricated value, no `"Republic of Moldova"`);
      controlling-language notice present; `mailto:` contact; no `DraftWatermark`.
- [x] Extend `footer-composition.test.tsx` — assert the entity micro-line renders legal name + IDNO.
- [x] Keep `legal-column.test.tsx` green (imprint link unchanged).
- [x] i18n smoke/parity stays green (top-level + leaf parity across en/ru/ro).

## Verify

- [ ] `pnpm --filter @rapoport-studio/web test`, `pnpm --filter @rapoport-studio/i18n test` green.
- [ ] `pnpm --filter @rapoport-studio/web typecheck`; `pnpm lint`.
- [ ] Static greps per `verification.md`.
- [ ] Browser preview: `/en/legal/imprint` shows the Art. 5 set + pending strings + notice; footer
      micro-line shows name + IDNO; spot-check `/ro/` + `/ru/`. Screenshots attached to PR.

## Follow-ups (separate PRs)

- [ ] Record the confirmed IDNO into `establish-studio-entity-baseline` Phase 2 + the
      `publish-legal-bundle` `[IDNO]`/`[address]` placeholders.
- [ ] File the Linear epic; reciprocate the URL into `proposal.md` Status.
- [ ] Archive: `git mv` to `openspec/archive/<date>-surface-entity-identification`, amend
      `openspec/current/home/blocks.md` Footer block, update refs (per `archive-openspec-change` skill).
