---
fonte: 01-canonicos/seed-componentes.md
versao_da_fonte: v1.43
secao: 82
titulo: "CONTRATO MM1 — o piso de traço em milímetros, por ALVO DE PASTA · **`estável`** (2026-08-22, décima oitava parte) · instrumento `validacao/guarda-piso-mm.py` · canon `marca-seed.md` **§7.4-c (v5.8)**"
sequencia: 88 de 98
bytes_do_corpo: 9028
md5_do_corpo: 18e1e0fd723b7074d7313d7d64024c73
gerado_por: 06-validacao/geradores/gen-camada-ia.py
nota: fatia GERADA — o corpo abaixo é byte a byte o trecho do canônico; edite o canônico, nunca esta fatia. Canônico inteiro em https://ds.seed.eng.br/01-canonicos/seed-componentes.md
---
## 82. CONTRATO MM1 — o piso de traço em milímetros, por ALVO DE PASTA · **`estável`** (2026-08-22, décima oitava parte) · instrumento `validacao/guarda-piso-mm.py` · canon `marca-seed.md` **§7.4-c (v5.8)**

> **Para quem lê isto sem o resto:** o **§76** especifica o grafismo (a serra de 3–4
> planos de linha que assina as peças); o **§77** o contrato **GR1**, que mede área,
> véu do glifo e faixa **pelo PIXEL**; o **§80** o **piso de traço em milímetros**
> que o decisor aprovou; o **§81** a medida física do cartão. Esta seção é o
> **instrumento** que faz o piso do §80 valer sem depender de alguém lembrar.

### 82.1 O que ele julga

| cláusula | exige | de onde vem o número |
|---|---|---|
| **MM1-a** | traço mais fino **≥ 0,25 mm** | **canon §7.4-c** — veredito *"saída B"* |
| **MM1-b** | a razão do **alvo físico declarado** casa com a razão em **px** (tol. 1%) | coerência interna do artefato — tolerância de **instrumento** |
| **MM1-c** | a cena tem **≥ 3 pesos DISTINTOS** | **canon §7.1 ③** + **§7.3** (serra-cena = 3–4 planos) |
| **MM1-d** | arquivo de **PRODUÇÃO** declara sangria **≥ 3 mm** | **canon §7.4-e** (v5.10) |
| **MM1-e** | conteúdo a **≥ 3 mm** da linha de corte | **canon §7.4-e** (v5.10) |

**Saída:** placar `PASS / FAIL / [n/a]` por cláusula, `COBERTURA: n de n`, JSON
opcional (`JSON=…`) e **exit code** (0 = sem FAIL). ⚠ *Confira o exit code: o 48º
defeito desta casa foi um placar de texto completo com o JSON derivado morrendo em
silêncio.*

### 82.2 A decisão de arquitetura — e ela é o coração da seção

**Quem é peça impressa é decidido pelo que o ARTEFATO DECLARA:**

```html
<meta name="alvo-fisico" content="90x50mm">
```

Escrito pelos geradores nas peças físicas. A guarda lê isso do arquivo. **Nenhuma
lista de nomes, nenhum filtro por prefixo.**

⚠ **Por que isso é regra e não estilo:** filtro por nome de arquivo tem a
**aparência** de alvo de pasta e é a origem documentada de dois defeitos deste
projeto — o **42º** (filtro por prefixo deixou **17 de 51** arquivos nunca medidos) e
o fechamento da **BT-P2** (declarado sobre **dez** artefatos num acervo de **trinta e
quatro**). **Peça sem a declaração sai `[n/a]` NOMEADO, nunca PASS:** peça de tela
não tem milímetro, e inventar alvo físico para ela seria pior que não ter.

### 82.3 Por que três cláusulas e não uma — as fixtures provam

| fixture | o que ela é | resultado |
|---|---|---|
| `mm-b1-FALHA-alvo-incoerente` | alvo físico **mentiroso** (210×297mm numa peça 1062×590px) | **passa o piso com 0,583 mm** e falha MM1-b. *O milímetro sai errado e nada parece errado* |
| `mm-c1-FALHA-hierarquia-grampeada` | o **GRAMPO** — a saída que o decisor recusou | **passa** MM1-a e falha MM1-c: 4 planos, 2 pesos. *MM1-a sozinha salvaria o número e perderia o desenho* |
| `mm-a3-BORDA-exatamente-no-piso` | 0,2500 mm **cravado** | **PASS** — o piso é **inclusivo** |

Pasta de prova: `render-audit/prova-mm/` (gerador `validacao/gen-prova-mm.py`),
**7 fixtures, uma cláusula por fixture**, com o veredito peça-por-peça impresso
**antes de o instrumento existir**. Placar de referência: **13 PASS · 3 FAIL ·
5 [n/a]**. ⚠ *Este placar é CONTRATO: se ele mudar sem uma fixture ter mudado, a
guarda regrediu.*

### 82.4 O que a estreia achou — inclusive um defeito real do gerador

A primeira execução **reprovou em bloco** as 3 peças de cartão aprovadas e a pasta
A4. ⭐ *Régua da casa, aplicada pela sexta vez: quando uma régua nova reprova em
bloco, a primeira hipótese não é "o acervo está ruim", é "a régua está medindo outra
coisa".*

1. **Defeito da RÉGUA:** MM1-c exigia "pesos distintos == número de FORMAS". **A
   serra real tem 5 formas para 4 planos** — a linha da frente entra e sai da peça em
   segmentos, e dois segmentos compartilham o peso do mesmo plano. Corrigido para
   **≥ 3 pesos distintos** (canon §7.3).
