Content location — single source of truth por categoria
Tabela canônica de "tipo de conteúdo → path no monorepo". Onde cada categoria de documento, asset ou metadata vive de forma única, sem duplicação nem symlink. Resolve o gap que existia na Stack: módulos às vezes mantinham specs inline (KMD), às vezes em meta/docs/stack/ (KVG), sem regra explícita. Esta policy cravra a regra. Aplica-se a conteúdo de leitura humana — não a estrutura de módulos (RFC-003) ou de Sectors (RFC-006), que têm policies próprias.
Policy — Content location: single source por categoria
*rincípio* cada categoria de conteúdo tem um path canônico único no monorepo. Sem duplicação, sem symlink, sem cópia. Quem precisa citar referencia pelo path completo. Quem precisa editar edita no path canônico.
Escopo
Esta policy define *nde cada tipo de conteúdo de leitura humana vive* Aplicase a docs, specs, RFCs, READMEs, runbooks, ADRs, post mortems, catalog entries — qualquer arquivo cujo consumidor primário é um leitor humano (não um runtime).
*ÃO está no escopo desta policy*(essas regras vivem em outros documentos):
| Tópico | Onde está documentado |
|---|---|
| Estrutura L1L2L3 do monorepo (products vs services vs engines vs infra vs meta) | RFC-003 + meta/docs/stack/taxonomy.md |
| Estrutura interna de um Sector (backend, app, engine/) | RFC-006 |
Backlog (<mod>/backlog/{pending,in-progress,done}/) |
policies/backlog.kmd |
| Landing pages (estrutura por tipo) | specs em metadocsstackspecslanding-pages/ (products, areas, sectors, institutional, catalog, packages, specs) |
| Ícones de produto (paths por plataforma) | specs/icons/products.kmd + specs/icons/generation-targets.kmd |
Extensão de arquivo (.kmd vs .md) |
policies/document-format.kmd |
Esta policy assume que os módulos já estão colocados corretamente pela L1/L2 taxonomy (não corrige isso) e foca em *entro de cada módulo / da árvore meta* qual conteúdo vai onde.
Tabela canônica
Specs normativas
| Categoria | Path canônico |
|---|---|
| Spec de formato (KVG, KMD, KPKG, ...) | meta/docs/stack/specs/<slug>/format.kmd |
| Spec por tópico cross-cutting (themes, voice, errors, ipc, ...) | meta/docs/stack/specs/<topic>/<sub-topic>.kmd |
| Spec de landing por tipo (products, areas, sectors, institutional, catalog, packages, specs) | meta/docs/stack/specs/landing-pages/<type>.kmd |
| Spec de ícone | meta/docs/stack/specs/icons/<scope>.kmd |
*egra dura* spec normativa nunca vive dentro do módulo da engine ou do produto que a implementa. O módulo referencia por path completo no README ou em comentários — sem cópia, sem symlink.
RFCs (Request for Comments — propostas arquiteturais)
| Categoria | Path canônico |
|---|---|
| RFC cross-stack (afeta múltiplos módulos) | meta/docs/stack/rfcs/RFC-NNN-<slug>.kmd |
| RFC scoped a um módulo (afeta só ele e seus consumers diretos) | <module>/docs/rfcs/RFC-NNN-<slug>.kmd |
Numeração: incremental por escopo. RFC001 crossstack é diferente de RFC-001 do koder_kit. Cada escopo tem seu contador.
Documentação de módulo
| Categoria | Path canônico |
|---|---|
| README do módulo | <module>/README.kmd |
| CHANGELOG do módulo | <module>/CHANGELOG.kmd |
| CONTRIBUTING (raro) | <module>/CONTRIBUTING.kmd |
| LICENSE | <module>/LICENSE (sem extensão; SPDX convention) |
| Catalog entry (descritivo curto pra index da Stack) | meta/docs/stack/modules/<slug>.kmd |
Architecture decision records (ADRs)
| Categoria | Path canônico |
|---|---|
| ADR scoped a módulo | <module>/docs/adrs/ADR-NNN-<slug>.kmd |
| ADR cross-stack | meta/docs/stack/adrs/ADR-NNN-<slug>.kmd |
ADR é diferente de RFC: ADR registra decisão *á tomada* RFC propõe discussão antes de decidir.
Runbooks operacionais
| Categoria | Path canônico |
|---|---|
| Runbook geral da Stack | meta/context/runbooks/<topic>.kmd |
| Runbook scoped a um módulo | <module>/docs/runbooks/<topic>.kmd |
Post-mortems
| Categoria | Path canônico |
|---|---|
| Post-mortem de incidente | meta/context/post-mortems/<YYYY-MM-DD>-<slug>.kmd |
Naming: data ISO no início ordena cronologicamente.
Memórias de sessão Claude/agentes
| Categoria | Path canônico |
|---|---|
| Memórias auto-geradas pelo agente | arquivos em ~.claudeprojects |
| K-saves e snapshots de sessão | meta/context/k-save/done/k-save-<timestamp>.md |
| Notices de lock entre sessões | meta/context/notices/active/lock-<slug>.md (ativo) ou meta/context/notices/archive/ |
Aqui .md é mantido como exceção da policies/document-format.kmd porque consumidores externos (agente Claude Code) leem extensão literal.
Reminders e listas pessoais
| Categoria | Path canônico |
|---|---|
| Lembretes do usuário (consultados pelo /k-reminders) | meta/context/reminders.md |
| Drafts e ideias soltas | meta/context/drafts/<YYYY-MM-DD>-<slug>.md |
Documentação interna do tooling
| Categoria | Path canônico |
|---|---|
Comandos /k-* slash |
meta/context/commands/<slug>.md |
Tasks reusáveis (@include) |
meta/context/commands/tasks/<slug>.md |
| Hooks de UserPromptSubmit | meta/context/claude/hooks/<slug>.sh |
| Settings global do Claude | meta/context/claude/settings.json |
| MCP config | meta/context/claude/.mcp.json |
Convenção de nomes de arquivo
Dentro do path canônico, o nome do arquivo segue:
- *pec de formato*
format.kmd(sempre, quando o slug do path identifica a spec). - *pec por tópico* nome descritivo do tópico (
packaging.kmd,wake-word.kmd). - *FC/ADR*
RFC-NNN-<slug>.kmdouADR-NNN-<slug>.kmdcom NNN = número de 3 dígitos (RFC-001,ADR-042). - *atalog entry*
<slug>.kmd(ou.mdpor compat histórica nos casosjá legados em
meta/docs/stack/modules/).
Migração de conteúdo no lugar errado
Quando uma sessão encontra conteúdo no path errado:
- Identifica a categoria (consulta a tabela acima).
- Verifica se há *ma cópia*ou *uas cópias divergentes*
- *ingle copy no path errado*
git mvpara o path canônico,atualiza refs com sed, commit em PR único.
- *uas cópias* identifica qual é a mais recente, aplica como
conteúdo final no path canônico, deleta a outra. Anota o histórico no commit message.
- Adiciona frontmatter mínimo (
name/type/summary/triggers/references)se o path canônico for em
meta/docs/stack/specs/oumeta/docs/stack/policies/— esses paths exigem frontmatter porpolicies/document-format.kmd.
Casos resolvidos sob esta policy (registros históricos):
- 2026
0430: KMD spec migrada deengines/lang/kmd/SPEC.kmd→meta/docs/stack/specs/kmd/format.kmd(commit7d7d185ff). - 2026
0430: KVG spec criada já no path canônico (meta/docs/stack/specs/kvg/format.kmd).
Por que esta policy existe
Antes desta policy, a Stack tinha inconsistência:
- KMD spec inline em
engines/lang/kmd/SPEC.kmd. - KVG spec em
meta/docs/stack/specs/kvg/format.kmd. - RFCs espalhados entre
meta/docs/stack/rfcs/,engines/sdk/koder_kit/docs/rfcs/,services/ai/kortex/docs/rfcs/, sem critério explícito de quando vai onde.
Sessões de IA e novos engenheiros tomavam decisões casoacaso, gerando drift. Esta policy é o ponto de citação canônico — quando houver dúvida sobre onde colocar algo, consultar esta tabela.
Roadmap
- v0.1 (esta policy) — codifica regra. Sweep manual em PRs cuidando
de violações.
- v0.2 —
koder-test-gatecheca criação de arquivos novos contra atabela e falha CI se path errado.
- v0.3 —
/k-housekeepaudita conteúdo existente, propõe migraçõespra paths canônicos quando achar violações em sweep periódica.