KMD — contrato de página/tema + embed nativo de KVG (fundação do KDX)
Summary
Extensão mínima, aditiva e retrocompatível do KMD v1.0 para servir de camada de significado do KDX (kdx-RFC-001). Três adições:
- Contrato de página (frontmatter):
page-size, margens, orientação,page-masters (capadefault…), para a projeção paginada-fixa.
- Binding de tema (frontmatter):
theme: verge[/variant]— resolve tokensVerge (cortipografiaespaço) de forma determinística.
- Embed nativo de KVG: bloco
kvg(fonte inline) **e**`
(referência, resolvida-e-embutida no publish), delegando o render ao runtime KVG / kicon.
O KMD já cobre o fluxo (headings, listas, tabelas com merge/largura, blockquotes, footnotes, admonitions, header/footer + vars §14, page-break §15, TOC §16, colunas §22, math §19, diagramas §20). Falta só página/tema e embed-KVG — o que este RFC adiciona.
Motivation
O KDX precisa de layout determinístico (pra projeção fixa/PDF) e de figuras vetoriais (KVG) embutidas semanticamente. Hoje:
- KMD não tem
page-sizemargenstema no frontmatter (layout não-determinístico). - KMD não embute KVG (
grep kvgno format.kmd = 0); só imagens ()e diagramas Mermaid-like (
diagram type=…).
A spec do KVG já referencia engines/lang/kmd — a ponte é intencional, só não foi escrita no lado do KMD.
Proposed additions (sketch — sujeito a refinamento)
1. Frontmatter — página
page:
size: A4 # A4 | Letter | "WIDTHxHEIGHT<unit>" (ex.: 210x297mm)
orientation: portrait
margin: { top: 22mm, right: 18mm, bottom: 20mm, left: 18mm }
masters:
cover: { margin: 0, background: theme.accent } # página full-bleed
default: {}2. Frontmatter — tema
theme: verge # ou verge/dark, verge/<brand>Tokens (cortipografiaespaço/sombra) resolvidos do Verge; fontes pinadas no bundle (ver kdx-RFC-001 §autocontenção).
3. Embed de KVG
# referência (resolvida-e-embutida no publish):

# OU fonte inline (fenced):profile Core scene { ellipse 120 120 r92 fill"#3B82F6" }
O render delega ao runtime KVG (<koder-kvg> / kicon). Texto da figura segue as regras de fonte do bundle.
4. Modo de projeção
mode: adaptive # reflow | paged | adaptive (default)adaptive = mesma fonte rende reflow (tela) e paginado (print), conforme a superfície.
Non-goals
- Não transformar KMD em HTML/app: sem scripting Turing-completo, sem
elemento-set arbitrário.
- Não fazer do KMD um formato de desenho — o embed-KVG delega ao KVG;
KMD não ganha primitivos vetoriais.
- Não quebrar KMD v1.0: tudo aditivo (ver compat).
Backward compatibility
- Frontmatter novo (
pagethememode) é opcional; um doc sem ele rendecomo hoje (reflow, tema default).
degrada para "imagem por referência" em readers KMD v1.0 (ourasteriza via kicon); o bloco
kvg ` degrada para code-fence rotulado.- Nenhuma sintaxe existente muda de significado.
Open questions
- Schema exato do
page/masters(reusar algo de CSS Paged Media? ou mínimopróprio?).
- Relação com
## 17. Includese## 18. Variables(page/theme herdados porinclude?).
- O contrato de página vive no KMD (este RFC) ou na camada KDX?
(proposta: KMD-level, reusado pelo KDX — evita duplicação.)
- Resolução de tokens de tema: build-time (pinado) vs render-time?
- Embed-KVG: só
CorePrintno print,MotionSolidsó em reflow/interativo?
Relação com a Stack
Filho de kdx-RFC-001. Par com kvg-RFC-003 (perfil Print + KVG→PDF). Editor de referência: Dok. Tokens: Verge.
Status: RATIFICADO (kmd-RFC-001), 2026-06-09. Contrato de página/tema + embed-KVG confirmado como extensão aditiva do KMD (owner via k-arch→k-go). Implementação fatiada em metadocsstack/backlog #133.