ADRs
ADR 0080 — Marca: the brandbook-PDF import module (naming + code↔UI split)
  • Date: 2026-08-05
  • Status: Accepted
  • Builds on: ADR 0059 (Italian / Renaissance naming chord), ADR 0063 (Studio tools as reusable @arno/* packages), ADR 0052 (Sorgente shared-DB Brand surface), ADR 0060 (docs ↔ code separation).

Context

A new capability lands on the Sorgente Brand tab: import a brandbook PDF and turn its colors, font families, and font sizes into BASE Sorgente tokens after a review + Confirm (requirements/marca.md). Two decisions need a record.

  1. Naming. The module needs a name. Arno's Studio tools follow the Italian / Renaissance chord (ADR 0059): punta, dito, passo, tela, quadro, albero, rotta, compasso. A brandbook-import module named brandbook-import (or brand-import, pdf-import) would read as drift — a generic English name in a chord of Italian ones, exactly the "looks like an oversight" failure ADR 0059 calls out.

  2. Code name vs UI label. The user-visible surface already exists and is called "Brand" (ADR 0052). Renaming the tab to an Italian word would break a familiar surface for zero user benefit. So the code name and the UI label must be allowed to differ, on the record, so a future contributor does not "fix" the mismatch in either direction.

Decision

1. The module is named Marca

Marca = Italian brand / mark. It clears the ADR 0059 four-point checklist:

  • Italian noun, short, concrete — 5 letters; a brand is a mark.
  • Lexically unique enough in-contextmarca + arno is not dominated by an unrelated brand; it slots cleanly beside the existing tool namespace (Sorgente / Punta / Tela / Rotta / Marca).
  • Metaphor transparent without footnote — "marca = the maker's mark; the tool that imports a brand's marks (colors, type) into the system." One sentence.
  • Not a generic English replacement — it is not brand, import, core, source, panel.

It is not cargo-culting (the ADR 0059 risk): marca is the metaphor (the mark a maker leaves), not a literal translation of a UI noun the way "bottone" would translate "button".

The code ships as packages/marca/ (@arno/marca), a reusable Studio-tool package per ADR 0063.

2. marca (code) ↔ "Brand" (UI) is an intentional split

The code name is marca / @arno/marca everywhere in the source, package graph, docs, and this ADR. The user-visible label stays "Brand" — the tab title, section headings, and any user-facing string. No product surface reads "Marca".

This is consistent with ADR 0060 (docs ↔ code separation): internal identifiers and user-facing copy are allowed to diverge, and the divergence is documented rather than left as apparent inconsistency. A contributor seeing @arno/marca render under a "Brand" tab should read this ADR, not file a rename.

Rules.md § Naming chord is a prose mirror of ADR 0059 and is outside the /build agent write-scope; the one-line "Marca — brand/mark" addition there is flagged for the maintainer to mirror post-merge. This ADR is canonical.

Consequences

Positive

  • The tool namespace stays a coherent Italian chord (ADR 0059 held).
  • No user-facing churn — "Brand" is untouched; the split is invisible to users.
  • Reuse is explicit: @arno/marca depends on @arno/punta and consumes the Google-Fonts catalogue base (loadFontCatalog / filterFonts / ensureFontLoaded) rather than copying it (ADR 0063 reuse intent).

Negative

  • One more code-name ↔ UI-label pair a contributor must learn (mitigated by this ADR + packages/marca/_index.md).
  • Rules.md prose needs a one-line mirror the agents cannot write themselves — tracked as a post-merge maintainer chore.

Neutral

  • The licensed-font upload subsystem is frozen (requirements/marca.md § Deferred / Frozen); un-freezing it does not touch this naming decision.

Alternatives considered

  • brandbook-import / brand-import. Rejected — generic English, breaks the ADR 0059 chord.
  • Rename the UI tab to "Marca". Rejected — churns a familiar surface (ADR 0052) for no user benefit; ADR 0060 already permits a code↔UI split.
  • Fold the code into apps/web/src/features/marca/. Rejected — ADR 0063 makes reusable Studio tools @arno/* packages; the module reuses @arno/punta and warrants the same layout.

References

  • ADR 0059 — Italian / Renaissance naming chord.
  • ADR 0063 — Studio tools as reusable packages.
  • ADR 0052 — Sorgente shared-DB Brand surface.
  • ADR 0060 — docs ↔ code separation.
  • requirements/marca.md, packages/marca/_index.md, docs/marca/.