Stack Principles
Princípios raízes que guiam toda decisão arquitetural na Koder Stack. Princípios são guidelines (julgamento), NÃO regras (deterministic). Princípios podem entrar em conflito; cada par conflitante traz uma heurística de resolução pré-pensada para que IAs e humanos possam prosseguir sem deadlock. Princípio #1 (Meta First) é o lens através do qual os demais são aplicados.
Princípios são guidelines com julgamento, não regras deterministic. Conflitos entre princípios são resolvidos pelas heurísticas embutidas em cada par
conflicts_with → resolution. Audit deste arquivo é advisory (sinaliza tensão, não bloqueia).
How to use this document
When facing an architectural decision:
- Start with Principle #1 (Meta First) — ask "is this an instance of a
pattern I should solve once, or a one-off?"
- Check applicable principles for the decision domain (framework? spec?
command? code?).
- If two principles conflict, find the pair under one of their
conflicts_withblocks and apply the resolution heuristic. - If conflict is not in the matrix, the principle higher in this
ranking (lower number) wins by default — but document the new conflict in the next edit of this file.
policies/decision-graph.kmddescribes the meta-method for reducingN decisions to ~3 master decisions; this file lists the principles that feed those decisions.
1. Meta First
*Antes de resolver N instâncias, encontre o pattern. Antes de responder N decisões, mapeie o grafo. Antes de criar N artefatos, formalize a forma comum.*
Statement. Resolução instância-por-instância multiplica trabalho, cria drift, e força revisão a cada nova ocorrência. Pattern engine + lens consolidado paga dividendo cumulativo: cada nova instância já cai no caminho pronto.
Rationale. Engineering leverage é Meta First — Archimedes' fulcrum. Stack tem custo crescente quando cada feature reinventa: Settings tile do voice ≠ do update ≠ do error reporter. O custo do drift cresce com N.
Applies to. Framework design · decision making · spec creation · command creation · policy formalization · refactor.
Expressions (instâncias deste princípio nesta Stack):
Code First— encode pattern em binário em vez de N markdownsDivide and Conquer— listar reusos antes de criarQuality > Speed— escolher solução de longo prazo (pattern resolve uma vez)Decision graph— 3 Q-mestre cascateiam 12+ decisõesSpec audit framework— engine dinâmica vs N audit scripts hardcoded/k-audit unificado— 1 comando + subcomandos vs família de N comandos
Conflicts with:
- principle: Don't over-abstract / YAGNI
resolution: Meta First aplica quando há ≥3 instâncias do mesmo padrão OU quando o pattern ressurge frequentemente em planning sessions. Caso contrário, instância-by-instância é ok — premature abstraction também é problema. Heurística: regra dos 3 (extrair quando a 3ª instância aparece, não antes).
2. Quality > Speed
*Sempre optar pela solução mais completa, mais escalável, mais indicada pensando no longo prazo. Tempo não é restrição.*
Statement. Em qualquer decisão técnica — framework, SDK, spec, RFC, policy, ou implementação tática/produto — escolher a forma estruturalmente correta mesmo que demore mais. Não shippar "v1 com limitações pra arrumar depois" se uma forma melhor é alcançável. O único atalho permitido é quando o usuário pede velocidade/economia explicitamente. Este princípio é absoluto — não mais escopado só a framework (ratificado pelo owner 2026-05-29).
Rationale. Stack ainda em fase pré-homologação — não há cobrança real de prazo. Retrabalho arquitetural dói em qualquer camada (framework toca dezenas de módulos; produto acumula dívida que trava evolução). Sem deadline real, não há justificativa pra escolher a forma pior de propósito.
Applies to. Toda decisão técnica — framework · SDK · spec · RFC · policy · arquitetura cross-stack · implementação tática · produto · escolha entre opções/abordagens.
Checklist concreta. As dimensões pelas quais se mede "melhor de longo prazo" estão normatizadas em policies/architecture-quality.kmd (12 dimensões; escala é só uma delas, e a D12 — causa-raiz > sintoma é a que operacionaliza este princípio no ranqueamento: esforçotempogating não rebaixa um fix de raiz). Aplicar essa rubrica no desempate.
Expressions:
- Generaliza
feedback_kdb_id_v2_methodology(originalmente escopado akdb+id v2) para toda decisão Stack-wide
- Justifica preferir
koder-spec-auditengine dinâmica em vez de hardcoded - Justifica refactor do
/k-commitem fases mecânicas → binário - Justifica criar SDK widget + spec antes de adoção sweep
- Desempate de opções no
/k-go(Regra 13): entre alternativas conformes à Stack, prefere a de melhor arquitetura de longo prazo
Conflicts with:
- principle: Phase Acceleration
resolution: Quality > Speed em seleção de escopo de design. Phase Acceleration aplica em runtime de execução (
/k-gomodo D não pede confirmação a cada step). Não há conflito real: são camadas ortogonais (decisão estratégica × execução tática).
- principle: Hyperscale-first caveat ("ship simples se esforço
desproporcional") resolution: Quality ganha sempre — em qualquer decisão técnica, inclusive tática/produto, prefere-se a solução de longo prazo mesmo a maior custo de esforço. O caveat do hyperscale-first ("ship simples + ticket de promoção") só se ativa quando o usuário pede velocidade/economia explicitamente ("rápido", "MVP", "só pra destravar") — e mesmo aí abre-se ticket nomeando o caminho de longo prazo. Ratificado pelo owner 2026-05-29 (#2 absoluto, não mais escopado a framework/end-of-cycle). YAGNI continua valendo — ver conflito abaixo: longo prazo significa "completo pros usos reais conhecidos", não over-engineer especulativo.
- principle: YAGNI
resolution: Quality > Speed não autoriza over-engineer especulativo. Significa "completa pra os usos reais conhecidos", não "completa pra futuros hipotéticos". Heurística: a feature precisa atender ≥3 consumers identificados, não imaginados.
3. Code First
Encode o *determinístico em código (binário); deixe o analítico*em LLM (markdown).*
Statement. Operações com input fixo → output fixo devem ser binários. LLMs interpretam markdown de forma sutilmente diferente entre Claude, Codex, Gemini, etc. Binário garante resultado idêntico cross-LLM.
Rationale. Stack hoje tem ~10% binário e ~90% markdown — a inversão é necessária. Cada operação determinística escondida em markdown é dívida de drift (cada IA implementa um pouco diferente).
Applies to. Comandos /k-* · audit scripts · sync utilities · parsers · validators · generators.
Expressions:
koder-test-gate(existente) — enforcement de regression testkoder-stackdoc(existente) — sync de doc do Stackkicon(existente) — geração de variantes de íconekoder-spec-audit(proposto) — engine de spec auditkoder-commit(proposto) — fases mecânicas do/k-commitkoder-manifest(proposto) — parsing de UI → JSONkoder-parity-scan(proposto) — Fase 2 do/k-parity
Decision tree:
| Pergunta | Resposta | Implementação |
|---|---|---|
| Input fixo → output fixo? | sim | binário Go/Rust |
| Heurística estável (regras explícitas)? | sim | binário com config |
| Exige análise / criatividade / contexto / prioridade? | sim | LLM via markdown |
| Mistura dos anteriores? | misto | LLM orquestra binários |
Conflicts with:
- principle: Divide and Conquer (regra dos 3)
resolution: Não há conflito — eles compõem. Code First diz "se existe pattern determinístico, encode em código"; DnC diz "extrair pattern só após 3 instâncias". Juntos: 3+ instâncias deterministic → binário. Menos de 3, ou analítico → markdown.
- principle: Velocidade de iteração
resolution: Markdown é mais rápido pra prototipar; binário é mais rápido pra repetir. Heurística: prototipa em markdown; quando estabiliza (3+ usos sem mudança), promove a binário.
4. Divide and Conquer
*Antes de criar comandospecpolicy/binário novo, listar o que já existe que pode ser reusado.*
Statement. Stack tem drift de lógica duplicada — /k-commit e /k-housekeep ambos sincronizam doc; /k-commit e /k-go ambos varrem backlog; /k-parity Fase 2 e /k-test-gen-* ambos parseiam UIs. Cada drift é dívida.
Rationale. Reuso explícito é mais barato que detectar duplicação depois (/k-audit dnc pega só sintomas, não a causa).
Applies to. Criação de comando · spec · policy · binário · widget · endpoint API.
Checklist (5 perguntas) antes de criar item novo:
- Existe binário Koder com função similar?
- Existe `tasks