#!/usr/bin/env python3
"""Entrega a demanda 35 depois da resposta 86. Uso: entregar-d35.py A|B|C

⚠️ Chama `fab` por LISTA de argumentos (subprocess sem shell): o texto medido leva
backticks e `$`, e o shell COME-OS antes de o verbo os ver — foi o que aconteceu na
pergunta 86 em 30/09 e teve de ser reparado a mao.
"""
import subprocess, sys

RESUMO = """OS ARTIGOS EM DESTAQUE POR NUCLEO — furo 3 dos 7 que a regra 112 nomeou do texto do CS-1.
MEDIDO: `artigo` da' 0 ocorrencias em backend/src, frontend/src e prisma; a MESMA sonda da' 202 para
`nucleo`, logo a sonda apanha (regra 110). Existe `Nucleo` (schema.prisma:510) com os dez que o dono
ditou e a marca ja' paga e aprovada; tabela de artigo ⛔ nao existe.

JA' DECIDIDO PELO DONO e ⛔ NAO se volta a perguntar: quem escolhe e publica e' o ESPECIALISTA
(regra 51, literal dele; 55; e a 57 avisa que «cadastra tudo» ⛔ nao se estica para cima disto), e
artigo em destaque ⛔ NAO DA' PONTO (regra 51) — e' acervo de consulta, como os protocolos.
⚠️ O texto desta demanda mandava perguntar QUEM POE EM DESTAQUE. ⛔ NAO se perguntou: ele ja' o
decidiu tres vezes. Gastar-lhe a fila duas vezes pela mesma coisa e' que e' o defeito.

O QUE O QUADRO DECIDIU SOZINHO, por ser REVERSIVEL — nomeado para o dono corrigir no aceite:
 1. O ARTIGO E' REFERENCIA + ENDERECO, ⛔ nao ficheiro hospedado: titulo, autores, fonte, ano, link.
    RAZAO MEDIDA: o unico armazem do produto (marca.servico.ts:33, var/marcas) aceita png/webp/svg,
    e hospedar PDF de revista poe a Secretaria dentro do direito de autor — isso e' O IRREVERSIVEL e
    ⛔ nao e' meu. Carregar ficheiro depois e' ADITIVO, e o precedente do `marca` ja' existe.
 2. ⛔ SEM SEGUNDO ESTADO: publicar E' por em destaque. Uma lista por nucleo, o mais recente a'
    cabeca. Um subconjunto destacado dentro de um acervo maior e' aditivo depois.
 3. QUEM VE: todo o medico ACEITO ve os artigos dos DEZ nucleos, com chip de filtro por nucleo
    (regra 66). RAZAO MEDIDA: o medico ⛔ nao tem especialidade no produto (schema.prisma:34-90) —
    filtrar pela dele e' impossivel hoje e mora na demanda 32 (perfil). E um medico de urgencia ganha
    com um artigo de cardiologia. Estreitar depois e' barato.
 4. A SECRETARIA VE TUDO (regra 113) e ⛔ NAO tem botao de publicar no lugar do especialista.
 5. ⛔ SEM declaracao de leitura e ⛔ SEM registo de quem leu — mesmo criterio dos protocolos (51).
 6. O cartao de artigo ⛔ NAO leva imagem (⛔ nao ha' fonte de imagem para artigos): cai para
    surfaceContainerHighest com a MARCA DO NUCLEO ja' aprovada (regra 96 checavel 3; regra 120.3).
 7. Banco, enderecos, ecras e a forma de guardar.

FRONTEIRAS: MATERIAL DA AULA (slides/PDF anexados a uma aula) e' a demanda 33; PROTOCOLOS
MUNICIPAIS e' a 38. Esta demanda ⛔ nao lhes toca.

RESPOSTA 86 (permissao, decidida pelo dono): """

C2 = {
 "A": """(2) A secretaria liga esse especialista a Cardiologia e Urologia; ele publica nos dois e leva
    403 em Pediatria, e a recusa NOMEIA os nucleos onde ele pode. A secretaria tira-lhe Urologia e os
    artigos que ele la' publicou continuam legiveis a todos.""",
 "B": """(2) Ele publica no nucleo das aulas em que e' responsavel; a secretaria TROCA o responsavel
    (regra 57) e os artigos que ele ja' publicou continuam legiveis a todos, ⛔ sem desaparecer.""",
 "C": """(2) Qualquer ESPECIALISTA publica em qualquer um dos 10 nucleos; um MEDICO e um COORDENADOR
    levam 403 ao tentar publicar, e a recusa diz que papel publica.""",
}
NOME = {"A": "a SECRETARIA liga especialista a nucleo(s)",
        "B": "o nucleo SAI DAS AULAS em que ele foi responsavel",
        "C": "QUALQUER especialista publica em QUALQUER nucleo"}

CRIT = """Esta' pronto quando estes SEIS factos se exercerem numa instancia a correr, todos contaveis:
(1) Um especialista publica 3 artigos no nucleo de Cardiologia — cada um com titulo, autores, fonte,
    ano e endereco — e os 3 aparecem no ecra desse nucleo, o mais recente a' cabeca, com a marca do
    nucleo a' vista e ⛔ nao um rectangulo vazio.
{c2}
(3) Um medico ACEITO abre a lista, ve artigos dos 10 nucleos, filtra Cardiologia por chip e fica com
    3; abre um e sai para o endereco do artigo. Um medico PENDENTE (regra 46) ve 0 artigos.
(4) Publicar, abrir e ler 3 artigos ⛔ NAO mexe um ponto: a pontuacao do medico e' o MESMO numero
    antes e depois, e ⛔ nao existe linha nenhuma a registar quem leu (regra 51).
(5) As capturas trazem os SEIS estados (vazio com o verbo que o preenche · a carregar com esqueleto
    da forma final · erro so' no painel afectado · sem permissao a dizer que papel ve' · sucesso na
    propria peca · parcial), em Material 3, cantos arredondados e sombra (regras 81-84).
(6) Um nucleo ARQUIVADO (arquivadoEm nao nulo) ⛔ nao aparece no selector de publicacao, e os artigos
    que ja' tem continuam legiveis."""

letra = (sys.argv[1] if len(sys.argv) > 1 else "").strip().upper()
if letra not in C2:
    sys.exit("uso: entregar-d35.py A|B|C  (a resposta do dono a' pergunta 86)")
r = subprocess.run(["fab", "demanda-pronta", "35",
                    "--resumo", RESUMO + NOME[letra] + ".",
                    "--criterio", CRIT.format(c2=C2[letra])])
sys.exit(r.returncode)
