From e82b042de1af6bc326ddcfdd7f7079fb59138732 Mon Sep 17 00:00:00 2001 From: Irlan Cidade <2146925357+icidade@users.noreply.github.com> Date: Fri, 10 Jul 2026 20:10:53 +0000 Subject: [PATCH] docs: publish MiniCISO service catalog v5 --- README.md | 3 +- meta/SUMMARY.json | 7 +- miniciso-staff-service-catalog-v5-full.pdf | Bin 0 -> 88735 bytes miniciso-staff-service-catalog-v5.md | 611 +++++++++++++++++++++ scripts/generate_service_catalog_pdf.py | 319 +++++++++++ 5 files changed, 938 insertions(+), 2 deletions(-) create mode 100644 miniciso-staff-service-catalog-v5-full.pdf create mode 100644 miniciso-staff-service-catalog-v5.md create mode 100644 scripts/generate_service_catalog_pdf.py diff --git a/README.md b/README.md index 60e4d28..d5028a7 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,8 @@ See [`docs/kag-finding-validation.md`](docs/kag-finding-validation.md) and [`tem - [`docs/kag-finding-validation.md`](docs/kag-finding-validation.md): pre-submission KAG gate for finding validation - [`docs/self-update-capability.md`](docs/self-update-capability.md): public export/sync capability - [`docs/github-pr-access.md`](docs/github-pr-access.md): minimal PAT and credential setup on the VPS -- [`miniciso-staff-service-catalog-v4-full.pdf`](miniciso-staff-service-catalog-v4-full.pdf): service catalog +- [`miniciso-staff-service-catalog-v5.md`](miniciso-staff-service-catalog-v5.md): service catalog source +- [`miniciso-staff-service-catalog-v5-full.pdf`](miniciso-staff-service-catalog-v5-full.pdf): service catalog PDF ## License diff --git a/meta/SUMMARY.json b/meta/SUMMARY.json index c87da58..7e5937a 100644 --- a/meta/SUMMARY.json +++ b/meta/SUMMARY.json @@ -16,13 +16,15 @@ "docs/dependencies-and-configuration.md", "docs/github-pr-access.md", "docs/headroom-kag-selective-retrieval.md", + "docs/kag-finding-validation.md", "docs/profile-setup.md", "docs/repo-architecture.md", "docs/repo-mapping.md", "docs/self-update-capability.md", "docs/staff-operating-model.md", "meta/MANIFEST.json", - "miniciso-staff-service-catalog-v4-full.pdf", + "miniciso-staff-service-catalog-v5.md", + "miniciso-staff-service-catalog-v5-full.pdf", "profiles/chief-of-staff/SOUL.md", "profiles/security-appsec-assessment/SOUL.md", "profiles/security-architecture/SOUL.md", @@ -35,11 +37,14 @@ "scripts/bootstrap.ps1", "scripts/bootstrap.sh", "scripts/export_safe_self_state.py", + "scripts/generate_service_catalog_pdf.py", "scripts/smoke-test.ps1", "scripts/smoke-test.sh", "scripts/sync_to_hermes.sh", "scripts/validate-repo.ps1", "scripts/validate-repo.sh", + "templates/adversarial-finding-validation-prompt.md", + "templates/finding-decision-template.md", "templates/intake-template.md", "templates/report-template.md", "tools/headroom_phase1/README.md", diff --git a/miniciso-staff-service-catalog-v5-full.pdf b/miniciso-staff-service-catalog-v5-full.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d136eb12f4e2a130c24564e50a304f6b287b1454 GIT binary patch literal 88735 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 z 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 literal 0 HcmV?d00001 diff --git a/miniciso-staff-service-catalog-v5.md b/miniciso-staff-service-catalog-v5.md new file mode 100644 index 0000000..d0cf41c --- /dev/null +++ b/miniciso-staff-service-catalog-v5.md @@ -0,0 +1,611 @@ +# MiniCISO Staff Service Catalog v5 + +**Status:** Current consolidated catalog for the public `miniCISO` overlay +**Version:** v5 +**Date:** 2026-07-10 + +--- + +## 1. Executive Summary + +O catálogo v5 consolida o estado atual do MiniCISO Staff como um overlay público e reproduzível para Hermes Agent, com foco em: + +- coordenação central por `chief-of-staff`; +- SMEs especializados para análise técnica; +- `security-qa` como quality gate obrigatório; +- disciplina de evidência em três camadas; +- gate pré-submissão orientado por KAG para findings externos; +- decisão explícita `GO / RESEARCH / NO-GO` antes de qualquer report externo. + +O avanço mais importante desta versão é metodológico: o sistema deixa de aceitar como finding válido um comportamento que apenas demonstra uma primitiva técnica sem impacto qualificável provado. + +### Estado público refletido neste catálogo + +Este catálogo descreve o **estado público atual do repositório** `miniCISO`. + +Ele contém **9 perfis publicados**: + +1. `chief-of-staff` +2. `security-threat-modeling` +3. `security-architecture` +4. `security-code-review` +5. `security-appsec-assessment` +6. `security-offensive-security` +7. `security-compliance-mapper` +8. `security-recon-attack-surface-strategist` +9. `security-qa` + +### Guardrails universais + +- Sem remediação automática. +- Todo relatório final exige QA. +- Trabalho ofensivo exige autorização explícita, escopo, limites e critérios de parada. +- Findings externos não entram em drafting sem decisão `GO`. +- Evidência deve separar configuração declarada, runtime efetivo e comportamento validado quando aplicável. + +--- + +## 2. O que muda na v5 + +A v5 herda a base metodológica da v4 e adiciona uma camada de controle mais rígida para findings externos, especialmente em BBP/VDP. + +### Principais mudanças + +#### 2.1. Gate KAG de validação pré-submissão + +Nova regra oficial: + +- nenhum draft externo começa antes da decisão `GO`; +- `RESEARCH` gera plano de validação de impacto, não submissão; +- `NO-GO` bloqueia submissão e registra lição aprendida. + +#### 2.2. Separação formal entre primitiva e finding + +Passa a ser obrigatório tratar como relações não equivalentes: + +- primitiva técnica ≠ vulnerabilidade; +- comportamento observado ≠ impacto; +- capacidade potencial ≠ exploração demonstrada; +- acesso possível ≠ acesso comprovado; +- texto bom ≠ finding válido. + +#### 2.3. Adversarial QA + +O QA deixa de ser apenas revisão de forma e passa a executar uma tentativa explícita de rejeição metodológica do finding, buscando: + +- exclusão de programa; +- falta de impacto; +- ausência de quebra de trust boundary; +- hipótese apresentada como fato; +- severidade inflada; +- insuficiência probatória. + +#### 2.4. Impact Validator + +O fluxo operacional passa a reconhecer explicitamente uma função intermediária entre descoberta e report drafting: + +- transformar primitivas em hipóteses de impacto verificáveis e autorizadas; ou +- concluir que a primitiva não sustenta finding. + +#### 2.5. Artefato obrigatório de decisão + +Todo finding externo passa a exigir um artefato com: + +- regra/exclusão aplicável; +- impacto exigido; +- impacto demonstrado; +- força da evidência por claim; +- inferências proibidas; +- argumento mais forte de rejeição; +- checklist final para `GO`. + +--- + +## 3. Modelo operacional do Staff + +### Fluxo principal + +```text +Usuário → MiniCISO → SME Especializado → Security QA → MiniCISO → Usuário +``` + +### Função do coordenador + +O `chief-of-staff` é responsável por: + +- triagem inicial; +- decomposição do problema; +- escolha do SME correto; +- consolidação da resposta final; +- enforcement de QA; +- controle de escopo, risco e output. + +### Resultado esperado do sistema + +O MiniCISO não é apenas um catálogo de personas. Ele funciona como uma equipe com: + +- coordenação central; +- especialização por domínio; +- quality gate obrigatório; +- disciplina de evidência; +- formato consistente de saída. + +--- + +## 4. Evidência, qualidade e risco + +### Modelo de evidência em três camadas + +Toda conclusão deve, quando aplicável, separar: + +1. **Configuração declarada** + arquivos, IaC, dashboards, documentação, intenção declarada. +2. **Runtime / configuração efetiva** + estado realmente carregado/aplicado pelo sistema. +3. **Comportamento validado** + teste controlado ou observação direta do efeito. + +### Regra de decisão + +- Não concluir segurança apenas por configuração declarada. +- Quando houver conflito, runtime e comportamento prevalecem para avaliação de risco. +- Se runtime/comportamento não foram validados, reduzir `Confidence Level`. + +### Divergência de Configuração + +Quando declarado, runtime e comportamento não batem, isso vira um achado próprio: + +**Classificação obrigatória:** `Divergência de Configuração` + +Campos esperados: + +- controle afetado; +- estado declarado; +- estado runtime/efetivo; +- comportamento observado; +- impacto plausível; +- hipóteses de causa; +- validação adicional necessária; +- recomendação; +- owner sugerido; +- severidade e confidence. + +--- + +## 5. Gate KAG para findings externos + +### Objetivo + +Provar impacto qualificável ou bloquear submissão. + +### Pergunta correta + +O sistema não deve começar perguntando: + +> Como transformar esta evidência em um bom report? + +Deve começar perguntando: + +> Esta evidência sobreviveria à triagem como finding qualificável neste programa? + +### Estrutura mínima de decisão + +O gate trabalha com quatro conjuntos de conhecimento: + +1. **Scope Graph** +2. **Vulnerability Graph** +3. **Evidence Graph** +4. **Decision Graph** + +### Gates obrigatórios + +#### Gate 1 — Scope Qualification +- a classe está no escopo? +- existe exclusão explícita? +- o programa exige impacto adicional? +- a evidência atual satisfaz esse requisito? +- o teste necessário é autorizado? + +#### Gate 2 — Feature versus Vulnerability +- o comportamento viola uma trust boundary? +- ou só executa a função esperada do produto? + +#### Gate 3 — Impact Closure +A frase precisa fechar sem linguagem especulativa: + +> Por causa deste comportamento, um atacante pode [ação concreta], causando [consequência observável], algo que não seria possível por meio da funcionalidade normalmente autorizada. + +#### Gate 4 — Evidence Sufficiency +Cada claim deve ser classificado como: + +- `DIRECT` +- `SUPPORTED_INFERENCE` +- `SPECULATIVE` +- `UNSUPPORTED` + +#### Gate 5 — Adversarial QA +O QA tenta rejeitar o finding antes de lapidar o texto. + +### Decisões permitidas + +- `GO` +- `RESEARCH` +- `NO-GO` + +### Regra dura + +- Se `demonstrated = false`, não existe `GO`. +- Se a evidência cai em exclusão explícita sem exceção provada, a submissão deve ser bloqueada. +- Mais prova da mesma primitiva não substitui ausência de impacto. + +--- + +## 6. Perfis publicados e quando usar + +### 6.1. `chief-of-staff` + +**Quando acionar** +- coordenação geral; +- triagem de demanda; +- síntese final; +- roteamento entre SMEs; +- priorização e próximos passos. + +**Outcomes típicos** +- briefing executivo; +- plano de ação; +- consolidação inter-SME; +- decisão operacional. + +**Entrada ideal** +- objetivo; +- escopo; +- contexto; +- restrições; +- artefatos disponíveis. + +### 6.2. `security-threat-modeling` + +**Quando acionar** +- ativos, atores, trust boundaries, abuse cases, fluxos sensíveis. + +**Outcomes típicos** +- threat model; +- cenários priorizados; +- backlog defensivo. + +**Entrada ideal** +- diagrama/fluxo; +- ativos sensíveis; +- atores; +- objetivo da modelagem. + +### 6.3. `security-architecture` + +**Quando acionar** +- SSH, firewall, cloud, rede, systemd, gateways, exposição de serviços, segmentação, runtime divergente. + +**Outcomes típicos** +- architecture review; +- tradeoffs; +- recomendações priorizadas; +- plano seguro de correção. + +**Entrada ideal** +- desenho atual/alvo; +- configs declaradas; +- saídas runtime; +- testes observados; +- constraints. + +### 6.4. `security-code-review` + +**Quando acionar** +- revisão manual de repo, diff, scripts, auth, secrets, injection, lógica sensível. + +**Outcomes típicos** +- findings por arquivo/linha; +- correção sugerida; +- guidance de testes. + +**Entrada ideal** +- path ou diff; +- linguagem; +- foco de risco; +- permissão de execução de testes. + +### 6.5. `security-appsec-assessment` + +**Quando acionar** +- API, authn/authz, sessão, SAST/DAST/SCA, SBOM, manifests, containers, IaC. + +**Outcomes típicos** +- assessment AppSec; +- falso positivo vs finding real; +- priorização; +- backlog técnico. + +**Entrada ideal** +- scanner outputs; +- SARIF; +- SBOM; +- manifests; +- repositório; +- escopo da análise. + +### 6.6. `security-offensive-security` + +**Quando acionar** +- validação ofensiva autorizada; +- raciocínio adversarial seguro; +- PoCs controladas; +- interpretação de exploitabilidade. + +**Outcomes típicos** +- plano de teste; +- evidência segura; +- critérios de parada; +- avaliação de impacto técnico. + +**Entrada ideal** +- autorização explícita; +- alvo; +- limites; +- janela; +- regras de parada. + +### 6.7. `security-compliance-mapper` + +**Quando acionar** +- mapear achados para LGPD, GDPR, ISO 27001, SOC2, CIS, NIST e afins. + +**Outcomes típicos** +- gap matrix; +- mapping; +- readiness roadmap. + +**Entrada ideal** +- framework alvo; +- políticas/processos; +- achados técnicos; +- evidências; +- escopo. + +### 6.8. `security-recon-attack-surface-strategist` + +**Quando acionar** +- recon autorizado de baixo ruído; +- mapeamento e triagem de superfícies; +- priorização de hipóteses; +- ordem segura de validação. + +**Outcomes típicos** +- surface map; +- hipóteses priorizadas; +- próximos gates; +- backlog de investigação. + +**Entrada ideal** +- família de alvos; +- policy/restrições; +- orçamento de requests; +- sinais já observados. + +**Limite importante** +Recon não é finding. O output precisa passar por AppSec/OffSec/Architecture e depois por QA antes de virar conclusão final. + +### 6.9. `security-qa` + +**Quando acionar** +- toda entrega final; +- addendum; +- mudança de severidade; +- validação de evidência; +- revisão de overclaim. + +**Outcomes típicos** +- aprovado; +- aprovado com ressalvas; +- reprovado; +- correções obrigatórias. + +**Entrada ideal** +- draft; +- evidências; +- escopo; +- público-alvo; +- critérios MiniCISO. + +--- + +## 7. Notas sobre capacidades transversais + +Além dos 9 perfis públicos, o overlay atual já documenta algumas práticas transversais que influenciam a operação, mesmo sem aparecerem como perfis separados. + +### 7.1. Governança de findings externos + +O estado público atual já documenta, via operating model + KAG gate + templates, uma disciplina de governança para findings externos com foco em: + +- policy-first; +- scope qualification; +- authorization-aware validation; +- evidence minimization; +- bloqueio de submissão quando não há impacto qualificável demonstrado. + +### 7.2. Lições aprendidas como requisito de processo + +O overlay público já exige o registro de lição aprendida quando um candidate finding cai em `NO-GO`. + +Na prática, isso reforça principalmente: + +- falhas metodológicas; +- overclaim a partir de primitiva técnica; +- casos em que faltou prova de impacto; +- repetições de inferências proibidas. + +### 7.3. Supply-chain como área de análise, não como perfil público separado + +O estado público atual suporta análise de supply-chain principalmente dentro de `security-appsec-assessment` e da documentação de dependências/configuração. + +Este catálogo não assume, no overlay público atual, a existência de um perfil separado de supply-chain nem de um componente público chamado `Watchman`. + +--- + +## 8. Template universal de intake + +O input de alta qualidade para o MiniCISO deve conter, no mínimo: + +### Objective +- o que precisa ser decidido ou produzido + +### Scope +- sistemas, repositórios, assets +- in scope +- out of scope + +### Context +- background +- constraints +- business/security priority + +### Program and qualification context +- nome do programa +- plataforma +- URL da policy +- source das regras +- exclusões explícitas +- impacto exigido para a classe +- métodos permitidos +- métodos proibidos +- se callback/OOB é permitido +- estágio atual: intake | validation | report-drafting + +### Artifacts provided +- arquivos +- links +- logs / screenshots / reports + +### Restrictions +- read-only? +- external testing authorized? +- sensitive data constraints? + +### Desired output +- tipo de saída +- profundidade +- prazo + +### QA requirement +- saída final passa por `security-qa` + +--- + +## 9. Workflow recomendado + +### 9.1. Fluxo geral + +```text +Intake → Triagem → SME → Draft técnico → Security QA → Síntese final → Follow-up +``` + +### 9.2. Fluxo para findings externos + +```text +Primitive discovered + ↓ +Scope qualification + ↓ +Feature-versus-vulnerability analysis + ↓ +Impact hypotheses + ↓ +Safe and authorized validation + ↓ +Impact demonstrated? + ┌────┴────┐ + │ │ + No Yes + │ │ +RESEARCH Adversarial QA +or NO-GO │ + ↓ + Report +``` + +### 9.3. Critério de saída + +- **GO** → pode começar drafting externo +- **RESEARCH** → gera plano de validação de impacto +- **NO-GO** → bloqueia submissão e registra aprendizado + +--- + +## 10. Prompts copy-ready + +### 10.1. Threat modeling + +> Faça uma threat model de [sistema/fluxo]. Contexto: [objetivo]. Artefatos: [diagrama/fluxo]. Dados sensíveis: [lista]. Atores: [lista]. Quero riscos priorizados, recomendações, assumptions, confidence level, residual risk e next steps. Passe pelo Security QA. + +### 10.2. Architecture review + +> Revise esta arquitetura/controle. Stack: [stack]. Declarado: [configs]. Runtime: [outputs]. Comportamento: [testes]. Constraints: [prazo/custo/risco]. Quero recomendações priorizadas, divergências, assumptions, confidence, residual risk e next steps. Passe pelo Security QA. + +### 10.3. Secure code review + +> Revise segurança do código em [path/diff]. Foco: [categorias]. Pode executar testes locais: [sim/não]. Quero findings, falso positivo se aplicável, remediação proposta, assumptions, confidence, residual risk e next steps. Passe pelo Security QA. + +### 10.4. AppSec assessment + +> Avalie os findings de AppSec deste projeto. Artefatos: [scanner outputs], [SARIF], [SBOM], [repo]. Objetivo: [reduzir risco/validar findings/priorizar backlog]. Quero confirmados, falso positivos, priorização, remediação proposta, assumptions, confidence, residual risk e next steps. Passe pelo Security QA. + +### 10.5. Recon / attack surface + +> Faça recon autorizado e de baixo ruído para [família de alvos]. Constraints: [policy/rate limits]. Sinais já observados: [lista]. Quero mapa de superfícies, hipóteses priorizadas e próximos gates seguros. Não trate recon como finding final. Passe pelo fluxo correto até QA. + +### 10.6. QA adversarial para finding externo + +> Valide este candidate finding com gate KAG orientado por impacto. Primeiro tente rejeitar o finding pelos motivos mais fortes de triagem. Só aprove `GO` se houver trust boundary quebrada, impacto diretamente demonstrado e evidência suficiente. Caso contrário, devolva `RESEARCH` ou `NO-GO` com rationale e próximas ações seguras. + +--- + +## 11. Critérios de qualidade para a versão atual + +Um output MiniCISO de alta qualidade deve: + +- ser ancorado em evidência real; +- distinguir fato, hipótese e lacuna; +- explicitar assumptions; +- calibrar confidence; +- declarar residual risk; +- propor próximos passos concretos; +- passar por `security-qa` quando final. + +Para findings externos, adicionalmente deve: + +- respeitar escopo/autorização; +- não overclaimar a partir de primitiva técnica; +- não usar linguagem especulativa como base de submissão; +- provar impacto qualificável ou bloquear a submissão. + +--- + +## 12. Conclusão + +A v5 marca a maturidade do MiniCISO Staff como um sistema orientado a decisão, não apenas a produção de texto. + +Os pontos centrais desta versão são: + +- coordenação clara; +- QA obrigatório; +- disciplina de evidência; +- tratamento explícito de divergência; +- recon como insumo, não como finding; +- gate KAG para findings externos; +- decisão `GO / RESEARCH / NO-GO` antes de drafting. + +Em termos práticos, a v5 reduz a chance de: + +- aprovar relatório bem escrito sem impacto demonstrado; +- confundir comportamento esperado com vulnerabilidade; +- transformar primitiva em finding só por familiaridade com a classe; +- submeter casos que deveriam ter sido travados em QA. diff --git a/scripts/generate_service_catalog_pdf.py b/scripts/generate_service_catalog_pdf.py new file mode 100644 index 0000000..e6c62f6 --- /dev/null +++ b/scripts/generate_service_catalog_pdf.py @@ -0,0 +1,319 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import math +from pathlib import Path +from typing import List, Tuple + +from reportlab.lib import colors +from reportlab.lib.enums import TA_CENTER, TA_JUSTIFY, TA_LEFT +from reportlab.lib.pagesizes import A4 +from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet +from reportlab.lib.units import mm +from reportlab.pdfbase.ttfonts import TTFont +from reportlab.pdfbase import pdfmetrics +from reportlab.platypus import ( + BaseDocTemplate, + Frame, + PageBreak, + PageTemplate, + Paragraph, + Preformatted, + Spacer, +) + + +def register_fonts() -> None: + candidates = [ + ("DejaVuSans", "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"), + ("DejaVuSans-Bold", "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf"), + ("DejaVuSansMono", "/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf"), + ] + for name, path in candidates: + p = Path(path) + if p.exists(): + pdfmetrics.registerFont(TTFont(name, str(p))) + + +def build_styles(): + base = getSampleStyleSheet() + base["Normal"].fontName = "DejaVuSans" + base["Normal"].fontSize = 10.5 + base["Normal"].leading = 14 + base["Normal"].alignment = TA_LEFT + + styles = { + "title": ParagraphStyle( + "title", + parent=base["Title"], + fontName="DejaVuSans-Bold", + fontSize=24, + leading=30, + textColor=colors.HexColor("#0F172A"), + alignment=TA_CENTER, + spaceAfter=8, + ), + "subtitle": ParagraphStyle( + "subtitle", + parent=base["Heading2"], + fontName="DejaVuSans", + fontSize=12, + leading=16, + textColor=colors.HexColor("#334155"), + alignment=TA_CENTER, + spaceAfter=16, + ), + "h1": ParagraphStyle( + "h1", + parent=base["Heading1"], + fontName="DejaVuSans-Bold", + fontSize=18, + leading=22, + textColor=colors.HexColor("#0F172A"), + spaceBefore=8, + spaceAfter=8, + ), + "h2": ParagraphStyle( + "h2", + parent=base["Heading2"], + fontName="DejaVuSans-Bold", + fontSize=13, + leading=17, + textColor=colors.HexColor("#1D4ED8"), + spaceBefore=6, + spaceAfter=4, + ), + "body": ParagraphStyle( + "body", + parent=base["Normal"], + fontName="DejaVuSans", + fontSize=10.5, + leading=14, + alignment=TA_JUSTIFY, + textColor=colors.HexColor("#111827"), + spaceAfter=4, + ), + "bullet": ParagraphStyle( + "bullet", + parent=base["Normal"], + fontName="DejaVuSans", + fontSize=10.5, + leading=14, + leftIndent=10, + firstLineIndent=-8, + spaceAfter=2, + ), + "quote": ParagraphStyle( + "quote", + parent=base["Normal"], + fontName="DejaVuSans", + fontSize=10.5, + leading=14, + leftIndent=12, + borderPadding=6, + borderColor=colors.HexColor("#CBD5E1"), + borderWidth=0.8, + borderLeft=True, + textColor=colors.HexColor("#334155"), + spaceBefore=4, + spaceAfter=6, + ), + "meta": ParagraphStyle( + "meta", + parent=base["Normal"], + fontName="DejaVuSans", + fontSize=9, + leading=12, + textColor=colors.HexColor("#475569"), + alignment=TA_CENTER, + spaceAfter=2, + ), + "code": ParagraphStyle( + "code", + parent=base["Code"], + fontName="DejaVuSansMono", + fontSize=8.8, + leading=11, + backColor=colors.HexColor("#F8FAFC"), + borderColor=colors.HexColor("#CBD5E1"), + borderWidth=0.6, + borderPadding=6, + leftIndent=2, + rightIndent=2, + spaceBefore=4, + spaceAfter=6, + ), + } + return styles + + +def esc(text: str) -> str: + return ( + text.replace("&", "&") + .replace("<", "<") + .replace(">", ">") + ) + + +def inline_md(text: str) -> str: + text = esc(text) + while "**" in text: + a = text.find("**") + b = text.find("**", a + 2) + if b == -1: + break + inner = text[a + 2 : b] + text = text[:a] + f"{inner}" + text[b + 2 :] + while "`" in text: + a = text.find("`") + b = text.find("`", a + 1) + if b == -1: + break + inner = text[a + 1 : b] + text = text[:a] + f"{esc(inner)}" + text[b + 1 :] + return text + + +def parse_markdown(md: str, styles) -> List: + lines = md.splitlines() + story: List = [] + in_code = False + code_lines: List[str] = [] + paragraph_lines: List[str] = [] + + def flush_paragraph(): + nonlocal paragraph_lines + if paragraph_lines: + text = " ".join(s.strip() for s in paragraph_lines).strip() + if text: + story.append(Paragraph(inline_md(text), styles["body"])) + paragraph_lines = [] + + def flush_code(): + nonlocal code_lines + if code_lines: + story.append(Preformatted("\n".join(code_lines), styles["code"])) + code_lines = [] + + title_done = False + for raw in lines: + line = raw.rstrip("\n") + stripped = line.strip() + + if stripped.startswith("```"): + flush_paragraph() + if in_code: + flush_code() + in_code = False + else: + in_code = True + continue + + if in_code: + code_lines.append(line) + continue + + if not stripped: + flush_paragraph() + story.append(Spacer(1, 3)) + continue + + if stripped == "---": + flush_paragraph() + story.append(Spacer(1, 6)) + continue + + if stripped.startswith("# "): + flush_paragraph() + text = stripped[2:].strip() + if not title_done: + story.append(Spacer(1, 28 * mm)) + story.append(Paragraph(inline_md(text), styles["title"])) + title_done = True + else: + story.append(PageBreak()) + story.append(Paragraph(inline_md(text), styles["h1"])) + continue + + if stripped.startswith("## "): + flush_paragraph() + story.append(Paragraph(inline_md(stripped[3:].strip()), styles["h1"])) + continue + + if stripped.startswith("### "): + flush_paragraph() + story.append(Paragraph(inline_md(stripped[4:].strip()), styles["h2"])) + continue + + if stripped.startswith("> "): + flush_paragraph() + story.append(Paragraph(inline_md(stripped[2:].strip()), styles["quote"])) + continue + + if stripped.startswith("- "): + flush_paragraph() + story.append(Paragraph("• " + inline_md(stripped[2:].strip()), styles["bullet"])) + continue + + if len(stripped) > 2 and stripped[0].isdigit() and stripped[1] == ".": + flush_paragraph() + story.append(Paragraph(inline_md(stripped), styles["bullet"])) + continue + + if title_done and stripped.startswith("**") and stripped.endswith("**"): + flush_paragraph() + story.append(Paragraph(inline_md(stripped), styles["h2"])) + continue + + if title_done and stripped.startswith("**Status:**"): + flush_paragraph() + story.append(Paragraph(inline_md(stripped), styles["meta"])) + continue + + paragraph_lines.append(line) + + flush_paragraph() + flush_code() + return story + + +def add_page_number(canvas, doc): + canvas.saveState() + canvas.setFont("DejaVuSans", 9) + canvas.setFillColor(colors.HexColor("#64748B")) + canvas.drawRightString(195 * mm, 10 * mm, f"MiniCISO Staff Service Catalog v5 — {canvas.getPageNumber()}") + canvas.restoreState() + + +def build_pdf(src: Path, out: Path) -> None: + register_fonts() + styles = build_styles() + text = src.read_text(encoding="utf-8") + story = parse_markdown(text, styles) + doc = BaseDocTemplate( + str(out), + pagesize=A4, + leftMargin=18 * mm, + rightMargin=18 * mm, + topMargin=16 * mm, + bottomMargin=16 * mm, + title="MiniCISO Staff Service Catalog v5", + author="Hermes Agent / Irlan Cidade", + ) + frame = Frame(doc.leftMargin, doc.bottomMargin, doc.width, doc.height, id="normal") + template = PageTemplate(id="main", frames=[frame], onPage=add_page_number) + doc.addPageTemplates([template]) + doc.build(story) + + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("source") + ap.add_argument("output") + args = ap.parse_args() + build_pdf(Path(args.source), Path(args.output)) + + +if __name__ == "__main__": + main()