2. **Defeito do GERADOR, e é real:** na pasta A4 (11,80952 px/mm) o piso vale
   2,95238 px e `round(...,2)` devolvia **2,95 px = 0,24980 mm** — **abaixo do
   canon por 0,0002 mm**. Corrigido: o **menor** peso arredonda para **CIMA**.
   *Piso violado por arredondamento é piso que não existe.* Virou esclarecimento
   normativo no canon **v5.8**.

⚠ **Quem achou o defeito 2 foi a guarda, na primeira vez que rodou** — o
`mede-traco-mm.py` rodado à mão imprimia "0,250 mm" arredondado e ninguém veria.
*É o argumento inteiro a favor de instrumento sobre conferência à mão.*

### 82.5 Estado do acervo

| pasta | MM1 | leitura |
|---|---|---|
| `gate-z3/largos` | **9 PASS · 0 FAIL · 6 [n/a]** | 3 cartões medidos; banner e capa são tela |
| `gate-z3/formatos` | **3 PASS · 0 FAIL · 18 [n/a]** | só a pasta A4 é impressa nesta família |
| `gate-montanha` | **0 PASS · 0 FAIL · 18 [n/a]** | tudo tela — e isso é o certo |
| `gate-mr9/br-90x50` | **0 PASS · 0 FAIL · 15 [n/a]** | ⚠ gerado antes de a meta existir (**MM-P1**) |

### 82.6 Fronteira declarada

- **Não renderiza.** Lê o `stroke-width` **declarado**. ⚠ *CSS que sobrescreva o
  `stroke-width` passa invisível; nenhum gerador desta casa faz isso hoje, e se
  passar a fazer, a cláusula tem de virar medição de pixel.*
- **Não exige DPI mínimo** — não existe piso de resolução no canon (§0-b). O DPI é
  **diagnóstico**.
- **Não julga aparência** e **não sabe qual processo a gráfica usa** (isso é o
  diagnóstico do `mede-traco-mm.py`, contra pisos de mercado).
- **Não há folha de conferência**, de propósito: o produto é placar e exit code.
  *Folha existe quando há aparência a julgar.*

### 82.7 Pendências

- **MM-P1 (nova)** — varredura de quais artefatos do acervo são fisicamente
  impressos e **não declaram** alvo físico. Hoje eles saem `[n/a]`, o que é honesto
  mas não é cobertura.
- **MR-P10** — **sangria**, com decisão dele pendente.

### 82.8 As duas cláusulas da SANGRIA — MM1-d e MM1-e (novas na v5.10)

**A regra que elas fazem valer** é o canon **§7.4-e**: em peça impressa, **3 mm de
sangria** e **3 mm de margem de segurança**, com a composição definida para a **área de
corte** e a sangria como **crescimento para fora** — os dois vereditos dele,
`"acredito que 3+3"` e `"deixar o desenho dentro da area real, e a parte da sangria vc
cresce o desenho"`.

**O que muda no consumo, e é a parte que o time precisa saber:**

| tipo de arquivo | tamanho | quem mede | declara no artefato |
|---|---|---|---|
| **GATE** | área de corte | **GR1** (área · véu · faixa) e o olho do decisor | `papel=gate` |
| **PRODUÇÃO** | corte + 3 mm | **MM1-d** e **MM1-e** | `papel=producao` · `corte-px` · `sangria` |

⚠ **Nunca coloque um arquivo de produção na pasta de gate.** A GR1 mediria a tela com
sangria (razão 1134/662 = 1,713), que não casa com nenhum teto da §7.4, e devolveria
`[n/a]`. *Defeito que não é defeito, produzido por medir a coisa certa no lugar errado.*

**Como se gera o arquivo de produção:**

```
PRODUCAO=1 DEST_LARGOS=producao/cartao-90x50 python3 validacao/gen-z3-largos.py
```

⚠ **Peça de TELA é PULADA** nesse modo, e com aviso impresso: *peça de tela não tem
corte nem sangria, e escrevê-la ali criaria um arquivo que parece de gráfica e não é.*

**Três coisas medidas que valem como regra de consumo:**
1. **A sangria em px arredonda para CIMA** (3 mm × 11,8 = 35,4 → **36 px = 3,05 mm**).
   *Sangria curta é sangria que não existe* — mesma regra do piso de traço (§7.4-c).
2. **O layout aprovado cabe em 3 mm sem mexer:** conteúdo a **4,24 mm** do corte,
   folga de 1,24 mm. Contra 5 mm faltariam 0,76 mm e o conteúdo teria de ir de `50px`
   para `59px` — **mudaria a composição aprovada**.
3. **Sangria e margem protegem coisas diferentes.** A fixture `e1` prova: sangria
   correta **e** conteúdo a 2,03 mm do corte → passa MM1-d e **falha MM1-e**.
   *Sangria evita fio branco; margem evita nome decepado.*

⚠ **Defeito de instrumento registrado:** a primeira versão da MM1-e reportava a
**própria linha de corte** como "o conteúdo mais perto do corte" — a 3,05 mm — e
**passava por acidente**, escondendo a distância real do texto. *Régua que mede a si
mesma sempre passa.* Corrigido: `.corte` e `.card` são moldura, não conteúdo.

### 82.9 Fronteira nova: peça com DOBRA não está coberta

**`MR-P12`.** Peça com **aba, vinco ou furo** tem margem própria — a fonte pesquisada
dá, como exemplo, **15 mm** no lado da espiral em encadernação wire-o. A **pasta A4 com
aba** é o primeiro caso do acervo e **não existe como arquivo de produção**: o que
existe é uma face plana a 300 DPI, marcada `papel=gate`. *Medir dobra é frente nova, e
depende de ele decidir se a pasta vira arquivo de produção.*

---

