spec 1.0 · normativo
Frontmatter do registro de decisão Leji
Tradução assistida por agentes de IA. Em caso de divergência, prevalece a página em inglês. Se você encontrar algum problema no texto, abra uma issue ou envie um pull request.
Valida o frontmatter YAML de um registro de decisão. O corpo em markdown traz, em prosa, o contexto, a decisão e as consequências.
Campos
- #
idstringobrigatório Identificador estável desta decisão, por exemplo "adopt-leji".
Padrão
^[a-z0-9]+(-[a-z0-9]+)*$- #
titlestringobrigatório Título curto da decisão.
- #
status"proposed" · "accepted" · "superseded" · "deprecated" · "rejected"obrigatório O estado da decisão no ciclo de vida dela.
- #
datestringobrigatório A data em ISO 8601 em que a decisão foi tomada; ela é imutável depois de publicada, e uma mudança de status posterior não a move.
Padrão
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$- #
decidersarray de strings As pessoas que tomaram a decisão.
- #
supersedesstring O id do registro que esta decisão substitui.
- #
supersededBystring O id do registro que substituiu este. REQUIRED quando o status é "superseded": um registro substituído precisa apontar para o sucessor dele, para que o vínculo de substituição possa ser percorrido nos dois sentidos.
- #
affectedPathsarray de strings Os caminhos afetados pela decisão, relativos à raiz do repositório.
- #
affectedCategoriesarray de "domain" · "system" · "practice" · "governance" · "decisions" As categorias de conteúdo que a decisão afeta.
- #
linksarray de strings Referências que saem daqui, por exemplo para decisões ou issues relacionadas; opcional.
Schema e exemplo
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://leji.org/schemas/v1.0/decision-record.schema.json",
"title": "Leji decision record frontmatter",
"description": "Validates the YAML frontmatter of a decision record. The markdown body carries context, decision, and consequences in prose.",
"type": "object",
"required": [
"id",
"title",
"status",
"date"
],
"additionalProperties": false,
"properties": {
"id": {
"description": "Stable identifier for this decision, e.g. \"adopt-leji\".",
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
},
"title": {
"description": "Short title of the decision.",
"type": "string",
"minLength": 1
},
"status": {
"description": "Lifecycle status of the decision.",
"enum": [
"proposed",
"accepted",
"superseded",
"deprecated",
"rejected"
]
},
"date": {
"description": "ISO 8601 date the decision was made; it is immutable once published, and a later status change does not move it.",
"type": "string",
"pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"
},
"deciders": {
"description": "People who made the decision.",
"type": "array",
"items": {
"type": "string"
}
},
"supersedes": {
"type": "string",
"description": "id of the record this decision replaces."
},
"supersededBy": {
"type": "string",
"description": "id of the record that replaced this one. REQUIRED when status is \"superseded\": a superseded record must point to its successor so the supersession link is navigable in both directions."
},
"affectedPaths": {
"description": "Repository-root-relative paths the decision affects.",
"type": "array",
"items": {
"type": "string",
"pattern": "^(?!/)(?!\\./)(?!.*(^|/)\\.\\.(/|$))(?!.*\\\\).+$"
}
},
"affectedCategories": {
"description": "Content categories the decision affects.",
"type": "array",
"items": {
"enum": [
"domain",
"system",
"practice",
"governance",
"decisions"
]
}
},
"links": {
"description": "Optional outbound references, e.g. to related decisions or issues.",
"type": "array",
"items": {
"type": "string"
}
}
},
"if": {
"properties": {
"status": {
"const": "superseded"
}
},
"required": [
"status"
]
},
"then": {
"required": [
"supersededBy"
]
}
}Um registro de decisão em conformidade. Este schema valida o frontmatter YAML; o corpo em markdown traz o contexto, a decisão e as consequências.
---
id: adopt-leji
title: Adotar a camada de contexto Leji
status: accepted
date: 2026-06-10
deciders:
- Jo Lee
affectedCategories:
- governance
---
# Adotar a camada de contexto Leji
## Context
O conhecimento de engenharia vivia na cabeça das pessoas, em conversas de chat e em três arquivos de configuração de ferramentas que iam divergindo. Os agentes produziam código que não batia com os nossos invariantes, porque os invariantes não estavam escritos em lugar nenhum que uma ferramenta pudesse ler.
## Decision
Adotar o Leji no nível `indexed`: manifesto, perfil de boot, conteúdo de domain e de system, registros de decisão, índice gerado, changelog de máquina.
## Consequences
Os arquivos de configuração de fornecedores viram redirecionamentos de uma linha. As correções de contexto viajam nos mesmos PRs que expõem os problemas. A Jo é a dona da camada de contexto.