Linha de OS: tabela linhas-os.yaml como fallback quando o SD.md não declara

Decisão de 2026-09-04, revendo a de 2026-09-03 (sem de-para): o .md continua
mandando, e a tabela contrato/linhas-os.yaml (OS Mãe × linha × item) só entra
quando o entregável não declara `linha_os`. Linha declarada vai como está e não
é conferida contra a tabela; existência/item/status seguem sendo do banco.

- caminhos.LINHAS_OS; regras_sd: Canonico(itens, linhas_os), carregar_linhas_os
  (arquivo ausente = fallback desligado), preparar_linhas_os (valida: formato,
  linha repetida, dois `padrao`, `padrao` não booleano) e linha_da_tabela.
- exporta_sd: ausente → padrão do item; 2+ candidatas sem padrão → pendência
  nomeando-as; item fora da tabela → pendência. CLI informa quantas linhas
  vieram da tabela.
- app: sessao.adotar_linhas_da_tabela grava a linha no frontmatter da sessão
  com comentário de origem, para o Salvar SD.md deixar a SD autodeclarada;
  a tela marca `tabela` e mostra a data da tabela.
- testes: SD18, SD27, SD31–36 passam a exportar de saída; SD10 só PO+objetivo;
  casos sintéticos para tabela ausente, ambígua, sem o item e malformada.
- deploy: linhas-os.yaml vive em clientes/ (gitignored) — vai por scp ao volume.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-09-04 20:22:15 -03:00
co-authored by Claude Fable 5.1
parent 4ef1a7a4c8
commit a4b1374fad
11 changed files with 329 additions and 121 deletions
+3
View File
@@ -21,6 +21,9 @@ METODOS = RAIZ / "metodos"
DERIVADOS = RAIZ / "_derivados"
ITENS = CONTRATO / "itens.yaml"
# Fallback de linha de OS (OS Mãe × linha × item). OPCIONAL: ausente, o
# exportador exige `linha_os` declarado no SD.md, como antes de 2026-09-04.
LINHAS_OS = CONTRATO / "linhas-os.yaml"
# Visões GERADAS a partir das SDs (inversão da V0, 13/08/2026). Quem lê
# portfólio, carteira ou catálogo lê o resultado de `make derivar` — os