Business rules

Each rule has a statement, where it lives (file:line), and the test that covers it. If you change a rule, update the line here in the same change — that's what .docmap.yml requires with block severity.

They all live in apps/api/src/domain/, which is pure: no IO, no framework, no database. That's why each one has a fast, deterministic unit test.

  • RN-001 — A sessão tem cinco estados e transições fechadas
  • RN-002 — Todo evento de sessão é imutável e o seq é denso
  • RN-003 — A ação tem seis estados, e negada é terminal
  • RN-004 — A decisão é avaliada em três estágios, e deny vence na hora
  • RN-005 — Papel mínimo por tipo de ação
  • RN-006 — Teto: merge em branch protegida nunca é auto-aprovável
  • RN-007 — Teto: patch de instrução nunca é auto-aprovável
  • RN-008 — O casamento de comando é por padrão, não por substring
  • RN-009 — A história tem quatro estados, e done é terminal
  • RN-010 — draft → ready exige quatro coisas, validadas no domínio
  • RN-011 — Regra de negócio sem história é achado, não erro
  • RN-012 — A module removed from module_map demotes the story
  • RN-013 — O grafo de módulos não pode ter ciclo
  • RN-014 — A ordem dos gates é imutável e awaiting_user é terminal
  • RN-015 — Ciclo K: o teto de correção é finito e herdado
  • RN-016 — O veredito do gate prevalece sobre o enunciado da task
  • RN-017 — Orçamento tem escopo exclusivo: projeto ou sessão
  • RN-018 — Notificação de orçamento em 70%, 90% e 100%, sem repetir
  • RN-019 — policy = 'block' recusa a chamada; 'allow' só registra
  • RN-020 — O modelo é resolvido em cascata, do mais específico ao mais geral
  • RN-021 — Hipótese sem evidência válida não é gravada
  • RN-022 — O ciclo de vida da hipótese é compare-and-swap
  • RN-023 — A causa de término é classificação determinística
  • RN-024 — A Anamnese só perfila competência do catálogo — guarda-corpo estrutural
  • RN-025 — Apagar o perfil apaga de verdade, e o opt-out impede a re-derivação
  • RN-026 — Patch de instrução negado não é reproposto
  • RN-027 — Rollback de instrução é operação para frente
  • RN-028 — Capability decide, não o nome do provider
  • RN-029 — O bootstrap de Gitflow é idempotente e retomável
  • RN-030 — Reapresentar um refresh já usado revoga a família inteira
  • RN-031 — Falha de login é contada por e-mail e por IP, e o bloqueio escala
  • RN-032 — Nenhuma resposta distingue conta existente de inexistente
  • RN-033 — Token de verificação e de reset vale uma vez só
  • RN-034 — A sessão da web vive em cookie httpOnly, com CSRF
  • RN-035 — O tráfego interno engine ↔ api exige o segredo de serviço
  • RN-036 — QA vira área: o Lead consolida sem mudar o contrato do gate
  • RN-037 — Infra becomes an area: Workflows generates CI per provider, Lead consolidates into a single PR
  • RN-038 — Agente contado no resumo do workspace = gastou tokens este mês
  • RN-039 — Dot de status do projeto: risco sempre vence inatividade
  • RN-040 — Binding de agente exige tool calling nativo
  • RN-041 — Contagem de tokens que o provider não deu é marcada como estimada
  • RN-042 — O metering registra quem ATENDEU a chamada, não só por onde ela entrou
  • RN-043 — Um modelo descoberto entra desabilitado; um modelo que desaparece é marcado, nunca apagado
  • RN-044 — O preço vale daqui para a frente, e o custo antigo continua conferindo
  • RN-045 — Um repositório adotado só é alterado por um plano aprovado
  • RN-046 — Todo repositório de projeto declara a sua origem
  • RN-047 — Circuit breaker do dev agent: N bloqueios consecutivos o param, sem queimar orçamento em laço
  • RN-048 — A promoção de story é do usuário por padrão; o modo muda quem dispara, nunca o que se valida
  • RN-049 — Toda decisão sobre uma ação proposta fica no event log, com quem decidiu
  • RN-050 — Sem PR aberta, nenhum gate abre
  • RN-051 — Um preço digitado à mão vence o catálogo do provider
  • RN-052 — A curadoria de modelos vale só no workspace que a decidiu
  • RN-053 — Reativar a execução acorda quem está parado, dentro da sessão que já existe
  • RN-054 — O handoff externo se dirige ao lead da área ou a um agente sem área — nunca a um subagente
  • RN-055 — Credencial é sempre cifrada e gravada; verificar é ação à parte, com três respostas
  • RN-056 — Faceta de capability vem do provider; silêncio preserva o que estava
  • RN-057 — "Para que serve" é curadoria do workspace, e marcar uso não liga o modelo
  • RN-058 — A chave que o AGENTE gasta é a do owner do workspace
  • RN-059 — Falha de turno é evento durável com origem, e o agente fala
  • RN-060 — O gasto das chaves é do owner, e só ele vê
  • RN-061 — Uma falha de FERRAMENTA também é um evento, e volta para o modelo
  • RN-062 — Mensagem a agente conversacional REIDRATA o processo
  • RN-063 — Encerrar sem produzir é desfecho, não falha
  • RN-064 — Heartbeat não encerra sessão com trabalho pendente
  • RN-065 — Um module_map por SESSÃO; revisar é outra sessão
  • RN-066 — Toda resposta sobre módulos traz os nomes canônicos
  • RN-067 — Toda sessão nasce emitindo session.created
  • RN-068 — O dev agent lê o worktree sem pedir permissão
  • RN-069 — Repetir uma tarefa recria a branch, não falha
  • RN-070 — Todo gate declarado aponta para a evidência que o prova
  • RN-071 — Os quatro gates de autoridade do usuário não podem ser declarados automáticos
  • RN-072 — Sem escolha explícita, o modelo é o do agente Criativo
  • RN-073 — Uma aprovação pendente SUSPENDE o laço, não o queima
  • RN-074 — A saída de terminal tem teto de bytes
  • RN-075 — Comando de terminal é avaliado por onde toca, não só pelo verbo
  • RN-076 — A credencial de git nunca é escrita em arquivo
  • RN-077 — A origem da falha é sempre uma das quatro
  • RN-078 — Falha em proteger branches pode ser reconhecida, e só ela
  • RN-079 — O Psicólogo não analisa sessão sem evento analisável
  • RN-080 — Regra de negócio duplicada é recusada na entrada
  • RN-081 — História repetida: título igual recusa, justificativa igual avisa
  • RN-082 — A credencial de git de uma ação é a do OWNER do workspace
  • RN-083 — O lead decide o paralelismo; acima do teto, você autoriza
  • RN-084 — A esteira exibida deriva do registro de gates
  • RN-085 — O teto de iterações é por TIPO de agente
  • RN-086 — Gastar com mais agentes nunca se auto-aprova
  • RN-087 — O Dev Lead é o único endereço externo da execução
  • RN-088 — Falha de carregamento é dita na tela; 429 não se retenta
  • RN-089 — Projeto de nome repetido se desempata na barra lateral
  • RN-090 — O dashboard lê o workspace, não um projeto de cada vez
  • RN-091 — O navegador manda onde parou de ler; o sino é uma requisição
  • RN-092 — O projectId é segmento de caminho, e o escopo nunca sai da raiz
  • RN-093 — Em produção, a api não sobe com a chave de exemplo do state de OAuth
  • RN-094 — A área de agentes nasce com o projeto
  • RN-095 — A leitura de repositório é contida ao projeto e limitada
  • RN-096 — Toda decisão diz em português o que acontece; o payload cru nasce colapsado
  • RN-097 — O tipo da sessão é intenção de criação; a execução continua sendo evento
  • RN-098 — O nome da sessão soma à hashtag, nunca a substitui
  • RN-099 — Atividades pagina o passado sem repolar o que não muda
  • RN-100 — A ordem do sino é do SQL, não do front
  • RN-101 — O mesmo gasto, duas audiências: a fatura é do owner, o consumo é de quem gastou
  • RN-102 — O modelo da área é padrão herdável; divergir é decisão do agente, e voltar a herdar apaga a decisão
  • RN-103 — O binding de agente é POR PROJETO, não mais global
  • RN-104 — A aba deriva do tipo gravado, e cria nesse tipo
  • RN-105 — Sem imagem decidida pelo Arquiteto, o container não sobe e o Code não abre
  • RN-106 — git push, PR e deploy não saem pelo terminal — mesmo dentro do escopo do projeto
  • RN-107 — A aba Code tem um QUARTO estado: bloqueada por decisão pendente
  • RN-108 — O socket da sessão exige um ticket opaco de uso único, não o JWT reaproveitado
  • RN-109 — O nome de pasta do workspace é congelado na criação, e projeto antigo mantém o UUID
  • RN-110 — blame é a 13ª operação do GitProviderContract, com o mesmo vocabulário de ausência das outras leituras
  • RN-111 — listPullRequests é a 14ª operação do GitProviderContract; a lista navegável abre o mesmo diff por id
  • RN-112 — listBranchesDetailed é operação PRÓPRIA, separada de listBranches
  • RN-113 — Blame no editor é anotação SOB DEMANDA — um toggle, nunca embutida na leitura do arquivo
  • RN-114 — Os quatro segredos irmãos do GIT_OAUTH_STATE_SECRET também não sobem em produção com o valor de exemplo
  • RN-115 — A Anamnese pode ser pausada globalmente; a pausa é do PRODUTO, nunca apaga dado
  • RN-116 — Falha ao CRIAR um handoff não derruba o agente
  • RN-117 — O Psicólogo pode ser pausado globalmente; a pausa é do PRODUTO, nunca apaga dado
  • RN-118 — A árvore do time expõe detalhe de execução por marco, e abre os "5 últimos"
  • RN-119 — O agente ATIVO da sessão é o do agent.activated mais recente — nunca uma cadeia fixa
  • RN-120 — O poll de eventos da sessão pausa durante um turno em andamento
  • RN-121 — Dev agent e QA são "executores": aba própria, fora do "Time de agentes"
  • RN-122 — O botão "Parar" cancela o turno DE VERDADE, matando a task que segura a chamada de LLM
  • RN-123 — Sessão criativa sem agente Criativo ativo: a primeira mensagem TAMBÉM o ativa
  • RN-124 — O PO narra épico/história criados no fio, com link direto pro Backlog
  • RN-125 — O aceite de handoff é INLINE no fio, com CTA pro Dev Lead apontando pra Executores
  • RN-126 — Promoção de história é decidível INLINE no fio, com o mesmo mecanismo da aba Backlog
  • RN-127 — ref/path da aba Code recusam chegar como ARRAY, não só como caminho fora do escopo
  • RN-128 — sessionId/projectId/agent/agentId são validados ANTES de virar segmento de URL da requisição interna ao engine
  • RN-129 — O ToolLoop nunca grava agent.response vazio; falha de transporte vira agent.error durável
  • RN-131 — Três corridas confirmadas AO VIVO no fio da sessão: convite por cima do histórico, indicador ansioso e turno preso em handleReadiness
  • RN-135 — Ativar a execução fecha a sessão de CHAT que originou o pedido
  • RN-136 — O card acionável de handoff no chat só considera quem CONVERSA nesta tela
  • RN-137 — "Ativar execução" tem atalho inline no card do Dev Lead, sem baixar a exigência de papel
  • RN-138 — Mensagens de um agente colapsam depois que ele passa o bastão
  • RN-139 — A aba Executores lê a sessão de execução VIGENTE, nunca a mais recente do projeto
  • RN-140 — Um ciclo de gate que morre no meio retoma sozinho, sem intervenção manual
  • RN-141 — O conteúdo lido por read_file também tem teto de bytes
  • RN-142 — Confirmar prontidão SEM nenhuma regra de negócio é recusado pelo engine, não só escondido na UI
  • RN-143 — Um subcomando de git somente leitura só é permitido ancorado pela flag que torna a leitura inequívoca, nunca pelo verbo solto
  • RN-144 — A aba Criativo não lista a sessão de execução vigente
  • RN-145 — O Arquiteto também tem um botão de prontidão, e a MESMA confirmação oferece Infra e Dev Lead
  • RN-146 — agent.response carrega o nome do modelo que gerou a resposta
  • RN-147 — O cabeçalho do grupo colapsado mostra o ícone do agente, não só o nome
  • RN-148 — Histórias com promoção pendente ao mesmo tempo viram carrossel, não N cards
  • RN-149 — O Container level do diagrama C4 é derivado do module_map, nunca redigitado pelo modelo
  • RN-150 — search_workspace tem teto de QUANTIDADE de hits e de BYTES, cada um com sua marca
  • RN-151 — O badge de projeto na sidebar é aprovações pendentes, não atividade não lida
  • RN-152 — A branch de uma task diz de qual dev agent e módulo ela é, no dropdown da aba Code
  • RN-153 — "Auto mode": o ApprovalCard liga autonomia pra QUALQUER ação futura de um agente
  • RN-154 — Os três tetos absolutos continuam bloqueando MESMO com "auto mode" ligado
  • RN-155 — ordenação da timeline usa o vínculo proposed_action.created, nunca action.seq cru
  • RN-156 — indicador de espera de 5s tem texto fixo, sem interpolar o agente
  • RN-157 — criação de épico/história pelo PO vira aviso compacto, não bolha completa
  • RN-158 — Markdown leve com highlight no chat
  • RN-159 — Artefatos Gerados agrupados por agente
  • RN-160 — "Confirmar arquitetura pronta" exige pelo menos 1 história promovida
  • RN-161 — Aceitar o handoff pro Dev Lead encadeia a ativação de execução quando o papel efetivo já autoriza
  • RN-162 — Perguntas estruturadas do Criativo
  • RN-163 — O Criativo cumpre a promessa de tentar de novo
  • RN-164 — O PO LÊ o que já existe, escopado ao projeto
  • RN-165 — Épico sem história é cobrado, e o PO pergunta quando não sabe
  • RN-166 — O teto de iterações do PO deixa rastro
  • RN-169 — O projeto escolhe onde o código mora: Local ou Container
  • RN-170 — Caminho Local é validado na CRIAÇÃO, e a recusa ensina
  • RN-171 — A pergunta de lista tem saída por texto livre, por default
  • RN-172 — Handoff e aprovação são o DESFECHO do turno
  • RN-173 — O fio acompanha tudo que cresce, e só quem já estava no fim
  • RN-174 — Ação que dispara turno de agente arma o indicador do fio
  • RN-175 — Toda resposta de agente diz com qual modelo foi gerada
  • RN-176 — Tabela em Markdown no fio vira tabela de verdade
  • RN-177 — O log mostra tudo, e o histórico se recolhe por ORIGEM
  • RN-178 — O painel da sessão lê do último para o primeiro, e a lista de regras pagina
  • RN-179 — O artefato do PO é uma ÁRVORE: épico → história → tarefa
  • RN-180 — O painel diz o que NÃO está mostrando
  • RN-181 — Delegação de área aparece no fio
  • RN-182 — O tema é escolhido, persistido e aplicado antes do primeiro paint
  • RN-183 — A preferência de tema tem uma fonte, e o atributo do <html> é a verdade
  • RN-184 — Contraste é medido nos DOIS temas
  • RN-185 — Os oito papéis de sintaxe, e o valor do handoff só entra medido
  • RN-186 — provider é dimensão do relatório do owner, e só dele
  • RN-187 — A visão do membro não alcança provider, e quem garante é o TIPO
  • RN-188 — Pessoa e agente são partição da lista por ator, sem consulta a mais
  • RN-189 — O embedding devolve um vetor por entrada, ou um erro
  • RN-190 — O embedding tem uma capability em duas camadas, e a do modelo é exclusão
  • RN-191 — embeddings: true exige execução, não documentação
  • RN-195 — A sidebar recolhe para uma trilha de ícones, com a preferência persistida
  • RN-196 — Projetos expansíveis revelam as abas do projeto, N ao mesmo tempo
  • RN-197 — Duas cores de projeto, dois propósitos: identidade não é status
  • RN-198 — Atividades agrupa por agente-base/instância REAL, nunca por contador inventado
  • RN-199 — Botão de tema no rodapé, funcional recolhido
  • RN-200 — Só Projetos e Atividades como itens globais
  • RN-201 — Projeto/aba ativos persistem entre páginas; o colapso da sidebar é SÓ do usuário
  • RN-202 — A aba sessions continua "Chat", nunca "Chat RAG"
  • RN-203 — O handoff é referência visual, não teto de quantas abas o produto tem
  • RN-210 — "Recomendado" é uso real e custo, nunca nota calculada
  • RN-211 — Gasto por provider na tela é Ranking, não paleta categórica inventada
  • RN-212 — Bloco "por projeto" é o TokenMeter plugado ao orçamento real
  • RN-213 — Alerta de custo é leitura de lastThresholdNotified, nunca recálculo
  • RN-214 — KPI de economia com modelo local fica de fora por falta de preço contrafactual
  • RN-215 — Aba Problemas nasce com estado vazio honesto
  • RN-216 — Aba Saída nasce com estado vazio honesto
  • RN-217 — Status bar da aba Código só mostra dado real
  • RN-218 — Foco visível nas abas próprias do painel inferior
  • RN-219 — Os três escopos do índice de chunks são honestos, e mutuamente exclusivos por CHECK
  • RN-220 — Vetor e busca léxica vivem na mesma linha, nunca em tabelas separadas
  • RN-221 — search_vector nunca é escrita pela aplicação — é coluna GENERATED
  • RN-222 — A dimensão do vetor é documentada, não adivinhada, e embedding chega depois do chunk
  • RN-223 — O índice vetorial é HNSW, não IVFFlat, porque a tabela nasce vazia
  • RN-224 — A migração cria a extensão pgvector sozinha, de forma idempotente
  • RN-225 — Migração que pode exigir privilégio de operador nasce em breaking/
  • RN-226 — ChunkRepository cobre só escrita/leitura básica; createMany é operação de lote
  • RN-227 — Selo de status da sessão cobre os 5 estados reais, não os 4 do handoff
  • RN-228 — Filtro pill agrupa os 2 estados sem pill própria por TRAJETÓRIA
  • RN-229 — KPI "custo do mês" da aba Criativo é o consumo do ATOR, não o total do projeto
  • RN-230 — KPI "taxa ideação → commit" é declarado ausente, nunca calculado
  • RN-231 — ChunkRepository ganha DELETE e as duas metades da busca híbrida
  • RN-232 — Origem do texto indexado: docs/adr do repositório do PRÓPRIO projeto, session só de chat.message/agent.response
  • RN-233 — Provider de embedding indisponível: grava sem vetor e declara a lacuna, nunca finge indexação completa
  • RN-234 — Busca híbrida: duas consultas independentes, fusão por peso (0.6/0.4), limiar 0.2, e o contrato de citação
  • RN-235 — Chunking: 1200 caracteres, 150 de sobreposição, por parágrafo/heading
  • RN-236 — Reindexação é sempre MANUAL, full rebuild idempotente
  • RN-237 — Cobertura do índice é contagem REAL, nunca "há N minutos" inventado
  • RN-238 — As três rotas HTTP do RAG dividem papel por quem MUDA o que o produto gasta
  • RN-239 — Virtualização de linha: só a janela visível vira nó de DOM
  • RN-240 — Sem medição de altura, degrada para janela padrão generosa, nunca renderiza tudo
  • RN-241 — Minimapa reusa a MESMA tokenização da virtualização — zero segundo passe sobre o arquivo
  • RN-242 — Minimapa é CANVAS, um nó de DOM só, nunca um <div> por linha
  • RN-243 — O ciclo de vida do container é TABELA, e nenhuma linha dela chama Docker
  • RN-244 — A máquina de estados do container: só removed sai reprovisionando
  • RN-245 — A primeira transição exige a imagem já decidida, e CONGELA versão e recursos
  • RN-246 — Projeto em modo local não tem ciclo de vida de container
  • RN-247 — Uma linha por projeto: project_id é único
  • RN-248 — Teto de recursos DECLARADO, não aplicado — o campo existe para quando houver orquestrador
  • RN-249 — Alvo de clique do marco com detalhe sobe de 20px para o piso de 24px do Disclosure
  • RN-250 — Faixa de arquivo do diff em ApprovalCard NÃO migra para o Disclosure — a animação própria é a razão
  • RN-251 — Cinco call sites migram para o Disclosure compartilhado; o componente ganha testId como único hook novo
  • RN-252 — A tela do Chat RAG mostra as duas degradações honestas que o backend já declara, nunca as esconde
  • RN-253 — Citação de origem session navega até o EVENTO exato, reusando o mecanismo do Psicólogo
  • RN-254 — O botão de reindexar é maintainer/owner na TELA, espelhando a régua da rota
  • RN-267 — GET /projects/:projectId/container/lifecycle é a primeira exposição HTTP do ciclo de vida do container
  • RN-268 — A aba Terminal mostra o estado REAL do container, nunca finge um terminal que não existe
  • RN-272 — O callback do login social decide em ORDEM: identidade conhecida, depois vínculo por e-mail, depois conta nova
  • RN-273 — O state do login social tem propósito PRÓPRIO, mesmo assinado pela mesma chave do fluxo de conexão de git
  • RN-274 — Vincular identidade social a conta existente exige e-mail VERIFICADO pelo provider
  • RN-275 — Provisionar conta NOVA não exige e-mail verificado — só vincular a uma existente exige
  • RN-276 — providerUserId, nunca e-mail ou login, é a chave de identidade social
  • RN-277 — Login social pede escopo MÍNIMO, nunca o de conexão de repositório
  • RN-278 — Conta provisionada por login social nasce SEM senha — mesmo estado "pendente" da migração do Keycloak
  • RN-279 — Vincular por e-mail verificado também verifica o e-mail da conta existente
  • RN-280 — Login social recusa conta DESABILITADA, mesma régua do login por senha
  • RN-281 — O login social reusa o MESMO app OAuth da conexão de git — sem variável de ambiente nova
  • RN-282 — O access token do login social nunca viaja na URL nem no corpo do callback
  • RN-283 — Falha do callback de login social não vaza o motivo na URL
  • RN-284 — O turno do agente conversacional pode SUSPENDER esperando aprovação humana
  • RN-285 — O UX Designer é conversacional SOLO, sem área
  • RN-286 — propose_prototype grava artefato sem tabela e sem caso de uso dedicado, e oferece DOIS handoffs sobre o MESMO artefato
  • RN-287 — uxDesignerActive no roster, nas DUAS fontes (RN-090)
  • RN-305 — O Staff ativa pelo caminho GENÉRICO de handoff, sem USER_STARTED_AGENTS, e sem kickoff/1
  • RN-306 — propose_rfc grava o artefato DIRETO e devolve o handoff no MESMO tool call, sem proposed_action
  • RN-320 — analise-funil.ts é script, nunca agente — mesmo esqueleto de medir-execucao.ts
  • RN-321 — O funil conta SESSÃO por etapa, só ação executed, e o lead time usa updated_at da execução
  • RN-322 — Deployment frequency real filtra merge em branch PROTEGIDA; três métricas ficam DECLARADAS ausentes, nunca aproximadas
  • RN-340 — O gate implementavel decide a story ANTES do dev agent escrever código
  • RN-341 — A QA-estratégia é o segundo MOMENTO do qa-lead, e nunca suspende
  • RN-360 — O threat model de DESIGN roda sobre story + module_map, sem worktree/task_id, no MESMO processo do secops
  • RN-361 — O threat model concluído cria TRÊS handoffs, sempre endereçando o LEAD
  • RN-375 — O relatório declara a janela, nunca finge um histórico maior
  • RN-376 — O ranking trabalha só com o que bucket_key guarda: balde e quando
  • RN-377 — A seção "não medido" é permanente, e cita as três lacunas por nome
  • RN-385 — O papel platform nasce como SCRIPT de leitura pontual, sobre as mesmas fontes do DomainGaugesCollector
  • RN-386 — O relatório de telemetria declara, sem inventar, o que NÃO mede
  • RN-400 — O parecer de migração é análise ESTÁTICA de SQL, e ignora o padrão de risco quando ele só aparece em comentário
  • RN-401 — O linter não é gate de CI: varre o repositório inteiro, não o diff da PR
  • RN-402 — O relatório de backup relê exatamente a lógica de collectBackup(), nunca uma segunda forma de calcular
  • RN-403 — O relatório de backup NÃO reexecuta o restore; ele aponta para o procedimento já testado
  • RN-404 — "Confirmar arquitetura pronta" (RN-160) é revalidada no BACKEND, não só desabilitada na UI
  • RN-405 — A delegação Dev Lead → dev vira dado em delegations, com parecerArtifactId redefinido para "o que justificou a decisão"
  • RN-406 — O gate necessidade-validada se fecha com um clique SEPARADO do usuário, nunca com o Criativo se autovalidando
  • RN-407 — O PO lê o funil de entrega e DORA parcial, terceira leitura escopada ao projeto
  • RN-408 — MAIL_TRANSPORT=smtp deriva o boot pelo padrão da RN-114, sem o default público
  • RN-409 — "N online" soma dois mecanismos pela MESMA régua: não ocioso, não travado
  • RN-410 — Toda conta NOVA nasce com um workspace pessoal, na MESMA transação da conta
  • RN-411 — O quarto sinal de trabalho pendente: dev agents falam dev.*, não agent.status
  • RN-412 — dev.awaiting_gate/dev.awaiting_approval seguram a sessão; a janela efetiva de compactação é coerente com o transporte
  • RN-413 — Templates de prompt vivem fora do código, versionados no grafo
  • RN-414 — rag_search: agentes ganham a ferramenta que o produto nunca tinha exposto
  • RN-415 — Modelos Ollama garantidos no boot, degradação do RAG declarada
  • RN-416 — O grafo é memória DERIVADA, reconstruível por projeção da outbox
  • RN-417 — Psicólogo e Anamnese consultam por relevância, com degradação declarada para recência
  • RN-418 — Efeito externo git e comando privilegiado (sudo/doas) viram teto absoluto, nunca deny
  • RN-419 — O runner local se autentica por ticket de uso único, escopado a projeto e papel
  • RN-420 — Comando de agente roteado ao runner passa pelo MESMO pipeline de aprovação; PTY é ação do usuário, auditada
  • RN-421 — execution_mode tem TRÊS valores: container/mounted/runner
  • RN-422 — A validação de criação DIVERGE por modo: mounted toca disco, runner só o léxico
  • RN-423 — O runner CONFIRMA o caminho; sem confirmação, o comando é recusado — nunca cai no container
  • RN-424 — PAT autentica SÓ runner-ticket, por construção — nunca dual-auth com JWT nessa rota
  • RN-425 — Validação de PAT colapsa inexistente/revogado/expirado numa resposta só; escopo errado é 403; last_used_at nunca throttla
  • RN-426 — Listar/revogar PAT é escopado ao PRÓPRIO usuário, no WHERE da query — sem admin cross-user nesta onda
  • RN-427 — maintainer revoga PAT de QUALQUER usuário do projeto, escopado por project_id — resposta a incidente
  • RN-428 — Carrossel de promoção de histórias sobrevive à janela de eventos
  • RN-429 — Navegação de pasta local é relay puro pelo Runner, nunca a api enumerando o container
  • RN-430 — PRs são project-wide; a decisão usa o sessionId da própria ação, nunca a mais recente
  • RN-431 — O selo da aba Arquitetura conta pendência de validação, nunca "diagrama não gerado"
  • RN-432 — Preferência de idioma vem no payload de login/refresh, nunca numa chamada extra
  • RN-433 — O socket do terminal desiste depois de um timeout, o default de ENGINE_PUBLIC_URL é alcançável PELO BROWSER, e o endpoint não duplica path
  • RN-434 — No Linux, --dir do runner local só é aceito dentro do $HOME do usuário
  • RN-435 — --dir do runner local inexistente é criado, não recusado
  • RN-436 — FolderBrowserModal vira um explorador de três colunas: atalhos, lista com um clique seleciona/duplo clique entra, e um painel de detalhes
  • RN-437 — No modo runner, "Procurar pasta..." cria o projeto ANTECIPADAMENTE, e a confirmação final reusa por SNAPSHOT de identidade
  • RN-438 — fs-browser-channel.ts tinha o MESMO bug de path duplicado que a RN-433 já tinha corrigido no terminal-channel.ts irmão
  • RN-439 — POST .../runner-ticket autentica E autoriza no MESMO guard; RolesGuard (global) se abstém em rota @RequirePatAuth()
  • RN-440 — addressableAgents() é o catálogo FECHADO do handoff manual, mais estrito que assertHandoffTargetAllowed
  • RN-441 — POST .../sessions/:sessionId/handoffs exige developer; handoff manual nasce offered, sem estado novo
  • RN-443 — Budget de área é ADITIVO ao de projeto/sessão, nunca cascata; só maintainer muda o teto
  • RN-447 — Converter execution_mode de projeto EXISTENTE recusa (409) enquanto qualquer dev agent do projeto não está idle
  • RN-448 — permissions.json é RELOCALIZADO na conversão — o conteúdo nunca muda, só o caminho
  • RN-449 — Saindo de container, o ciclo de vida do container é encerrado (removed) ANTES da coluna mudar
  • RN-450 — workspaceVerifiedAt zera em TODA conversão real, mesmo voltando para runner com o "mesmo" caminho
  • RN-451 — Smoke do binário standalone roda o SUBPROCESSO real, nunca mock
  • RN-452 — node-pty resolvido por injeção, não import estático — e a lacuna que isso abriu no smoke do npm foi fechada no mesmo commit
  • RN-453 — --dir relativo do runner local resolve contra INIT_CWD, não contra o cwd rebaseado do pnpm
  • RN-454 — A aba Insights sabe que o Psicólogo está pausado ANTES de o usuário esbarrar no 503
  • RN-455 — chunks.scope ganha 'local', reusando o pipeline de RAG inteiro
  • RN-456 — Teto agregado REJEITA (400) o upload inteiro; arquivo individual grande/binário só é PULADO
  • RN-457 — maintainer, e reanexar é o MECANISMO de resincronizar — nunca o "Reindexar agora" genérico
  • RN-458 — Cobertura de local é forma PRÓPRIA, e lastAttachedAt é a ÚNICA exceção real ao "nunca Xmin" (RN-237)
  • RN-459 — Teto de iterações não termina mais calado em quatro dos seis agentes conversacionais
  • RN-460 — A faixa de atividade do turno narra em tempo real, e o fio só recebe a resposta no fim
  • RN-461 — Ollama nativo: pergunta uma vez, a resposta persiste em .env, nunca pergunta de novo
  • RN-462 — Pull de modelo Hugging Face exige confirmação explícita em duas etapas; nunca roda sozinho
  • RN-463 — Allowlist de publishers oficiais; comunidade exige opt-in explícito com aviso de segurança
  • RN-464 — Chave de dispositivo do runner: registro/revogação self-service; SEM visão de maintainer nesta rodada (corte declarado)
  • RN-465 — POST .../runner-ticket aceita PAT OU chave de dispositivo (Ed25519, TTL ≤60s) — segunda forma de credencial de DISPOSITIVO, nunca dual-auth com JWT de sessão (distinção da RN-439)
  • RN-466 — brabo-runner roda sem --project/--dir/--token quando a pasta tem config local gravada pelo navegador
  • RN-467 — O painel das cinco filas de decisão NUNCA soma e NUNCA executa: separa por fila e encaminha para a decisão
  • RN-468 — Sinal de ambiente diz o que SABE: workspaceVerifiedAt é registro de confirmação, nunca garantia de que o runner está vivo
  • RN-469 — Salvar uma seção são N chamadas, e a tela nunca afirma o desfecho que não obteve
  • RN-470 — A origem do modelo distingue binding próprio de herança do Criativo, e nenhum vazio da cascata usa o mesmo símbolo de outro
  • RN-471 — Papel na seção de Membros: maintainer, e derivado da linha do projeto sobre a do workspace
  • RN-472 — Ninguém rebaixa o owner do workspace, e ninguém rebaixa a si mesmo
  • RN-473 — A configuração do runner pelo navegador começa pela PASTA, e a falha do binário nunca descarta o que já foi configurado
  • RN-474 — Depois da instrução, a tela ESPERA o runner: três estados, teto, e o caminho que vale é o que o runner reportou
  • RN-475 — A JWK privada gravada pelo navegador carrega o kid do registro; e o CLI distingue "não há chave" de "há chave e ela não serve"
  • RN-476 — Aplicar um modelo a TODOS os agentes: um valor, N chamadas, e um botão apesar do valor ser nomeado
  • RN-477 — Provisionamento que falha DIZ que falhou, e a espera por ele tem teto
  • RN-478 — O permissions.json mora onde a api ALCANÇA, o escopo do terminal aponta para o HOST
  • RN-479 — Toda busca híbrida grava uma linha em rag_searches, com os pesos CONGELADOS; e a telemetria nunca derruba a busca
  • RN-480 — O voto sobre um trecho é o único sinal de VERDADE da medição, e ele exige a referência que a busca devolveu
  • RN-481 — rag.search/rag.feedback são NARRAÇÃO da timeline, e só existem quando há sessão
  • RN-485 — O broker de container não aceita especificação: ele recebe um projeto e COMPÕE
  • RN-486 — Estado REGISTRADO e estado OBSERVADO nunca se fundem, e "não olhei" tem motivo próprio
  • RN-487 — O Arquiteto roteia módulo por módulo, mas só CANDIDATA — quem elege é a Infra
  • RN-490 — O golden-set de acerto do RAG mede por CAMINHO DE ARQUIVO, no TOP-5, nunca por chunk exato ou rank 1
  • RN-491 — A Infra elege entre as candidatas do Arquiteto, e a eleição vira uma NOVA versão de artifact.project_image
  • RN-492 — O comando de terminal do dev agent roda DENTRO do container real, quando há um
  • RN-493 — Terminal dentro do container real ganha PISO de auto-aprovação, sem tocar nos tetos absolutos
  • RN-494 — O portão da imagem (RN-105) vale nos TRÊS modos de execução
  • RN-495 — container_stop/container_remove nascem como proposed_action, e só container_remove entra no teto absoluto
  • RN-496 — A página global de containers pergunta ao broker com TETO, e nunca funde registrado com observado
  • RN-497 — O brabo-runner sobe o container do projeto NA MÁQUINA DO USUÁRIO, com o Docker DELE
  • RN-498 — O golden-set do RAG roda em CI de verdade, AGENDADO — e o gate continua warn
  • RN-499 — O handoff da Infra tem card acionável PRÓPRIO, fora do fio — sem alargar AGENTES_DE_CHAT
  • RN-500 — Existe UMA base para os projetos montados, ela é montada por identidade, e ausente quer dizer "não ofereça o modo"
  • RN-501 — mounted valida só o LÉXICO e a base na criação; a pasta é MATERIALIZADA depois, por quem tem autoridade sobre o disco
  • RN-502 — Dev agent só reivindica task com container running, e o terminal não cai mais fora dele
  • RN-503 — Projeto mounted sobe container pelo BROKER, e o que atravessa a rede é um localizador discriminado — nunca um caminho absoluto
  • RN-504 — O navegador de pastas é escopado à base de projetos e NUNCA sai dela
  • RN-505 — decision_record reusa o padrão GENÉRICO de emit_artifact, não o dedicado
  • RN-507 — Docker vira pré-requisito real do modo runner: os TRÊS modos de execução exigem o MESMO predicado
  • RN-508 — container_start_via_runner: segundo tipo de ação para subir o container, exclusivo de runner, e o Infra Lead recusa às cegas ANTES de propor
  • RN-509 — "Sempre permitir" de um Dev Agent de módulo escopa a agent_autonomy, POR AGENTE — não mais o permissions.json de projeto inteiro
  • RN-511 — A base é CONSENTIDA uma vez no host, o compartilhamento é provado MONTANDO, e sem terminal o passo relata em vez de consentir
  • RN-512 — O broker sai do profiles no compose LOCAL e só nele, e o DOCKER_GID passa a ser relatado no preflight
  • RN-513 — Com base consentida, mounted é o pré-selecionado com <base>/<slug> sugerido; sem base, ou sem saber, ele não é oferecido
  • RN-514 — O runner DECLARA o que sabe fazer no join, o servidor CONCEDE a interseção em socket.assigns, e mensagem sem capacidade é RECUSADA em vez de sumir
  • RN-515 — O destino do espelho é declarado POR PROJETO e nunca é global; null é o estado normal; e a api valida SÓ o léxico, dizendo que é só o léxico
  • RN-516 — O destino do espelho viaja na CONCESSÃO do join, o espelho copia a lista do git numa direção só e nunca apaga, e o gatilho é um momento nomeado — nunca um watcher
  • RN-517 — O desfecho de cada rodada do espelho volta pelo canal e vira TELEMETRIA numa tabela própria; "nunca sincronizou", "sincronizou e não copiou nada" e "falhou" são TRÊS respostas, e sucesso e erro convivem
  • RN-518 — brabo-runner service install|uninstall|status instala nível de USUÁRIO e nunca root; uninstall limpa a pasta que a UNIT registra; status responde quatro estados sem colapsar nenhum; Windows é recusa nomeada
  • RN-519 — Ninguém revoga o que não consegue ver: a chave de dispositivo ganha listagem do PRÓPRIO dono, e a visão de maintainer fica fora por DECISÃO
  • RN-520 — Revogar deixa de só impedir ticket NOVO e passa a derrubar a conexão VIVA; o alvo é {projeto, usuário} e nunca {chave}, e derrubar nunca derruba a revogação
  • RN-521 — A página /containers lista TODO projeto do workspace e vira o caminho HUMANO de subir o container, ramificado por execution_mode
  • RN-522 — O repositório é provisionado ao ACEITAR o handoff Arquiteto → Dev Lead, sempre local, e a falha nunca derruba o aceite
  • RN-523 — A pasta docs/ é PROJEÇÃO do event log: derivada, por agente, e nunca fonte de verdade
  • RN-524 — Artefato publicado é assinado por identidade de workflow, verificado no mesmo run, e a verificação recusa em vez de avisar
  • RN-525 — O proxy do binário confere o hash contra o manifesto da mesma release, recusa quando não pode conferir, e DIZ que isso é integridade e não procedência
  • RN-526 — O instalador verifica a própria origem, NOMEIA o que achou antes de perguntar, e nunca apaga pasta de usuário
  • RN-527 — A instalação sobe de um compose PRÓPRIO, por imagem escolhida, e confere a saúde antes de dizer que instalou
  • RN-528 — git_local_repos entra no backup, o destino pode ser disco, e o restore de compose reusa as MESMAS três validações
  • RN-529 — O brabo-runner nasce com uma BASE local, cada projeto é uma subpasta dela, e a base NUNCA invalida --dir
  • RN-530 — Migrar exige backup PROVADO: o instalador só ganha o direito de apagar depois de restaurar
  • RN-531 — O instalador consente UMA base para os dois lados e instala o agente local já executável
  • RN-532 — workspace_create cria a pasta sob a base LOCAL, e quem GRAVA continua sendo o workspace_confirm que já existia
  • RN-533 — Em modo runner o navegador de pastas pergunta ao agente local, e a tela diz de quem é o disco
  • RN-534 — O instalador entra no manifesto assinado, e é exercitado numa máquina limpa
  • RN-539 — assess_implementability dispara o threat model de DESIGN em PARALELO, e uma vez só por story
  • RN-540 — Flag booleana lida pelo runtime.exs é mapeada no environment: do serviço engine dos dois composes, com o default do código
  • RN-541 — Criar um projeto NÃO cria repositório git; o bootstrap é adiado até o handoff do Arquiteto
  • RN-542 — O instalador compara a versão instalada com a que vai instalar, e a oferta é específica por relação
  • RN-543 — runner_device_keys.project_id nulo é a chave de MÁQUINA: vale para os projetos do DONO, resolvida contra o projeto pedido
  • RN-544 — O agente local abre N conexões, uma por projeto descoberto pela rota — e o teto de tentativas e a recusa de join deixam de ser do PROCESSO
  • RN-545 — service install --machine instala UMA unit para a máquina, e as duas espécies não se sobrepõem
  • RN-546 — Rota interna cria a PRIMEIRA conta, já verificada, e recusa quando existe qualquer usuário
  • RN-547 — O instalador cria a primeira conta, registra a chave desta máquina e sobe o agente como serviço — e o que falha no meio é RELATADO, nunca desfeito nem engolido
  • RN-548 — Com chave de MÁQUINA ativa, o painel do runner para de mandar parear e passa a dizer o que falta — sem nunca afirmar que o agente está de pé
  • RN-549 — O E2E em máquina limpa prova a instalação INTEIRA: os cinco elos, o agente de pé esperando, e o primeiro projeto pego sem ninguém voltar ao terminal
  • RN-550 — Com ZERO conexões o agente local NÃO sai: ele espera e reconsulta a lista; com conexão viva a consulta continua sendo só no start
  • RN-551 — brabo-runner device-key create/finish: o par Ed25519 nasce NA MÁQUINA, a privada nunca viaja, e o arquivo que o runner lê nunca existe sem kid
  • RN-552 — Rota interna registra a chave de dispositivo de MÁQUINA, para o usuário ÚNICO da instalação, e registrar SUBSTITUI
  • RN-556 — Remover a própria linha de project_members é recusado com 403 quando o efeito líquido é rebaixamento
  • RN-557 — Mudar o PRÓPRIO papel é recusado com 403 nas duas rotas de associação, nos dois sentidos
  • RN-558 — Credencial no exec com container ativo é RECUSADA pelo runner, com desfecho nomeado e origem politica
  • RN-559 — A conversão para mounted abre o MESMO navegador de pastas do wizard; o ramo runner continua digitado, e a tela diz por quê
  • RN-560 — O aviso da conversão diz o que ela recusa, o que ela leva e o que ela NÃO leva — nomeando o caminho antigo
  • RN-561 — A aba Configurações lista e revoga chave de dispositivo, marcando a ESPÉCIE — porque revogar a de MÁQUINA derruba o agente local em TODOS os projetos do dono
  • RN-562 — A rotação da chave mestra é provada ponta a ponta, nas duas tabelas
  • RN-563 — O envelope diz qual chave o embrulhou, e esse rótulo nunca decide se ele abre
  • RN-565 — O manifesto assinado sai com o que a Release TEM, e não espera a plataforma que nunca constrói
  • RN-566 — O Infra Lead recusa container_start por MODO antes de propor: a lacuna da RN-494 fecha na tool que a declarava
  • RN-567 — proposed_action.created diz QUAL regra decidiu: o reason de decide() passa a sobreviver quando a ação passa
  • RN-568 — A presença de QA, SecOps e dos membros de área no painel do time é decidida pela sessão INTEIRA, não pela janela de 200 eventos
  • RN-569 — O grafo é reconstruído do event log pelo MESMO tradutor do projetor vivo, sem tocar a outbox, e nunca sai como sucesso calado
  • RN-570 — O instalador sobe a instalação só com arquivos que a Release assinou, conferidos antes de perguntar ou gravar qualquer coisa
  • RN-572 — A árvore do time traduz todo tipo dev.* que o engine emite, e só diz trabalho em curso onde o painel diz trabalhando
  • RN-573 — O assistente de criação só pré-seleciona o modo que a instalação executa: sem broker, runner é o sugerido e container/mounted ficam inertes com o motivo em texto
  • RN-574 — A /containers recusa antes do clique a subida de container/mounted numa instalação sem broker, com motivo próprio em texto
  • RN-575 — O instalador só liga o broker de container com um "s" digitado, mede o grupo do socket de dentro de um container, e grava as quatro linhas juntas ou nenhuma
  • RN-577 — open_adr_pr e open_infra_pr são recusadas pelo agente, antes de propor, quando o projeto não tem repositório
  • RN-578 — O clique que dispara turno de agente responde ao ACEITAR, e a recusa deixa de ser calada
  • RN-579 — Com o canal da sessão vivo, a tela de Sessão troca o poll curto por invalidação e um fallback longo; resposta de corpo vazio tem ETag
  • RN-580 — O agente conversacional que sobe sobre uma conversa recebe o FIM dela, com perguntas e ferramentas, e o começo que não coube é resumido com o número escrito
  • RN-581 — A conversa em curso segura a sessão por até 8h, e a sessão encerrada recusa conversa
  • RN-582 — O aceite do handoff ao Arquiteto provisiona o repositório; o aceite ao Dev Lead é a segunda porta, idempotente; e execution/activate sem repositório é 409 nomeado
  • RN-583 — O critério de roteamento do hub é do binding, viaja com ele, e congela no metering
  • RN-584 — A mensagem de chat não tem destinatário padrão: cada agente que conversa tem cláusula própria, e o resto é recusa nomeada
  • RN-585 — O fim do turno só fica visível depois de o turno fechar no agente
  • RN-586 — O turno que o reinício do engine interrompeu fecha com desfecho durável, e nunca é refeito
  • RN-587 — A mensagem que nenhum agente leu fica no fio dizendo isso: o engine grava o agent.error da recusa
  • RN-588 — Repassar uma sessão não deixa o pod antigo apagar a linha do par
  • RN-589 — O texto que a ferramenta devolveu entra no tool.result, cortado com o total dito
  • RN-590 — A pasta docs/ dos artefatos é reconstruída do event log pelo MESMO tradutor do projetor vivo, sem tocar a outbox, e nunca sai como sucesso calado
  • RN-591 — A instalação sem broker é dita na conversão de modo, em parar/remover e na proposta do Infra Lead, pela mesma fonte da RN-574
  • RN-592 — A listagem de sessões diz qual é a técnica, pelo vínculo em repo_bootstraps, e a tela lê o marcador em vez do nome
  • RN-593 — O Dev Lead suspenso e o Infra Lead gravam o tool.result pelo módulo comum
  • RN-595 — Toda _PREVIOUS que um serviço lê chega a ele pelos três composes, vazia por padrão
  • RN-597 — Trocar o pepper é logout global
  • RN-598 — O token de serviço ANTERIOR passa pela mesma régua do atual
  • RN-599 — No compose de dev a api encontra o broker sozinha, e a falta da pasta gerenciada é dita a cada subida
  • RN-600 — A criação de projeto pela tela não manda o corpo que a api já se sabe que recusa, uma criação por vez, e a recusa aparece na tela
  • RN-601 — O engine e o broker aplicam aos dois tokens de serviço a régua da api
  • RN-603 — O modo automático libera o escopo de caminho, e só ele
  • RN-604 — A chamada ao broker tem um teto POR OPERAÇÃO, e o teto estourado diz que foi o teto
  • RN-605 — O pull de imagem é um passo NOMEADO do start, sob o teto de controle, e o estouro diz que imagem grande não sobe
  • RN-609 — proposed_action.created diz QUAL raiz o escopo comparou, relativa e nunca absoluta
  • RN-610 — O Infra Lead recusa a subida por ESTADO, na ordem da /containers: já de pé, sem imagem, pasta nunca confirmada
  • RN-611 — A chave de MÁQUINA ganha listagem e revogação por CONTA, sem :projectId: só as de máquina, só as do próprio usuário, e a revogação é a MESMA de sempre
  • RN-612 — Converter para runner é converte, DEPOIS onboarda: salvar monta o painel de onboarding do projeto agora runner, e o navegador de pastas fica fora por construção
  • RN-613 — AUTH_TOKEN_PEPPER é obrigatório e próprio; quem migra o define com o AUTH_JWT_SECRET atual
  • RN-614 — A tela mostra o motivo da política e a raiz do escopo, numa frase só, nos dois lugares
  • RN-615 — A remoção de membro de WORKSPACE nasce com o teto 2 herdado: remover a si mesmo é 403, e é essa cláusula que segura o último owner, sem contar
  • RN-616 — O TITULAR do workspace não sai pela remoção de membro: 409 criador_do_workspace até transferir, e a titularidade só vai para outro owner
  • RN-617 — O Infra Lead conversa pelo composer, e o turno dele passa pelo TurnoAssincrono: aceite imediato, "Parar", turno órfão fechado
  • RN-618 — O idioma das respostas é da PESSOA: escolha na conta, override por sessão, e a precedência que termina sempre num idioma
  • RN-619 — O projeto tem um idioma, o de tudo que não tem autor humano, e ele nasce do idioma de quem cria
  • RN-620 — A barra da sessão mostra o idioma das respostas de QUEM VÊ, com a origem, e trocar ali é o override só daquela pessoa naquela sessão
  • RN-621 — O resumo da compactação mantém o idioma original de cada turno, e não traduz citação nem código
  • RN-622 — O idioma chega ao modelo como a ÚLTIMA mensagem de cada chamada do turno, efêmera: o do AUTOR quando há um, o do PROJETO quando não há
  • RN-623 — Num turno COM autor, a resposta é no idioma da pessoa e o ARTEFATO compartilhado é no idioma do PROJETO
  • RN-624 — A api detecta o idioma do autor pelas próprias mensagens e PERGUNTA; só o confirmado vira preferência
  • RN-625 — O laço pergunta ao Jev qual ferramenta, e o modelo do usuário vê só o menu que sobra; o Jev restringe e nunca decide
  • RN-626 — O chat da sessão decide o que os agentes propuseram noutra sessão, mostra o turno que estava em curso e propõe o merge — sem mudar teto nenhum
  • RN-627 — O container do projeto roda com o dono da pasta, medido pela api
  • RN-628 — O merge executado fecha a tarefa da PR: done, uma vez só
  • RN-629 — O QA Lead trata o subagente que SUSPENDE de novo na retomada do mesmo jeito que na primeira vez, e resultado que não conhece vira bloqueio nomeado
  • RN-630 — Quem está ativo na sessão se lê da sessão INTEIRA, não dos últimos 200 eventos
  • RN-631 — O destinatário do chat é escolhido e visível, e a oferta de handoff é casada pelo handoffId
  • RN-632 — Leitura de PROJETO polla no ritmo de projeto, e toda tela que ouve o canal da sessão invalida pela MESMA janela
  • RN-633 — O handoff manual não declara prontidão, e "já ativo" para a oferta é do projeto
  • RN-634 — Depois de "Ativar execução", a tela vai à sessão de execução
  • RN-635 — Uma oferta de handoff pendente por destino no projeto; a que deixa de valer vira superseded
  • RN-636 — O AppSec só oferece o threat model a quem ainda não recebeu oferta nem está ativo
  • RN-637 — A tela lê a CAUDA das ações da sessão, e a pendente antiga volta junto
  • RN-638 — Quem pergunta "o que espera decisão" lê a fila do PROJETO, nunca a sessão mais recente
  • RN-639 — O que muda por token não re-renderiza a tela, e o que acompanha o bootstrap polla a 3 s e para no fim
  • RN-640 — A paleta neutra fecha a dívida de contraste, e cor da UI só vem de token
  • RN-642 — "Sempre permitir" aprova e grava o padrão na MESMA transação; clique em ação já aprovada é sucesso nomeado
  • RN-643 — Abaixo de 768px a sidebar vira gaveta e o trilho do projeto vira barra horizontal; a página nunca rola de lado
  • RN-644 — O fio corta por MENSAGEM, nunca parte uma troca e recolhe o histórico na ordem em que aconteceu
  • RN-645 — Configuração não se busca de novo a cada montagem, não polla, e a aba Configurações tem três faixas de moldura, não quatro
  • RN-646 — Bloqueio e controle inerte dizem o motivo de QUEM está na tela: a aba PRs fala da lista de PRs, e Parar/Remover sem container dizem que não há container
  • RN-648 — A sidebar, o card do Dashboard e o painel de artefatos não se contradizem: cada estado vazio diz QUAL sessão leu, e contador e lista contam na mesma unidade
  • RN-649 — Sessão closed/closed_abnormally reabre para active com o log intacto, e o fechamento anterior vira evento novo
  • RN-650 — Reabrir é developer, por rota própria, e a tela só oferece o botão a quem alcança o papel
  • RN-651 — No telefone, o painel da Sessão é gaveta, a barra quebra linha, e a tabela vira cartões
  • RN-652 — chat.message é desenhado sob o ATOR do evento — pessoa, agente ou desconhecido —, nunca sob quem vê a tela
  • RN-654 — Os bindings resolvidos de todos os agentes e áreas vêm numa leitura só
  • RN-655 — GET workspaces/:id/members é viewer, e devolve só id, nome, e-mail e papel
  • RN-656 — A leitura de eventos da sessão filtra por actionId, e cada cartão da aba Aprovações lê o próprio motivo por ela
  • RN-657 — "Estou pronto — a necessidade está validada" fecha os DOIS gates num POST, com o product_brief produzido depois do clique
  • RN-658 — O aceite do handoff Criativo→PO é implícito no "Estou pronto": os MESMOS eventos, com a pessoa como ator e a marca implicito
  • RN-659 — Projeto novo nasce com promoção de histórias automática; projeto existente fica no modo que tinha
  • RN-660 — O handoff do PO ao Arquiteto é aceito pelo SISTEMA quando o backlog está coberto e o repositório é local e sem credencial
  • RN-661 — O modo automático é OFERECIDO em lote para o time no início da execução, e a oferta diz o que ele não libera
  • RN-663 — O merge de PR recusa a PR já mergeada e a proposta repetida; gate pendente é só aviso
  • RN-664 — O trabalho dos agentes nasce de dev, a PR deles mira dev, e o gate julga o diff contra dev — os três juntos
  • RN-665 — O custo real que o provider devolve é o número do metering; o catálogo fica onde ele não vem
  • RN-666 — O metering grava quanto da entrada veio de cache e quanto da saída foi raciocínio
  • RN-667 — O formulário estruturado segue o idioma da resposta: a descrição da ferramenta não fixa idioma nenhum
  • RN-668 — O que o turno do Infra Lead anuncia sobre a subida do container é decidido pelo código, não pelo texto do modelo
  • RN-669 — O escopo de caminho compara com a pasta REAL de execução: /work e o /tmp do container quando ele está de pé
  • RN-670 — O modo automático é o PILOTO AUTOMÁTICO, e "Sempre permitir" não o desliga
  • RN-671 — A Infra sobe o container no aceite do handoff: o servidor propõe, e a autonomia semeada aprova
  • RN-672 — O handoff ao Dev Lead sai da Infra, e só com o container do projeto running
  • RN-673 — A mensagem que chega com turno em curso entra numa fila persistida no log e é lida no fim do turno, N mensagens num turno só
  • RN-674 — A QA-estratégia escreve o plano sobre o código ENTREGUE, no começo do ciclo do qa-verificada, e o implementavel se julga sem ele
  • RN-675 — "Sempre permitir" grava VERBO + SUBCOMANDO, um padrão por segmento do comando
  • RN-676 — Com container ativo, o git fetch credenciado de RunnerGit roda no HOST do runner, marcado pelo engine; o código continua no container
  • RN-677 — Aceitar o Dev Lead só o traz para planejar; APROVAR o plano dele é o que ativa a execução
  • RN-678 — A tarefa pertence a um módulo, atribuído pelo Dev Lead no plano, e só o dev daquele módulo a pega
  • RN-679 — A curadoria recusa o alias de roteamento livre do OpenRouter
  • RN-680 — A Anamnese não roda sem sujeito elegível, e a hipótese que a própria pessoa aceitou vira fato do perfil dela no grafo e entra no contexto dos agentes que conversam com ela
  • RN-681 — História e regra parecidas com uma existente geram AVISO por embedding, nunca recusa; o gasto da checagem é linha própria do metering
  • RN-682 — A consultiva sem agente pede um agente: o composer não envia sem destinatário, e a rota de chat recusa com nome
  • RN-683 — A Infra sobe o container com o MENOR recurso elegível, derivado do que o Arquiteto declara por módulo no module_map
  • RN-684 — O contrato entre módulos é artefato versionado do Arquiteto, e o dev agent o lê pela ferramenta, nunca no worktree de outro dev
  • RN-685 — Revogar uma credencial derruba só as conexões abertas COM ELA: o ticket do socket guarda a credencial, e o alvo deixa de ser {projeto, usuário}
  • RN-687 — O painel do runner manda para o instalador; o navegador não gera chave, não baixa binário e não grava pasta
  • RN-688 — O binário do runner lê o PTY com leitor próprio sob o Bun, e o auto-teste prova a SEGUNDA leitura
  • RN-689 — git_push e pr_open tipados nunca são auto-aprováveis: o teto da RN-418 vale para o comando E para a ação
  • RN-690 — O assistente guarda os toolCalls da resposta: o resultado da ferramenta não chega órfão ao provider
  • RN-691 — O install.sh PERGUNTA se liga os modelos locais (profile llm), mede a porta do Ollama antes de gravar, e compõe UMA linha de COMPOSE_PROFILES
  • RN-692 — Só o projeto compose brabo é instalação anterior, e a migração oferece reinstalar DO ZERO depois do backup provado
  • RN-693 — Ativar o agente não é conversa: a dica de abertura fica no fio até a primeira mensagem, e os campos de texto da sessão não convidam o autofill
  • RN-694 — O catálogo de modelos tem busca, a credencial oferece o sync, e o primeiro modelo vai ao time num clique
  • RN-695 — A análise da Anamnese não entra no fio da sessão
  • RN-696 — O nível de proficiência por competência chega aos agentes que conversam com a pessoa
  • RN-697 — O turno da prontidão do Criativo só sintetiza: sem ferramentas
  • RN-698 — O texto do turno vira UMA resposta, e o teto de iterações aparece no fio
  • RN-699 — O Dev Lead lê o module_map vigente e o backlog do PROJETO, e relê os dois quando o plano é recusado
  • RN-700 — O PO não anuncia o handoff ao Arquiteto sem fazê-lo, e história sem tarefa não é entregue
  • RN-701 — O painel de contexto não afirma "0" sobre regras que saíram da janela
  • RN-702 — A compactação de contexto respeita a janela padrão de 128k e nunca troca turnos por um marcador vazio
  • RN-703 — Subagente sem modelo herda o modelo resolvido do lead da área
  • RN-704 — O merge do repositório local é merge de verdade, e conflito é recusa nomeada
  • RN-705 — A recusa de merge aparece na aba PRs, e a falha grava o tipo da ação
  • RN-706 — O agente de execução sabe onde está: pasta, imagem, rede, git tipado e o próprio módulo
  • RN-707 — O semgrep do gate de SecOps tem $HOME gravável, e a falha sem saída é nomeada
  • RN-708 — O projeto novo diz o próximo passo, derivado do que já se lê
  • RN-709 — O cartão diz o tempo certo do verbo, o teto não oferece "sempre permitir", e o plano diz quanto custa e só sobe agente com tarefa
  • RN-710 — O Workflows não é delegado sem CI que rode, e não pergunta a ninguém
  • RN-711 — O conversacional sabe onde está no fluxo, e a restrição técnica do usuário vira decision_record
  • RN-712 — O fio da sessão mostra o que acabou de acontecer, uma vez e legível
  • RN-713 — Com o modo automático do agente, git_push e pr_open são auto-aprovados; só a curinga libera
  • RN-714 — SAST que não rodou deixa o gate de SecOps pendente, nunca aprovado
  • RN-715 — O conflito de merge devolve a tarefa ao dev agent dono, e os gates julgam de novo
  • RN-716 — A Anamnese não grava nível sobre o que não observou, e aprovar não é dominar
  • RN-717 — O desvio do agente que a Anamnese observa vira sinal do produto, sem dado pessoal
  • RN-718 — Quem grava as ações de uma sessão no cache faz a MESMA leitura do fio
  • RN-719 — Ferramenta de agente aceita lista enviada como texto JSON, e exceção dentro dela volta ao laço
  • RN-720 — O PO completa a história que já existe, e não oferece o handoff ao Arquiteto com regra descoberta
  • RN-721 — O id encurtado de história ou tarefa é resolvido dentro do projeto
  • RN-722 — A Anamnese fecha a janela que avaliou e só roda com interação nova; o resgate de gate pergunta pela task, respeita a decisão humana pendente e estaciona o ciclo velho
  • RN-723 — A Infra herda a rede que o Arquiteto declarou para o projeto
  • RN-724 — O ciclo de gate estacionado volta por um botão no fio, não só pelo terminal do operador
  • RN-725 — Texto com escape literal é decodificado, e a recusa de argumento diz o que chegou
  • RN-726 — Crédito do provedor esgotado pausa o dev agent, com origem infra, sem queimar as tarefas seguintes
  • RN-727 — A história draft se corrige e se arquiva, pelo PO e pelo usuário, sem apagar nada
  • RN-728 — A mensagem do usuário tem uma bolha só, e o card do Dev Lead tem um primário só
  • RN-729 — A PR de infra mira main e diz onde mergear; a sidebar abre só o projeto aberto
  • RN-730 — O 402 do provider tem code próprio, e é ele que decide o crédito esgotado
  • RN-731 — O fecho do turno diz o que foi gravado com o número do servidor
  • RN-732 — O texto do turno passa pela mesma régua de escape dos argumentos
  • RN-733 — A falha de crédito diz o que fazer, e o reason nunca é a tupla
  • RN-734 — O caminho OpenAI-compatível manda o teto de saída SEMPRE
  • RN-735 — A rede none da imagem do Arquiteto diz que não instala dependências
  • RN-736 — O campo "Nome do projeto" não ganha foco sozinho nem se chama "name"
  • RN-737 — A resposta cortada pelo teto de saída é sinalizada, não executada e dita
  • RN-738 — Parar container de projeto é imediato, e a linha da /containers relê ao decidir
  • RN-739 — O diagnóstico leva o corpo de erro do provider inteiro, e a bolha segue curta
  • RN-740 — O campo "Nome do projeto" declara que não sugere nada, e o resto da lacuna é da extensão
  • RN-741 — O raciocínio tem orçamento próprio e não come a saída visível
  • RN-742 — O dev agent não morre calado, e a resposta HTTP tardia não fica na caixa dele
  • RN-743 — Bloquear a task preserva o trabalho do worktree, e a próxima parte dele
  • RN-744 — O dev sabe que o shell é sh e começa vendo o próprio worktree
  • RN-745 — Na resposta cortada, só a chamada incompleta é recusada
  • RN-746 — O fecho do Arquiteto diz o que gravou, e as escritas recusadas são contadas
  • RN-747 — O plano do Dev Lead diz quantos dev agents sobem, não quantos pede
  • RN-748 — A espera por aprovação fecha a faixa do turno e leva o cartão à vista
  • RN-749 — A resposta cortada pelo teto oferece a continuação num clique
  • RN-750 — O colapso por agente deixa o fecho de cada agente aberto
  • RN-751 — A Sessão e o catálogo não saltam: composer, aba ativa, barra de lote e rolagem
  • RN-752 — PR de infra mergeada sai de "PRs de infra em revisão"
  • RN-755 — Ligar o modo automático não aprova o cartão onde foi ligado
  • RN-756 — A Anamnese só roda com interação de conteúdo técnico do sujeito; aprovar não conta
  • RN-757 — O terminal auto-aprovado espera o comando, e o teto do comando é 2 min
  • RN-758 — O recorte do Jev nunca tira a ferramenta de obrigação do agente
  • RN-759 — O passo recortado avisa ao modelo que o menu é um recorte
  • RN-760 — A próxima task do dev agent parte da última branch dele ainda não mergeada
  • RN-761 — Dependência instalada não entra no repositório: .gitignore base, commit que a exclui e gate que a acusa
  • RN-762 — O bloqueio por ciclo de correção esgotado grava a origem politica
  • RN-763 — Encerrar a sessão de execução para os dev agents e os gates, e "Parar execução" na aba Executores
  • RN-765 — O gate de QA julga a TAREFA, e RF de tarefa irmã é observação
  • RN-766 — O gate parado esperando clique é dito, e a oferta em lote cobre os subagentes de QA
  • RN-768 — Na aba PRs, o texto ao lado do Merge diz a verdade do botão
  • RN-769 — Encerrar sessão com execução ativa pergunta antes, e o estado aparece traduzido
  • RN-770 — Miudezas da tela de projeto: autor da PR de ADR, modelo da Infra, título da PR do dev, selo da execução, caminho e tabela
  • RN-772 — O Arquiteto lê o status ATUAL das ADRs que propôs
  • RN-773 — O Arquiteto lê o backlog, e consulta antes de afirmar estado
  • RN-774 — A primeira tarefa de cada módulo tem o dobro do teto por tarefa
  • RN-776 — Tarefa da execução esperando alguém segura a sessão de execução
  • RN-777 — Desbloquear a tarefa acorda o dev do módulo DELA
  • RN-778 — O dev agent órfão fecha por evento novo no boot
  • RN-779 — O worktree da task (re)pegada parte da dev ATUAL e a integra
  • RN-780 — Resposta só de raciocínio cortada pelo teto é corte, não desistência
  • RN-781 — A mensagem de commit do dev não grava pendência que é do sistema
  • RN-782 — Aceitar o parâmetro de raciocínio não é pedir raciocínio
  • RN-783 — Os dev agents de execução rodam com o raciocínio desligado
  • RN-784 — As leituras de estado do Arquiteto entram no piso do Jev
  • RN-785 — Requisito que depende de outra história ainda não feita é observação no gate de QA
  • RN-786 — O gate de QA lê o contrato do módulo, e divergência com a história é observação
  • RN-787 — O gate conta o diff da PR contra a dev da origem, e o parecer de QA grava lista
  • RN-788 — Decisões e linha do tempo do time não afirmam sobre o que não leram
  • RN-789 — Na tela de Sessão, a sidebar marca a aba onde a sessão está listada
  • RN-790 — O README de como subir o entregável é critério do DoD que o PO escreve
  • RN-792 — Ao declarar o contrato, o Arquiteto recebe as rotas das histórias que o contrato não declara
  • RN-794 — Sem execução vigente, a tela diz o que ficou pendente e religa pelo mesmo caminho
  • RN-796 — O item do gitleaks diz a regra e o trecho com o segredo mascarado
  • RN-797 — A task cuja branch não tem diff contra a dev fecha como "já na dev"
  • RN-798 — O QA confere os comandos do README tocado pela entrega contra os scripts
  • RN-800 — A linha do tempo do time filtra por família, não pela roster da sessão mais recente
  • RN-801 — O nome da nova sessão não convida o gerenciador de senhas
  • RN-802 — A estimativa do plano do Dev Lead soma o dobro da primeira tarefa de cada módulo
  • RN-803 — A oferta em lote do modo automático fica inerte até saber quem já está ligado
  • RN-804 — O cartão do plano do Dev Lead oferece o modo automático em lote antes de aprovar
  • RN-805 — O plano de teste gravado é o que a ferramenta aceitou
  • RN-806 — Um ciclo de QA por tarefa: pedido anterior ao veredito é descartado
  • RN-807 — O exec que estoura o teto volta como estouro, e o comando morre dentro do container
  • RN-809 — As obrigações de módulo e imagem do Arquiteto entram no piso do Jev
  • RN-810 — Falha de rede passageira do provider é retentada, e o bloqueio dela é infra sem contar no disjuntor
  • RN-811 — O "já na dev" compara com a dev do remoto atualizada
  • RN-812 — A PR aberta da mesma branch é reaproveitada, nunca duplicada
  • RN-813 — Tarefa que toca o ponto de entrada exige evidência de que ele sobe
  • RN-814 — O parecer do QA lista todas as lacunas numa volta
  • RN-815 — O "Parar execução" conta as tarefas em curso E em revisão, lidas do backlog
  • RN-816 — O botão não muda de lugar quando um bloco tardio chega
  • RN-817 — O QA roda a suíte em estado limpo, e teste pulado não é verde
  • RN-818 — A evidência do ponto de entrada é a que o ambiente do dev produz
  • RN-819 — O QA varre regra por regra antes de emitir
  • RN-820 — O container de projeto volta sozinho quando o daemon reinicia
  • RN-821 — Registrado rodando e observado parado oferece "Subir de novo"
  • RN-822 — O primeiro clique em Merge abre o cartão sem esperar a fila
  • RN-823 — O ciclo de gate que o reinício do engine matou é retomado no boot, e o fio diz isso
  • RN-824 — Depois do mapa de módulos, o composer diz que o próximo passo é confirmar a arquitetura
  • RN-825 — O chat mostra as PRs prontas para merge e propõe o merge ali
  • RN-826 — O chat lista as tarefas bloqueadas e desbloqueia ali
  • RN-827 — O painel de contexto conta a sessão inteira, e a janela só dá o detalhe
  • RN-828 — "Arquivos tocados" inclui a sessão de execução ligada, com teto e total real
  • RN-829 — O avatar de quem fala no fio é o do agente, no streaming e depois dele
  • RN-830 — O composer respeita a composição de acento, e o fio fala com o leitor de tela
  • RN-831 — A mensagem que não foi enviada fica no fio, com "tentar de novo"
  • RN-832 — O dev agent sabe que report_done faz commit, push e PR, e que teste novo entra no script test
  • RN-833 — Todo socket Phoenix do web se descarta, e o substituído não age
  • RN-834 — O nome do projeto no assistente não se chama "title"
  • RN-835 — O "Desbloquear" da Visão geral não se move e diz o que aconteceu
  • RN-836 — O fio oferece "ir ao fim" quando chega conteúdo para quem subiu
  • RN-837 — Markdown do fio: blocos novos e prefixo de stream sem marcador cru
  • RN-838 — O QA de Automação roda com o raciocínio desligado
  • RN-839 — report_done e report_blocked entram no piso do Jev dos dev agents
  • RN-840 — a ferramenta de parecer de cada agente de gate entra no piso do Jev
  • RN-841 — A fila "PRs prontas" se relê sem recarregar a página
  • RN-842 — O rótulo do nome do projeto não diz "Nome"
  • RN-843 — Um cartão de decisão por ação no chat
  • RN-844 — O painel de contexto lista as regras, as decisões e os arquivos das PRs da sessão inteira
  • RN-845 — A leitura das ADRs propostas diz se a PR já foi mergeada
  • RN-846 — A rota HTTP vai ao README e o erro de entrada é do projeto
  • RN-847 — A PR mergeada continua dizendo os arquivos que mudou
  • RN-848 — O efeito de ação executada dentro de um pedido interno avisa o canal da sessão
  • RN-849 — O turno de prontidão da arquitetura abre com o estado atual das ADRs
  • RN-850 — A rota entra na seção "Rotas HTTP" e o README não leva nota de processo
  • RN-851 — O compose da Infra sobe o APP na máquina do usuário, e a PR declara como rodá-lo
  • RN-852 — A PR de infra declara como rodar o entregável, e isso vira artefato
  • RN-853 — O dev expõe OpenAPI e Swagger quando a tarefa toca rotas
  • RN-854 — O QA prova /openapi.json e /docs dentro do container
  • RN-855 — A Visão geral mostra como rodar o entregável, declarado e não verificado
  • RN-856 — Desbloquear não encerra a execução, e a tarefa em curso órfã tem volta
  • RN-857 — O passo de correção do dev agent tem escrita e terminal no recorte do Jev
  • RN-858 — A pergunta em aberto de agente é registro durável, e só o autor da sessão a responde
  • RN-859 — A decisão do usuário chega a quem trabalha, e destrava a correção da história ready
  • RN-860 — O gate de QA espera o usuário sem gastar o ciclo de correção
  • RN-861 — As perguntas em aberto são fila própria no chat, e o aviso de prontidão não bloqueia
  • RN-862 — A pergunta em aberto do lado do engine: ferramenta, veredito e decisão no contexto
  • RN-863 — api_docs é sempre /docs, toda rota entra no OpenAPI, e o QA reprova a que falta
  • RN-864 — Falha passageira de rede volta sozinha em até 3 tentativas, e o dev pausa
  • RN-865 — Endpoint e verbo HTTP com caminho também ligam a conferência do OpenAPI, e ela cobre as rotas do código
  • RN-867 — O aviso do gate estacionado diz o motivo gravado, e a pergunta em aberto aponta o cartão dela
  • RN-868 — O tick do resgate de gates é uma corrente só
  • RN-870 — O veredito só espera pergunta que existe e está aberta
  • RN-871 — afeta.regras aceita o título exato da regra e guarda o id
  • RN-872 — As outras decisões do projeto chegam ao dev e ao QA, em seção própria
  • RN-874 — O PO recebe no turno as decisões do usuário e as perguntas abertas do projeto
  • RN-876 — O needs_user_decision recusado pela api volta ao QA, e só o aceite estaciona o gate
  • RN-877 — O recorte do QA manda conferir as decisões antes de pedir decisão
  • RN-878 — O idioma do agente de execução vale desde a primeira frase
  • RN-879 — URL absoluta do entregável com a porta, e o mesmo code para o mesmo erro
  • RN-880 — O entregável responde CORS configurável, com servers relativo e swagger-ui pinado
  • RN-881 — O engine imprime as outras decisões do projeto para o dev e o QA
  • RN-882 — O composer da Sessão não perde tecla na digitação rápida
  • RN-883 — A oferta em lote do modo automático também no chat da Sessão
  • RN-884 — A pergunta respondida oferece "Corrigir a história"
  • RN-885 — O CORS do entregável usa a porta PUBLICADA, e o QA confere o header nas duas origens
  • RN-886 — O 403 de orçamento do OpenRouter é crédito esgotado, com limite, gasto e reset
  • RN-887 — O bloqueio da tarefa é ortogonal ao status, e quem mostra lê os dois
  • RN-889 — A oferta em lote do modo automático aparece no chat de qualquer sessão ativa do projeto em execução
  • RN-890 — O QA cobra o código de saída do comando de linha, na recusa também
  • RN-891 — A interface tem quatro idiomas, com pt-BR como padrão e fallback
  • RN-892 — O prefixo estável da chamada vai marcado para o cache de prompt, e a capability é ligada só no OpenRouter, provada
  • RN-893 — O PO declara a borda do valor informado no RF e no DoD
  • RN-894 — Épico com o mesmo título de outro do projeto é recusado
  • RN-895 — A recusa de argumento diz o que chegou e o formato esperado
  • RN-896 — O epic_id é validado antes da api
  • RN-897 — O corte do provider por max_tokens num gate é origem modelo
  • RN-898 — Resposta cortada pelo teto, sem texto algum, fecha o turno dita
  • RN-899 — Resposta vazia sem corte vira agent.error de origem modelo
  • RN-900 — write_file recusa reescrever o README e apagar a seção de uso da Infra
  • RN-901 — A oferta de modo automático do chat inclui os dev agents do plano aprovado
  • RN-902 — Recriar o container congela a decisão de imagem vigente, e a imagem desatualizada é avisada
  • RN-903 — O 429 do provider é limite de uso do modelo, não falha de rede
  • RN-904 — O corte do teto de saída não repete a chamada com o catálogo inteiro
  • RN-905 — O teto de passos diz o que foi gravado e o que falta, e oferece continuar
  • RN-906 — A api recusa a rede none quando a stack de um módulo baixa dependências
  • RN-907 — O OpenRouter recebe uma chave de sessão por agente, e a conversa fica presa ao upstream que a atendeu
  • RN-908 — O kickoff do PO pede o backlog em lote, depois de ler, em camadas
  • RN-909 — O 9Router é o 10º provider: URL por instalação, credencial obrigatória, preço público de curadoria
  • RN-910 — O teto padrão por área é 5 no dev, 4 no qa e 2 na infra
  • RN-911 — Provider é global; Configurações do projeto só escolhem modelo; a matriz mora na Conta
  • RN-912 — O modelo da área é uma caixa na linha do lead, em "Modelos por agente"
  • RN-913 — Falha igual repetida de ferramenta no turno corrige na 2ª e para na 3ª
  • RN-914 — O orçamento de raciocínio é por modelo, só para quem o respeita
  • RN-915 — O raciocínio é contado no stream e abortado no limite; o custo abortado é estimado e depois reconciliado
  • RN-916 — Resposta cortada pelo raciocínio é retentada UMA vez com o raciocínio desligado
  • RN-917 — O OpenRouter recebe um teto de preço por chamada, e sem upstream no teto a chamada repete UMA vez sem ele
  • RN-918 — O agente escreve o próprio plano com registrar_plano, e o último agent.plan é o vigente
  • RN-919 — O diário é a projeção do log mais o plano, sem tabela, e diz o que está confirmado e o que ficou sem desfecho
  • RN-920 — O turno conversacional que o reinício matou é retomado UMA vez no boot, se recente
  • RN-921 — O botão "Retomar" do fio é gesto humano, sem teto, e só vale para o turno interrompido
  • RN-922 — O dev agent que cai dentro da janela retoma do commit da MESMA tarefa, uma vez
  • RN-923 — O resgate automático de gate vale uma vez por ciclo, no boot e no tick, e o "Retomar gate" zera o contador
  • RN-924 — A correção de gate que chega ao Infra Lead com turno em curso é durável
  • RN-925 — Cada container tem página de detalhe com o estado registrado e o observado separados e as URLs declaradas
  • RN-926 — A rota de providers com chave devolve só os nomes, e a chave é a do TITULAR
  • RN-927 — O runner grava a chave de API de LLM do usuário por POST /runner/llm-credentials, só com chave de máquina, sem sobrescrever sem confirmação
  • RN-928 — O comando do app é argumento de um supervisor constante, e sem ele o container é o de sempre
  • RN-929 — Porta publicada vai só ao loopback, e DNS e extra_hosts são IP literal e nome de lista fechada
  • RN-930 — A instância de QA é efêmera, só mexe no que tem brabo.papel=qa e sobe os serviços que a Infra declarou por digest
  • RN-931 — As telas de providers e do catálogo mostram só o que tem chave do TITULAR, com a cor do provider
  • RN-932 — A rede do container é artefato declarado por humano e só vale no container recriado
  • RN-933 — run.app declara o comando do app e só o piloto automático dispensa a aprovação da PR de infra
  • RN-934 — container_recreate remove e sobe de novo, no teto absoluto de container_remove
  • RN-935 — A Infra declara os serviços da instância de QA (run.qa), e a api guarda uma instância por tarefa com teto de 1 por projeto
  • RN-936 — Subir a instância de QA é a ação qa_environment_start, semeada auto_approve para o QA; remover é automático e fora do teto do container_remove
  • RN-937 — A container-spec de QA e a limpeza de órfãs
  • RN-938 — O terminal só vai para a instância de QA quando o ator é o qa-automacao e a tarefa é do projeto
  • RN-939 — A página do container edita a rede só para maintainer, valida antes e recria por container_recreate
  • RN-940 — O gate de QA-automação sobe uma instância de QA efêmera, testa nela e a remove
  • RN-941 — O serviço de QA roda com usuário e comando declarados, nunca como root, e leva o nome da instância mais o do serviço
  • RN-942 — O recorte do Jev nunca tira do PO a ferramenta de declarar dúvida
  • RN-943 — O bloco de pendências do chat se chama "Pendências deste projeto"; só a aba Executores diz "de outras sessões"
  • RN-944 — O QA de automação recebe o pedido da volta anterior, o plano é lido por tipo e o dev sabe onde o write_file escreve
  • RN-945 — Os agentes de QA nomeiam o corte pelo teto de saída em vez de "o modelo parou"
  • RN-946 — O corte pelo teto no meio do texto também é nomeado pelos agentes de QA
  • RN-947 — O comando do agente no exec não aparece na linha de comando de nenhum processo do container
  • RN-948 — Higiene do entregável: banco SQLite fora do commit, pasta dos comandos dita, rotas do README preservadas
  • RN-949 — Chamada de ferramenta escrita como texto não vira resposta no fio
  • RN-950 — O 9Router recebe as ferramentas, o vínculo confere a capability do provider e ferramenta sem capability lança
  • RN-951 — O fio da Sessão acompanha SEMPRE a última mensagem
  • RN-952 — O relatório do owner recorta por projeto e por sessão, e o membro vê o total do projeto sem credencial
  • RN-953 — O não-owner vê o PRÓPRIO consumo no workspace, somado por projeto
  • RN-954 — A cobrança do modelo é uma marca CURADA, e a assinatura é separada do US$ pago
  • RN-955 — GET interno com conexão envenenada do pool é repetido UMA vez
  • RN-956 — readiness e offer-infra-handoff sobem o agente antes de chamar, como message
  • RN-957 — "aborted" é falha de origem infra
  • RN-958 — O usage do 9Router é corrigido no provider: −2 000 só na 0.5.112, e o cache do topo conta
  • RN-959 — O 503 do 9Router que embrulha um 4xx do upstream é classificado pelo status de dentro
  • RN-960 — O GraphStore reconecta depois de boot sem Neo4j, e o aviso diz a causa
  • RN-961 — O aviso de recorte diz que as ferramentas fora dele podem ser pedidas neste passo
  • RN-962 — O compose do entregável usa volume nomeado, nunca bind-mount relativo
  • RN-963 — O gasto tem página GLOBAL e aba do PROJETO, e o orçamento tem editor
  • RN-964 — O preço e a cobrança são curados na tela de Providers, e a edição manual protege o número do sync
  • RN-965 — O catálogo sugere o preço do FABRICANTE do modelo e a faixa de cobrança do 9Router, e quem aplica é o humano
  • RN-966 — O 9Router 0.5.112 faz três coisas por trás: off desliga RTK/Headroom/Caveman/Ponytail e não o Custom Prompt; o OAuth do Claude redige o raciocínio; e camufla as ferramentas
  • RN-967 — A faixa do turno mostra o plano que o agente registrou no turno em curso
  • RN-968 — O formulário de perguntas estruturadas é um questionário passo a passo
  • RN-969 — A ocupação da janela do agente na sessão é o input_tokens da última chamada dele, fora o Jev
  • RN-970 — Na árvore do time, cada delegação de um lead aparece como subagente
  • RN-971 — A paleta de comandos Ctrl+K/⌘K busca projetos, sessões e ações só do que já está em memória
  • RN-972 — O código no chat e na aba Código é realçado pelo shiki
  • RN-973 — A série diária do gasto é desenhada pelo Chart, carregado sob demanda, e também existe como tabela
  • RN-974 — O fio mostra os passos do turno encerrado, recolhidos, sem os args
  • RN-975 — O painel de pendências do chat é uma faixa de abas, e cada fila pagina de 3 em 3
  • RN-976 — As ações de passo da conversa são sugestões acima do destinatário, com o mesmo predicado e o mesmo endpoint, e a inércia é dita em texto
  • RN-977 — O fio da Sessão para de seguir quando a pessoa sobe e oferece "Ir ao fim"
  • RN-978 — As mensagens na fila de um agente aparecem num painel acima da caixa, e a cancelada some
  • RN-979 — Decisão, mapa de módulos, C4, imagem e parecer de QA/SecOps ganham cartão no fio
  • RN-980 — As Configurações do projeto são uma página por grupo, com os grupos como abas dentro da página; só o grupo aberto monta
  • RN-981 — Na Sessão, as caixas de pergunta e de aprovação ficam na borda do fio, e o contexto e o esqueleto de carregamento ganham o tratamento R3
  • RN-982 — As fontes de uma resposta são as leituras ok do próprio turno, registradas pelo servidor, nunca pelo texto do modelo
  • RN-983 — O clique numa fonte consultada é gravado em tabela própria e nunca é voto
  • RN-984 — O acesso rápido por papel só existe com BRABO_AMBIENTE=local
  • RN-985 — A citação inline é marcada pelo modelo e validada contra as fontes do próprio turno; índice inventado não é mostrado
  • RN-986 — O anexo do chat aceita texto/código e imagem, com tipo pelos bytes e tetos
  • RN-987 — O chat.message guarda só a referência do anexo, nunca os bytes
  • RN-988 — Todo viewer do projeto lê o anexo, escopado a projeto e sessão
  • RN-989 — Imagem só vai a modelo com visão provada; sem ela, o agente é avisado
  • RN-990 — A imagem anexada vai ao LLM só no turno em que a mensagem chegou
  • RN-991 — Uma mensagem pode ter vários destinatários, e o log diz quais
  • RN-992 — O composer interpreta @ e / só na tela: @ escolhe destinatários entre os agentes da sessão, / dispara a ação do botão ou insere um prompt, e nenhum comando decide por teto
  • RN-993 — O raciocínio do modelo é gravado inteiro fora do content, aparece ao vivo e só developer ou mais o lê; nunca volta ao modelo
  • RN-994 — Na Sessão, a pergunta estruturada vem depois da mensagem do agente que a introduz
  • RN-995 — O catálogo do agente vem do engine e é só leitura: identidade e ferramentas do engine, instrução vigente do banco, sem prompt composto e sem schema, e engine fora do ar é "não sei", nunca "sem ferramentas"
  • RN-996 — O parecer de QA leva o resultado por teste lido do relatório JUnit pelo engine; sem relatório, diz por quê
  • RN-997 — O catálogo da Anthropic nasce com preço de lista datado e supportsReasoning do SDK; preço manual nunca é sobrescrito
  • RN-998 — A migração restaura o banco num banco vazio, mantém a chave mestra, é retomável e entende a linha de versões
  • RN-999 — A chamada irmã da pendente recebe recusa, para todo tool_use ter o seu tool_result
  • RN-1000 — Na Anthropic direta o raciocínio desligado é POR MODELO, o adaptativo ganha a folga e o thinking_tokens chega ao metering
  • RN-1001 — O decorator de tracing repassa aceitaRaciocinioDesligado, então a retentativa sem raciocínio roda de verdade
  • RN-1002 — O agente fecha a pergunta em aberto que o usuário respondeu no chat; a resposta humana e a do agente dividem um núcleo só
  • RN-1003 — O agente fecha a pergunta em aberto que o usuário já respondeu no chat, só quando a resposta é inequívoca
  • RN-1004 — O plano de execução do Dev Lead é recusado quando um módulo sem tarefa é dependência de um módulo que tem tarefa
  • RN-1005 — O claim não entrega a tarefa de um módulo enquanto houver tarefa aberta de um módulo do dependsOn direto dele
  • RN-1006 — O Dev Lead cria a task de fundação do módulo de que outros dependem
  • RN-1007 — O Claude Haiku 5.5 na Anthropic direta tem uma folga de raciocínio curada de 12288 tokens
  • RN-1008 — O provider Anthropic direto usa prompt caching, soma as parcelas de cache na entrada e precifica a chamada pela tabela do fabricante
  • RN-1009 — O merge que fecha uma tarefa acorda os módulos que dependem dela
  • RN-1010 — Conflito ao integrar a dev no claim vai para o agente; só o que ele não resolve bloqueia
  • RN-1011 — O plano do Dev Lead é recusado quando uma task cita rota que o contrato declara em outro módulo
  • RN-1012 — Task bloqueada pelo modelo acorda o Dev Lead, que pede ao Arquiteto o contrato que falta
  • RN-1013 — Cada mensagem assistant do turno guarda os próprios blocos de raciocínio, e o prefixo enviado só cresce
  • RN-1014 — O provider Anthropic direto também põe um ponto de cache no penúltimo turno user
  • RN-1015 — Na Anthropic direta, as mensagens system tardias vão para o fim do último turno user, depois do ponto de cache, nunca para o system do topo
  • RN-1016 — O reporter JUnit é configurado na primeira task de código do módulo, nunca numa task própria
  • RN-1017 — git push de terminal para branch protegida, com force, --all ou --mirror é decisão humana, mesmo no modo automático
  • RN-1018 — O agente retira uma regra de negócio obsoleta, citando a substituta ou a resposta do usuário; todo leitor a ignora
  • RN-1019 — No modo automático, um git merge de terminal dentro do escopo da tarefa é auto-aprovado
  • RN-1020 — O Criativo e o PO retiram sozinhos uma regra de negócio obsoleta, citando a substituta ou a resposta do usuário
  • RN-1021 — Depois de um merge na main do projeto, a pasta do projeto avança até ela
  • RN-1022 — O repositório do projeto é trunk: o bootstrap cria e protege só a main, merges nela avisam o engine, e projetos antigos migram por script
  • RN-1023 — Projeto cuja dev está à frente da main recusa o claim, nomeando a migração
  • RN-1024 — O app é reiniciado no lugar: só o processo dele, nunca o container nem os outros exec
  • RN-1025 — POST /containers/:projectId/app/restart reinicia o processo do app no lugar
  • RN-1026 — A api reinicia só o processo do app no container do projeto, com resposta tipada
  • RN-1027 — No modo runner a pasta do projeto avança pelo canal do runner, e o avanço é reaplicado quando o runner entra
  • RN-1028 — Depois que a pasta do projeto avança, o processo do app é reiniciado no lugar, uma vez por rajada de merges
  • RN-1029 — Depois do merge da PR de infra que declara run.app, a api propõe container_recreate com a porta do app, uma vez
  • RN-1030 — Todo nó do grafo gravado por MERGE numa chave natural tem restrição de unicidade, e a subida funde as duplicatas preexistentes antes de criá-la
  • RN-1031 — O catálogo de funcionalidades e o mapa caminho → funcionalidade moram num arquivo só, e a spec se liga por tag
  • RN-1032 — A PR para a dev roda o regressivo só das funcionalidades que tocou, sob o check Regressivo do brabo-qa, que NUNCA é exigido
  • RN-1033 — Três regras de arquivo transversal valem antes do mapa: nada, catálogo inteiro e sem dono
  • RN-1034 — A PR para a main roda o catálogo inteiro no E2E do brabo-qa, e funcionalidade sem spec aparece como "sem cobertura" sem reprovar
  • RN-1035 — A PR para a dev publica a imagem sha-<12> assinada, só do próprio repositório, e a limpeza apaga as órfãs
  • RN-1036 — A indexação de docs nunca descarta em silêncio o conteúdo de um arquivo
  • RN-1037 — O dist do shared não exporta nenhum valor
  • RN-1041 — O docker-cli.json é o espelho das constantes de controle do docker-cli.ts
  • RN-1043 — Todo run que lê outro repositório publica ## Vínculos no topo do Summary, e o helper nunca reprova o job
  • RN-1044 — O run de destino de um dispatch ou de uma tag tem run-name com a origem, e a correlação do dispatch vai no nome como c=<run_id>-<attempt>
  • RN-1045 — O check do App aponta para o run do brabo-qa desde o início, e o run de origem registra o link do run disparado
  • RN-1046 — A busca híbrida devolve no máximo N trechos do mesmo arquivo
  • RN-1047 — A PR declara a dependência com Depende-de: viralabs-dev/<repo>#<n>, e a linha malformada reprova em vez de passar calada
  • RN-1048 — O check Dependências de merge tem quatro estados, nunca neutral, e a espera é amarela
  • RN-1049 — O merge da dependência atualiza o check das PRs que a citam, e o cron horário é só rede
  • RN-1050 — O ciclo de dependências reprova com o caminho inteiro, até a profundidade 5