Componentes
82. CONTRATO MM1 — o piso de traço em milímetros, por ALVO DE PASTA
seed-componentes.md v1.43 · §82seção 88 de 9882-contrato-mm1-o-piso-de-traco-em-milimetros-por.md · MD5 18e1e0fdTítulo completo no canon: 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:
<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".
- 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).
- 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-widthdeclarado. ⚠ CSS que sobrescreva ostroke-widthpassa 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:
- 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).
- 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
50pxpara59px— mudaria a composição aprovada. - Sangria e margem protegem coisas diferentes. A fixture
e1prova: 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.