{"ok":true,"generated_at":"2026-07-15T01:12:44+00:00","about":"SoftCalc — base escrita de conhecimento técnico. source\/source_kind identificam a origem técnica; author_type\/author_name\/change_note assinam a revisão atual; versions preserva o histórico imutável. Regras com \"machine\" são verificadas pelo TypologyAdvisor (audits abaixo). UI: \/knowledge. calibration_flags = dados imprecisos por tipologia aguardando medição real (pendente\/calibrado).","rules":[{"id":"correr-canaletas-iguais","scope":"correr","title":"Trilho sup\/inf com o MESMO nº de canaletas — janela","body":"Janela de correr: 2 folhas → trilho de 2 canaletas (SU-001 superior + SU-002 inferior); 3 folhas → 3 canaletas (SU-010 superior + SU-011 inferior). Nunca misturar. O trilho inferior de PORTA é o SU-230 (ver regra de porta).","severity":"erro","status":"validado","source":"Revisão do Rhuan — doc\/lesson\/knowledge\/typology-rules.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":{"check":"paired_refs","pairs":[["SU-001","SU-002"],["SU-010","SU-011"]],"labels":{"SU-001":"trilho superior 2 canaletas","SU-002":"trilho inferior 2 canaletas","SU-010":"trilho superior 3 canaletas","SU-011":"trilho inferior 3 canaletas"},"applies":{"door":false,"kind":["sliding"],"line":["Suprema"]}},"technical":{"view":"","application":"","parts":["SU-001","SU-002","SU-010","SU-011","SU-230"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/lesson\/knowledge\/typology-rules.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":0,"updated_at":"2026-07-08 12:57:49","versions":[{"rule_id":"correr-canaletas-iguais","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-canaletas-iguais","body":"Janela de correr: 2 folhas → trilho de 2 canaletas (SU-001 superior + SU-002 inferior); 3 folhas → 3 canaletas (SU-010 superior + SU-011 inferior). Nunca misturar. O trilho inferior de PORTA é o SU-230 (ver regra de porta).","scope":"correr","title":"Trilho sup\/inf com o MESMO nº de canaletas — janela","source":"Revisão do Rhuan — doc\/lesson\/knowledge\/typology-rules.md","status":"validado","enabled":1,"machine":{"check":"paired_refs","pairs":[["SU-001","SU-002"],["SU-010","SU-011"]],"labels":{"SU-001":"trilho superior 2 canaletas","SU-002":"trilho inferior 2 canaletas","SU-010":"trilho superior 3 canaletas","SU-011":"trilho inferior 3 canaletas"},"applies":{"door":false,"kind":["sliding"],"line":["Suprema"]}},"revision":1,"severity":"erro","technical":null,"sort_order":0,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-canaletas-iguais-porta","scope":"correr","title":"Trilho sup\/inf com o MESMO nº de canaletas — porta","body":"Porta de correr: com 2 folhas usa o MESMO trilho da janela (SU-001 superior + SU-002 inferior). A diferença aparece a partir de 3 folhas: a porta troca o SU-011 (que é de JANELA) pelo SU-230 inferior (trilho de porta 3 vias) — 3 folhas → SU-010 superior + SU-230 inferior. O SU-011 não entra em porta. Fonte: CORTALUMÍNIO SUPPC300 (porta de correr 3 vidros com trilho SU230).","severity":"erro","status":"validado","source":"CORTALUMÍNIO SUPPC300 + doc\/lesson\/knowledge\/suprema.md","source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Qualificou a regra de canaletas para os casos de porta com 2 e 3 folhas.","machine":{"check":"paired_refs","pairs":[["SU-001","SU-002"],["SU-010","SU-230"]],"labels":{"SU-001":"trilho superior 2 canaletas","SU-002":"trilho inferior 2 canaletas","SU-010":"trilho superior 3 canaletas","SU-230":"trilho inferior de porta 3 canaletas"},"applies":{"door":true,"kind":["sliding"],"line":["Suprema"]}},"technical":{"view":"","application":"","parts":["SU-001","SU-002","SU-010","SU-230","SU-011","SUPPC300","SU230"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/lesson\/knowledge\/suprema.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":1,"updated_at":"2026-07-12 08:59:03","versions":[{"rule_id":"correr-canaletas-iguais-porta","revision":3,"source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Qualificou a regra de canaletas para os casos de porta com 2 e 3 folhas.","snapshot":{"id":"correr-canaletas-iguais-porta","scope":"correr","title":"Trilho sup\/inf com o MESMO nº de canaletas — porta","body":"Porta de correr: com 2 folhas usa o MESMO trilho da janela (SU-001 superior + SU-002 inferior). A diferença aparece a partir de 3 folhas: a porta troca o SU-011 (que é de JANELA) pelo SU-230 inferior (trilho de porta 3 vias) — 3 folhas → SU-010 superior + SU-230 inferior. O SU-011 não entra em porta. Fonte: CORTALUMÍNIO SUPPC300 (porta de correr 3 vidros com trilho SU230).","severity":"erro","status":"validado","source":"CORTALUMÍNIO SUPPC300 + doc\/lesson\/knowledge\/suprema.md","source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Qualificou a regra de canaletas para os casos de porta com 2 e 3 folhas.","machine":{"check":"paired_refs","pairs":[["SU-001","SU-002"],["SU-010","SU-230"]],"labels":{"SU-001":"trilho superior 2 canaletas","SU-002":"trilho inferior 2 canaletas","SU-010":"trilho superior 3 canaletas","SU-230":"trilho inferior de porta 3 canaletas"},"applies":{"door":true,"kind":["sliding"],"line":["Suprema"]}},"technical":null,"supersedes_id":null,"enabled":true,"revision":3,"sort_order":1,"updated_at":"2026-07-12 01:33:34"},"created_at":"2026-07-12 08:59:03"},{"rule_id":"correr-canaletas-iguais-porta","revision":2,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-canaletas-iguais-porta","body":"Porta de correr: com 2 folhas usa o MESMO trilho da janela (SU-001 superior + SU-002 inferior). A diferença aparece a partir de 3 folhas: a porta troca o SU-011 (que é de JANELA) pelo SU-230 inferior (trilho de porta 3 vias) — 3 folhas → SU-010 superior + SU-230 inferior. O SU-011 não entra em porta. Fonte: CORTALUMÍNIO SUPPC300 (porta de correr 3 vidros com trilho SU230).","scope":"correr","title":"Trilho sup\/inf com o MESMO nº de canaletas — porta","source":"CORTALUMÍNIO SUPPC300 + doc\/lesson\/knowledge\/suprema.md","status":"validado","enabled":1,"machine":{"check":"paired_refs","pairs":[["SU-001","SU-002"],["SU-010","SU-230"]],"labels":{"SU-001":"trilho superior 2 canaletas","SU-002":"trilho inferior 2 canaletas","SU-010":"trilho superior 3 canaletas","SU-230":"trilho inferior de porta 3 canaletas"},"applies":{"door":true,"kind":["sliding"],"line":["Suprema"]}},"revision":2,"severity":"erro","technical":null,"sort_order":1,"updated_at":"2026-07-12 01:33:34.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-mao-amiga","scope":"correr","title":"Mão de amigo no centro: o par certo por tipo (janela × porta)","body":"Mão de amigo é uma FAMÍLIA de montantes de encontro patenteada Alcoa (não um engate único). No centro do correr não há coluna fixa: os montantes das duas folhas se sobrepõem 18,4 mm (transpasse) — um \"dá a mão\" ao outro — vedando o centro, travando por segurança e alojando o fecho. Cada par é aba (mais leve) + escova (mais pesada) e casa SÓ com o seu par: JANELA = SU-040 (aba) + SU-041 (escova) + FEC-636; PORTA = SU-047 (aba) + SU-049 (escova) + FEC-645 (concha c\/ chave). Misturar o par leve da janela com o pesado da porta (ex.: SU-040 + SU-049) não encaixa. Detalhe e família completa em doc\/lesson\/knowledge\/suprema.md.","severity":"erro","status":"validado","source":"Catálogo Suprema Alcoa (montagens DSP JCR 200 \/ PCR 200 \/ PCR 300) + revisão do Rhuan — doc\/lesson\/knowledge\/suprema.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":{"check":"paired_refs","pairs":[["SU-040","SU-041"],["SU-047","SU-049"]],"labels":{"SU-040":"aba\/janela","SU-041":"escova\/janela","SU-047":"aba\/porta","SU-049":"escova\/porta"},"applies":{"kind":["sliding"],"line":["Suprema"],"min_panes":2},"mix_label":"o par leve da janela (SU-040\/041) com o pesado da porta (SU-047\/049) — não encaixam","ok_message":"Encontro central da mão-amiga com o par certo (aba + escova da mesma classe)."},"technical":{"view":"","application":"","parts":["SU-040","SU-041","SU-047","SU-049","FEC-636","FEC-645"],"dimensions":["JANELA = SU-040 (aba) + SU-041 (escova) + FEC-636; PORTA = SU-047 (aba) + SU-049 (escova) + FEC-645 (concha c\/ chave)."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/lesson\/knowledge\/suprema.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":2,"updated_at":"2026-07-11 22:37:18","versions":[{"rule_id":"correr-mao-amiga","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-mao-amiga","body":"Mão de amigo é uma FAMÍLIA de montantes de encontro patenteada Alcoa (não um engate único). No centro do correr não há coluna fixa: os montantes das duas folhas se sobrepõem 18,4 mm (transpasse) — um \"dá a mão\" ao outro — vedando o centro, travando por segurança e alojando o fecho. Cada par é aba (mais leve) + escova (mais pesada) e casa SÓ com o seu par: JANELA = SU-040 (aba) + SU-041 (escova) + FEC-636; PORTA = SU-047 (aba) + SU-049 (escova) + FEC-645 (concha c\/ chave). Misturar o par leve da janela com o pesado da porta (ex.: SU-040 + SU-049) não encaixa. Detalhe e família completa em doc\/lesson\/knowledge\/suprema.md.","scope":"correr","title":"Mão de amigo no centro: o par certo por tipo (janela × porta)","source":"Catálogo Suprema Alcoa (montagens DSP JCR 200 \/ PCR 200 \/ PCR 300) + revisão do Rhuan — doc\/lesson\/knowledge\/suprema.md","status":"validado","enabled":1,"machine":{"check":"paired_refs","pairs":[["SU-040","SU-041"],["SU-047","SU-049"]],"labels":{"SU-040":"aba\/janela","SU-041":"escova\/janela","SU-047":"aba\/porta","SU-049":"escova\/porta"},"applies":{"kind":["sliding"],"line":["Suprema"],"min_panes":2},"mix_label":"o par leve da janela (SU-040\/041) com o pesado da porta (SU-047\/049) — não encaixam","ok_message":"Encontro central da mão-amiga com o par certo (aba + escova da mesma classe)."},"revision":1,"severity":"erro","technical":null,"sort_order":2,"updated_at":"2026-07-11 22:37:18.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-travessa-central","scope":"correr","title":"Travessa central precisa de abas dos DOIS lados","body":"A travessa central segura vidro em cima E embaixo. Perfil de folha como o SU-053 (\"travessa montante horizontal\") NÃO serve de central — só tem aba de um lado. Central de verdade é perfil próprio (ex.: SU-227 \"travessa central com olhal\"). Não condicionar uma travessa de folha como \"Travessa central = Sim\".","severity":"erro","status":"validado","source":"Revisão do Rhuan — doc\/lesson\/knowledge\/typology-rules.md","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Redesenha SU-227 e SU-053 pelas seções e cotas reais das páginas impressas 61 e 59 do catálogo.","machine":{"refs":["SU-053"],"check":"forbid_ref_in_option","applies":{"kind":["sliding"],"line":["Suprema"]},"option_regex":"travessa|central"},"technical":{"view":"corte_vertical","application":"Travessa horizontal entre dois panos de vidro na linha Suprema Classic","parts":["SU-227 — travessa central com dois alojamentos de baguete","SU-053 — travessa de folha com um alojamento; não usar como central","SU-102 — baguete"],"dimensions":["SU-227: seção 22,2 × 57 mm","SU-053: canal 14,7 mm; altura total 51 mm"],"steps":["Identificar se a travessa recebe vidro acima e abaixo","Usar perfil com alojamento de baguete nos dois lados","Não substituir SU-227 por SU-053"],"acceptance":["Os dois vidros têm apoio e retenção por baguete","A referência usada coincide com a seção do catálogo"],"exceptions":["O SVG é seção proporcional de conferência, não gabarito de usinagem"],"source_pages":["Catálogo Suprema Alcoa — páginas impressas 59 e 61"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":3,"updated_at":"2026-07-12 08:57:49","versions":[{"rule_id":"correr-travessa-central","revision":2,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Redesenha SU-227 e SU-053 pelas seções e cotas reais das páginas impressas 61 e 59 do catálogo.","snapshot":{"id":"correr-travessa-central","scope":"correr","title":"Travessa central precisa de abas dos DOIS lados","body":"A travessa central segura vidro em cima E embaixo. Perfil de folha como o SU-053 (\"travessa montante horizontal\") NÃO serve de central — só tem aba de um lado. Central de verdade é perfil próprio (ex.: SU-227 \"travessa central com olhal\"). Não condicionar uma travessa de folha como \"Travessa central = Sim\".","severity":"erro","status":"validado","source":"Revisão do Rhuan — doc\/lesson\/knowledge\/typology-rules.md","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Redesenha SU-227 e SU-053 pelas seções e cotas reais das páginas impressas 61 e 59 do catálogo.","machine":{"refs":["SU-053"],"check":"forbid_ref_in_option","applies":{"kind":["sliding"],"line":["Suprema"]},"option_regex":"travessa|central"},"technical":{"view":"corte_vertical","application":"Travessa horizontal entre dois panos de vidro na linha Suprema Classic","parts":["SU-227 — travessa central com dois alojamentos de baguete","SU-053 — travessa de folha com um alojamento; não usar como central","SU-102 — baguete"],"dimensions":["SU-227: seção 22,2 × 57 mm","SU-053: canal 14,7 mm; altura total 51 mm"],"steps":["Identificar se a travessa recebe vidro acima e abaixo","Usar perfil com alojamento de baguete nos dois lados","Não substituir SU-227 por SU-053"],"acceptance":["Os dois vidros têm apoio e retenção por baguete","A referência usada coincide com a seção do catálogo"],"exceptions":["O SVG é seção proporcional de conferência, não gabarito de usinagem"],"source_pages":["Catálogo Suprema Alcoa — páginas impressas 59 e 61"]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":3,"updated_at":"2026-07-08 12:57:49"},"created_at":"2026-07-12 08:57:49"},{"rule_id":"correr-travessa-central","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-travessa-central","body":"A travessa central segura vidro em cima E embaixo. Perfil de folha como o SU-053 (\"travessa montante horizontal\") NÃO serve de central — só tem aba de um lado. Central de verdade é perfil próprio (ex.: SU-227 \"travessa central com olhal\"). Não condicionar uma travessa de folha como \"Travessa central = Sim\".","scope":"correr","title":"Travessa central precisa de abas dos DOIS lados","source":"Revisão do Rhuan — doc\/lesson\/knowledge\/typology-rules.md","status":"validado","enabled":1,"machine":{"refs":["SU-053"],"check":"forbid_ref_in_option","applies":{"kind":["sliding"],"line":["Suprema"]},"option_regex":"travessa|central"},"revision":1,"severity":"erro","technical":null,"sort_order":3,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-componentes-basicos","scope":"correr","title":"Componentes básicos do correr não podem faltar","body":"TODO correr (janela E porta) leva roldana — é nela que a folha apoia o peso e desliza. Rhuan: janela = ROL-440 simples (1 rodinha, 20 kg\/folha, monta na travessa SU-053); porta = ROL-439 dupla (2 rodinhas, mais peso, monta na travessa inferior SU-225). Sempre 2 por folha. A guia deslizante (NYL-332) é só alinhamento e acabamento — nada desliza nela e NÃO substitui a roldana. Além disso: fecho concha (+ contra-fecho SD-2504), escova\/felpa (SD-2564), guarnição do vidro e dreno (NYL-329). Sem eles a esquadria sai incompleta e o orçamento sai mais barato do que o real.","severity":"aviso","status":"validado","source":"Rhuan (roldana sempre; guia é só acabamento) — doc\/lesson\/knowledge\/typology-rules.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":{"check":"requires_groups","groups":[{"label":"Roldana (janela ROL-440 · porta ROL-439)","patterns":["ROL-"]},{"label":"Guia deslizante NYL-332","patterns":["NYL-332"]},{"label":"Fecho concha","patterns":["FEC-","SD-2504"],"leaf_hardware":"concha"},{"label":"Escova \/ felpa","patterns":["SD-2564"]},{"label":"Dreno","patterns":["NYL-329"]}],"applies":{"kind":["sliding"],"line":["Suprema"]}},"technical":{"view":"","application":"","parts":["ROL-","NYL-332","FEC-","SD-2504","SD-2564","NYL-329","ROL-440","SU-053","ROL-439","SU-225"],"dimensions":["janela = ROL-440 simples (1 rodinha, 20 kg\/folha, monta na travessa SU-053); porta = ROL-439 dupla (2 rodinhas, mais peso, monta na travessa inferior SU-225)."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/lesson\/knowledge\/typology-rules.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":4,"updated_at":"2026-07-08 12:57:49","versions":[{"rule_id":"correr-componentes-basicos","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-componentes-basicos","body":"TODO correr (janela E porta) leva roldana — é nela que a folha apoia o peso e desliza. Rhuan: janela = ROL-440 simples (1 rodinha, 20 kg\/folha, monta na travessa SU-053); porta = ROL-439 dupla (2 rodinhas, mais peso, monta na travessa inferior SU-225). Sempre 2 por folha. A guia deslizante (NYL-332) é só alinhamento e acabamento — nada desliza nela e NÃO substitui a roldana. Além disso: fecho concha (+ contra-fecho SD-2504), escova\/felpa (SD-2564), guarnição do vidro e dreno (NYL-329). Sem eles a esquadria sai incompleta e o orçamento sai mais barato do que o real.","scope":"correr","title":"Componentes básicos do correr não podem faltar","source":"Rhuan (roldana sempre; guia é só acabamento) — doc\/lesson\/knowledge\/typology-rules.md","status":"validado","enabled":1,"machine":{"check":"requires_groups","groups":[{"label":"Roldana (janela ROL-440 · porta ROL-439)","patterns":["ROL-"]},{"label":"Guia deslizante NYL-332","patterns":["NYL-332"]},{"label":"Fecho concha","patterns":["FEC-","SD-2504"],"leaf_hardware":"concha"},{"label":"Escova \/ felpa","patterns":["SD-2564"]},{"label":"Dreno","patterns":["NYL-329"]}],"applies":{"kind":["sliding"],"line":["Suprema"]}},"revision":1,"severity":"aviso","technical":null,"sort_order":4,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-porta-puxador","scope":"correr","title":"Porta de correr oferece puxador opcional (ligado a um componente)","body":"Puxador de porta de correr é OPCIONAL e é ferragem de FOLHA (leaf_hardware): liga por folha, lado interno e\/ou externo, e SÓ nas PONTAS que operam — a folha do MEIO só corre pela posição e não recebe puxador nem acessório nenhum. Cada puxador entra em \"Ferragens e acessórios\" com o componente e os fixadores dele: Búzios 15 cm (PUX-BUZ-15, R$ 15,00) + 4 rebites REB-416 (R$ 0,40 cada) = R$ 16,60 por puxador, congelado no orçamento. A linha Convencional é à parte (kit próprio).","severity":"aviso","status":"validado","source":"Rhuan — puxador opcional das portas (Búzios 15 cm), adotado como padrão","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":{"check":"requires_groups","groups":[{"label":"Puxador (opção → componente, ex.: PUX-BUZ-15 · ou ferragem de folha)","patterns":["PUX-"],"leaf_hardware":"puxador"}],"applies":{"door":true,"kind":["sliding"],"line":["Suprema"]}},"technical":{"view":"","application":"","parts":["PUX-","PUX-BUZ-15","REB-416"],"dimensions":["Búzios 15 cm (PUX-BUZ-15, R$ 15,00) + 4 rebites REB-416 (R$ 0,40 cada) = R$ 16,60 por puxador, congelado no orçamento."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":5,"updated_at":"2026-07-08 14:18:13","versions":[{"rule_id":"correr-porta-puxador","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-porta-puxador","body":"Puxador de porta de correr é OPCIONAL e é ferragem de FOLHA (leaf_hardware): liga por folha, lado interno e\/ou externo, e SÓ nas PONTAS que operam — a folha do MEIO só corre pela posição e não recebe puxador nem acessório nenhum. Cada puxador entra em \"Ferragens e acessórios\" com o componente e os fixadores dele: Búzios 15 cm (PUX-BUZ-15, R$ 15,00) + 4 rebites REB-416 (R$ 0,40 cada) = R$ 16,60 por puxador, congelado no orçamento. A linha Convencional é à parte (kit próprio).","scope":"correr","title":"Porta de correr oferece puxador opcional (ligado a um componente)","source":"Rhuan — puxador opcional das portas (Búzios 15 cm), adotado como padrão","status":"validado","enabled":1,"machine":{"check":"requires_groups","groups":[{"label":"Puxador (opção → componente, ex.: PUX-BUZ-15 · ou ferragem de folha)","patterns":["PUX-"],"leaf_hardware":"puxador"}],"applies":{"door":true,"kind":["sliding"],"line":["Suprema"]}},"revision":1,"severity":"aviso","technical":null,"sort_order":5,"updated_at":"2026-07-08 14:18:13.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"lados-porta-janela","scope":"arremate_cm","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","body":"Arremate e contramarco quase nunca vão no piso (na porta a pessoa tropeça; o CM teria que embutir na alvenaria). Janela = 4 lados → 4 cantos; porta = 3 lados (topo + 2 laterais) → 2 cantos. Isso escala tudo: peças do arremate (3 vs 4), presilha NYL-190, tampinha BER-2260, esquadria de canto do CM.\nO motor detecta porta\/janela automaticamente (palavra \"porta\" no nome\/categoria\/código) e expõe nas fórmulas: LADOS (3\/4), HLADOS (peças horizontais 1\/2) e CANTOS (2\/4).","severity":"info","status":"validado","source":"Rhuan — doc\/lesson\/knowledge\/suprema.md · implementado no TypologyResolver","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":{"check":"sides_info"},"technical":{"view":"","application":"","parts":["NYL-190","BER-2260"],"dimensions":["Janela = 4 lados → 4 cantos; porta = 3 lados (topo + 2 laterais) → 2 cantos."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/lesson\/knowledge\/suprema.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":6,"updated_at":"2026-07-08 12:57:49","versions":[{"rule_id":"lados-porta-janela","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"lados-porta-janela","body":"Arremate e contramarco quase nunca vão no piso (na porta a pessoa tropeça; o CM teria que embutir na alvenaria). Janela = 4 lados → 4 cantos; porta = 3 lados (topo + 2 laterais) → 2 cantos. Isso escala tudo: peças do arremate (3 vs 4), presilha NYL-190, tampinha BER-2260, esquadria de canto do CM.\nO motor detecta porta\/janela automaticamente (palavra \"porta\" no nome\/categoria\/código) e expõe nas fórmulas: LADOS (3\/4), HLADOS (peças horizontais 1\/2) e CANTOS (2\/4).","scope":"arremate_cm","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","source":"Rhuan — doc\/lesson\/knowledge\/suprema.md · implementado no TypologyResolver","status":"validado","enabled":1,"machine":{"check":"sides_info"},"revision":1,"severity":"info","technical":null,"sort_order":6,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"cm-conexao-nylon","scope":"arremate_cm","title":"CM-063: linguetas entram; aba lisa encosta no alumínio","body":"A CON 063 é 1 única peça preta monolítica em L, com corpo de cotovelo e dois braços integrais a 90°. Cada braço possui lingueta nervurada de encaixe por pressão. Junto ao cotovelo existe uma aba\/ressalto liso de encosto: a lingueta entra no canal do CM-063, mas essa aba não entra — ela bate na aba do alumínio, limita a inserção e posiciona a conexão. Esse contato funcional é essencial e não pode desaparecer do desenho. As várias fotos são rotações do mesmo modelo; não há peças A\/B, direita\/esquerda ou interna\/externa diferentes. A seção compatível mede 26,5 × 24 mm, com 8,5 mm internos e perna curta externa de 11,9 mm. A conexão ainda não possui cotas próprias suficientes para desenho de fabricação.","severity":"erro","status":"validado","source":"Rhuan — imagens técnicas enviadas em 12\/07\/2026: seção 26,5 × 24 \/ 8,5 \/ 11,9 mm; fotos da conexão preta instalada e em cinco vistas. Esclarecimento direto de Rhuan em 12\/07\/2026: todas as vistas são do mesmo modelo, uma única peça universal por rotação, sem lado A\/B ou direita\/esquerda. Prancha “CONEXÃO PARA CONTRA MARCO CM-063 COM PARAFUSO — CON 063”.","source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Troca o método de contorno por modelo funcional: registra a aba lisa de encosto, seu contato com a aba do alumínio e separa o que entra do que apenas limita a inserção.","machine":null,"technical":{"view":"detalhe funcional vetorial da peça e da interface com o perfil","application":"União em meia-esquadria do contramarco CM-063; 1 conexão por canto","parts":["CM-063 — perfil com canal e aba de alumínio","CON 063 — corpo monolítico em L","Duas linguetas nervuradas integrais — entram nos canais","Aba\/ressalto liso de encosto — bate na aba do alumínio e limita a inserção"],"dimensions":["Seção compatível: 26,5 mm de largura","Altura total da perna longa: 24 mm","Encaixe interno\/perna curta: 8,5 mm","Perna curta externa indicada na fonte: 11,9 mm","Pacote interno: 4 conexões por R$ 6,00"],"steps":["Cortar as duas barras do CM-063 em meia-esquadria","Girar a mesma conexão até alinhar as linguetas nervuradas aos canais","Inserir as linguetas até a aba lisa da conexão encostar na aba do alumínio","Fechar a meia-esquadria e conferir esquadro e encosto"],"acceptance":["Exatamente uma peça monolítica por canto","Linguetas nervuradas alojadas nos canais","Aba lisa apoiada na aba do alumínio, sem ser forçada para dentro do canal","Canto fechado a 90° e perfis alinhados"],"exceptions":["Desenho de identificação\/montagem, sem escala; não usar para fabricar a conexão","As cinco vistas da foto são rotações do mesmo modelo, não peças ou variantes diferentes","As imagens não fornecem comprimento, espessura, raio, tolerância ou profundidade de inserção dos braços","A prancha diz “com parafuso”, mas não permite definir tipo, posição ou quantidade","CON-CM063 é referência interna; a fonte mostra CON 063"],"source_pages":["Rhuan — fotos da peça solta e instalada, 12\/07\/2026","Rhuan — confirmação da aba que bate na aba do alumínio, 12\/07\/2026"],"geometry":{"kind":"component","part_count":1,"features":[{"id":"elbow_body","type":"body","label":"Corpo central monolítico do cotovelo em L","evidence":"Cinco rotações da peça solta","confidence":"confirmed"},{"id":"tongue_x","type":"tongue","label":"Lingueta nervurada integral do primeiro braço","evidence":"Fotos solta e instalada","confidence":"confirmed"},{"id":"tongue_y","type":"tongue","label":"Lingueta nervurada integral do segundo braço","evidence":"Fotos solta e instalada","confidence":"confirmed"},{"id":"press_ribs","type":"rib","label":"Nervuras transversais de pressão nas linguetas","evidence":"Fotos laterais e superior","confidence":"confirmed"},{"id":"stop_flange","type":"stop_flange","label":"Aba lisa de encosto junto ao cotovelo; não entra no canal","evidence":"Foto instalada e esclarecimento de Rhuan","confidence":"confirmed"}],"interfaces":[{"id":"tongues_enter_channels","from":"tongue_x+tongue_y","to":"CM-063.channel","relation":"insert","evidence":"Foto da conexão inserida no perfil","confidence":"confirmed"},{"id":"flange_stops_on_aluminum","from":"stop_flange","to":"CM-063.aluminum_flange","relation":"abut","evidence":"Foto instalada + explicação de Rhuan","confidence":"confirmed"}],"symmetry":["Uma peça única atende os lados por rotação de 90 graus"],"unknowns":["Comprimento e espessura das linguetas","Dimensão e espessura da aba de encosto","Raios, tolerâncias e especificação do parafuso"]}},"supersedes_id":null,"enabled":true,"revision":7,"sort_order":7,"updated_at":"2026-07-12 10:13:05","versions":[{"rule_id":"cm-conexao-nylon","revision":7,"source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Troca o método de contorno por modelo funcional: registra a aba lisa de encosto, seu contato com a aba do alumínio e separa o que entra do que apenas limita a inserção.","snapshot":{"id":"cm-conexao-nylon","scope":"arremate_cm","severity":"erro","status":"validado","title":"CM-063: linguetas entram; aba lisa encosta no alumínio","body":"A CON 063 é 1 única peça preta monolítica em L, com corpo de cotovelo e dois braços integrais a 90°. Cada braço possui lingueta nervurada de encaixe por pressão. Junto ao cotovelo existe uma aba\/ressalto liso de encosto: a lingueta entra no canal do CM-063, mas essa aba não entra — ela bate na aba do alumínio, limita a inserção e posiciona a conexão. Esse contato funcional é essencial e não pode desaparecer do desenho. As várias fotos são rotações do mesmo modelo; não há peças A\/B, direita\/esquerda ou interna\/externa diferentes. A seção compatível mede 26,5 × 24 mm, com 8,5 mm internos e perna curta externa de 11,9 mm. A conexão ainda não possui cotas próprias suficientes para desenho de fabricação.","source":"Rhuan — imagens técnicas enviadas em 12\/07\/2026: seção 26,5 × 24 \/ 8,5 \/ 11,9 mm; fotos da conexão preta instalada e em cinco vistas. Esclarecimento direto de Rhuan em 12\/07\/2026: todas as vistas são do mesmo modelo, uma única peça universal por rotação, sem lado A\/B ou direita\/esquerda. Prancha “CONEXÃO PARA CONTRA MARCO CM-063 COM PARAFUSO — CON 063”.","source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Troca o método de contorno por modelo funcional: registra a aba lisa de encosto, seu contato com a aba do alumínio e separa o que entra do que apenas limita a inserção.","technical":{"view":"detalhe funcional vetorial da peça e da interface com o perfil","application":"União em meia-esquadria do contramarco CM-063; 1 conexão por canto","parts":["CM-063 — perfil com canal e aba de alumínio","CON 063 — corpo monolítico em L","Duas linguetas nervuradas integrais — entram nos canais","Aba\/ressalto liso de encosto — bate na aba do alumínio e limita a inserção"],"dimensions":["Seção compatível: 26,5 mm de largura","Altura total da perna longa: 24 mm","Encaixe interno\/perna curta: 8,5 mm","Perna curta externa indicada na fonte: 11,9 mm","Pacote interno: 4 conexões por R$ 6,00"],"steps":["Cortar as duas barras do CM-063 em meia-esquadria","Girar a mesma conexão até alinhar as linguetas nervuradas aos canais","Inserir as linguetas até a aba lisa da conexão encostar na aba do alumínio","Fechar a meia-esquadria e conferir esquadro e encosto"],"acceptance":["Exatamente uma peça monolítica por canto","Linguetas nervuradas alojadas nos canais","Aba lisa apoiada na aba do alumínio, sem ser forçada para dentro do canal","Canto fechado a 90° e perfis alinhados"],"exceptions":["Desenho de identificação\/montagem, sem escala; não usar para fabricar a conexão","As cinco vistas da foto são rotações do mesmo modelo, não peças ou variantes diferentes","As imagens não fornecem comprimento, espessura, raio, tolerância ou profundidade de inserção dos braços","A prancha diz “com parafuso”, mas não permite definir tipo, posição ou quantidade","CON-CM063 é referência interna; a fonte mostra CON 063"],"source_pages":["Rhuan — fotos da peça solta e instalada, 12\/07\/2026","Rhuan — confirmação da aba que bate na aba do alumínio, 12\/07\/2026"],"geometry":{"kind":"component","part_count":1,"features":[{"id":"elbow_body","type":"body","label":"Corpo central monolítico do cotovelo em L","evidence":"Cinco rotações da peça solta","confidence":"confirmed"},{"id":"tongue_x","type":"tongue","label":"Lingueta nervurada integral do primeiro braço","evidence":"Fotos solta e instalada","confidence":"confirmed"},{"id":"tongue_y","type":"tongue","label":"Lingueta nervurada integral do segundo braço","evidence":"Fotos solta e instalada","confidence":"confirmed"},{"id":"press_ribs","type":"rib","label":"Nervuras transversais de pressão nas linguetas","evidence":"Fotos laterais e superior","confidence":"confirmed"},{"id":"stop_flange","type":"stop_flange","label":"Aba lisa de encosto junto ao cotovelo; não entra no canal","evidence":"Foto instalada e esclarecimento de Rhuan","confidence":"confirmed"}],"interfaces":[{"id":"tongues_enter_channels","from":"tongue_x+tongue_y","to":"CM-063.channel","relation":"insert","evidence":"Foto da conexão inserida no perfil","confidence":"confirmed"},{"id":"flange_stops_on_aluminum","from":"stop_flange","to":"CM-063.aluminum_flange","relation":"abut","evidence":"Foto instalada + explicação de Rhuan","confidence":"confirmed"}],"symmetry":["Uma peça única atende os lados por rotação de 90 graus"],"unknowns":["Comprimento e espessura das linguetas","Dimensão e espessura da aba de encosto","Raios, tolerâncias e especificação do parafuso"]}},"machine":null,"revision":7,"sort_order":118},"created_at":"2026-07-12 10:13:05"},{"rule_id":"cm-conexao-nylon","revision":6,"source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Substitui o esquema por prancha SVG técnica editável: geometria única, isométrica auxiliar, vista superior reutilizada, seção cotada e montagem explodida com limites de evidência.","snapshot":{"id":"cm-conexao-nylon","scope":"arremate_cm","severity":"erro","status":"validado","title":"CM-063: uma conexão única, universal por rotação","body":"Cada canto em meia-esquadria do contramarco CM-063 recebe 1 única conexão preta monolítica em L: corpo central e dois braços nervurados integrais a 90°, sem emenda entre eles. As várias imagens mostram somente vistas e rotações da mesma peça. Não existem conexão A\/B, direita\/esquerda ou interna\/externa diferentes: a mesma peça é girada para atender qualquer lado e orientação do canto. A ficha identifica a peça como CON 063 — conexão para contramarco CM-063 com parafuso; tipo, posição e quantidade dos parafusos não estão legíveis o bastante para serem inventados. A seção compatível mede 26,5 mm de largura por 24 mm de altura total, com encaixe interno de 8,5 mm e perna curta externa de 11,9 mm. A prancha vetorial é um desenho técnico de identificação e montagem, sem escala; ainda não é desenho de fabricação porque faltam cotas da própria conexão. O SoftCalc mantém CON-CM063 como referência interna de estoque (pacote com 4 por R$ 6,00). CL-006 e CL-011 não fazem esta união.","source":"Rhuan — imagens técnicas enviadas em 12\/07\/2026: seção 26,5 × 24 \/ 8,5 \/ 11,9 mm; fotos da conexão preta instalada e em cinco vistas. Esclarecimento direto de Rhuan em 12\/07\/2026: todas as vistas são do mesmo modelo, uma única peça universal por rotação, sem lado A\/B ou direita\/esquerda. Prancha “CONEXÃO PARA CONTRA MARCO CM-063 COM PARAFUSO — CON 063”.","source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Substitui o esquema por prancha SVG técnica editável: geometria única, isométrica auxiliar, vista superior reutilizada, seção cotada e montagem explodida com limites de evidência.","technical":{"view":"prancha vetorial de identificação + montagem; isométrica, superior, seção e explodida","application":"União em meia-esquadria do contramarco CM-063; 1 conexão por canto","parts":["CM-063 — perfil do contramarco","CON 063 — uma única peça preta monolítica em L, com dois braços nervurados integrais","CON-CM063 — referência interna do SoftCalc para estoque; sem variantes A\/B ou direita\/esquerda"],"dimensions":["Seção compatível: 26,5 mm de largura","Altura total da perna longa: 24 mm","Encaixe interno\/perna curta: 8,5 mm","Perna curta externa indicada na fonte: 11,9 mm","Pacote interno: 4 conexões por R$ 6,00"],"steps":["Cortar as duas barras do CM-063 em meia-esquadria","Girar a mesma conexão até seus dois braços coincidirem com as canaletas dos perfis","Inserir um braço integral em cada barra por pressão","Fechar a meia-esquadria e conferir o esquadro antes da fixação final"],"acceptance":["Exatamente uma peça monolítica por canto","Nenhuma seleção de mão, lado A\/B, direita ou esquerda","Dois braços integrais totalmente alojados e canto fechado a 90°","Perfis alinhados, sem abertura na meia-esquadria"],"exceptions":["Desenho de identificação\/montagem, sem escala; não usar para fabricar a conexão","As cinco vistas da foto são rotações do mesmo modelo, não peças ou variantes diferentes","As imagens não fornecem comprimento, espessura, raio, tolerância ou profundidade de inserção dos braços","A prancha diz “com parafuso”, mas não permite definir tipo, posição ou quantidade","CON-CM063 é referência interna; a fonte mostra CON 063"],"source_pages":["Rhuan — 9 imagens técnicas recebidas em 12\/07\/2026","Prancha de aplicação: CON 063 com parafuso"]},"machine":null,"revision":6,"sort_order":118},"created_at":"2026-07-12 10:01:23"},{"rule_id":"cm-conexao-nylon","revision":5,"source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Corrige a leitura do desenho: os dois braços pertencem a uma única peça monolítica e universal, aplicável em qualquer lado apenas por rotação.","snapshot":{"id":"cm-conexao-nylon","scope":"arremate_cm","severity":"erro","status":"validado","title":"CM-063: uma conexão única, universal por rotação","body":"Cada canto em meia-esquadria do contramarco CM-063 recebe 1 única conexão preta monolítica em L: corpo central e dois braços nervurados integrais a 90°, sem emenda entre eles. As várias imagens mostram somente vistas e rotações da mesma peça. Não existem conexão A\/B, direita\/esquerda ou interna\/externa diferentes: a mesma peça é girada para atender qualquer lado e orientação do canto. A ficha identifica a peça como CON 063 — conexão para contramarco CM-063 com parafuso; tipo, posição e quantidade dos parafusos não estão legíveis o bastante para serem inventados. A seção compatível mede 26,5 mm de largura por 24 mm de altura total, com encaixe interno de 8,5 mm e perna curta externa de 11,9 mm. O SoftCalc mantém CON-CM063 como referência interna de estoque (pacote com 4 por R$ 6,00). CL-006 e CL-011 não fazem esta união.","source":"Rhuan — imagens técnicas enviadas em 12\/07\/2026: seção 26,5 × 24 \/ 8,5 \/ 11,9 mm; fotos da conexão preta instalada e em cinco vistas. Esclarecimento direto de Rhuan em 12\/07\/2026: todas as vistas são do mesmo modelo, uma única peça universal por rotação, sem lado A\/B ou direita\/esquerda. Prancha “CONEXÃO PARA CONTRA MARCO CM-063 COM PARAFUSO — CON 063”.","source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Corrige a leitura do desenho: os dois braços pertencem a uma única peça monolítica e universal, aplicável em qualquer lado apenas por rotação.","technical":{"view":"seção + montagem de canto","application":"União em meia-esquadria do contramarco CM-063; 1 conexão por canto","parts":["CM-063 — perfil do contramarco","CON 063 — uma única peça preta monolítica em L, com dois braços nervurados integrais","CON-CM063 — referência interna do SoftCalc para estoque; sem variantes A\/B ou direita\/esquerda"],"dimensions":["Seção compatível: 26,5 mm de largura","Altura total da perna longa: 24 mm","Encaixe interno\/perna curta: 8,5 mm","Perna curta externa indicada na fonte: 11,9 mm","Pacote interno: 4 conexões por R$ 6,00"],"steps":["Cortar as duas barras do CM-063 em meia-esquadria","Girar a mesma conexão até seus dois braços coincidirem com as canaletas dos perfis","Inserir um braço integral em cada barra por pressão","Fechar a meia-esquadria e conferir o esquadro antes da fixação final"],"acceptance":["Exatamente uma peça monolítica por canto","Nenhuma seleção de mão, lado A\/B, direita ou esquerda","Dois braços integrais totalmente alojados e canto fechado a 90°","Perfis alinhados, sem abertura na meia-esquadria"],"exceptions":["As cinco vistas da foto são rotações do mesmo modelo, não peças ou variantes diferentes","As imagens não fornecem comprimento dos braços nem profundidade de inserção","A prancha diz “com parafuso”, mas não permite definir tipo, posição ou quantidade","CON-CM063 é referência interna; a fonte mostra CON 063"],"source_pages":["Rhuan — 9 imagens técnicas recebidas em 12\/07\/2026","Prancha de aplicação: CON 063 com parafuso"]},"machine":null,"revision":5,"sort_order":118},"created_at":"2026-07-12 09:52:47"},{"rule_id":"cm-conexao-nylon","revision":4,"source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Reconstrói a regra pelas fotos de Rhuan: corrige cor e forma, inclui cotas comprovadas e remove inserção de 39 mm e fixação SD-896 não demonstradas.","snapshot":{"id":"cm-conexao-nylon","scope":"arremate_cm","severity":"erro","status":"validado","title":"CM-063: conexão preta nervurada une o canto","body":"Cada canto em meia-esquadria do contramarco CM-063 recebe 1 conexão preta em L, com dois braços nervurados de encaixe por pressão e corpo central quadrado. A ficha recebida identifica a peça como CON 063 — conexão para contramarco CM-063 com parafuso; o tipo, a posição e a quantidade de parafusos não aparecem com precisão suficiente nas imagens e não devem ser inventados. A seção compatível mede 26,5 mm de largura por 24 mm de altura total; a cota interna do encaixe é 8,5 mm e a perna curta externa aparece cotada como 11,9 mm. O SoftCalc mantém CON-CM063 como referência interna de estoque (pacote com 4 por R$ 6,00). CL-006 e CL-011 são perfis de outras montagens e não entram nesta união — sem proibição global.","source":"Rhuan — imagens técnicas enviadas em 12\/07\/2026: seção compatível 26,5 × 24 \/ 8,5 \/ 11,9 mm; fotos frontal, lateral, superior e instalada da conexão preta nervurada; prancha “CONEXÃO PARA CONTRA MARCO CM-063 COM PARAFUSO — CON 063”. Complemento de estoque informado em 08\/07\/2026: pacote 4\/R$ 6,00.","source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Reconstrói a regra pelas fotos de Rhuan: corrige cor e forma, inclui cotas comprovadas e remove inserção de 39 mm e fixação SD-896 não demonstradas.","technical":{"view":"seção + montagem de canto","application":"União em meia-esquadria do contramarco CM-063; 1 conexão por canto","parts":["CM-063 — perfil do contramarco","CON 063 — conexão preta em L com braços nervurados","CON-CM063 — referência interna do SoftCalc para estoque"],"dimensions":["Seção compatível: 26,5 mm de largura","Altura total da perna longa: 24 mm","Encaixe interno\/perna curta: 8,5 mm","Perna curta externa indicada na fonte: 11,9 mm","Pacote interno: 4 conexões por R$ 6,00"],"steps":["Cortar as duas barras do CM-063 em meia-esquadria","Orientar os dois braços nervurados da conexão a 90° com as canaletas dos perfis","Inserir um braço em cada barra por pressão","Fechar a meia-esquadria e conferir o esquadro antes da fixação final"],"acceptance":["Uma conexão preta nervurada por canto","Dois braços totalmente alojados e canto fechado a 90°","Perfis alinhados, sem abertura na meia-esquadria","Nenhum CL-006\/CL-011 usado nesta função"],"exceptions":["As imagens não fornecem comprimento dos braços nem profundidade de inserção","A prancha diz “com parafuso”, mas não permite definir tipo, posição ou quantidade","CON-CM063 é referência interna; a fonte da peça mostra CON 063"],"source_pages":["Rhuan — 9 imagens técnicas recebidas em 12\/07\/2026","Prancha de aplicação: CON 063 com parafuso"]},"machine":null,"revision":4,"sort_order":116},"created_at":"2026-07-12 09:42:30"},{"rule_id":"cm-conexao-nylon","revision":3,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Corrige a troca indevida entre conexão de canto, CL-006\/011 e chumbador SD-896.","snapshot":{"id":"cm-conexao-nylon","scope":"arremate_cm","severity":"erro","status":"validado","title":"CM-063: conexão própria no canto; SD-896 fixa na alvenaria","body":"Cada canto do contramarco CM-063 é unido por uma conexão branca própria, sem código de fornecedor: 1 por canto, com aproximadamente 39 mm de inserção em cada braço. O SoftCalc usa CON-CM063 apenas como referência interna de estoque (pacote com 4 por R$ 6,00). A fixação do quadro na alvenaria é outra função, feita pelo chumbador SD-896 em torno de cada 400 mm. CL-006 e CL-011 são perfis de alumínio de outras montagens e não entram no CM-063 — não os proibir globalmente.","source":"Rhuan, conversa de 08\/07\/2026 (peça sem código; pacote 4\/R$ 6; não usar CL-006\/011 no CM-063) + catálogo Suprema pág. impressa 44 + cadastro de origem SD-896","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Corrige a troca indevida entre conexão de canto, CL-006\/011 e chumbador SD-896.","technical":{"view":"esquema","application":"Contramarco CM-063; 4 cantos em janela e 2 cantos em porta de 3 lados","parts":["CM-063 — perfil do contramarco","Conexão branca própria — 1 por canto; CON-CM063 é referência interna","SD-896 — chumbador de fixação na alvenaria"],"dimensions":["Inserção aproximada da conexão: 39 mm em cada braço","Fixação SD-896: aproximadamente a cada 400 mm no perímetro","Pacote: 4 conexões por R$ 6,00"],"steps":["Cortar e formar o canto do CM-063","Inserir uma conexão branca própria no canto e fechar a união","Esquadrejar o quadro","Fixar o CM na alvenaria com SD-896; não confundir com a conexão do canto"],"acceptance":["Canto unido e esquadrejado com uma conexão própria","Nenhum CL-006\/CL-011 lançado para esta finalidade","SD-896 lançado separadamente para a fixação na parede"],"exceptions":["CON-CM063 é código interno do SoftCalc, não código de catálogo","A forma exata da conexão ainda precisa de foto frontal e lateral para desenho de fabricação"],"source_pages":["Catálogo Suprema Alcoa — página impressa 44: CL-006\/CL-011 são perfis de alumínio","Rhuan — 08\/07\/2026"]},"machine":null,"revision":3,"sort_order":114},"created_at":"2026-07-12 08:48:33"},{"rule_id":"cm-conexao-nylon","revision":2,"source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: alinhou título e corpo e removeu a prescrição CL-006\/CL-011 do CM-063.","snapshot":{"id":"cm-conexao-nylon","body":"Contramarco moderno prende com a CONEXÃO própria do perfil — no CM-063 é a CON-CM063 (Conexão contra-marco CM-063, pacote de 4 \/ R$ 6,00), 1 por canto (= CANTOS: 2 na porta, 4 na janela). Macho (CL-006) e cunha (CL-011) são do sistema antigo e NÃO se usa pra essa finalidade. O Y-721 (Paulistinha) prende com a conexão própria dele (a cadastrar).","scope":"arremate_cm","title":"Contramarco: a conexão de canto (CON-CM063) liga o quadro — a grapa\/chumbador fixa na parede; macho\/cunha (CL-006\/CL-011) são do sistema antigo, não usar","source":"Correção do Rhuan (chat 2026-07-08): a conexão de canto não é chumbador; extração anterior estava errada. Refinamento: no CM-063 a peça é a CON-CM063 — macho\/cunha (CL-006\/CL-011) ficaram obsoletos. Recibo real do sistema de origem.","status":"pendente","enabled":1,"machine":null,"revision":2,"severity":"erro","technical":null,"sort_order":7,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Anthropic Claude","author_type":"claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: alinhou título e corpo e removeu a prescrição CL-006\/CL-011 do CM-063.","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"cm-recuo-27","scope":"arremate_cm","title":"Recuo do contramarco = 27 mm por lado","body":"Encosto da cadeirinha (24 mm) + 3 mm de folga pra esquadria entrar fácil na instalação. Com CM, a esquadria fica ~54 mm menor que o vão (27 por lado). O CM é cortado no vão. Tipos: Cadeirinha = CM-063 · Paulistinha\/Y = Y-721.","severity":"info","status":"validado","source":"Rhuan \/ manual Esquadrimed — doc\/lesson\/knowledge\/suprema.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":["CM-063","Y-721"],"dimensions":["Cadeirinha = CM-063","Paulistinha\/Y = Y-721."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/lesson\/knowledge\/suprema.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":8,"updated_at":"2026-07-08 12:57:49","versions":[{"rule_id":"cm-recuo-27","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"cm-recuo-27","body":"Encosto da cadeirinha (24 mm) + 3 mm de folga pra esquadria entrar fácil na instalação. Com CM, a esquadria fica ~54 mm menor que o vão (27 por lado). O CM é cortado no vão. Tipos: Cadeirinha = CM-063 · Paulistinha\/Y = Y-721.","scope":"arremate_cm","title":"Recuo do contramarco = 27 mm por lado","source":"Rhuan \/ manual Esquadrimed — doc\/lesson\/knowledge\/suprema.md","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":8,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"arremate-mp347-conexao","scope":"arremate_cm","title":"Arremate MP-347: cálculo conhecido, detalhe de encaixe pendente","body":"O cadastro PraiaMar calcula o perfil facial MP-347 com topo L+20 (×1) e laterais H−37 (×2), associado a presilha NYL-190, parafuso PAR-220 e tampa BER-2260. Porém, o detalhe técnico completo do arremate ainda não foi fornecido por Rhuan. O catálogo disponível mostra MP-347\/NYL-190 em outro conjunto, com PAR-936 e CM-200, e não comprova visualmente que o encaixe no CM-063 usa a mesma montagem. Manter as fórmulas existentes sem promover o desenho a instrução validada até receber a foto\/PDF do conjunto PraiaMar.","severity":"aviso","status":"pendente","source":"Rhuan — em 12\/07\/2026 confirmou que ainda falta enviar o detalhe do arremate. Dados parciais anteriores: módulos arrematemp347_* + catálogo Suprema Alcoa (MP-347\/NYL-190\/PAR-936\/CM-200).","source_kind":"mixed","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Só renomeia os ids citados na fonte: o prefixo wz_ (marca do importador) foi extinto — os módulos agora são arrematemp347_*. Conteúdo técnico intacto.","machine":null,"technical":{"view":"comparativo entre cadastro PraiaMar e seção de catálogo","application":"Arremate facial MP-347 sobre contramarco; detalhe final aguardando fonte PraiaMar","parts":["MP-347 — perfil de arremate","NYL-190 — presilha indicada nas duas fontes","PAR-220 e BER-2260 — cadastro PraiaMar","PAR-936 e CM-200 — conjunto mostrado no catálogo disponível"],"dimensions":["Cadastro: topo L+20 ×1","Cadastro: laterais H−37 ×2","Passo aproximado de 400 mm e quantidades ainda dependem da validação do conjunto real"],"steps":["Não alterar as fórmulas existentes sem nova medição","Receber foto\/PDF do corte do conjunto PraiaMar","Identificar perfil, presilha, parafuso e tampa no mesmo detalhe","Só então fechar ordem de montagem e cotas"],"acceptance":["Regra permanece pendente enquanto a fonte visual não chegar","Nenhuma equivalência PAR-220↔PAR-936 presumida","Nenhum encaixe NYL-190↔CM-063 tratado como confirmado"],"exceptions":["O cálculo existente não prova a montagem física","A seção do catálogo com CM-200 não valida automaticamente o conjunto CM-063","Rhuan informou que o detalhe do arremate ainda será enviado"],"source_pages":["Rhuan — 12\/07\/2026: detalhe do arremate ainda falta","Catálogo Suprema Alcoa — conjunto MP-347\/NYL-190\/PAR-936\/CM-200"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":5,"sort_order":9,"updated_at":"2026-07-14 08:28:47","versions":[{"rule_id":"arremate-mp347-conexao","revision":5,"source_kind":"mixed","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Só renomeia os ids citados na fonte: o prefixo wz_ (marca do importador) foi extinto — os módulos agora são arrematemp347_*. Conteúdo técnico intacto.","snapshot":{"id":"arremate-mp347-conexao","scope":"arremate_cm","title":"Arremate MP-347: cálculo conhecido, detalhe de encaixe pendente","body":"O cadastro PraiaMar calcula o perfil facial MP-347 com topo L+20 (×1) e laterais H−37 (×2), associado a presilha NYL-190, parafuso PAR-220 e tampa BER-2260. Porém, o detalhe técnico completo do arremate ainda não foi fornecido por Rhuan. O catálogo disponível mostra MP-347\/NYL-190 em outro conjunto, com PAR-936 e CM-200, e não comprova visualmente que o encaixe no CM-063 usa a mesma montagem. Manter as fórmulas existentes sem promover o desenho a instrução validada até receber a foto\/PDF do conjunto PraiaMar.","severity":"aviso","status":"pendente","source":"Rhuan — em 12\/07\/2026 confirmou que ainda falta enviar o detalhe do arremate. Dados parciais anteriores: módulos arrematemp347_* + catálogo Suprema Alcoa (MP-347\/NYL-190\/PAR-936\/CM-200).","source_kind":"mixed","machine":null,"technical":{"view":"comparativo entre cadastro PraiaMar e seção de catálogo","parts":["MP-347 — perfil de arremate","NYL-190 — presilha indicada nas duas fontes","PAR-220 e BER-2260 — cadastro PraiaMar","PAR-936 e CM-200 — conjunto mostrado no catálogo disponível"],"steps":["Não alterar as fórmulas existentes sem nova medição","Receber foto\/PDF do corte do conjunto PraiaMar","Identificar perfil, presilha, parafuso e tampa no mesmo detalhe","Só então fechar ordem de montagem e cotas"],"acceptance":["Regra permanece pendente enquanto a fonte visual não chegar","Nenhuma equivalência PAR-220↔PAR-936 presumida","Nenhum encaixe NYL-190↔CM-063 tratado como confirmado"],"dimensions":["Cadastro: topo L+20 ×1","Cadastro: laterais H−37 ×2","Passo aproximado de 400 mm e quantidades ainda dependem da validação do conjunto real"],"exceptions":["O cálculo existente não prova a montagem física","A seção do catálogo com CM-200 não valida automaticamente o conjunto CM-063","Rhuan informou que o detalhe do arremate ainda será enviado"],"application":"Arremate facial MP-347 sobre contramarco; detalhe final aguardando fonte PraiaMar","source_pages":["Rhuan — 12\/07\/2026: detalhe do arremate ainda falta","Catálogo Suprema Alcoa — conjunto MP-347\/NYL-190\/PAR-936\/CM-200"]},"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Só renomeia os ids citados na fonte: o prefixo wz_ (marca do importador) foi extinto — os módulos agora são arrematemp347_*. Conteúdo técnico intacto.","revision":5,"sort_order":130},"created_at":"2026-07-14 08:28:47"},{"rule_id":"arremate-mp347-conexao","revision":4,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Corrige a situação para pendente porque o detalhe de arremate ainda não foi fornecido; preserva fórmulas conhecidas sem validar encaixe por suposição.","snapshot":{"id":"arremate-mp347-conexao","scope":"arremate_cm","severity":"aviso","status":"pendente","title":"Arremate MP-347: cálculo conhecido, detalhe de encaixe pendente","body":"O cadastro PraiaMar calcula o perfil facial MP-347 com topo L+20 (×1) e laterais H−37 (×2), associado a presilha NYL-190, parafuso PAR-220 e tampa BER-2260. Porém, o detalhe técnico completo do arremate ainda não foi fornecido por Rhuan. O catálogo disponível mostra MP-347\/NYL-190 em outro conjunto, com PAR-936 e CM-200, e não comprova visualmente que o encaixe no CM-063 usa a mesma montagem. Manter as fórmulas existentes sem promover o desenho a instrução validada até receber a foto\/PDF do conjunto PraiaMar.","source":"Rhuan — em 12\/07\/2026 confirmou que ainda falta enviar o detalhe do arremate. Dados parciais anteriores: módulos wz_arrematemp347_* + catálogo Suprema Alcoa (MP-347\/NYL-190\/PAR-936\/CM-200).","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Corrige a situação para pendente porque o detalhe de arremate ainda não foi fornecido; preserva fórmulas conhecidas sem validar encaixe por suposição.","technical":{"view":"comparativo entre cadastro PraiaMar e seção de catálogo","application":"Arremate facial MP-347 sobre contramarco; detalhe final aguardando fonte PraiaMar","parts":["MP-347 — perfil de arremate","NYL-190 — presilha indicada nas duas fontes","PAR-220 e BER-2260 — cadastro PraiaMar","PAR-936 e CM-200 — conjunto mostrado no catálogo disponível"],"dimensions":["Cadastro: topo L+20 ×1","Cadastro: laterais H−37 ×2","Passo aproximado de 400 mm e quantidades ainda dependem da validação do conjunto real"],"steps":["Não alterar as fórmulas existentes sem nova medição","Receber foto\/PDF do corte do conjunto PraiaMar","Identificar perfil, presilha, parafuso e tampa no mesmo detalhe","Só então fechar ordem de montagem e cotas"],"acceptance":["Regra permanece pendente enquanto a fonte visual não chegar","Nenhuma equivalência PAR-220↔PAR-936 presumida","Nenhum encaixe NYL-190↔CM-063 tratado como confirmado"],"exceptions":["O cálculo existente não prova a montagem física","A seção do catálogo com CM-200 não valida automaticamente o conjunto CM-063","Rhuan informou que o detalhe do arremate ainda será enviado"],"source_pages":["Rhuan — 12\/07\/2026: detalhe do arremate ainda falta","Catálogo Suprema Alcoa — conjunto MP-347\/NYL-190\/PAR-936\/CM-200"]},"machine":null,"revision":4,"sort_order":117},"created_at":"2026-07-12 09:46:42"},{"rule_id":"arremate-mp347-conexao","revision":3,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Expõe a divergência PAR-220\/CM-063 do cadastro versus PAR-936\/CM-200 na seção oficial do catálogo.","snapshot":{"id":"arremate-mp347-conexao","scope":"arremate_cm","title":"Conexão do arremate MP-347: presilha + parafuso + tampa","body":"MP-347 (perfil facial sobre o CM): L+20 (×1) + H−37 (×2). Prende com presilha NYL-190 (1 a cada ~400 mm: topo ×1, laterais ×2) + parafuso PAR-220 (1 por presilha) + tampa terminal BER-2260 (×2). Já embutido nos módulos wz_arrematemp347_*.","severity":"info","status":"estimado","source":"Cadastro PraiaMar validado em 1500×1200 + Catálogo Suprema Alcoa, página impressa 41: seção MP-347 usa NYL-190 + PAR-936 sobre CM-200; confirmar equivalência com o conjunto PraiaMar CM-063 + PAR-220.","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Expõe a divergência PAR-220\/CM-063 do cadastro versus PAR-936\/CM-200 na seção oficial do catálogo.","machine":null,"technical":{"view":"corte_vertical","application":"Arremate MP-347 sobre o contramarco padrão PraiaMar CM-063; porta com 3 lados","parts":["MP-347 — arremate 12 × 37 mm","NYL-190 — presilha","PAR-220 — parafuso usado no cadastro atual","BER-2260 — tampa terminal","CM-063 — contramarco padrão PraiaMar"],"dimensions":["Topo: L+20 ×1","Laterais: H−37 ×2","Presilhas: aproximadamente a cada 400 mm"],"steps":["Cortar topo e laterais","Distribuir NYL-190 no perímetro","Confirmar o parafuso e o encaixe no CM-063 antes de tratar o detalhe como validado"],"acceptance":["Quantidades do cálculo conferem","Parafuso e encaixe físico estão comprovados no conjunto CM-063"],"exceptions":["O catálogo mostra PAR-936 e CM-200, não PAR-220 e CM-063","Foto\/corte real do conjunto PraiaMar ainda necessário"],"source_pages":["Catálogo Suprema Alcoa — página impressa 41","Cadastro PraiaMar validado em 1500 × 1200"]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":9,"updated_at":"2026-07-12 08:57:49"},"created_at":"2026-07-12 09:12:35"},{"rule_id":"arremate-mp347-conexao","revision":2,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Expõe a divergência PAR-220\/CM-063 do cadastro versus PAR-936\/CM-200 na seção oficial do catálogo.","snapshot":{"id":"arremate-mp347-conexao","scope":"arremate_cm","title":"Conexão do arremate MP-347: presilha + parafuso + tampa","body":"MP-347 (perfil facial sobre o CM): L+20 (×1) + H−37 (×2). Prende com presilha NYL-190 (1 a cada ~400 mm: topo ×1, laterais ×2) + parafuso PAR-220 (1 por presilha) + tampa terminal BER-2260 (×2). Já embutido nos módulos wz_arrematemp347_*.","severity":"info","status":"estimado","source":"Validado @1500×1200 — doc\/lesson\/knowledge\/suprema.md + Catálogo Suprema Alcoa, página impressa 41: seção MP-347 usa NYL-190 + PAR-936 sobre CM-200; confirmar equivalência com o conjunto PraiaMar.","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Expõe a divergência PAR-220\/CM-063 do cadastro versus PAR-936\/CM-200 na seção oficial do catálogo.","machine":null,"technical":{"view":"corte_vertical","application":"Arremate MP-347 sobre o contramarco padrão PraiaMar CM-063; porta com 3 lados","parts":["MP-347 — arremate 12 × 37 mm","NYL-190 — presilha","PAR-220 — parafuso usado no cadastro atual","BER-2260 — tampa terminal","CM-063 — contramarco padrão PraiaMar"],"dimensions":["Topo: L+20 ×1","Laterais: H−37 ×2","Presilhas: aproximadamente a cada 400 mm"],"steps":["Cortar topo e laterais","Distribuir NYL-190 no perímetro","Confirmar o parafuso e o encaixe no CM-063 antes de tratar o detalhe como validado"],"acceptance":["Quantidades do cálculo conferem","Parafuso e encaixe físico estão comprovados no conjunto CM-063"],"exceptions":["O catálogo mostra PAR-936 e CM-200, não PAR-220 e CM-063","Foto\/corte real do conjunto PraiaMar ainda necessário"],"source_pages":["Catálogo Suprema Alcoa — página impressa 41","Cadastro PraiaMar validado em 1500 × 1200"]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":9,"updated_at":"2026-07-08 12:57:49"},"created_at":"2026-07-12 08:57:49"},{"rule_id":"arremate-mp347-conexao","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"arremate-mp347-conexao","body":"MP-347 (perfil facial sobre o CM): L+20 (×1) + H−37 (×2). Prende com presilha NYL-190 (1 a cada ~400 mm: topo ×1, laterais ×2) + parafuso PAR-220 (1 por presilha) + tampa terminal BER-2260 (×2). Já embutido nos módulos wz_arrematemp347_*.","scope":"arremate_cm","title":"Conexão do arremate MP-347: presilha + parafuso + tampa","source":"Validado @1500×1200 — doc\/lesson\/knowledge\/suprema.md","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":9,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"vidro-cadeia-descontos","scope":"vidro","title":"O vidro é derivado da cadeia de montagem — não tem número mágico","body":"vão → marco → folha → baguete\/guarnição → vidro. Cada interface desconta, e o desconto é do PERFIL (marco lateral 0 · trilho 26 · marco superior MN 44 · guia persiana MN-007 210 · terminal MN-055 120). vidroW = (vão − Σ descontos de largura) \/ folhas − folga; vidroH = vão − Σ descontos de altura.","severity":"info","status":"validado","source":"Derivado dos cortes reais (Hickmann, spread 0) — doc\/lesson\/knowledge\/suprema.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":["MN-007","MN-055"],"dimensions":["vidroW = (vão − Σ descontos de largura) \/ folhas − folga; vidroH = vão − Σ descontos de altura."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/lesson\/knowledge\/suprema.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":10,"updated_at":"2026-07-08 12:57:49","versions":[{"rule_id":"vidro-cadeia-descontos","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"vidro-cadeia-descontos","body":"vão → marco → folha → baguete\/guarnição → vidro. Cada interface desconta, e o desconto é do PERFIL (marco lateral 0 · trilho 26 · marco superior MN 44 · guia persiana MN-007 210 · terminal MN-055 120). vidroW = (vão − Σ descontos de largura) \/ folhas − folga; vidroH = vão − Σ descontos de altura.","scope":"vidro","title":"O vidro é derivado da cadeia de montagem — não tem número mágico","source":"Derivado dos cortes reais (Hickmann, spread 0) — doc\/lesson\/knowledge\/suprema.md","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":10,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"vidro-folga-3mm","scope":"vidro","title":"Folga do vidro na canaleta: 3 mm por lado","body":"Derivado do dado (≈3) e confirmado no chão de fábrica (Rhuan: 3 a 5 mm em cada lado da aba interna). Padrão do setor: 2–3 mm.","severity":"info","status":"validado","source":"Hickmann + Rhuan — doc\/VIDRO_MONTAGEM.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":[],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/VIDRO_MONTAGEM.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":11,"updated_at":"2026-07-08 12:57:49","versions":[{"rule_id":"vidro-folga-3mm","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"vidro-folga-3mm","body":"Derivado do dado (≈3) e confirmado no chão de fábrica (Rhuan: 3 a 5 mm em cada lado da aba interna). Padrão do setor: 2–3 mm.","scope":"vidro","title":"Folga do vidro na canaleta: 3 mm por lado","source":"Hickmann + Rhuan — doc\/VIDRO_MONTAGEM.md","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":11,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"vidro-sempre-baguete","scope":"vidro","title":"Sempre COM baguete (SU-102) — linha Suprema Classic","body":"A config da PraiaMar usa baguete (SU-102 padrão, SU-103 largo) no giro\/correr\/maxim; as fórmulas de vidro calibradas são da linha Classic (com baguete). A versão SU-279 \"sem baguete\" (vidro na guarnição) fica só como referência.","severity":"info","status":"validado","source":"Rhuan — doc\/lesson\/knowledge\/suprema.md","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Substitui seção genérica por comparação baseada em SU-053+SU-102 e no perfil SU-279 do catálogo.","machine":null,"technical":{"view":"corte_vertical","application":"Configuração PraiaMar da linha Suprema Classic; giro, correr e maxim-ar calibrados com baguete","parts":["SU-102 — baguete padrão","SU-103 — baguete larga quando aplicável","SU-053 — exemplo de travessa de folha com baguete","SU-279 — marco lateral de sistema sem baguete, somente referência"],"dimensions":["SU-102: 10\/11 × 12 mm","SU-053: canal 14,7 mm; altura 51 mm","SU-279: 41,3 × 33,3 mm"],"steps":["Manter SU-102\/SU-103 na configuração calibrada","Escolher a guarnição compatível com o vidro","Recalibrar perfis e vidro antes de migrar para SU-279"],"acceptance":["Baguete está presente nas tipologias calibradas","SU-279 não entra silenciosamente nas fórmulas atuais"],"exceptions":["A comparação mostra seções simplificadas; não é gabarito de fabricação"],"source_pages":["Catálogo Suprema Alcoa — páginas impressas 59, 71 e 72","Rhuan — configuração PraiaMar sempre com baguete"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":12,"updated_at":"2026-07-12 08:57:49","versions":[{"rule_id":"vidro-sempre-baguete","revision":2,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Substitui seção genérica por comparação baseada em SU-053+SU-102 e no perfil SU-279 do catálogo.","snapshot":{"id":"vidro-sempre-baguete","scope":"vidro","title":"Sempre COM baguete (SU-102) — linha Suprema Classic","body":"A config da PraiaMar usa baguete (SU-102 padrão, SU-103 largo) no giro\/correr\/maxim; as fórmulas de vidro calibradas são da linha Classic (com baguete). A versão SU-279 \"sem baguete\" (vidro na guarnição) fica só como referência.","severity":"info","status":"validado","source":"Rhuan — doc\/lesson\/knowledge\/suprema.md","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Substitui seção genérica por comparação baseada em SU-053+SU-102 e no perfil SU-279 do catálogo.","machine":null,"technical":{"view":"corte_vertical","application":"Configuração PraiaMar da linha Suprema Classic; giro, correr e maxim-ar calibrados com baguete","parts":["SU-102 — baguete padrão","SU-103 — baguete larga quando aplicável","SU-053 — exemplo de travessa de folha com baguete","SU-279 — marco lateral de sistema sem baguete, somente referência"],"dimensions":["SU-102: 10\/11 × 12 mm","SU-053: canal 14,7 mm; altura 51 mm","SU-279: 41,3 × 33,3 mm"],"steps":["Manter SU-102\/SU-103 na configuração calibrada","Escolher a guarnição compatível com o vidro","Recalibrar perfis e vidro antes de migrar para SU-279"],"acceptance":["Baguete está presente nas tipologias calibradas","SU-279 não entra silenciosamente nas fórmulas atuais"],"exceptions":["A comparação mostra seções simplificadas; não é gabarito de fabricação"],"source_pages":["Catálogo Suprema Alcoa — páginas impressas 59, 71 e 72","Rhuan — configuração PraiaMar sempre com baguete"]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":12,"updated_at":"2026-07-08 12:57:49"},"created_at":"2026-07-12 08:57:49"},{"rule_id":"vidro-sempre-baguete","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"vidro-sempre-baguete","body":"A config da PraiaMar usa baguete (SU-102 padrão, SU-103 largo) no giro\/correr\/maxim; as fórmulas de vidro calibradas são da linha Classic (com baguete). A versão SU-279 \"sem baguete\" (vidro na guarnição) fica só como referência.","scope":"vidro","title":"Sempre COM baguete (SU-102) — linha Suprema Classic","source":"Rhuan — doc\/lesson\/knowledge\/suprema.md","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":12,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"vidro-guarnicao-espessura","scope":"vidro","title":"Guarnição (borracha): prensa, trava e veda o vidro","body":"Guarnição é o nome técnico da borracha. Na seção visual do conjunto com baguete, a sequência é: aba do alumínio → espuma de apoio → vidro → guarnição\/borracha → baguete de alumínio. A ordem de montagem é diferente da ordem visual: posicionar a espuma e o vidro, encaixar a baguete e instalar a borracha por último. Ao entrar por último, a borracha faz a prensa contra o vidro, elimina o escorregamento e fecha a vedação contra entrada de água. Essa função vale para janela, porta e vidro fixo. A guarnição deve ser compatível com a espessura do vidro e com o sistema de perfil; códigos GUA específicos só podem ser lançados depois de conferir a tabela correta do catálogo.","severity":"erro","status":"validado","source":"Rhuan — explicação técnica direta em 12\/07\/2026 sobre seção e fluxo de montagem + catálogo Suprema Alcoa, detalhes de baguete\/guarnição nas págs. impressas 95 e 105.","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Corrige a regra para o conjunto real com baguete e separa sequência visual da seção da ordem prática de montagem informada por Rhuan.","machine":null,"technical":{"view":"corte ampliado + sequência de montagem","application":"Retenção e vedação do vidro em janelas, portas e vidros fixos com baguete","parts":["Aba do perfil de alumínio","Espuma de apoio","Vidro","Guarnição (borracha)","Baguete de alumínio — SU-102\/SU-103 conforme sistema"],"dimensions":["Espessura da guarnição depende da espessura do vidro e do canal do perfil","Códigos GUA por espessura aguardam leitura inequívoca da tabela correta"],"steps":["Apoiar\/posicionar a espuma na aba do alumínio","Colocar o vidro na posição","Encaixar a baguete de alumínio","Inserir a guarnição\/borracha por último até prensar todo o vidro"],"acceptance":["Vidro prensado sem escorregar","Borracha contínua e assentada, sem trechos soltos","Baguete completamente encaixada","Conjunto vedado contra entrada de água"],"exceptions":["Não confundir ordem visual da seção com ordem de montagem","Não instalar a borracha antes da baguete","Não atribuir código GUA apenas pela espessura sem conferir sistema, posição e tabela do catálogo"],"source_pages":["Rhuan — sequência técnica e montagem, 12\/07\/2026","Catálogo Suprema Alcoa — págs. impressas 95 e 105"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":4,"sort_order":13,"updated_at":"2026-07-12 09:42:30","versions":[{"rule_id":"vidro-guarnicao-espessura","revision":4,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Corrige a regra para o conjunto real com baguete e separa sequência visual da seção da ordem prática de montagem informada por Rhuan.","snapshot":{"id":"vidro-guarnicao-espessura","scope":"vidro","severity":"erro","status":"validado","title":"Guarnição (borracha): prensa, trava e veda o vidro","body":"Guarnição é o nome técnico da borracha. Na seção visual do conjunto com baguete, a sequência é: aba do alumínio → espuma de apoio → vidro → guarnição\/borracha → baguete de alumínio. A ordem de montagem é diferente da ordem visual: posicionar a espuma e o vidro, encaixar a baguete e instalar a borracha por último. Ao entrar por último, a borracha faz a prensa contra o vidro, elimina o escorregamento e fecha a vedação contra entrada de água. Essa função vale para janela, porta e vidro fixo. A guarnição deve ser compatível com a espessura do vidro e com o sistema de perfil; códigos GUA específicos só podem ser lançados depois de conferir a tabela correta do catálogo.","source":"Rhuan — explicação técnica direta em 12\/07\/2026 sobre seção e fluxo de montagem + catálogo Suprema Alcoa, detalhes de baguete\/guarnição nas págs. impressas 95 e 105.","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Corrige a regra para o conjunto real com baguete e separa sequência visual da seção da ordem prática de montagem informada por Rhuan.","technical":{"view":"corte ampliado + sequência de montagem","application":"Retenção e vedação do vidro em janelas, portas e vidros fixos com baguete","parts":["Aba do perfil de alumínio","Espuma de apoio","Vidro","Guarnição (borracha)","Baguete de alumínio — SU-102\/SU-103 conforme sistema"],"dimensions":["Espessura da guarnição depende da espessura do vidro e do canal do perfil","Códigos GUA por espessura aguardam leitura inequívoca da tabela correta"],"steps":["Apoiar\/posicionar a espuma na aba do alumínio","Colocar o vidro na posição","Encaixar a baguete de alumínio","Inserir a guarnição\/borracha por último até prensar todo o vidro"],"acceptance":["Vidro prensado sem escorregar","Borracha contínua e assentada, sem trechos soltos","Baguete completamente encaixada","Conjunto vedado contra entrada de água"],"exceptions":["Não confundir ordem visual da seção com ordem de montagem","Não instalar a borracha antes da baguete","Não atribuir código GUA apenas pela espessura sem conferir sistema, posição e tabela do catálogo"],"source_pages":["Rhuan — sequência técnica e montagem, 12\/07\/2026","Catálogo Suprema Alcoa — págs. impressas 95 e 105"]},"machine":null,"revision":4,"sort_order":117},"created_at":"2026-07-12 09:42:30"},{"rule_id":"vidro-guarnicao-espessura","revision":3,"source_kind":"pdf","author_type":"codex","author_name":"OpenAI Codex","change_note":"Remove do desenho o mapa falso de códigos por espessura e explicita a prova ainda necessária.","snapshot":{"id":"vidro-guarnicao-espessura","scope":"vidro","title":"Guarnição escolhida pela espessura do vidro","body":"Vidro sem baguete prende com guarnição escolhida pela ESPESSURA (versão interna + externa). ⚠ CONFERIR no catálogo: o mapa espessura→código veio embaralhado na extração e não fecha 1:1 (4 espessuras 3\/4\/5\/6 mm × 5 códigos candidatos GUA-256\/258\/259\/171\/157). É a guarnição que dá a folga do vidro no SU-279. Confirmar no Catálogo Alcoa Suprema (p.95\/105) antes de usar no motor.","severity":"info","status":"estimado","source":"Catálogo Alcoa Suprema pág. 105 — doc\/lesson\/knowledge\/suprema.md","source_kind":"pdf","author_type":"codex","author_name":"OpenAI Codex","change_note":"Remove do desenho o mapa falso de códigos por espessura e explicita a prova ainda necessária.","machine":null,"technical":{"view":"esquema","application":"Sistemas de vidro sem baguete; exige par de guarnições interna e externa compatível com a espessura","parts":["Candidatos extraídos: GUA-256, GUA-258, GUA-259, GUA-171 e GUA-157","Guarnição interna e guarnição externa","Vidros de 3, 4, 5 ou 6 mm"],"dimensions":["A espessura do vidro define o par de guarnições","O mapa código × espessura ainda não foi confirmado"],"steps":["Localizar a tabela legível do catálogo","Separar código interno e externo","Relacionar cada par à espessura","Só então liberar a regra para o motor"],"acceptance":["Cada espessura aponta para um par interno\/externo comprovado por página","Nenhum código é inferido por ordem de extração"],"exceptions":["Não usar no motor enquanto a tabela não for conferida"],"source_pages":["Catálogo Suprema Alcoa — referências p. 95\/105; recorte da tabela ainda necessário"]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":13,"updated_at":"2026-07-12 01:33:34"},"created_at":"2026-07-12 08:57:49"},{"rule_id":"vidro-guarnicao-espessura","revision":2,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"vidro-guarnicao-espessura","body":"Vidro sem baguete prende com guarnição escolhida pela ESPESSURA (versão interna + externa). ⚠ CONFERIR no catálogo: o mapa espessura→código veio embaralhado na extração e não fecha 1:1 (4 espessuras 3\/4\/5\/6 mm × 5 códigos candidatos GUA-256\/258\/259\/171\/157). É a guarnição que dá a folga do vidro no SU-279. Confirmar no Catálogo Alcoa Suprema (p.95\/105) antes de usar no motor.","scope":"vidro","title":"Guarnição escolhida pela espessura do vidro","source":"Catálogo Alcoa Suprema pág. 105 — doc\/lesson\/knowledge\/suprema.md","status":"estimado","enabled":1,"machine":null,"revision":2,"severity":"info","technical":null,"sort_order":13,"updated_at":"2026-07-12 01:33:34.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"geral-codigo-real","scope":"geral","title":"Usar código REAL do catálogo — nunca placeholder inventado","body":"Todo perfil precisa de peso\/m conhecido e todo componente precisa existir no catálogo com preço. Código inventado (ROL-JAC, FECHO-JAC…) zera custo em silêncio e o orçamento sai mais barato que o real.","severity":"aviso","status":"validado","source":"Revisão do Rhuan — doc\/lesson\/knowledge\/typology-rules.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":{"check":"known_refs"},"technical":{"view":"","application":"","parts":[],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/lesson\/knowledge\/typology-rules.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":14,"updated_at":"2026-07-08 12:57:49","versions":[{"rule_id":"geral-codigo-real","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"geral-codigo-real","body":"Todo perfil precisa de peso\/m conhecido e todo componente precisa existir no catálogo com preço. Código inventado (ROL-JAC, FECHO-JAC…) zera custo em silêncio e o orçamento sai mais barato que o real.","scope":"geral","title":"Usar código REAL do catálogo — nunca placeholder inventado","source":"Revisão do Rhuan — doc\/lesson\/knowledge\/typology-rules.md","status":"validado","enabled":1,"machine":{"check":"known_refs"},"revision":1,"severity":"aviso","technical":null,"sort_order":14,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"sistema-preco-congela","scope":"sistema","title":"Preço congela no orçamento salvo","body":"Ao salvar, o orçamento tira um snapshot do preço. Mudança de catálogo\/margem NÃO mexe em orçamento existente — só recalcula sob comando explícito (recalc_quote).","severity":"info","status":"validado","source":"doc\/CALCULOS.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":[],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/CALCULOS.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":15,"updated_at":"2026-07-08 12:57:49","versions":[{"rule_id":"sistema-preco-congela","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"sistema-preco-congela","body":"Ao salvar, o orçamento tira um snapshot do preço. Mudança de catálogo\/margem NÃO mexe em orçamento existente — só recalcula sob comando explícito (recalc_quote).","scope":"sistema","title":"Preço congela no orçamento salvo","source":"doc\/CALCULOS.md","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":15,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"sistema-recalculo-servidor","scope":"sistema","title":"Número do navegador nunca é confiável","body":"Todo valor é recalculado no servidor ao salvar. O que o cliente manda é intenção (medidas, escolhas); o preço é sempre do motor.","severity":"info","status":"validado","source":"doc\/CALCULOS.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":[],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/CALCULOS.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":16,"updated_at":"2026-07-08 12:57:49","versions":[{"rule_id":"sistema-recalculo-servidor","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"sistema-recalculo-servidor","body":"Todo valor é recalculado no servidor ao salvar. O que o cliente manda é intenção (medidas, escolhas); o preço é sempre do motor.","scope":"sistema","title":"Número do navegador nunca é confiável","source":"doc\/CALCULOS.md","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":16,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"sistema-formula-grita","scope":"sistema","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","body":"Toda fórmula de peça, vidro, variável ou módulo só pode usar nomes DEFINIDOS: L (largura), H (altura), os lados (LADOS\/HLADOS\/CANTOS), um Parâmetro ou uma Variável derivada da tipologia. Nome órfão (ex.: A\/B numa modular que perdeu suas variáveis no import) faz o motor calcular 0 EM SILÊNCIO — peça sai com comprimento 0, o vidro some e o preço erra. Verificado automaticamente: se aparecer aqui, defina o nome em 'Variáveis derivadas' (ex.: A = INT(H\/800)+1) ou em 'Parâmetros'.","severity":"aviso","status":"validado","source":"app\/models\/FormulaParser.php + TypologyAdvisor (orphan_vars)","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":{"check":"orphan_vars","applies":[]},"technical":{"view":"","application":"","parts":[],"dimensions":["L (largura), H (altura), os lados (LADOS\/HLADOS\/CANTOS), um Parâmetro ou uma Variável derivada da tipologia.","A = INT(H\/800)+1) ou em 'Parâmetros'."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["app\/models\/FormulaParser.php"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":17,"updated_at":"2026-07-10 17:16:42","versions":[{"rule_id":"sistema-formula-grita","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"sistema-formula-grita","body":"Toda fórmula de peça, vidro, variável ou módulo só pode usar nomes DEFINIDOS: L (largura), H (altura), os lados (LADOS\/HLADOS\/CANTOS), um Parâmetro ou uma Variável derivada da tipologia. Nome órfão (ex.: A\/B numa modular que perdeu suas variáveis no import) faz o motor calcular 0 EM SILÊNCIO — peça sai com comprimento 0, o vidro some e o preço erra. Verificado automaticamente: se aparecer aqui, defina o nome em 'Variáveis derivadas' (ex.: A = INT(H\/800)+1) ou em 'Parâmetros'.","scope":"sistema","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","source":"app\/models\/FormulaParser.php + TypologyAdvisor (orphan_vars)","status":"validado","enabled":1,"machine":{"check":"orphan_vars","applies":[]},"revision":1,"severity":"aviso","technical":null,"sort_order":17,"updated_at":"2026-07-10 17:16:42.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"tipologia-adaptada","scope":"geral","title":"Tipologia adaptada é legítima — nem tudo tem catálogo","body":"Pivotante e outras tipologias nascem da criatividade do serralheiro: unindo um perfil aqui, outro ali, saem esquadrias que nenhum catálogo documenta — e que talvez nunca sejam documentadas. Ausência em catálogo NÃO é defeito da tipologia. Receita para elas: (1) derivar o vidro pela cadeia de montagem (o desconto é do PERFIL — a tabela de folgas por perfil do CORTALUMÍNIO cobre a Suprema inteira, ver doc\/lesson\/knowledge\/cortaluminio.md), (2) marcar a fórmula como ESTIMADA, (3) calibrar com 1 corte real. Não travar cadastro por falta de fonte oficial.","severity":"info","status":"validado","source":"Rhuan (08\/07\/2026) — adaptações do serralheiro · doc\/lesson\/knowledge\/suprema.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":[],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/lesson\/knowledge\/suprema.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":18,"updated_at":"2026-07-08 12:57:49","versions":[{"rule_id":"tipologia-adaptada","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"tipologia-adaptada","body":"Pivotante e outras tipologias nascem da criatividade do serralheiro: unindo um perfil aqui, outro ali, saem esquadrias que nenhum catálogo documenta — e que talvez nunca sejam documentadas. Ausência em catálogo NÃO é defeito da tipologia. Receita para elas: (1) derivar o vidro pela cadeia de montagem (o desconto é do PERFIL — a tabela de folgas por perfil do CORTALUMÍNIO cobre a Suprema inteira, ver doc\/lesson\/knowledge\/cortaluminio.md), (2) marcar a fórmula como ESTIMADA, (3) calibrar com 1 corte real. Não travar cadastro por falta de fonte oficial.","scope":"geral","title":"Tipologia adaptada é legítima — nem tudo tem catálogo","source":"Rhuan (08\/07\/2026) — adaptações do serralheiro · doc\/lesson\/knowledge\/suprema.md","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":18,"updated_at":"2026-07-08 12:57:49.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"dado-impreciso-flag","scope":"sistema","title":"Dado impreciso → flag de calibração na tipologia (nunca em silêncio)","body":"A alimentação do sistema é incremental: vamos passar anos calibrando ponto por ponto. Todo valor derivado\/estimado que só a produção confirma (fórmula de vidro de tipologia adaptada, corte herdado sem revisão, peso em dúvida…) NÃO pode ficar em silêncio: marcar no card \"Calibração pendente\" da página da tipologia (mecanismo global: tabela calibration_flags). A flag vira ⚠ na tipologia, badge \"calibrar\" no catálogo e entra no backlog de \/knowledge. Quando o número real for medido, resolver a flag registrando o valor — o histórico fica. 1º caso: vidro da pivotante SU-JPV (sistema de origem nunca configurou; fórmula atual é derivada das peças).","severity":"aviso","status":"validado","source":"Rhuan (08\/07\/2026) — calibração contínua do sistema · doc\/lesson\/knowledge\/suprema.md","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":[],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/lesson\/knowledge\/suprema.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":19,"updated_at":"2026-07-14 08:28:23","versions":[{"rule_id":"dado-impreciso-flag","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"dado-impreciso-flag","body":"A alimentação do sistema é incremental: vamos passar anos calibrando ponto por ponto. Todo valor derivado\/estimado que só a produção confirma (fórmula de vidro de tipologia adaptada, corte herdado sem revisão, peso em dúvida…) NÃO pode ficar em silêncio: marcar no card \"Calibração pendente\" da página da tipologia (mecanismo global: tabela calibration_flags). A flag vira ⚠ na tipologia, badge \"calibrar\" no catálogo e entra no backlog de \/knowledge. Quando o número real for medido, resolver a flag registrando o valor — o histórico fica. 1º caso: vidro da pivotante wz_sujpv (sistema de origem nunca configurou; fórmula atual é derivada das peças).","scope":"sistema","title":"Dado impreciso → flag de calibração na tipologia (nunca em silêncio)","source":"Rhuan (08\/07\/2026) — calibração contínua do sistema · doc\/lesson\/knowledge\/suprema.md","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"aviso","technical":null,"sort_order":19,"updated_at":"2026-07-10 17:54:43.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-fecho-concha","scope":"correr","title":"Fecho concha: base na folha que corre; com chave TROCA a sem chave; papagaio = a fechadura-chave","body":"O fecho concha é a peça de travar da folha que CORRE — vai SÓ na folha que corre; a folha Fixa (F) NÃO recebe fecho concha (salvo forçar na mão). É UM fecho só, em duas versões que se TROCAM (nunca somam): SEM chave = FEC-680 (Fecho concha manual s\/chave 192mm L. Suprema, R$ 13 — base padrão) e COM chave = SP-1053 (Fecho concha com chave suprema, R$ 36). A chave é OPCIONAL (toggle \"tranca chave\" da folha): marcá-la TROCA a peça (FEC-680 → SP-1053), não adiciona outra. \"Papagaio\" é o apelido dessa fechadura-chave de porta de correr — é o MESMO componente da versão com chave (na linha armoni o equivalente é SD-1076). Confirmado no sistema anterior: o grupo de fechos é radio EXCLUSIVO (c\/ chave OU s\/ chave). No motor: leaf_hardware.concha = versão base (sem chave); leaf_hardware.chave = versão com chave, que substitui quando marcada.","severity":"info","status":"validado","source":"Rhuan (chat) + sistema de origem (grupo de fechos radio) — 2026-07-08","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":["FEC-680","SP-1053","SD-1076"],"dimensions":["SEM chave = FEC-680 (Fecho concha manual s\/chave 192mm L.","Suprema, R$ 13 — base padrão) e COM chave = SP-1053 (Fecho concha com chave suprema, R$ 36).","leaf_hardware.concha = versão base (sem chave); leaf_hardware.chave = versão com chave, que substitui quando marcada."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":20,"updated_at":"2026-07-10 17:54:43","versions":[{"rule_id":"correr-fecho-concha","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-fecho-concha","body":"O fecho concha é a peça de travar da folha que CORRE — vai SÓ na folha que corre; a folha Fixa (F) NÃO recebe fecho concha (salvo forçar na mão). É UM fecho só, em duas versões que se TROCAM (nunca somam): SEM chave = FEC-680 (Fecho concha manual s\/chave 192mm L. Suprema, R$ 13 — base padrão) e COM chave = SP-1053 (Fecho concha com chave suprema, R$ 36). A chave é OPCIONAL (toggle \"tranca chave\" da folha): marcá-la TROCA a peça (FEC-680 → SP-1053), não adiciona outra. \"Papagaio\" é o apelido dessa fechadura-chave de porta de correr — é o MESMO componente da versão com chave (na linha armoni o equivalente é SD-1076). Confirmado no sistema anterior: o grupo de fechos é radio EXCLUSIVO (c\/ chave OU s\/ chave). No motor: leaf_hardware.concha = versão base (sem chave); leaf_hardware.chave = versão com chave, que substitui quando marcada.","scope":"correr","title":"Fecho concha: base na folha que corre; com chave TROCA a sem chave; papagaio = a fechadura-chave","source":"Rhuan (chat) + sistema de origem (grupo de fechos radio) — 2026-07-08","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":20,"updated_at":"2026-07-10 17:54:43.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"box-composicao","scope":"box","title":"Box padrão: peças prontas de temperado 8mm — F1 = 1 fixo + 1 porta; C1 (canto) = 2 fixos + 2 portas","body":"Box padrão de banheiro usa vidro temperado 8mm incolor em peças PRONTAS de fábrica: FIXO com 1845 mm de altura e PORTA com 1880 mm. Larguras em degraus de 50 mm (350 a 1000). F1 = frente reta com 1 fixo + 1 porta de correr; C1 = canto (em L) com 2 fixos + 2 portas, portas se encontrando no canto. O código INC08FP do fornecedor diz \"FORA PADRÃO\", mas é erro de texto do sistema deles — é o box padrão.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + catálogo do fornecedor, 09\/07\/2026","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":["F1","C1"],"dimensions":["F1 = frente reta com 1 fixo + 1 porta de correr; C1 = canto (em L) com 2 fixos + 2 portas, portas se encontrando no canto."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":21,"updated_at":"2026-07-10 17:54:43","versions":[{"rule_id":"box-composicao","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"box-composicao","body":"Box padrão de banheiro usa vidro temperado 8mm incolor em peças PRONTAS de fábrica: FIXO com 1845 mm de altura e PORTA com 1880 mm. Larguras em degraus de 50 mm (350 a 1000). F1 = frente reta com 1 fixo + 1 porta de correr; C1 = canto (em L) com 2 fixos + 2 portas, portas se encontrando no canto. O código INC08FP do fornecedor diz \"FORA PADRÃO\", mas é erro de texto do sistema deles — é o box padrão.","scope":"box","title":"Box padrão: peças prontas de temperado 8mm — F1 = 1 fixo + 1 porta; C1 (canto) = 2 fixos + 2 portas","source":"PraiaMar (Rhuan) + catálogo do fornecedor, 09\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"aviso","technical":null,"sort_order":21,"updated_at":"2026-07-10 17:54:43.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"box-transpasse-minimo-25","scope":"box","title":"Transpasse mínimo de 25 mm entre a porta e o fixo","body":"A soma das larguras (fixo + porta) tem que passar do vão em pelo menos 25 mm — é o transpasse (sobreposição) mínimo. As larguras sobem em degraus de 50 mm: fixo = CEIL(L\/100)*50 (metade do vão arredondada pra cima) e a porta completa o que falta: CEIL((L+25-fixo)\/50)*50. Exemplos do balcão: vão até 1275 = fixo 650 + porta 650; vão 1280 = fixo 650 + porta 700 (650+650 daria só 20 mm de transpasse — não serve).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan), exemplos reais — 09\/07\/2026","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":[],"dimensions":["CEIL((L+25-fixo)\/50)*50.","vão até 1275 = fixo 650 + porta 650; vão 1280 = fixo 650 + porta 700 (650+650 daria só 20 mm de transpasse — não serve)."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":22,"updated_at":"2026-07-09 12:55:09","versions":[{"rule_id":"box-transpasse-minimo-25","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"box-transpasse-minimo-25","body":"A soma das larguras (fixo + porta) tem que passar do vão em pelo menos 25 mm — é o transpasse (sobreposição) mínimo. As larguras sobem em degraus de 50 mm: fixo = CEIL(L\/100)*50 (metade do vão arredondada pra cima) e a porta completa o que falta: CEIL((L+25-fixo)\/50)*50. Exemplos do balcão: vão até 1275 = fixo 650 + porta 650; vão 1280 = fixo 650 + porta 700 (650+650 daria só 20 mm de transpasse — não serve).","scope":"box","title":"Transpasse mínimo de 25 mm entre a porta e o fixo","source":"PraiaMar (Rhuan), exemplos reais — 09\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"erro","technical":null,"sort_order":22,"updated_at":"2026-07-09 12:55:09.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"box-vidro-m2-altura-comercial","scope":"box","title":"Vidro de box: cobrado por m² com altura comercial de 1,90 m","body":"O fornecedor cobra o vidro do box por m² (INC08: R$ 137,39\/m² em jul\/2026), calculando a área com altura COMERCIAL de 1.900 mm por peça — tanto o fixo (fabricação 1845) quanto a porta (fabricação 1880) contam 1,90 m de altura na conta. Inferido do carrinho real do fornecedor (a conta bate em todas as linhas conferidas: ex. peça de 350 de largura = 0,665 m² = 1,90 × 0,35). Confirmar na próxima compra.","severity":"aviso","status":"estimado","source":"carrinho do fornecedor conferido linha a linha — 09\/07\/2026","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":["INC08"],"dimensions":["peça de 350 de largura = 0,665 m² = 1,90 × 0,35)."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":23,"updated_at":"2026-07-10 17:54:43","versions":[{"rule_id":"box-vidro-m2-altura-comercial","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"box-vidro-m2-altura-comercial","body":"O fornecedor cobra o vidro do box por m² (INC08: R$ 137,39\/m² em jul\/2026), calculando a área com altura COMERCIAL de 1.900 mm por peça — tanto o fixo (fabricação 1845) quanto a porta (fabricação 1880) contam 1,90 m de altura na conta. Inferido do carrinho real do fornecedor (a conta bate em todas as linhas conferidas: ex. peça de 350 de largura = 0,665 m² = 1,90 × 0,35). Confirmar na próxima compra.","scope":"box","title":"Vidro de box: cobrado por m² com altura comercial de 1,90 m","source":"carrinho do fornecedor conferido linha a linha — 09\/07\/2026","status":"estimado","enabled":1,"machine":null,"revision":1,"severity":"aviso","technical":null,"sort_order":23,"updated_at":"2026-07-10 17:54:43.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"box-lapidacao-reta-padrao","scope":"box","title":"Lapidação: reta é o padrão (meia-cana só sob encomenda)","body":"Lapidação reta e meia-cana custam o MESMO preço. Meia-cana quase não tem estoque no fornecedor — pedir é esperar. Por isso o padrão da casa é pedir o box e ele vem com lapidação reta.","severity":"info","status":"validado","source":"PraiaMar (Rhuan) — 09\/07\/2026","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":[],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":24,"updated_at":"2026-07-09 12:55:09","versions":[{"rule_id":"box-lapidacao-reta-padrao","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"box-lapidacao-reta-padrao","body":"Lapidação reta e meia-cana custam o MESMO preço. Meia-cana quase não tem estoque no fornecedor — pedir é esperar. Por isso o padrão da casa é pedir o box e ele vem com lapidação reta.","scope":"box","title":"Lapidação: reta é o padrão (meia-cana só sob encomenda)","source":"PraiaMar (Rhuan) — 09\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":24,"updated_at":"2026-07-09 12:55:09.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"box-kit-makit-padrao","scope":"box","title":"Kit MAKIT é o padrão; linha AL só quando o cliente pedir","body":"Orçamento de box padrão sai com kit MAKIT (o mais barato). A linha AL só entra por preferência explícita do cliente (grade ainda não cadastrada). O kit certo é o MENOR que comporta o vão — degraus 120\/133\/150\/160\/180\/200 cm no F1 e 90\/100\/120\/150 no C1 — e o motor escolhe sozinho pela família (w_max ≥ vão). Cores: branco e preto cobrem 98% das vendas; as outras ficam pra depois.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 09\/07\/2026","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":{"check":"kit_families_known","applies":{"kind":["box"]}},"technical":{"view":"","application":"","parts":["F1","C1"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":25,"updated_at":"2026-07-09 17:00:47","versions":[{"rule_id":"box-kit-makit-padrao","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"box-kit-makit-padrao","body":"Orçamento de box padrão sai com kit MAKIT (o mais barato). A linha AL só entra por preferência explícita do cliente (grade ainda não cadastrada). O kit certo é o MENOR que comporta o vão — degraus 120\/133\/150\/160\/180\/200 cm no F1 e 90\/100\/120\/150 no C1 — e o motor escolhe sozinho pela família (w_max ≥ vão). Cores: branco e preto cobrem 98% das vendas; as outras ficam pra depois.","scope":"box","title":"Kit MAKIT é o padrão; linha AL só quando o cliente pedir","source":"PraiaMar (Rhuan) — 09\/07\/2026","status":"validado","enabled":1,"machine":{"check":"kit_families_known","applies":{"kind":["box"]}},"revision":1,"severity":"aviso","technical":null,"sort_order":25,"updated_at":"2026-07-09 17:00:47.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"box-c1-lado-maior","scope":"box","title":"C1 (canto): kit pelo LADO MAIOR; cada lado dimensiona como um F1","body":"No box de canto, informar o LADO MAIOR como largura (L) e o menor como lado_b. O kit C1 é escolhido pelo lado maior (menor kit com w_max ≥ lado maior — degraus 90\/100\/120\/150 cm). Cada lado dimensiona como um F1 independente: 1 fixo + 1 porta com transpasse mínimo de 25 mm em degraus de 50 mm; as duas portas se encontram no canto. O desenho do canto é VISTO DE FORA (isométrico) — diferente das esquadrias e do box frontal, que desenham vista de dentro.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 09\/07\/2026","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":["C1","F1"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":30,"updated_at":"2026-07-09 17:00:47","versions":[{"rule_id":"box-c1-lado-maior","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"box-c1-lado-maior","body":"No box de canto, informar o LADO MAIOR como largura (L) e o menor como lado_b. O kit C1 é escolhido pelo lado maior (menor kit com w_max ≥ lado maior — degraus 90\/100\/120\/150 cm). Cada lado dimensiona como um F1 independente: 1 fixo + 1 porta com transpasse mínimo de 25 mm em degraus de 50 mm; as duas portas se encontram no canto. O desenho do canto é VISTO DE FORA (isométrico) — diferente das esquadrias e do box frontal, que desenham vista de dentro.","scope":"box","title":"C1 (canto): kit pelo LADO MAIOR; cada lado dimensiona como um F1","source":"PraiaMar (Rhuan) — 09\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"aviso","technical":null,"sort_order":30,"updated_at":"2026-07-09 17:00:47.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"box-medidas-nominais","scope":"box","title":"Box: altura nominal 1,90 m — F1 pede só largura; canto pede lado A × lado B","body":"O box padrão trabalha com altura NOMINAL de 1,90 m (1900 mm) — nunca se pergunta a altura ao cliente. Box F1 (reto): a única medida é a LARGURA do vão. Box de canto (C1): são DUAS medidas horizontais, lado A e lado B (o kit dimensiona pelo lado maior — ver regra box-c1-lado-maior). No sistema: tipologia kind=box esconde o campo altura (fixa 1900); kind=box_corner pede Lado A × Lado B (o B vira o parâmetro lado_b do motor) e desenha o box em ISOMÉTRICO com cotas A\/B\/h.","severity":"erro","status":"validado","source":"dono (09\/07\/2026) — fotos e desenhos técnicos de fornecedor","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":["F1","C1","box-c1"],"dimensions":["tipologia kind=box esconde o campo altura (fixa 1900); kind=box_corner pede Lado A × Lado B (o B vira o parâmetro lado_b do motor) e desenha o box em ISOMÉTRICO com cotas A\/B\/h."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":90,"updated_at":"2026-07-12 08:18:08","versions":[{"rule_id":"box-medidas-nominais","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"box-medidas-nominais","body":"O box padrão trabalha com altura NOMINAL de 1,90 m (1900 mm) — nunca se pergunta a altura ao cliente. Box F1 (reto): a única medida é a LARGURA do vão. Box de canto (C1): são DUAS medidas horizontais, lado A e lado B (o kit dimensiona pelo lado maior — ver regra box-c1-lado-maior). No sistema: tipologia kind=box esconde o campo altura (fixa 1900); kind=box_corner pede Lado A × Lado B (o B vira o parâmetro lado_b do motor) e desenha o box em ISOMÉTRICO com cotas A\/B\/h.","scope":"box","title":"Box: altura nominal 1,90 m — F1 pede só largura; canto pede lado A × lado B","source":"dono (09\/07\/2026) — fotos e desenhos técnicos de fornecedor","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"erro","technical":null,"sort_order":90,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-vidro-transpasse-50","scope":"correr","title":"Porta de correr de vidro: transpasse de 50 mm POR folha móvel","body":"Cada folha de CORRER (móvel) é cortada 50 mm mais larga que a metade do vão: a porta de vidro sobrepõe o fixo pra NÃO entrar água de chuva pela junta. O +50 vai só nas folhas móveis; os fixos ficam na metade exata do vão. Larguras por folha = L\/N (N = nº de folhas): fixo = L\/N; correr = L\/N + 50. Ex.: 2 folhas → fixo L\/2 + correr L\/2+50; 4 folhas → fixo L\/4 + correr L\/4+50. Com 2 folhas (1 correr) há 1 transpasse; com 4 folhas (2 correr) há 2 transpasses (as duas móveis do centro NÃO se sobrepõem — batem topo a topo).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + carrinho da têmpera — 10\/07\/2026","source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Corrigiu a largura fixa L\/2 para L\/N por quantidade de folhas.","machine":null,"technical":{"view":"","application":"","parts":[],"dimensions":["fixo = L\/N; correr = L\/N + 50.","2 folhas → fixo L\/2 + correr L\/2+50; 4 folhas → fixo L\/4 + correr L\/4+50."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":91,"updated_at":"2026-07-12 08:59:03","versions":[{"rule_id":"correr-vidro-transpasse-50","revision":3,"source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Corrigiu a largura fixa L\/2 para L\/N por quantidade de folhas.","snapshot":{"id":"correr-vidro-transpasse-50","scope":"correr","title":"Porta de correr de vidro: transpasse de 50 mm POR folha móvel","body":"Cada folha de CORRER (móvel) é cortada 50 mm mais larga que a metade do vão: a porta de vidro sobrepõe o fixo pra NÃO entrar água de chuva pela junta. O +50 vai só nas folhas móveis; os fixos ficam na metade exata do vão. Larguras por folha = L\/N (N = nº de folhas): fixo = L\/N; correr = L\/N + 50. Ex.: 2 folhas → fixo L\/2 + correr L\/2+50; 4 folhas → fixo L\/4 + correr L\/4+50. Com 2 folhas (1 correr) há 1 transpasse; com 4 folhas (2 correr) há 2 transpasses (as duas móveis do centro NÃO se sobrepõem — batem topo a topo).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + carrinho da têmpera — 10\/07\/2026","source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Corrigiu a largura fixa L\/2 para L\/N por quantidade de folhas.","machine":null,"technical":null,"supersedes_id":null,"enabled":true,"revision":3,"sort_order":91,"updated_at":"2026-07-12 08:18:08"},"created_at":"2026-07-12 08:59:03"},{"rule_id":"correr-vidro-transpasse-50","revision":2,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-vidro-transpasse-50","body":"Cada folha de CORRER (móvel) é cortada 50 mm mais larga que a metade do vão: a porta de vidro sobrepõe o fixo pra NÃO entrar água de chuva pela junta. O +50 vai só nas folhas móveis; os fixos ficam na metade exata do vão. Larguras por folha = L\/N (N = nº de folhas): fixo = L\/N; correr = L\/N + 50. Ex.: 2 folhas → fixo L\/2 + correr L\/2+50; 4 folhas → fixo L\/4 + correr L\/4+50. Com 2 folhas (1 correr) há 1 transpasse; com 4 folhas (2 correr) há 2 transpasses (as duas móveis do centro NÃO se sobrepõem — batem topo a topo).","scope":"correr","title":"Porta de correr de vidro: transpasse de 50 mm POR folha móvel","source":"PraiaMar (Rhuan) + carrinho da têmpera — 10\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":2,"severity":"erro","technical":null,"sort_order":91,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-vidro-folgas-altura","scope":"correr","title":"Porta de correr de vidro: altura do correr = H-20; do fixo = H-60","body":"Altura dos vidros descontada do vão: a folha de CORRER perde 20 mm (H-20) e o FIXO perde 60 mm (H-60) — o correr fica 40 mm mais alto porque pendura na roldana e engata na guia superior; o fixo folga mais nas duas pontas. Revertido de 4 orçamentos reais (todos batem). Folga é do KIT\/linha, não constante universal.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan), 4 orçamentos — 10\/07\/2026","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":["H-20","H-60"],"dimensions":["a folha de CORRER perde 20 mm (H-20) e o FIXO perde 60 mm (H-60) — o correr fica 40 mm mais alto porque pendura na roldana e engata na guia superior; o fixo folga mais nas duas pontas."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":92,"updated_at":"2026-07-12 08:18:08","versions":[{"rule_id":"correr-vidro-folgas-altura","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-vidro-folgas-altura","body":"Altura dos vidros descontada do vão: a folha de CORRER perde 20 mm (H-20) e o FIXO perde 60 mm (H-60) — o correr fica 40 mm mais alto porque pendura na roldana e engata na guia superior; o fixo folga mais nas duas pontas. Revertido de 4 orçamentos reais (todos batem). Folga é do KIT\/linha, não constante universal.","scope":"correr","title":"Porta de correr de vidro: altura do correr = H-20; do fixo = H-60","source":"PraiaMar (Rhuan), 4 orçamentos — 10\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"erro","technical":null,"sort_order":92,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-vidro-fechadura-va-vv","scope":"correr","title":"Fechadura: VA (2 folhas, contra a parede) × VV (4 folhas, encontro central)","body":"2 folhas (1 correr + 1 fixo): o correr fecha contra a parede → fechadura de correr V\/A = a 3530 (\"FECHADURA PARA PORTA DE CORRER\", 3530G ~R$71,10) casada com a contra-fechadura 3206 (~R$5,69) — a AL empacota como \"Kit 10 Fechadura V\/A Blindex\". ATENÇÃO: o 1571\/1570 é BATE-FECHA (fecho de janela, sem CHAVE — trava a folha fechada, mas não é fechadura de porta com chave). 4 folhas (2 correr + 2 fixo): as duas móveis batem TOPO A TOPO no centro → par V\/V = 3530 na móvel esquerda + contra 3534 (com furo) na móvel direita — a 3534 tem PUXADOR EMBUTIDO e o par faz o papel de freio\/trava central anti-impacto (= \"Kit 09 Fechadura V\/V Blindex\" da AL). Puxador H = R$45. Preços = custo (tabela da têmpera); preço da 3534 pendente. Furação de 3530\/3534: gabarito Recorte-24 (ver doc\/AL_INDUSTRIA.md).","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + catálogo AL Indústria — 10\/07\/2026","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Liga a regra da porta ao mapa técnico V\/A versus V\/V e ao gabarito Recorte-24 conferido.","machine":null,"technical":{"view":"elevacao","application":"Porta de correr de vidro Convencional: 2 folhas fechando na alvenaria ou 4 folhas fechando no centro","parts":["2 folhas: 3530 + 3206 — Kit 10 V\/A","4 folhas: 3530 + 3534 — Kit 09 V\/V"],"dimensions":["Furação Recorte-24: Ø35 + 2×Ø20; 85 mm entre Ø20"],"steps":["Contar as folhas móveis e localizar o ponto de fechamento","Usar V\/A contra alvenaria ou V\/V no encontro central","Enviar o Recorte-24 no pedido do vidro"],"acceptance":["Contra corresponde ao tipo V\/A ou V\/V","Furação do vidro está vinculada à ferragem correta"],"exceptions":["1570\/1571 é bate-fecha de janela e não substitui a fechadura 3530 da porta"],"source_pages":["Rhuan + catálogo AL — 10\/07\/2026","doc\/al industria\/Recorte-24.png"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":93,"updated_at":"2026-07-12 09:09:35","versions":[{"rule_id":"correr-vidro-fechadura-va-vv","revision":3,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Liga a regra da porta ao mapa técnico V\/A versus V\/V e ao gabarito Recorte-24 conferido.","snapshot":{"id":"correr-vidro-fechadura-va-vv","scope":"correr","title":"Fechadura: VA (2 folhas, contra a parede) × VV (4 folhas, encontro central)","body":"2 folhas (1 correr + 1 fixo): o correr fecha contra a parede → fechadura de correr V\/A = a 3530 (\"FECHADURA PARA PORTA DE CORRER\", 3530G ~R$71,10) casada com a contra-fechadura 3206 (~R$5,69) — a AL empacota como \"Kit 10 Fechadura V\/A Blindex\". ATENÇÃO: o 1571\/1570 é BATE-FECHA (fecho de janela, sem CHAVE — trava a folha fechada, mas não é fechadura de porta com chave). 4 folhas (2 correr + 2 fixo): as duas móveis batem TOPO A TOPO no centro → par V\/V = 3530 na móvel esquerda + contra 3534 (com furo) na móvel direita — a 3534 tem PUXADOR EMBUTIDO e o par faz o papel de freio\/trava central anti-impacto (= \"Kit 09 Fechadura V\/V Blindex\" da AL). Puxador H = R$45. Preços = custo (tabela da têmpera); preço da 3534 pendente. Furação de 3530\/3534: gabarito Recorte-24 (ver doc\/AL_INDUSTRIA.md).","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + catálogo AL Indústria — 10\/07\/2026","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Liga a regra da porta ao mapa técnico V\/A versus V\/V e ao gabarito Recorte-24 conferido.","machine":null,"technical":{"view":"elevacao","application":"Porta de correr de vidro Convencional: 2 folhas fechando na alvenaria ou 4 folhas fechando no centro","parts":["2 folhas: 3530 + 3206 — Kit 10 V\/A","4 folhas: 3530 + 3534 — Kit 09 V\/V"],"dimensions":["Furação Recorte-24: Ø35 + 2×Ø20; 85 mm entre Ø20"],"steps":["Contar as folhas móveis e localizar o ponto de fechamento","Usar V\/A contra alvenaria ou V\/V no encontro central","Enviar o Recorte-24 no pedido do vidro"],"acceptance":["Contra corresponde ao tipo V\/A ou V\/V","Furação do vidro está vinculada à ferragem correta"],"exceptions":["1570\/1571 é bate-fecha de janela e não substitui a fechadura 3530 da porta"],"source_pages":["Rhuan + catálogo AL — 10\/07\/2026","doc\/al industria\/Recorte-24.png"]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":93,"updated_at":"2026-07-12 01:33:34"},"created_at":"2026-07-12 09:09:35"},{"rule_id":"correr-vidro-fechadura-va-vv","revision":2,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-vidro-fechadura-va-vv","body":"2 folhas (1 correr + 1 fixo): o correr fecha contra a parede → fechadura de correr V\/A = a 3530 (\"FECHADURA PARA PORTA DE CORRER\", 3530G ~R$71,10) casada com a contra-fechadura 3206 (~R$5,69) — a AL empacota como \"Kit 10 Fechadura V\/A Blindex\". ATENÇÃO: o 1571\/1570 é BATE-FECHA (fecho de janela, sem CHAVE — trava a folha fechada, mas não é fechadura de porta com chave). 4 folhas (2 correr + 2 fixo): as duas móveis batem TOPO A TOPO no centro → par V\/V = 3530 na móvel esquerda + contra 3534 (com furo) na móvel direita — a 3534 tem PUXADOR EMBUTIDO e o par faz o papel de freio\/trava central anti-impacto (= \"Kit 09 Fechadura V\/V Blindex\" da AL). Puxador H = R$45. Preços = custo (tabela da têmpera); preço da 3534 pendente. Furação de 3530\/3534: gabarito Recorte-24 (ver doc\/AL_INDUSTRIA.md).","scope":"correr","title":"Fechadura: VA (2 folhas, contra a parede) × VV (4 folhas, encontro central)","source":"PraiaMar (Rhuan) + catálogo AL Indústria — 10\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":2,"severity":"aviso","technical":null,"sort_order":93,"updated_at":"2026-07-12 01:33:34.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-vidro-kit-grade","scope":"correr","title":"Kit por LARGURA × ALTURA; altura acima do kit → U de recebimento (não trava)","body":"O kit da porta de correr é o menor que comporta o vão: w_max ≥ largura E h_max ≥ altura, o mais barato entre os que servem. A ALTURA limita (alturas nominais de kit são poucas). REGRA NOVA (Rhuan 10\/07\/2026): quando a ALTURA passa do maior kit mas a LARGURA cabe, NÃO travar — pega o kit que serve na largura (o mais alto disponível, mais próximo do vão) e completa a altura com os U de recebimento: 1 Cavalinho (U-555, 0,268 kg\/m) no vidro FIXO + 1 Cavalão (U-556, 0,143 kg\/m) na PORTA (móvel; mais largo pra correr com folga), cada um com comprimento = altura da porta (H-20) + 50 mm, precificados como ALUMÍNIO (peso × R$\/kg da cor × margem). Só a LARGURA acima do maior kit ainda TRAVA (aí sim não há como montar). Motor: kit.oversize_u na tipologia + fallback no TypologyResolver; front mostra os U em Perfis + nota âmbar. Cor branco\/preto (mesmo preço).","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + a têmpera — 10\/07\/2026","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":{"check":"kit_families_known","applies":{"kind":["sliding"],"line":["Convencional"]}},"technical":{"view":"","application":"","parts":["U-555","U-556","H-20"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":94,"updated_at":"2026-07-10 18:43:01","versions":[{"rule_id":"correr-vidro-kit-grade","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-vidro-kit-grade","body":"O kit da porta de correr é o menor que comporta o vão: w_max ≥ largura E h_max ≥ altura, o mais barato entre os que servem. A ALTURA limita (alturas nominais de kit são poucas). REGRA NOVA (Rhuan 10\/07\/2026): quando a ALTURA passa do maior kit mas a LARGURA cabe, NÃO travar — pega o kit que serve na largura (o mais alto disponível, mais próximo do vão) e completa a altura com os U de recebimento: 1 Cavalinho (U-555, 0,268 kg\/m) no vidro FIXO + 1 Cavalão (U-556, 0,143 kg\/m) na PORTA (móvel; mais largo pra correr com folga), cada um com comprimento = altura da porta (H-20) + 50 mm, precificados como ALUMÍNIO (peso × R$\/kg da cor × margem). Só a LARGURA acima do maior kit ainda TRAVA (aí sim não há como montar). Motor: kit.oversize_u na tipologia + fallback no TypologyResolver; front mostra os U em Perfis + nota âmbar. Cor branco\/preto (mesmo preço).","scope":"correr","title":"Kit por LARGURA × ALTURA; altura acima do kit → U de recebimento (não trava)","source":"PraiaMar (Rhuan) + a têmpera — 10\/07\/2026","status":"validado","enabled":1,"machine":{"check":"kit_families_known","applies":{"kind":["sliding"],"line":["Convencional"]}},"revision":1,"severity":"aviso","technical":null,"sort_order":94,"updated_at":"2026-07-10 18:43:01.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-vidro-cobranca-m2-real","scope":"correr","title":"SUPERADA → o vidro do correr é faturado ceil-50 (ver correr-vidro-cobranca-ceil50)","body":"SUPERADA pela regra correr-vidro-cobranca-ceil50. O SoftCalc HOJE replica o ceil-50 do fornecedor (glass_bill_step=50) — o custo do vidro bate a nota; o CORTE real (L\/2, L\/2+50 sem arredondar) vai pra oficina e pro peso. Histórico: a 1ª hipótese foi cobrar por m² REAL e deixar o gap (~5%) na margem — descartada quando o glass_bill_step foi implementado. Mantida só como registro.","severity":"info","status":"obsoleto","source":"carrinho da têmpera conferido linha a linha — 10\/07\/2026","source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Marcou a regra de m² real como superada pela cobrança ceil-50.","machine":null,"technical":{"view":"","application":"","parts":["ceil-50","cobranca-ceil50"],"dimensions":["O SoftCalc HOJE replica o ceil-50 do fornecedor (glass_bill_step=50) — o custo do vidro bate a nota; o CORTE real (L\/2, L\/2+50 sem arredondar) vai pra oficina e pro peso."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":"correr-vidro-cobranca-ceil50","enabled":false,"revision":3,"sort_order":95,"updated_at":"2026-07-12 08:59:03","versions":[{"rule_id":"correr-vidro-cobranca-m2-real","revision":3,"source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Marcou a regra de m² real como superada pela cobrança ceil-50.","snapshot":{"id":"correr-vidro-cobranca-m2-real","scope":"correr","title":"SUPERADA → o vidro do correr é faturado ceil-50 (ver correr-vidro-cobranca-ceil50)","body":"SUPERADA pela regra correr-vidro-cobranca-ceil50. O SoftCalc HOJE replica o ceil-50 do fornecedor (glass_bill_step=50) — o custo do vidro bate a nota; o CORTE real (L\/2, L\/2+50 sem arredondar) vai pra oficina e pro peso. Histórico: a 1ª hipótese foi cobrar por m² REAL e deixar o gap (~5%) na margem — descartada quando o glass_bill_step foi implementado. Mantida só como registro.","severity":"info","status":"obsoleto","source":"carrinho da têmpera conferido linha a linha — 10\/07\/2026","source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Marcou a regra de m² real como superada pela cobrança ceil-50.","machine":null,"technical":null,"supersedes_id":"correr-vidro-cobranca-ceil50","enabled":false,"revision":3,"sort_order":95,"updated_at":"2026-07-12 08:18:08"},"created_at":"2026-07-12 08:59:03"},{"rule_id":"correr-vidro-cobranca-m2-real","revision":2,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-vidro-cobranca-m2-real","body":"SUPERADA pela regra correr-vidro-cobranca-ceil50. O SoftCalc HOJE replica o ceil-50 do fornecedor (glass_bill_step=50) — o custo do vidro bate a nota; o CORTE real (L\/2, L\/2+50 sem arredondar) vai pra oficina e pro peso. Histórico: a 1ª hipótese foi cobrar por m² REAL e deixar o gap (~5%) na margem — descartada quando o glass_bill_step foi implementado. Mantida só como registro.","scope":"correr","title":"SUPERADA → o vidro do correr é faturado ceil-50 (ver correr-vidro-cobranca-ceil50)","source":"carrinho da têmpera conferido linha a linha — 10\/07\/2026","status":"obsoleto","enabled":0,"machine":null,"revision":2,"severity":"info","technical":null,"sort_order":95,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":"correr-vidro-cobranca-ceil50"},"created_at":"2026-07-12 08:48:03"}]},{"id":"al-casamento-fechadura-contra","scope":"geral","title":"Ferragens AL: corpo 353x casa com contra 353x+4; 3206 é a contra de alvenaria universal","body":"Álgebra dos códigos AL (vale como algoritmo ao montar tipologia): fechadura 3530 (porta correr) ↔ contra 3534 (V\/V) ou 3206 (alvenaria); 3532 (janela correr) ↔ 3536 (V\/V) ou 3206; 3210 (porta de abrir) ↔ 3211 (aparador) ou 3206. Sufixo M (mini) só casa com M (3532 M ↔ 3536 M \/ 3206 M). J = janela; JD\/JE = lado direita\/esquerda (bico-de-papagaio 1510). Linha \"Capa XXXX\" = mesma ferragem com capa (variante de acabamento, não produto novo). Kits prontos da AL: Kit 09 = 3530+3534 · Kit 10 = 3530+3206 · Kit 11 = 3532+3536 · Kit 12 = 3532+3206. Nº de folhas decide: 2 folhas → V\/A; 4 folhas → V\/V. Fechaduras 3530\/3532\/3210\/3534\/3536 compartilham a furação Recorte-24 (Ø35 + 2×Ø20; 85 mm entre os Ø20; Ø35 a 42 do inferior; eixos a 37\/30 da borda) — base pro pedido de têmpera com furação validada.","severity":"info","status":"validado","source":"Catálogo AL Indústria (alindustria.com.br), desenhos conferidos — 10\/07\/2026 — doc\/AL_INDUSTRIA.md","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Cria mapa visual V\/A e V\/V e reproduz as cotas conferidas no asset Recorte-24.","machine":null,"technical":{"view":"elevacao","application":"Ferragens AL tradicionais para vidro temperado; portas e janelas de correr e porta de abrir","parts":["3530 — fechadura de porta de correr","3534 — contra V\/V com furo","3206 — contra de alvenaria","3532\/3536 — par de janela","3210\/3211 — par de porta de abrir"],"dimensions":["Recorte-24: Ø35 + 2×Ø20","85 mm entre centros dos Ø20","Ø35 a 42 mm do Ø20 inferior","Eixos à borda: 37 mm no superior\/Ø35 e 30 mm no inferior"],"steps":["Definir se o fechamento é vidro\/alvenaria ou vidro\/vidro","Escolher corpo e contra compatíveis","Aplicar o gabarito correspondente","Manter peças mini M somente com contras M"],"acceptance":["2 folhas usa V\/A; 4 folhas usa V\/V","Corpo e contra pertencem à mesma família","Furação do vidro coincide com o Recorte-24"],"exceptions":["O catálogo tem ambiguidade de página\/slug entre 3534 e 3536; confirmar a peça antes da compra"],"source_pages":["doc\/AL_INDUSTRIA.md — casamentos e furações","doc\/al industria\/Recorte-24.png — conferido visualmente"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":99,"updated_at":"2026-07-12 09:09:35","versions":[{"rule_id":"al-casamento-fechadura-contra","revision":2,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Cria mapa visual V\/A e V\/V e reproduz as cotas conferidas no asset Recorte-24.","snapshot":{"id":"al-casamento-fechadura-contra","scope":"geral","title":"Ferragens AL: corpo 353x casa com contra 353x+4; 3206 é a contra de alvenaria universal","body":"Álgebra dos códigos AL (vale como algoritmo ao montar tipologia): fechadura 3530 (porta correr) ↔ contra 3534 (V\/V) ou 3206 (alvenaria); 3532 (janela correr) ↔ 3536 (V\/V) ou 3206; 3210 (porta de abrir) ↔ 3211 (aparador) ou 3206. Sufixo M (mini) só casa com M (3532 M ↔ 3536 M \/ 3206 M). J = janela; JD\/JE = lado direita\/esquerda (bico-de-papagaio 1510). Linha \"Capa XXXX\" = mesma ferragem com capa (variante de acabamento, não produto novo). Kits prontos da AL: Kit 09 = 3530+3534 · Kit 10 = 3530+3206 · Kit 11 = 3532+3536 · Kit 12 = 3532+3206. Nº de folhas decide: 2 folhas → V\/A; 4 folhas → V\/V. Fechaduras 3530\/3532\/3210\/3534\/3536 compartilham a furação Recorte-24 (Ø35 + 2×Ø20; 85 mm entre os Ø20; Ø35 a 42 do inferior; eixos a 37\/30 da borda) — base pro pedido de têmpera com furação validada.","severity":"info","status":"validado","source":"Catálogo AL Indústria (alindustria.com.br), desenhos conferidos — 10\/07\/2026 — doc\/AL_INDUSTRIA.md","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Cria mapa visual V\/A e V\/V e reproduz as cotas conferidas no asset Recorte-24.","machine":null,"technical":{"view":"elevacao","application":"Ferragens AL tradicionais para vidro temperado; portas e janelas de correr e porta de abrir","parts":["3530 — fechadura de porta de correr","3534 — contra V\/V com furo","3206 — contra de alvenaria","3532\/3536 — par de janela","3210\/3211 — par de porta de abrir"],"dimensions":["Recorte-24: Ø35 + 2×Ø20","85 mm entre centros dos Ø20","Ø35 a 42 mm do Ø20 inferior","Eixos à borda: 37 mm no superior\/Ø35 e 30 mm no inferior"],"steps":["Definir se o fechamento é vidro\/alvenaria ou vidro\/vidro","Escolher corpo e contra compatíveis","Aplicar o gabarito correspondente","Manter peças mini M somente com contras M"],"acceptance":["2 folhas usa V\/A; 4 folhas usa V\/V","Corpo e contra pertencem à mesma família","Furação do vidro coincide com o Recorte-24"],"exceptions":["O catálogo tem ambiguidade de página\/slug entre 3534 e 3536; confirmar a peça antes da compra"],"source_pages":["doc\/AL_INDUSTRIA.md — casamentos e furações","doc\/al industria\/Recorte-24.png — conferido visualmente"]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":99,"updated_at":"2026-07-10 14:18:01"},"created_at":"2026-07-12 09:09:35"},{"rule_id":"al-casamento-fechadura-contra","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"al-casamento-fechadura-contra","body":"Álgebra dos códigos AL (vale como algoritmo ao montar tipologia): fechadura 3530 (porta correr) ↔ contra 3534 (V\/V) ou 3206 (alvenaria); 3532 (janela correr) ↔ 3536 (V\/V) ou 3206; 3210 (porta de abrir) ↔ 3211 (aparador) ou 3206. Sufixo M (mini) só casa com M (3532 M ↔ 3536 M \/ 3206 M). J = janela; JD\/JE = lado direita\/esquerda (bico-de-papagaio 1510). Linha \"Capa XXXX\" = mesma ferragem com capa (variante de acabamento, não produto novo). Kits prontos da AL: Kit 09 = 3530+3534 · Kit 10 = 3530+3206 · Kit 11 = 3532+3536 · Kit 12 = 3532+3206. Nº de folhas decide: 2 folhas → V\/A; 4 folhas → V\/V. Fechaduras 3530\/3532\/3210\/3534\/3536 compartilham a furação Recorte-24 (Ø35 + 2×Ø20; 85 mm entre os Ø20; Ø35 a 42 do inferior; eixos a 37\/30 da borda) — base pro pedido de têmpera com furação validada.","scope":"geral","title":"Ferragens AL: corpo 353x casa com contra 353x+4; 3206 é a contra de alvenaria universal","source":"Catálogo AL Indústria (alindustria.com.br), desenhos conferidos — 10\/07\/2026 — doc\/AL_INDUSTRIA.md","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"info","technical":null,"sort_order":99,"updated_at":"2026-07-10 14:18:01.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"al-bate-fecha-limite-folha","scope":"correr","title":"Bate-fecha 1570\/1571 (janela): folha máxima 650×800 mm","body":"O fecho bate-fecha (1570 V\/V, 1571 V\/A, versões P\/B) é o fecho comum de JANELA de correr — sem fechadura\/chave interna ou externa. Limite do fabricante: folha de até 650×800 mm; folha maior pede fechadura 3532 (com chave) ou outro fecho. Furação: 2×Ø16 com 50 mm entre centros; eixo a 21 mm da borda no 1570 (fecha no vidro) e a 27 mm no 1571 (fecha no alumínio — afasta 6 mm). Vale pra futura janela de correr da linha Convencional.","severity":"aviso","status":"validado","source":"Catálogo AL Indústria — 10\/07\/2026 — doc\/AL_INDUSTRIA.md","source_kind":"catalog","author_type":"codex","author_name":"OpenAI Codex","change_note":"Desenha limite 650×800 e separa as furações 1570 V\/V e 1571 V\/A sem confundir com Recorte-24.","machine":null,"technical":{"view":"elevacao","application":"Janela de correr Convencional com bate-fecha 1570 V\/V ou 1571 V\/A","parts":["1570 — bate-fecha vidro\/vidro","1571 — bate-fecha vidro\/alumínio"],"dimensions":["Folha máxima: 650 × 800 mm","2×Ø16 com 50 mm entre centros","1570: eixo a 21 mm da borda","1571: eixo a 27 mm da borda"],"steps":["Conferir o tamanho da folha","Definir V\/V ou V\/A","Aplicar Recorte-23 ou Recorte-27","Migrar para 3532 ou outro fecho se exceder o limite"],"acceptance":["Folha não excede 650 × 800","Eixo de furação corresponde ao 1570 ou 1571"],"exceptions":["Trava a folha fechada, mas não é fechadura de porta com chave"],"source_pages":["doc\/AL_INDUSTRIA.md — limites e Recortes 23\/27"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":4,"sort_order":100,"updated_at":"2026-07-12 09:09:35","versions":[{"rule_id":"al-bate-fecha-limite-folha","revision":4,"source_kind":"catalog","author_type":"codex","author_name":"OpenAI Codex","change_note":"Desenha limite 650×800 e separa as furações 1570 V\/V e 1571 V\/A sem confundir com Recorte-24.","snapshot":{"id":"al-bate-fecha-limite-folha","scope":"correr","title":"Bate-fecha 1570\/1571 (janela): folha máxima 650×800 mm","body":"O fecho bate-fecha (1570 V\/V, 1571 V\/A, versões P\/B) é o fecho comum de JANELA de correr — sem fechadura\/chave interna ou externa. Limite do fabricante: folha de até 650×800 mm; folha maior pede fechadura 3532 (com chave) ou outro fecho. Furação: 2×Ø16 com 50 mm entre centros; eixo a 21 mm da borda no 1570 (fecha no vidro) e a 27 mm no 1571 (fecha no alumínio — afasta 6 mm). Vale pra futura janela de correr da linha Convencional.","severity":"aviso","status":"validado","source":"Catálogo AL Indústria — 10\/07\/2026 — doc\/AL_INDUSTRIA.md","source_kind":"catalog","author_type":"codex","author_name":"OpenAI Codex","change_note":"Desenha limite 650×800 e separa as furações 1570 V\/V e 1571 V\/A sem confundir com Recorte-24.","machine":null,"technical":{"view":"elevacao","application":"Janela de correr Convencional com bate-fecha 1570 V\/V ou 1571 V\/A","parts":["1570 — bate-fecha vidro\/vidro","1571 — bate-fecha vidro\/alumínio"],"dimensions":["Folha máxima: 650 × 800 mm","2×Ø16 com 50 mm entre centros","1570: eixo a 21 mm da borda","1571: eixo a 27 mm da borda"],"steps":["Conferir o tamanho da folha","Definir V\/V ou V\/A","Aplicar Recorte-23 ou Recorte-27","Migrar para 3532 ou outro fecho se exceder o limite"],"acceptance":["Folha não excede 650 × 800","Eixo de furação corresponde ao 1570 ou 1571"],"exceptions":["Trava a folha fechada, mas não é fechadura de porta com chave"],"source_pages":["doc\/AL_INDUSTRIA.md — limites e Recortes 23\/27"]},"supersedes_id":null,"enabled":true,"revision":4,"sort_order":100,"updated_at":"2026-07-12 08:59:03"},"created_at":"2026-07-12 09:09:35"},{"rule_id":"al-bate-fecha-limite-folha","revision":3,"source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Corrigiu a polaridade da descrição do bate-fecha 1570: trava sem chave.","snapshot":{"id":"al-bate-fecha-limite-folha","scope":"correr","title":"Bate-fecha 1570\/1571 (janela): folha máxima 650×800 mm","body":"O fecho bate-fecha (1570 V\/V, 1571 V\/A, versões P\/B) é o fecho comum de JANELA de correr — sem fechadura\/chave interna ou externa. Limite do fabricante: folha de até 650×800 mm; folha maior pede fechadura 3532 (com chave) ou outro fecho. Furação: 2×Ø16 com 50 mm entre centros; eixo a 21 mm da borda no 1570 (fecha no vidro) e a 27 mm no 1571 (fecha no alumínio — afasta 6 mm). Vale pra futura janela de correr da linha Convencional.","severity":"aviso","status":"validado","source":"Catálogo AL Indústria — 10\/07\/2026 — doc\/AL_INDUSTRIA.md","source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Corrigiu a polaridade da descrição do bate-fecha 1570: trava sem chave.","machine":null,"technical":null,"supersedes_id":null,"enabled":true,"revision":3,"sort_order":100,"updated_at":"2026-07-12 01:33:34"},"created_at":"2026-07-12 08:59:03"},{"rule_id":"al-bate-fecha-limite-folha","revision":2,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"al-bate-fecha-limite-folha","body":"O fecho bate-fecha (1570 V\/V, 1571 V\/A, versões P\/B) é o fecho comum de JANELA de correr — sem fechadura\/chave interna ou externa. Limite do fabricante: folha de até 650×800 mm; folha maior pede fechadura 3532 (com chave) ou outro fecho. Furação: 2×Ø16 com 50 mm entre centros; eixo a 21 mm da borda no 1570 (fecha no vidro) e a 27 mm no 1571 (fecha no alumínio — afasta 6 mm). Vale pra futura janela de correr da linha Convencional.","scope":"correr","title":"Bate-fecha 1570\/1571 (janela): folha máxima 650×800 mm","source":"Catálogo AL Indústria — 10\/07\/2026 — doc\/AL_INDUSTRIA.md","status":"validado","enabled":1,"machine":null,"revision":2,"severity":"aviso","technical":null,"sort_order":100,"updated_at":"2026-07-12 01:33:34.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"box-fp-vidro-folgas","scope":"box","title":"Box fora do padrão: fixo = vão−55, porta = vão−20 (altura); larguras L\/2 e L\/2+50","body":"Box F1 cortado SOB MEDIDA (fora do padrão de 1,90 m, tipicamente até o teto). Altura do vidro (regra AL, manual do kit box): FIXO = altura do vão − 55 mm; PORTA = altura do vão − 20 mm. Larguras: fixo = L\/2; porta = L\/2 + 50 (transpasse de 50 mm). O m² é faturado pela têmpera arredondando cada dimensão pra CIMA em 50 mm (o corte real, menor, é o que vai pra oficina e pro cálculo de peso). Conferido no carrinho real (BOX-13-FP, 2700×1450, fumê): fixo 725×2645 + porta 775×2680 → faturado 4,1475 m²; peso pela área real × 20 = 79,89 kg.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + garantia-kit-box.pdf (AL) + carrinho da têmpera — 10\/07\/2026","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Cria desenho próprio com as quatro fórmulas de corte e o transpasse de 50 mm do box fora do padrão.","machine":null,"technical":{"view":"elevacao","application":"Box reto fora do padrão, 1 vidro fixo + 1 porta de correr sob medida","parts":["Vidro fixo temperado 8 mm","Porta de correr em vidro temperado 8 mm"],"dimensions":["Fixo: largura L\/2; altura H−55","Porta: largura L\/2+50; altura H−20","Transpasse nominal: 50 mm","Faturamento: cada dimensão arredondada para cima em 50 mm"],"steps":["Medir o vão acabado L × H","Calcular o corte real dos dois vidros","Conferir o transpasse de 50 mm","Separar corte real de medida faturada ceil-50"],"acceptance":["Porta sobrepõe o fixo em 50 mm","Porta termina 35 mm acima do fixo","Peso usa área real e cobrança usa área faturada"],"exceptions":["Aplicação exclusiva do box fora do padrão; não copiar para box padrão de peças prontas"],"source_pages":["Manual técnico AL do kit box — fórmula de vidro","Carrinho real BOX-13-FP 2700 × 1450"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":101,"updated_at":"2026-07-12 09:05:26","versions":[{"rule_id":"box-fp-vidro-folgas","revision":2,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Cria desenho próprio com as quatro fórmulas de corte e o transpasse de 50 mm do box fora do padrão.","snapshot":{"id":"box-fp-vidro-folgas","scope":"box","title":"Box fora do padrão: fixo = vão−55, porta = vão−20 (altura); larguras L\/2 e L\/2+50","body":"Box F1 cortado SOB MEDIDA (fora do padrão de 1,90 m, tipicamente até o teto). Altura do vidro (regra AL, manual do kit box): FIXO = altura do vão − 55 mm; PORTA = altura do vão − 20 mm. Larguras: fixo = L\/2; porta = L\/2 + 50 (transpasse de 50 mm). O m² é faturado pela têmpera arredondando cada dimensão pra CIMA em 50 mm (o corte real, menor, é o que vai pra oficina e pro cálculo de peso). Conferido no carrinho real (BOX-13-FP, 2700×1450, fumê): fixo 725×2645 + porta 775×2680 → faturado 4,1475 m²; peso pela área real × 20 = 79,89 kg.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + garantia-kit-box.pdf (AL) + carrinho da têmpera — 10\/07\/2026","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Cria desenho próprio com as quatro fórmulas de corte e o transpasse de 50 mm do box fora do padrão.","machine":null,"technical":{"view":"elevacao","application":"Box reto fora do padrão, 1 vidro fixo + 1 porta de correr sob medida","parts":["Vidro fixo temperado 8 mm","Porta de correr em vidro temperado 8 mm"],"dimensions":["Fixo: largura L\/2; altura H−55","Porta: largura L\/2+50; altura H−20","Transpasse nominal: 50 mm","Faturamento: cada dimensão arredondada para cima em 50 mm"],"steps":["Medir o vão acabado L × H","Calcular o corte real dos dois vidros","Conferir o transpasse de 50 mm","Separar corte real de medida faturada ceil-50"],"acceptance":["Porta sobrepõe o fixo em 50 mm","Porta termina 35 mm acima do fixo","Peso usa área real e cobrança usa área faturada"],"exceptions":["Aplicação exclusiva do box fora do padrão; não copiar para box padrão de peças prontas"],"source_pages":["Manual técnico AL do kit box — fórmula de vidro","Carrinho real BOX-13-FP 2700 × 1450"]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":101,"updated_at":"2026-07-12 08:18:08"},"created_at":"2026-07-12 09:05:26"},{"rule_id":"box-fp-vidro-folgas","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"box-fp-vidro-folgas","body":"Box F1 cortado SOB MEDIDA (fora do padrão de 1,90 m, tipicamente até o teto). Altura do vidro (regra AL, manual do kit box): FIXO = altura do vão − 55 mm; PORTA = altura do vão − 20 mm. Larguras: fixo = L\/2; porta = L\/2 + 50 (transpasse de 50 mm). O m² é faturado pela têmpera arredondando cada dimensão pra CIMA em 50 mm (o corte real, menor, é o que vai pra oficina e pro cálculo de peso). Conferido no carrinho real (BOX-13-FP, 2700×1450, fumê): fixo 725×2645 + porta 775×2680 → faturado 4,1475 m²; peso pela área real × 20 = 79,89 kg.","scope":"box","title":"Box fora do padrão: fixo = vão−55, porta = vão−20 (altura); larguras L\/2 e L\/2+50","source":"PraiaMar (Rhuan) + garantia-kit-box.pdf (AL) + carrinho da têmpera — 10\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"erro","technical":null,"sort_order":101,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"box-fp-perfil-u-dificuldade","scope":"box","title":"Box fora do padrão: par de U de recebimento (H−50) + 20% de dificuldade","body":"O kit MAKIT padrão cobre o box até ~1,90 m (as barras vêm nesse comprimento). Acima disso, entram como ADICIONAL DOIS perfis \"U\" DE RECEBIMENTO verticais, cortados 50 mm menor que a altura do box acabado (H−50, manual AL): CAVALINHO (U-555, 0,268 kg\/m) recebe o FIXO e CAVALÃO (U-556, 0,143 kg\/m) recebe a PORTA. Obs.: o apelido não bate com o peso (o cavalinho é o mais pesado) — confirmado. Como instalar box até o teto é difícil, aplica-se +20% de DIFICULDADE de instalação sobre o item (ajustável no ato). Perfis na fonte de verdade: Catálogo › Perfis (profile_meta), custo por peso × R$\/kg da cor.","severity":"aviso","status":"estimado","source":"PraiaMar (Rhuan) + garantia-kit-box.pdf (AL) — 10\/07\/2026","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Desenha o par U-555\/U-556 com seções, peso e corte H−50 específicos do box fora do padrão.","machine":null,"technical":{"view":"corte_horizontal","application":"Par vertical de recebimento do box fora do padrão; U-555 no fixo e U-556 na porta","parts":["U-555 Cavalinho — 0,268 kg\/m; recebe o fixo","U-556 Cavalão — 0,143 kg\/m; recebe a porta"],"dimensions":["U-555: seção 15 × 25 mm","U-556: altura 20 mm; abertura 8,2 mm","Ambos no box FP: corte H−50"],"steps":["Associar U-555 ao fixo e U-556 à porta","Cortar os dois perfis verticais em H−50","Aplicar dificuldade de instalação separadamente, se necessária"],"acceptance":["Perfis não estão invertidos","Corte H−50 não é reutilizado no vidro fixo perimetral","A dificuldade não altera corte nem peso"],"exceptions":["A sobretaxa padrão de 20% é estimada e ajustável no orçamento"],"source_pages":["Manual técnico AL do kit box — U vertical H−50","Catálogo Alplan PU-316 — U-555","Catálogo ALUMIL Box 8 mm — U-556"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":102,"updated_at":"2026-07-12 09:05:26","versions":[{"rule_id":"box-fp-perfil-u-dificuldade","revision":2,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Desenha o par U-555\/U-556 com seções, peso e corte H−50 específicos do box fora do padrão.","snapshot":{"id":"box-fp-perfil-u-dificuldade","scope":"box","title":"Box fora do padrão: par de U de recebimento (H−50) + 20% de dificuldade","body":"O kit MAKIT padrão cobre o box até ~1,90 m (as barras vêm nesse comprimento). Acima disso, entram como ADICIONAL DOIS perfis \"U\" DE RECEBIMENTO verticais, cortados 50 mm menor que a altura do box acabado (H−50, manual AL): CAVALINHO (U-555, 0,268 kg\/m) recebe o FIXO e CAVALÃO (U-556, 0,143 kg\/m) recebe a PORTA. Obs.: o apelido não bate com o peso (o cavalinho é o mais pesado) — confirmado. Como instalar box até o teto é difícil, aplica-se +20% de DIFICULDADE de instalação sobre o item (ajustável no ato). Perfis na fonte de verdade: Catálogo › Perfis (profile_meta), custo por peso × R$\/kg da cor.","severity":"aviso","status":"estimado","source":"PraiaMar (Rhuan) + garantia-kit-box.pdf (AL) — 10\/07\/2026","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Desenha o par U-555\/U-556 com seções, peso e corte H−50 específicos do box fora do padrão.","machine":null,"technical":{"view":"corte_horizontal","application":"Par vertical de recebimento do box fora do padrão; U-555 no fixo e U-556 na porta","parts":["U-555 Cavalinho — 0,268 kg\/m; recebe o fixo","U-556 Cavalão — 0,143 kg\/m; recebe a porta"],"dimensions":["U-555: seção 15 × 25 mm","U-556: altura 20 mm; abertura 8,2 mm","Ambos no box FP: corte H−50"],"steps":["Associar U-555 ao fixo e U-556 à porta","Cortar os dois perfis verticais em H−50","Aplicar dificuldade de instalação separadamente, se necessária"],"acceptance":["Perfis não estão invertidos","Corte H−50 não é reutilizado no vidro fixo perimetral","A dificuldade não altera corte nem peso"],"exceptions":["A sobretaxa padrão de 20% é estimada e ajustável no orçamento"],"source_pages":["Manual técnico AL do kit box — U vertical H−50","Catálogo Alplan PU-316 — U-555","Catálogo ALUMIL Box 8 mm — U-556"]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":102,"updated_at":"2026-07-12 08:18:08"},"created_at":"2026-07-12 09:05:26"},{"rule_id":"box-fp-perfil-u-dificuldade","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"box-fp-perfil-u-dificuldade","body":"O kit MAKIT padrão cobre o box até ~1,90 m (as barras vêm nesse comprimento). Acima disso, entram como ADICIONAL DOIS perfis \"U\" DE RECEBIMENTO verticais, cortados 50 mm menor que a altura do box acabado (H−50, manual AL): CAVALINHO (U-555, 0,268 kg\/m) recebe o FIXO e CAVALÃO (U-556, 0,143 kg\/m) recebe a PORTA. Obs.: o apelido não bate com o peso (o cavalinho é o mais pesado) — confirmado. Como instalar box até o teto é difícil, aplica-se +20% de DIFICULDADE de instalação sobre o item (ajustável no ato). Perfis na fonte de verdade: Catálogo › Perfis (profile_meta), custo por peso × R$\/kg da cor.","scope":"box","title":"Box fora do padrão: par de U de recebimento (H−50) + 20% de dificuldade","source":"PraiaMar (Rhuan) + garantia-kit-box.pdf (AL) — 10\/07\/2026","status":"estimado","enabled":1,"machine":null,"revision":1,"severity":"aviso","technical":null,"sort_order":102,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"correr-vidro-cobranca-ceil50","scope":"correr","title":"Vidro faturado ceil-50: arredonda cada dimensão pra cima em 50 mm (corte real fica pra oficina)","body":"A têmpera fatura o m² arredondando CADA dimensão pra cima ao múltiplo de 50 mm: corte 2080×725 → faturado 2100×750. O SoftCalc replica isso (glass_bill_step=50) — o custo do vidro bate com a nota do fornecedor. O CORTE real (L\/2, L\/2+50, sem arredondar) é o que vai pra oficina e pro cálculo de PESO; só o m² do PREÇO usa a medida arredondada. Conferido no carrinho: vão 1350×2100 → 1,435 + 1,575 = 3,010 m² faturados.","severity":"erro","status":"validado","source":"carrinho da têmpera conferido linha a linha — 10\/07\/2026","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":["ceil-50"],"dimensions":["O SoftCalc replica isso (glass_bill_step=50) — o custo do vidro bate com a nota do fornecedor.","O CORTE real (L\/2, L\/2+50, sem arredondar) é o que vai pra oficina e pro cálculo de PESO; só o m² do PREÇO usa a medida arredondada.","vão 1350×2100 → 1,435 + 1,575 = 3,010 m² faturados."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":109,"updated_at":"2026-07-12 08:18:08","versions":[{"rule_id":"correr-vidro-cobranca-ceil50","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"correr-vidro-cobranca-ceil50","body":"A têmpera fatura o m² arredondando CADA dimensão pra cima ao múltiplo de 50 mm: corte 2080×725 → faturado 2100×750. O SoftCalc replica isso (glass_bill_step=50) — o custo do vidro bate com a nota do fornecedor. O CORTE real (L\/2, L\/2+50, sem arredondar) é o que vai pra oficina e pro cálculo de PESO; só o m² do PREÇO usa a medida arredondada. Conferido no carrinho: vão 1350×2100 → 1,435 + 1,575 = 3,010 m² faturados.","scope":"correr","title":"Vidro faturado ceil-50: arredonda cada dimensão pra cima em 50 mm (corte real fica pra oficina)","source":"carrinho da têmpera conferido linha a linha — 10\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"erro","technical":null,"sort_order":109,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"vidro-fixo-por-m2","scope":"vidro","title":"Peça de vidro avulsa: pano cru cobrado por m² (ceil-50); a medida É o vidro","body":"Peça de vidro avulsa é o pano de vidro CRU sob medida — tampo de mesa, prateleira, peça de reposição, vidro solto — sem furação, sem kit, sem ferragem e SEM MOLDURA. NÃO se confunde com vidro fixo (vidro INSTALADO como painel de um vão, que leva U de recebimento [VF-U] ou moldura Suprema [SU-F]) nem com montagem\/esquadria (perfis + ferragem + vidro): aqui é só o vidro. A medida digitada É o tamanho do vidro (o cliente já dá a medida final da peça — sem folga automática). Cobrado por m² arredondando cada dimensão pra cima em 50 mm (como a têmpera fatura); o corte real segue pra oficina. Peso = área real × 2,5 kg\/m² por mm (8mm=20, 10mm=25). Conferido no carrinho da têmpera: FIXO-09 incolor 10mm 2000×2000 = 4,00 m² × R$225,35 = R$901,40; 100 kg (a têmpera fatura o pano bruto por m² igual, seja usado como tampo ou instalado num vão).","severity":"erro","status":"validado","source":"Carrinho da têmpera (FIXO-09) + reclassificação PraiaMar (Rhuan) — 13\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Reenquadrada de \"vidro fixo\" para PEÇA DE VIDRO avulsa (tampo\/prateleira\/vidro comum): não é vidro fixo instalado nem montagem. Preço por m² inalterado.","machine":null,"technical":{"view":"","application":"","parts":["ceil-50","FIXO-09"],"dimensions":["Peso = área real × 2,5 kg\/m² por mm (8mm=20, 10mm=25).","FIXO-09 incolor 10mm 2000×2000 = 4,00 m² × R$225,35 = R$901,40; 100 kg (a têmpera fatura o pano bruto por m² igual, seja usado como tampo ou instalado num vão)."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":110,"updated_at":"2026-07-13 12:36:15","versions":[{"rule_id":"vidro-fixo-por-m2","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Reenquadrada de \"vidro fixo\" para PEÇA DE VIDRO avulsa (tampo\/prateleira\/vidro comum): não é vidro fixo instalado nem montagem. Preço por m² inalterado.","snapshot":{"id":"vidro-fixo-por-m2","scope":"vidro","title":"Peça de vidro avulsa: pano cru cobrado por m² (ceil-50); a medida É o vidro","body":"Peça de vidro avulsa é o pano de vidro CRU sob medida — tampo de mesa, prateleira, peça de reposição, vidro solto — sem furação, sem kit, sem ferragem e SEM MOLDURA. NÃO se confunde com vidro fixo (vidro INSTALADO como painel de um vão, que leva U de recebimento [VF-U] ou moldura Suprema [SU-F]) nem com montagem\/esquadria (perfis + ferragem + vidro): aqui é só o vidro. A medida digitada É o tamanho do vidro (o cliente já dá a medida final da peça — sem folga automática). Cobrado por m² arredondando cada dimensão pra cima em 50 mm (como a têmpera fatura); o corte real segue pra oficina. Peso = área real × 2,5 kg\/m² por mm (8mm=20, 10mm=25). Conferido no carrinho da têmpera: FIXO-09 incolor 10mm 2000×2000 = 4,00 m² × R$225,35 = R$901,40; 100 kg (a têmpera fatura o pano bruto por m² igual, seja usado como tampo ou instalado num vão).","severity":"erro","status":"validado","source":"Carrinho da têmpera (FIXO-09) + reclassificação PraiaMar (Rhuan) — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Reenquadrada de \"vidro fixo\" para PEÇA DE VIDRO avulsa (tampo\/prateleira\/vidro comum): não é vidro fixo instalado nem montagem. Preço por m² inalterado.","source_kind":"legacy","revision":2,"sort_order":119},"created_at":"2026-07-13 12:36:15"},{"rule_id":"vidro-fixo-por-m2","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"vidro-fixo-por-m2","body":"Vidro fixo é a peça mais simples: um painel de temperado sem furação, sem kit nem ferragem. A medida digitada É o tamanho do vidro (o cliente já mede o vão menos o encaixe dele — sem folga automática). Cobrado por m² arredondando cada dimensão pra cima em 50 mm (como a têmpera fatura); o corte real segue pra oficina. Peso = área real × 2,5 kg\/m² por mm (8mm=20, 10mm=25). Conferido no carrinho: FIXO-09 incolor 10mm 2000×2000 = 4,00 m² × R$225,35 = R$901,40; 100 kg.","scope":"vidro","title":"Vidro fixo: peça sem furação, cobrada por m² (ceil-50); a medida É o vidro","source":"Carrinho da têmpera (FIXO-09) — 11\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"erro","technical":null,"sort_order":110,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"janela-correr-folgas","scope":"correr","title":"Janela de correr: folgas iguais à porta (por nº de folhas); kit igual; bate-fecha é a tranca","body":"Janela de correr de vidro usa as MESMAS folgas da porta: altura do CORRER = H−20; altura do FIXO = H−60. A largura divide pelo nº de folhas N: cada folha nominal = L\/N; o CORRER ganha +50 de transpasse (L\/N+50) e o FIXO fica no nominal (L\/N). Ex.: 2 folhas → L\/2; 4 folhas → L\/4. O KIT é o MESMO da porta (menu \"KIT PORTA E JANELAS DE CORRER\"): 2 folhas = K1, 4 folhas = K3 (escolhido por w_max×h_max; janela usa a faixa de altura 1200). Cobrança m² ceil-50; peso pela área real × 2,5 kg\/m²\/mm. A fechadura é o BATE-FECHA 1570 V\/V: ELE É A TRANCA (tranca a janela fechada) — só não tem CHAVE, então não abre por dentro\/fora com chave. Folha ≤ 650×800 mm. Conferido: JNP-4F-BF verde 8mm 2200×1200 = 2× correr 1180×600 + 2× fixo 1140×550 = 2,705 m² × R$247,43 = R$669,30; 53,40 kg.","severity":"erro","status":"validado","source":"Carrinho da têmpera (JNP-4F-BF) — 11\/07\/2026","source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","machine":null,"technical":{"view":"","application":"","parts":["K1","K3","ceil-50","JNP-4F"],"dimensions":["altura do CORRER = H−20; altura do FIXO = H−60.","cada folha nominal = L\/N; o CORRER ganha +50 de transpasse (L\/N+50) e o FIXO fica no nominal (L\/N).","2 folhas → L\/2; 4 folhas → L\/4.","2 folhas = K1, 4 folhas = K3 (escolhido por w_max×h_max; janela usa a faixa de altura 1200).","JNP-4F-BF verde 8mm 2200×1200 = 2× correr 1180×600 + 2× fixo 1140×550 = 2,705 m² × R$247,43 = R$669,30; 53,40 kg."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":111,"updated_at":"2026-07-12 08:18:08","versions":[{"rule_id":"janela-correr-folgas","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"janela-correr-folgas","body":"Janela de correr de vidro usa as MESMAS folgas da porta: altura do CORRER = H−20; altura do FIXO = H−60. A largura divide pelo nº de folhas N: cada folha nominal = L\/N; o CORRER ganha +50 de transpasse (L\/N+50) e o FIXO fica no nominal (L\/N). Ex.: 2 folhas → L\/2; 4 folhas → L\/4. O KIT é o MESMO da porta (menu \"KIT PORTA E JANELAS DE CORRER\"): 2 folhas = K1, 4 folhas = K3 (escolhido por w_max×h_max; janela usa a faixa de altura 1200). Cobrança m² ceil-50; peso pela área real × 2,5 kg\/m²\/mm. A fechadura é o BATE-FECHA 1570 V\/V: ELE É A TRANCA (tranca a janela fechada) — só não tem CHAVE, então não abre por dentro\/fora com chave. Folha ≤ 650×800 mm. Conferido: JNP-4F-BF verde 8mm 2200×1200 = 2× correr 1180×600 + 2× fixo 1140×550 = 2,705 m² × R$247,43 = R$669,30; 53,40 kg.","scope":"correr","title":"Janela de correr: folgas iguais à porta (por nº de folhas); kit igual; bate-fecha é a tranca","source":"Carrinho da têmpera (JNP-4F-BF) — 11\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"erro","technical":null,"sort_order":111,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"fixo-u-perimetro-folga","scope":"vidro","title":"Vidro fixo com U: 4 perfis no perímetro, vidro L-30 × H-30, vedação por borracha","body":"Vidro fixo INSTALADO simples (linha Convencional, tipologia VF-U): 4 perfis U no perímetro do vão em BUTT JOINT — os 2 HORIZONTAIS (topo+base) correm a largura inteira (= L, 100%) e os 2 VERTICAIS entram entre eles, cortados H − 2× a ALTURA do U — cavalinho U-555 tem 25 mm de altura (Alplan PU-316) → vertical = H − 50; cavalão U-556 tem 20 mm de altura (ALUMIL Box 8mm) → vertical = H − 40 (alturas lidas nos desenhos dos catálogos). O vidro é temperado 8 mm (padrão) cortado com 30 mm de FOLGA por dimensão — largura = L−30, altura = H−30 (~15 mm de encaixe por lado no U). Vedação com BORRACHA (padrão) ou silicone. Técnica de instalação \"no pulo\": parafusa os U de baixo e de cima primeiro, depois encaixa as laterais. O U é ESCOLHA DO OPERADOR: cavalinho (U-555, 0,268 kg\/m, mais robusto) ou cavalão (U-556, 0,143 kg\/m) — muda material\/preço, não é preferência de corte. MODULAR: quando o vão é grande demais pra um vidro só (peso\/manuseio, ~acima de 3,5 m), DIVIDE em módulos — B colunas lado a lado e\/ou A linhas empilhadas (parâmetros no ato, 1×1 = pano único). A junta interna é VIDRO COM VIDRO DE TOPO — NÃO entra montante\/perfil de alumínio entre os panos; a junta leva botões de correção (alinhadores), 1 a cada 1 m de junta (R$ 4,00 cada, componente BOT-COR). Por isso dividir quase não muda o preço: só o perímetro (4 U) leva perfil, independente de A\/B; a divisão só reparte o corte do vidro e soma os botões (custo pequeno). O vão do vidro perde só 3 mm por junta (folga do botão de correção): cada pano fica (L − 30 − (B−1)×3)\/B de largura por (H − 30 − (A−1)×3)\/A de altura, faturado por m² ceil-50 individualmente. Nº de botões = comprimento da junta ÷ 1 m (vertical: (B−1)×(H−30); horizontal: (A−1)×(L−30)). DIFERENTE de: (a) \"vidro fixo só o pano\" [VF] = vidro avulso por m² sem moldura, o cliente já dá a medida do vidro; (b) \"quadro fixo Suprema\" [SU-F] = emoldurado com montantes\/baguete\/contramarco, mais caro, pra casa construída na linha Suprema. A escolha da tipologia é comercial: padaria\/comércio leva o VF-U; casa Suprema leva o SU-F.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 11\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Fixo com U MODULAR (correção Rhuan): junta vidro-vidro de topo, SEM montante — só o perímetro leva alumínio; vidro (L−30−(B−1)·3)\/B × (H−30−(A−1)·3)\/A por pano (vão 3 mm\/junta); junta leva botão de correção BOT-COR R$4,00, 1 a cada 1 m. Antes eu punha 2 U","machine":null,"technical":{"view":"","application":"","parts":["L-30","H-30","U-555","PU-316","U-556","ceil-50"],"dimensions":["O vidro é temperado 8 mm (padrão) cortado com 30 mm de FOLGA por dimensão — largura = L−30, altura = H−30 (~15 mm de encaixe por lado no U).","quando o vão é grande demais pra um vidro só (peso\/manuseio, ~acima de 3,5 m), DIVIDE em módulos — B colunas lado a lado e\/ou A linhas empilhadas (parâmetros no ato, 1×1 = pano único).","cada pano fica (L − 30 − (B−1)×3)\/B de largura por (H − 30 − (A−1)×3)\/A de altura, faturado por m² ceil-50 individualmente.","(A−1)×(L−30)).","(a) \"vidro fixo só o pano\" [VF] = vidro avulso por m² sem moldura, o cliente já dá a medida do vidro; (b) \"quadro fixo Suprema\" [SU-F] = emoldurado com montantes\/baguete\/contramarco, mais caro, pra casa construída na linha Suprema."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":5,"sort_order":112,"updated_at":"2026-07-13 16:09:25","versions":[{"rule_id":"fixo-u-perimetro-folga","revision":5,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Fixo com U MODULAR (correção Rhuan): junta vidro-vidro de topo, SEM montante — só o perímetro leva alumínio; vidro (L−30−(B−1)·3)\/B × (H−30−(A−1)·3)\/A por pano (vão 3 mm\/junta); junta leva botão de correção BOT-COR R$4,00, 1 a cada 1 m. Antes eu punha 2 U","snapshot":{"id":"fixo-u-perimetro-folga","scope":"vidro","title":"Vidro fixo com U: 4 perfis no perímetro, vidro L-30 × H-30, vedação por borracha","body":"Vidro fixo INSTALADO simples (linha Convencional, tipologia VF-U): 4 perfis U no perímetro do vão em BUTT JOINT — os 2 HORIZONTAIS (topo+base) correm a largura inteira (= L, 100%) e os 2 VERTICAIS entram entre eles, cortados H − 2× a ALTURA do U — cavalinho U-555 tem 25 mm de altura (Alplan PU-316) → vertical = H − 50; cavalão U-556 tem 20 mm de altura (ALUMIL Box 8mm) → vertical = H − 40 (alturas lidas nos desenhos dos catálogos). O vidro é temperado 8 mm (padrão) cortado com 30 mm de FOLGA por dimensão — largura = L−30, altura = H−30 (~15 mm de encaixe por lado no U). Vedação com BORRACHA (padrão) ou silicone. Técnica de instalação \"no pulo\": parafusa os U de baixo e de cima primeiro, depois encaixa as laterais. O U é ESCOLHA DO OPERADOR: cavalinho (U-555, 0,268 kg\/m, mais robusto) ou cavalão (U-556, 0,143 kg\/m) — muda material\/preço, não é preferência de corte. MODULAR: quando o vão é grande demais pra um vidro só (peso\/manuseio, ~acima de 3,5 m), DIVIDE em módulos — B colunas lado a lado e\/ou A linhas empilhadas (parâmetros no ato, 1×1 = pano único). A junta interna é VIDRO COM VIDRO DE TOPO — NÃO entra montante\/perfil de alumínio entre os panos; a junta leva botões de correção (alinhadores), 1 a cada 1 m de junta (R$ 4,00 cada, componente BOT-COR). Por isso dividir quase não muda o preço: só o perímetro (4 U) leva perfil, independente de A\/B; a divisão só reparte o corte do vidro e soma os botões (custo pequeno). O vão do vidro perde só 3 mm por junta (folga do botão de correção): cada pano fica (L − 30 − (B−1)×3)\/B de largura por (H − 30 − (A−1)×3)\/A de altura, faturado por m² ceil-50 individualmente. Nº de botões = comprimento da junta ÷ 1 m (vertical: (B−1)×(H−30); horizontal: (A−1)×(L−30)). DIFERENTE de: (a) \"vidro fixo só o pano\" [VF] = vidro avulso por m² sem moldura, o cliente já dá a medida do vidro; (b) \"quadro fixo Suprema\" [SU-F] = emoldurado com montantes\/baguete\/contramarco, mais caro, pra casa construída na linha Suprema. A escolha da tipologia é comercial: padaria\/comércio leva o VF-U; casa Suprema leva o SU-F.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 11\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Fixo com U MODULAR (correção Rhuan): junta vidro-vidro de topo, SEM montante — só o perímetro leva alumínio; vidro (L−30−(B−1)·3)\/B × (H−30−(A−1)·3)\/A por pano (vão 3 mm\/junta); junta leva botão de correção BOT-COR R$4,00, 1 a cada 1 m. Antes eu punha 2 U + 50 mm por divisor (errado, superfaturava).","source_kind":"legacy","revision":5,"sort_order":123},"created_at":"2026-07-13 16:09:25"},{"rule_id":"fixo-u-perimetro-folga","revision":4,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Fixo com U MODULAR (correção Rhuan): junta é vidro-vidro de topo, SEM montante — só o perímetro leva alumínio; vidro (L−30−(B−1)·5)\/B × (H−30−(A−1)·5)\/A por pano (desconto 3–5 mm\/junta, botão de correção). Antes eu punha 2 U + 50 mm por divisor (errado, s","snapshot":{"id":"fixo-u-perimetro-folga","scope":"vidro","title":"Vidro fixo com U: 4 perfis no perímetro, vidro L-30 × H-30, vedação por borracha","body":"Vidro fixo INSTALADO simples (linha Convencional, tipologia VF-U): 4 perfis U no perímetro do vão em BUTT JOINT — os 2 HORIZONTAIS (topo+base) correm a largura inteira (= L, 100%) e os 2 VERTICAIS entram entre eles, cortados H − 2× a ALTURA do U — cavalinho U-555 tem 25 mm de altura (Alplan PU-316) → vertical = H − 50; cavalão U-556 tem 20 mm de altura (ALUMIL Box 8mm) → vertical = H − 40 (alturas lidas nos desenhos dos catálogos). O vidro é temperado 8 mm (padrão) cortado com 30 mm de FOLGA por dimensão — largura = L−30, altura = H−30 (~15 mm de encaixe por lado no U). Vedação com BORRACHA (padrão) ou silicone. Técnica de instalação \"no pulo\": parafusa os U de baixo e de cima primeiro, depois encaixa as laterais. O U é ESCOLHA DO OPERADOR: cavalinho (U-555, 0,268 kg\/m, mais robusto) ou cavalão (U-556, 0,143 kg\/m) — muda material\/preço, não é preferência de corte. MODULAR: quando o vão é grande demais pra um vidro só (peso\/manuseio, ~acima de 3,5 m), DIVIDE em módulos — B colunas lado a lado e\/ou A linhas empilhadas (parâmetros no ato, 1×1 = pano único). A junta interna é VIDRO COM VIDRO DE TOPO — NÃO entra montante\/perfil de alumínio entre os panos; no máximo vão botões de correção (alinhadores) na junta. Por isso dividir quase não muda o alumínio: só o perímetro (4 U) leva perfil, independente de A\/B. O vão do vidro perde só ~5 mm por junta (3–5 mm na prática, folga da junta\/alinhador): cada pano fica (L − 30 − (B−1)×5)\/B de largura por (H − 30 − (A−1)×5)\/A de altura, faturado por m² ceil-50 individualmente. DIFERENTE de: (a) \"vidro fixo só o pano\" [VF] = vidro avulso por m² sem moldura, o cliente já dá a medida do vidro; (b) \"quadro fixo Suprema\" [SU-F] = emoldurado com montantes\/baguete\/contramarco, mais caro, pra casa construída na linha Suprema. A escolha da tipologia é comercial: padaria\/comércio leva o VF-U; casa Suprema leva o SU-F.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 11\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Fixo com U MODULAR (correção Rhuan): junta é vidro-vidro de topo, SEM montante — só o perímetro leva alumínio; vidro (L−30−(B−1)·5)\/B × (H−30−(A−1)·5)\/A por pano (desconto 3–5 mm\/junta, botão de correção). Antes eu punha 2 U + 50 mm por divisor (errado, superfaturava).","source_kind":"legacy","revision":4,"sort_order":121},"created_at":"2026-07-13 13:09:17"},{"rule_id":"fixo-u-perimetro-folga","revision":3,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Fixo com U agora MODULAR: B colunas \/ A linhas, divisor = 2 U costa-a-costa (vertical H−2×altura, horizontal L), vidro (L−30−(B−1)·50)\/B × (H−30−(A−1)·50)\/A por pano; perímetro\/butt-joint inalterado (1×1 idêntico)","snapshot":{"id":"fixo-u-perimetro-folga","scope":"vidro","title":"Vidro fixo com U: 4 perfis no perímetro, vidro L-30 × H-30, vedação por borracha","body":"Vidro fixo INSTALADO simples (linha Convencional, tipologia VF-U): 4 perfis U no perímetro do vão em BUTT JOINT — os 2 HORIZONTAIS (topo+base) correm a largura inteira (= L, 100%) e os 2 VERTICAIS entram entre eles, cortados H − 2× a ALTURA do U — cavalinho U-555 tem 25 mm de altura (Alplan PU-316) → vertical = H − 50; cavalão U-556 tem 20 mm de altura (ALUMIL Box 8mm) → vertical = H − 40 (alturas lidas nos desenhos dos catálogos). O vidro é temperado 8 mm (padrão) cortado com 30 mm de FOLGA por dimensão — largura = L−30, altura = H−30 (~15 mm de encaixe por lado no U). Vedação com BORRACHA (padrão) ou silicone. Técnica de instalação \"no pulo\": parafusa os U de baixo e de cima primeiro, depois encaixa as laterais. O U é ESCOLHA DO OPERADOR: cavalinho (U-555, 0,268 kg\/m, mais robusto) ou cavalão (U-556, 0,143 kg\/m) — muda material\/preço, não é preferência de corte. MODULAR: quando o vão é grande demais pra um vidro só (peso\/manuseio, ~acima de 3,5 m), DIVIDE em módulos — B colunas lado a lado e\/ou A linhas empilhadas (parâmetros no ato, 1×1 = pano único). Cada divisor interno é um montante feito de 2 U do MESMO tipo escolhido, costa-a-costa (recebe vidro dos dois lados — sem peça nova): montante VERTICAL entre colunas com a altura das laterais, travessa HORIZONTAL entre linhas correndo a largura. Cada pano fica (L − 30 − (B−1)×50)\/B de largura por (H − 30 − (A−1)×50)\/A de altura (o divisor consome ~50 mm: ≈20 mm de montante + 15 mm de folga por borda nova) e é faturado por m² ceil-50 individualmente. DIFERENTE de: (a) \"vidro fixo só o pano\" [VF] = vidro avulso por m² sem moldura, o cliente já dá a medida do vidro; (b) \"quadro fixo Suprema\" [SU-F] = emoldurado com montantes\/baguete\/contramarco, mais caro, pra casa construída na linha Suprema. A escolha da tipologia é comercial: padaria\/comércio leva o VF-U; casa Suprema leva o SU-F.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 11\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Fixo com U agora MODULAR: B colunas \/ A linhas, divisor = 2 U costa-a-costa (vertical H−2×altura, horizontal L), vidro (L−30−(B−1)·50)\/B × (H−30−(A−1)·50)\/A por pano; perímetro\/butt-joint inalterado (1×1 idêntico)","source_kind":"legacy","revision":3,"sort_order":119},"created_at":"2026-07-13 12:35:50"},{"rule_id":"fixo-u-perimetro-folga","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Fixo com U: butt joint (horizontais L, verticais H−2×altura); cavalinho 25→H−50, cavalão 20→H−40, cotas lidas dos catálogos Alplan\/ALUMIL","snapshot":{"id":"fixo-u-perimetro-folga","scope":"vidro","title":"Vidro fixo com U: 4 perfis no perímetro, vidro L-30 × H-30, vedação por borracha","body":"Vidro fixo INSTALADO simples (linha Convencional, tipologia VF-U): 4 perfis U no perímetro do vão em BUTT JOINT — os 2 HORIZONTAIS (topo+base) correm a largura inteira (= L, 100%) e os 2 VERTICAIS entram entre eles, cortados H − 2× a ALTURA do U — cavalinho U-555 tem 25 mm de altura (Alplan PU-316) → vertical = H − 50; cavalão U-556 tem 20 mm de altura (ALUMIL Box 8mm) → vertical = H − 40 (alturas lidas nos desenhos dos catálogos). O vidro é temperado 8 mm (padrão) cortado com 30 mm de FOLGA por dimensão — largura = L−30, altura = H−30 (~15 mm de encaixe por lado no U). Vedação com BORRACHA (padrão) ou silicone. Técnica de instalação \"no pulo\": parafusa os U de baixo e de cima primeiro, depois encaixa as laterais. O U é ESCOLHA DO OPERADOR: cavalinho (U-555, 0,268 kg\/m, mais robusto) ou cavalão (U-556, 0,143 kg\/m) — muda material\/preço, não é preferência de corte. Sem limite de tamanho no motor (o serralheiro define no ato; acima de ~3,5 m vira peso de carregar → divide em panos). DIFERENTE de: (a) \"vidro fixo só o pano\" [VF] = vidro avulso por m² sem moldura, o cliente já dá a medida do vidro; (b) \"quadro fixo Suprema\" [SU-F] = emoldurado com montantes\/baguete\/contramarco, mais caro, pra casa construída na linha Suprema. A escolha da tipologia é comercial: padaria\/comércio leva o VF-U; casa Suprema leva o SU-F.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 11\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Fixo com U: butt joint (horizontais L, verticais H−2×altura); cavalinho 25→H−50, cavalão 20→H−40, cotas lidas dos catálogos Alplan\/ALUMIL","source_kind":"legacy","revision":2,"sort_order":116},"created_at":"2026-07-12 09:31:29"},{"rule_id":"fixo-u-perimetro-folga","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"fixo-u-perimetro-folga","body":"Vidro fixo INSTALADO simples (linha Convencional, tipologia VF-U): 4 perfis U no perímetro do vão em BUTT JOINT — os 2 HORIZONTAIS (topo+base) correm a largura inteira (= L, 100%) e os 2 VERTICAIS entram entre eles, cortados H − 2× a ALTURA do U — cavalinho U-555 tem 25 mm de altura (Alplan PU-316) → vertical = H − 50; cavalão U-556 tem 20 mm de altura (ALUMIL Box 8mm) → vertical = H − 40 (alturas lidas nos desenhos dos catálogos). O vidro é temperado 8 mm (padrão) cortado com 30 mm de FOLGA por dimensão — largura = L−30, altura = H−30 (~15 mm de encaixe por lado no U). Vedação com BORRACHA (padrão) ou silicone. Técnica de instalação \"no pulo\": parafusa os U de baixo e de cima primeiro, depois encaixa as laterais. O U é ESCOLHA DO OPERADOR: cavalinho (U-555, 0,268 kg\/m, mais robusto) ou cavalão (U-556, 0,143 kg\/m) — muda material\/preço, não é preferência de corte. Sem limite de tamanho no motor (o serralheiro define no ato; acima de ~3,5 m vira peso de carregar → divide em panos). DIFERENTE de: (a) \"vidro fixo só o pano\" [VF] = vidro avulso por m² sem moldura, o cliente já dá a medida do vidro; (b) \"quadro fixo Suprema\" [SU-F] = emoldurado com montantes\/baguete\/contramarco, mais caro, pra casa construída na linha Suprema. A escolha da tipologia é comercial: padaria\/comércio leva o VF-U; casa Suprema leva o SU-F.","scope":"vidro","title":"Vidro fixo com U: 4 perfis no perímetro, vidro L-30 × H-30, vedação por borracha","source":"PraiaMar (Rhuan) — 11\/07\/2026","status":"validado","enabled":1,"machine":null,"revision":1,"severity":"erro","technical":null,"sort_order":112,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"suf-subdivisao-vidro-fino","scope":"vidro","title":"Quadro fixo Suprema: vidro fino subdividido a cada ~800 mm; moldura padrão CM-063 + MP-347","body":"Quadro fixo emoldurado da linha Suprema (SU-F, tipologia SU-F): o vidro fino (comum ou temperado ≤6 mm) é SUBDIVIDIDO em módulos de ~800 mm por travessa central — A = INT(H\/800)+1 na altura, B = INT(L\/800)+1 na largura — porque vidro fino não vence vão grande sem apoio; cada módulo é travado por baguete (SU-102). É o OPOSTO do fixo Convencional (temperado 8 mm, pano único sem travessa). Moldura: toda Suprema leva contramarco + arremate; o padrão PraiaMar é CM-063 (contramarco) + MP-347 (arremate), com conexão de canto CON-CM063 (1 por canto — ver regra cm-conexao-nylon; macho\/cunha CL-006\/CL-011 são do sistema antigo, não usar) — o Y-721\/E-613 do sistema de origem fica como opção. Fixação a cada ~400 mm no perímetro: (INT((L-100)\/400)+1)*2 + (INT((H-100)\/400)+1)*2 chumbadores\/parafusos.","severity":"aviso","status":"pendente","source":"PraiaMar (Rhuan) + ficha SU-F conferida — 11\/07\/2026","source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Substituiu CL-006\/CL-011 pela conexão própria do CM-063 e deixou a regra pendente de confirmação.","machine":null,"technical":{"view":"","application":"","parts":["CM-063","MP-347","SU-102","CON-CM063","CL-006","CL-011","Y-721","E-613","L-100","H-100"],"dimensions":["o vidro fino (comum ou temperado ≤6 mm) é SUBDIVIDIDO em módulos de ~800 mm por travessa central — A = INT(H\/800)+1 na altura, B = INT(L\/800)+1 na largura — porque vidro fino não vence vão grande sem apoio; cada módulo é travado por baguete (SU-102).","(INT((L-100)\/400)+1)*2 + (INT((H-100)\/400)+1)*2 chumbadores\/parafusos."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":113,"updated_at":"2026-07-14 08:28:23","versions":[{"rule_id":"suf-subdivisao-vidro-fino","revision":3,"source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Substituiu CL-006\/CL-011 pela conexão própria do CM-063 e deixou a regra pendente de confirmação.","snapshot":{"id":"suf-subdivisao-vidro-fino","scope":"vidro","title":"Quadro fixo Suprema: vidro fino subdividido a cada ~800 mm; moldura padrão CM-063 + MP-347","body":"Quadro fixo emoldurado da linha Suprema (SU-F, tipologia wz_suf): o vidro fino (comum ou temperado ≤6 mm) é SUBDIVIDIDO em módulos de ~800 mm por travessa central — A = INT(H\/800)+1 na altura, B = INT(L\/800)+1 na largura — porque vidro fino não vence vão grande sem apoio; cada módulo é travado por baguete (SU-102). É o OPOSTO do fixo Convencional (temperado 8 mm, pano único sem travessa). Moldura: toda Suprema leva contramarco + arremate; o padrão PraiaMar é CM-063 (contramarco) + MP-347 (arremate), com conexão de canto CON-CM063 (1 por canto — ver regra cm-conexao-nylon; macho\/cunha CL-006\/CL-011 são do sistema antigo, não usar) — o Y-721\/E-613 do sistema de origem fica como opção. Fixação a cada ~400 mm no perímetro: (INT((L-100)\/400)+1)*2 + (INT((H-100)\/400)+1)*2 chumbadores\/parafusos.","severity":"aviso","status":"pendente","source":"PraiaMar (Rhuan) + ficha SU-F conferida — 11\/07\/2026","source_kind":"mixed","author_type":"claude","author_name":"Anthropic Claude","change_note":"Autoria recuperada da sessão Claude ec2236c8-d6e0-46ec-b538-1155c0f956a5: Substituiu CL-006\/CL-011 pela conexão própria do CM-063 e deixou a regra pendente de confirmação.","machine":null,"technical":null,"supersedes_id":null,"enabled":true,"revision":3,"sort_order":113,"updated_at":"2026-07-12 08:18:08"},"created_at":"2026-07-12 08:59:03"},{"rule_id":"suf-subdivisao-vidro-fino","revision":2,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Importado sem histórico de autoria","snapshot":{"id":"suf-subdivisao-vidro-fino","body":"Quadro fixo emoldurado da linha Suprema (SU-F, tipologia wz_suf): o vidro fino (comum ou temperado ≤6 mm) é SUBDIVIDIDO em módulos de ~800 mm por travessa central — A = INT(H\/800)+1 na altura, B = INT(L\/800)+1 na largura — porque vidro fino não vence vão grande sem apoio; cada módulo é travado por baguete (SU-102). É o OPOSTO do fixo Convencional (temperado 8 mm, pano único sem travessa). Moldura: toda Suprema leva contramarco + arremate; o padrão PraiaMar é CM-063 (contramarco) + MP-347 (arremate), com conexão de canto CON-CM063 (1 por canto — ver regra cm-conexao-nylon; macho\/cunha CL-006\/CL-011 são do sistema antigo, não usar) — o Y-721\/E-613 do sistema de origem fica como opção. Fixação a cada ~400 mm no perímetro: (INT((L-100)\/400)+1)*2 + (INT((H-100)\/400)+1)*2 chumbadores\/parafusos.","scope":"vidro","title":"Quadro fixo Suprema: vidro fino subdividido a cada ~800 mm; moldura padrão CM-063 + MP-347","source":"PraiaMar (Rhuan) + ficha SU-F conferida — 11\/07\/2026","status":"pendente","enabled":1,"machine":null,"revision":2,"severity":"aviso","technical":null,"sort_order":113,"updated_at":"2026-07-12 08:18:08.000000","author_name":"Não identificado","author_type":"legacy","change_note":"Importado sem histórico de autoria","source_kind":"legacy","supersedes_id":null},"created_at":"2026-07-12 08:48:03"}]},{"id":"panorama-estrutura-prumos","scope":"guarda_corpo","title":"Panorama: estrutura de prumos discretos, não base corrida","body":"O guarda-corpo Panorama é montado com postes CG-077 em pontos discretos. O corrimão CG-083 e a canaleta\/tampa CG-074 correm no comprimento; as baguetes CG-075 retêm as arestas verticais dos painéis de vidro. O poste desce até uma fixação própria na base. Espaçamento, pontalete interno, fixadores e guarnições continuam em calibração: não transformar os valores provisórios da tipologia em instrução de fabricação.","severity":"erro","status":"validado","source":"Rhuan — desenhos\/fotos de montagem recuperados da sessão Claude 7bb0bd2d-4342-408e-8e2e-02b7cef9ce78 + LINHA PANORAMA.pdf (seções e pesos)","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Recupera o desenho de montagem enviado pelo Rhuan e cruza os papéis com as seções do PDF Panorama.","machine":{"refs":["CG-083","CG-074","CG-077","CG-075"],"check":"requires_all","applies":{"kind":["guardrail"],"line":["Panorama"]}},"technical":{"view":"elevacao","application":"Guarda-corpo da linha Panorama com painéis entre prumos","parts":["CG-083 — corrimão contínuo, 1,42 kg\/m","CG-074 — canaleta\/tampa contínua, 0,23 kg\/m","CG-077 — poste vertical discreto, 0,80 kg\/m","CG-075 — baguete\/trava vertical do vidro, 0,51 kg\/m"],"dimensions":["CG-083: 83,5 × 60 mm","CG-074: 53 × 15,6 mm","CG-077: 50,8 × 33,5 mm","CG-075: 20 × 33,3 mm"],"steps":["Distribuir os prumos CG-077 conforme o projeto estrutural aprovado","Montar os painéis entre prumos","Reter as arestas com CG-075","Fechar o topo com CG-074 e corrimão CG-083"],"acceptance":["A lista contém os quatro perfis com seus papéis corretos","Nenhum cálculo trata o sistema como base corrida","Fixação e espaçamento só são liberados após calibração"],"exceptions":["Passo entre prumos, pontalete e ferragens de base não estão validados nesta regra","O SVG é elevação funcional, não projeto estrutural"],"source_pages":["doc\/lesson\/LINHA PANORAMA.pdf — página única","Sessão Claude 7bb0bd2d-4342-408e-8e2e-02b7cef9ce78 — montagem corrigida pelos arquivos do Rhuan"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":114,"updated_at":"2026-07-12 09:01:43","versions":[{"rule_id":"panorama-estrutura-prumos","revision":1,"source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Recupera o desenho de montagem enviado pelo Rhuan e cruza os papéis com as seções do PDF Panorama.","snapshot":{"id":"panorama-estrutura-prumos","scope":"guarda_corpo","title":"Panorama: estrutura de prumos discretos, não base corrida","body":"O guarda-corpo Panorama é montado com postes CG-077 em pontos discretos. O corrimão CG-083 e a canaleta\/tampa CG-074 correm no comprimento; as baguetes CG-075 retêm as arestas verticais dos painéis de vidro. O poste desce até uma fixação própria na base. Espaçamento, pontalete interno, fixadores e guarnições continuam em calibração: não transformar os valores provisórios da tipologia em instrução de fabricação.","severity":"erro","status":"validado","source":"Rhuan — desenhos\/fotos de montagem recuperados da sessão Claude 7bb0bd2d-4342-408e-8e2e-02b7cef9ce78 + LINHA PANORAMA.pdf (seções e pesos)","source_kind":"mixed","author_type":"codex","author_name":"OpenAI Codex","change_note":"Recupera o desenho de montagem enviado pelo Rhuan e cruza os papéis com as seções do PDF Panorama.","machine":{"check":"requires_all","applies":{"kind":["guardrail"],"line":["Panorama"]},"refs":["CG-083","CG-074","CG-077","CG-075"]},"technical":{"view":"elevacao","application":"Guarda-corpo da linha Panorama com painéis entre prumos","parts":["CG-083 — corrimão contínuo, 1,42 kg\/m","CG-074 — canaleta\/tampa contínua, 0,23 kg\/m","CG-077 — poste vertical discreto, 0,80 kg\/m","CG-075 — baguete\/trava vertical do vidro, 0,51 kg\/m"],"dimensions":["CG-083: 83,5 × 60 mm","CG-074: 53 × 15,6 mm","CG-077: 50,8 × 33,5 mm","CG-075: 20 × 33,3 mm"],"steps":["Distribuir os prumos CG-077 conforme o projeto estrutural aprovado","Montar os painéis entre prumos","Reter as arestas com CG-075","Fechar o topo com CG-074 e corrimão CG-083"],"acceptance":["A lista contém os quatro perfis com seus papéis corretos","Nenhum cálculo trata o sistema como base corrida","Fixação e espaçamento só são liberados após calibração"],"exceptions":["Passo entre prumos, pontalete e ferragens de base não estão validados nesta regra","O SVG é elevação funcional, não projeto estrutural"],"source_pages":["doc\/lesson\/LINHA PANORAMA.pdf — página única","Sessão Claude 7bb0bd2d-4342-408e-8e2e-02b7cef9ce78 — montagem corrigida pelos arquivos do Rhuan"]},"enabled":true,"revision":1,"sort_order":114},"created_at":"2026-07-12 09:01:43"}]},{"id":"correr-folga-10mm","scope":"correr","title":"Correr 10mm: folga própria (fixo H−65, correr H−25) — não reusar a folga do 8mm","body":"No kit de porta\/janela de correr de vidro temperado, a folga de ALTURA muda com a espessura do vidro: 8mm → FIXO = vão−60 e CORRER = vão−20 (as folgas já calibradas de CV-PCV2\/JN-4F); 10mm → FIXO = vão−65 e CORRER = vão−25 (manual oficial do kit de engenharia 2\/4 folhas, que é a linha A2\/A4 da têmpera — os acessórios chamam-se 'AL 2'\/'AL 4' e o desconto 8mm bate 1:1 com o nosso). Perfis 10mm são outros (trilho\/guia\/click\/cadeirinha próprios; transpasse no perfil 14 em vez do 15). REGRA PRÁTICA: tipologia calibrada em 8mm NÃO pode simplesmente ganhar vidro 10mm no allowed_glass — a fórmula do vidro estaria 5mm errada nas duas folhas. Enquanto o motor não modela folga por espessura, 10mm = tipologia própria (fixo H−65 \/ correr H−25) ou fica fora. O BOT de sugestões segura isso sozinho (glass_mm no family_profile). PENDENTE: confirmar com um carrinho 10mm real da têmpera antes de criar a variante.","severity":"erro","status":"pendente","source":"Manual público oficial do kit (doc\/FABRICANTES.md) — 12\/07\/2026","source_kind":"pdf","author_type":"third_party","author_name":"Agente não identificado","change_note":"Autoria do texto original não recuperada; regra importada de processo externo e mantida pendente.","machine":null,"technical":{"view":"","application":"","parts":["CV-PCV2","JN-4F","A2","A4"],"dimensions":["No kit de porta\/janela de correr de vidro temperado, a folga de ALTURA muda com a espessura do vidro: 8mm → FIXO = vão−60 e CORRER = vão−20 (as folgas já calibradas de CV-PCV2\/JN-4F); 10mm → FIXO = vão−65 e CORRER = vão−25 (manual oficial do kit de engenharia 2\/4 folhas, que é a linha A2\/A4 da têmpera — os acessórios chamam-se 'AL 2'\/'AL 4' e o desconto 8mm bate 1:1 com o nosso).","Enquanto o motor não modela folga por espessura, 10mm = tipologia própria (fixo H−65 \/ correr H−25) ou fica fora."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/FABRICANTES.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":115,"updated_at":"2026-07-12 09:11:28","versions":[{"rule_id":"correr-folga-10mm","revision":2,"source_kind":"pdf","author_type":"third_party","author_name":"Agente não identificado","change_note":"Autoria do texto original não recuperada; regra importada de processo externo e mantida pendente.","snapshot":{"id":"correr-folga-10mm","scope":"correr","title":"Correr 10mm: folga própria (fixo H−65, correr H−25) — não reusar a folga do 8mm","body":"No kit de porta\/janela de correr de vidro temperado, a folga de ALTURA muda com a espessura do vidro: 8mm → FIXO = vão−60 e CORRER = vão−20 (as folgas já calibradas de CV-PCV2\/JN-4F); 10mm → FIXO = vão−65 e CORRER = vão−25 (manual oficial do kit de engenharia 2\/4 folhas, que é a linha A2\/A4 da têmpera — os acessórios chamam-se 'AL 2'\/'AL 4' e o desconto 8mm bate 1:1 com o nosso). Perfis 10mm são outros (trilho\/guia\/click\/cadeirinha próprios; transpasse no perfil 14 em vez do 15). REGRA PRÁTICA: tipologia calibrada em 8mm NÃO pode simplesmente ganhar vidro 10mm no allowed_glass — a fórmula do vidro estaria 5mm errada nas duas folhas. Enquanto o motor não modela folga por espessura, 10mm = tipologia própria (fixo H−65 \/ correr H−25) ou fica fora. O BOT de sugestões segura isso sozinho (glass_mm no family_profile). PENDENTE: confirmar com um carrinho 10mm real da têmpera antes de criar a variante.","severity":"erro","status":"pendente","source":"Manual público oficial do kit (doc\/FABRICANTES.md) — 12\/07\/2026","source_kind":"pdf","author_type":"third_party","author_name":"Agente não identificado","change_note":"Autoria do texto original não recuperada; regra importada de processo externo e mantida pendente.","machine":null,"revision":2,"sort_order":116},"created_at":"2026-07-12 09:11:28"},{"rule_id":"correr-folga-10mm","revision":1,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Criação da regra","snapshot":{"id":"correr-folga-10mm","scope":"correr","title":"Correr 10mm: folga própria (fixo H−65, correr H−25) — não reusar a folga do 8mm","body":"No kit de porta\/janela de correr de vidro temperado, a folga de ALTURA muda com a espessura do vidro: 8mm → FIXO = vão−60 e CORRER = vão−20 (as folgas já calibradas de CV-PCV2\/JN-4F); 10mm → FIXO = vão−65 e CORRER = vão−25 (manual oficial do kit de engenharia 2\/4 folhas, que é a linha A2\/A4 da têmpera — os acessórios chamam-se 'AL 2'\/'AL 4' e o desconto 8mm bate 1:1 com o nosso). Perfis 10mm são outros (trilho\/guia\/click\/cadeirinha próprios; transpasse no perfil 14 em vez do 15). REGRA PRÁTICA: tipologia calibrada em 8mm NÃO pode simplesmente ganhar vidro 10mm no allowed_glass — a fórmula do vidro estaria 5mm errada nas duas folhas. Enquanto o motor não modela folga por espessura, 10mm = tipologia própria (fixo H−65 \/ correr H−25) ou fica fora. O BOT de sugestões segura isso sozinho (glass_mm no family_profile). PENDENTE: confirmar com um carrinho 10mm real da têmpera antes de criar a variante.","severity":"erro","status":"pendente","source":"Manual público oficial do kit (doc\/FABRICANTES.md) — 12\/07\/2026","machine":null,"source_kind":"legacy","author_type":"legacy","author_name":"Não identificado","change_note":"Criação da regra","revision":1,"sort_order":115},"created_at":"2026-07-12 09:06:59"}]},{"id":"cm-grapa-fixacao","scope":"arremate_cm","title":"CM-060\/063\/200: grapa 106 × 18 encaixada no perfil","body":"A grapa do contramarco é uma lâmina metálica de 106 × 18 mm, com seis aberturas estampadas e recortes semicirculares laterais que funcionam como pontos de dobra. A prancha mostra a lâmina dobrada e encaixada transversalmente no canal do CM-060, CM-063 ou CM-200; outra imagem chama o conjunto de CHU 787 \/ GRAPA CLIC. A peça projeta uma aba para fora do perfil, mas as imagens não especificam o método de fixação na alvenaria, o espaçamento entre peças nem comprovam que CHU787 e o SD-896 hoje cadastrado no SoftCalc sejam exatamente o mesmo item.","severity":"aviso","status":"pendente","source":"Rhuan — imagens técnicas enviadas em 12\/07\/2026: prancha “GRAPA CM200, CM060 e CM063” cotada 106 × 18 mm; foto das lâminas; quadro “CHU 787 \/ GRAPA CLIC”. Cadastro SoftCalc consultado apenas para registrar a equivalência SD-896 ↔ CHU787 como pendente.","source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Cria regra e desenho próprios para o sistema de grapa, sem misturá-lo com a conexão do canto e sem presumir equivalência comercial com SD-896.","machine":null,"technical":{"view":"peça plana + dobra + encaixe no perfil","application":"Grapa de contramarco CM-060, CM-063 e CM-200","parts":["Grapa metálica estampada","Perfis CM-060, CM-063 ou CM-200","Referências visíveis na fonte: CHU 787 e GRAPA CLIC"],"dimensions":["Comprimento total da lâmina: 106 mm","Largura da lâmina: 18 mm","Seis aberturas estampadas","Recortes semicirculares laterais nos pontos de dobra"],"steps":["Escolher o ponto de dobra compatível com o perfil","Dobrar a lâmina no recorte correspondente","Encaixar\/travar a parte curta no canal do contramarco","Deixar a aba longa projetada para a etapa de instalação"],"acceptance":["Grapa dobrada no recorte, sem torcer a largura da lâmina","Parte curta presa ao canal e aba longa projetada","Aplicação restrita aos CM-060\/063\/200 indicados na prancha","Não confundir grapa de instalação com a conexão preta do canto"],"exceptions":["Confirmar se CHU787\/GRAPA CLIC e SD-896 são a mesma peça antes de alterar a lista de materiais","A fonte não informa passo entre grapas nem fixador na alvenaria","Somente as cotas gerais 106 × 18 mm são dimensionadas; posição e diâmetro das aberturas são esquemáticos"],"source_pages":["Rhuan — prancha GRAPA CM200\/CM060\/CM063, 12\/07\/2026","Rhuan — quadro CHU 787 \/ GRAPA CLIC, 12\/07\/2026"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":116,"updated_at":"2026-07-12 09:42:30","versions":[{"rule_id":"cm-grapa-fixacao","revision":1,"source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Cria regra e desenho próprios para o sistema de grapa, sem misturá-lo com a conexão do canto e sem presumir equivalência comercial com SD-896.","snapshot":{"id":"cm-grapa-fixacao","scope":"arremate_cm","severity":"aviso","status":"pendente","title":"CM-060\/063\/200: grapa 106 × 18 encaixada no perfil","body":"A grapa do contramarco é uma lâmina metálica de 106 × 18 mm, com seis aberturas estampadas e recortes semicirculares laterais que funcionam como pontos de dobra. A prancha mostra a lâmina dobrada e encaixada transversalmente no canal do CM-060, CM-063 ou CM-200; outra imagem chama o conjunto de CHU 787 \/ GRAPA CLIC. A peça projeta uma aba para fora do perfil, mas as imagens não especificam o método de fixação na alvenaria, o espaçamento entre peças nem comprovam que CHU787 e o SD-896 hoje cadastrado no SoftCalc sejam exatamente o mesmo item.","source":"Rhuan — imagens técnicas enviadas em 12\/07\/2026: prancha “GRAPA CM200, CM060 e CM063” cotada 106 × 18 mm; foto das lâminas; quadro “CHU 787 \/ GRAPA CLIC”. Cadastro SoftCalc consultado apenas para registrar a equivalência SD-896 ↔ CHU787 como pendente.","source_kind":"photo","author_type":"codex","author_name":"OpenAI Codex","change_note":"Cria regra e desenho próprios para o sistema de grapa, sem misturá-lo com a conexão do canto e sem presumir equivalência comercial com SD-896.","technical":{"view":"peça plana + dobra + encaixe no perfil","application":"Grapa de contramarco CM-060, CM-063 e CM-200","parts":["Grapa metálica estampada","Perfis CM-060, CM-063 ou CM-200","Referências visíveis na fonte: CHU 787 e GRAPA CLIC"],"dimensions":["Comprimento total da lâmina: 106 mm","Largura da lâmina: 18 mm","Seis aberturas estampadas","Recortes semicirculares laterais nos pontos de dobra"],"steps":["Escolher o ponto de dobra compatível com o perfil","Dobrar a lâmina no recorte correspondente","Encaixar\/travar a parte curta no canal do contramarco","Deixar a aba longa projetada para a etapa de instalação"],"acceptance":["Grapa dobrada no recorte, sem torcer a largura da lâmina","Parte curta presa ao canal e aba longa projetada","Aplicação restrita aos CM-060\/063\/200 indicados na prancha","Não confundir grapa de instalação com a conexão preta do canto"],"exceptions":["Confirmar se CHU787\/GRAPA CLIC e SD-896 são a mesma peça antes de alterar a lista de materiais","A fonte não informa passo entre grapas nem fixador na alvenaria","Somente as cotas gerais 106 × 18 mm são dimensionadas; posição e diâmetro das aberturas são esquemáticos"],"source_pages":["Rhuan — prancha GRAPA CM200\/CM060\/CM063, 12\/07\/2026","Rhuan — quadro CHU 787 \/ GRAPA CLIC, 12\/07\/2026"]},"machine":null,"revision":1,"sort_order":116},"created_at":"2026-07-12 09:42:30"}]},{"id":"correr-assimetrico-folgas","scope":"correr","title":"Fechamento assimétrico (mão-amiga\/truck\/transfer): cada pista tem folga própria e a largura leva o transpasse embutido","body":"Nos fechamentos de vidro temperado com folhas em pistas diferentes, a folga de ALTURA é por PAPEL da folha, não uma só: mão-amiga (VE2\/VE3\/VE6) → porta maior = vão−20, porta menor = vão−60, fixo = vão−90; truck sincronizado (VT3\/VT6) → portas = vão−70, fixo = vão−105; transfer box (BT3) → portas = vão−45, fixo = vão−68. A LARGURA já embute o transpasse: todas as folhas iguais a (vão+50)\/2 no 2 folhas, (vão+120)\/3 no 3 folhas, (vão+240)\/6 no 6 folhas (+60 de transpasse por encontro; variante com fechadura joga 120 inteiros na porta de fechamento — não modelada). Limites do manual: 60 kg\/folha (mão-amiga\/truck; >40 kg pede roldana extra), 40 kg\/folha (transfer). NÃO usar a folga simétrica da MAKIT (fixo −60\/correr −20 em N\/2) nessas famílias. No app: gerador aceita spec['glass']\/['leaves'] explícitos; perfis no sc_tempera_family_profile. PENDENTE: conferir o 1º pedido de cada família com um carrinho real da têmpera.","severity":"erro","status":"pendente","source":"Manuais públicos oficiais dos kits (doc\/FABRICANTES.md) — 12\/07\/2026","source_kind":"pdf","author_type":"claude","author_name":"Anthropic Claude","change_note":"Regra criada da colheita de manuais públicos 07\/2026; folgas literais dos manuais, pendentes de carrinho real.","machine":null,"technical":{"view":"","application":"","parts":["VE2","VE3","VE6","VT3","VT6","BT3"],"dimensions":["mão-amiga (VE2\/VE3\/VE6) → porta maior = vão−20, porta menor = vão−60, fixo = vão−90; truck sincronizado (VT3\/VT6) → portas = vão−70, fixo = vão−105; transfer box (BT3) → portas = vão−45, fixo = vão−68."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":["doc\/FABRICANTES.md"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":117,"updated_at":"2026-07-12 09:51:26","versions":[{"rule_id":"correr-assimetrico-folgas","revision":1,"source_kind":"pdf","author_type":"claude","author_name":"Anthropic Claude","change_note":"Regra criada da colheita de manuais públicos 07\/2026; folgas literais dos manuais, pendentes de carrinho real.","snapshot":{"id":"correr-assimetrico-folgas","scope":"correr","title":"Fechamento assimétrico (mão-amiga\/truck\/transfer): cada pista tem folga própria e a largura leva o transpasse embutido","body":"Nos fechamentos de vidro temperado com folhas em pistas diferentes, a folga de ALTURA é por PAPEL da folha, não uma só: mão-amiga (VE2\/VE3\/VE6) → porta maior = vão−20, porta menor = vão−60, fixo = vão−90; truck sincronizado (VT3\/VT6) → portas = vão−70, fixo = vão−105; transfer box (BT3) → portas = vão−45, fixo = vão−68. A LARGURA já embute o transpasse: todas as folhas iguais a (vão+50)\/2 no 2 folhas, (vão+120)\/3 no 3 folhas, (vão+240)\/6 no 6 folhas (+60 de transpasse por encontro; variante com fechadura joga 120 inteiros na porta de fechamento — não modelada). Limites do manual: 60 kg\/folha (mão-amiga\/truck; >40 kg pede roldana extra), 40 kg\/folha (transfer). NÃO usar a folga simétrica da MAKIT (fixo −60\/correr −20 em N\/2) nessas famílias. No app: gerador aceita spec['glass']\/['leaves'] explícitos; perfis no sc_tempera_family_profile. PENDENTE: conferir o 1º pedido de cada família com um carrinho real da têmpera.","severity":"erro","status":"pendente","source":"Manuais públicos oficiais dos kits (doc\/FABRICANTES.md) — 12\/07\/2026","source_kind":"pdf","author_type":"claude","author_name":"Anthropic Claude","change_note":"Regra criada da colheita de manuais públicos 07\/2026; folgas literais dos manuais, pendentes de carrinho real.","machine":null,"revision":1,"sort_order":117},"created_at":"2026-07-12 09:51:26"}]},{"id":"sistema-conhecimento-texto","scope":"sistema","title":"Base de conhecimento oficial é escrita; desenhos automáticos ficam ocultos","body":"A autoridade técnica da \/knowledge é a regra escrita e detalhada: aplicação, peças, características funcionais, contatos\/encaixes, cotas comprovadas, sequência, critérios de aceite, exceções, fonte, autoria e histórico. Desenhos automáticos gerados por IA não são exibidos, não entram no export e não contam para qualidade ou validação. SVGs antigos podem permanecer apenas como histórico interno, sem valor normativo.","severity":"info","status":"validado","source":"Rhuan — decisão direta em 12\/07\/2026: ocultar detalhes técnicos autodesenhados por IA e manter somente regras escritas bem detalhadas.","source_kind":"human","author_type":"codex","author_name":"OpenAI Codex","change_note":"Registra e aplica globalmente a retirada de desenhos automáticos da UI, exportação e avaliação de qualidade.","machine":null,"technical":{"view":"regra escrita","application":"Toda a base \/knowledge e \/api\/knowledge_export","parts":["Texto técnico estruturado","Fontes e autoria","Histórico versionado","Checks automáticos quando aplicáveis"],"dimensions":[],"steps":["Escrever a regra em linguagem clara","Estruturar aplicação, peças, sequência e critérios","Registrar características e contatos relevantes em texto","Assinar e versionar a fonte"],"acceptance":["Nenhum SVG ou desenho automático visível na \/knowledge","Export sem diagram_kind e diagram_svg","Qualidade independente de desenho","Regra tecnicamente detalhada e rastreável"],"exceptions":["Arquivos SVG antigos podem permanecer no repositório apenas como histórico não exibido"],"source_pages":["Rhuan — 12\/07\/2026"],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":118,"updated_at":"2026-07-12 10:18:39","versions":[{"rule_id":"sistema-conhecimento-texto","revision":1,"source_kind":"human","author_type":"codex","author_name":"OpenAI Codex","change_note":"Registra e aplica globalmente a retirada de desenhos automáticos da UI, exportação e avaliação de qualidade.","snapshot":{"id":"sistema-conhecimento-texto","scope":"sistema","severity":"info","status":"validado","title":"Base de conhecimento oficial é escrita; desenhos automáticos ficam ocultos","body":"A autoridade técnica da \/knowledge é a regra escrita e detalhada: aplicação, peças, características funcionais, contatos\/encaixes, cotas comprovadas, sequência, critérios de aceite, exceções, fonte, autoria e histórico. Desenhos automáticos gerados por IA não são exibidos, não entram no export e não contam para qualidade ou validação. SVGs antigos podem permanecer apenas como histórico interno, sem valor normativo.","source":"Rhuan — decisão direta em 12\/07\/2026: ocultar detalhes técnicos autodesenhados por IA e manter somente regras escritas bem detalhadas.","source_kind":"human","author_type":"codex","author_name":"OpenAI Codex","change_note":"Registra e aplica globalmente a retirada de desenhos automáticos da UI, exportação e avaliação de qualidade.","technical":{"view":"regra escrita","application":"Toda a base \/knowledge e \/api\/knowledge_export","parts":["Texto técnico estruturado","Fontes e autoria","Histórico versionado","Checks automáticos quando aplicáveis"],"dimensions":[],"steps":["Escrever a regra em linguagem clara","Estruturar aplicação, peças, sequência e critérios","Registrar características e contatos relevantes em texto","Assinar e versionar a fonte"],"acceptance":["Nenhum SVG ou desenho automático visível na \/knowledge","Export sem diagram_kind e diagram_svg","Qualidade independente de desenho","Regra tecnicamente detalhada e rastreável"],"exceptions":["Arquivos SVG antigos podem permanecer no repositório apenas como histórico não exibido"],"source_pages":["Rhuan — 12\/07\/2026"]},"machine":null,"revision":1,"sort_order":118},"created_at":"2026-07-12 10:18:39"}]},{"id":"vidro-fora-esquadro-retangulo","scope":"vidro","title":"Vidro fixo fora de esquadro (triângulo\/convencional): cobra o QUADRADO CHEIO sem desconto (nem modularizado) + 20% de corte fora de ângulo; U em todas as bordas","body":"Vão FORA DE ESQUADRO onde não cabe esquadria retangular — TRIÂNGULO (janela de sótão\/água-furtada\/oitão: um lado reto vertical, o prumo, + hipotenusa acompanhando o telhado) e CONVENCIONAL\/TRAPÉZIO (frontão: base + DUAS alturas de prumo diferentes, topo inclinado seguindo a água). Sempre vidro FIXO temperado.\n\nFATURAMENTO — COBRA O QUADRADO CHEIO, SEM DESCONTO: cobra a área como se fosse um retângulo inteiro (largura × altura maior), MESMO sendo triângulo — NÃO há desconto pelo formato, NÃO é meia área. Temperado é cortado no formato antes de temperar e o recorte vira sucata. Área E peso seguem o retângulo cheio; e MODULARIZAR TAMBÉM NÃO DESCONTA — dividir em N peças é só logística de corte\/encaixe, o preço segue o retângulo inteiro do vão. m² por ceil-50, como todo vidro.\n\nSOBRETAXA DE CORTE FORA DE ÂNGULO: a têmpera cobra um ADICIONAL pelo corte angulado (não-retangular) — padrão +20%, calibrável em settings.glass_offangle_pct. Incide só sobre a área do vidro fora de esquadro (triângulo\/trapézio), sobre o preço já com margem. É o custo do serviço de cortar fora do esquadro. Regra corte-fora-de-angulo.\n\nU EM TODAS AS BORDAS: o vidro é recebido em perfil U de recebimento em TODO o perímetro — 3 lados no triângulo (base, prumo vertical, hipotenusa) e 4 no trapézio (base, lado alto, lado menor, topo inclinado). O comprimento do U na borda inclinada sai por Pitágoras: hipotenusa = √(largura² + altura²); topo do trapézio = √(largura² + (altura maior − menor)²). O vidro é cortado com ~30 mm de folga (encaixe no U). O U é ESCOLHA: cavalinho (U-555, 0,268 kg\/m), cavalão (U-556, 0,143 kg\/m) ou o U GRANDE — CAVALAÇO \/ JEGÃO (AL-335, 0,350 kg\/m, seção 48 × 14,6 mm), pra peça grande\/pesada. Cada U precificado por peso × R$\/kg (como todo perfil).\n\nMODULARIZAÇÃO: peça grande às vezes é dividida em N módulos (colunas) por montantes verticais (parâmetro 'modulos', SEM teto). É SÓ pra facilitar encaixe\/transporte — vira o CORTE em N peças que vai pra têmpera (não abate o preço, que é o retângulo cheio). O comprimento total dos divisores = (N−1) × altura MÉDIA do vão — triângulo (N−1)·H\/2; trapézio (N−1)·(H+menor)\/2 — porque a altura decresce ao longo da base. O desenho mostra as colunas. (Montante simples no mesmo U por ora; H\/duplo-U fica pra refino.)\n\nREFORÇO DE BASE (opcional): às vezes o pano precisa de uma barra de alumínio sustentando — o tubo D-079 (2×1\", 0,563 kg\/m) embaixo (base, travessa horizontal = largura) e\/ou na lateral do prumo (montante = altura). A barra entra como peça (seção 'Reforço estrutural') e DESCONTA 25,4 mm do vidro na borda onde senta (o 1\" virado pro vão), além da folga do U. Opção 'estrutura' (nenhuma\/embaixo\/lateral\/base+lateral); default sem reforço. Mesmo tubo do VF-E. Ver reforco-estrutural-vidro.\n\nMEDIÇÃO: base + alturas no PRUMO (fio\/nível) em cada lado; em vão torto, GABARITO (molde) pra têmpera cortar por cima. Conferir esquadro pelas diagonais. SEQUÊNCIA: medir → escolher U e nº de módulos → o motor põe o U em todas as bordas (com a hipotenusa\/topo por SQRT) e os divisores → conferir o corte na chegada (temperado não retrabalha). Tipologias: VF-TR (triângulo) e VF-CV (convencional\/trapézio).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + desenho AL-335 — 14\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Rhuan: cobra o quadrado cheio SEM desconto (nem modularizado — módulos só cortam a peça, não abatem) + SOBRETAXA de corte fora de ângulo (+20%, glass_offangle_pct). U em todas as bordas (SQRT), incl. cavalaço\/Jegão AL-335.","machine":null,"technical":{"view":"","application":"","parts":["ceil-50","U-555","U-556","AL-335","D-079"],"dimensions":["hipotenusa = √(largura² + altura²); topo do trapézio = √(largura² + (altura maior − menor)²).","O comprimento total dos divisores = (N−1) × altura MÉDIA do vão — triângulo (N−1)·H\/2; trapézio (N−1)·(H+menor)\/2 — porque a altura decresce ao longo da base.","(Montante simples no mesmo U por ora; H\/duplo-U fica pra refino.)","às vezes o pano precisa de uma barra de alumínio sustentando — o tubo D-079 (2×1\", 0,563 kg\/m) embaixo (base, travessa horizontal = largura) e\/ou na lateral do prumo (montante = altura)."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":8,"sort_order":119,"updated_at":"2026-07-13 14:29:47","versions":[{"rule_id":"vidro-fora-esquadro-retangulo","revision":8,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Rhuan: cobra o quadrado cheio SEM desconto (nem modularizado — módulos só cortam a peça, não abatem) + SOBRETAXA de corte fora de ângulo (+20%, glass_offangle_pct). U em todas as bordas (SQRT), incl. cavalaço\/Jegão AL-335.","snapshot":{"id":"vidro-fora-esquadro-retangulo","scope":"vidro","title":"Vidro fixo fora de esquadro (triângulo\/convencional): cobra o QUADRADO CHEIO sem desconto (nem modularizado) + 20% de corte fora de ângulo; U em todas as bordas","body":"Vão FORA DE ESQUADRO onde não cabe esquadria retangular — TRIÂNGULO (janela de sótão\/água-furtada\/oitão: um lado reto vertical, o prumo, + hipotenusa acompanhando o telhado) e CONVENCIONAL\/TRAPÉZIO (frontão: base + DUAS alturas de prumo diferentes, topo inclinado seguindo a água). Sempre vidro FIXO temperado.\n\nFATURAMENTO — COBRA O QUADRADO CHEIO, SEM DESCONTO: cobra a área como se fosse um retângulo inteiro (largura × altura maior), MESMO sendo triângulo — NÃO há desconto pelo formato, NÃO é meia área. Temperado é cortado no formato antes de temperar e o recorte vira sucata. Área E peso seguem o retângulo cheio; e MODULARIZAR TAMBÉM NÃO DESCONTA — dividir em N peças é só logística de corte\/encaixe, o preço segue o retângulo inteiro do vão. m² por ceil-50, como todo vidro.\n\nSOBRETAXA DE CORTE FORA DE ÂNGULO: a têmpera cobra um ADICIONAL pelo corte angulado (não-retangular) — padrão +20%, calibrável em settings.glass_offangle_pct. Incide só sobre a área do vidro fora de esquadro (triângulo\/trapézio), sobre o preço já com margem. É o custo do serviço de cortar fora do esquadro. Regra corte-fora-de-angulo.\n\nU EM TODAS AS BORDAS: o vidro é recebido em perfil U de recebimento em TODO o perímetro — 3 lados no triângulo (base, prumo vertical, hipotenusa) e 4 no trapézio (base, lado alto, lado menor, topo inclinado). O comprimento do U na borda inclinada sai por Pitágoras: hipotenusa = √(largura² + altura²); topo do trapézio = √(largura² + (altura maior − menor)²). O vidro é cortado com ~30 mm de folga (encaixe no U). O U é ESCOLHA: cavalinho (U-555, 0,268 kg\/m), cavalão (U-556, 0,143 kg\/m) ou o U GRANDE — CAVALAÇO \/ JEGÃO (AL-335, 0,350 kg\/m, seção 48 × 14,6 mm), pra peça grande\/pesada. Cada U precificado por peso × R$\/kg (como todo perfil).\n\nMODULARIZAÇÃO: peça grande às vezes é dividida em N módulos (colunas) por montantes verticais (parâmetro 'modulos', SEM teto). É SÓ pra facilitar encaixe\/transporte — vira o CORTE em N peças que vai pra têmpera (não abate o preço, que é o retângulo cheio). O comprimento total dos divisores = (N−1) × altura MÉDIA do vão — triângulo (N−1)·H\/2; trapézio (N−1)·(H+menor)\/2 — porque a altura decresce ao longo da base. O desenho mostra as colunas. (Montante simples no mesmo U por ora; H\/duplo-U fica pra refino.)\n\nREFORÇO DE BASE (opcional): às vezes o pano precisa de uma barra de alumínio sustentando — o tubo D-079 (2×1\", 0,563 kg\/m) embaixo (base, travessa horizontal = largura) e\/ou na lateral do prumo (montante = altura). A barra entra como peça (seção 'Reforço estrutural') e DESCONTA 25,4 mm do vidro na borda onde senta (o 1\" virado pro vão), além da folga do U. Opção 'estrutura' (nenhuma\/embaixo\/lateral\/base+lateral); default sem reforço. Mesmo tubo do VF-E. Ver reforco-estrutural-vidro.\n\nMEDIÇÃO: base + alturas no PRUMO (fio\/nível) em cada lado; em vão torto, GABARITO (molde) pra têmpera cortar por cima. Conferir esquadro pelas diagonais. SEQUÊNCIA: medir → escolher U e nº de módulos → o motor põe o U em todas as bordas (com a hipotenusa\/topo por SQRT) e os divisores → conferir o corte na chegada (temperado não retrabalha). Tipologias: VF-TR (triângulo) e VF-CV (convencional\/trapézio).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + desenho AL-335 — 14\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Rhuan: cobra o quadrado cheio SEM desconto (nem modularizado — módulos só cortam a peça, não abatem) + SOBRETAXA de corte fora de ângulo (+20%, glass_offangle_pct). U em todas as bordas (SQRT), incl. cavalaço\/Jegão AL-335.","source_kind":"legacy","revision":8,"sort_order":122},"created_at":"2026-07-13 14:29:47"},{"rule_id":"vidro-fora-esquadro-retangulo","revision":7,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Revisão: fora de esquadro cobra o retângulo CHEIO (não metade — área E peso); U em TODAS as bordas (hipotenusa\/topo por SQRT), U escolhível incl. cavalaço\/Jegão AL-335 (0,350 kg\/m); modularização (montantes, total (N-1)·altura média).","snapshot":{"id":"vidro-fora-esquadro-retangulo","scope":"vidro","title":"Vidro fixo fora de esquadro (triângulo\/convencional): cobra o RETÂNGULO CHEIO (não metade), U em todas as bordas, modulariza","body":"Vão FORA DE ESQUADRO onde não cabe esquadria retangular — TRIÂNGULO (janela de sótão\/água-furtada\/oitão: um lado reto vertical, o prumo, + hipotenusa acompanhando o telhado) e CONVENCIONAL\/TRAPÉZIO (frontão: base + DUAS alturas de prumo diferentes, topo inclinado seguindo a água). Sempre vidro FIXO temperado.\n\nFATURAMENTO — COBRA O RETÂNGULO CHEIO, NÃO METADE: temperado é cortado no formato ANTES de temperar e não se recorta depois; o recorte (o canto que sobra) vira sucata. A têmpera fatura o menor RETÂNGULO que circunscreve a peça — LARGURA × ALTURA MAIOR, inteiro. Área E peso seguem esse retângulo (NÃO abater o formato — o triângulo NÃO é meia área pra efeito de preço\/peso). O formato (triângulo\/trapézio) serve só pro DESENHO e pro CORTE que vai pra têmpera. m² por ceil-50, como todo vidro.\n\nU EM TODAS AS BORDAS: o vidro é recebido em perfil U de recebimento em TODO o perímetro — 3 lados no triângulo (base, prumo vertical, hipotenusa) e 4 no trapézio (base, lado alto, lado menor, topo inclinado). O comprimento do U na borda inclinada sai por Pitágoras: hipotenusa = √(largura² + altura²); topo do trapézio = √(largura² + (altura maior − menor)²). O vidro é cortado com ~30 mm de folga (encaixe no U). O U é ESCOLHA: cavalinho (U-555, 0,268 kg\/m), cavalão (U-556, 0,143 kg\/m) ou o U GRANDE — CAVALAÇO \/ JEGÃO (AL-335, 0,350 kg\/m, seção 48 × 14,6 mm), pra peça grande\/pesada. Cada U precificado por peso × R$\/kg (como todo perfil).\n\nMODULARIZAÇÃO: peça grande às vezes é dividida em N módulos por montantes verticais (parâmetro 'modulos'). O comprimento total dos divisores = (N−1) × altura MÉDIA do vão — triângulo (N−1)·H\/2; trapézio (N−1)·(H+menor)\/2 — porque a altura decresce ao longo da base. O desenho mostra os módulos. (Montante simples no mesmo U por ora; H\/duplo-U fica pra refino.)\n\nREFORÇO DE BASE (opcional): às vezes o pano precisa de uma barra de alumínio sustentando — o tubo D-079 (2×1\", 0,563 kg\/m) embaixo (base, travessa horizontal = largura) e\/ou na lateral do prumo (montante = altura). A barra entra como peça (seção 'Reforço estrutural') e DESCONTA 25,4 mm do vidro na borda onde senta (o 1\" virado pro vão), além da folga do U. Opção 'estrutura' (nenhuma\/embaixo\/lateral\/base+lateral); default sem reforço. Mesmo tubo do VF-E. Ver reforco-estrutural-vidro.\n\nMEDIÇÃO: base + alturas no PRUMO (fio\/nível) em cada lado; em vão torto, GABARITO (molde) pra têmpera cortar por cima. Conferir esquadro pelas diagonais. SEQUÊNCIA: medir → escolher U e nº de módulos → o motor põe o U em todas as bordas (com a hipotenusa\/topo por SQRT) e os divisores → conferir o corte na chegada (temperado não retrabalha). Tipologias: VF-TR (triângulo) e VF-CV (convencional\/trapézio).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + desenho AL-335 — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Revisão: fora de esquadro cobra o retângulo CHEIO (não metade — área E peso); U em TODAS as bordas (hipotenusa\/topo por SQRT), U escolhível incl. cavalaço\/Jegão AL-335 (0,350 kg\/m); modularização (montantes, total (N-1)·altura média).","source_kind":"legacy","revision":7,"sort_order":122},"created_at":"2026-07-13 14:02:30"},{"rule_id":"vidro-fora-esquadro-retangulo","revision":6,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Revisão: fora de esquadro cobra o retângulo CHEIO (não metade — área E peso); U em TODAS as bordas (hipotenusa\/topo por SQRT), U escolhível incl. cavalaço\/Jegão AL-335 (0,350 kg\/m); modularização (montantes, total (N-1)·altura média).","snapshot":{"id":"vidro-fora-esquadro-retangulo","scope":"vidro","title":"Vidro fixo fora de esquadro (triângulo\/convencional): cobra o RETÂNGULO CHEIO (não metade), U em todas as bordas, modulariza","body":"Vão FORA DE ESQUADRO onde não cabe esquadria retangular — TRIÂNGULO (janela de sótão\/água-furtada\/oitão: um lado reto vertical, o prumo, + hipotenusa acompanhando o telhado) e CONVENCIONAL\/TRAPÉZIO (frontão: base + DUAS alturas de prumo diferentes, topo inclinado seguindo a água). Sempre vidro FIXO temperado.\n\nFATURAMENTO — COBRA O RETÂNGULO CHEIO, NÃO METADE: temperado é cortado no formato ANTES de temperar e não se recorta depois; o recorte (o canto que sobra) vira sucata. A têmpera fatura o menor RETÂNGULO que circunscreve a peça — LARGURA × ALTURA MAIOR, inteiro. Área E peso seguem esse retângulo (NÃO abater o formato — o triângulo NÃO é meia área pra efeito de preço\/peso). O formato (triângulo\/trapézio) serve só pro DESENHO e pro CORTE que vai pra têmpera. m² por ceil-50, como todo vidro.\n\nU EM TODAS AS BORDAS: o vidro é recebido em perfil U de recebimento em TODO o perímetro — 3 lados no triângulo (base, prumo vertical, hipotenusa) e 4 no trapézio (base, lado alto, lado menor, topo inclinado). O comprimento do U na borda inclinada sai por Pitágoras: hipotenusa = √(largura² + altura²); topo do trapézio = √(largura² + (altura maior − menor)²). O vidro é cortado com ~30 mm de folga (encaixe no U). O U é ESCOLHA: cavalinho (U-555, 0,268 kg\/m), cavalão (U-556, 0,143 kg\/m) ou o U GRANDE — CAVALAÇO \/ JEGÃO (AL-335, 0,350 kg\/m, seção 48 × 14,6 mm), pra peça grande\/pesada. Cada U precificado por peso × R$\/kg (como todo perfil).\n\nMODULARIZAÇÃO: peça grande às vezes é dividida em N módulos por montantes verticais (parâmetro 'modulos'). O comprimento total dos divisores = (N−1) × altura MÉDIA do vão — triângulo (N−1)·H\/2; trapézio (N−1)·(H+menor)\/2 — porque a altura decresce ao longo da base. O desenho mostra os módulos. (Montante simples no mesmo U por ora; H\/duplo-U fica pra refino.)\n\nREFORÇO DE BASE (opcional): às vezes o pano precisa de uma barra de alumínio sustentando — o tubo D-079 (2×1\", 0,563 kg\/m) embaixo (base, travessa horizontal = largura) e\/ou na lateral do prumo (montante = altura). A barra entra como peça (seção 'Reforço estrutural') e DESCONTA 25,4 mm do vidro na borda onde senta (o 1\" virado pro vão), além da folga do U. Opção 'estrutura' (nenhuma\/embaixo\/lateral\/base+lateral); default sem reforço. Mesmo tubo do VF-E. Ver reforco-estrutural-vidro.\n\nMEDIÇÃO: base + alturas no PRUMO (fio\/nível) em cada lado; em vão torto, GABARITO (molde) pra têmpera cortar por cima. Conferir esquadro pelas diagonais. SEQUÊNCIA: medir → escolher U e nº de módulos → o motor põe o U em todas as bordas (com a hipotenusa\/topo por SQRT) e os divisores → conferir o corte na chegada (temperado não retrabalha). Tipologias: VF-TR (triângulo) e VF-CV (convencional\/trapézio).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + desenho AL-335 — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Revisão: fora de esquadro cobra o retângulo CHEIO (não metade — área E peso); U em TODAS as bordas (hipotenusa\/topo por SQRT), U escolhível incl. cavalaço\/Jegão AL-335 (0,350 kg\/m); modularização (montantes, total (N-1)·altura média).","source_kind":"legacy","revision":6,"sort_order":122},"created_at":"2026-07-13 13:36:44"},{"rule_id":"vidro-fora-esquadro-retangulo","revision":5,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Revisão: fora de esquadro cobra o retângulo CHEIO (não metade — área E peso); U em TODAS as bordas (hipotenusa\/topo por SQRT), U escolhível incl. cavalaço\/Jegão AL-335 (0,350 kg\/m); modularização (montantes, total (N-1)·altura média).","snapshot":{"id":"vidro-fora-esquadro-retangulo","scope":"vidro","title":"Vidro fixo fora de esquadro (triângulo\/convencional): cobra o RETÂNGULO CHEIO (não metade), U em todas as bordas, modulariza","body":"Vão FORA DE ESQUADRO onde não cabe esquadria retangular — TRIÂNGULO (janela de sótão\/água-furtada\/oitão: um lado reto vertical, o prumo, + hipotenusa acompanhando o telhado) e CONVENCIONAL\/TRAPÉZIO (frontão: base + DUAS alturas de prumo diferentes, topo inclinado seguindo a água). Sempre vidro FIXO temperado.\n\nFATURAMENTO — COBRA O RETÂNGULO CHEIO, NÃO METADE: temperado é cortado no formato ANTES de temperar e não se recorta depois; o recorte (o canto que sobra) vira sucata. A têmpera fatura o menor RETÂNGULO que circunscreve a peça — LARGURA × ALTURA MAIOR, inteiro. Área E peso seguem esse retângulo (NÃO abater o formato — o triângulo NÃO é meia área pra efeito de preço\/peso). O formato (triângulo\/trapézio) serve só pro DESENHO e pro CORTE que vai pra têmpera. m² por ceil-50, como todo vidro.\n\nU EM TODAS AS BORDAS: o vidro é recebido em perfil U de recebimento em TODO o perímetro — 3 lados no triângulo (base, prumo vertical, hipotenusa) e 4 no trapézio (base, lado alto, lado menor, topo inclinado). O comprimento do U na borda inclinada sai por Pitágoras: hipotenusa = √(largura² + altura²); topo do trapézio = √(largura² + (altura maior − menor)²). O vidro é cortado com ~30 mm de folga (encaixe no U). O U é ESCOLHA: cavalinho (U-555, 0,268 kg\/m), cavalão (U-556, 0,143 kg\/m) ou o U GRANDE — CAVALAÇO \/ JEGÃO (AL-335, 0,350 kg\/m, seção 48 × 14,6 mm), pra peça grande\/pesada. Cada U precificado por peso × R$\/kg (como todo perfil).\n\nMODULARIZAÇÃO: peça grande às vezes é dividida em N módulos por montantes verticais (parâmetro 'modulos'). O comprimento total dos divisores = (N−1) × altura MÉDIA do vão — triângulo (N−1)·H\/2; trapézio (N−1)·(H+menor)\/2 — porque a altura decresce ao longo da base. O desenho mostra os módulos. (Montante simples no mesmo U por ora; H\/duplo-U fica pra refino.)\n\nREFORÇO DE BASE (opcional): às vezes o pano precisa de uma barra de alumínio sustentando — o tubo D-079 (2×1\", 0,563 kg\/m) embaixo (base, travessa horizontal = largura) e\/ou na lateral do prumo (montante = altura). A barra entra como peça (seção 'Reforço estrutural') e DESCONTA 25,4 mm do vidro na borda onde senta (o 1\" virado pro vão), além da folga do U. Opção 'estrutura' (nenhuma\/embaixo\/lateral\/base+lateral); default sem reforço. Mesmo tubo do VF-E. Ver reforco-estrutural-vidro.\n\nMEDIÇÃO: base + alturas no PRUMO (fio\/nível) em cada lado; em vão torto, GABARITO (molde) pra têmpera cortar por cima. Conferir esquadro pelas diagonais. SEQUÊNCIA: medir → escolher U e nº de módulos → o motor põe o U em todas as bordas (com a hipotenusa\/topo por SQRT) e os divisores → conferir o corte na chegada (temperado não retrabalha). Tipologias: VF-TR (triângulo) e VF-CV (convencional\/trapézio).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + desenho AL-335 — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Revisão: fora de esquadro cobra o retângulo CHEIO (não metade — área E peso); U em TODAS as bordas (hipotenusa\/topo por SQRT), U escolhível incl. cavalaço\/Jegão AL-335 (0,350 kg\/m); modularização (montantes, total (N-1)·altura média).","source_kind":"legacy","revision":5,"sort_order":122},"created_at":"2026-07-13 13:33:20"},{"rule_id":"vidro-fora-esquadro-retangulo","revision":4,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Revisão: fora de esquadro cobra o retângulo CHEIO (não metade — área E peso); U em TODAS as bordas (hipotenusa\/topo por SQRT), U escolhível incl. cavalaço\/Jegão AL-335 (0,350 kg\/m); modularização (montantes, total (N-1)·altura média).","snapshot":{"id":"vidro-fora-esquadro-retangulo","scope":"vidro","title":"Vidro fixo fora de esquadro (triângulo\/convencional): cobra o RETÂNGULO CHEIO (não metade), U em todas as bordas, modulariza","body":"Vão FORA DE ESQUADRO onde não cabe esquadria retangular — TRIÂNGULO (janela de sótão\/água-furtada\/oitão: um lado reto vertical, o prumo, + hipotenusa acompanhando o telhado) e CONVENCIONAL\/TRAPÉZIO (frontão: base + DUAS alturas de prumo diferentes, topo inclinado seguindo a água). Sempre vidro FIXO temperado.\n\nFATURAMENTO — COBRA O RETÂNGULO CHEIO, NÃO METADE: temperado é cortado no formato ANTES de temperar e não se recorta depois; o recorte (o canto que sobra) vira sucata. A têmpera fatura o menor RETÂNGULO que circunscreve a peça — LARGURA × ALTURA MAIOR, inteiro. Área E peso seguem esse retângulo (NÃO abater o formato — o triângulo NÃO é meia área pra efeito de preço\/peso). O formato (triângulo\/trapézio) serve só pro DESENHO e pro CORTE que vai pra têmpera. m² por ceil-50, como todo vidro.\n\nU EM TODAS AS BORDAS: o vidro é recebido em perfil U de recebimento em TODO o perímetro — 3 lados no triângulo (base, prumo vertical, hipotenusa) e 4 no trapézio (base, lado alto, lado menor, topo inclinado). O comprimento do U na borda inclinada sai por Pitágoras: hipotenusa = √(largura² + altura²); topo do trapézio = √(largura² + (altura maior − menor)²). O vidro é cortado com ~30 mm de folga (encaixe no U). O U é ESCOLHA: cavalinho (U-555, 0,268 kg\/m), cavalão (U-556, 0,143 kg\/m) ou o U GRANDE — CAVALAÇO \/ JEGÃO (AL-335, 0,350 kg\/m, seção 48 × 14,6 mm), pra peça grande\/pesada. Cada U precificado por peso × R$\/kg (como todo perfil).\n\nMODULARIZAÇÃO: peça grande às vezes é dividida em N módulos por montantes verticais (parâmetro 'modulos'). O comprimento total dos divisores = (N−1) × altura MÉDIA do vão — triângulo (N−1)·H\/2; trapézio (N−1)·(H+menor)\/2 — porque a altura decresce ao longo da base. O desenho mostra os módulos. (Montante simples no mesmo U por ora; H\/duplo-U fica pra refino.)\n\nMEDIÇÃO: base + alturas no PRUMO (fio\/nível) em cada lado; em vão torto, GABARITO (molde) pra têmpera cortar por cima. Conferir esquadro pelas diagonais. SEQUÊNCIA: medir → escolher U e nº de módulos → o motor põe o U em todas as bordas (com a hipotenusa\/topo por SQRT) e os divisores → conferir o corte na chegada (temperado não retrabalha). Tipologias: VF-TR (triângulo) e VF-CV (convencional\/trapézio).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + desenho AL-335 — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Revisão: fora de esquadro cobra o retângulo CHEIO (não metade — área E peso); U em TODAS as bordas (hipotenusa\/topo por SQRT), U escolhível incl. cavalaço\/Jegão AL-335 (0,350 kg\/m); modularização (montantes, total (N-1)·altura média).","source_kind":"legacy","revision":4,"sort_order":122},"created_at":"2026-07-13 13:26:40"},{"rule_id":"vidro-fora-esquadro-retangulo","revision":3,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Revisão: fora de esquadro cobra o retângulo CHEIO (não metade — área E peso); U em TODAS as bordas (hipotenusa\/topo por SQRT), U escolhível incl. cavalaço\/Jegão AL-335 (0,350 kg\/m); modularização (montantes, total (N-1)·altura média).","snapshot":{"id":"vidro-fora-esquadro-retangulo","scope":"vidro","title":"Vidro fixo fora de esquadro (triângulo\/convencional): cobra o RETÂNGULO CHEIO (não metade), U em todas as bordas, modulariza","body":"Vão FORA DE ESQUADRO onde não cabe esquadria retangular — TRIÂNGULO (janela de sótão\/água-furtada\/oitão: um lado reto vertical, o prumo, + hipotenusa acompanhando o telhado) e CONVENCIONAL\/TRAPÉZIO (frontão: base + DUAS alturas de prumo diferentes, topo inclinado seguindo a água). Sempre vidro FIXO temperado.\n\nFATURAMENTO — COBRA O RETÂNGULO CHEIO, NÃO METADE: temperado é cortado no formato ANTES de temperar e não se recorta depois; o recorte (o canto que sobra) vira sucata. A têmpera fatura o menor RETÂNGULO que circunscreve a peça — LARGURA × ALTURA MAIOR, inteiro. Área E peso seguem esse retângulo (NÃO abater o formato — o triângulo NÃO é meia área pra efeito de preço\/peso). O formato (triângulo\/trapézio) serve só pro DESENHO e pro CORTE que vai pra têmpera. m² por ceil-50, como todo vidro.\n\nU EM TODAS AS BORDAS: o vidro é recebido em perfil U de recebimento em TODO o perímetro — 3 lados no triângulo (base, prumo vertical, hipotenusa) e 4 no trapézio (base, lado alto, lado menor, topo inclinado). O comprimento do U na borda inclinada sai por Pitágoras: hipotenusa = √(largura² + altura²); topo do trapézio = √(largura² + (altura maior − menor)²). O vidro é cortado com ~30 mm de folga (encaixe no U). O U é ESCOLHA: cavalinho (U-555, 0,268 kg\/m), cavalão (U-556, 0,143 kg\/m) ou o U GRANDE — CAVALAÇO \/ JEGÃO (AL-335, 0,350 kg\/m, seção 48 × 14,6 mm), pra peça grande\/pesada. Cada U precificado por peso × R$\/kg (como todo perfil).\n\nMODULARIZAÇÃO: peça grande às vezes é dividida em N módulos por montantes verticais (parâmetro 'modulos'). O comprimento total dos divisores = (N−1) × altura MÉDIA do vão — triângulo (N−1)·H\/2; trapézio (N−1)·(H+menor)\/2 — porque a altura decresce ao longo da base. O desenho mostra os módulos. (Montante simples no mesmo U por ora; H\/duplo-U fica pra refino.)\n\nMEDIÇÃO: base + alturas no PRUMO (fio\/nível) em cada lado; em vão torto, GABARITO (molde) pra têmpera cortar por cima. Conferir esquadro pelas diagonais. SEQUÊNCIA: medir → escolher U e nº de módulos → o motor põe o U em todas as bordas (com a hipotenusa\/topo por SQRT) e os divisores → conferir o corte na chegada (temperado não retrabalha). Tipologias: VF-TR (triângulo) e VF-CV (convencional\/trapézio).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + desenho AL-335 — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Revisão: fora de esquadro cobra o retângulo CHEIO (não metade — área E peso); U em TODAS as bordas (hipotenusa\/topo por SQRT), U escolhível incl. cavalaço\/Jegão AL-335 (0,350 kg\/m); modularização (montantes, total (N-1)·altura média).","source_kind":"legacy","revision":3,"sort_order":122},"created_at":"2026-07-13 13:15:19"},{"rule_id":"vidro-fora-esquadro-retangulo","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: vidro fixo fora de esquadro (triângulo\/trapézio) fatura o retângulo circunscrito (temperado não se recorta); área\/peso reais do formato à parte; medição por prumo\/gabarito. Tipologias VF-TR\/VF-CV.","snapshot":{"id":"vidro-fora-esquadro-retangulo","scope":"vidro","title":"Vidro fixo fora de esquadro (triângulo\/convencional): fatura pelo retângulo circunscrito; medir por prumo\/gabarito","body":"Vão FORA DE ESQUADRO onde não cabe esquadria retangular — TRIÂNGULO (janela de sótão\/água-furtada\/oitão: um lado reto vertical, que é o prumo, + hipotenusa acompanhando a linha do telhado) e CONVENCIONAL\/TRAPÉZIO (frontão\/oitão: base no piso ou peitoril + DUAS alturas de prumo diferentes, com o topo inclinado seguindo a água do telhado). Aqui é sempre vidro FIXO (sem folha móvel), normalmente temperado 8 ou 10 mm, assentado a silicone estrutural ou recebido em perfil U no perímetro (ver fixo-u-perimetro-folga).\n\nFATURAMENTO (o ponto que erra dinheiro): vidro temperado é cortado no formato ANTES de temperar e NÃO se recorta depois de temperado — o \"resto\" do retângulo (o triângulo\/canto que sobra) vira sucata, não dá pra reaproveitar. Por isso a têmpera cobra o menor RETÂNGULO que circunscreve a peça: triângulo e trapézio pagam LARGURA × ALTURA MAIOR, cheio (o mesmo m² do retângulo, arredondado no ceil-50). O SoftCalc fatura assim (área faturada = retângulo) e calcula à parte a área\/peso REAIS do formato — triângulo = ½ do retângulo; trapézio = média das duas alturas × base — só pro peso do que se carrega e instala. NUNCA abater o formato do preço (o retângulo cheio é o que a têmpera cobra e nunca subfatura).\n\nMEDIÇÃO (não se mede no olho): tira-se a BASE (largura no piso\/peitoril) e as ALTURAS no PRUMO (fio de prumo ou nível a laser) em cada lado — no trapézio são as DUAS alturas de prumo, porque o topo é a inclinação do telhado, não uma reta paralela à base. Em vão muito torto, faz-se GABARITO: molde de papelão\/compensado\/ripa da abertura real e manda-se o gabarito pra têmpera cortar por cima (mais seguro que cotas soltas). Conferir o esquadro pelas diagonais. Croqui de campo típico anota a base com pontos intermediários (A\/B\/C\/D) e o prumo de cada lado (ex.: base total 3210 conferida em 4 pontos).\n\nSEQUÊNCIA: (1) medir base + alturas de prumo (ou tirar gabarito); (2) se receber em perfil U, descontar a folga de encaixe por dimensão (ver fixo-u-perimetro-folga); (3) enviar à têmpera o DESENHO COTADO do formato com o lado do prumo indicado (esquerda\/direita) — no SoftCalc isso sai no pedido de têmpera; (4) conferir a peça na chegada, porque temperado não retrabalha.\n\nACEITE: a peça chega no formato pedido e encaixa no vão com folga de vedação; desvio dentro da tolerância da têmpera. EXCEÇÕES: vidro COMUM (não temperado) pode ser recortado na obra, aí não precisa do retângulo cheio — mas fixo grande fora de esquadro quase sempre é temperado. Se a sua têmpera cobra por área REAL + taxa de forma (política regional), ajuste a regra; o padrão do SoftCalc é retângulo cheio (conservador, nunca cobra a menos). Tipologias: VF-TR (triângulo) e VF-CV (convencional\/trapézio).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + prática de vidraçaria — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: vidro fixo fora de esquadro (triângulo\/trapézio) fatura o retângulo circunscrito (temperado não se recorta); área\/peso reais do formato à parte; medição por prumo\/gabarito. Tipologias VF-TR\/VF-CV.","source_kind":"legacy","revision":2,"sort_order":120},"created_at":"2026-07-13 12:46:56"},{"rule_id":"vidro-fora-esquadro-retangulo","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: vidro fixo fora de esquadro (triângulo\/trapézio) fatura o retângulo circunscrito (temperado não se recorta); área\/peso reais do formato à parte; medição por prumo\/gabarito. Tipologias VF-TR\/VF-CV.","snapshot":{"id":"vidro-fora-esquadro-retangulo","scope":"vidro","title":"Vidro fixo fora de esquadro (triângulo\/convencional): fatura pelo retângulo circunscrito; medir por prumo\/gabarito","body":"Vão FORA DE ESQUADRO onde não cabe esquadria retangular — TRIÂNGULO (janela de sótão\/água-furtada\/oitão: um lado reto vertical, que é o prumo, + hipotenusa acompanhando a linha do telhado) e CONVENCIONAL\/TRAPÉZIO (frontão\/oitão: base no piso ou peitoril + DUAS alturas de prumo diferentes, com o topo inclinado seguindo a água do telhado). Aqui é sempre vidro FIXO (sem folha móvel), normalmente temperado 8 ou 10 mm, assentado a silicone estrutural ou recebido em perfil U no perímetro (ver fixo-u-perimetro-folga).\n\nFATURAMENTO (o ponto que erra dinheiro): vidro temperado é cortado no formato ANTES de temperar e NÃO se recorta depois de temperado — o \"resto\" do retângulo (o triângulo\/canto que sobra) vira sucata, não dá pra reaproveitar. Por isso a têmpera cobra o menor RETÂNGULO que circunscreve a peça: triângulo e trapézio pagam LARGURA × ALTURA MAIOR, cheio (o mesmo m² do retângulo, arredondado no ceil-50). O SoftCalc fatura assim (área faturada = retângulo) e calcula à parte a área\/peso REAIS do formato — triângulo = ½ do retângulo; trapézio = média das duas alturas × base — só pro peso do que se carrega e instala. NUNCA abater o formato do preço (o retângulo cheio é o que a têmpera cobra e nunca subfatura).\n\nMEDIÇÃO (não se mede no olho): tira-se a BASE (largura no piso\/peitoril) e as ALTURAS no PRUMO (fio de prumo ou nível a laser) em cada lado — no trapézio são as DUAS alturas de prumo, porque o topo é a inclinação do telhado, não uma reta paralela à base. Em vão muito torto, faz-se GABARITO: molde de papelão\/compensado\/ripa da abertura real e manda-se o gabarito pra têmpera cortar por cima (mais seguro que cotas soltas). Conferir o esquadro pelas diagonais. Croqui de campo típico anota a base com pontos intermediários (A\/B\/C\/D) e o prumo de cada lado (ex.: base total 3210 conferida em 4 pontos).\n\nSEQUÊNCIA: (1) medir base + alturas de prumo (ou tirar gabarito); (2) se receber em perfil U, descontar a folga de encaixe por dimensão (ver fixo-u-perimetro-folga); (3) enviar à têmpera o DESENHO COTADO do formato com o lado do prumo indicado (esquerda\/direita) — no SoftCalc isso sai no pedido de têmpera; (4) conferir a peça na chegada, porque temperado não retrabalha.\n\nACEITE: a peça chega no formato pedido e encaixa no vão com folga de vedação; desvio dentro da tolerância da têmpera. EXCEÇÕES: vidro COMUM (não temperado) pode ser recortado na obra, aí não precisa do retângulo cheio — mas fixo grande fora de esquadro quase sempre é temperado. Se a sua têmpera cobra por área REAL + taxa de forma (política regional), ajuste a regra; o padrão do SoftCalc é retângulo cheio (conservador, nunca cobra a menos). Tipologias: VF-TR (triângulo) e VF-CV (convencional\/trapézio).","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) + prática de vidraçaria — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: vidro fixo fora de esquadro (triângulo\/trapézio) fatura o retângulo circunscrito (temperado não se recorta); área\/peso reais do formato à parte; medição por prumo\/gabarito. Tipologias VF-TR\/VF-CV.","source_kind":"legacy","revision":1,"sort_order":119},"created_at":"2026-07-13 12:39:47"}]},{"id":"reforco-estrutural-vidro","scope":"vidro","title":"Reforço estrutural: barra D-079 (tubo 2×1\") embaixo\/lateral do vidro fixo; desconta 25,4 mm da borda","body":"Quando o pano de vidro FIXO é grande demais pra se sustentar sozinho (vão largo\/alto sem apoio), o serralheiro acrescenta uma BARRA ESTRUTURAL de alumínio no perímetro que precisar de apoio — embaixo (travessa horizontal) e\/ou na lateral (montante vertical). Perfil padrão PraiaMar: D-079, tubo retangular 2×1\" (50,8 × 25,4 mm), 0,563 kg\/m. A barra fica DEITADA: o 2\" (50,8 mm) é a PROFUNDIDADE (frente↔fundo, entra na parede\/estrutura e NÃO mexe na medida do vão); o 1\" (25,4 mm) é o que fica virado pro vão. Por isso o vidro é DESCONTADO em 25,4 mm na borda onde a barra senta — largura, altura ou ambas — sempre o mesmo desconto, porque a orientação é a mesma (deitada) nas duas posições.\n\nNO SOFTCALC (tipologia VF-E, opção 'estrutura'): nenhuma = vidro fixo puro; embaixo = barra horizontal de comprimento = largura + vidro descontado na altura; lateral = barra vertical de comprimento = altura + vidro descontado na largura; embaixo+lateral = as duas barras + os dois descontos. A barra entra como PEÇA de alumínio (seção 'Reforço estrutural' na lista de corte), precificada por peso × R$\/kg do acabamento (como todo perfil). O desconto de 25,4 mm é o glass_discount do D-079 no Catálogo › Perfis — tunável ali, sem mexer em fórmula. Faturamento do vidro segue por m² ceil-50 (o desconto some quase sempre no arredondamento; o que muda é o CORTE real que vai pra têmpera e o custo da barra).\n\nSEQUÊNCIA: (1) decidir se o vão precisa de apoio e onde; (2) escolher a posição na opção 'estrutura'; (3) o motor desconta o vidro e adiciona a(s) barra(s); (4) conferir o corte do vidro na lista\/pedido de têmpera. EXCEÇÕES\/notas: o corte da barra é butt joint pleno (barra cheia); a sobra de canto no combo embaixo+lateral é desprezível pro peso. Se o perfil de reforço for outro (não o D-079) ou o desconto real for diferente, ajustar no cadastro do perfil. Confirmar o CÓDIGO do tubo (o dono citou 'D-069' de memória; o desenho traz D-079).","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + desenho de perfil D-079 — 13\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: reforço estrutural com tubo D-079 2×1\" (0,563 kg\/m) embaixo\/lateral do vidro fixo; vidro descontado 25,4 mm (glass_discount) na borda da barra; barra precificada como alumínio. Tipologia VF-E.","machine":null,"technical":{"view":"","application":"","parts":["D-079","ceil-50","D-069"],"dimensions":["nenhuma = vidro fixo puro; embaixo = barra horizontal de comprimento = largura + vidro descontado na altura; lateral = barra vertical de comprimento = altura + vidro descontado na largura; embaixo+lateral = as duas barras + os dois descontos."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":4,"sort_order":120,"updated_at":"2026-07-13 14:00:17","versions":[{"rule_id":"reforco-estrutural-vidro","revision":4,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: reforço estrutural com tubo D-079 2×1\" (0,563 kg\/m) embaixo\/lateral do vidro fixo; vidro descontado 25,4 mm (glass_discount) na borda da barra; barra precificada como alumínio. Tipologia VF-E.","snapshot":{"id":"reforco-estrutural-vidro","scope":"vidro","title":"Reforço estrutural: barra D-079 (tubo 2×1\") embaixo\/lateral do vidro fixo; desconta 25,4 mm da borda","body":"Quando o pano de vidro FIXO é grande demais pra se sustentar sozinho (vão largo\/alto sem apoio), o serralheiro acrescenta uma BARRA ESTRUTURAL de alumínio no perímetro que precisar de apoio — embaixo (travessa horizontal) e\/ou na lateral (montante vertical). Perfil padrão PraiaMar: D-079, tubo retangular 2×1\" (50,8 × 25,4 mm), 0,563 kg\/m. A barra fica DEITADA: o 2\" (50,8 mm) é a PROFUNDIDADE (frente↔fundo, entra na parede\/estrutura e NÃO mexe na medida do vão); o 1\" (25,4 mm) é o que fica virado pro vão. Por isso o vidro é DESCONTADO em 25,4 mm na borda onde a barra senta — largura, altura ou ambas — sempre o mesmo desconto, porque a orientação é a mesma (deitada) nas duas posições.\n\nNO SOFTCALC (tipologia VF-E, opção 'estrutura'): nenhuma = vidro fixo puro; embaixo = barra horizontal de comprimento = largura + vidro descontado na altura; lateral = barra vertical de comprimento = altura + vidro descontado na largura; embaixo+lateral = as duas barras + os dois descontos. A barra entra como PEÇA de alumínio (seção 'Reforço estrutural' na lista de corte), precificada por peso × R$\/kg do acabamento (como todo perfil). O desconto de 25,4 mm é o glass_discount do D-079 no Catálogo › Perfis — tunável ali, sem mexer em fórmula. Faturamento do vidro segue por m² ceil-50 (o desconto some quase sempre no arredondamento; o que muda é o CORTE real que vai pra têmpera e o custo da barra).\n\nSEQUÊNCIA: (1) decidir se o vão precisa de apoio e onde; (2) escolher a posição na opção 'estrutura'; (3) o motor desconta o vidro e adiciona a(s) barra(s); (4) conferir o corte do vidro na lista\/pedido de têmpera. EXCEÇÕES\/notas: o corte da barra é butt joint pleno (barra cheia); a sobra de canto no combo embaixo+lateral é desprezível pro peso. Se o perfil de reforço for outro (não o D-079) ou o desconto real for diferente, ajustar no cadastro do perfil. Confirmar o CÓDIGO do tubo (o dono citou 'D-069' de memória; o desenho traz D-079).","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + desenho de perfil D-079 — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: reforço estrutural com tubo D-079 2×1\" (0,563 kg\/m) embaixo\/lateral do vidro fixo; vidro descontado 25,4 mm (glass_discount) na borda da barra; barra precificada como alumínio. Tipologia VF-E.","source_kind":"legacy","revision":4,"sort_order":122},"created_at":"2026-07-13 14:00:17"},{"rule_id":"reforco-estrutural-vidro","revision":3,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: reforço estrutural com tubo D-079 2×1\" (0,563 kg\/m) embaixo\/lateral do vidro fixo; vidro descontado 25,4 mm (glass_discount) na borda da barra; barra precificada como alumínio. Tipologia VF-E.","snapshot":{"id":"reforco-estrutural-vidro","scope":"vidro","title":"Reforço estrutural: barra D-079 (tubo 2×1\") embaixo\/lateral do vidro fixo; desconta 25,4 mm da borda","body":"Quando o pano de vidro FIXO é grande demais pra se sustentar sozinho (vão largo\/alto sem apoio), o serralheiro acrescenta uma BARRA ESTRUTURAL de alumínio no perímetro que precisar de apoio — embaixo (travessa horizontal) e\/ou na lateral (montante vertical). Perfil padrão PraiaMar: D-079, tubo retangular 2×1\" (50,8 × 25,4 mm), 0,563 kg\/m. A barra fica DEITADA: o 2\" (50,8 mm) é a PROFUNDIDADE (frente↔fundo, entra na parede\/estrutura e NÃO mexe na medida do vão); o 1\" (25,4 mm) é o que fica virado pro vão. Por isso o vidro é DESCONTADO em 25,4 mm na borda onde a barra senta — largura, altura ou ambas — sempre o mesmo desconto, porque a orientação é a mesma (deitada) nas duas posições.\n\nNO SOFTCALC (tipologia VF-E, opção 'estrutura'): nenhuma = vidro fixo puro; embaixo = barra horizontal de comprimento = largura + vidro descontado na altura; lateral = barra vertical de comprimento = altura + vidro descontado na largura; embaixo+lateral = as duas barras + os dois descontos. A barra entra como PEÇA de alumínio (seção 'Reforço estrutural' na lista de corte), precificada por peso × R$\/kg do acabamento (como todo perfil). O desconto de 25,4 mm é o glass_discount do D-079 no Catálogo › Perfis — tunável ali, sem mexer em fórmula. Faturamento do vidro segue por m² ceil-50 (o desconto some quase sempre no arredondamento; o que muda é o CORTE real que vai pra têmpera e o custo da barra).\n\nSEQUÊNCIA: (1) decidir se o vão precisa de apoio e onde; (2) escolher a posição na opção 'estrutura'; (3) o motor desconta o vidro e adiciona a(s) barra(s); (4) conferir o corte do vidro na lista\/pedido de têmpera. EXCEÇÕES\/notas: o corte da barra é butt joint pleno (barra cheia); a sobra de canto no combo embaixo+lateral é desprezível pro peso. Se o perfil de reforço for outro (não o D-079) ou o desconto real for diferente, ajustar no cadastro do perfil. Confirmar o CÓDIGO do tubo (o dono citou 'D-069' de memória; o desenho traz D-079).","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + desenho de perfil D-079 — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: reforço estrutural com tubo D-079 2×1\" (0,563 kg\/m) embaixo\/lateral do vidro fixo; vidro descontado 25,4 mm (glass_discount) na borda da barra; barra precificada como alumínio. Tipologia VF-E.","source_kind":"legacy","revision":3,"sort_order":122},"created_at":"2026-07-13 13:20:34"},{"rule_id":"reforco-estrutural-vidro","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: reforço estrutural com tubo D-079 2×1\" (0,563 kg\/m) embaixo\/lateral do vidro fixo; vidro descontado 25,4 mm (glass_discount) na borda da barra; barra precificada como alumínio. Tipologia VF-E.","snapshot":{"id":"reforco-estrutural-vidro","scope":"vidro","title":"Reforço estrutural: barra D-079 (tubo 2×1\") embaixo\/lateral do vidro fixo; desconta 25,4 mm da borda","body":"Quando o pano de vidro FIXO é grande demais pra se sustentar sozinho (vão largo\/alto sem apoio), o serralheiro acrescenta uma BARRA ESTRUTURAL de alumínio no perímetro que precisar de apoio — embaixo (travessa horizontal) e\/ou na lateral (montante vertical). Perfil padrão PraiaMar: D-079, tubo retangular 2×1\" (50,8 × 25,4 mm), 0,563 kg\/m. A barra fica DEITADA: o 2\" (50,8 mm) é a PROFUNDIDADE (frente↔fundo, entra na parede\/estrutura e NÃO mexe na medida do vão); o 1\" (25,4 mm) é o que fica virado pro vão. Por isso o vidro é DESCONTADO em 25,4 mm na borda onde a barra senta — largura, altura ou ambas — sempre o mesmo desconto, porque a orientação é a mesma (deitada) nas duas posições.\n\nNO SOFTCALC (tipologia VF-E, opção 'estrutura'): nenhuma = vidro fixo puro; embaixo = barra horizontal de comprimento = largura + vidro descontado na altura; lateral = barra vertical de comprimento = altura + vidro descontado na largura; embaixo+lateral = as duas barras + os dois descontos. A barra entra como PEÇA de alumínio (seção 'Reforço estrutural' na lista de corte), precificada por peso × R$\/kg do acabamento (como todo perfil). O desconto de 25,4 mm é o glass_discount do D-079 no Catálogo › Perfis — tunável ali, sem mexer em fórmula. Faturamento do vidro segue por m² ceil-50 (o desconto some quase sempre no arredondamento; o que muda é o CORTE real que vai pra têmpera e o custo da barra).\n\nSEQUÊNCIA: (1) decidir se o vão precisa de apoio e onde; (2) escolher a posição na opção 'estrutura'; (3) o motor desconta o vidro e adiciona a(s) barra(s); (4) conferir o corte do vidro na lista\/pedido de têmpera. EXCEÇÕES\/notas: o corte da barra é butt joint pleno (barra cheia); a sobra de canto no combo embaixo+lateral é desprezível pro peso. Se o perfil de reforço for outro (não o D-079) ou o desconto real for diferente, ajustar no cadastro do perfil. Confirmar o CÓDIGO do tubo (o dono citou 'D-069' de memória; o desenho traz D-079).","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + desenho de perfil D-079 — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: reforço estrutural com tubo D-079 2×1\" (0,563 kg\/m) embaixo\/lateral do vidro fixo; vidro descontado 25,4 mm (glass_discount) na borda da barra; barra precificada como alumínio. Tipologia VF-E.","source_kind":"legacy","revision":2,"sort_order":121},"created_at":"2026-07-13 12:59:36"},{"rule_id":"reforco-estrutural-vidro","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: reforço estrutural com tubo D-079 2×1\" (0,563 kg\/m) embaixo\/lateral do vidro fixo; vidro descontado 25,4 mm (glass_discount) na borda da barra; barra precificada como alumínio. Tipologia VF-E.","snapshot":{"id":"reforco-estrutural-vidro","scope":"vidro","title":"Reforço estrutural: barra D-079 (tubo 2×1\") embaixo\/lateral do vidro fixo; desconta 25,4 mm da borda","body":"Quando o pano de vidro FIXO é grande demais pra se sustentar sozinho (vão largo\/alto sem apoio), o serralheiro acrescenta uma BARRA ESTRUTURAL de alumínio no perímetro que precisar de apoio — embaixo (travessa horizontal) e\/ou na lateral (montante vertical). Perfil padrão PraiaMar: D-079, tubo retangular 2×1\" (50,8 × 25,4 mm), 0,563 kg\/m. A barra fica DEITADA: o 2\" (50,8 mm) é a PROFUNDIDADE (frente↔fundo, entra na parede\/estrutura e NÃO mexe na medida do vão); o 1\" (25,4 mm) é o que fica virado pro vão. Por isso o vidro é DESCONTADO em 25,4 mm na borda onde a barra senta — largura, altura ou ambas — sempre o mesmo desconto, porque a orientação é a mesma (deitada) nas duas posições.\n\nNO SOFTCALC (tipologia VF-E, opção 'estrutura'): nenhuma = vidro fixo puro; embaixo = barra horizontal de comprimento = largura + vidro descontado na altura; lateral = barra vertical de comprimento = altura + vidro descontado na largura; embaixo+lateral = as duas barras + os dois descontos. A barra entra como PEÇA de alumínio (seção 'Reforço estrutural' na lista de corte), precificada por peso × R$\/kg do acabamento (como todo perfil). O desconto de 25,4 mm é o glass_discount do D-079 no Catálogo › Perfis — tunável ali, sem mexer em fórmula. Faturamento do vidro segue por m² ceil-50 (o desconto some quase sempre no arredondamento; o que muda é o CORTE real que vai pra têmpera e o custo da barra).\n\nSEQUÊNCIA: (1) decidir se o vão precisa de apoio e onde; (2) escolher a posição na opção 'estrutura'; (3) o motor desconta o vidro e adiciona a(s) barra(s); (4) conferir o corte do vidro na lista\/pedido de têmpera. EXCEÇÕES\/notas: o corte da barra é butt joint pleno (barra cheia); a sobra de canto no combo embaixo+lateral é desprezível pro peso. Se o perfil de reforço for outro (não o D-079) ou o desconto real for diferente, ajustar no cadastro do perfil. Confirmar o CÓDIGO do tubo (o dono citou 'D-069' de memória; o desenho traz D-079).","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + desenho de perfil D-079 — 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: reforço estrutural com tubo D-079 2×1\" (0,563 kg\/m) embaixo\/lateral do vidro fixo; vidro descontado 25,4 mm (glass_discount) na borda da barra; barra precificada como alumínio. Tipologia VF-E.","source_kind":"legacy","revision":1,"sort_order":120},"created_at":"2026-07-13 12:58:55"}]},{"id":"vidro-beneficiamento-por-servico","scope":"vidro","title":"Peça de vidro sob desenho: furo\/recorte\/canto cobrados por serviço; material removido abate só o peso","body":"A peça de vidro sob desenho (tipologia PVD, kind glass_shape) é a peça de vidro EDITÁVEL: o operador desenha na peça cantos arredondados, furos e recortes. Cada serviço de beneficiamento é cobrado À PARTE pela têmpera — preço por FURO, por RECORTE e por CANTO arredondado (settings.svc_furo\/svc_recorte\/svc_canto, calibráveis em \/settings; a margem de vidro incide sobre eles). O material removido pelo furo\/recorte ABATE o PESO (área real menos os buracos × espessura × 2,5 kg\/m²\/mm), mas NÃO abate o faturado: a têmpera cobra o menor RETÂNGULO que circunscreve a peça (ceil-50 em cada dimensão) porque o recorte vira sucata que não dá pra reaproveitar — mesma lógica do vidro fora de esquadro. Raio de canto uniforme arredonda os 4 cantos (cobra 4×). NÃO confundir com a peça de vidro avulsa (PV\/VF), que é o retângulo puro sem beneficiamento; nem com vidro fixo instalado (VF-U\/SU-F) ou montagem\/esquadria. Os preços iniciais dos serviços são placeholders — o dono calibra com a têmpera dele.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — pedido de peça de vidro editável, 13\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Nova: peça de vidro sob desenho (furos\/recortes\/cantos por serviço; removido abate peso, faturado segue o retângulo).","machine":null,"technical":{"view":"","application":"","parts":["ceil-50"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":121,"updated_at":"2026-07-13 13:13:57","versions":[{"rule_id":"vidro-beneficiamento-por-servico","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Nova: peça de vidro sob desenho (furos\/recortes\/cantos por serviço; removido abate peso, faturado segue o retângulo).","snapshot":{"id":"vidro-beneficiamento-por-servico","scope":"vidro","title":"Peça de vidro sob desenho: furo\/recorte\/canto cobrados por serviço; material removido abate só o peso","body":"A peça de vidro sob desenho (tipologia PVD, kind glass_shape) é a peça de vidro EDITÁVEL: o operador desenha na peça cantos arredondados, furos e recortes. Cada serviço de beneficiamento é cobrado À PARTE pela têmpera — preço por FURO, por RECORTE e por CANTO arredondado (settings.svc_furo\/svc_recorte\/svc_canto, calibráveis em \/settings; a margem de vidro incide sobre eles). O material removido pelo furo\/recorte ABATE o PESO (área real menos os buracos × espessura × 2,5 kg\/m²\/mm), mas NÃO abate o faturado: a têmpera cobra o menor RETÂNGULO que circunscreve a peça (ceil-50 em cada dimensão) porque o recorte vira sucata que não dá pra reaproveitar — mesma lógica do vidro fora de esquadro. Raio de canto uniforme arredonda os 4 cantos (cobra 4×). NÃO confundir com a peça de vidro avulsa (PV\/VF), que é o retângulo puro sem beneficiamento; nem com vidro fixo instalado (VF-U\/SU-F) ou montagem\/esquadria. Os preços iniciais dos serviços são placeholders — o dono calibra com a têmpera dele.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — pedido de peça de vidro editável, 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Nova: peça de vidro sob desenho (furos\/recortes\/cantos por serviço; removido abate peso, faturado segue o retângulo).","source_kind":"legacy","revision":2,"sort_order":122},"created_at":"2026-07-13 13:13:57"},{"rule_id":"vidro-beneficiamento-por-servico","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Nova: peça de vidro sob desenho (furos\/recortes\/cantos por serviço; removido abate peso, faturado segue o retângulo).","snapshot":{"id":"vidro-beneficiamento-por-servico","scope":"vidro","title":"Peça de vidro sob desenho: furo\/recorte\/canto cobrados por serviço; material removido abate só o peso","body":"A peça de vidro sob desenho (tipologia PVD, kind glass_shape) é a peça de vidro EDITÁVEL: o operador desenha na peça cantos arredondados, furos e recortes. Cada serviço de beneficiamento é cobrado À PARTE pela têmpera — preço por FURO, por RECORTE e por CANTO arredondado (settings.svc_furo\/svc_recorte\/svc_canto, calibráveis em \/settings; a margem de vidro incide sobre eles). O material removido pelo furo\/recorte ABATE o PESO (área real menos os buracos × espessura × 2,5 kg\/m²\/mm), mas NÃO abate o faturado: a têmpera cobra o menor RETÂNGULO que circunscreve a peça (ceil-50 em cada dimensão) porque o recorte vira sucata que não dá pra reaproveitar — mesma lógica do vidro fora de esquadro. Raio de canto uniforme arredonda os 4 cantos (cobra 4×). NÃO confundir com a peça de vidro avulsa (PV\/VF), que é o retângulo puro sem beneficiamento; nem com vidro fixo instalado (VF-U\/SU-F) ou montagem\/esquadria. Os preços iniciais dos serviços são placeholders — o dono calibra com a têmpera dele.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — pedido de peça de vidro editável, 13\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Nova: peça de vidro sob desenho (furos\/recortes\/cantos por serviço; removido abate peso, faturado segue o retângulo).","source_kind":"legacy","revision":1,"sort_order":121},"created_at":"2026-07-13 13:13:32"}]},{"id":"corte-fora-de-angulo","scope":"vidro","title":"Corte fora de ângulo (vidro não-retangular): +20% da têmpera, sobre o retângulo cheio","body":"Todo vidro cortado FORA DE ÂNGULO (não-retangular — triângulo, trapézio, qualquer polígono fora do esquadro) leva DUAS coisas no faturamento: (1) cobra a área do RETÂNGULO que circunscreve a peça, CHEIO, sem desconto pelo formato (o triângulo NÃO é meia área; o recorte de temperado vira sucata); (2) SOBRETAXA da têmpera pelo serviço de cortar fora do esquadro — padrão +20% sobre o preço do vidro (com margem), calibrável em settings.glass_offangle_pct. Modularizar (dividir em N peças) é só logística de corte\/encaixe e NÃO abate o preço. No SoftCalc: aplicado automaticamente a todo painel de vidro com 'shape' (fora de esquadro); o motor devolve glass_offangle_pct e glass_offangle_cost. Vale pras tipologias VF-TR\/VF-CV e pra qualquer vidro fora de esquadro futuro.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: corte fora de ângulo = retângulo cheio (sem desconto) + 20% de sobretaxa da têmpera (glass_offangle_pct, calibrável).","machine":null,"technical":{"view":"","application":"","parts":[],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":122,"updated_at":"2026-07-13 14:29:47","versions":[{"rule_id":"corte-fora-de-angulo","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: corte fora de ângulo = retângulo cheio (sem desconto) + 20% de sobretaxa da têmpera (glass_offangle_pct, calibrável).","snapshot":{"id":"corte-fora-de-angulo","scope":"vidro","title":"Corte fora de ângulo (vidro não-retangular): +20% da têmpera, sobre o retângulo cheio","body":"Todo vidro cortado FORA DE ÂNGULO (não-retangular — triângulo, trapézio, qualquer polígono fora do esquadro) leva DUAS coisas no faturamento: (1) cobra a área do RETÂNGULO que circunscreve a peça, CHEIO, sem desconto pelo formato (o triângulo NÃO é meia área; o recorte de temperado vira sucata); (2) SOBRETAXA da têmpera pelo serviço de cortar fora do esquadro — padrão +20% sobre o preço do vidro (com margem), calibrável em settings.glass_offangle_pct. Modularizar (dividir em N peças) é só logística de corte\/encaixe e NÃO abate o preço. No SoftCalc: aplicado automaticamente a todo painel de vidro com 'shape' (fora de esquadro); o motor devolve glass_offangle_pct e glass_offangle_cost. Vale pras tipologias VF-TR\/VF-CV e pra qualquer vidro fora de esquadro futuro.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026","machine":null,"author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: corte fora de ângulo = retângulo cheio (sem desconto) + 20% de sobretaxa da têmpera (glass_offangle_pct, calibrável).","source_kind":"legacy","revision":1,"sort_order":122},"created_at":"2026-07-13 14:29:47"}]},{"id":"porta-giro-mata-junta-dupla","scope":"suprema","title":"Porta de giro de 2 folhas: mata-junta SU-084 (0,125 kg\/m) vertical no encontro das folhas","body":"Na porta\/portinhola de abrir (giro) de 2 FOLHAS, o encontro central das folhas leva um MATA-JUNTA: 1 barra VERTICAL cobrindo a fresta onde as folhas se encontram (fixa numa folha, sobrepondo a outra). Perfil: SU-084, 0,125 kg\/m. Comprimento = altura da folha (na modelagem, H-52, igual aos montantes de altura SU-111\/SU-113). Entra como PEÇA de alumínio (peso × R$\/kg do acabamento, como todo perfil), na seção da folha da lista de corte.\n\nAPLICAÇÃO: só na DUPLA (kind hinged, ≥2 folhas). A porta de 1 folha NÃO tem encontro, logo não tem mata-junta. QTD: 1 (uma barra cobre o encontro; não é 1 por folha). SEQUÊNCIA: montadas as duas folhas, o mata-junta fecha o vão central. NO DESENHO: é o traço de perfil que separa as duas folhas — cada folha gira na sua borda externa e as travas se encontram no meio, em cima do mata-junta.\n\nIDENTIDADE DO PERFIL: o catálogo Suprema traz SU-084 com PESO 0,125 kg\/m (confere), mas SEM nome; o profile_meta guardava um nome de import genérico (\"Pingadeira horizontal inferior de folha\", sem fonte). O dono confirma SU-084 = mata-junta.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Sem mudança técnica: acrescenta como o mata-junta aparece no desenho (a porta de giro passou a desenhar uma folha por pane).","machine":{"refs":["SU-084"],"check":"requires_all","applies":{"kind":["hinged"],"min_panes":2}},"technical":{"view":"","application":"","parts":["SU-084","H-52","SU-111","SU-113"],"dimensions":["Comprimento = altura da folha (na modelagem, H-52, igual aos montantes de altura SU-111\/SU-113).","O dono confirma SU-084 = mata-junta."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":4,"sort_order":123,"updated_at":"2026-07-14 11:04:03","versions":[{"rule_id":"porta-giro-mata-junta-dupla","revision":4,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Sem mudança técnica: acrescenta como o mata-junta aparece no desenho (a porta de giro passou a desenhar uma folha por pane).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-mata-junta-dupla","scope":"suprema","title":"Porta de giro de 2 folhas: mata-junta SU-084 (0,125 kg\/m) vertical no encontro das folhas","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"Na porta\/portinhola de abrir (giro) de 2 FOLHAS, o encontro central das folhas leva um MATA-JUNTA: 1 barra VERTICAL cobrindo a fresta onde as folhas se encontram (fixa numa folha, sobrepondo a outra). Perfil: SU-084, 0,125 kg\/m. Comprimento = altura da folha (na modelagem, H-52, igual aos montantes de altura SU-111\/SU-113). Entra como PEÇA de alumínio (peso × R$\/kg do acabamento, como todo perfil), na seção da folha da lista de corte.\n\nAPLICAÇÃO: só na DUPLA (kind hinged, ≥2 folhas). A porta de 1 folha NÃO tem encontro, logo não tem mata-junta. QTD: 1 (uma barra cobre o encontro; não é 1 por folha). SEQUÊNCIA: montadas as duas folhas, o mata-junta fecha o vão central. NO DESENHO: é o traço de perfil que separa as duas folhas — cada folha gira na sua borda externa e as travas se encontram no meio, em cima do mata-junta.\n\nIDENTIDADE DO PERFIL: o catálogo Suprema traz SU-084 com PESO 0,125 kg\/m (confere), mas SEM nome; o profile_meta guardava um nome de import genérico (\"Pingadeira horizontal inferior de folha\", sem fonte). O dono confirma SU-084 = mata-junta.","machine":{"check":"requires_all","refs":["SU-084"],"applies":{"kind":["hinged"],"min_panes":2}},"change_note":"Sem mudança técnica: acrescenta como o mata-junta aparece no desenho (a porta de giro passou a desenhar uma folha por pane).","source_kind":"legacy","revision":4,"sort_order":134},"created_at":"2026-07-14 11:04:03"},{"rule_id":"porta-giro-mata-junta-dupla","revision":3,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Sem mudança técnica: acrescenta como o mata-junta aparece no desenho (a porta de giro passou a desenhar uma folha por pane).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-mata-junta-dupla","scope":"suprema","title":"Porta de giro de 2 folhas: mata-junta SU-084 (0,125 kg\/m) vertical no encontro das folhas","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"Na porta\/portinhola de abrir (giro) de 2 FOLHAS, o encontro central das folhas leva um MATA-JUNTA: 1 barra VERTICAL cobrindo a fresta onde as folhas se encontram (fixa numa folha, sobrepondo a outra). Perfil: SU-084, 0,125 kg\/m. Comprimento = altura da folha (na modelagem, H-52, igual aos montantes de altura SU-111\/SU-113). Entra como PEÇA de alumínio (peso × R$\/kg do acabamento, como todo perfil), na seção da folha da lista de corte.\n\nAPLICAÇÃO: só na DUPLA (kind hinged, ≥2 folhas). A porta de 1 folha NÃO tem encontro, logo não tem mata-junta. QTD: 1 (uma barra cobre o encontro; não é 1 por folha). SEQUÊNCIA: montadas as duas folhas, o mata-junta fecha o vão central. NO DESENHO: é o traço de perfil que separa as duas folhas — cada folha gira na sua borda externa e as travas se encontram no meio, em cima do mata-junta.\n\nIDENTIDADE DO PERFIL: o catálogo Suprema traz SU-084 com PESO 0,125 kg\/m (confere), mas SEM nome; o profile_meta guardava um nome de import genérico (\"Pingadeira horizontal inferior de folha\", sem fonte). O dono confirma SU-084 = mata-junta.","machine":{"check":"requires_all","refs":["SU-084"],"applies":{"kind":["hinged"],"min_panes":2}},"change_note":"Sem mudança técnica: acrescenta como o mata-junta aparece no desenho (a porta de giro passou a desenhar uma folha por pane).","source_kind":"legacy","revision":3,"sort_order":134},"created_at":"2026-07-14 10:27:03"},{"rule_id":"porta-giro-mata-junta-dupla","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Sem mudança técnica: acrescenta como o mata-junta aparece no desenho (a porta de giro passou a desenhar uma folha por pane).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-mata-junta-dupla","scope":"suprema","title":"Porta de giro de 2 folhas: mata-junta SU-084 (0,125 kg\/m) vertical no encontro das folhas","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"Na porta\/portinhola de abrir (giro) de 2 FOLHAS, o encontro central das folhas leva um MATA-JUNTA: 1 barra VERTICAL cobrindo a fresta onde as folhas se encontram (fixa numa folha, sobrepondo a outra). Perfil: SU-084, 0,125 kg\/m. Comprimento = altura da folha (na modelagem, H-52, igual aos montantes de altura SU-111\/SU-113). Entra como PEÇA de alumínio (peso × R$\/kg do acabamento, como todo perfil), na seção da folha da lista de corte.\n\nAPLICAÇÃO: só na DUPLA (kind hinged, ≥2 folhas). A porta de 1 folha NÃO tem encontro, logo não tem mata-junta. QTD: 1 (uma barra cobre o encontro; não é 1 por folha). SEQUÊNCIA: montadas as duas folhas, o mata-junta fecha o vão central. NO DESENHO: é o traço de perfil que separa as duas folhas — cada folha gira na sua borda externa e as travas se encontram no meio, em cima do mata-junta.\n\nIDENTIDADE DO PERFIL: o catálogo Suprema traz SU-084 com PESO 0,125 kg\/m (confere), mas SEM nome; o profile_meta guardava um nome de import genérico (\"Pingadeira horizontal inferior de folha\", sem fonte). O dono confirma SU-084 = mata-junta.","machine":{"check":"requires_all","refs":["SU-084"],"applies":{"kind":["hinged"],"min_panes":2}},"change_note":"Sem mudança técnica: acrescenta como o mata-junta aparece no desenho (a porta de giro passou a desenhar uma folha por pane).","source_kind":"legacy","revision":2,"sort_order":130},"created_at":"2026-07-14 08:33:22"},{"rule_id":"porta-giro-mata-junta-dupla","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: mata-junta SU-084 (0,125 kg\/m) vertical no encontro das folhas da porta de giro de 2 folhas (SU-PGL2); só na dupla. Check requires_all SU-084 em hinged ≥2 folhas.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-mata-junta-dupla","scope":"suprema","title":"Porta de giro de 2 folhas: mata-junta SU-084 (0,125 kg\/m) vertical no encontro das folhas","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13\/07\/2026","body":"Na porta\/portinhola de abrir (giro) de 2 FOLHAS, o encontro central das folhas leva um MATA-JUNTA: 1 barra VERTICAL cobrindo a fresta onde as folhas se encontram (fixa numa folha, sobrepondo a outra). Perfil: SU-084, 0,125 kg\/m. Comprimento = altura da folha (na modelagem, H-52, igual aos montantes de altura SU-111\/SU-113). Entra como PEÇA de alumínio (peso × R$\/kg do acabamento, como todo perfil), na seção da folha da lista de corte.\n\nAPLICAÇÃO: só na DUPLA (kind hinged, ≥2 folhas). A porta de 1 folha NÃO tem encontro, logo não tem mata-junta. QTD: 1 (uma barra cobre o encontro; não é 1 por folha). SEQUÊNCIA: montadas as duas folhas, o mata-junta fecha o vão central.\n\nIDENTIDADE DO PERFIL: o catálogo Suprema traz SU-084 com PESO 0,125 kg\/m (confere), mas SEM nome; o profile_meta guardava um nome de import genérico (\"Pingadeira horizontal inferior de folha\", sem fonte). O dono confirma SU-084 = mata-junta. Se um dia aparecer o desenho e o código divergir, ajustar o perfil no Catálogo › Perfis (o peso é o que o motor usa).","machine":{"check":"requires_all","refs":["SU-084"],"applies":{"kind":["hinged"],"min_panes":2}},"change_note":"Regra nova: mata-junta SU-084 (0,125 kg\/m) vertical no encontro das folhas da porta de giro de 2 folhas (SU-PGL2); só na dupla. Check requires_all SU-084 em hinged ≥2 folhas.","source_kind":"legacy","revision":1,"sort_order":123},"created_at":"2026-07-13 16:56:42"}]},{"id":"porta-giro-tranqueta-fechadura-ferrolho","scope":"porta","title":"Porta de giro: fechadura, tranqueta (×N) e ferrolho são TRÊS escolhas independentes","body":"A trava da porta de abrir (giro) tem três peças, e cada uma é uma escolha própria na tela — o vendedor combina como o serviço pede:\n\n· FECHADURA [default SIM] — FRA822, mais a maçaneta MAC927 na dupla.\n· TRANQUETA DE GIRO [marcar, ×N] — TRQ-GIRO, trava de aba. Pode ser ADICIONAL à fechadura ou SUBSTITUÍ-LA (fechadura=NÃO + tranqueta marcada). Porta alta leva 2 ou 3 tranquetas distribuídas na altura — daí o contador ×N. Vale na simples e na dupla.\n· FERROLHO INTERNO [default NÃO] — BER-1117, haste que trava a folha PASSIVA (a que fica parada) por dentro, em cima\/embaixo. 1 por porta, independente do nº de tranquetas. SÓ na dupla: na simples não há folha passiva. É OPCIONAL — antes vinha embutido junto da tranqueta, o que obrigava quem escolhia tranqueta a levar ferrolho.\n\nFERROLHO — PEÇA REAL: é o ferrolho de alumínio de 2\" (o de portinha\/porta de banheiro), código BER-1117, R$ 8,00, disponível em preto e branco. A família tem 2\", 4\" (BER-1495, corpo 103 × 32 mm) e 8\"; a portinhola usa o 2\". Sai por unidade.\n\nACEITE: uma porta de giro precisa de ALGUMA trava — fechadura OU pelo menos 1 tranqueta; as duas juntas são permitidas, nenhuma é erro de orçamento.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Ferrolho vira escolha PRÓPRIA (opção ferrolho[nao|sim] ×1 na dupla) em vez de vir embutido no módulo da tranqueta — pedido do dono (14\/07\/2026): \"o trinco ferrolho também deve ser opcional\". Tranqueta segue ×N, adicional ou substituta da fechadura. Placeh","machine":null,"technical":{"view":"","application":"","parts":["FRA822","MAC927","BER-1117","BER-1495"],"dimensions":["Pode ser ADICIONAL à fechadura ou SUBSTITUÍ-LA (fechadura=NÃO + tranqueta marcada)."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":4,"sort_order":124,"updated_at":"2026-07-14 11:04:03","versions":[{"rule_id":"porta-giro-tranqueta-fechadura-ferrolho","revision":4,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Ferrolho vira escolha PRÓPRIA (opção ferrolho[nao|sim] ×1 na dupla) em vez de vir embutido no módulo da tranqueta — pedido do dono (14\/07\/2026): \"o trinco ferrolho também deve ser opcional\". Tranqueta segue ×N, adicional ou substituta da fechadura. Placeh","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-tranqueta-fechadura-ferrolho","scope":"porta","title":"Porta de giro: fechadura, tranqueta (×N) e ferrolho são TRÊS escolhas independentes","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"A trava da porta de abrir (giro) tem três peças, e cada uma é uma escolha própria na tela — o vendedor combina como o serviço pede:\n\n· FECHADURA [default SIM] — FRA822, mais a maçaneta MAC927 na dupla.\n· TRANQUETA DE GIRO [marcar, ×N] — TRQ-GIRO, trava de aba. Pode ser ADICIONAL à fechadura ou SUBSTITUÍ-LA (fechadura=NÃO + tranqueta marcada). Porta alta leva 2 ou 3 tranquetas distribuídas na altura — daí o contador ×N. Vale na simples e na dupla.\n· FERROLHO INTERNO [default NÃO] — BER-1117, haste que trava a folha PASSIVA (a que fica parada) por dentro, em cima\/embaixo. 1 por porta, independente do nº de tranquetas. SÓ na dupla: na simples não há folha passiva. É OPCIONAL — antes vinha embutido junto da tranqueta, o que obrigava quem escolhia tranqueta a levar ferrolho.\n\nFERROLHO — PEÇA REAL: é o ferrolho de alumínio de 2\" (o de portinha\/porta de banheiro), código BER-1117, R$ 8,00, disponível em preto e branco. A família tem 2\", 4\" (BER-1495, corpo 103 × 32 mm) e 8\"; a portinhola usa o 2\". Sai por unidade.\n\nACEITE: uma porta de giro precisa de ALGUMA trava — fechadura OU pelo menos 1 tranqueta; as duas juntas são permitidas, nenhuma é erro de orçamento.","machine":null,"change_note":"Ferrolho vira escolha PRÓPRIA (opção ferrolho[nao|sim] ×1 na dupla) em vez de vir embutido no módulo da tranqueta — pedido do dono (14\/07\/2026): \"o trinco ferrolho também deve ser opcional\". Tranqueta segue ×N, adicional ou substituta da fechadura. Placeholder FER-GIRO trocado pela peça REAL: BER-1117, ferrolho de alumínio 2\" (o de portinha), R$ 8,00, preto ou branco.","source_kind":"legacy","revision":4,"sort_order":134},"created_at":"2026-07-14 11:04:03"},{"rule_id":"porta-giro-tranqueta-fechadura-ferrolho","revision":3,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Ferrolho vira escolha PRÓPRIA (opção ferrolho[nao|sim] → FER-GIRO ×1 na dupla) em vez de vir embutido no módulo da tranqueta — pedido do dono (14\/07\/2026): \"o trinco ferrolho também deve ser opcional\". Tranqueta segue ×N, adicional ou substituta da fechad","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-tranqueta-fechadura-ferrolho","scope":"porta","title":"Porta de giro: fechadura, tranqueta (×N) e ferrolho são TRÊS escolhas independentes","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"A trava da porta de abrir (giro) tem três peças, e cada uma é uma escolha própria na tela — o vendedor combina como o serviço pede:\n\n· FECHADURA [default SIM] — FRA822, mais a maçaneta MAC927 na dupla.\n· TRANQUETA DE GIRO [marcar, ×N] — TRQ-GIRO, trava de aba. Pode ser ADICIONAL à fechadura ou SUBSTITUÍ-LA (fechadura=NÃO + tranqueta marcada). Porta alta leva 2 ou 3 tranquetas distribuídas na altura — daí o contador ×N. Vale na simples e na dupla.\n· FERROLHO INTERNO [default NÃO] — FER-GIRO, haste que trava a folha PASSIVA (a que fica parada) por dentro, em cima\/embaixo. 1 por porta, independente do nº de tranquetas. SÓ na dupla: na simples não há folha passiva. É OPCIONAL — antes vinha embutido junto da tranqueta, o que obrigava quem escolhia tranqueta a levar ferrolho.\n\nACEITE: uma porta de giro precisa de ALGUMA trava — fechadura OU pelo menos 1 tranqueta; as duas juntas são permitidas, nenhuma é erro de orçamento. PENDÊNCIA: TRQ-GIRO e FER-GIRO estão no catálogo SEM preço (R$ 0) — Rhuan completa em Catálogo › Componentes; enquanto isso o caminho da tranqueta\/ferrolho subvaloriza (ambos são opt-in e o default segue a fechadura, então nenhum orçamento existente muda).","machine":null,"change_note":"Ferrolho vira escolha PRÓPRIA (opção ferrolho[nao|sim] → FER-GIRO ×1 na dupla) em vez de vir embutido no módulo da tranqueta — pedido do dono (14\/07\/2026): \"o trinco ferrolho também deve ser opcional\". Tranqueta segue ×N, adicional ou substituta da fechadura.","source_kind":"legacy","revision":3,"sort_order":134},"created_at":"2026-07-14 10:27:03"},{"rule_id":"porta-giro-tranqueta-fechadura-ferrolho","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Ferrolho vira escolha PRÓPRIA (opção ferrolho[nao|sim] → FER-GIRO ×1 na dupla) em vez de vir embutido no módulo da tranqueta — pedido do dono (14\/07\/2026): \"o trinco ferrolho também deve ser opcional\". Tranqueta segue ×N, adicional ou substituta da fechad","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-tranqueta-fechadura-ferrolho","scope":"porta","title":"Porta de giro: fechadura, tranqueta (×N) e ferrolho são TRÊS escolhas independentes","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"A trava da porta de abrir (giro) tem três peças, e cada uma é uma escolha própria na tela — o vendedor combina como o serviço pede:\n\n· FECHADURA [default SIM] — FRA822, mais a maçaneta MAC927 na dupla.\n· TRANQUETA DE GIRO [marcar, ×N] — TRQ-GIRO, trava de aba. Pode ser ADICIONAL à fechadura ou SUBSTITUÍ-LA (fechadura=NÃO + tranqueta marcada). Porta alta leva 2 ou 3 tranquetas distribuídas na altura — daí o contador ×N. Vale na simples e na dupla.\n· FERROLHO INTERNO [default NÃO] — FER-GIRO, haste que trava a folha PASSIVA (a que fica parada) por dentro, em cima\/embaixo. 1 por porta, independente do nº de tranquetas. SÓ na dupla: na simples não há folha passiva. É OPCIONAL — antes vinha embutido junto da tranqueta, o que obrigava quem escolhia tranqueta a levar ferrolho.\n\nACEITE: uma porta de giro precisa de ALGUMA trava — fechadura OU pelo menos 1 tranqueta; as duas juntas são permitidas, nenhuma é erro de orçamento. PENDÊNCIA: TRQ-GIRO e FER-GIRO estão no catálogo SEM preço (R$ 0) — Rhuan completa em Catálogo › Componentes; enquanto isso o caminho da tranqueta\/ferrolho subvaloriza (ambos são opt-in e o default segue a fechadura, então nenhum orçamento existente muda).","machine":null,"change_note":"Ferrolho vira escolha PRÓPRIA (opção ferrolho[nao|sim] → FER-GIRO ×1 na dupla) em vez de vir embutido no módulo da tranqueta — pedido do dono (14\/07\/2026): \"o trinco ferrolho também deve ser opcional\". Tranqueta segue ×N, adicional ou substituta da fechadura.","source_kind":"legacy","revision":2,"sort_order":130},"created_at":"2026-07-14 08:33:22"},{"rule_id":"porta-giro-tranqueta-fechadura-ferrolho","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: tranqueta de giro (×N) substitui a fechadura na porta de abrir; na dupla com tranqueta soma ferrolho interno ×1. Opções fechadura[sim|nao] + tranqueta(multi) nas SU-PGL1\/SU-PGL2.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-tranqueta-fechadura-ferrolho","scope":"porta","title":"Porta de giro: tranqueta (×N) substitui a fechadura; na dupla com tranqueta, +ferrolho interno","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13\/07\/2026","body":"Na porta de abrir (giro), a trava pode ser FECHADURA (padrão: FRA822, + maçaneta MAC927 na dupla) OU TRANQUETA DE GIRO (trava de aba). Escolhida a tranqueta, NÃO se usa a fechadura (nem a maçaneta que a acompanha). Pode-se usar MAIS DE UMA tranqueta (×N — ex.: porta alta com 2 ou 3, distribuídas na altura). Vale na porta simples (1 folha) E na dupla (2 folhas).\n\nDUPLA COM TRANQUETA: a folha passiva (a que fica parada) precisa do FERROLHO INTERNO (haste que trava em cima\/embaixo por dentro) — 1 por porta, INDEPENDENTE do nº de tranquetas. Na simples não há folha passiva, logo sem ferrolho.\n\nNO SOFTCALC: opção 'fechadura' [sim|nao] gateia FRA822 (+MAC927 na dupla) — default SIM = comportamento de hoje. Opção 'tranqueta' (marque + contador ×N) inclui TRQ-GIRO ×N; na dupla a variante ainda puxa o ferrolho FER-GIRO ×1. Pra usar tranqueta: pôr fechadura=NÃO e marcar a tranqueta (as duas são independentes na tela). ACEITE: uma porta de giro deve ter OU fechadura OU ≥1 tranqueta — nunca as duas juntas, nunca nenhuma. EXCEÇÃO\/pendência: TRQ-GIRO e FER-GIRO entraram no catálogo SEM preço — Rhuan completa em Catálogo › Componentes; enquanto R$ 0, o caminho da tranqueta subvaloriza (mas é opt-in, o default segue fechadura).","machine":null,"change_note":"Regra nova: tranqueta de giro (×N) substitui a fechadura na porta de abrir; na dupla com tranqueta soma ferrolho interno ×1. Opções fechadura[sim|nao] + tranqueta(multi) nas SU-PGL1\/SU-PGL2.","source_kind":"legacy","revision":1,"sort_order":124},"created_at":"2026-07-13 16:56:42"}]},{"id":"porta-giro-tampinha-acabamento","scope":"porta","title":"Porta de giro: tampinha de acabamento (ponteira) nos topos superiores da folha, R$ 10\/un (opcional)","body":"A folha da porta de abrir às vezes leva a TAMPINHA DE ACABAMENTO (ponteira que fecha o topo do perfil da folha). Vai nos TOPOS SUPERIORES: 4 na dupla (2 folhas × 2 pontas de cima), 2 na simples. Custo R$ 10 cada. É OPCIONAL — geralmente entra em peça pequena, ou o vendedor escolhe no ato.\n\nNO SOFTCALC: opção 'tampinha' [nao|sim], default NÃO (opt-in). Marcada, inclui TAMP-SU111 ×4 (dupla) \/ ×2 (simples), cobrada por componente. Não abate peso (é acessório de polímero\/ponteira).","severity":"info","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Sem mudança técnica — revisada junto do lote da porta de giro (fechadura\/tranqueta\/ferrolho\/travessa).","machine":null,"technical":{"view":"","application":"","parts":["TAMP-SU111"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":4,"sort_order":125,"updated_at":"2026-07-14 11:04:03","versions":[{"rule_id":"porta-giro-tampinha-acabamento","revision":4,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Sem mudança técnica — revisada junto do lote da porta de giro (fechadura\/tranqueta\/ferrolho\/travessa).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-tampinha-acabamento","scope":"porta","title":"Porta de giro: tampinha de acabamento (ponteira) nos topos superiores da folha, R$ 10\/un (opcional)","severity":"info","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"A folha da porta de abrir às vezes leva a TAMPINHA DE ACABAMENTO (ponteira que fecha o topo do perfil da folha). Vai nos TOPOS SUPERIORES: 4 na dupla (2 folhas × 2 pontas de cima), 2 na simples. Custo R$ 10 cada. É OPCIONAL — geralmente entra em peça pequena, ou o vendedor escolhe no ato.\n\nNO SOFTCALC: opção 'tampinha' [nao|sim], default NÃO (opt-in). Marcada, inclui TAMP-SU111 ×4 (dupla) \/ ×2 (simples), cobrada por componente. Não abate peso (é acessório de polímero\/ponteira).","machine":null,"change_note":"Sem mudança técnica — revisada junto do lote da porta de giro (fechadura\/tranqueta\/ferrolho\/travessa).","source_kind":"legacy","revision":4,"sort_order":134},"created_at":"2026-07-14 11:04:03"},{"rule_id":"porta-giro-tampinha-acabamento","revision":3,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Sem mudança técnica — revisada junto do lote da porta de giro (fechadura\/tranqueta\/ferrolho\/travessa).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-tampinha-acabamento","scope":"porta","title":"Porta de giro: tampinha de acabamento (ponteira) nos topos superiores da folha, R$ 10\/un (opcional)","severity":"info","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"A folha da porta de abrir às vezes leva a TAMPINHA DE ACABAMENTO (ponteira que fecha o topo do perfil da folha). Vai nos TOPOS SUPERIORES: 4 na dupla (2 folhas × 2 pontas de cima), 2 na simples. Custo R$ 10 cada. É OPCIONAL — geralmente entra em peça pequena, ou o vendedor escolhe no ato.\n\nNO SOFTCALC: opção 'tampinha' [nao|sim], default NÃO (opt-in). Marcada, inclui TAMP-SU111 ×4 (dupla) \/ ×2 (simples), cobrada por componente. Não abate peso (é acessório de polímero\/ponteira).","machine":null,"change_note":"Sem mudança técnica — revisada junto do lote da porta de giro (fechadura\/tranqueta\/ferrolho\/travessa).","source_kind":"legacy","revision":3,"sort_order":134},"created_at":"2026-07-14 10:27:03"},{"rule_id":"porta-giro-tampinha-acabamento","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Sem mudança técnica — revisada junto do lote da porta de giro (fechadura\/tranqueta\/ferrolho\/travessa).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-tampinha-acabamento","scope":"porta","title":"Porta de giro: tampinha de acabamento (ponteira) nos topos superiores da folha, R$ 10\/un (opcional)","severity":"info","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"A folha da porta de abrir às vezes leva a TAMPINHA DE ACABAMENTO (ponteira que fecha o topo do perfil da folha). Vai nos TOPOS SUPERIORES: 4 na dupla (2 folhas × 2 pontas de cima), 2 na simples. Custo R$ 10 cada. É OPCIONAL — geralmente entra em peça pequena, ou o vendedor escolhe no ato.\n\nNO SOFTCALC: opção 'tampinha' [nao|sim], default NÃO (opt-in). Marcada, inclui TAMP-SU ×4 (dupla) \/ ×2 (simples), cobrada por componente. Não abate peso (é acessório de polímero\/ponteira).","machine":null,"change_note":"Sem mudança técnica — revisada junto do lote da porta de giro (fechadura\/tranqueta\/ferrolho\/travessa).","source_kind":"legacy","revision":2,"sort_order":131},"created_at":"2026-07-14 08:33:22"},{"rule_id":"porta-giro-tampinha-acabamento","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: tampinha de acabamento (R$10\/un) nos topos superiores da folha da porta de giro, 4 na dupla \/ 2 na simples, opcional (opt-in). Opção tampinha nas SU-PGL1\/SU-PGL2.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-tampinha-acabamento","scope":"porta","title":"Porta de giro: tampinha de acabamento (ponteira) nos topos superiores da folha, R$ 10\/un (opcional)","severity":"info","status":"validado","source":"PraiaMar (Rhuan) — 13\/07\/2026","body":"A folha da porta de abrir às vezes leva a TAMPINHA DE ACABAMENTO (ponteira que fecha o topo do perfil da folha). Vai nos TOPOS SUPERIORES: 4 na dupla (2 folhas × 2 pontas de cima), 2 na simples. Custo R$ 10 cada. É OPCIONAL — geralmente entra em peça pequena, ou o vendedor escolhe no ato.\n\nNO SOFTCALC: opção 'tampinha' [nao|sim], default NÃO (opt-in). Marcada, inclui TAMP-SU ×4 (dupla) \/ ×2 (simples), cobrada por componente. Não abate peso (é acessório de polímero\/ponteira).","machine":null,"change_note":"Regra nova: tampinha de acabamento (R$10\/un) nos topos superiores da folha da porta de giro, 4 na dupla \/ 2 na simples, opcional (opt-in). Opção tampinha nas SU-PGL1\/SU-PGL2.","source_kind":"legacy","revision":1,"sort_order":125},"created_at":"2026-07-13 16:56:42"}]},{"id":"gold-correr-3folhas","scope":"correr","title":"Gold: porta de correr 3 folhas todas móveis (LG-PCRB302) — variáveis, folgas e composição","body":"Linha GOLD (perfil de alumínio, luxo — vidro 8 a 10 mm; NÃO é a Convencional de kit). Porta de correr de 3 folhas TODAS MÓVEIS, com baguete, sem travessa, trilho 3\/6 planos (LG-062 superior + LG-066 inferior). VARIÁVEIS (derivadas da ficha real 3000×2600): ALTFL = H−77 (altura da folha); BAG = ALTFL−182 = H−259 (comprimento da baguete); LARGFL = INT(L\/3)−79 (largura útil da folha, 3 folhas); LARGVID = LARGFL−6 (largura do vidro). Vidro: 3 folhas de LARGVID × (BAG+24) — o pano entra 12 mm em cada baguete. PERFIS por seção: MARCO = LG-062 (L−56) + LG-066 (L−56) + LG-064 ×2 (H−27) + LG-046 ×4 (H−55, tampos). FOLHA (×3) = LG-006 ×3 (LARGFL, superior) + LG-007 ×3 (LARGFL, travessa 100mm inferior) + 2 montantes de altura por vão: LG-050 ×2 (liso) + LG-021 ×2 (tubular, puxador redondo). REFORÇO de altura (grupo padrão) = LG-049 ×2 (ALTFL, mão de amigo lado baguete); alternativa LG-052 (com tubular). BAGUETE (vidro 6–10mm) = BG-057, 4 por folha = 6× LARGFL + 6× BAG; p\/ vidro 4mm troca por LG-059. CONTRAMARCO padrão = CM-060 (38mm): CM-060 (L) + CM-060 ×2 (H) + soleira CM-098 (L) + conexões CL-011 ×8 e CL-009 ×4; alternativa CM-063 (26mm). ARREMATE padrão = MP-347 (face): MP-347 (L+20) + MP-347 ×2 (H+20) + arremate de piso CM-169 (L+20); alternativa ME-092 (meio de vão). FECHO concha (opção exclusiva): s\/ chave FEC-1029 ×2 (default) ou c\/ chave FEC-1030 ×2 (TROCA a peça, não soma). Ferragem: ROL-413 ×6 (roldana dupla, 2\/folha), NYL-396 ×12, NYL-398 ×4, NYL-400 ×2, NYL-395 ×2, NYL-416 ×1, NYL-339 ×2, NYL-042 ×18, CON-381 ×2, CON-383 ×2, CAL-929 ×12, PAR428 ×42. Chumbador\/presilha do contramarco e arremate = ((INT((L−100)\/400)+1)×2)+((INT((H−100)\/400)+1)×2) (SD-896, NYL-190, PAR-4,2\/16). Vedações POR METRO: FIT-224 = LARGFL×12; FIT206 = ALTFL×9; GUA-259 = (LARGFL×12)+(ALTFL×6); GUA-304 = ALTFL×6; SIL-NINC = L+H×2. CONFERIDO: 3000×2600 (1 un) = 51,554 kg de alumínio + 6,492 m² (3× 915×2365). PENDENTE: a fórmula de LARGURA da folha (LARGFL\/LARGVID) foi calibrada em UM exemplo só — confirmar com um 2º vão. Preço do fecho FEC-1029 (s\/chave) está R$ 0,00 no catálogo — o dono precisa preencher. Peso do MP-347 tem duas leituras: 0,184 kg\/m (ficha SU-F) vs 0,202 kg\/m (esta ficha Gold) — reconciliar.","severity":"aviso","status":"pendente","source":"Ficha do sistema de origem (LG-PCRB302, 3000×2600) — 13\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Decode inicial da linha Gold (correr 3 folhas): variáveis, seções de perfil, contramarco\/arremate\/baguete\/reforço, ferragem e vedações. Calibrado batendo 51,554 kg \/ 6,492 m² na ficha real.","machine":null,"technical":{"view":"","application":"","parts":["LG-PCRB302","LG-062","LG-066","LG-064","LG-046","LG-006","LG-007","LG-050","LG-021","LG-049","LG-052","BG-057","LG-059","CM-060","CM-098","CL-011","CL-009","CM-063","MP-347","CM-169","ME-092","FEC-1029","FEC-1030","ROL-413","NYL-396","NYL-398","NYL-400","NYL-395","NYL-416","NYL-339","NYL-042","CON-381","CON-383","CAL-929","PAR428","SD-896","NYL-190","PAR-4","FIT-224","FIT206","GUA-259","GUA-304"],"dimensions":["ALTFL = H−77 (altura da folha); BAG = ALTFL−182 = H−259 (comprimento da baguete); LARGFL = INT(L\/3)−79 (largura útil da folha, 3 folhas); LARGVID = LARGFL−6 (largura do vidro).","MARCO = LG-062 (L−56) + LG-066 (L−56) + LG-064 ×2 (H−27) + LG-046 ×4 (H−55, tampos).","FOLHA (×3) = LG-006 ×3 (LARGFL, superior) + LG-007 ×3 (LARGFL, travessa 100mm inferior) + 2 montantes de altura por vão: LG-050 ×2 (liso) + LG-021 ×2 (tubular, puxador redondo).","REFORÇO de altura (grupo padrão) = LG-049 ×2 (ALTFL, mão de amigo lado baguete); alternativa LG-052 (com tubular).","BAGUETE (vidro 6–10mm) = BG-057, 4 por folha = 6× LARGFL + 6× BAG; p\/ vidro 4mm troca por LG-059.","CM-060 (L) + CM-060 ×2 (H) + soleira CM-098 (L) + conexões CL-011 ×8 e CL-009 ×4; alternativa CM-063 (26mm).","MP-347 (L+20) + MP-347 ×2 (H+20) + arremate de piso CM-169 (L+20); alternativa ME-092 (meio de vão).","Chumbador\/presilha do contramarco e arremate = ((INT((L−100)\/400)+1)×2)+((INT((H−100)\/400)+1)×2) (SD-896, NYL-190, PAR-4,2\/16).","FIT-224 = LARGFL×12; FIT206 = ALTFL×9; GUA-259 = (LARGFL×12)+(ALTFL×6); GUA-304 = ALTFL×6; SIL-NINC = L+H×2.","3000×2600 (1 un) = 51,554 kg de alumínio + 6,492 m² (3× 915×2365)."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":126,"updated_at":"2026-07-13 17:08:39","versions":[{"rule_id":"gold-correr-3folhas","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Decode inicial da linha Gold (correr 3 folhas): variáveis, seções de perfil, contramarco\/arremate\/baguete\/reforço, ferragem e vedações. Calibrado batendo 51,554 kg \/ 6,492 m² na ficha real.","snapshot":{"id":"gold-correr-3folhas","scope":"correr","title":"Gold: porta de correr 3 folhas todas móveis (LG-PCRB302) — variáveis, folgas e composição","body":"Linha GOLD (perfil de alumínio, luxo — vidro 8 a 10 mm; NÃO é a Convencional de kit). Porta de correr de 3 folhas TODAS MÓVEIS, com baguete, sem travessa, trilho 3\/6 planos (LG-062 superior + LG-066 inferior). VARIÁVEIS (derivadas da ficha real 3000×2600): ALTFL = H−77 (altura da folha); BAG = ALTFL−182 = H−259 (comprimento da baguete); LARGFL = INT(L\/3)−79 (largura útil da folha, 3 folhas); LARGVID = LARGFL−6 (largura do vidro). Vidro: 3 folhas de LARGVID × (BAG+24) — o pano entra 12 mm em cada baguete. PERFIS por seção: MARCO = LG-062 (L−56) + LG-066 (L−56) + LG-064 ×2 (H−27) + LG-046 ×4 (H−55, tampos). FOLHA (×3) = LG-006 ×3 (LARGFL, superior) + LG-007 ×3 (LARGFL, travessa 100mm inferior) + 2 montantes de altura por vão: LG-050 ×2 (liso) + LG-021 ×2 (tubular, puxador redondo). REFORÇO de altura (grupo padrão) = LG-049 ×2 (ALTFL, mão de amigo lado baguete); alternativa LG-052 (com tubular). BAGUETE (vidro 6–10mm) = BG-057, 4 por folha = 6× LARGFL + 6× BAG; p\/ vidro 4mm troca por LG-059. CONTRAMARCO padrão = CM-060 (38mm): CM-060 (L) + CM-060 ×2 (H) + soleira CM-098 (L) + conexões CL-011 ×8 e CL-009 ×4; alternativa CM-063 (26mm). ARREMATE padrão = MP-347 (face): MP-347 (L+20) + MP-347 ×2 (H+20) + arremate de piso CM-169 (L+20); alternativa ME-092 (meio de vão). FECHO concha (opção exclusiva): s\/ chave FEC-1029 ×2 (default) ou c\/ chave FEC-1030 ×2 (TROCA a peça, não soma). Ferragem: ROL-413 ×6 (roldana dupla, 2\/folha), NYL-396 ×12, NYL-398 ×4, NYL-400 ×2, NYL-395 ×2, NYL-416 ×1, NYL-339 ×2, NYL-042 ×18, CON-381 ×2, CON-383 ×2, CAL-929 ×12, PAR428 ×42. Chumbador\/presilha do contramarco e arremate = ((INT((L−100)\/400)+1)×2)+((INT((H−100)\/400)+1)×2) (SD-896, NYL-190, PAR-4,2\/16). Vedações POR METRO: FIT-224 = LARGFL×12; FIT206 = ALTFL×9; GUA-259 = (LARGFL×12)+(ALTFL×6); GUA-304 = ALTFL×6; SIL-NINC = L+H×2. CONFERIDO: 3000×2600 (1 un) = 51,554 kg de alumínio + 6,492 m² (3× 915×2365). PENDENTE: a fórmula de LARGURA da folha (LARGFL\/LARGVID) foi calibrada em UM exemplo só — confirmar com um 2º vão. Preço do fecho FEC-1029 (s\/chave) está R$ 0,00 no catálogo — o dono precisa preencher. Peso do MP-347 tem duas leituras: 0,184 kg\/m (ficha SU-F) vs 0,202 kg\/m (esta ficha Gold) — reconciliar.","severity":"aviso","status":"pendente","source":"Ficha do sistema de origem (LG-PCRB302, 3000×2600) — 13\/07\/2026","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Decode inicial da linha Gold (correr 3 folhas): variáveis, seções de perfil, contramarco\/arremate\/baguete\/reforço, ferragem e vedações. Calibrado batendo 51,554 kg \/ 6,492 m² na ficha real.","source_kind":"legacy","revision":1,"sort_order":126},"created_at":"2026-07-13 17:08:39"}]},{"id":"porta-pivo-ferragem","scope":"porta","title":"Porta pivotante de vidro: pivô é KIT (cima+baixo, 1 preço) — cromado R$ 104 · branco\/preto R$ 90","body":"A porta PIVOTANTE de vidro é frameless: uma folha única de vidro temperado que gira num EIXO VERTICAL (pivô), SEM dobradiça lateral e SEM moldura de alumínio (diferente da porta de giro Suprema, que tem marco).\n\nKIT DE PIVÔ — a dobradiça de CIMA e a de BAIXO são vendidas JUNTAS, como UM KIT, com UM PREÇO SÓ. NÃO se orça peça a peça (dobradiça inferior + pino + pivô superior avulsos): isso é modelagem errada e desmonta um produto que o fornecedor vende inteiro. A base do kit é a dobradiça inferior AL-1103-A (pivô INVERTIDO, COM REGULAGEM de altura\/prumo). O preço varia só pelo ACABAMENTO:\n  · CROMADO — R$ 104,00 (KIT-PIVO-CR)\n  · BRANCO  — R$  90,00 (KIT-PIVO-BC)\n  · PRETO   — R$  90,00 (KIT-PIVO-PT)\nNo SoftCalc: opção 'acabamento' [cromado|branco|preto] (default cromado — o mais caro, pra nunca subvalorizar por esquecimento) gateia a peça do kit correspondente; entra 1 kit por porta.\n\nFECHADURA e PUXADOR são à parte e reusam o que a porta de abrir já usa: FRA822 (fechadura de porta de giro de vidro, ~R$ 80) e PUX-H (puxador H, ~R$ 45) — opções sim\/não, default sim.\n\nMOLA DE PISO: existe no catálogo a versão 'p\/ pivô e mola' (fecha sozinha, hidráulica). A PraiaMar NORMALMENTE NÃO USA — não é o padrão da casa. Só entra sob pedido explícito, e aí o preço é outro.\n\nINSTALAÇÃO: o pivô inferior exige preparo no piso (a caixa da AL-1103-A). Se a obra pedir, o vendedor pode marcar sobretaxa de dificuldade no item (como no box fora do padrão).","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + catálogo AL Indústria (AL-1103-A) — 13\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"CORRIGIDO pelo dono: o pivô é KIT (dobradiça de cima + de baixo, 1 preço só), não 3 peças avulsas. Preço por acabamento: cromado 104, branco\/preto 90. PraiaMar não usa a versão com mola. Check virou requires_groups (família KIT-PIVO-).","machine":{"check":"requires_groups","groups":[{"label":"kit de pivô (cima+baixo)","patterns":["KIT-PIVO-"]}],"applies":{"kind":["pivot"],"category":["Porta"]}},"technical":{"view":"","application":"","parts":["KIT-PIVO-","AL-1103","FRA822"],"dimensions":["FRA822 (fechadura de porta de giro de vidro, ~R$ 80) e PUX-H (puxador H, ~R$ 45) — opções sim\/não, default sim."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":127,"updated_at":"2026-07-14 08:24:14","versions":[{"rule_id":"porta-pivo-ferragem","revision":3,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"CORRIGIDO pelo dono: o pivô é KIT (dobradiça de cima + de baixo, 1 preço só), não 3 peças avulsas. Preço por acabamento: cromado 104, branco\/preto 90. PraiaMar não usa a versão com mola. Check virou requires_groups (família KIT-PIVO-).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-pivo-ferragem","scope":"porta","title":"Porta pivotante de vidro: pivô é KIT (cima+baixo, 1 preço) — cromado R$ 104 · branco\/preto R$ 90","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + catálogo AL Indústria (AL-1103-A) — 13\/07\/2026","body":"A porta PIVOTANTE de vidro é frameless: uma folha única de vidro temperado que gira num EIXO VERTICAL (pivô), SEM dobradiça lateral e SEM moldura de alumínio (diferente da porta de giro Suprema, que tem marco).\n\nKIT DE PIVÔ — a dobradiça de CIMA e a de BAIXO são vendidas JUNTAS, como UM KIT, com UM PREÇO SÓ. NÃO se orça peça a peça (dobradiça inferior + pino + pivô superior avulsos): isso é modelagem errada e desmonta um produto que o fornecedor vende inteiro. A base do kit é a dobradiça inferior AL-1103-A (pivô INVERTIDO, COM REGULAGEM de altura\/prumo). O preço varia só pelo ACABAMENTO:\n  · CROMADO — R$ 104,00 (KIT-PIVO-CR)\n  · BRANCO  — R$  90,00 (KIT-PIVO-BC)\n  · PRETO   — R$  90,00 (KIT-PIVO-PT)\nNo SoftCalc: opção 'acabamento' [cromado|branco|preto] (default cromado — o mais caro, pra nunca subvalorizar por esquecimento) gateia a peça do kit correspondente; entra 1 kit por porta.\n\nFECHADURA e PUXADOR são à parte e reusam o que a porta de abrir já usa: FRA822 (fechadura de porta de giro de vidro, ~R$ 80) e PUX-H (puxador H, ~R$ 45) — opções sim\/não, default sim.\n\nMOLA DE PISO: existe no catálogo a versão 'p\/ pivô e mola' (fecha sozinha, hidráulica). A PraiaMar NORMALMENTE NÃO USA — não é o padrão da casa. Só entra sob pedido explícito, e aí o preço é outro.\n\nINSTALAÇÃO: o pivô inferior exige preparo no piso (a caixa da AL-1103-A). Se a obra pedir, o vendedor pode marcar sobretaxa de dificuldade no item (como no box fora do padrão).","machine":{"check":"requires_groups","applies":{"kind":["pivot"],"category":["Porta"]},"groups":[{"label":"kit de pivô (cima+baixo)","patterns":["KIT-PIVO-"]}]},"change_note":"CORRIGIDO pelo dono: o pivô é KIT (dobradiça de cima + de baixo, 1 preço só), não 3 peças avulsas. Preço por acabamento: cromado 104, branco\/preto 90. PraiaMar não usa a versão com mola. Check virou requires_groups (família KIT-PIVO-).","source_kind":"legacy","revision":3,"sort_order":129},"created_at":"2026-07-14 08:24:14"},{"rule_id":"porta-pivo-ferragem","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: ferragem da porta pivotante de vidro (AL-1103-A inferior regulável + pino 1013SG + pivô superior + fechadura FRA822 + puxador H). Check requires_all AL1103A+1013SG em kind pivot.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-pivo-ferragem","scope":"porta","title":"Porta pivotante de vidro: ferragem = pivô inferior regulável (AL-1103-A) + pino + pivô superior + fechadura + puxador","severity":"aviso","status":"validado","source":"Catálogo AL Indústria (AL-1103-A) + PA-F-H do sistema de origem — PraiaMar (Rhuan), 13\/07\/2026","body":"A porta PIVOTANTE de vidro é frameless: uma folha única de vidro temperado que gira num EIXO VERTICAL (pivô), SEM dobradiça lateral e SEM moldura de alumínio (diferente da porta de giro Suprema, que tem marco). A ferragem que faz o pivô:\n\n· PIVÔ INFERIOR AL-1103-A (código AL1103A, ~R$ 23,51): dobradiça inferior COM REGULAGEM para pivô INVERTIDO — fica no piso, sustenta a folha embaixo e regula altura\/prumo. É a peça principal.\n· PINO 1013SG (~R$ 6,33): pivô invertido que casa com a 1103.\n· PIVÔ SUPERIOR (pino de topo, no marco\/verga): 1 por porta. No catálogo colado não veio código próprio — entrou como PIVO-SUP SEM preço; o dono completa (ou remove, se o kit dele não usa peça de topo separada).\n· FECHADURA: reusa a FRA822 (fechadura de porta de giro de vidro, ~R$ 80) — a mesma da porta de abrir.\n· PUXADOR: reusa o PUX-H (puxador H, ~R$ 45).\n\nOBSERVAÇÃO DE INSTALAÇÃO: o pivô inferior exige preparo no piso (a caixa da AL-1103-A). Se o dono quiser, pode marcar sobretaxa de dificuldade por item (como no box fora do padrão). ALTERNATIVA conhecida no catálogo: MOLA DE PISO (AL1103 'p\/ pivô e mola', ~R$ 33,66) quando a porta precisa FECHAR SOZINHA (hidráulica) — não entrou aqui por falta de preço\/modelo confirmado; fica como upgrade futuro.","machine":{"check":"requires_all","refs":["AL1103A","1013SG"],"applies":{"kind":["pivot"]}},"change_note":"Regra nova: ferragem da porta pivotante de vidro (AL-1103-A inferior regulável + pino 1013SG + pivô superior + fechadura FRA822 + puxador H). Check requires_all AL1103A+1013SG em kind pivot.","source_kind":"legacy","revision":2,"sort_order":129},"created_at":"2026-07-13 18:05:14"},{"rule_id":"porta-pivo-ferragem","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: ferragem da porta pivotante de vidro (AL-1103-A inferior regulável + pino 1013SG + pivô superior + fechadura FRA822 + puxador H). Check requires_all AL1103A+1013SG em kind pivot.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-pivo-ferragem","scope":"porta","title":"Porta pivotante de vidro: ferragem = pivô inferior regulável (AL-1103-A) + pino + pivô superior + fechadura + puxador","severity":"aviso","status":"validado","source":"Catálogo AL Indústria (AL-1103-A) + PA-F-H do sistema de origem — PraiaMar (Rhuan), 13\/07\/2026","body":"A porta PIVOTANTE de vidro é frameless: uma folha única de vidro temperado que gira num EIXO VERTICAL (pivô), SEM dobradiça lateral e SEM moldura de alumínio (diferente da porta de giro Suprema, que tem marco). A ferragem que faz o pivô:\n\n· PIVÔ INFERIOR AL-1103-A (código AL1103A, ~R$ 23,51): dobradiça inferior COM REGULAGEM para pivô INVERTIDO — fica no piso, sustenta a folha embaixo e regula altura\/prumo. É a peça principal.\n· PINO 1013SG (~R$ 6,33): pivô invertido que casa com a 1103.\n· PIVÔ SUPERIOR (pino de topo, no marco\/verga): 1 por porta. No catálogo colado não veio código próprio — entrou como PIVO-SUP SEM preço; o dono completa (ou remove, se o kit dele não usa peça de topo separada).\n· FECHADURA: reusa a FRA822 (fechadura de porta de giro de vidro, ~R$ 80) — a mesma da porta de abrir.\n· PUXADOR: reusa o PUX-H (puxador H, ~R$ 45).\n\nOBSERVAÇÃO DE INSTALAÇÃO: o pivô inferior exige preparo no piso (a caixa da AL-1103-A). Se o dono quiser, pode marcar sobretaxa de dificuldade por item (como no box fora do padrão). ALTERNATIVA conhecida no catálogo: MOLA DE PISO (AL1103 'p\/ pivô e mola', ~R$ 33,66) quando a porta precisa FECHAR SOZINHA (hidráulica) — não entrou aqui por falta de preço\/modelo confirmado; fica como upgrade futuro.","machine":{"check":"requires_all","refs":["AL1103A","1013SG"],"applies":{"kind":["pivot"]}},"change_note":"Regra nova: ferragem da porta pivotante de vidro (AL-1103-A inferior regulável + pino 1013SG + pivô superior + fechadura FRA822 + puxador H). Check requires_all AL1103A+1013SG em kind pivot.","source_kind":"legacy","revision":1,"sort_order":127},"created_at":"2026-07-13 18:04:43"}]},{"id":"porta-pivo-folga-vidro","scope":"porta","title":"Porta pivotante de vidro: folha L-8 × H-13, vidro 8 mm padrão (10 mm sob seleção), faturada ceil-50","body":"A folha da porta pivotante de vidro é cortada MENOR que o vão, folgando poucos mm em volta pra girar livre: largura = L-8, altura = H-13. Essa folga foi HERDADA do único dado real de porta de vidro frameless que temos, o \"PA-F-H\" do sistema de origem (vão 750×2250 → vidro 742×2237: -8 na largura, -13 na altura) — é a mesma situação física (pano de vidro solto num vão). PENDÊNCIA: aquele era uma porta de ABRIR; no PIVÔ, a caixa do pivô inferior no piso pode pedir mais folga embaixo — confirmar o H- com o dono.\n\nVIDRO: o PADRÃO é 8 mm temperado. 10 mm existe e é permitido, mas é SELEÇÃO do vendedor no ato (porta maior\/mais pesada) — não é o default.\n\nFATURAMENTO: o vidro é cobrado por m² arredondando CADA dimensão pra cima ao múltiplo de 50 mm (glass_bill_step=50, como a têmpera fatura) — ex.: corte 892×2087 → faturado 900×2100 = 1,89 m². O CORTE real (892×2087) é o que vai pra oficina e pro PESO; só o m² do preço arredonda. A folga só afeta corte e peso — o preço volta ~pro vão cheio pelo ceil-50.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + catálogo AL Indústria (AL-1103-A) — 13\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Vidro padrão passa a ser 8 mm (10 mm vira seleção do vendedor), por correção do dono. Folga L-8 × H-13 e ceil-50 mantidos.","machine":null,"technical":{"view":"","application":"","parts":["L-8","H-13","ceil-50"],"dimensions":["largura = L-8, altura = H-13.","Essa folga foi HERDADA do único dado real de porta de vidro frameless que temos, o \"PA-F-H\" do sistema de origem (vão 750×2250 → vidro 742×2237: -8 na largura, -13 na altura) — é a mesma situação física (pano de vidro solto num vão).","aquele era uma porta de ABRIR; no PIVÔ, a caixa do pivô inferior no piso pode pedir mais folga embaixo — confirmar o H- com o dono.","corte 892×2087 → faturado 900×2100 = 1,89 m²."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":128,"updated_at":"2026-07-14 08:24:14","versions":[{"rule_id":"porta-pivo-folga-vidro","revision":3,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Vidro padrão passa a ser 8 mm (10 mm vira seleção do vendedor), por correção do dono. Folga L-8 × H-13 e ceil-50 mantidos.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-pivo-folga-vidro","scope":"porta","title":"Porta pivotante de vidro: folha L-8 × H-13, vidro 8 mm padrão (10 mm sob seleção), faturada ceil-50","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) + catálogo AL Indústria (AL-1103-A) — 13\/07\/2026","body":"A folha da porta pivotante de vidro é cortada MENOR que o vão, folgando poucos mm em volta pra girar livre: largura = L-8, altura = H-13. Essa folga foi HERDADA do único dado real de porta de vidro frameless que temos, o \"PA-F-H\" do sistema de origem (vão 750×2250 → vidro 742×2237: -8 na largura, -13 na altura) — é a mesma situação física (pano de vidro solto num vão). PENDÊNCIA: aquele era uma porta de ABRIR; no PIVÔ, a caixa do pivô inferior no piso pode pedir mais folga embaixo — confirmar o H- com o dono.\n\nVIDRO: o PADRÃO é 8 mm temperado. 10 mm existe e é permitido, mas é SELEÇÃO do vendedor no ato (porta maior\/mais pesada) — não é o default.\n\nFATURAMENTO: o vidro é cobrado por m² arredondando CADA dimensão pra cima ao múltiplo de 50 mm (glass_bill_step=50, como a têmpera fatura) — ex.: corte 892×2087 → faturado 900×2100 = 1,89 m². O CORTE real (892×2087) é o que vai pra oficina e pro PESO; só o m² do preço arredonda. A folga só afeta corte e peso — o preço volta ~pro vão cheio pelo ceil-50.","machine":null,"change_note":"Vidro padrão passa a ser 8 mm (10 mm vira seleção do vendedor), por correção do dono. Folga L-8 × H-13 e ceil-50 mantidos.","source_kind":"legacy","revision":3,"sort_order":129},"created_at":"2026-07-14 08:24:14"},{"rule_id":"porta-pivo-folga-vidro","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: folga da folha da porta pivotante de vidro (L-8 × H-13, herdada do PA-F-H da origem, a confirmar pro pivô) + faturamento ceil-50.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-pivo-folga-vidro","scope":"porta","title":"Porta pivotante de vidro: folha L-8 × H-13 (folga do frameless), faturada ceil-50","severity":"aviso","status":"validado","source":"Catálogo AL Indústria (AL-1103-A) + PA-F-H do sistema de origem — PraiaMar (Rhuan), 13\/07\/2026","body":"A folha da porta pivotante de vidro é cortada MENOR que o vão, folgando poucos mm em volta pra girar livre: largura = L-8, altura = H-13. Essa folga foi HERDADA do único dado real de porta de vidro frameless que temos, o \"PA-F-H\" do sistema de origem (vão 750×2250 → vidro 742×2237: -8 na largura, -13 na altura) — é a mesma situação física (pano de vidro solto num vão). ATENÇÃO\/pendência: aquele era uma porta de ABRIR; no PIVÔ, a caixa do pivô inferior (AL-1103-A) no piso pode pedir mais folga embaixo — CONFIRMAR o H- com o dono e ajustar no editor se precisar.\n\nFATURAMENTO: o vidro é cobrado por m² arredondando CADA dimensão pra cima ao múltiplo de 50 mm (glass_bill_step=50, como a têmpera fatura) — ex.: corte 892×2087 → faturado 900×2100 = 1,89 m². O CORTE real (892×2087, sem arredondar) é o que vai pra oficina e pro PESO; só o m² do preço arredonda. A folga só afeta o corte e o peso — o preço volta ~pro vão cheio pelo ceil-50.","machine":null,"change_note":"Regra nova: folga da folha da porta pivotante de vidro (L-8 × H-13, herdada do PA-F-H da origem, a confirmar pro pivô) + faturamento ceil-50.","source_kind":"legacy","revision":2,"sort_order":129},"created_at":"2026-07-13 18:05:14"},{"rule_id":"porta-pivo-folga-vidro","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: folga da folha da porta pivotante de vidro (L-8 × H-13, herdada do PA-F-H da origem, a confirmar pro pivô) + faturamento ceil-50.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-pivo-folga-vidro","scope":"porta","title":"Porta pivotante de vidro: folha L-8 × H-13 (folga do frameless), faturada ceil-50","severity":"aviso","status":"validado","source":"Catálogo AL Indústria (AL-1103-A) + PA-F-H do sistema de origem — PraiaMar (Rhuan), 13\/07\/2026","body":"A folha da porta pivotante de vidro é cortada MENOR que o vão, folgando poucos mm em volta pra girar livre: largura = L-8, altura = H-13. Essa folga foi HERDADA do único dado real de porta de vidro frameless que temos, o \"PA-F-H\" do sistema de origem (vão 750×2250 → vidro 742×2237: -8 na largura, -13 na altura) — é a mesma situação física (pano de vidro solto num vão). ATENÇÃO\/pendência: aquele era uma porta de ABRIR; no PIVÔ, a caixa do pivô inferior (AL-1103-A) no piso pode pedir mais folga embaixo — CONFIRMAR o H- com o dono e ajustar no editor se precisar.\n\nFATURAMENTO: o vidro é cobrado por m² arredondando CADA dimensão pra cima ao múltiplo de 50 mm (glass_bill_step=50, como a têmpera fatura) — ex.: corte 892×2087 → faturado 900×2100 = 1,89 m². O CORTE real (892×2087, sem arredondar) é o que vai pra oficina e pro PESO; só o m² do preço arredonda. A folga só afeta o corte e o peso — o preço volta ~pro vão cheio pelo ceil-50.","machine":null,"change_note":"Regra nova: folga da folha da porta pivotante de vidro (L-8 × H-13, herdada do PA-F-H da origem, a confirmar pro pivô) + faturamento ceil-50.","source_kind":"legacy","revision":1,"sort_order":128},"created_at":"2026-07-13 18:04:43"}]},{"id":"peca-codigo-canonico","scope":"catalogo","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","body":"Um código só entra no catálogo se a peça for MESMO uma peça nova. Existem dois casos em que NÃO é, e os dois se resolvem com a tabela de CÓDIGOS EQUIVALENTES (Catálogo › Perfis):\n\n1) MESMA PEÇA, OUTRO CÓDIGO — o sistema de origem chama diferente do que a oficina usa. Cadastrar as duas quebra o catálogo (dois preços, dois pesos, duas fotos da mesma barra), a lista de corte (duas linhas que deviam ser uma) e a compra. Ex.: SU-202 → SU-102 (baguete), FEC-680 → FEC-1029 (fecho concha sem chave), TAMP-SU → TAMP-SU111 (a tampinha carrega o código do montante que ela tampa).\n\n2) SUBSTITUIÇÃO DE COMPRA — a peça existe e é diferente, mas a casa NÃO A USA de propósito: adotá-la significaria mais um código no estoque sem ganho. Ex.: SU-113 (montante com batedeira do lado da baguete) → SU-111. \"Existe, mas não gosto de usar: teria que comprar um perfil a mais sem necessidade.\" A decisão é do DONO — o motor não adivinha isso; ele só obedece à tabela.\n\nNO SOFTCALC: a lista mora em `ref_aliases`, editável em Catálogo › Perfis › Códigos equivalentes. Cadastrar um equivalente CONVERTE o acervo na hora (peças de tipologia e de módulo, com dedupe pra não dobrar quantidade) e passa a barrar o código velho em TODA porta de entrada: no import (sc_wizard_build) e no código digitado na tela (update_typology_part). ACEITE: nenhuma tipologia pode usar um código que esteja cadastrado como equivalente — o check lê a TABELA, então equivalente novo já vale, sem mexer em regra nem em código.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026: \"o SU-202 deve sempre se tornar SU-102\"; \"FEC-1029 é o fecho concha padrão da Suprema sem chave — não precisa duplicar, só converter\"; \"esse SU-113 praticamente não existe… teria que comprar um perfil a mais sem necessidade — o padrão é usar o SU-111, pode converter quando for assim\".","source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Novo equivalente SU-113 → SU-111 (substituição de compra: a casa não abre código novo no estoque sem necessidade). A regra deixa de carregar a lista embutida: o check passa a ser `no_alias_refs`, que lê a tabela ref_aliases — equivalente cadastrado na tel","machine":{"check":"no_alias_refs"},"technical":{"view":"","application":"","parts":["SU-202","SU-102","FEC-680","FEC-1029","TAMP-SU111","SU-113","SU-111"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":129,"updated_at":"2026-07-14 12:33:53","versions":[{"rule_id":"peca-codigo-canonico","revision":3,"source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Novo equivalente SU-113 → SU-111 (substituição de compra: a casa não abre código novo no estoque sem necessidade). A regra deixa de carregar a lista embutida: o check passa a ser `no_alias_refs`, que lê a tabela ref_aliases — equivalente cadastrado na tel","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"peca-codigo-canonico","scope":"catalogo","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026: \"o SU-202 deve sempre se tornar SU-102\"; \"FEC-1029 é o fecho concha padrão da Suprema sem chave — não precisa duplicar, só converter\"; \"esse SU-113 praticamente não existe… teria que comprar um perfil a mais sem necessidade — o padrão é usar o SU-111, pode converter quando for assim\".","source_kind":"owner","body":"Um código só entra no catálogo se a peça for MESMO uma peça nova. Existem dois casos em que NÃO é, e os dois se resolvem com a tabela de CÓDIGOS EQUIVALENTES (Catálogo › Perfis):\n\n1) MESMA PEÇA, OUTRO CÓDIGO — o sistema de origem chama diferente do que a oficina usa. Cadastrar as duas quebra o catálogo (dois preços, dois pesos, duas fotos da mesma barra), a lista de corte (duas linhas que deviam ser uma) e a compra. Ex.: SU-202 → SU-102 (baguete), FEC-680 → FEC-1029 (fecho concha sem chave), TAMP-SU → TAMP-SU111 (a tampinha carrega o código do montante que ela tampa).\n\n2) SUBSTITUIÇÃO DE COMPRA — a peça existe e é diferente, mas a casa NÃO A USA de propósito: adotá-la significaria mais um código no estoque sem ganho. Ex.: SU-113 (montante com batedeira do lado da baguete) → SU-111. \"Existe, mas não gosto de usar: teria que comprar um perfil a mais sem necessidade.\" A decisão é do DONO — o motor não adivinha isso; ele só obedece à tabela.\n\nNO SOFTCALC: a lista mora em `ref_aliases`, editável em Catálogo › Perfis › Códigos equivalentes. Cadastrar um equivalente CONVERTE o acervo na hora (peças de tipologia e de módulo, com dedupe pra não dobrar quantidade) e passa a barrar o código velho em TODA porta de entrada: no import (sc_wizard_build) e no código digitado na tela (update_typology_part). ACEITE: nenhuma tipologia pode usar um código que esteja cadastrado como equivalente — o check lê a TABELA, então equivalente novo já vale, sem mexer em regra nem em código.","machine":{"check":"no_alias_refs"},"change_note":"Novo equivalente SU-113 → SU-111 (substituição de compra: a casa não abre código novo no estoque sem necessidade). A regra deixa de carregar a lista embutida: o check passa a ser `no_alias_refs`, que lê a tabela ref_aliases — equivalente cadastrado na tela já é checado em todas as tipologias.","revision":3,"sort_order":135},"created_at":"2026-07-14 12:33:53"},{"rule_id":"peca-codigo-canonico","revision":2,"source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: código canônico de peça (converter, não duplicar). SU-202→SU-102 e FEC-680→FEC-1029; tabela ref_aliases + sc_ref_canon() no import; check forbidden_refs.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"peca-codigo-canonico","scope":"catalogo","title":"Peça duplicada não se cadastra: código do import vira o código canônico da casa (SU-202→SU-102, FEC-680→FEC-1029)","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026: \"o SU-202 deve sempre se tornar SU-102 (não usamos SU-202)\"; \"FEC-1029 é o fecho concha padrão da Suprema sem chave — não precisa duplicar, só converter\".","source_kind":"owner","body":"A MESMA peça física chega do sistema de origem com códigos diferentes dos que a oficina usa. A regra é CONVERTER na entrada, nunca cadastrar a segunda peça: código duplicado quebra o catálogo (dois preços, dois pesos, duas fotos pra mesma barra), a lista de corte (duas linhas que deviam ser uma) e a compra.\n\nCANÔNICOS CONHECIDOS:\n· SU-202 → SU-102 — baguete de travamento de vidro da Suprema (0,111 kg\/m). É o perfil que está em todas as Supremas (SU-F, SU-JC, SU-M, SU-PC2, SU-PGL1); só a SU-PGL2, importada depois, veio com SU-202. A casa NÃO usa SU-202.\n· FEC-680 → FEC-1029 — fecho concha SEM CHAVE, padrão da Suprema (o com chave é o FEC-1030).\n\nNO SOFTCALC: a lista alias→canônico mora na tabela `ref_aliases` (gerenciável, não hardcodada). O import (sc_wizard_build) passa TODA ref por sc_ref_canon() antes de qualquer coisa — peça, peso, foto e catálogo já nascem com o código certo. Os dados antigos foram convertidos por tools\/migrate_ref_canon.php, que também apagou do catálogo os códigos-alias órfãos. ACEITE: nenhuma tipologia pode ter uma ref que esteja em `ref_aliases` como alias. Alias novo descoberto → cadastrar na tabela, não remendar a tipologia.","machine":{"check":"forbid_refs","refs":["SU-202","FEC-680"],"label":"código-alias (SU-202 \/ FEC-680) — usar SU-102 \/ FEC-1029"},"change_note":"Regra nova: código canônico de peça (converter, não duplicar). SU-202→SU-102 e FEC-680→FEC-1029; tabela ref_aliases + sc_ref_canon() no import; check forbidden_refs.","revision":2,"sort_order":134},"created_at":"2026-07-14 10:31:08"},{"rule_id":"peca-codigo-canonico","revision":1,"source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: código canônico de peça (converter, não duplicar). SU-202→SU-102 e FEC-680→FEC-1029; tabela ref_aliases + sc_ref_canon() no import; check forbidden_refs.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"peca-codigo-canonico","scope":"catalogo","title":"Peça duplicada não se cadastra: código do import vira o código canônico da casa (SU-202→SU-102, FEC-680→FEC-1029)","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026: \"o SU-202 deve sempre se tornar SU-102 (não usamos SU-202)\"; \"FEC-1029 é o fecho concha padrão da Suprema sem chave — não precisa duplicar, só converter\".","source_kind":"owner","body":"A MESMA peça física chega do sistema de origem com códigos diferentes dos que a oficina usa. A regra é CONVERTER na entrada, nunca cadastrar a segunda peça: código duplicado quebra o catálogo (dois preços, dois pesos, duas fotos pra mesma barra), a lista de corte (duas linhas que deviam ser uma) e a compra.\n\nCANÔNICOS CONHECIDOS:\n· SU-202 → SU-102 — baguete de travamento de vidro da Suprema (0,111 kg\/m). É o perfil que está em todas as Supremas (SU-F, SU-JC, SU-M, SU-PC2, SU-PGL1); só a SU-PGL2, importada depois, veio com SU-202. A casa NÃO usa SU-202.\n· FEC-680 → FEC-1029 — fecho concha SEM CHAVE, padrão da Suprema (o com chave é o FEC-1030).\n\nNO SOFTCALC: a lista alias→canônico mora na tabela `ref_aliases` (gerenciável, não hardcodada). O import (sc_wizard_build) passa TODA ref por sc_ref_canon() antes de qualquer coisa — peça, peso, foto e catálogo já nascem com o código certo. Os dados antigos foram convertidos por tools\/migrate_ref_canon.php, que também apagou do catálogo os códigos-alias órfãos. ACEITE: nenhuma tipologia pode ter uma ref que esteja em `ref_aliases` como alias. Alias novo descoberto → cadastrar na tabela, não remendar a tipologia.","machine":{"check":"forbid_refs","refs":["SU-202","FEC-680"],"label":"código-alias (SU-202 \/ FEC-680) — usar SU-102 \/ FEC-1029"},"change_note":"Regra nova: código canônico de peça (converter, não duplicar). SU-202→SU-102 e FEC-680→FEC-1029; tabela ref_aliases + sc_ref_canon() no import; check forbidden_refs.","revision":1,"sort_order":129},"created_at":"2026-07-14 08:25:39"}]},{"id":"porta-giro-travessa-opcional","scope":"porta","title":"Porta de giro: travessa central (SU-227) é OPCIONAL — sem ela, metade das baguetes horizontais","body":"A TRAVESSA CENTRAL horizontal (SU-227, travessa com olhal) parte cada folha da porta de abrir em DOIS panos. Ela é OPCIONAL: em portinhola pequena — do tipo alçapão\/sótão — não se usa travessa, a folha é um pano só (Rhuan, 14\/07\/2026).\n\nO QUE MUDA SEM A TRAVESSA (a cadeia inteira, não só a barra):\n· some a SU-227 (1 por folha);\n· as baguetes HORIZONTAIS caem pela METADE — com travessa cada folha tem 2 panos = 4 baguetes horizontais (2 por pano); sem travessa, 1 pano = 2 baguetes. Na dupla: 8 → 4;\n· as baguetes VERTICAIS NÃO mudam: correm a altura inteira da folha (comprimento H), a travessa não as corta;\n· o painel (vidro\/lâmina) vira um pano só por folha, mais alto, em vez de dois.\n\nNO SOFTCALC: opção 'travessa' [sim|nao], default SIM (é o que veio da ficha de origem — quem faz portinhola desmarca no ato). As peças condicionadas (SU-227 e as baguetes horizontais em duas versões, ×N e ×N\/2) resolvem sozinhas. O DESENHO acompanha: sc_has_crossbar() (store.php) → SC.draw opts.crossbar traça a travessa em cada folha, e ela some quando o vendedor desmarca.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: travessa central da porta de giro é opcional; sem ela cai a SU-227 e metade das baguetes horizontais (as verticais não mudam). Opção travessa[sim|nao] nas SU-PGL1\/SU-PGL2 + travessa no desenho (opts.crossbar).","machine":null,"technical":{"view":"","application":"","parts":["SU-227"],"dimensions":["· as baguetes HORIZONTAIS caem pela METADE — com travessa cada folha tem 2 panos = 4 baguetes horizontais (2 por pano); sem travessa, 1 pano = 2 baguetes."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":3,"sort_order":130,"updated_at":"2026-07-14 11:04:03","versions":[{"rule_id":"porta-giro-travessa-opcional","revision":3,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: travessa central da porta de giro é opcional; sem ela cai a SU-227 e metade das baguetes horizontais (as verticais não mudam). Opção travessa[sim|nao] nas SU-PGL1\/SU-PGL2 + travessa no desenho (opts.crossbar).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-travessa-opcional","scope":"porta","title":"Porta de giro: travessa central (SU-227) é OPCIONAL — sem ela, metade das baguetes horizontais","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"A TRAVESSA CENTRAL horizontal (SU-227, travessa com olhal) parte cada folha da porta de abrir em DOIS panos. Ela é OPCIONAL: em portinhola pequena — do tipo alçapão\/sótão — não se usa travessa, a folha é um pano só (Rhuan, 14\/07\/2026).\n\nO QUE MUDA SEM A TRAVESSA (a cadeia inteira, não só a barra):\n· some a SU-227 (1 por folha);\n· as baguetes HORIZONTAIS caem pela METADE — com travessa cada folha tem 2 panos = 4 baguetes horizontais (2 por pano); sem travessa, 1 pano = 2 baguetes. Na dupla: 8 → 4;\n· as baguetes VERTICAIS NÃO mudam: correm a altura inteira da folha (comprimento H), a travessa não as corta;\n· o painel (vidro\/lâmina) vira um pano só por folha, mais alto, em vez de dois.\n\nNO SOFTCALC: opção 'travessa' [sim|nao], default SIM (é o que veio da ficha de origem — quem faz portinhola desmarca no ato). As peças condicionadas (SU-227 e as baguetes horizontais em duas versões, ×N e ×N\/2) resolvem sozinhas. O DESENHO acompanha: sc_has_crossbar() (store.php) → SC.draw opts.crossbar traça a travessa em cada folha, e ela some quando o vendedor desmarca.","machine":null,"change_note":"Regra nova: travessa central da porta de giro é opcional; sem ela cai a SU-227 e metade das baguetes horizontais (as verticais não mudam). Opção travessa[sim|nao] nas SU-PGL1\/SU-PGL2 + travessa no desenho (opts.crossbar).","source_kind":"legacy","revision":3,"sort_order":134},"created_at":"2026-07-14 11:04:03"},{"rule_id":"porta-giro-travessa-opcional","revision":2,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: travessa central da porta de giro é opcional; sem ela cai a SU-227 e metade das baguetes horizontais (as verticais não mudam). Opção travessa[sim|nao] nas SU-PGL1\/SU-PGL2 + travessa no desenho (opts.crossbar).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-travessa-opcional","scope":"porta","title":"Porta de giro: travessa central (SU-227) é OPCIONAL — sem ela, metade das baguetes horizontais","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"A TRAVESSA CENTRAL horizontal (SU-227, travessa com olhal) parte cada folha da porta de abrir em DOIS panos. Ela é OPCIONAL: em portinhola pequena — do tipo alçapão\/sótão — não se usa travessa, a folha é um pano só (Rhuan, 14\/07\/2026).\n\nO QUE MUDA SEM A TRAVESSA (a cadeia inteira, não só a barra):\n· some a SU-227 (1 por folha);\n· as baguetes HORIZONTAIS caem pela METADE — com travessa cada folha tem 2 panos = 4 baguetes horizontais (2 por pano); sem travessa, 1 pano = 2 baguetes. Na dupla: 8 → 4;\n· as baguetes VERTICAIS NÃO mudam: correm a altura inteira da folha (comprimento H), a travessa não as corta;\n· o painel (vidro\/lâmina) vira um pano só por folha, mais alto, em vez de dois.\n\nNO SOFTCALC: opção 'travessa' [sim|nao], default SIM (é o que veio da ficha de origem — quem faz portinhola desmarca no ato). As peças condicionadas (SU-227 e as baguetes horizontais em duas versões, ×N e ×N\/2) resolvem sozinhas. O DESENHO acompanha: sc_has_crossbar() (store.php) → SC.draw opts.crossbar traça a travessa em cada folha, e ela some quando o vendedor desmarca.","machine":null,"change_note":"Regra nova: travessa central da porta de giro é opcional; sem ela cai a SU-227 e metade das baguetes horizontais (as verticais não mudam). Opção travessa[sim|nao] nas SU-PGL1\/SU-PGL2 + travessa no desenho (opts.crossbar).","source_kind":"legacy","revision":2,"sort_order":134},"created_at":"2026-07-14 10:27:03"},{"rule_id":"porta-giro-travessa-opcional","revision":1,"source_kind":"legacy","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: travessa central da porta de giro é opcional; sem ela cai a SU-227 e metade das baguetes horizontais (as verticais não mudam). Opção travessa[sim|nao] nas SU-PGL1\/SU-PGL2 + travessa no desenho (opts.crossbar).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-travessa-opcional","scope":"porta","title":"Porta de giro: travessa central (SU-227) é OPCIONAL — sem ela, metade das baguetes horizontais","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 13 e 14\/07\/2026","body":"A TRAVESSA CENTRAL horizontal (SU-227, travessa com olhal) parte cada folha da porta de abrir em DOIS panos. Ela é OPCIONAL: em portinhola pequena — do tipo alçapão\/sótão — não se usa travessa, a folha é um pano só (Rhuan, 14\/07\/2026).\n\nO QUE MUDA SEM A TRAVESSA (a cadeia inteira, não só a barra):\n· some a SU-227 (1 por folha);\n· as baguetes HORIZONTAIS caem pela METADE — com travessa cada folha tem 2 panos = 4 baguetes horizontais (2 por pano); sem travessa, 1 pano = 2 baguetes. Na dupla: 8 → 4;\n· as baguetes VERTICAIS NÃO mudam: correm a altura inteira da folha (comprimento H), a travessa não as corta;\n· o painel (vidro\/lâmina) vira um pano só por folha, mais alto, em vez de dois.\n\nNO SOFTCALC: opção 'travessa' [sim|nao], default SIM (é o que veio da ficha de origem — quem faz portinhola desmarca no ato). As peças condicionadas (SU-227 e as baguetes horizontais em duas versões, ×N e ×N\/2) resolvem sozinhas. O DESENHO acompanha: sc_has_crossbar() (store.php) → SC.draw opts.crossbar traça a travessa em cada folha, e ela some quando o vendedor desmarca.","machine":null,"change_note":"Regra nova: travessa central da porta de giro é opcional; sem ela cai a SU-227 e metade das baguetes horizontais (as verticais não mudam). Opção travessa[sim|nao] nas SU-PGL1\/SU-PGL2 + travessa no desenho (opts.crossbar).","source_kind":"legacy","revision":1,"sort_order":130},"created_at":"2026-07-14 08:33:22"}]},{"id":"modulo-so-para-peca-compartilhada","scope":"sistema","title":"Módulo é só pra peça COMPARTILHADA; peça exclusiva de uma tipologia mora na tipologia (include_when)","body":"Uma variante de escolha (Preenchimento = veneziana lisa \/ furada \/ lambril) traz PEÇAS. Elas podem ser declaradas em dois lugares, e a escolha errada esconde a peça de quem edita:\n\n· MÓDULO — conjunto de peças REUSADO por várias tipologias (contramarco CM-063, arremate MP-347: mesma peça, mesma fórmula, em várias esquadrias). Muda num lugar, vale em todas. A peça NÃO aparece na tabela de Perfis da tipologia (ela não é da tipologia, é do módulo) — aparece no painel de Escolhas, marcada \"módulo\".\n· PEÇA DA TIPOLOGIA + `include_when` — quando a fórmula é EXCLUSIVA daquela esquadria (a lâmina da porta de 2 folhas mede pela folha DELA: ((L-294)\/2)−4). Aí o módulo não reusa nada, só esconde a peça do editor.\n\nREGRA: fórmula exclusiva → peça na tipologia. Só vira módulo o que MAIS DE UMA tipologia usa. Foi o que denunciou a incoerência da SU-PGL2: o lambril Y-335 (peça) aparecia na lista de perfis e as venezianas US-294\/VZ-051 (módulos) não — mesmo papel, dois lugares.\n\nCOROLÁRIO (o que pode entrar numa variante): QUALQUER perfil ou componente do catálogo — a variante não tem lista fechada. No editor, o botão \"🔎 perfil\" \/ \"+ comp.\" dentro da escolha busca o catálogo inteiro. Peça nova que só essa esquadria usa entra ali mesmo, com a fórmula dela.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026: \"por que nos preenchimentos tem o lambril e não tem as VZ?\"","source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: módulo só pra peça compartilhada entre tipologias; peça de fórmula exclusiva mora na tipologia com include_when. Venezianas US-294\/VZ-051 das SU-PGL1\/SU-PGL2 saíram dos módulos e viraram peças (aparecem na tabela de Perfis, como o lambril).","machine":null,"technical":{"view":"","application":"","parts":["CM-063","MP-347","L-294","SU-PGL2","Y-335","US-294","VZ-051"],"dimensions":["Uma variante de escolha (Preenchimento = veneziana lisa \/ furada \/ lambril) traz PEÇAS.","((L-294)\/2)−4)."],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":131,"updated_at":"2026-07-14 09:44:49","versions":[{"rule_id":"modulo-so-para-peca-compartilhada","revision":1,"source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: módulo só pra peça compartilhada entre tipologias; peça de fórmula exclusiva mora na tipologia com include_when. Venezianas US-294\/VZ-051 das SU-PGL1\/SU-PGL2 saíram dos módulos e viraram peças (aparecem na tabela de Perfis, como o lambril).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"modulo-so-para-peca-compartilhada","scope":"sistema","title":"Módulo é só pra peça COMPARTILHADA; peça exclusiva de uma tipologia mora na tipologia (include_when)","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026: \"por que nos preenchimentos tem o lambril e não tem as VZ?\"","source_kind":"owner","body":"Uma variante de escolha (Preenchimento = veneziana lisa \/ furada \/ lambril) traz PEÇAS. Elas podem ser declaradas em dois lugares, e a escolha errada esconde a peça de quem edita:\n\n· MÓDULO — conjunto de peças REUSADO por várias tipologias (contramarco CM-063, arremate MP-347: mesma peça, mesma fórmula, em várias esquadrias). Muda num lugar, vale em todas. A peça NÃO aparece na tabela de Perfis da tipologia (ela não é da tipologia, é do módulo) — aparece no painel de Escolhas, marcada \"módulo\".\n· PEÇA DA TIPOLOGIA + `include_when` — quando a fórmula é EXCLUSIVA daquela esquadria (a lâmina da porta de 2 folhas mede pela folha DELA: ((L-294)\/2)−4). Aí o módulo não reusa nada, só esconde a peça do editor.\n\nREGRA: fórmula exclusiva → peça na tipologia. Só vira módulo o que MAIS DE UMA tipologia usa. Foi o que denunciou a incoerência da SU-PGL2: o lambril Y-335 (peça) aparecia na lista de perfis e as venezianas US-294\/VZ-051 (módulos) não — mesmo papel, dois lugares.\n\nCOROLÁRIO (o que pode entrar numa variante): QUALQUER perfil ou componente do catálogo — a variante não tem lista fechada. No editor, o botão \"🔎 perfil\" \/ \"+ comp.\" dentro da escolha busca o catálogo inteiro. Peça nova que só essa esquadria usa entra ali mesmo, com a fórmula dela.","machine":null,"change_note":"Regra nova: módulo só pra peça compartilhada entre tipologias; peça de fórmula exclusiva mora na tipologia com include_when. Venezianas US-294\/VZ-051 das SU-PGL1\/SU-PGL2 saíram dos módulos e viraram peças (aparecem na tabela de Perfis, como o lambril).","revision":1,"sort_order":131},"created_at":"2026-07-14 09:44:49"}]},{"id":"tampinha-tampsu-e-do-su111","scope":"suprema","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","body":"A TAMPINHA DE ACABAMENTO é a ponteira que fecha o TOPO de um montante — a seção dela é a seção DELE. Não existe \"a tampinha da Suprema\": existe a tampinha DE CADA PERFIL. Por isso o código carrega o perfil:\n\n· TAMP-SU111 (R$ 10\/un) — ponteira do topo do SU-111 (montante da folha da porta\/portinhola de abrir sem batedeira). É a que as SU-PGL1\/SU-PGL2 usam.\n· A ponteira de outro montante (SU-113, SU-110…) é OUTRA peça: cadastrar como TAMP-SU113 etc., com o preço dela. NUNCA reaproveitar o código de uma no lugar da outra — o cadastro colide e a compra pede a peça errada.\n\nREGRA CHECÁVEL: tipologia que usa TAMP-SU111 TEM que ter SU-111 nas peças (tampinha sem o montante dela é peça órfã: cobra R$ 10 de uma ponteira que não encaixa em nada). O contrário é livre — porta com SU-111 não precisa levar tampinha, ela é OPCIONAL (\"geralmente em peça pequena, ou eu escolho\").\n\nQUANTIDADE: nos topos superiores — 4 na dupla (2 folhas × 2), 2 na simples. Não abate peso (ponteira de polímero). PENDÊNCIA: TAMP-SU111 é código da casa (placeholder) — quando vier o código real do fornecedor, renomear no catálogo. O código velho TAMP-SU virou alias e converte sozinho.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026: \"essa tampa existe várias, esse modelo é específico da SU-111\"","source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Código da tampinha passa a carregar o perfil (TAMP-SU → TAMP-SU111): existe uma tampinha por montante, e o código genérico colidiria com a do SU-113 e afins. Alias do código velho registrado; check implies_refs atualizado.","machine":{"if":["TAMP-SU111"],"then":["SU-111"],"check":"implies_refs","because":"a tampinha é a ponteira do topo do SU-111"},"technical":{"view":"","application":"","parts":["TAMP-SU111","SU-111","SU-PGL1","SU-PGL2","SU-113","SU-110","TAMP-SU113"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":132,"updated_at":"2026-07-14 10:26:52","versions":[{"rule_id":"tampinha-tampsu-e-do-su111","revision":2,"source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Código da tampinha passa a carregar o perfil (TAMP-SU → TAMP-SU111): existe uma tampinha por montante, e o código genérico colidiria com a do SU-113 e afins. Alias do código velho registrado; check implies_refs atualizado.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"tampinha-tampsu-e-do-su111","scope":"suprema","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026: \"essa tampa existe várias, esse modelo é específico da SU-111\"","source_kind":"owner","body":"A TAMPINHA DE ACABAMENTO é a ponteira que fecha o TOPO de um montante — a seção dela é a seção DELE. Não existe \"a tampinha da Suprema\": existe a tampinha DE CADA PERFIL. Por isso o código carrega o perfil:\n\n· TAMP-SU111 (R$ 10\/un) — ponteira do topo do SU-111 (montante da folha da porta\/portinhola de abrir sem batedeira). É a que as SU-PGL1\/SU-PGL2 usam.\n· A ponteira de outro montante (SU-113, SU-110…) é OUTRA peça: cadastrar como TAMP-SU113 etc., com o preço dela. NUNCA reaproveitar o código de uma no lugar da outra — o cadastro colide e a compra pede a peça errada.\n\nREGRA CHECÁVEL: tipologia que usa TAMP-SU111 TEM que ter SU-111 nas peças (tampinha sem o montante dela é peça órfã: cobra R$ 10 de uma ponteira que não encaixa em nada). O contrário é livre — porta com SU-111 não precisa levar tampinha, ela é OPCIONAL (\"geralmente em peça pequena, ou eu escolho\").\n\nQUANTIDADE: nos topos superiores — 4 na dupla (2 folhas × 2), 2 na simples. Não abate peso (ponteira de polímero). PENDÊNCIA: TAMP-SU111 é código da casa (placeholder) — quando vier o código real do fornecedor, renomear no catálogo. O código velho TAMP-SU virou alias e converte sozinho.","machine":{"check":"implies_refs","if":["TAMP-SU111"],"then":["SU-111"],"because":"a tampinha é a ponteira do topo do SU-111"},"change_note":"Código da tampinha passa a carregar o perfil (TAMP-SU → TAMP-SU111): existe uma tampinha por montante, e o código genérico colidiria com a do SU-113 e afins. Alias do código velho registrado; check implies_refs atualizado.","revision":2,"sort_order":134},"created_at":"2026-07-14 10:26:52"},{"rule_id":"tampinha-tampsu-e-do-su111","revision":1,"source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova (Rhuan, 14\/07\/2026): \"a tampinha TAMP-SU é específica pra SU-111\". Check novo implies_refs (usa X → precisa de Y, mão única) + descrição do componente amarrada ao montante.","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"tampinha-tampsu-e-do-su111","scope":"suprema","title":"Tampinha TAMP-SU é a ponteira do topo do SU-111 — não existe sem ele","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026","source_kind":"owner","body":"A TAMPINHA DE ACABAMENTO (TAMP-SU, R$ 10\/un) é a ponteira que fecha o TOPO do montante SU-111 (montante horizontal\/vertical da porta\/portinhola de abrir sem batedeira). Ela é feita PRA ELE: é a seção do SU-111 que ela tampa. Logo:\n\n· tipologia que usa TAMP-SU TEM que ter SU-111 — tampinha sem o montante dela é peça órfã no orçamento (cobra R$ 10 de uma ponteira que não encaixa em nada);\n· o contrário é livre: porta com SU-111 NÃO precisa levar tampinha (é opcional — \"geralmente em peça pequena, ou eu escolho\").\n\nQUANTIDADE: nos topos superiores — 4 na dupla (2 folhas × 2), 2 na simples. APLICAÇÃO: acabamento visível; não abate peso (é ponteira de polímero). Se um dia entrar outro montante de folha (SU-113 e afins), a tampinha dele é OUTRA peça — cadastrar com o código próprio, não reaproveitar a TAMP-SU.\n\nNO SOFTCALC: opção 'tampinha' [nao|sim] nas portas de giro; o check automático (implies_refs) reprova qualquer tipologia que ofereça TAMP-SU sem ter SU-111 nas peças.","machine":{"check":"implies_refs","if":["TAMP-SU"],"then":["SU-111"],"because":"a tampinha é a ponteira do topo do SU-111"},"change_note":"Regra nova (Rhuan, 14\/07\/2026): \"a tampinha TAMP-SU é específica pra SU-111\". Check novo implies_refs (usa X → precisa de Y, mão única) + descrição do componente amarrada ao montante.","revision":1,"sort_order":132},"created_at":"2026-07-14 09:47:17"}]},{"id":"ferragem-segue-o-tipo-de-abertura","scope":"sistema","title":"A ferragem segue o TIPO DE ABERTURA — a tela do giro não oferece ferragem de correr","body":"Cada tipo de abertura (kind) tem a SUA ferragem, e a tela só pode oferecer a que a esquadria realmente usa. Oferecer a do vizinho não é só feio: convida o vendedor a configurar peça que não encaixa, e o orçamento sai com ferragem impossível.\n\n· CORRER (sliding, e o box, que é correr) — a folha desliza: ferragem POR FOLHA (concha na base da folha, chave\/trava opcional, puxador), estilo de correr (sequencial × central), roldana, trilho. É o `leaf_hardware` da tipologia, que habilita o painel de folhas do orçamento (marcar cada folha como corre\/fixa, com trava, com puxador).\n· GIRO (hinged) — a folha gira na dobradiça: NADA de concha, trilho, roldana ou \"estilo de correr\". A ferragem é dobradiça + trava, e a trava são três escolhas independentes (fechadura FRA822 + maçaneta MAC927 · tranqueta TRQ-GIRO ×N · ferrolho FER-GIRO na folha passiva da dupla) — ver a regra porta-giro-tranqueta-fechadura-ferrolho.\n· PIVOTANTE (pivot) — gira no eixo: pino\/pivô + fechadura\/puxador; sem concha e sem trilho.\n· MAXIM-AR (awning) — projeta: braço\/fecho punho.\n· FIXO \/ peça de vidro — sem ferragem de abertura (só recebimento: U, baguete, guarnição).\n\nNO SOFTCALC: o card \"Folhas que correm\" (editor de tipologia) só aparece em kind `sliding` — ou em tipologia que já tenha `leaf_hardware` gravado, pra dar pra desligar. Na porta de giro ele sumiu: a ferragem dela mora nas Escolhas. REGRA GERAL pra tipo novo: antes de expor um controle de ferragem, perguntar se aquele MOVIMENTO existe naquela abertura.","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026","source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova (Rhuan, 14\/07\/2026): \"quando for de giro, mesmo assim precisa ter essas opções de folhas de correr\/abrir?\" — não. Card de folhas de correr passou a aparecer só em kind sliding (ou com leaf_hardware legado).","machine":null,"technical":{"view":"","application":"","parts":["FRA822","MAC927"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":1,"sort_order":133,"updated_at":"2026-07-14 09:47:17","versions":[{"rule_id":"ferragem-segue-o-tipo-de-abertura","revision":1,"source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova (Rhuan, 14\/07\/2026): \"quando for de giro, mesmo assim precisa ter essas opções de folhas de correr\/abrir?\" — não. Card de folhas de correr passou a aparecer só em kind sliding (ou com leaf_hardware legado).","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"ferragem-segue-o-tipo-de-abertura","scope":"sistema","title":"A ferragem segue o TIPO DE ABERTURA — a tela do giro não oferece ferragem de correr","severity":"aviso","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026","source_kind":"owner","body":"Cada tipo de abertura (kind) tem a SUA ferragem, e a tela só pode oferecer a que a esquadria realmente usa. Oferecer a do vizinho não é só feio: convida o vendedor a configurar peça que não encaixa, e o orçamento sai com ferragem impossível.\n\n· CORRER (sliding, e o box, que é correr) — a folha desliza: ferragem POR FOLHA (concha na base da folha, chave\/trava opcional, puxador), estilo de correr (sequencial × central), roldana, trilho. É o `leaf_hardware` da tipologia, que habilita o painel de folhas do orçamento (marcar cada folha como corre\/fixa, com trava, com puxador).\n· GIRO (hinged) — a folha gira na dobradiça: NADA de concha, trilho, roldana ou \"estilo de correr\". A ferragem é dobradiça + trava, e a trava são três escolhas independentes (fechadura FRA822 + maçaneta MAC927 · tranqueta TRQ-GIRO ×N · ferrolho FER-GIRO na folha passiva da dupla) — ver a regra porta-giro-tranqueta-fechadura-ferrolho.\n· PIVOTANTE (pivot) — gira no eixo: pino\/pivô + fechadura\/puxador; sem concha e sem trilho.\n· MAXIM-AR (awning) — projeta: braço\/fecho punho.\n· FIXO \/ peça de vidro — sem ferragem de abertura (só recebimento: U, baguete, guarnição).\n\nNO SOFTCALC: o card \"Folhas que correm\" (editor de tipologia) só aparece em kind `sliding` — ou em tipologia que já tenha `leaf_hardware` gravado, pra dar pra desligar. Na porta de giro ele sumiu: a ferragem dela mora nas Escolhas. REGRA GERAL pra tipo novo: antes de expor um controle de ferragem, perguntar se aquele MOVIMENTO existe naquela abertura.","machine":null,"change_note":"Regra nova (Rhuan, 14\/07\/2026): \"quando for de giro, mesmo assim precisa ter essas opções de folhas de correr\/abrir?\" — não. Card de folhas de correr passou a aparecer só em kind sliding (ou com leaf_hardware legado).","revision":1,"sort_order":133},"created_at":"2026-07-14 09:47:17"}]},{"id":"porta-giro-completa","scope":"porta","title":"Porta de giro completa: marco + folha + DOBRADIÇA + trava (a dobradiça é o que faz a porta abrir)","body":"Toda porta\/portinhola de ABRIR (kind hinged) tem, no mínimo:\n\n· MARCO (SU-279) — o quadro fixo no vão;\n· FOLHA — o quadro que gira: montante horizontal superior (SU-110), inferior (SU-225) e DOIS montantes verticais (SU-111) POR FOLHA, fechados com macho-e-cunha (CL-006\/CL-011) nos cantos;\n· DOBRADIÇA (SD-2530) — é ELA que faz a porta girar. 3 por folha (6 na dupla). Porta sem dobradiça não abre: se o BOM não tem, o BOM está errado (foi o caso da SU-PGL2, importada sem nenhuma);\n· TRAVA — fechadura (FRA822) OU pelo menos uma tranqueta (TRQ-GIRO). Ver porta-giro-tranqueta-fechadura-ferrolho;\n· CONTRAMARCO + ARREMATE — toda esquadria Suprema leva moldura (ver contramarco-arremate-padrao);\n· FITA VEDADORA (FIT-200) no marco e CONTRA-TESTA (CON-295) junto da fechadura.\n\nO QUE ESCALA POR FOLHA (a dupla é a simples ×2): montante vertical (2\/folha), macho-e-cunha, dobradiça (3\/folha), montante superior\/inferior e travessa (1\/folha), tampinha (2\/folha). O QUE NÃO ESCALA (mede o VÃO, não a folha): marco, contramarco, arremate, fita, fechadura\/contra-testa, ferrolho. Só a DUPLA tem mata-junta (SU-084) e ferrolho (folha passiva).\n\nPROCEDIMENTO (vale pra todo implemento, não só pra porta): tipologia nova ou importada NÃO é conferida só contra a ficha de origem — é conferida contra a FAMÍLIA dela. Fichas do sistema de origem vêm incompletas e cada uma traz um pedaço: a SU-PGL2 tinha contra-testa e não tinha dobradiça; a SU-PGL1, o contrário. Gabarito: tools\/audit_porta_giro_familia.php.","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026 (auditoria da família SU-PGL1 × SU-PGL2)","source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: porta de giro precisa de marco, folha, DOBRADIÇA e trava — a SU-PGL2 foi importada sem dobradiça (não abria) e sem contramarco\/arremate, 31% abaixo do custo. Check requires_groups aplicado a todo kind hinged; procedimento: conferir tipologia n","machine":{"check":"requires_groups","groups":[{"label":"dobradiça","patterns":["SD-2530","DOB*"]},{"label":"marco","patterns":["SU-279","CM-*","Y-721"]},{"label":"montante da folha (SU-111)","patterns":["SU-111"]},{"label":"trava (fechadura ou tranqueta)","patterns":["FRA*","TRQ*"]}],"applies":{"kind":["hinged"]}},"technical":{"view":"","application":"","parts":["SD-2530","DOB*","SU-279","CM-*","Y-721","SU-111","FRA*","TRQ*","SU-110","SU-225","CL-006","CL-011","SU-PGL2","FRA822","FIT-200","CON-295","SU-084","SU-PGL1"],"dimensions":[],"steps":[],"acceptance":[],"exceptions":[],"source_pages":[],"geometry":[]},"supersedes_id":null,"enabled":true,"revision":2,"sort_order":134,"updated_at":"2026-07-14 12:34:16","versions":[{"rule_id":"porta-giro-completa","revision":2,"source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: porta de giro precisa de marco, folha, DOBRADIÇA e trava — a SU-PGL2 foi importada sem dobradiça (não abria) e sem contramarco\/arremate, 31% abaixo do custo. Check requires_groups aplicado a todo kind hinged; procedimento: conferir tipologia n","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-completa","scope":"porta","title":"Porta de giro completa: marco + folha + DOBRADIÇA + trava (a dobradiça é o que faz a porta abrir)","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026 (auditoria da família SU-PGL1 × SU-PGL2)","source_kind":"owner","body":"Toda porta\/portinhola de ABRIR (kind hinged) tem, no mínimo:\n\n· MARCO (SU-279) — o quadro fixo no vão;\n· FOLHA — o quadro que gira: montante horizontal superior (SU-110), inferior (SU-225) e DOIS montantes verticais (SU-111) POR FOLHA, fechados com macho-e-cunha (CL-006\/CL-011) nos cantos;\n· DOBRADIÇA (SD-2530) — é ELA que faz a porta girar. 3 por folha (6 na dupla). Porta sem dobradiça não abre: se o BOM não tem, o BOM está errado (foi o caso da SU-PGL2, importada sem nenhuma);\n· TRAVA — fechadura (FRA822) OU pelo menos uma tranqueta (TRQ-GIRO). Ver porta-giro-tranqueta-fechadura-ferrolho;\n· CONTRAMARCO + ARREMATE — toda esquadria Suprema leva moldura (ver contramarco-arremate-padrao);\n· FITA VEDADORA (FIT-200) no marco e CONTRA-TESTA (CON-295) junto da fechadura.\n\nO QUE ESCALA POR FOLHA (a dupla é a simples ×2): montante vertical (2\/folha), macho-e-cunha, dobradiça (3\/folha), montante superior\/inferior e travessa (1\/folha), tampinha (2\/folha). O QUE NÃO ESCALA (mede o VÃO, não a folha): marco, contramarco, arremate, fita, fechadura\/contra-testa, ferrolho. Só a DUPLA tem mata-junta (SU-084) e ferrolho (folha passiva).\n\nPROCEDIMENTO (vale pra todo implemento, não só pra porta): tipologia nova ou importada NÃO é conferida só contra a ficha de origem — é conferida contra a FAMÍLIA dela. Fichas do sistema de origem vêm incompletas e cada uma traz um pedaço: a SU-PGL2 tinha contra-testa e não tinha dobradiça; a SU-PGL1, o contrário. Gabarito: tools\/audit_porta_giro_familia.php.","machine":{"check":"requires_groups","applies":{"kind":["hinged"]},"groups":[{"label":"dobradiça","patterns":["SD-2530","DOB*"]},{"label":"marco","patterns":["SU-279","CM-*","Y-721"]},{"label":"montante da folha (SU-111)","patterns":["SU-111"]},{"label":"trava (fechadura ou tranqueta)","patterns":["FRA*","TRQ*"]}]},"change_note":"Regra nova: porta de giro precisa de marco, folha, DOBRADIÇA e trava — a SU-PGL2 foi importada sem dobradiça (não abria) e sem contramarco\/arremate, 31% abaixo do custo. Check requires_groups aplicado a todo kind hinged; procedimento: conferir tipologia nova contra a FAMÍLIA, não só contra a ficha de origem.","revision":2,"sort_order":135},"created_at":"2026-07-14 12:34:16"},{"rule_id":"porta-giro-completa","revision":1,"source_kind":"owner","author_type":"claude","author_name":"Claude (Opus 4.8)","change_note":"Regra nova: porta de giro precisa de marco, folha, DOBRADIÇA e trava — a SU-PGL2 foi importada sem dobradiça (não abria) e sem contramarco\/arremate, 31% abaixo do custo. Check requires_groups aplicado a todo kind hinged; procedimento: conferir tipologia n","snapshot":{"author_type":"claude","author_name":"Claude (Opus 4.8)","id":"porta-giro-completa","scope":"porta","title":"Porta de giro completa: marco + folha + DOBRADIÇA + trava (a dobradiça é o que faz a porta abrir)","severity":"erro","status":"validado","source":"PraiaMar (Rhuan) — 14\/07\/2026 (auditoria da família SU-PGL1 × SU-PGL2)","source_kind":"owner","body":"Toda porta\/portinhola de ABRIR (kind hinged) tem, no mínimo:\n\n· MARCO (SU-279) — o quadro fixo no vão;\n· FOLHA — o quadro que gira: montante horizontal superior (SU-110), inferior (SU-225) e DOIS montantes verticais (SU-111) POR FOLHA, fechados com macho-e-cunha (CL-006\/CL-011) nos cantos;\n· DOBRADIÇA (SD-2530) — é ELA que faz a porta girar. 3 por folha (6 na dupla). Porta sem dobradiça não abre: se o BOM não tem, o BOM está errado (foi o caso da SU-PGL2, importada sem nenhuma);\n· TRAVA — fechadura (FRA822) OU pelo menos uma tranqueta (TRQ-GIRO). Ver porta-giro-tranqueta-fechadura-ferrolho;\n· CONTRAMARCO + ARREMATE — toda esquadria Suprema leva moldura (ver contramarco-arremate-padrao);\n· FITA VEDADORA (FIT-200) no marco e CONTRA-TESTA (CON-295) junto da fechadura.\n\nO QUE ESCALA POR FOLHA (a dupla é a simples ×2): montante vertical (2\/folha), macho-e-cunha, dobradiça (3\/folha), montante superior\/inferior e travessa (1\/folha), tampinha (2\/folha). O QUE NÃO ESCALA (mede o VÃO, não a folha): marco, contramarco, arremate, fita, fechadura\/contra-testa, ferrolho. Só a DUPLA tem mata-junta (SU-084) e ferrolho (folha passiva).\n\nPROCEDIMENTO (vale pra todo implemento, não só pra porta): tipologia nova ou importada NÃO é conferida só contra a ficha de origem — é conferida contra a FAMÍLIA dela. Fichas do sistema de origem vêm incompletas e cada uma traz um pedaço: a SU-PGL2 tinha contra-testa e não tinha dobradiça; a SU-PGL1, o contrário. Gabarito: tools\/audit_porta_giro_familia.php.","machine":{"check":"requires_groups","applies":{"kind":["hinged"]},"groups":[{"label":"dobradiça","patterns":["SD-2530","DOB*"]},{"label":"marco","patterns":["SU-279","CM-*","Y-721"]},{"label":"montante da folha","patterns":["SU-111","SU-113"]},{"label":"trava (fechadura ou tranqueta)","patterns":["FRA*","TRQ*"]}]},"change_note":"Regra nova: porta de giro precisa de marco, folha, DOBRADIÇA e trava — a SU-PGL2 foi importada sem dobradiça (não abria) e sem contramarco\/arremate, 31% abaixo do custo. Check requires_groups aplicado a todo kind hinged; procedimento: conferir tipologia nova contra a FAMÍLIA, não só contra a ficha de origem.","revision":1,"sort_order":134},"created_at":"2026-07-14 11:12:40"}]}],"audits":{"SU-JPV":{"name":"Janela pivotante com vidro","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"porta-pivo-ferragem","title":"Porta pivotante de vidro: pivô é KIT (cima+baixo, 1 preço) — cromado R$ 104 · branco\/preto R$ 90","severity":"aviso","status":"falha","message":"Falta: kit de pivô (cima+baixo)."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":1},"SU-JC":{"name":"Janela de correr 2 folhas para receber vidros com baguetes…","findings":[{"rule_id":"correr-canaletas-iguais","title":"Trilho sup\/inf com o MESMO nº de canaletas — janela","severity":"erro","status":"ok","message":"Trilhos superior e inferior combinam."},{"rule_id":"correr-mao-amiga","title":"Mão de amigo no centro: o par certo por tipo (janela × porta)","severity":"erro","status":"ok","message":"Encontro central da mão-amiga com o par certo (aba + escova da mesma classe)."},{"rule_id":"correr-travessa-central","title":"Travessa central precisa de abas dos DOIS lados","severity":"erro","status":"ok","message":"Nenhum perfil de folha condicionado como travessa central."},{"rule_id":"correr-componentes-basicos","title":"Componentes básicos do correr não podem faltar","severity":"aviso","status":"ok","message":"Todos os componentes básicos presentes."},{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (as fórmulas desta tipologia já usam)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"SU-PGL1":{"name":"Porta de abrir (giro)","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (as fórmulas desta tipologia já usam)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"TAMP-SU111 com SU-111 presente."},{"rule_id":"porta-giro-completa","title":"Porta de giro completa: marco + folha + DOBRADIÇA + trava (a dobradiça é o que faz a porta abrir)","severity":"erro","status":"ok","message":"Todos os componentes básicos presentes."}],"errors":0,"warnings":0},"SU-PC33":{"name":"Porta de correr 3 folhas sendo as 3 de correr, sem travessa…","findings":[{"rule_id":"correr-canaletas-iguais-porta","title":"Trilho sup\/inf com o MESMO nº de canaletas — porta","severity":"erro","status":"ok","message":"Trilhos superior e inferior combinam."},{"rule_id":"correr-mao-amiga","title":"Mão de amigo no centro: o par certo por tipo (janela × porta)","severity":"erro","status":"falha","message":"Usa SU-049 (escova\/porta) mas não o par SU-047 (aba\/porta); mistura o par leve da janela (SU-040\/041) com o pesado da porta (SU-047\/049) — não encaixam."},{"rule_id":"correr-travessa-central","title":"Travessa central precisa de abas dos DOIS lados","severity":"erro","status":"ok","message":"Nenhum perfil de folha condicionado como travessa central."},{"rule_id":"correr-componentes-basicos","title":"Componentes básicos do correr não podem faltar","severity":"aviso","status":"ok","message":"Todos os componentes básicos presentes."},{"rule_id":"correr-porta-puxador","title":"Porta de correr oferece puxador opcional (ligado a um componente)","severity":"aviso","status":"ok","message":"Todos os componentes básicos presentes."},{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":1,"warnings":0},"SU-M":{"name":"Maxim-ar modular na horizontal e vertical, com fechos punho…","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"CV-PC1F":{"name":"Box F1","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"box-kit-makit-padrao","title":"Kit MAKIT é o padrão; linha AL só quando o cliente pedir","severity":"aviso","status":"ok","message":"Grade de preço presente pra: MK-F1, MKR-F1."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"ty_gcpan":{"name":"Guarda-corpo Panorâmico","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"panorama-estrutura-prumos","title":"Panorama: estrutura de prumos discretos, não base corrida","severity":"erro","status":"ok","message":"Presentes: CG-083, CG-074, CG-077, CG-075."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"BX-C1":{"name":"Box C1 — canto, 2 fixos + 2 portas de correr","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"CV-PCV2":{"name":"Porta de correr de vidro — 1 correr + 1 fixo","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"correr-vidro-kit-grade","title":"Kit por LARGURA × ALTURA; altura acima do kit → U de recebimento (não trava)","severity":"aviso","status":"ok","message":"Grade de preço presente pra: K1."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"BX-FP":{"name":"Box fora do padrão — 1 porta + 1 fixo (sob medida)","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"correr-vidro-kit-grade","title":"Kit por LARGURA × ALTURA; altura acima do kit → U de recebimento (não trava)","severity":"aviso","status":"ok","message":"Grade de preço presente pra: MK-F1, MKR-F1."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"SU-JCL":{"name":"Janela veneziana de correr 2 folhas com fechos tipo concha…","findings":[{"rule_id":"correr-canaletas-iguais","title":"Trilho sup\/inf com o MESMO nº de canaletas — janela","severity":"erro","status":"ok","message":"Trilhos superior e inferior combinam."},{"rule_id":"correr-mao-amiga","title":"Mão de amigo no centro: o par certo por tipo (janela × porta)","severity":"erro","status":"ok","message":"Encontro central da mão-amiga com o par certo (aba + escova da mesma classe)."},{"rule_id":"correr-travessa-central","title":"Travessa central precisa de abas dos DOIS lados","severity":"erro","status":"ok","message":"Nenhum perfil de folha condicionado como travessa central."},{"rule_id":"correr-componentes-basicos","title":"Componentes básicos do correr não podem faltar","severity":"aviso","status":"falha","message":"Falta: Roldana (janela ROL-440 · porta ROL-439)."},{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":1},"SU-F":{"name":"Quadro fixo X módulos horizontais por X módulos verticais…","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"SU-PCF1":{"name":"Porta de correr 2 folhas sem travessa horizontal, com…","findings":[{"rule_id":"correr-canaletas-iguais-porta","title":"Trilho sup\/inf com o MESMO nº de canaletas — porta","severity":"erro","status":"ok","message":"Não usa os perfis cobertos por esta regra."},{"rule_id":"correr-mao-amiga","title":"Mão de amigo no centro: o par certo por tipo (janela × porta)","severity":"erro","status":"falha","message":"Usa SU-040 (aba\/janela) mas não o par SU-041 (escova\/janela); usa SU-049 (escova\/porta) mas não o par SU-047 (aba\/porta); mistura o par leve da janela (SU-040\/041) com o pesado da porta (SU-047\/049) — não encaixam."},{"rule_id":"correr-travessa-central","title":"Travessa central precisa de abas dos DOIS lados","severity":"erro","status":"ok","message":"Nenhum perfil de folha condicionado como travessa central."},{"rule_id":"correr-componentes-basicos","title":"Componentes básicos do correr não podem faltar","severity":"aviso","status":"ok","message":"Todos os componentes básicos presentes."},{"rule_id":"correr-porta-puxador","title":"Porta de correr oferece puxador opcional (ligado a um componente)","severity":"aviso","status":"falha","message":"Falta: Puxador (opção → componente, ex.: PUX-BUZ-15 · ou ferragem de folha)."},{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":1,"warnings":1},"SU-PC2":{"name":"Porta de correr 2 folhas com 1 travessa horizontal, com…","findings":[{"rule_id":"correr-canaletas-iguais-porta","title":"Trilho sup\/inf com o MESMO nº de canaletas — porta","severity":"erro","status":"falha","message":"Usa SU-001 (trilho superior 2 canaletas) mas não o par SU-002 (trilho inferior 2 canaletas)."},{"rule_id":"correr-mao-amiga","title":"Mão de amigo no centro: o par certo por tipo (janela × porta)","severity":"erro","status":"falha","message":"Usa SU-040 (aba\/janela) mas não o par SU-041 (escova\/janela); usa SU-049 (escova\/porta) mas não o par SU-047 (aba\/porta); mistura o par leve da janela (SU-040\/041) com o pesado da porta (SU-047\/049) — não encaixam."},{"rule_id":"correr-travessa-central","title":"Travessa central precisa de abas dos DOIS lados","severity":"erro","status":"ok","message":"Nenhum perfil de folha condicionado como travessa central."},{"rule_id":"correr-componentes-basicos","title":"Componentes básicos do correr não podem faltar","severity":"aviso","status":"ok","message":"Todos os componentes básicos presentes."},{"rule_id":"correr-porta-puxador","title":"Porta de correr oferece puxador opcional (ligado a um componente)","severity":"aviso","status":"falha","message":"Falta: Puxador (opção → componente, ex.: PUX-BUZ-15 · ou ferragem de folha)."},{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":2,"warnings":1},"JN-4F":{"name":"Janela de correr de vidro — 2 correr + 2 fixo","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"correr-vidro-kit-grade","title":"Kit por LARGURA × ALTURA; altura acima do kit → U de recebimento (não trava)","severity":"aviso","status":"ok","message":"Grade de preço presente pra: K3."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"VF":{"name":"Peça de vidro (avulsa)","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"CV-PCV4":{"name":"Porta de correr de vidro — 2 correr + 2 fixo","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"correr-vidro-kit-grade","title":"Kit por LARGURA × ALTURA; altura acima do kit → U de recebimento (não trava)","severity":"aviso","status":"ok","message":"Grade de preço presente pra: K3."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"PVD":{"name":"Peça de vidro sob desenho","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"VF-E":{"name":"Vidro fixo com reforço estrutural","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"VF-TR":{"name":"Vidro fixo triângulo (fora de esquadro)","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"VF-CV":{"name":"Vidro fixo convencional (fora de esquadro)","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"VF-U":{"name":"Vidro fixo com perfil U (instalado)","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"SU-PGL2":{"name":"Porta giro (abrir) de 2 folhas","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (as fórmulas desta tipologia já usam)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"porta-giro-mata-junta-dupla","title":"Porta de giro de 2 folhas: mata-junta SU-084 (0,125 kg\/m) vertical no encontro das folhas","severity":"aviso","status":"ok","message":"Presentes: SU-084."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"TAMP-SU111 com SU-111 presente."},{"rule_id":"porta-giro-completa","title":"Porta de giro completa: marco + folha + DOBRADIÇA + trava (a dobradiça é o que faz a porta abrir)","severity":"erro","status":"ok","message":"Todos os componentes básicos presentes."}],"errors":0,"warnings":0},"LG-PCRB302":{"name":"Porta de correr 3 folhas (todas móveis)","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"CV-PPV":{"name":"Porta pivotante de vidro","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"porta-pivo-ferragem","title":"Porta pivotante de vidro: pivô é KIT (cima+baixo, 1 preço) — cromado R$ 104 · branco\/preto R$ 90","severity":"aviso","status":"ok","message":"Todos os componentes básicos presentes."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"LG-PCRB200":{"name":"Porta de correr 2 folhas com travessa (baguete)","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como PORTA → LADOS=3, HLADOS=1, CANTOS=2 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"ESP":{"name":"Espelho (lapidado ou bisotê)","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0},"ESP-MOD":{"name":"Espelho modelado (recorte, furo, canto redondo)","findings":[{"rule_id":"lados-porta-janela","title":"Regra dos LADOS: janela = 4, porta = 3 (sem piso)","severity":"info","status":"info","message":"Detectada como JANELA → LADOS=4, HLADOS=2, CANTOS=4 (módulos de arremate\/CM usam automaticamente)."},{"rule_id":"geral-codigo-real","title":"Usar código REAL do catálogo — nunca placeholder inventado","severity":"aviso","status":"ok","message":"Todos os códigos são reais (peso e preço conhecidos)."},{"rule_id":"sistema-formula-grita","title":"Fórmula indefinida GRITA — não vira 0 em silêncio","severity":"aviso","status":"ok","message":"Toda fórmula referencia só L, H, lados, parâmetros e variáveis definidas."},{"rule_id":"peca-codigo-canonico","title":"Código com EQUIVALENTE cadastrado não se usa — converte (não duplica peça, não abre código novo no estoque)","severity":"erro","status":"ok","message":"Nenhum código-equivalente em uso (4 cadastrados)."},{"rule_id":"tampinha-tampsu-e-do-su111","title":"Tampinha é a ponteira do topo de UM montante — TAMP-SU111 é a do SU-111 (existe uma por perfil)","severity":"aviso","status":"ok","message":"Não usa TAMP-SU111 — a regra não se aplica."}],"errors":0,"warnings":0}},"calibration_flags":[{"id":82,"typology_id":"SU-PGL2","topic":"Contramarco, arremate, fita e contra-testa — trazidos da por","message":"A SU-PGL2 não tinha contramarco\/arremate (toda Suprema leva), fita vedadora FIT-200 nem contra-testa CON-295. Foram trazidos da SU-PGL1 com as mesmas fórmulas (medem pelo VÃO, não pela folha — independem do nº de folhas). CONFERIR se a dupla usa o mesmo contramarco\/arremate da simples e se a fita é a mesma metragem.","status":"pendente","resolution_note":null,"created_at":"2026-07-14 11:11:45","resolved_at":null},{"id":81,"typology_id":"SU-PGL2","topic":"Montante SU-111 e dobradiça na porta de 2 folhas — DERIVADOS","message":"A ficha de origem da SU-PGL2 veio com SU-111 (montante vertical da folha) ×2 e SEM dobradiça. Pela estrutura da folha — e pelo macho-e-cunha, que está ×2 em relação à simples — cada folha leva 2 montantes: corrigido pra ×4. A dobradiça foi trazida da SU-PGL1 (3 por folha → 6 na dupla). CONFIRMAR na primeira porta produzida: nº de montantes por folha e nº de dobradiças por folha (2 ou 3, conforme o peso\/altura da folha).","status":"pendente","resolution_note":null,"created_at":"2026-07-14 11:11:45","resolved_at":null},{"id":80,"typology_id":"SU-PGL2","topic":"Medidas das lâminas (veneziana\/lambril) — DERIVADAS da SU-PG","message":"As fórmulas das lâminas da porta de 2 folhas foram derivadas da SU-PGL1 pela mesma relação, trocando a largura da folha (simples: L-188; dupla: (L-294)\/2) e dobrando a contagem (2 folhas): veneziana lisa US-294 = folha−4, furada VZ-051 = folha−6, lambril Y-335 = folha; nº de lâminas = (INT((H-150)\/60)+1) × 2 e CEIL(H\/150) × 2. NÃO conferidas em corte real, e não sabemos se a TRAVESSA central corta as lâminas em dois trechos (a fórmula da SU-PGL1 usa a altura inteira mesmo tendo travessa). Calibrar na primeira porta produzida. Falta também a variante de VIDRO (a tipologia não tem vidro cadastrado — precisa da medida do pano com e sem travessa).","status":"pendente","resolution_note":null,"created_at":"2026-07-14 09:15:56","resolved_at":null},{"id":79,"typology_id":"SU-PGL2","topic":"Painel da folha (lâminas ventiladas) não veio no import","message":"O nome da tipologia diz \"laminas ventiladas\", mas o import NÃO trouxe nem vidro (glass_specs vazio) nem perfil de lâmina\/veneziana (a SU-PGL1 tem US-294 \/ VZ-051 \/ Y-335 por opção de preenchimento; a SU-PGL2 não tem nenhum). As baguetes SU-102 estão lá, o que prova que existe painel a travar — só não sabemos qual. Hoje a porta é orçada SEM o painel (subvaloriza) e o desenho pinta vidro por padrão. PENDENTE do Rhuan: qual é o preenchimento da SU-PGL2 (veneziana lisa\/furada, lambril ou vidro) e o perfil\/medida da lâmina. Resolvido isso, entra a opção de preenchimento igual à da SU-PGL1.","status":"calibrado","resolution_note":"Painel modelado: a SU-PGL2 ganhou a mesma opção de preenchimento da SU-PGL1 (veneziana lisa US-294 · furada VZ-051 · lambril Y-335), default veneziana lisa. Segue pendente só a CONFERÊNCIA das medidas — ver a flag das lâminas.","created_at":"2026-07-14 08:36:19","resolved_at":"2026-07-14 09:15:43"},{"id":78,"typology_id":"LG-PCRB302","topic":"Peso do MP-347 (arremate)","message":"Há duas leituras de kg\/m do MP-347: 0,184 (ficha SU-F, no profile_meta) e 0,202 (esta ficha Gold, usada no part). Diferença ~9%. Reconciliar com a barra real.","status":"pendente","resolution_note":null,"created_at":"2026-07-13 17:08:39","resolved_at":null},{"id":77,"typology_id":"LG-PCRB302","topic":"Preço do fecho FEC-1029 (s\/ chave)","message":"FEC-1029 (fecho concha s\/ chave, opção default) está com preço R$ 0,00 no catálogo. O dono precisa lançar o custo em \/catalog, senão o fecho padrão sai de graça no orçamento.","status":"pendente","resolution_note":null,"created_at":"2026-07-13 17:08:39","resolved_at":null},{"id":76,"typology_id":"LG-PCRB302","topic":"Fórmula da largura da folha (LARGFL)","message":"LARGFL = INT(L\/3)−79 e LARGVID = LARGFL−6 foram calibradas em UM exemplo só (3000×2600 → folha 921, vidro 915). Confirmar com um 2º vão de largura diferente antes de vender larguras muito diferentes.","status":"pendente","resolution_note":null,"created_at":"2026-07-13 17:08:39","resolved_at":null},{"id":75,"typology_id":"VF-U","topic":"Face exata do cavalão (U-556)","message":"O vertical do cavalão está com H−30 (mesma face do cavalinho) PROVISORIAMENTE. O U-556 está no catálogo ALUMIL p.132 (Box Temperado 8mm, 0,143 kg\/m ✓), mas as cotas saem embaralhadas no OCR (candidatos ~11–20 mm) e não deu pra rasterizar a página aqui (sem gs\/imagemagick; navegador travou no PDF). Confirmar a face do U-556 pra acertar o corte do vertical quando o operador escolhe cavalão. Impacto no preço ~R$1 (U leve); importa é pro corte da oficina.","status":"calibrado","resolution_note":"Cotas lidas no desenho do catálogo (poppler): CAVALINHO U-555 (Alplan p.21, PU-316, 0,268 kg\/mt) = seção 25 (altura) × 15 (largura) → vertical H−50; CAVALÃO U-556 (ALUMIL p.132 \"Box Temperado 8mm\", 0,143 kg\/m) = altura 20, abertura 8,2 → vertical H−40. Horizontais = L (100%). Corrige a leitura por OCR (o 15 era a largura, não a altura). Gravado no seed.","created_at":"2026-07-11 23:01:55","resolved_at":"2026-07-11 23:09:28"},{"id":74,"typology_id":"VF-U","topic":"Corte dos U no perímetro","message":"Assumido comprimento dos 4 U = medida do vão (2×L + 2×H), sem desconto de canto. Confirmar se o serralheiro corta a lateral menor (H − 2× a face do U) ou meia-esquadria. Impacto baixo (U é leve), mas registrar pra calibrar.","status":"calibrado","resolution_note":"Rhuan (11\/07\/2026): butt joint — horizontais = L (100%); verticais = H − 2×face. Face do cavalinho (U-555) = 15 mm, lida no catálogo de perfis Alplan p.21 \"Perfis p\/ vidro temperado\" (código PU-316, equiv. U-555, 0,268 kg\/mt bate com o cadastro) → vertical = H − 30. Gravado no seed.","created_at":"2026-07-11 22:19:18","resolved_at":"2026-07-11 23:01:55"},{"id":73,"typology_id":"BX-FP","topic":"Perfil U = par cavalão + cavalinho (falta o 2º perfil)","message":"O U de recebimento vertical da fora-do-padrão é um PAR: cavalão (externo) + cavalinho (interno), cortados H−50. BX-102 (0,139 kg\/m) é UM deles (confirmar qual). FALTA o código e o kg\/m do OUTRO perfil, e confirmar se os dois cortam em H−50 (o cavalinho encaixa no cavalão). Enquanto isso o BX-FP só tem 1 dos 2 perfis → subfatura um pouco. Dificuldade 20% (ajustável no ato) já aplicada.","status":"calibrado","resolution_note":"Rhuan (10\/07\/2026): par confirmado e cadastrado no Catálogo › Perfis — U-555 Cavalinho (0,268 kg\/m, recebe o fixo) + U-556 Cavalão (0,143 kg\/m, recebe a porta), corte H−50. BX-102 removido.","created_at":"2026-07-10 17:39:52","resolved_at":"2026-07-10 20:35:34"},{"id":72,"typology_id":"BX-FP","topic":"Quantidade do perfil U (1 ou 2 barras)","message":"O perfil U de recebimento (BX-102, 0,139 kg\/m) entra cortado em H−50, 1 barra vertical (lateral do fixo). Se na prática a fora-do-padrão usar 2 barras verticais (as duas laterais), trocar quantity de 1 pra 2 no part. Dificuldade de instalação = 20% (default, ajustável no ato) já aplicada.","status":"calibrado","resolution_note":"Rhuan (10\/07\/2026): par confirmado e cadastrado no Catálogo › Perfis — U-555 Cavalinho (0,268 kg\/m, recebe o fixo) + U-556 Cavalão (0,143 kg\/m, recebe a porta), corte H−50. BX-102 removido.","created_at":"2026-07-10 17:12:03","resolved_at":"2026-07-10 20:35:34"},{"id":71,"typology_id":"BX-FP","topic":"% de dificuldade de instalação","message":"PENDENTE: box até o teto\/fora do padrão é difícil de instalar → aplica-se uma % de dificuldade sobre o item. Falta o Rhuan passar o valor da % e confirmar como aplica (sobre o total? só sobre a mão de obra\/kit?).","status":"pendente","resolution_note":null,"created_at":"2026-07-10 16:46:15","resolved_at":null},{"id":70,"typology_id":"BX-FP","topic":"Preço do perfil U de recebimento (H−50)","message":"PENDENTE: o perfil U (14mm, 15×25) vertical entra como adicional na box fora do padrão, cortado em H−50. Falta o Rhuan passar o preço (por barra ou por metro) e confirmar a quantidade (1 ou 2 barras verticais). Quando chegar: cadastrar o perfil e adicioná-lo como part com length \"H-50\".","status":"calibrado","resolution_note":"Rhuan (10\/07\/2026): par confirmado e cadastrado no Catálogo › Perfis — U-555 Cavalinho (0,268 kg\/m, recebe o fixo) + U-556 Cavalão (0,143 kg\/m, recebe a porta), corte H−50. BX-102 removido.","created_at":"2026-07-10 16:46:15","resolved_at":"2026-07-10 20:35:34"},{"id":69,"typology_id":"BX-C1","topic":"Encontro das portas no canto","message":"Cada lado dimensiona como um mini-F1 com transpasse 25 (confirmado pelo Rhuan). O detalhe do ENCONTRO das duas portas no canto foi assumido SEM folga\/desconto extra — conferir no primeiro C1 real.","status":"pendente","resolution_note":null,"created_at":"2026-07-09 15:56:53","resolved_at":null},{"id":68,"typology_id":"BX-C1","topic":"Grade do MAKIT C1 reto","message":"PENDENTE: o Rhuan vai mandar os preços do MAKIT C1 RETO depois (\"fica anotado pra me lembrar\", 09\/07\/2026). Por ora o C1 sai só no acabamento redondo (sem opção). Quando a grade chegar: semear família MKR-C1 e adicionar a opção de acabamento igual à do BX-F1.","status":"pendente","resolution_note":null,"created_at":"2026-07-09 15:56:53","resolved_at":null},{"id":67,"typology_id":"CV-PC1F","topic":"Grade BC\/PT preenchida por união","message":"A listagem do fornecedor não mostrava MK-F1-150-PT nem MKR-F1-160-BC (lacuna de estoque, preço não muda por cor). Preenchemos as duas cores com a grade completa e o mesmo preço. Confirmar que esses tamanhos existem mesmo nas duas cores.","status":"pendente","resolution_note":null,"created_at":"2026-07-09 12:55:09","resolved_at":null},{"id":66,"typology_id":"CV-PC1F","topic":"F1 com vão acima de ~1975 mm","message":"A maior peça padrão tem 1000 mm de largura; com transpasse 25, duas folhas cobrem no máximo ~1975 mm de vão — mas existe kit F1-200 (até 2000). Confirmar como o balcão resolve vão entre 1975 e 2000 (peça sob medida? outra composição?).","status":"calibrado","resolution_note":"Rhuan (09\/07\/2026): irrelevante — box desse tamanho é raríssimo; quando aparece, muda pra F2\/F3 (fora de escopo por ora). Nem considerar.","created_at":"2026-07-09 12:55:09","resolved_at":"2026-07-09 15:56:53"},{"id":65,"typology_id":"CV-PC1F","topic":"Acabamento padrão do kit (redondo × reto)","message":"Padrão assumido = REDONDO (o mais barato, MK-F1). Confirmar com o Rhuan qual acabamento sai quando o cliente não especifica — se for reto, trocar o default da opção \"Acabamento do kit\".","status":"pendente","resolution_note":null,"created_at":"2026-07-09 12:55:09","resolved_at":null},{"id":64,"typology_id":"CV-PC1F","topic":"Altura comercial do vidro (1,90 m)","message":"INFERIDA do carrinho do fornecedor: o m² é calculado com altura 1900 em vez da altura de fabricação (fixo 1845 \/ porta 1880) — bateu em todas as linhas conferidas (jul\/2026). Confirmar na próxima compra real.","status":"pendente","resolution_note":null,"created_at":"2026-07-09 12:55:09","resolved_at":null},{"id":63,"typology_id":"ty_gcpan","topic":"Ferragem\/vedação de acabamento (Panorama)","message":"Faltam: guarnição EPDM do vidro GUA-033\/034 (por m, casa com a espessura), canopla CAN-625 (por prumo), suportes SUP-626\/627, botão NYL-314, esfera\/tubo CG-082\/143 (opcional). Códigos provavelmente técnicos reais (não 'da Vita'); confirmar código\/preço no catálogo da linha Panorama da distribuidora.","status":"pendente","resolution_note":null,"created_at":"2026-07-09 12:38:21","resolved_at":null},{"id":62,"typology_id":"ty_gcpan","topic":"Kit de fixação (por prumo)","message":"Cada prumo fixa na base com chumbador (CHU-8595\/8593) + parafusos (PAR-656\/229) + porcas (POR-502\/517) + arruelas (ARR-553\/568) — provavelmente códigos TÉCNICOS reais da peça (não são 'da Vita', que era só a loja da folha). Modelar como 1 'kit de fixação' por prumo; confirmar código\/preço no catálogo da linha Panorama da distribuidora.","status":"pendente","resolution_note":null,"created_at":"2026-07-09 12:38:21","resolved_at":null},{"id":61,"typology_id":"ty_gcpan","topic":"Pontalete: fracionar por perfil (hoje universal)","message":"Pontalete e cola compound já COBRADOS no BOM: PONT-UNIV (1 por prumo, base ~R$45\/un) + COMPOUND (1 lata a cada 2 pontaletes × R$82\/lata). O poste CG-077 reveste o pontalete. DEPOIS: fracionar o pontalete por perfil vertical (cada perfil tem o seu — assunto complexo, fica pra frente) e confirmar o código real (hoje placeholder PONT-UNIV).","status":"pendente","resolution_note":null,"created_at":"2026-07-09 12:38:21","resolved_at":null},{"id":60,"typology_id":"ty_gcpan","topic":"Baguete CG-075 — contagem","message":"Modelada como 2 por vão (uma em cada aresta vertical). Confirmar no corte horizontal Vita se é 1 ou 2 por aresta, e se há baguete horizontal (topo\/base).","status":"pendente","resolution_note":null,"created_at":"2026-07-09 12:38:21","resolved_at":null},{"id":59,"typology_id":"ty_gcpan","topic":"Espaçamento e dimensões dos prumos","message":"ESTIMADOS: esp_prumo=1200mm (passo entre prumos), alt_poste=60mm (corrimão come da altura do prumo), perfis_v=120mm (desconto na altura do vidro), folga_lat=5mm. Passo real depende da carga (NBR 14718)\/espessura. Confirmar com manual Vita \/ prática PraiaMar.","status":"pendente","resolution_note":null,"created_at":"2026-07-09 12:38:21","resolved_at":null},{"id":1,"typology_id":"SU-JPV","topic":"vidro","message":"Fórmula (L−172) × (H−186) DERIVADA das peças (travessa SU-110 −6 na largura; folha H−102 − 2×face 39 − 6 na altura; método bateu Δ0 no correr JC200 e na porta de giro PGR 100), NÃO confirmada em produção — no sistema anterior o vidro nunca foi configurado (saía L−200 × H, altura sem desconto). Pivotante sai raramente (pode levar meses). Ao produzir a 1ª: medir o vidro real E os baguetes SU-102 (os cortes L−90\/H−112 do sistema anterior também parecem herdados sem revisão) e calibrar.","status":"pendente","resolution_note":null,"created_at":"2026-07-08 10:28:45","resolved_at":null}]}