🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

reversa

Package Overview
Dependencies
Maintainers
1
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

reversa - npm Package Compare versions

Comparing version
1.2.54
to
1.2.55
+1
-1
agents/reversa-debugger-debate/references/debate-protocol.md

@@ -22,3 +22,3 @@ # Protocolo do debate multiagente (épocas fixas + juiz isolado)

```text
_reversa_bugs/bugs/<ID>/debate/
_reversa_bugs/<contexto>/bugs/<ID>/debate/
├── problema.md modo, N, R, P e rubrica congelada (escrito no setup, imutável)

@@ -25,0 +25,0 @@ ├── rodada-0/agente-1..N.md

@@ -46,3 +46,3 @@ ---

Estado em `_reversa_bugs/bugs/<ID>/debate/`. Escreva `problema.md` com modo, N, R, o problema P (montado do bug + evidências + spec efetiva) e a rubrica congelada do juiz.
Estado em `_reversa_bugs/<contexto>/bugs/<ID>/debate/`. Escreva `problema.md` com modo, N, R, o problema P (montado do bug + evidências + spec efetiva) e a rubrica congelada do juiz.

@@ -75,2 +75,2 @@ 1. **Época 0**: cada solver produz a proposta inicial de forma independente, sem ver os outros, em `rodada-0/agente-i.md`

**Nunca apague, modifique ou sobrescreva arquivos pré-existentes do projeto.**
Este skill escreve APENAS em `_reversa_bugs/bugs/<ID>/debate/`. Ele decide estratégia, não aplica correção. Nada do projeto vai a harness externo sem o aceite explícito deste setup, e bugs `restricted` nunca saem.
Este skill escreve APENAS em `_reversa_bugs/<contexto>/bugs/<ID>/debate/`. Ele decide estratégia, não aplica correção. Nada do projeto vai a harness externo sem o aceite explícito deste setup, e bugs `restricted` nunca saem.

@@ -26,4 +26,6 @@ ---

1. Com argumento (`/reversa-debugger-fix BUG-20260715-A7K3` ou `/reversa-debugger-fix BUG-007`): resolva por ID canônico ou `display_number`
2. Sem argumento: leia `generated/catalog.jsonl` (ou varra `bugs/*/bug.md`), calcule o impact score (só arestas `supported`/`confirmed`) e **sugira** o bug de maior impacto sistêmico entre os abertos, explicando o porquê. A escolha é do usuário (menu com top 3 + "Outro").
3. Bug `resolved` ou com `blocking` ativo: informe e pergunte como proceder.
2. O bug vive em `_reversa_bugs/<contexto>/bugs/`: localize-o varrendo os catálogos de todos os contextos (`_reversa_bugs/*/generated/catalog.jsonl`, ou `_reversa_bugs/*/bugs/*/bug.md` na falta deles). Se o usuário falou da área em linguagem natural ("conserta o carrinho"), comece pelo contexto correspondente.
3. Sem argumento: calcule o impact score sobre todos os contextos (só arestas `supported`/`confirmed`) e **sugira** o bug de maior impacto sistêmico entre os abertos, explicando o porquê e dizendo o contexto. A escolha é do usuário (menu com top 3 + "Outro").
4. **Trava DONE**: se existir `DONE.md` na pasta do bug, o bug está encerrado e é SOMENTE LEITURA. Recuse-se a mexer nele e explique as duas saídas: o usuário remover a trava manualmente (reabertura consciente) ou registrar um bug NOVO com relação `regression-of` apontando para o travado. Nunca remova a trava você mesmo.
5. Bug `resolved` sem trava, ou com `blocking` ativo: informe e pergunte como proceder.

@@ -85,2 +87,18 @@ ## Modo de controle

### 4.1 Relatório visual do plano de correção (OBRIGATÓRIO, antes de tocar qualquer arquivo)
Decidida a estratégia, gere `fix/plan.html` na pasta do bug: uma página AUTOCONTIDA (CSS inline, tema escuro, mesmo estilo do `graph.html` do contexto) que mostra como a correção SERÁ, antes de ela existir:
1. Cabeçalho: bug (display_number + ID), contexto, data, severidade/prioridade
2. Resumo do defeito e da **causa raiz** (com o estado epistemológico e as evidências)
3. **Estratégia escolhida** (direta ou a vencedora do debate, com uma frase do porquê)
4. **Correction Change Set proposto**: tabela CHG | tipo | artefato | propósito, com os arquivos que serão tocados
5. **Testes planejados**: reprodução e regressão, o que cada um prova
6. **Riscos**: `change_risk` com os motivos, e o que fica de fora da correção (Agent Notes)
7. **Mini-grafo do bug**: o bug destacado no centro com as relações dele, cada nó com LINK relativo para o `bug.md` correspondente
8. **Matriz de relações com links**: origem | tipo | destino | estado, todas as células de bug clicáveis
9. Se a sessão for corrigir mais de um bug encadeado: a **ordem sugerida** de correção derivada do grafo (causa estrutural primeiro)
Apresente o caminho do `plan.html`, peça para o usuário abrir e **aguarde a aprovação do plano**. Só depois disso entram os gates. Se o usuário pedir mudanças, regenere o plano antes de seguir.
### 5. Gate 1: os testes

@@ -117,3 +135,4 @@

3. Só marque `status: resolved` + `closure.satisfied: true` quando a política estiver satisfeita. `resolution_kind: fixed` exige causa `confirmed` + regressão + veredito.
4. Atualize as views (`generated/` e `_reversa_sdd/traceability/bugs.md`) pelo protocolo do `/reversa-debugger-graph`
4. **Grave a trava**: satisfeita a closure policy, crie `DONE.md` na pasta do bug com data, `resolution_kind` e a frase "Este bug está encerrado. Nenhum agente deve modificar esta pasta. Reabertura: remova este arquivo conscientemente ou registre um bug novo com regression-of." A partir daí a pasta inteira é somente leitura para todos os comandos.
5. Atualize as views do contexto do bug (`_reversa_bugs/<contexto>/generated/`) e o espelho `_reversa_sdd/traceability/bugs.md` pelo protocolo do `/reversa-debugger-graph`

@@ -120,0 +139,0 @@ ## Relatório final ao usuário

@@ -20,7 +20,8 @@ ---

1. Leia `.reversa/state.json` (`output_folder`, `doc_language`)
2. Se `_reversa_bugs/bugs/` não existir ou estiver vazia, informe que não há bugs registrados e aponte `/reversa-debugger`
2. Os bugs vivem agrupados por contexto: `_reversa_bugs/<contexto>/bugs/`. Se nenhuma pasta de contexto existir, informe que não há bugs registrados e aponte `/reversa-debugger`
3. Escopo: com argumento (`/reversa-debugger-graph carrinho-de-compras`), regenere só aquele contexto; sem argumento, regenere TODOS os contextos encontrados, um a um
## Etapa 1: varredura e validação
1. Leia o front matter de TODOS os `bugs/*/bug.md` (só o front matter; corpo apenas quando precisar de detalhe)
1. Leia o front matter de TODOS os `_reversa_bugs/*/bugs/*/bug.md` (só o front matter; corpo apenas quando precisar de detalhe). A validação de invariantes é sempre GLOBAL, cruzando contextos (ID duplicado entre contextos é erro)
2. Valide as invariantes. Divergência é ERRO EXPLÍCITO, nunca conserto silencioso:

@@ -32,7 +33,8 @@ - ID duplicado (pode acontecer via merge de branches)

- Relação com ID inexistente, autorrelação, ciclo de `duplicate-of`
- `DONE.md` presente com `status` diferente de `resolved` (trava sem fechamento), ou `resolved` + `closure.satisfied: true` sem `DONE.md` (fechamento sem trava)
3. Havendo erros: liste todos (bug, campo, problema), gere as views apenas dos bugs válidos, marque os inválidos numa seção "Inconsistências" do index e pare o relatório nisso. Consertar é decisão humana.
## Etapa 2: views em `generated/`
## Etapa 2: views em `<contexto>/generated/`
Todas com cabeçalho `<!-- GENERATED, DO NOT EDIT: regenerado por /reversa-debugger-graph em <ISO 8601> a partir de N bugs -->`. Escrita atômica.
Cada contexto tem as próprias views em `_reversa_bugs/<contexto>/generated/`, cobrindo só os bugs daquele contexto (relações que cruzam contextos aparecem com o contexto do alvo indicado). Todas com cabeçalho `<!-- GENERATED, DO NOT EDIT: regenerado por /reversa-debugger-graph em <ISO 8601> a partir de N bugs -->`. Escrita atômica. Crie `generated/` do contexto se ainda não existir.

@@ -57,2 +59,13 @@ ### catalog.jsonl

### graph.html (a view que o usuário abre no navegador)
Página HTML AUTOCONTIDA (CSS inline, sem dependência externa, meta viewport), tema escuro, título "Grafo de Bugs · <contexto>":
1. Linha de metadados: gerado por /reversa-debugger-graph, data, N bugs, N inconsistências, legenda "arestas tracejadas = relação proposed (hipótese)"
2. **Cards de estatística** no topo: total de bugs, resolved · fixed, abertos/ativos, adendos de spec gerados, inconsistências
3. O grafo em SVG com **nós clicáveis**: cada nó é um link relativo para o `bug.md` do bug; conteúdo do nó: display_number + sufixo do ID, título curto, severidade/área e a linha de status (`resolved · fixed` em verde, `active`/`awaiting-human` em amarelo, aberto em vermelho); borda vermelha para severidade high/critical, amarela para medium; setas com o tipo da relação, tracejadas quando `proposed`
4. Legenda em prosa apontando o nó central do grafo e contando a história das relações confirmadas
5. Seção "Bugs abertos / ativos": tabela com #, ID (link), severidade, prioridade, título, area/module/feature e status
6. Seção "Concluídos (travados)": bugs com `DONE.md`, com data de fechamento e `resolution_kind`; este é o registro central de conclusão, derivado das travas, nunca editado à mão
7. Bugs `restricted` ficam fora, como nas demais views
### spec-matrix.md

@@ -72,4 +85,4 @@ Matriz BUG ↔ SPEC pela `traceability.specs`: linhas por seção de spec, colunas open/active/resolved com os IDs. Linha própria para `spec-gap` (bugs sem spec, denunciando comportamento não especificado). Aponte adendos de bug vigentes em `addenda/`.

1. Contagem: bugs varridos, válidos, inconsistências (se houver, listadas)
2. Views regeneradas (caminhos) + espelho
1. Contagem por contexto: bugs varridos, válidos, inconsistências (se houver, listadas)
2. Views regeneradas (caminhos por contexto, destacando cada `graph.html`) + espelho
3. Top 3 de impact score e o cluster mais relevante, em uma frase cada

@@ -84,2 +97,2 @@

**Nunca apague, modifique ou sobrescreva arquivos pré-existentes do projeto.**
Este skill escreve APENAS em `_reversa_bugs/generated/` e `_reversa_sdd/traceability/bugs.md` (ambos views regeneráveis). Os `bug.md` são somente leitura aqui: inconsistência se reporta, não se conserta.
Este skill escreve APENAS em `_reversa_bugs/<contexto>/generated/` e `_reversa_sdd/traceability/bugs.md` (ambos views regeneráveis). Os `bug.md` são somente leitura aqui: inconsistência se reporta, não se conserta.

@@ -110,7 +110,14 @@ # Schema do bug.md (schema_version: 1)

## Trava de conclusão (DONE.md)
Quando a closure policy é satisfeita, o fix grava `DONE.md` na pasta do bug (data, `resolution_kind`
e o aviso de somente leitura). Pasta com `DONE.md` é INTOCÁVEL por qualquer agente: reabrir exige o
usuário remover a trava, ou um bug novo com `regression-of`.
## Invariantes (o /reversa-debugger-graph valida e PARA com erro, nunca conserta em silêncio)
- `status: resolved` exige `resolution_kind` preenchido e `closure.satisfied: true`
- `DONE.md` sem `status: resolved`, ou `resolved` + `closure.satisfied` sem `DONE.md`, é inconsistência
- `resolution_kind: fixed` exige `root_cause.state: confirmed`, `regression_tests` não vazio e `spec_verdict` preenchido
- ID duplicado, referência a ID inexistente, autorrelação e ciclo de `duplicate-of` são erros
- Relação `proposed` nunca entra em priorização automática nem no impact score
# Registro de Bugs (Reversa Bugs)
> Gerado pelo Reversa em {{DATA}}. Este arquivo é o contrato do registro de bugs deste projeto.
> Source of truth: cada `bugs/<ID>/bug.md`. Tudo em `generated/` é projeção regenerável.
> Source of truth: cada `<contexto>/bugs/<ID>/bug.md`. Tudo em `generated/` é projeção regenerável.

@@ -23,2 +23,4 @@ ## Configuração do projeto

Os bugs são agrupados por **contexto** (feature, módulo ou caso de uso, na linguagem de quem reporta). Cada contexto é uma pasta agregadora com TUDO daquela área: bugs, inspeções e views. A pasta nasce sob demanda, quando o primeiro problema da área é reportado; nada é criado vazio.
```text

@@ -28,7 +30,8 @@ _reversa_bugs/

├── taxonomy.yaml vocabulário controlado de area/module/feature
├── bugs/BUG-<data>-<sufixo>-<slug>/ pasta única do bug (endereço IMUTÁVEL, nunca se move)
│ ├── bug.md registro canônico
│ ├── evidence/ ├── debate/ └── fix/
├── inspections/<feature>/ relatórios do pente-fino
└── generated/ views regeneradas pelo /reversa-debugger-graph (não editar à mão)
└── <contexto>/ ex.: sistema-de-credito/, carrinho-de-compras/
├── bugs/BUG-<data>-<sufixo>-<slug>/ pasta única do bug (endereço IMUTÁVEL, nunca se move)
│ ├── bug.md registro canônico
│ ├── evidence/ ├── debate/ └── fix/
├── inspections/<varredura>/ relatórios do pente-fino do contexto
└── generated/ views do contexto, regeneradas pelo /reversa-debugger-graph
```

@@ -42,2 +45,7 @@

**Trava de conclusão:** ao satisfazer a closure policy, o bug recebe `DONE.md` na pasta e vira
SOMENTE LEITURA para todos os agentes. Reabertura: remover a trava conscientemente, ou registrar um
bug novo com `regression-of`. A lista dos travados aparece no `graph.html` do contexto (view
derivada, sem edição manual).
## Regra de rastreabilidade

@@ -44,0 +52,0 @@

---
name: reversa-debugger
description: Registrador de bugs do Reversa. Faz intake, triagem, dedupe, classificação, rastreabilidade SPEC↔CODE↔TEST↔BUG e correlação BUG↔BUG, criando a pasta única do bug em `_reversa_bugs/bugs/`. Nunca corrige. Use quando o usuário digitar "/reversa-debugger", "reversa-debugger", "registrar bug", "reportar erro", "documentar um bug", "achei um erro no sistema" ou descrever um defeito pedindo para registrá-lo. Ponto de entrada do Time Reversa Bugs; a correção é ato separado via `/reversa-debugger-fix`.
description: Registrador de bugs do Reversa. Faz intake, triagem, dedupe, classificação, rastreabilidade SPEC↔CODE↔TEST↔BUG e correlação BUG↔BUG, criando a pasta única do bug dentro da pasta agregadora do contexto (feature/módulo/caso de uso) em `_reversa_bugs/<contexto>/bugs/`. Nunca corrige. Use quando o usuário digitar "/reversa-debugger", "reversa-debugger", "registrar bug", "reportar erro", "documentar um bug", ou reclamar de um defeito com frase natural ("deu pau no sistema de crédito", "o carrinho tá com problema de cálculo", "a tela X quebrou"). Ponto de entrada do Time Reversa Bugs; a correção é ato separado via `/reversa-debugger-fix`.
license: MIT

@@ -17,2 +17,6 @@ compatibility: Claude Code, Codex, Cursor, Gemini CLI e demais agentes compatíveis com Agent Skills.

O registro é organizado por **contexto**: cada feature/módulo/caso de uso ganha uma pasta agregadora em `_reversa_bugs/<contexto>/` que concentra TUDO daquela área (relatos, bugs, inspeções e views). Assim, quem trata bugs de áreas diferentes nunca mistura as coisas. A pasta do contexto não existe até alguém reclamar daquela área, mas nasce IMEDIATAMENTE quando o usuário diz onde está o problema, porque ela recebe as evidências desde o primeiro print.
Seu fluxo tem 4 etapas, nesta ordem: **0) resolver o contexto → 1) anotar os relatos e receber evidências → 2) registrar os bugs → 3) gerar as views.**
## Antes de começar

@@ -43,32 +47,56 @@

3. Crie `_reversa_bugs/taxonomy.yaml` semeando `area`/`module`/`feature` dos componentes de `_reversa_sdd/architecture.md` e `domain.md` (se existirem). Sem extração, crie com listas vazias e um comentário apontando `/reversa`.
4. Crie as pastas `bugs/`, `inspections/`, `generated/`.
O bootstrap cria APENAS esses dois arquivos. Nenhuma pasta é criada vazia: as pastas de contexto nascem sob demanda (seção abaixo).
Se `_reversa_bugs/` existir, apenas leia o `README.md` e o `taxonomy.yaml` e siga.
## Processo de registro
## Etapa 0: resolução do contexto (SEMPRE a primeira coisa)
### 1. Entrevista
Todo bug pertence a um contexto: a feature, módulo ou caso de uso de que o usuário está falando. O usuário quase nunca diz o slug; ele fala natural ("deu pau no sistema de crédito", "o carrinho tá com problema de cálculo"). Antes de qualquer anotação:
Pergunte o que faltar (não pergunte o que o usuário já contou):
1. Liste as pastas de contexto já existentes em `_reversa_bugs/` (todo diretório, exceto arquivos da raiz)
2. Case a fala do usuário com: pastas existentes primeiro, depois `taxonomy.yaml` (area/module/feature) e nomes de specs em `_reversa_sdd/`
3. Se o usuário NÃO disse onde está o problema, PERGUNTE via menu (nunca pule esta pergunta):
1. O que era esperado e o que aconteceu
2. Passos para reproduzir e frequência (sempre? às vezes? ambiente específico?)
3. Evidências disponíveis (log, print, trace); copie-as depois para `evidence/` do bug
4. Severidade e prioridade, via menu com as opções `critical/high/medium/low` e `P0..P3` explicadas
```
Esse problema é de qual área?
### 2. Dedupe
[1] <contexto-existente> (já tem N bugs registrados)
[2] Criar novo contexto: <slug-proposto> (proposto a partir da sua descrição)
[3] Outro: descreva a área com suas palavras
```
4. Resolvido o contexto, **crie a pasta IMEDIATAMENTE** se não existir: `_reversa_bugs/<contexto>/` com `bugs/` e `intake/` dentro. Ela precisa existir já, porque o usuário vai passar imagens e documentos de evidência a partir de agora. (`inspections/` e `generated/` continuam nascendo sob demanda.)
5. Slug do contexto: kebab-case curto e reconhecível na linguagem do usuário (ex.: `mira-studio-full`, `sistema-de-credito`, `carrinho-de-compras`)
## Etapa 1: anotação dos relatos (intake)
Anotar vem ANTES de registrar. Um desabafo do usuário costuma conter vários problemas misturados, com prints no meio; sua primeira função é ser o escrivão:
1. Crie `_reversa_bugs/<contexto>/intake/relato-<YYYYMMDD-HHMM>.md` e vá anotando cada problema relatado, na ordem, com as palavras do usuário e as suas observações
2. Toda imagem, print ou documento que o usuário passar: salve em `intake/` ao lado do relato (nomes descritivos, ex.: `intake/teleprompter-retangulo-vermelho.png`) e referencie no ponto certo do relato
3. Pergunte o que faltar de cada problema (esperado vs observado, passos, frequência), sem repetir o que o usuário já contou
4. Continue anotando até o usuário sinalizar que terminou. Só então pergunte severidade e prioridade de cada problema anotado, via menu com `critical/high/medium/low` e `P0..P3` explicadas
## Etapa 2: registro dos bugs (só depois de anotar tudo)
Um relato pode virar vários bugs (um por defeito distinto). Para CADA problema anotado, siga o processo abaixo.
### 2.1 Dedupe
Antes de criar, procure duplicata:
1. Se `generated/catalog.jsonl` existir, filtre por module/feature/palavras do título; senão, faça grep nos `bugs/*/bug.md`
2. Leia o corpo só dos 5-10 candidatos mais próximos
3. Se encontrar duplicata provável, apresente menu: atualizar o bug existente (acrescentando a nova ocorrência em Evidence), criar mesmo assim como novo, ou "Outro". Nunca decida sozinho.
1. Procure primeiro dentro do contexto: `_reversa_bugs/<contexto>/generated/catalog.jsonl` se existir, senão grep em `<contexto>/bugs/*/bug.md`
2. Procure também nos outros contextos (`_reversa_bugs/*/generated/catalog.jsonl`): o usuário pode ter reportado o mesmo defeito noutra área
3. Leia o corpo só dos 5-10 candidatos mais próximos
4. Se encontrar duplicata provável, apresente menu: atualizar o bug existente (acrescentando a nova ocorrência em Evidence), criar mesmo assim como novo, ou "Outro". Nunca decida sozinho.
5. **Duplicata travada**: se a duplicata tiver `DONE.md` na pasta, ela é somente leitura. Não a atualize: proponha registrar um bug NOVO com relação `regression-of` apontando para o travado (o defeito voltou).
### 3. Identidade
### 2.2 Identidade
1. ID canônico: `BUG-<YYYYMMDD>-<sufixo>`, onde o sufixo são 4 caracteres base32 derivados de hash curto de título+data+hora. Merge-safe: nunca reutilize nem "conserte" IDs.
2. `display_number`: maior `display_number` existente + 1 (apelido humano; colisão de display_number entre branches não é erro, o ID canônico é a identidade).
3. Valide que o ID não existe em `bugs/`. Existindo (improvável), gere outro sufixo.
2. `display_number`: maior `display_number` existente em QUALQUER contexto + 1 (apelido humano global; colisão entre branches não é erro, o ID canônico é a identidade).
3. Valide que o ID não existe em nenhum `_reversa_bugs/*/bugs/`. Existindo (improvável), gere outro sufixo.
### 4. Classificação
### 2.3 Classificação

@@ -79,3 +107,3 @@ 1. `area`, `module`, `feature` DEVEM usar valores de `taxonomy.yaml`. Se nada servir, use `unclassified` e registre a proposta de novo termo em Agent Notes (não invente termos fora do catálogo).

### 5. Rastreabilidade vertical (papel Tracer)
### 2.4 Rastreabilidade vertical (papel Tracer)

@@ -86,3 +114,3 @@ 1. Localize em `_reversa_sdd/` a seção de spec que define o comportamento esperado (architecture.md, domain.md, specs em `sdd/`). Considere a **spec efetiva**: original + adendos vigentes em `addenda/`.

### 6. Correlação horizontal (papel Correlator)
### 2.5 Correlação horizontal (papel Correlator)

@@ -93,8 +121,8 @@ 1. Compare com os bugs existentes (mesmo módulo, mesma spec, mesmos arquivos, sintoma parecido)

### 7. Criação da pasta do bug
### 2.6 Criação da pasta do bug
Crie `_reversa_bugs/bugs/BUG-<data>-<sufixo>-<slug>/`:
Crie `_reversa_bugs/<contexto>/bugs/BUG-<data>-<sufixo>-<slug>/`:
1. `bug.md` conforme `references/bug-schema.md` (schema_version 1, `status: open`, `phase: triaging`, closure.policy do README)
2. `evidence/` com os artefatos coletados (nunca logs gigantes dentro do Markdown; corpo aponta caminhos relativos)
2. `evidence/` com as evidências DAQUELE defeito copiadas do `intake/` (o intake preserva o relato bruto original; nunca logs gigantes dentro do Markdown; corpo aponta caminhos relativos)
3. A pasta é o endereço definitivo do bug: **nunca será movida nem renomeada**. Status muda só no front matter.

@@ -104,13 +132,14 @@

### 8. Views
## Etapa 3: views (parte da documentação, não um extra)
Atualize as views de `generated/` e o espelho `_reversa_sdd/traceability/bugs.md` seguindo o protocolo do `/reversa-debugger-graph` (ou informe o usuário para rodá-lo, se preferir manter o registro rápido). Nunca edite views à mão fora do protocolo.
Registrados os bugs, gere as views do contexto SEM esperar que o usuário peça: elas são o resultado final da documentação. Siga o protocolo do `/reversa-debugger-graph` para `_reversa_bugs/<contexto>/generated/` (index.md, catalog.jsonl, matrix.md, graph.md, graph.html, spec-matrix.md) e o espelho `_reversa_sdd/traceability/bugs.md`. O `graph.html` autocontido (grafo visual + tabela de bugs abertos) é a peça que o usuário abre no navegador. Nunca edite views à mão fora do protocolo.
## Relatório final ao usuário
1. ID canônico + display_number e caminho absoluto da pasta criada
2. Spec vinculada (ou `spec-gap`)
3. Relações propostas, marcadas como `proposed`
4. Severidade/prioridade registradas
5. Se `security_suspected`: aviso sobre visibilidade restrita
1. Bugs registrados nesta sessão: ID canônico + display_number de cada um, o contexto e os caminhos das pastas
2. Caminho do relato de intake e do `generated/graph.html` do contexto
3. Spec vinculada (ou `spec-gap`) por bug
4. Relações propostas, marcadas como `proposed`
5. Severidade/prioridade registradas
6. Se `security_suspected`: aviso sobre visibilidade restrita

@@ -117,0 +146,0 @@ Termine com:

@@ -20,3 +20,4 @@ ---

1. Leia `.reversa/state.json` (`output_folder`, `chat_language`, `doc_language`)
2. Se `_reversa_bugs/` não existir, execute o bootstrap do registro descrito no `/reversa-debugger` (README com closure policy, taxonomy.yaml, pastas)
2. Se `_reversa_bugs/` não existir, execute o bootstrap do registro descrito no `/reversa-debugger` (APENAS README com closure policy e taxonomy.yaml; nenhuma pasta vazia)
2.1. Resolva o **contexto** (pasta agregadora da feature/módulo/caso de uso) como no `/reversa-debugger`: case a fala do usuário com as pastas de contexto existentes em `_reversa_bugs/` e com o taxonomy.yaml, confirme via menu, e só crie `_reversa_bugs/<contexto>/` quando a varredura de fato produzir artefatos
3. Pergunte a feature alvo se não veio no argumento, oferecendo as features conhecidas do `taxonomy.yaml` como opções + "Outro"

@@ -72,7 +73,7 @@

3. Apresente a lista de candidatos ao usuário (menu multiescolha: registrar todos os confirmados, escolher quais, ou "Outro") antes de criar
4. Registre os aceitos EM SÉRIE seguindo o protocolo do `/reversa-debugger` (IDs merge-safe atribuídos um a um, `origin.type: inspection`, rastreabilidade e relações preenchidas). Achado com sinal de segurança segue o fluxo restrito.
4. Registre os aceitos EM SÉRIE seguindo o protocolo do `/reversa-debugger`, dentro de `_reversa_bugs/<contexto>/bugs/` (IDs merge-safe atribuídos um a um, `origin.type: inspection`, rastreabilidade e relações preenchidas). Achado com sinal de segurança segue o fluxo restrito.
## Etapa 4: relatório
Escreva `_reversa_bugs/inspections/<feature>/report.md`:
Escreva `_reversa_bugs/<contexto>/inspections/<varredura>/report.md` (crie `inspections/` do contexto agora, na primeira varredura):

@@ -84,3 +85,3 @@ 1. Mapa da feature (specs, código, testes, dados)

Atualize as views pelo protocolo do `/reversa-debugger-graph`.
Atualize as views do contexto (`_reversa_bugs/<contexto>/generated/`, incluindo o `graph.html`) pelo protocolo do `/reversa-debugger-graph`.

@@ -87,0 +88,0 @@ ## Relatório final ao usuário

{
"name": "reversa",
"version": "1.2.54",
"version": "1.2.55",
"description": "Transform legacy systems into executable specifications for AI coding agents",

@@ -5,0 +5,0 @@ "bin": {

@@ -248,3 +248,3 @@ # Reversa

A repository-native causal defect memory: every bug is a self-contained folder under `_reversa_bugs/bugs/` with a YAML front matter record traceable to the specs (`SPEC ↔ CODE ↔ TEST ↔ BUG`), evidence, optional multi-agent debate state and the correction change set. Registering and fixing are strictly separate acts.
A repository-native causal defect memory, organized by **context** (the feature/module/use case the user is talking about): each context folder under `_reversa_bugs/<context>/` aggregates everything of that area (annotated reports in `intake/`, self-contained bug folders, inspections and generated views incl. a clickable `graph.html`). Every bug carries a YAML front matter record traceable to the specs (`SPEC ↔ CODE ↔ TEST ↔ BUG`), a visual fix plan approved before any change, and a `DONE.md` lock once closed. Registering and fixing are strictly separate acts.

@@ -251,0 +251,0 @@ | Agent | Role |