@shiftleftpt/sbd-toe-mcp 0.20.0-beta.3 → 0.20.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/consumed-bundle.json +12 -12
- package/data/entities/proportionality.json +3 -3
- package/data/entities/sdlc_integration.json +3 -3
- package/data/publish/indexes/bundle_catalog.jsonl +1 -1
- package/data/publish/indexes/canonical_chunks.jsonl +4903 -4902
- package/data/publish/indexes/chunk_entity_mentions.jsonl +9 -25
- package/data/publish/indexes/mcp_chunks.jsonl +125 -124
- package/data/publish/indexes/publication_manifest.json +8 -8
- package/data/publish/overlay/framework_overlay_index.json +18 -0
- package/data/publish/overlay/overlay_mappings.jsonl +120 -45
- package/data/publish/runtime/controls.json +27 -25
- package/data/publish/runtime/deterministic_manifest.json +1 -1
- package/data/publish/runtime/evidence_patterns.json +24 -24
- package/data/publish/runtime/requirement_control_links.json +334 -162
- package/data/publish/runtime/v1/manual_maturity_progression.jsonl +336 -336
- package/data/publish/runtime/v1/manual_rastreabilidade.jsonl +1105 -1105
- package/data/publish/runtime/v1/manual_threat_mitigation.jsonl +523 -523
- package/data/publish/runtime/v1/v1_manifest.json +5 -5
- package/data/reports/run_manifest.json +8 -8
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/tools/plan-repo-governance.d.ts +1 -2
- package/dist/tools/plan-repo-governance.js +19 -49
- package/dist/tools/plan-repo-governance.js.map +1 -1
- package/dist/tools/structured-tools.d.ts +4 -5
- package/dist/tools/structured-tools.js +87 -122
- package/dist/tools/structured-tools.js.map +1 -1
- package/package.json +3 -2
|
@@ -1134,11 +1134,11 @@
|
|
|
1134
1134
|
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B"], "size_estimate": {"approx_tokens": 39, "chars": 155}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B", "title": "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B", "traceability": {"line_end": 18, "line_start": 17, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/15-exemplos-aplicacao.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b"}, "vector_text": "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B\n\n## Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B"}
|
|
1135
1135
|
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--1-contexto", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--1-contexto", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B", "🧩 1. Contexto"], "size_estimate": {"approx_tokens": 83, "chars": 331}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "### 🧩 1. Contexto\n\n- Aplicação: Portal web de gestão de contratos\n- Tipo: Aplicação web com autenticação federada\n- Dados: Contratuais e pessoais (alguns sensíveis)\n- Classificação: Nível 2 (risco médio), conforme Capítulo 1\n- Nova funcionalidade: Permitir upload de documentos PDF por utilizadores autenticados\n\n---", "title": "🧩 1. Contexto", "traceability": {"line_end": 28, "line_start": 19, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/15-exemplos-aplicacao.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--1-contexto"}, "vector_text": "🧩 1. Contexto\n\n### 🧩 1. Contexto\n\n- Aplicação: Portal web de gestão de contratos\n- Tipo: Aplicação web com autenticação federada\n- Dados: Contratuais e pessoais (alguns sensíveis)\n- Classificação: Nível 2 (risco médio), conforme Capítulo 1\n- Nova funcionalidade: Permitir upload de documentos PDF por utilizadores autenticados\n\n---"}
|
|
1136
1136
|
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--2-revisao-da-classificacao-de-risco", "chunk_kind": "table_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--2-revisao-da-classificacao-de-risco", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B", "🔎 2. Revisão da classificação de risco"], "size_estimate": {"approx_tokens": 155, "chars": 619}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "### 🔎 2. Revisão da classificação de risco\n\nAntes de definir requisitos, a equipa revê a classificação da aplicação à luz da nova funcionalidade:\n\n| Fator | Alteração com a nova feature |\n|-------------------------------|--------------------------------------|\n| Superfície de exposição | ↑ Upload direto de utilizador final |\n| Sensibilidade dos dados | ↔ Igual (dados já eram sensíveis) |\n| Dependência de terceiros | ↔ Sem alterações |\n\n**Decisão**: Mantém-se como Nível 2, mas a exposição aumenta.\n\n---", "title": "🔎 2. Revisão da classificação de risco", "traceability": {"line_end": 42, "line_start": 29, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/15-exemplos-aplicacao.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--2-revisao-da-classificacao-de-risco"}, "vector_text": "🔎 2. Revisão da classificação de risco\n\n### 🔎 2. Revisão da classificação de risco\n\nAntes de definir requisitos, a equipa revê a classificação da aplicação à luz da nova funcionalidade:\n\n| Fator | Alteração com a nova feature |\n|-------------------------------|--------------------------------------|\n| Superfície de exposição | ↑ Upload direto de utilizador final |\n| Sensibilidade dos dados | ↔ Igual (dados já eram sensíveis) |\n| Dependência de terceiros | ↔ Sem alterações |\n\n**Decisão**: Mantém-se como Nível 2, mas a exposição aumenta.\n\n---"}
|
|
1137
|
-
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--3-identificacao-dos-requisitos-relevantes", "chunk_kind": "table_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": ["application-security-requirements"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["REQ-003"
|
|
1138
|
-
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--4-rastreabilidade-risco-requisito-controlo-validacao", "chunk_kind": "table_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": ["application-security-requirements"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["REQ-003"
|
|
1139
|
-
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--5-papeis-envolvidos", "chunk_kind": "table_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--5-papeis-envolvidos", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B", "👥 5. Papéis envolvidos"], "size_estimate": {"approx_tokens": 122, "chars": 488}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "### 👥 5. Papéis envolvidos\n\n| Papel | Contributo |\n|----------------------|---------------------------------------------|\n| Dev Team | Integração dos controlos nos endpoints/API |\n| QA/Testes | Escrita dos testes automatizados |\n| Segurança (AppSec) | Validação de requisitos e rastreabilidade |\n| Product Owner | Inclusão dos critérios no backlog e user stories |\n\n---", "title": "👥 5. Papéis envolvidos", "traceability": {"line_end":
|
|
1140
|
-
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--6-ponto-de-verificacao-no-ciclo-de-vida", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--6-ponto-de-verificacao-no-ciclo-de-vida", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B", "📆 6. Ponto de verificação no ciclo de vida"], "size_estimate": {"approx_tokens": 93, "chars": 369}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "### 📆 6. Ponto de verificação no ciclo de vida\n\n- Os requisitos foram incluídos nas **histórias de utilizador**\n- Os critérios de aceitação foram definidos em Gherkin\n- Os testes foram validados na fase de integração contínua (CI)\n- A validação da rastreabilidade foi feita durante a sprint review com apoio de segurança\n\n---", "title": "📆 6. Ponto de verificação no ciclo de vida", "traceability": {"line_end":
|
|
1141
|
-
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--conclusao", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--conclusao", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Conclusão"], "size_estimate": {"approx_tokens": 107, "chars": 425}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## Conclusão\n\nEste exemplo demonstra a aplicação prática dos requisitos de segurança desde a identificação do risco até à validação técnica, garantindo rastreabilidade, proporcionalidade e integração com os processos de desenvolvimento ágil.\n\n> Este mesmo processo pode ser reutilizado noutros casos com adaptações mínimas, desde que se mantenha a lógica: **classificação → seleção → rastreabilidade → validação**.", "title": "Conclusão", "traceability": {"line_end":
|
|
1137
|
+
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--3-identificacao-dos-requisitos-relevantes", "chunk_kind": "table_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": ["application-security-requirements"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["REQ-003"]}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--3-identificacao-dos-requisitos-relevantes", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B", "📝 3. Identificação dos requisitos relevantes"], "size_estimate": {"approx_tokens": 309, "chars": 1233}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "### 📝 3. Identificação dos requisitos relevantes\n\nCom base nos temas do catálogo (Cap. 2) e nos domínios impactados pela feature (input, ficheiros, autenticação, registos), são selecionados os seguintes requisitos:\n\n| ID | Descrição | Tema |\n|----------|---------------------------------------------------------------------------|---------------------------------|\n| REQ-003 | Sessões com timeout de 15 minutos de inatividade | Sessões e Estado |\n| EX-REQ-010 | Validação de tipo, extensão e tamanho no upload de ficheiros | Validação de Input e Output |\n| EX-REQ-011 | Análise de malware antes do armazenamento de ficheiros | Antivírus e Malware |\n| EX-REQ-015 | Logging de tentativas de upload e erros associados | Registo e Auditoria |\n| EX-REQ-018 | Criação de testes automáticos para inputs malformados no endpoint de API | Testes de Segurança |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---", "title": "📝 3. Identificação dos requisitos relevantes", "traceability": {"line_end": 58, "line_start": 43, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/15-exemplos-aplicacao.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--3-identificacao-dos-requisitos-relevantes"}, "vector_text": "📝 3. Identificação dos requisitos relevantes\n\n### 📝 3. Identificação dos requisitos relevantes\n\nCom base nos temas do catálogo (Cap. 2) e nos domínios impactados pela feature (input, ficheiros, autenticação, registos), são selecionados os seguintes requisitos:\n\n| ID | Descrição | Tema |\n|----------|---------------------------------------------------------------------------|---------------------------------|\n| REQ-003 | Sessões com timeout de 15 minutos de inatividade | Sessões e Estado |\n| EX-REQ-010 | Validação de tipo, extensão e tamanho no upload de ficheiros | Validação de Input e Output |\n| EX-REQ-011 | Análise de malware antes do armazenamento de ficheiros | Antivírus e Malware |\n| EX-REQ-015 | Logging de tentativas de upload e erros associados | Registo e Auditoria |\n| EX-REQ-018 | Criação de testes automáticos para inputs malformados no endpoint de API | Testes de Segurança |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---"}
|
|
1138
|
+
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--4-rastreabilidade-risco-requisito-controlo-validacao", "chunk_kind": "table_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": ["application-security-requirements"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["REQ-003"]}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--4-rastreabilidade-risco-requisito-controlo-validacao", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B", "🔗 4. Rastreabilidade (risco → requisito → controlo → validação)"], "size_estimate": {"approx_tokens": 268, "chars": 1072}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "### 🔗 4. Rastreabilidade (risco → requisito → controlo → validação)\n\n| Risco identificado | Requisito | Controlo implementado | Validação |\n|--------------------------------------------|-----------|----------------------------------------------|-------------------------------|\n| Upload de ficheiros maliciosos | EX-REQ-011 | Integração com antivírus no pipeline | CI/CD com scan automático |\n| Abuso do endpoint com ficheiros grandes | EX-REQ-010 | Limite de 10 MB + verificação de MIME type | Teste funcional + logs |\n| Sessões abusivamente longas | REQ-003 | Timeout de 15 min com reautenticação | Teste de UI + script Selenium |\n| Falta de visibilidade sobre ações críticas | EX-REQ-015 | Logging com nível de alerta e centralização | Revisão de logs + alertas |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---", "title": "🔗 4. Rastreabilidade (risco → requisito → controlo → validação)", "traceability": {"line_end": 71, "line_start": 59, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/15-exemplos-aplicacao.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--4-rastreabilidade-risco-requisito-controlo-validacao"}, "vector_text": "🔗 4. Rastreabilidade (risco → requisito → controlo → validação)\n\n### 🔗 4. Rastreabilidade (risco → requisito → controlo → validação)\n\n| Risco identificado | Requisito | Controlo implementado | Validação |\n|--------------------------------------------|-----------|----------------------------------------------|-------------------------------|\n| Upload de ficheiros maliciosos | EX-REQ-011 | Integração com antivírus no pipeline | CI/CD com scan automático |\n| Abuso do endpoint com ficheiros grandes | EX-REQ-010 | Limite de 10 MB + verificação de MIME type | Teste funcional + logs |\n| Sessões abusivamente longas | REQ-003 | Timeout de 15 min com reautenticação | Teste de UI + script Selenium |\n| Falta de visibilidade sobre ações críticas | EX-REQ-015 | Logging com nível de alerta e centralização | Revisão de logs + alertas |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---"}
|
|
1139
|
+
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--5-papeis-envolvidos", "chunk_kind": "table_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--5-papeis-envolvidos", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B", "👥 5. Papéis envolvidos"], "size_estimate": {"approx_tokens": 122, "chars": 488}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "### 👥 5. Papéis envolvidos\n\n| Papel | Contributo |\n|----------------------|---------------------------------------------|\n| Dev Team | Integração dos controlos nos endpoints/API |\n| QA/Testes | Escrita dos testes automatizados |\n| Segurança (AppSec) | Validação de requisitos e rastreabilidade |\n| Product Owner | Inclusão dos critérios no backlog e user stories |\n\n---", "title": "👥 5. Papéis envolvidos", "traceability": {"line_end": 82, "line_start": 72, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/15-exemplos-aplicacao.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--5-papeis-envolvidos"}, "vector_text": "👥 5. Papéis envolvidos\n\n### 👥 5. Papéis envolvidos\n\n| Papel | Contributo |\n|----------------------|---------------------------------------------|\n| Dev Team | Integração dos controlos nos endpoints/API |\n| QA/Testes | Escrita dos testes automatizados |\n| Segurança (AppSec) | Validação de requisitos e rastreabilidade |\n| Product Owner | Inclusão dos critérios no backlog e user stories |\n\n---"}
|
|
1140
|
+
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--6-ponto-de-verificacao-no-ciclo-de-vida", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--6-ponto-de-verificacao-no-ciclo-de-vida", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Cenário: Nova funcionalidade de upload de documentos numa aplicação web B2B", "📆 6. Ponto de verificação no ciclo de vida"], "size_estimate": {"approx_tokens": 93, "chars": 369}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "### 📆 6. Ponto de verificação no ciclo de vida\n\n- Os requisitos foram incluídos nas **histórias de utilizador**\n- Os critérios de aceitação foram definidos em Gherkin\n- Os testes foram validados na fase de integração contínua (CI)\n- A validação da rastreabilidade foi feita durante a sprint review com apoio de segurança\n\n---", "title": "📆 6. Ponto de verificação no ciclo de vida", "traceability": {"line_end": 91, "line_start": 83, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/15-exemplos-aplicacao.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--cenario-nova-funcionalidade-de-upload-de-documentos-numa-aplicacao-web-b2b--6-ponto-de-verificacao-no-ciclo-de-vida"}, "vector_text": "📆 6. Ponto de verificação no ciclo de vida\n\n### 📆 6. Ponto de verificação no ciclo de vida\n\n- Os requisitos foram incluídos nas **histórias de utilizador**\n- Os critérios de aceitação foram definidos em Gherkin\n- Os testes foram validados na fase de integração contínua (CI)\n- A validação da rastreabilidade foi feita durante a sprint review com apoio de segurança\n\n---"}
|
|
1141
|
+
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--conclusao", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--conclusao", "relation_hints": [], "section_path": ["Exemplos de Aplicação de Requisitos de Segurança", "Conclusão"], "size_estimate": {"approx_tokens": 107, "chars": 425}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## Conclusão\n\nEste exemplo demonstra a aplicação prática dos requisitos de segurança desde a identificação do risco até à validação técnica, garantindo rastreabilidade, proporcionalidade e integração com os processos de desenvolvimento ágil.\n\n> Este mesmo processo pode ser reutilizado noutros casos com adaptações mínimas, desde que se mantenha a lógica: **classificação → seleção → rastreabilidade → validação**.", "title": "Conclusão", "traceability": {"line_end": 96, "line_start": 92, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/15-exemplos-aplicacao.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao--exemplos-de-aplicacao-de-requisitos-de-seguranca--conclusao"}, "vector_text": "Conclusão\n\n## Conclusão\n\nEste exemplo demonstra a aplicação prática dos requisitos de segurança desde a identificação do risco até à validação técnica, garantindo rastreabilidade, proporcionalidade e integração com os processos de desenvolvimento ágil.\n\n> Este mesmo processo pode ser reutilizado noutros casos com adaptações mínimas, desde que se mantenha a lógica: **classificação → seleção → rastreabilidade → validação**."}
|
|
1142
1142
|
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas--kpis-e-metricas-requisitos-de-seguranca", "chunk_kind": "metric_catalog_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas", "document_role": "kpi_catalog", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "metric_catalog_section", "document_role": "kpi_catalog", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas--kpis-e-metricas-requisitos-de-seguranca", "relation_hints": [], "section_path": ["KPIs e Métricas - Requisitos de Segurança"], "size_estimate": {"approx_tokens": 22, "chars": 86}, "source_mode": "explicit", "support_profiles": ["consult", "implementation", "review"], "text": "# KPIs e Métricas - Requisitos de Segurança", "title": "KPIs e Métricas - Requisitos de Segurança", "traceability": {"line_end": 12, "line_start": 11, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/16-kpis-metricas.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas--kpis-e-metricas-requisitos-de-seguranca"}, "vector_text": "KPIs e Métricas - Requisitos de Segurança\n\n# KPIs e Métricas - Requisitos de Segurança"}
|
|
1143
1143
|
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas--kpis-e-metricas-requisitos-de-seguranca--ambito-e-proposito", "chunk_kind": "metric_catalog_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas", "document_role": "kpi_catalog", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "metric_catalog_section", "document_role": "kpi_catalog", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {"Metric": ["T-01", "T-06"]}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas--kpis-e-metricas-requisitos-de-seguranca--ambito-e-proposito", "relation_hints": ["catalog_mentions_metric"], "section_path": ["KPIs e Métricas - Requisitos de Segurança", "Âmbito e propósito"], "size_estimate": {"approx_tokens": 214, "chars": 855}, "source_mode": "explicit", "support_profiles": ["consult", "implementation", "review"], "text": "## Âmbito e propósito\n\nOs indicadores deste domínio avaliam a **aplicação efectiva, rastreabilidade e validação dos requisitos de segurança** definidos no catálogo SbD-ToE. O catálogo de requisitos é o elo entre a classificação de risco (Cap. 01) e os controlos técnicos implementados nos capítulos de domínio (Cap. 04–12). Sem este elo, os domínios técnicos funcionam sem referência normativa, e a governação não tem base para avaliar conformidade.\n\nO risco específico deste domínio é a conformidade declarativa: uma aplicação pode listar os requisitos aplicados sem que estes estejam efectivamente implementados ou validados. Os indicadores RQS medem não apenas a declaração, mas a evidência de validação.\n\nOs indicadores RQS alimentam as dimensões transversais **T-01 (Cobertura de controlos)** e **T-06 (Maturidade SbD-ToE)**.\n\n---", "title": "Âmbito e propósito", "traceability": {"line_end": 22, "line_start": 13, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/16-kpis-metricas.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas--kpis-e-metricas-requisitos-de-seguranca--ambito-e-proposito"}, "vector_text": "Âmbito e propósito\n\n## Âmbito e propósito\n\nOs indicadores deste domínio avaliam a **aplicação efectiva, rastreabilidade e validação dos requisitos de segurança** definidos no catálogo SbD-ToE. O catálogo de requisitos é o elo entre a classificação de risco (Cap. 01) e os controlos técnicos implementados nos capítulos de domínio (Cap. 04–12). Sem este elo, os domínios técnicos funcionam sem referência normativa, e a governação não tem base para avaliar conformidade.\n\nO risco específico deste domínio é a conformidade declarativa: uma aplicação pode listar os requisitos aplicados sem que estes estejam efectivamente implementados ou validados. Os indicadores RQS medem não apenas a declaração, mas a evidência de validação.\n\nOs indicadores RQS alimentam as dimensões transversais **T-01 (Cobertura de controlos)** e **T-06 (Maturidade SbD-ToE)**.\n\n---"}
|
|
1144
1144
|
{"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_id": "010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas--kpis-e-metricas-requisitos-de-seguranca--denominador-e-fundacao-de-portfolio", "chunk_kind": "metric_catalog_section", "document_id": "010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas", "document_role": "kpi_catalog", "filter_tags": {"authority_class": "supporting", "bundle_id": "02-requisitos-seguranca", "chunk_kind": "metric_catalog_section", "document_role": "kpi_catalog", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {"Metric": ["CLA-K01", "F-02", "F-03", "RQS-K01"]}, "record_id": "mcp::010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas--kpis-e-metricas-requisitos-de-seguranca--denominador-e-fundacao-de-portfolio", "relation_hints": ["catalog_mentions_metric"], "section_path": ["KPIs e Métricas - Requisitos de Segurança", "Denominador e fundação de portfólio"], "size_estimate": {"approx_tokens": 140, "chars": 560}, "source_mode": "explicit", "support_profiles": ["consult", "implementation", "review"], "text": "## Denominador e fundação de portfólio\n\nOs indicadores RQS usam como denominador **F-02 - aplicações com classificação de risco formal**, definido em Cap. 01 (`addon/12-kpis-metricas.md`, CLA-K01). RQS-K01 estabelece F-03 - aplicações com requisitos mapeados - que por sua vez é o denominador da camada seguinte do funil de adoptabilidade SbD-ToE.\n\nA interpretação de qualquer percentagem RQS pressupõe que F-02 está completo para o nível de risco em questão. Ver `kpis-governanca.md` - secção \"Fundação de portfólio\".\n\n---", "title": "Denominador e fundação de portfólio", "traceability": {"line_end": 30, "line_start": 23, "source_path": "010-sbd-manual/02-requisitos-seguranca/addon/16-kpis-metricas.md", "unit_id": "010-sbd-manual-02-requisitos-seguranca-addon-16-kpis-metricas--kpis-e-metricas-requisitos-de-seguranca--denominador-e-fundacao-de-portfolio"}, "vector_text": "Denominador e fundação de portfólio\n\n## Denominador e fundação de portfólio\n\nOs indicadores RQS usam como denominador **F-02 - aplicações com classificação de risco formal**, definido em Cap. 01 (`addon/12-kpis-metricas.md`, CLA-K01). RQS-K01 estabelece F-03 - aplicações com requisitos mapeados - que por sua vez é o denominador da camada seguinte do funil de adoptabilidade SbD-ToE.\n\nA interpretação de qualquer percentagem RQS pressupõe que F-02 está completo para o nível de risco em questão. Ver `kpis-governanca.md` - secção \"Fundação de portfólio\".\n\n---"}
|
|
@@ -2058,7 +2058,7 @@
|
|
|
2058
2058
|
{"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--contexto-e-decisao", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["build"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--contexto-e-decisao", "relation_hints": [], "section_path": ["Estudo de Caso - Aplicar o SbD-ToE ao Próprio Pipeline CI/CD", "🧭 Contexto e decisão"], "size_estimate": {"approx_tokens": 142, "chars": 565}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🧭 Contexto e decisão\n\nA organização opera múltiplas aplicações em ambientes regulados. Após uma avaliação baseada no Capítulo 01 - Gestão de Risco, foi identificado que:\n\n- O pipeline CI/CD tem acesso privilegiado a código, artefactos, segredos e infraestrutura;\n- É o ponto de entrada para todo o ciclo de vida de software;\n- A sua integridade condiciona a segurança de todo o SDLC.\n\n> **Decisão estratégica:** Tratar os pipelines como software de elevada criticidade (nível L3), e aplicar o SbD-ToE como se de um produto se tratasse.\n\n---", "title": "🧭 Contexto e decisão", "traceability": {"line_end": 31, "line_start": 20, "source_path": "010-sbd-manual/07-cicd-seguro/addon/11-case-study-inception-apply-sbd-to-cicd.md", "unit_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--contexto-e-decisao"}, "vector_text": "🧭 Contexto e decisão\n\n## 🧭 Contexto e decisão\n\nA organização opera múltiplas aplicações em ambientes regulados. Após uma avaliação baseada no Capítulo 01 - Gestão de Risco, foi identificado que:\n\n- O pipeline CI/CD tem acesso privilegiado a código, artefactos, segredos e infraestrutura;\n- É o ponto de entrada para todo o ciclo de vida de software;\n- A sua integridade condiciona a segurança de todo o SDLC.\n\n> **Decisão estratégica:** Tratar os pipelines como software de elevada criticidade (nível L3), e aplicar o SbD-ToE como se de um produto se tratasse.\n\n---"}
|
|
2059
2059
|
{"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--arquitetura-desenhada", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["build"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--arquitetura-desenhada", "relation_hints": [], "section_path": ["Estudo de Caso - Aplicar o SbD-ToE ao Próprio Pipeline CI/CD", "📐 Arquitetura desenhada"], "size_estimate": {"approx_tokens": 143, "chars": 570}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 📐 Arquitetura desenhada\n\nFoi adotada uma arquitetura modular e segura (Cap. 04):\n\n- Pipelines como código (`.yaml`) em repositório dedicado com controlo de alterações;\n- Templates centrais versionados, com política de aprovação formal;\n- Runners segregados (build/test/deploy), com isolamento e descarte;\n- Gestão dinâmica de segredos via Vault (Cap. 03, 06);\n- Mirrors internos para NPM, Maven, Docker (Cap. 05);\n- Proveniência e assinatura dos artefactos gerados (Cap. 07);\n- Logging completo com auditabilidade de execuções (Cap. 11).\n\n---", "title": "📐 Arquitetura desenhada", "traceability": {"line_end": 45, "line_start": 32, "source_path": "010-sbd-manual/07-cicd-seguro/addon/11-case-study-inception-apply-sbd-to-cicd.md", "unit_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--arquitetura-desenhada"}, "vector_text": "📐 Arquitetura desenhada\n\n## 📐 Arquitetura desenhada\n\nFoi adotada uma arquitetura modular e segura (Cap. 04):\n\n- Pipelines como código (`.yaml`) em repositório dedicado com controlo de alterações;\n- Templates centrais versionados, com política de aprovação formal;\n- Runners segregados (build/test/deploy), com isolamento e descarte;\n- Gestão dinâmica de segredos via Vault (Cap. 03, 06);\n- Mirrors internos para NPM, Maven, Docker (Cap. 05);\n- Proveniência e assinatura dos artefactos gerados (Cap. 07);\n- Logging completo com auditabilidade de execuções (Cap. 11).\n\n---"}
|
|
2060
2060
|
{"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--threat-modeling", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["build"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--threat-modeling", "relation_hints": [], "section_path": ["Estudo de Caso - Aplicar o SbD-ToE ao Próprio Pipeline CI/CD", "🔍 Threat modeling"], "size_estimate": {"approx_tokens": 138, "chars": 549}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🔍 Threat modeling\n\nO exercício de threat modeling (Cap. 03) identificou riscos como:\n\n- **Spoofing:** execução de pipelines em runners não autorizados → mitigado com labels restritos e workers dedicados.\n- **Tampering:** alteração silenciosa de templates → mitigado com PR obrigatórios e revisões.\n- **Information Disclosure:** acesso indevido a secrets → mitigado com âmbito mínimo e logs validados.\n- **Elevation of Privilege:** tasks inline com permissões excessivas → mitigado com revisão manual e catálogo controlado.\n\n---", "title": "🔍 Threat modeling", "traceability": {"line_end": 56, "line_start": 46, "source_path": "010-sbd-manual/07-cicd-seguro/addon/11-case-study-inception-apply-sbd-to-cicd.md", "unit_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--threat-modeling"}, "vector_text": "🔍 Threat modeling\n\n## 🔍 Threat modeling\n\nO exercício de threat modeling (Cap. 03) identificou riscos como:\n\n- **Spoofing:** execução de pipelines em runners não autorizados → mitigado com labels restritos e workers dedicados.\n- **Tampering:** alteração silenciosa de templates → mitigado com PR obrigatórios e revisões.\n- **Information Disclosure:** acesso indevido a secrets → mitigado com âmbito mínimo e logs validados.\n- **Elevation of Privilege:** tasks inline com permissões excessivas → mitigado com revisão manual e catálogo controlado.\n\n---"}
|
|
2061
|
-
{"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--desenvolvimento-seguro-dos-proprios-pipelines", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["build"], "risk_level": []}, "mentioned_entities": {
|
|
2061
|
+
{"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--desenvolvimento-seguro-dos-proprios-pipelines", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["build"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--desenvolvimento-seguro-dos-proprios-pipelines", "relation_hints": [], "section_path": ["Estudo de Caso - Aplicar o SbD-ToE ao Próprio Pipeline CI/CD", "🛠️ Desenvolvimento seguro dos próprios pipelines"], "size_estimate": {"approx_tokens": 144, "chars": 576}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🛠️ Desenvolvimento seguro dos próprios pipelines\n\nAplicando o Cap. 06:\n\n- Todo o código de pipeline é versionado, com revisão obrigatória;\n- Linters e scanners analisam `.yaml`, scripts embutidos, módulos reutilizados;\n- Tasks, Actions e extensões são incluídas num **SBOM próprio**, com validação contínua (Cap. 05);\n- Foram definidos requisitos não funcionais específicos, ex. `CI-CD-004`, `CI-CD-006`, `EX-REQ-014`, `EX-REQ-024` — identificadores ilustrativos; não correspondem ao Catálogo de Requisitos do Cap. 02.\n\n---", "title": "🛠️ Desenvolvimento seguro dos próprios pipelines", "traceability": {"line_end": 67, "line_start": 57, "source_path": "010-sbd-manual/07-cicd-seguro/addon/11-case-study-inception-apply-sbd-to-cicd.md", "unit_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--desenvolvimento-seguro-dos-proprios-pipelines"}, "vector_text": "🛠️ Desenvolvimento seguro dos próprios pipelines\n\n## 🛠️ Desenvolvimento seguro dos próprios pipelines\n\nAplicando o Cap. 06:\n\n- Todo o código de pipeline é versionado, com revisão obrigatória;\n- Linters e scanners analisam `.yaml`, scripts embutidos, módulos reutilizados;\n- Tasks, Actions e extensões são incluídas num **SBOM próprio**, com validação contínua (Cap. 05);\n- Foram definidos requisitos não funcionais específicos, ex. `CI-CD-004`, `CI-CD-006`, `EX-REQ-014`, `EX-REQ-024` — identificadores ilustrativos; não correspondem ao Catálogo de Requisitos do Cap. 02.\n\n---"}
|
|
2062
2062
|
{"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--testes-aplicados-ao-pipeline", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["build"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--testes-aplicados-ao-pipeline", "relation_hints": [], "section_path": ["Estudo de Caso - Aplicar o SbD-ToE ao Próprio Pipeline CI/CD", "🧪 Testes aplicados ao pipeline"], "size_estimate": {"approx_tokens": 78, "chars": 310}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🧪 Testes aplicados ao pipeline\n\nCom base no Cap. 10:\n\n- SAST sobre scripts auxiliares e tarefas embutidas;\n- Análise de segredos e permissões excessivas;\n- Testes de regressão para garantir enforcement de gates;\n- Execuções sandbox com rastreabilidade de inputs/outputs.\n\n---", "title": "🧪 Testes aplicados ao pipeline", "traceability": {"line_end": 78, "line_start": 68, "source_path": "010-sbd-manual/07-cicd-seguro/addon/11-case-study-inception-apply-sbd-to-cicd.md", "unit_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--testes-aplicados-ao-pipeline"}, "vector_text": "🧪 Testes aplicados ao pipeline\n\n## 🧪 Testes aplicados ao pipeline\n\nCom base no Cap. 10:\n\n- SAST sobre scripts auxiliares e tarefas embutidas;\n- Análise de segredos e permissões excessivas;\n- Testes de regressão para garantir enforcement de gates;\n- Execuções sandbox com rastreabilidade de inputs/outputs.\n\n---"}
|
|
2063
2063
|
{"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--gestao-de-dependencias-imagens-e-sbom", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["build"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--gestao-de-dependencias-imagens-e-sbom", "relation_hints": [], "section_path": ["Estudo de Caso - Aplicar o SbD-ToE ao Próprio Pipeline CI/CD", "🔐 Gestão de dependências, imagens e SBOM"], "size_estimate": {"approx_tokens": 94, "chars": 375}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🔐 Gestão de dependências, imagens e SBOM\n\n- SBOM do pipeline gerado com `syft` + `trivy`;\n- Dependências externas (ex: Actions, plugins) auditadas e versionadas;\n- Runners baseados em containers verificados, hardened, com validação de assinatura (Cap. 09);\n- Política de exceções com validade e rastreabilidade (Cap. 05, 14).\n\n---", "title": "🔐 Gestão de dependências, imagens e SBOM", "traceability": {"line_end": 87, "line_start": 79, "source_path": "010-sbd-manual/07-cicd-seguro/addon/11-case-study-inception-apply-sbd-to-cicd.md", "unit_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--gestao-de-dependencias-imagens-e-sbom"}, "vector_text": "🔐 Gestão de dependências, imagens e SBOM\n\n## 🔐 Gestão de dependências, imagens e SBOM\n\n- SBOM do pipeline gerado com `syft` + `trivy`;\n- Dependências externas (ex: Actions, plugins) auditadas e versionadas;\n- Runners baseados em containers verificados, hardened, com validação de assinatura (Cap. 09);\n- Política de exceções com validade e rastreabilidade (Cap. 05, 14).\n\n---"}
|
|
2064
2064
|
{"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--deploy-e-execucao", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "07-cicd-seguro", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["build"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--deploy-e-execucao", "relation_hints": [], "section_path": ["Estudo de Caso - Aplicar o SbD-ToE ao Próprio Pipeline CI/CD", "📦 Deploy e execução"], "size_estimate": {"approx_tokens": 69, "chars": 274}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 📦 Deploy e execução\n\n- O próprio pipeline é deployed com rastreabilidade total;\n- Logs são enviados para sistema central com alertas de anomalias;\n- A cada alteração relevante, é obrigatória nova revisão de threat modeling e validação funcional.\n\n---", "title": "📦 Deploy e execução", "traceability": {"line_end": 95, "line_start": 88, "source_path": "010-sbd-manual/07-cicd-seguro/addon/11-case-study-inception-apply-sbd-to-cicd.md", "unit_id": "010-sbd-manual-07-cicd-seguro-addon-11-case-study-inception-apply-sbd-to-cicd--estudo-de-caso-aplicar-o-sbd-toe-ao-proprio-pipeline-ci-cd--deploy-e-execucao"}, "vector_text": "📦 Deploy e execução\n\n## 📦 Deploy e execução\n\n- O próprio pipeline é deployed com rastreabilidade total;\n- Logs são enviados para sistema central com alertas de anomalias;\n- A cada alteração relevante, é obrigatória nova revisão de threat modeling e validação funcional.\n\n---"}
|
|
@@ -2584,27 +2584,27 @@
|
|
|
2584
2584
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast", "relation_hints": [], "section_path": ["Testes Estáticos de Segurança (SAST)"], "size_estimate": {"approx_tokens": 19, "chars": 76}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "# Testes Estáticos de Segurança (SAST)", "title": "Testes Estáticos de Segurança (SAST)", "traceability": {"line_end": 10, "line_start": 9, "source_path": "010-sbd-manual/10-testes-seguranca/addon/01-sast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast"}, "vector_text": "Testes Estáticos de Segurança (SAST)\n\n# Testes Estáticos de Segurança (SAST)"}
|
|
2585
2585
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--objetivo", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--objetivo", "relation_hints": [], "section_path": ["Testes Estáticos de Segurança (SAST)", "🌟 Objetivo"], "size_estimate": {"approx_tokens": 132, "chars": 527}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🌟 Objetivo\n\nDetetar vulnerabilidades de segurança no **código fonte** antes da execução da aplicação, através de **análise estática automática**, garantindo:\n\n- Feedback precoce e contínuo para as equipas de desenvolvimento;\n- Rastreabilidade entre código, findings e requisitos de segurança;\n- Integração automatizada com o ciclo de desenvolvimento e CI/CD;\n- Redução de risco sem impacto na produtividade.\n\n> O SAST é a base da validação shift-left - deteta falhas sem necessidade de executar a aplicação.\n\n---", "title": "🌟 Objetivo", "traceability": {"line_end": 23, "line_start": 11, "source_path": "010-sbd-manual/10-testes-seguranca/addon/01-sast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--objetivo"}, "vector_text": "🌟 Objetivo\n\n## 🌟 Objetivo\n\nDetetar vulnerabilidades de segurança no **código fonte** antes da execução da aplicação, através de **análise estática automática**, garantindo:\n\n- Feedback precoce e contínuo para as equipas de desenvolvimento;\n- Rastreabilidade entre código, findings e requisitos de segurança;\n- Integração automatizada com o ciclo de desenvolvimento e CI/CD;\n- Redução de risco sem impacto na produtividade.\n\n> O SAST é a base da validação shift-left - deteta falhas sem necessidade de executar a aplicação.\n\n---"}
|
|
2586
2586
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--o-que-e-sast", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--o-que-e-sast", "relation_hints": [], "section_path": ["Testes Estáticos de Segurança (SAST)", "🔍 O que é SAST"], "size_estimate": {"approx_tokens": 140, "chars": 559}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🔍 O que é SAST\n\nO SAST (Static Application Security Testing) analisa o **código-fonte ou bytecode** para identificar padrões perigosos, más práticas, falhas lógicas e potenciais vulnerabilidades - sem executar a aplicação.\n\nPode ser realizado por:\n\n- Ferramentas linguísticas (linters com regras de segurança);\n- Scanners genéricos (ex: ferramentas de mercado);\n- Motores semânticos configuráveis (ex: com regras personalizadas).\n\n> ⚠️ O SAST é complementar a testes dinâmicos e manuais - não substitui validações em tempo de execução.\n\n---", "title": "🔍 O que é SAST", "traceability": {"line_end": 37, "line_start": 24, "source_path": "010-sbd-manual/10-testes-seguranca/addon/01-sast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--o-que-e-sast"}, "vector_text": "🔍 O que é SAST\n\n## 🔍 O que é SAST\n\nO SAST (Static Application Security Testing) analisa o **código-fonte ou bytecode** para identificar padrões perigosos, más práticas, falhas lógicas e potenciais vulnerabilidades - sem executar a aplicação.\n\nPode ser realizado por:\n\n- Ferramentas linguísticas (linters com regras de segurança);\n- Scanners genéricos (ex: ferramentas de mercado);\n- Motores semânticos configuráveis (ex: com regras personalizadas).\n\n> ⚠️ O SAST é complementar a testes dinâmicos e manuais - não substitui validações em tempo de execução.\n\n---"}
|
|
2587
|
-
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--como-aplicar", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {
|
|
2587
|
+
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--como-aplicar", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--como-aplicar", "relation_hints": [], "section_path": ["Testes Estáticos de Segurança (SAST)", "⚙️ Como aplicar"], "size_estimate": {"approx_tokens": 172, "chars": 688}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## ⚙️ Como aplicar\n\n1. **Selecionar a ferramenta adequada** por stack (ex: Node, Java, .NET, Python);\n2. **Definir regras e thresholds mínimos** de aceitação (ex: falhas críticas bloqueiam build);\n3. **Executar automaticamente em cada pull request e pipeline de build**;\n4. **Emitir findings com rastreabilidade por linha de código e commit**;\n5. **Manter baseline de findings aceite vs findings novos**;\n6. **Documentar exceções e justificar false positives**, com acompanhamento AppSec.\n\n> 💡 Sugestão: usar tags nos findings para associar requisitos (ex: `EX-REQ-205` — identificador ilustrativo; não corresponde ao Catálogo de Requisitos do Cap. 02) e mitigações.\n\n---", "title": "⚙️ Como aplicar", "traceability": {"line_end": 50, "line_start": 38, "source_path": "010-sbd-manual/10-testes-seguranca/addon/01-sast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--como-aplicar"}, "vector_text": "⚙️ Como aplicar\n\n## ⚙️ Como aplicar\n\n1. **Selecionar a ferramenta adequada** por stack (ex: Node, Java, .NET, Python);\n2. **Definir regras e thresholds mínimos** de aceitação (ex: falhas críticas bloqueiam build);\n3. **Executar automaticamente em cada pull request e pipeline de build**;\n4. **Emitir findings com rastreabilidade por linha de código e commit**;\n5. **Manter baseline de findings aceite vs findings novos**;\n6. **Documentar exceções e justificar false positives**, com acompanhamento AppSec.\n\n> 💡 Sugestão: usar tags nos findings para associar requisitos (ex: `EX-REQ-205` — identificador ilustrativo; não corresponde ao Catálogo de Requisitos do Cap. 02) e mitigações.\n\n---"}
|
|
2588
2588
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--boas-praticas", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--boas-praticas", "relation_hints": [], "section_path": ["Testes Estáticos de Segurança (SAST)", "✅ Boas práticas"], "size_estimate": {"approx_tokens": 106, "chars": 424}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## ✅ Boas práticas\n\n- Executar o SAST localmente (pré-commit) e no pipeline (CI);\n- Afinar regras para reduzir falsos positivos e ruído;\n- Estabelecer política clara de findings bloqueantes por severidade;\n- Integrar com backlog (ex: Jira, Azure Boards) para triagem e gestão;\n- Validar cobertura da análise (ex: ficheiros ignorados, exclusões);\n- Reavaliar configurações com cada evolução tecnológica.\n\n---", "title": "✅ Boas práticas", "traceability": {"line_end": 61, "line_start": 51, "source_path": "010-sbd-manual/10-testes-seguranca/addon/01-sast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--boas-praticas"}, "vector_text": "✅ Boas práticas\n\n## ✅ Boas práticas\n\n- Executar o SAST localmente (pré-commit) e no pipeline (CI);\n- Afinar regras para reduzir falsos positivos e ruído;\n- Estabelecer política clara de findings bloqueantes por severidade;\n- Integrar com backlog (ex: Jira, Azure Boards) para triagem e gestão;\n- Validar cobertura da análise (ex: ficheiros ignorados, exclusões);\n- Reavaliar configurações com cada evolução tecnológica.\n\n---"}
|
|
2589
|
-
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--referencias-cruzadas", "chunk_kind": "table_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {
|
|
2589
|
+
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--referencias-cruzadas", "chunk_kind": "table_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--referencias-cruzadas", "relation_hints": [], "section_path": ["Testes Estáticos de Segurança (SAST)", "📎 Referências cruzadas"], "size_estimate": {"approx_tokens": 258, "chars": 1030}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 📎 Referências cruzadas\n\n| Documento | Relação com o SAST |\n|--------------------------------|-----------------------------------------------|\n| Capítulo 02 - Requisitos | Valida `EX-REQ-203`, `EX-REQ-205`, `EX-REQ-303` |\n| Capítulo 06 - Desenvolvimento | Reforça práticas de secure coding |\n| Capítulo 07 - CI/CD Seguro | Ver `07-integracao-validacoes.md` |\n| `06-cobertura-e-priorizacao.md`| Define targets e prioridades de análise |\n| `08-gestao-findings.md` | Garante tratamento eficaz dos resultados |\n| `09-feedback-equipa.md` | Envolvimento das equipas na validação |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---\n\n> 🔒 O SAST permite reduzir o custo de correção de vulnerabilidades ao agir antes da execução - mas só é eficaz quando configurado com critério, mantido atualizado e gerido em conjunto com os developers.", "title": "📎 Referências cruzadas", "traceability": {"line_end": 77, "line_start": 62, "source_path": "010-sbd-manual/10-testes-seguranca/addon/01-sast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-01-sast--testes-estaticos-de-seguranca-sast--referencias-cruzadas"}, "vector_text": "📎 Referências cruzadas\n\n## 📎 Referências cruzadas\n\n| Documento | Relação com o SAST |\n|--------------------------------|-----------------------------------------------|\n| Capítulo 02 - Requisitos | Valida `EX-REQ-203`, `EX-REQ-205`, `EX-REQ-303` |\n| Capítulo 06 - Desenvolvimento | Reforça práticas de secure coding |\n| Capítulo 07 - CI/CD Seguro | Ver `07-integracao-validacoes.md` |\n| `06-cobertura-e-priorizacao.md`| Define targets e prioridades de análise |\n| `08-gestao-findings.md` | Garante tratamento eficaz dos resultados |\n| `09-feedback-equipa.md` | Envolvimento das equipas na validação |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---\n\n> 🔒 O SAST permite reduzir o custo de correção de vulnerabilidades ao agir antes da execução - mas só é eficaz quando configurado com critério, mantido atualizado e gerido em conjunto com os developers."}
|
|
2590
2590
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast", "relation_hints": [], "section_path": ["Testes Dinâmicos de Segurança (DAST)"], "size_estimate": {"approx_tokens": 19, "chars": 76}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "# Testes Dinâmicos de Segurança (DAST)", "title": "Testes Dinâmicos de Segurança (DAST)", "traceability": {"line_end": 11, "line_start": 10, "source_path": "010-sbd-manual/10-testes-seguranca/addon/02-dast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast"}, "vector_text": "Testes Dinâmicos de Segurança (DAST)\n\n# Testes Dinâmicos de Segurança (DAST)"}
|
|
2591
2591
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--objetivo", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--objetivo", "relation_hints": [], "section_path": ["Testes Dinâmicos de Segurança (DAST)", "🌟 Objetivo"], "size_estimate": {"approx_tokens": 149, "chars": 594}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🌟 Objetivo\n\nDetetar vulnerabilidades em aplicações **durante a sua execução**, simulando o comportamento de um utilizador ou atacante, com o objetivo de:\n\n- Identificar falhas que não são visíveis no código (ex: injeções, bypass de autenticação);\n- Validar a configuração real do ambiente (ex: headers, permissões, exposição de serviços);\n- Testar fluxos e interações completas com a aplicação em funcionamento;\n- Complementar os testes estáticos (SAST) com visibilidade runtime.\n\n> DAST é essencial para testar aquilo que só se revela com a aplicação em funcionamento real.\n\n---", "title": "🌟 Objetivo", "traceability": {"line_end": 24, "line_start": 12, "source_path": "010-sbd-manual/10-testes-seguranca/addon/02-dast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--objetivo"}, "vector_text": "🌟 Objetivo\n\n## 🌟 Objetivo\n\nDetetar vulnerabilidades em aplicações **durante a sua execução**, simulando o comportamento de um utilizador ou atacante, com o objetivo de:\n\n- Identificar falhas que não são visíveis no código (ex: injeções, bypass de autenticação);\n- Validar a configuração real do ambiente (ex: headers, permissões, exposição de serviços);\n- Testar fluxos e interações completas com a aplicação em funcionamento;\n- Complementar os testes estáticos (SAST) com visibilidade runtime.\n\n> DAST é essencial para testar aquilo que só se revela com a aplicação em funcionamento real.\n\n---"}
|
|
2592
2592
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--o-que-e-dast", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--o-que-e-dast", "relation_hints": [], "section_path": ["Testes Dinâmicos de Segurança (DAST)", "🔍 O que é DAST"], "size_estimate": {"approx_tokens": 160, "chars": 639}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🔍 O que é DAST\n\nDAST (Dynamic Application Security Testing) consiste em executar testes automáticos de segurança **sobre uma aplicação em funcionamento** (geralmente em staging ou ambientes controlados), simulando comportamentos externos maliciosos ou errados.\n\nPode incluir:\n\n- Ataques de injeção (SQLi, XSS, command injection);\n- Manipulação de sessões, cookies e autenticação;\n- Exploração de endpoints ou APIs públicas;\n- Verificação de headers de segurança (ex: CSP, HSTS, CORS);\n- Testes a workflows multi-etapa.\n\n> ⚠️ DAST exige ambiente executável e autenticação configurada para simular utilizadores reais.\n\n---", "title": "🔍 O que é DAST", "traceability": {"line_end": 40, "line_start": 25, "source_path": "010-sbd-manual/10-testes-seguranca/addon/02-dast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--o-que-e-dast"}, "vector_text": "🔍 O que é DAST\n\n## 🔍 O que é DAST\n\nDAST (Dynamic Application Security Testing) consiste em executar testes automáticos de segurança **sobre uma aplicação em funcionamento** (geralmente em staging ou ambientes controlados), simulando comportamentos externos maliciosos ou errados.\n\nPode incluir:\n\n- Ataques de injeção (SQLi, XSS, command injection);\n- Manipulação de sessões, cookies e autenticação;\n- Exploração de endpoints ou APIs públicas;\n- Verificação de headers de segurança (ex: CSP, HSTS, CORS);\n- Testes a workflows multi-etapa.\n\n> ⚠️ DAST exige ambiente executável e autenticação configurada para simular utilizadores reais.\n\n---"}
|
|
2593
2593
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--como-aplicar", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--como-aplicar", "relation_hints": [], "section_path": ["Testes Dinâmicos de Segurança (DAST)", "⚙️ Como aplicar"], "size_estimate": {"approx_tokens": 144, "chars": 576}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## ⚙️ Como aplicar\n\n1. **Preparar ambiente isolado de staging ou pré-produção**, com dados controlados;\n2. **Selecionar scanner DAST adequado ao tipo de aplicação** (web, API, mobile);\n3. **Configurar autenticação, âmbito e crawling adequado**;\n4. **Executar scans regulares por versão ou por release**;\n5. **Rever findings manualmente antes de acionar ações de correção**;\n6. **Integrar resultados no backlog, com rastreabilidade por artefacto ou release**.\n\n> 💡 Sugestão: definir perfis de scan distintos por tipo de aplicação (ex: portal vs API REST).\n\n---", "title": "⚙️ Como aplicar", "traceability": {"line_end": 53, "line_start": 41, "source_path": "010-sbd-manual/10-testes-seguranca/addon/02-dast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--como-aplicar"}, "vector_text": "⚙️ Como aplicar\n\n## ⚙️ Como aplicar\n\n1. **Preparar ambiente isolado de staging ou pré-produção**, com dados controlados;\n2. **Selecionar scanner DAST adequado ao tipo de aplicação** (web, API, mobile);\n3. **Configurar autenticação, âmbito e crawling adequado**;\n4. **Executar scans regulares por versão ou por release**;\n5. **Rever findings manualmente antes de acionar ações de correção**;\n6. **Integrar resultados no backlog, com rastreabilidade por artefacto ou release**.\n\n> 💡 Sugestão: definir perfis de scan distintos por tipo de aplicação (ex: portal vs API REST).\n\n---"}
|
|
2594
2594
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--boas-praticas", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--boas-praticas", "relation_hints": [], "section_path": ["Testes Dinâmicos de Segurança (DAST)", "✅ Boas práticas"], "size_estimate": {"approx_tokens": 107, "chars": 428}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## ✅ Boas práticas\n\n- Automatizar execução de DAST no pipeline, mas fora da linha crítica (ex: ambiente de validação);\n- Usar dados fictícios ou mascarados;\n- Evitar testes destrutivos em ambientes partilhados;\n- Configurar tempos de espera, autenticação multi-utilizador e fallback de sessão;\n- Revisar âmbitos de scan após mudanças de arquitetura ou rotas;\n- Incluir APIs e pontos de integração externos.\n\n---", "title": "✅ Boas práticas", "traceability": {"line_end": 64, "line_start": 54, "source_path": "010-sbd-manual/10-testes-seguranca/addon/02-dast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--boas-praticas"}, "vector_text": "✅ Boas práticas\n\n## ✅ Boas práticas\n\n- Automatizar execução de DAST no pipeline, mas fora da linha crítica (ex: ambiente de validação);\n- Usar dados fictícios ou mascarados;\n- Evitar testes destrutivos em ambientes partilhados;\n- Configurar tempos de espera, autenticação multi-utilizador e fallback de sessão;\n- Revisar âmbitos de scan após mudanças de arquitetura ou rotas;\n- Incluir APIs e pontos de integração externos.\n\n---"}
|
|
2595
|
-
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--referencias-cruzadas", "chunk_kind": "table_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {
|
|
2595
|
+
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--referencias-cruzadas", "chunk_kind": "table_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--referencias-cruzadas", "relation_hints": [], "section_path": ["Testes Dinâmicos de Segurança (DAST)", "📎 Referências cruzadas"], "size_estimate": {"approx_tokens": 248, "chars": 990}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 📎 Referências cruzadas\n\n| Documento | Relevância estratégica |\n|--------------------------------|--------------------------------------------|\n| Capítulo 02 - Requisitos | Valida `EX-REQ-208`, `EX-REQ-310`, `EX-REQ-405` |\n| Capítulo 07 - CI/CD Seguro | Integração com pipelines paralelos |\n| `04-fuzzing.md` | Complementa validação dinâmica com aleatoriedade |\n| `06-cobertura-e-priorizacao.md`| Define criticidade de endpoints a testar |\n| `08-gestao-findings.md` | Gestão dos resultados e follow-up |\n| `09-feedback-equipa.md` | Envolvimento das equipas de QA e DevOps |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---\n\n> 🔍 O DAST vê o que o código oculta: falhas de integração, respostas inesperadas e riscos decorrentes do ambiente real de execução. É a lente externa para a segurança da aplicação.", "title": "📎 Referências cruzadas", "traceability": {"line_end": 80, "line_start": 65, "source_path": "010-sbd-manual/10-testes-seguranca/addon/02-dast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-02-dast--testes-dinamicos-de-seguranca-dast--referencias-cruzadas"}, "vector_text": "📎 Referências cruzadas\n\n## 📎 Referências cruzadas\n\n| Documento | Relevância estratégica |\n|--------------------------------|--------------------------------------------|\n| Capítulo 02 - Requisitos | Valida `EX-REQ-208`, `EX-REQ-310`, `EX-REQ-405` |\n| Capítulo 07 - CI/CD Seguro | Integração com pipelines paralelos |\n| `04-fuzzing.md` | Complementa validação dinâmica com aleatoriedade |\n| `06-cobertura-e-priorizacao.md`| Define criticidade de endpoints a testar |\n| `08-gestao-findings.md` | Gestão dos resultados e follow-up |\n| `09-feedback-equipa.md` | Envolvimento das equipas de QA e DevOps |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---\n\n> 🔍 O DAST vê o que o código oculta: falhas de integração, respostas inesperadas e riscos decorrentes do ambiente real de execução. É a lente externa para a segurança da aplicação."}
|
|
2596
2596
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast", "relation_hints": [], "section_path": ["Testes Interativos de Segurança (IAST)"], "size_estimate": {"approx_tokens": 20, "chars": 80}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "# Testes Interativos de Segurança (IAST)", "title": "Testes Interativos de Segurança (IAST)", "traceability": {"line_end": 11, "line_start": 10, "source_path": "010-sbd-manual/10-testes-seguranca/addon/03-iast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast"}, "vector_text": "Testes Interativos de Segurança (IAST)\n\n# Testes Interativos de Segurança (IAST)"}
|
|
2597
2597
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--objetivo", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--objetivo", "relation_hints": [], "section_path": ["Testes Interativos de Segurança (IAST)", "🌟 Objetivo"], "size_estimate": {"approx_tokens": 154, "chars": 614}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🌟 Objetivo\n\nAproveitar a execução normal da aplicação para realizar testes de segurança **com instrumentação ativa**, combinando:\n\n- A precisão do SAST com o contexto real do DAST;\n- A monitorização contínua de chamadas inseguras, uso indevido de bibliotecas, variáveis mal validadas e outros riscos;\n- A geração de findings diretamente relacionados com o comportamento da aplicação em runtime;\n- A melhoria da cobertura sem duplicar esforço de testes manuais ou automáticos.\n\n> O IAST é ideal para validar segurança **sem esforço adicional de criação de casos de teste ou scanners dedicados**.\n\n---", "title": "🌟 Objetivo", "traceability": {"line_end": 24, "line_start": 12, "source_path": "010-sbd-manual/10-testes-seguranca/addon/03-iast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--objetivo"}, "vector_text": "🌟 Objetivo\n\n## 🌟 Objetivo\n\nAproveitar a execução normal da aplicação para realizar testes de segurança **com instrumentação ativa**, combinando:\n\n- A precisão do SAST com o contexto real do DAST;\n- A monitorização contínua de chamadas inseguras, uso indevido de bibliotecas, variáveis mal validadas e outros riscos;\n- A geração de findings diretamente relacionados com o comportamento da aplicação em runtime;\n- A melhoria da cobertura sem duplicar esforço de testes manuais ou automáticos.\n\n> O IAST é ideal para validar segurança **sem esforço adicional de criação de casos de teste ou scanners dedicados**.\n\n---"}
|
|
2598
2598
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--o-que-e-iast", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--o-que-e-iast", "relation_hints": [], "section_path": ["Testes Interativos de Segurança (IAST)", "🔍 O que é IAST"], "size_estimate": {"approx_tokens": 180, "chars": 720}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🔍 O que é IAST\n\nIAST (Interactive Application Security Testing) é uma abordagem de testes de segurança que usa **instrumentação no servidor da aplicação** para observar chamadas, fluxos e execuções em tempo real - enquanto a aplicação é usada em testes funcionais, manuais ou automáticos.\n\nPermite:\n\n- Observar dados não sanitizados propagando-se até funções críticas;\n- Verificar uso inseguro de bibliotecas ou APIs nativas;\n- Detetar execuções vulneráveis em tempo real com visibilidade total do stack;\n- Associar findings a utilizadores, chamadas, rotas e parâmetros concretos.\n\n> 💡 O IAST requer integração com o runtime da aplicação, sendo mais fácil em stacks como Java, .NET, Python, Node.\n\n---", "title": "🔍 O que é IAST", "traceability": {"line_end": 39, "line_start": 25, "source_path": "010-sbd-manual/10-testes-seguranca/addon/03-iast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--o-que-e-iast"}, "vector_text": "🔍 O que é IAST\n\n## 🔍 O que é IAST\n\nIAST (Interactive Application Security Testing) é uma abordagem de testes de segurança que usa **instrumentação no servidor da aplicação** para observar chamadas, fluxos e execuções em tempo real - enquanto a aplicação é usada em testes funcionais, manuais ou automáticos.\n\nPermite:\n\n- Observar dados não sanitizados propagando-se até funções críticas;\n- Verificar uso inseguro de bibliotecas ou APIs nativas;\n- Detetar execuções vulneráveis em tempo real com visibilidade total do stack;\n- Associar findings a utilizadores, chamadas, rotas e parâmetros concretos.\n\n> 💡 O IAST requer integração com o runtime da aplicação, sendo mais fácil em stacks como Java, .NET, Python, Node.\n\n---"}
|
|
2599
2599
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--como-aplicar", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--como-aplicar", "relation_hints": [], "section_path": ["Testes Interativos de Segurança (IAST)", "⚙️ Como aplicar"], "size_estimate": {"approx_tokens": 156, "chars": 623}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## ⚙️ Como aplicar\n\n1. **Selecionar ferramenta IAST compatível com o stack da aplicação**;\n2. **Instrumentar o servidor de staging com agentes IAST** (ou containers configurados);\n3. **Executar testes funcionais, manuais ou automáticos enquanto o IAST está ativo**;\n4. **Analisar os findings gerados em contexto real - por fluxo, rota, user ID**;\n5. **Triar os resultados e priorizar com base na execução e impacto**;\n6. **Integrar resultados nos ciclos de melhoria contínua (ex: backlog de segurança)**.\n\n> ⚠️ IAST não substitui DAST nem SAST - atua de forma complementar para maximizar visibilidade.\n\n---", "title": "⚙️ Como aplicar", "traceability": {"line_end": 52, "line_start": 40, "source_path": "010-sbd-manual/10-testes-seguranca/addon/03-iast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--como-aplicar"}, "vector_text": "⚙️ Como aplicar\n\n## ⚙️ Como aplicar\n\n1. **Selecionar ferramenta IAST compatível com o stack da aplicação**;\n2. **Instrumentar o servidor de staging com agentes IAST** (ou containers configurados);\n3. **Executar testes funcionais, manuais ou automáticos enquanto o IAST está ativo**;\n4. **Analisar os findings gerados em contexto real - por fluxo, rota, user ID**;\n5. **Triar os resultados e priorizar com base na execução e impacto**;\n6. **Integrar resultados nos ciclos de melhoria contínua (ex: backlog de segurança)**.\n\n> ⚠️ IAST não substitui DAST nem SAST - atua de forma complementar para maximizar visibilidade.\n\n---"}
|
|
2600
2600
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--boas-praticas", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--boas-praticas", "relation_hints": [], "section_path": ["Testes Interativos de Segurança (IAST)", "✅ Boas práticas"], "size_estimate": {"approx_tokens": 91, "chars": 364}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## ✅ Boas práticas\n\n- Usar IAST em ambientes de staging ou teste integrado;\n- Validar cobertura (ex: endpoints executados durante o teste);\n- Priorizar findings com base em impacto real (executado vs potencial);\n- Revisar permissões e impacto de performance da instrumentação;\n- Usar IAST como observador passivo em testes de QA e integração.\n\n---", "title": "✅ Boas práticas", "traceability": {"line_end": 62, "line_start": 53, "source_path": "010-sbd-manual/10-testes-seguranca/addon/03-iast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--boas-praticas"}, "vector_text": "✅ Boas práticas\n\n## ✅ Boas práticas\n\n- Usar IAST em ambientes de staging ou teste integrado;\n- Validar cobertura (ex: endpoints executados durante o teste);\n- Priorizar findings com base em impacto real (executado vs potencial);\n- Revisar permissões e impacto de performance da instrumentação;\n- Usar IAST como observador passivo em testes de QA e integração.\n\n---"}
|
|
2601
|
-
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--referencias-cruzadas", "chunk_kind": "table_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {
|
|
2601
|
+
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--referencias-cruzadas", "chunk_kind": "table_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--referencias-cruzadas", "relation_hints": [], "section_path": ["Testes Interativos de Segurança (IAST)", "📎 Referências cruzadas"], "size_estimate": {"approx_tokens": 255, "chars": 1018}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 📎 Referências cruzadas\n\n| Documento | Relevância estratégica |\n|--------------------------------|---------------------------------------------|\n| Capítulo 02 - Requisitos | Valida `EX-REQ-203`, `EX-REQ-307`, `EX-REQ-404` |\n| Capítulo 06 - Desenvolvimento | Observa violações em tempo real |\n| `01-sast.md` | IAST observa falhas que SAST só deteta estaticamente |\n| `02-dast.md` | Complementa o DAST com visibilidade no backend |\n| `06-cobertura-e-priorizacao.md`| Mede cobertura por execução real |\n| `08-gestao-findings.md` | Findings do IAST são altamente rastreáveis |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---\n\n> 🧠 O IAST combina visibilidade de código com execução real - tornando os testes de segurança **mais relevantes, precisos e contextualizados**, sem dependência de falsos positivos ou suposições.", "title": "📎 Referências cruzadas", "traceability": {"line_end": 78, "line_start": 63, "source_path": "010-sbd-manual/10-testes-seguranca/addon/03-iast.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-03-iast--testes-interativos-de-seguranca-iast--referencias-cruzadas"}, "vector_text": "📎 Referências cruzadas\n\n## 📎 Referências cruzadas\n\n| Documento | Relevância estratégica |\n|--------------------------------|---------------------------------------------|\n| Capítulo 02 - Requisitos | Valida `EX-REQ-203`, `EX-REQ-307`, `EX-REQ-404` |\n| Capítulo 06 - Desenvolvimento | Observa violações em tempo real |\n| `01-sast.md` | IAST observa falhas que SAST só deteta estaticamente |\n| `02-dast.md` | Complementa o DAST com visibilidade no backend |\n| `06-cobertura-e-priorizacao.md`| Mede cobertura por execução real |\n| `08-gestao-findings.md` | Findings do IAST são altamente rastreáveis |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---\n\n> 🧠 O IAST combina visibilidade de código com execução real - tornando os testes de segurança **mais relevantes, precisos e contextualizados**, sem dependência de falsos positivos ou suposições."}
|
|
2602
2602
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca", "relation_hints": [], "section_path": ["Fuzzing de Segurança"], "size_estimate": {"approx_tokens": 11, "chars": 44}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "# Fuzzing de Segurança", "title": "Fuzzing de Segurança", "traceability": {"line_end": 11, "line_start": 10, "source_path": "010-sbd-manual/10-testes-seguranca/addon/04-fuzzing.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca"}, "vector_text": "Fuzzing de Segurança\n\n# Fuzzing de Segurança"}
|
|
2603
2603
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--objetivo", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--objetivo", "relation_hints": [], "section_path": ["Fuzzing de Segurança", "🌟 Objetivo"], "size_estimate": {"approx_tokens": 127, "chars": 505}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🌟 Objetivo\n\nDescobrir vulnerabilidades e falhas de robustez através da **geração automática e massiva de inputs malformados, inesperados ou aleatórios**, com o objetivo de:\n\n- Testar limites da aplicação;\n- Detetar exceções não tratadas, falhas de parsing, crashes;\n- Reproduzir comportamentos anómalos ou edge cases;\n- Validar a resiliência da aplicação face a entradas fora do esperado.\n\n> O fuzzing é essencial para testar “o inesperado” - aquilo que os testes planeados não cobrem.\n\n---", "title": "🌟 Objetivo", "traceability": {"line_end": 24, "line_start": 12, "source_path": "010-sbd-manual/10-testes-seguranca/addon/04-fuzzing.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--objetivo"}, "vector_text": "🌟 Objetivo\n\n## 🌟 Objetivo\n\nDescobrir vulnerabilidades e falhas de robustez através da **geração automática e massiva de inputs malformados, inesperados ou aleatórios**, com o objetivo de:\n\n- Testar limites da aplicação;\n- Detetar exceções não tratadas, falhas de parsing, crashes;\n- Reproduzir comportamentos anómalos ou edge cases;\n- Validar a resiliência da aplicação face a entradas fora do esperado.\n\n> O fuzzing é essencial para testar “o inesperado” - aquilo que os testes planeados não cobrem.\n\n---"}
|
|
2604
2604
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--o-que-e-fuzzing", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--o-que-e-fuzzing", "relation_hints": [], "section_path": ["Fuzzing de Segurança", "🔍 O que é fuzzing"], "size_estimate": {"approx_tokens": 182, "chars": 727}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🔍 O que é fuzzing\n\nFuzzing é uma técnica de segurança que consiste em alimentar a aplicação com **inputs gerados de forma aleatória ou sistemática**, com o intuito de provocar erros, falhas ou crashes.\n\nTipos comuns:\n\n- **Fuzzing de APIs REST** (inputs em JSON, headers, parâmetros);\n- **Fuzzing de protocolos binários ou mensagens estruturadas**;\n- **Fuzzing de ficheiros ou parsers** (ex: XML, PDF, imagem);\n- **Coverage-guided fuzzing** (instrumentação para maximizar caminhos explorados);\n- **Mutation-based fuzzing** (variações sobre inputs reais conhecidos).\n\n> ⚠️ O fuzzing não identifica diretamente vulnerabilidades - mas sim condições de erro que **podem indicar fragilidades exploráveis**.\n\n---", "title": "🔍 O que é fuzzing", "traceability": {"line_end": 40, "line_start": 25, "source_path": "010-sbd-manual/10-testes-seguranca/addon/04-fuzzing.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--o-que-e-fuzzing"}, "vector_text": "🔍 O que é fuzzing\n\n## 🔍 O que é fuzzing\n\nFuzzing é uma técnica de segurança que consiste em alimentar a aplicação com **inputs gerados de forma aleatória ou sistemática**, com o intuito de provocar erros, falhas ou crashes.\n\nTipos comuns:\n\n- **Fuzzing de APIs REST** (inputs em JSON, headers, parâmetros);\n- **Fuzzing de protocolos binários ou mensagens estruturadas**;\n- **Fuzzing de ficheiros ou parsers** (ex: XML, PDF, imagem);\n- **Coverage-guided fuzzing** (instrumentação para maximizar caminhos explorados);\n- **Mutation-based fuzzing** (variações sobre inputs reais conhecidos).\n\n> ⚠️ O fuzzing não identifica diretamente vulnerabilidades - mas sim condições de erro que **podem indicar fragilidades exploráveis**.\n\n---"}
|
|
2605
2605
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--como-aplicar", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--como-aplicar", "relation_hints": [], "section_path": ["Fuzzing de Segurança", "⚙️ Como aplicar"], "size_estimate": {"approx_tokens": 149, "chars": 595}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## ⚙️ Como aplicar\n\n1. **Selecionar alvo e contexto de teste** (ex: endpoint REST, ficheiro, fluxo de API);\n2. **Configurar fuzzer com tipos de input relevantes** (estrutura, tipos, encoding);\n3. **Executar fuzzing em ambiente isolado ou controlado**, com observabilidade (logging, crash dump);\n4. **Instrumentar aplicação com cobertura ou deteção de exceções** (opcional);\n5. **Analisar comportamentos anómalos ou inconsistentes**: respostas inesperadas, falhas silenciosas, quedas;\n6. **Reportar ocorrências como findings de robustez, com evidência e reprodutibilidade**.\n\n---", "title": "⚙️ Como aplicar", "traceability": {"line_end": 51, "line_start": 41, "source_path": "010-sbd-manual/10-testes-seguranca/addon/04-fuzzing.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--como-aplicar"}, "vector_text": "⚙️ Como aplicar\n\n## ⚙️ Como aplicar\n\n1. **Selecionar alvo e contexto de teste** (ex: endpoint REST, ficheiro, fluxo de API);\n2. **Configurar fuzzer com tipos de input relevantes** (estrutura, tipos, encoding);\n3. **Executar fuzzing em ambiente isolado ou controlado**, com observabilidade (logging, crash dump);\n4. **Instrumentar aplicação com cobertura ou deteção de exceções** (opcional);\n5. **Analisar comportamentos anómalos ou inconsistentes**: respostas inesperadas, falhas silenciosas, quedas;\n6. **Reportar ocorrências como findings de robustez, com evidência e reprodutibilidade**.\n\n---"}
|
|
2606
2606
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--boas-praticas", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--boas-praticas", "relation_hints": [], "section_path": ["Fuzzing de Segurança", "✅ Boas práticas"], "size_estimate": {"approx_tokens": 112, "chars": 445}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## ✅ Boas práticas\n\n- Utilizar fuzzing em endpoints críticos e APIs externas;\n- Priorizar formatos ricos (JSON, XML, JWT) e campos menos validados;\n- Repetir fuzzing após alterações de parsing ou bibliotecas de entrada;\n- Usar ferramentas com feedback de cobertura para melhor exploração;\n- Integrar fuzzing como etapa separada no pipeline ou build noturno;\n- Combinar com logs, tracing e crash reports para análise eficaz.\n\n---", "title": "✅ Boas práticas", "traceability": {"line_end": 62, "line_start": 52, "source_path": "010-sbd-manual/10-testes-seguranca/addon/04-fuzzing.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--boas-praticas"}, "vector_text": "✅ Boas práticas\n\n## ✅ Boas práticas\n\n- Utilizar fuzzing em endpoints críticos e APIs externas;\n- Priorizar formatos ricos (JSON, XML, JWT) e campos menos validados;\n- Repetir fuzzing após alterações de parsing ou bibliotecas de entrada;\n- Usar ferramentas com feedback de cobertura para melhor exploração;\n- Integrar fuzzing como etapa separada no pipeline ou build noturno;\n- Combinar com logs, tracing e crash reports para análise eficaz.\n\n---"}
|
|
2607
|
-
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--referencias-cruzadas", "chunk_kind": "table_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {
|
|
2607
|
+
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--referencias-cruzadas", "chunk_kind": "table_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--referencias-cruzadas", "relation_hints": [], "section_path": ["Fuzzing de Segurança", "📎 Referências cruzadas"], "size_estimate": {"approx_tokens": 241, "chars": 963}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 📎 Referências cruzadas\n\n| Documento | Relevância estratégica |\n|--------------------------------|----------------------------------------------|\n| Capítulo 02 - Requisitos | Relacionado com `EX-REQ-309`, `EX-REQ-406` |\n| `02-dast.md` | Complementa com entradas mais imprevisíveis |\n| `06-cobertura-e-priorizacao.md`| Usado em zonas com menos testes manuais |\n| Capítulo 07 - CI/CD Seguro | Aplicação em jobs dedicados ou ambientes paralelos |\n| `08-gestao-findings.md` | Findings do fuzzing podem requerer triagem especializada |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---\n\n> 🎲 O fuzzing não substitui testes planeados - mas **aumenta a cobertura invisível**, detetando falhas que só emergem com inputs fora do normal. É um sinal de maturidade na estratégia de validação de segurança.", "title": "📎 Referências cruzadas", "traceability": {"line_end": 77, "line_start": 63, "source_path": "010-sbd-manual/10-testes-seguranca/addon/04-fuzzing.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-04-fuzzing--fuzzing-de-seguranca--referencias-cruzadas"}, "vector_text": "📎 Referências cruzadas\n\n## 📎 Referências cruzadas\n\n| Documento | Relevância estratégica |\n|--------------------------------|----------------------------------------------|\n| Capítulo 02 - Requisitos | Relacionado com `EX-REQ-309`, `EX-REQ-406` |\n| `02-dast.md` | Complementa com entradas mais imprevisíveis |\n| `06-cobertura-e-priorizacao.md`| Usado em zonas com menos testes manuais |\n| Capítulo 07 - CI/CD Seguro | Aplicação em jobs dedicados ou ambientes paralelos |\n| `08-gestao-findings.md` | Findings do fuzzing podem requerer triagem especializada |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---\n\n> 🎲 O fuzzing não substitui testes planeados - mas **aumenta a cobertura invisível**, detetando falhas que só emergem com inputs fora do normal. É um sinal de maturidade na estratégia de validação de segurança."}
|
|
2608
2608
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao--validacao-de-regressoes-de-seguranca", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao--validacao-de-regressoes-de-seguranca", "relation_hints": [], "section_path": ["Validação de Regressões de Segurança"], "size_estimate": {"approx_tokens": 19, "chars": 76}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "# Validação de Regressões de Segurança", "title": "Validação de Regressões de Segurança", "traceability": {"line_end": 11, "line_start": 10, "source_path": "010-sbd-manual/10-testes-seguranca/addon/05-validacao-regressao.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao--validacao-de-regressoes-de-seguranca"}, "vector_text": "Validação de Regressões de Segurança\n\n# Validação de Regressões de Segurança"}
|
|
2609
2609
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao--validacao-de-regressoes-de-seguranca--objetivo", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao--validacao-de-regressoes-de-seguranca--objetivo", "relation_hints": [], "section_path": ["Validação de Regressões de Segurança", "🌟 Objetivo"], "size_estimate": {"approx_tokens": 165, "chars": 659}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🌟 Objetivo\n\nAssegurar que **vulnerabilidades previamente corrigidas não voltam a ser introduzidas** no código ao longo da evolução da aplicação, através de mecanismos sistemáticos de **validação regressiva de segurança**, incluindo:\n\n- Reexecução automatizada de testes sobre findings resolvidos;\n- Criação de casos de teste de segurança a partir de falhas reais;\n- Integração no ciclo de qualidade contínua (regressão funcional + segurança);\n- Rastreabilidade entre findings históricos e builds futuros.\n\n> ⚠️ Uma regressão de segurança representa um **retrocesso evitável** - normalmente por falta de memória organizacional ou automação.\n\n---", "title": "🌟 Objetivo", "traceability": {"line_end": 24, "line_start": 12, "source_path": "010-sbd-manual/10-testes-seguranca/addon/05-validacao-regressao.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao--validacao-de-regressoes-de-seguranca--objetivo"}, "vector_text": "🌟 Objetivo\n\n## 🌟 Objetivo\n\nAssegurar que **vulnerabilidades previamente corrigidas não voltam a ser introduzidas** no código ao longo da evolução da aplicação, através de mecanismos sistemáticos de **validação regressiva de segurança**, incluindo:\n\n- Reexecução automatizada de testes sobre findings resolvidos;\n- Criação de casos de teste de segurança a partir de falhas reais;\n- Integração no ciclo de qualidade contínua (regressão funcional + segurança);\n- Rastreabilidade entre findings históricos e builds futuros.\n\n> ⚠️ Uma regressão de segurança representa um **retrocesso evitável** - normalmente por falta de memória organizacional ou automação.\n\n---"}
|
|
2610
2610
|
{"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_id": "010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao--validacao-de-regressoes-de-seguranca--o-que-e-validacao-de-regressoes", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "10-testes-seguranca", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["test"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao--validacao-de-regressoes-de-seguranca--o-que-e-validacao-de-regressoes", "relation_hints": [], "section_path": ["Validação de Regressões de Segurança", "🔍 O que é validação de regressões"], "size_estimate": {"approx_tokens": 152, "chars": 606}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🔍 O que é validação de regressões\n\nValidação regressiva de segurança consiste em **detetar reintroduções acidentais de vulnerabilidades conhecidas**, previamente corrigidas, mas que retornam ao código por refatoração, fusão de branches ou repetição de erros.\n\nFormas comuns:\n\n- **Reexecução de SAST com baseline de findings anteriores**;\n- **Casos de teste manuais ou automatizados com payloads de exploits anteriores**;\n- **Monitorização por hash/signature de trechos vulneráveis reintroduzidos**;\n- **Blocos de CI dedicados a validação de regressões críticas**.\n\n---", "title": "🔍 O que é validação de regressões", "traceability": {"line_end": 37, "line_start": 25, "source_path": "010-sbd-manual/10-testes-seguranca/addon/05-validacao-regressao.md", "unit_id": "010-sbd-manual-10-testes-seguranca-addon-05-validacao-regressao--validacao-de-regressoes-de-seguranca--o-que-e-validacao-de-regressoes"}, "vector_text": "🔍 O que é validação de regressões\n\n## 🔍 O que é validação de regressões\n\nValidação regressiva de segurança consiste em **detetar reintroduções acidentais de vulnerabilidades conhecidas**, previamente corrigidas, mas que retornam ao código por refatoração, fusão de branches ou repetição de erros.\n\nFormas comuns:\n\n- **Reexecução de SAST com baseline de findings anteriores**;\n- **Casos de teste manuais ou automatizados com payloads de exploits anteriores**;\n- **Monitorização por hash/signature de trechos vulneráveis reintroduzidos**;\n- **Blocos de CI dedicados a validação de regressões críticas**.\n\n---"}
|
|
@@ -3282,8 +3282,8 @@
|
|
|
3282
3282
|
{"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--formato-da-sessao", "chunk_kind": "table_section", "document_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--formato-da-sessao", "relation_hints": [], "section_path": ["Módulo Formativo - Pull Request Seguro", "🧪 Formato da sessão"], "size_estimate": {"approx_tokens": 234, "chars": 933}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🧪 Formato da sessão\n\n| Bloco | Duração | Objetivo |\n|-------------------|---------|--------------------------------------------------------------------------|\n| Introdução | 5 min | Enquadrar a importância do PR seguro para o ciclo de desenvolvimento |\n| Exemplo positivo | 10 min | Rever um PR real ou simulado com boas práticas |\n| Exemplo com falhas | 15 min | Identificar más práticas, omissões e falhas de validação |\n| Revisão guiada | 10 min | Aplicar checklist e redigir comentários de melhoria |\n| Quiz ou validação | 10 min | 5 perguntas ou desafio rápido de consolidação |\n\n> 💡 A sessão pode ser síncrona (formação, peer-review em grupo) ou assíncrona (exercício em tempo próprio com revisão posterior).\n\n---", "title": "🧪 Formato da sessão", "traceability": {"line_end": 43, "line_start": 30, "source_path": "010-sbd-manual/13-formacao-onboarding/addon/07-exemplo1-manual-formacao-dev-pr-seguro.md", "unit_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--formato-da-sessao"}, "vector_text": "🧪 Formato da sessão\n\n## 🧪 Formato da sessão\n\n| Bloco | Duração | Objetivo |\n|-------------------|---------|--------------------------------------------------------------------------|\n| Introdução | 5 min | Enquadrar a importância do PR seguro para o ciclo de desenvolvimento |\n| Exemplo positivo | 10 min | Rever um PR real ou simulado com boas práticas |\n| Exemplo com falhas | 15 min | Identificar más práticas, omissões e falhas de validação |\n| Revisão guiada | 10 min | Aplicar checklist e redigir comentários de melhoria |\n| Quiz ou validação | 10 min | 5 perguntas ou desafio rápido de consolidação |\n\n> 💡 A sessão pode ser síncrona (formação, peer-review em grupo) ou assíncrona (exercício em tempo próprio com revisão posterior).\n\n---"}
|
|
3283
3283
|
{"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--materiais-necessarios", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--materiais-necessarios", "relation_hints": [], "section_path": ["Módulo Formativo - Pull Request Seguro", "📦 Materiais necessários"], "size_estimate": {"approx_tokens": 82, "chars": 325}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 📦 Materiais necessários\n\n- Dois PRs reais ou simulados (um exemplar, um com falhas)\n- Guia interno de revisão segura (ex: `checklist-pr-seguro.md`)\n- Plataforma de quiz (Kahoot, LMS, Markdown com validação manual)\n- Canal interno para partilha e discussão (ex: Confluence, GitHub Discussions)\n\n---", "title": "📦 Materiais necessários", "traceability": {"line_end": 52, "line_start": 44, "source_path": "010-sbd-manual/13-formacao-onboarding/addon/07-exemplo1-manual-formacao-dev-pr-seguro.md", "unit_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--materiais-necessarios"}, "vector_text": "📦 Materiais necessários\n\n## 📦 Materiais necessários\n\n- Dois PRs reais ou simulados (um exemplar, um com falhas)\n- Guia interno de revisão segura (ex: `checklist-pr-seguro.md`)\n- Plataforma de quiz (Kahoot, LMS, Markdown com validação manual)\n- Canal interno para partilha e discussão (ex: Confluence, GitHub Discussions)\n\n---"}
|
|
3284
3284
|
{"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--criterios-de-conclusao", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--criterios-de-conclusao", "relation_hints": [], "section_path": ["Módulo Formativo - Pull Request Seguro", "✅ Critérios de conclusão"], "size_estimate": {"approx_tokens": 69, "chars": 273}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## ✅ Critérios de conclusão\n\n- Participação ativa na sessão ou entrega do exercício\n- Aprovação no quiz (mínimo 80%)\n- Submissão de um PR real com justificações explícitas de segurança (ex: validação de input, logging, controlo de permissões)\n\n---", "title": "✅ Critérios de conclusão", "traceability": {"line_end": 60, "line_start": 53, "source_path": "010-sbd-manual/13-formacao-onboarding/addon/07-exemplo1-manual-formacao-dev-pr-seguro.md", "unit_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--criterios-de-conclusao"}, "vector_text": "✅ Critérios de conclusão\n\n## ✅ Critérios de conclusão\n\n- Participação ativa na sessão ou entrega do exercício\n- Aprovação no quiz (mínimo 80%)\n- Submissão de um PR real com justificações explícitas de segurança (ex: validação de input, logging, controlo de permissões)\n\n---"}
|
|
3285
|
-
{"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--referencias-cruzadas-no-sbd-toe", "chunk_kind": "table_section", "document_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {
|
|
3286
|
-
{"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--recomendacoes-operacionais", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--recomendacoes-operacionais", "relation_hints": [], "section_path": ["Módulo Formativo - Pull Request Seguro", "🧭 Recomendações operacionais"], "size_estimate": {"approx_tokens": 131, "chars": 522}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🧭 Recomendações operacionais\n\n- Repetir esta sessão quinzenalmente com novos exemplos\n- Partilhar internamente o “PR da semana” como modelo educativo\n- Criar um repositório com PRs exemplares (bons e maus) para consulta e discussão\n- Associar o módulo a permissões: ex. devs só podem aprovar após completar este módulo\n\n---\n\n> ✅ A aprendizagem consolidada sobre revisão segura de código reduz significativamente a introdução de vulnerabilidades e acelera a maturidade das equipas técnicas.", "title": "🧭 Recomendações operacionais", "traceability": {"line_end":
|
|
3285
|
+
{"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--referencias-cruzadas-no-sbd-toe", "chunk_kind": "table_section", "document_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--referencias-cruzadas-no-sbd-toe", "relation_hints": [], "section_path": ["Módulo Formativo - Pull Request Seguro", "🔗 Referências cruzadas no SbD-ToE"], "size_estimate": {"approx_tokens": 161, "chars": 644}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🔗 Referências cruzadas no SbD-ToE\n\n| Capítulo | Relevância |\n|-----------------------------|----------------------------------------------|\n| Capítulo 6 - Desenvolvimento Seguro | Aplicação direta de requisitos EX-REQ-114, EX-REQ-115 e EX-REQ-118 |\n| Capítulo 2 - Requisitos de Segurança | Integração com user stories com critérios de segurança |\n| Capítulo 13 - Formação e Onboarding | Pode integrar trilho formativo do perfil Developer |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---", "title": "🔗 Referências cruzadas no SbD-ToE", "traceability": {"line_end": 72, "line_start": 61, "source_path": "010-sbd-manual/13-formacao-onboarding/addon/07-exemplo1-manual-formacao-dev-pr-seguro.md", "unit_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--referencias-cruzadas-no-sbd-toe"}, "vector_text": "🔗 Referências cruzadas no SbD-ToE\n\n## 🔗 Referências cruzadas no SbD-ToE\n\n| Capítulo | Relevância |\n|-----------------------------|----------------------------------------------|\n| Capítulo 6 - Desenvolvimento Seguro | Aplicação direta de requisitos EX-REQ-114, EX-REQ-115 e EX-REQ-118 |\n| Capítulo 2 - Requisitos de Segurança | Integração com user stories com critérios de segurança |\n| Capítulo 13 - Formação e Onboarding | Pode integrar trilho formativo do perfil Developer |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n---"}
|
|
3286
|
+
{"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--recomendacoes-operacionais", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--recomendacoes-operacionais", "relation_hints": [], "section_path": ["Módulo Formativo - Pull Request Seguro", "🧭 Recomendações operacionais"], "size_estimate": {"approx_tokens": 131, "chars": 522}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🧭 Recomendações operacionais\n\n- Repetir esta sessão quinzenalmente com novos exemplos\n- Partilhar internamente o “PR da semana” como modelo educativo\n- Criar um repositório com PRs exemplares (bons e maus) para consulta e discussão\n- Associar o módulo a permissões: ex. devs só podem aprovar após completar este módulo\n\n---\n\n> ✅ A aprendizagem consolidada sobre revisão segura de código reduz significativamente a introdução de vulnerabilidades e acelera a maturidade das equipas técnicas.", "title": "🧭 Recomendações operacionais", "traceability": {"line_end": 82, "line_start": 73, "source_path": "010-sbd-manual/13-formacao-onboarding/addon/07-exemplo1-manual-formacao-dev-pr-seguro.md", "unit_id": "010-sbd-manual-13-formacao-onboarding-addon-07-exemplo1-manual-formacao-dev-pr-seguro--modulo-formativo-pull-request-seguro--recomendacoes-operacionais"}, "vector_text": "🧭 Recomendações operacionais\n\n## 🧭 Recomendações operacionais\n\n- Repetir esta sessão quinzenalmente com novos exemplos\n- Partilhar internamente o “PR da semana” como modelo educativo\n- Criar um repositório com PRs exemplares (bons e maus) para consulta e discussão\n- Associar o módulo a permissões: ex. devs só podem aprovar após completar este módulo\n\n---\n\n> ✅ A aprendizagem consolidada sobre revisão segura de código reduz significativamente a introdução de vulnerabilidades e acelera a maturidade das equipas técnicas."}
|
|
3287
3287
|
{"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_id": "010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac--modulo-formativo-infraestrutura-como-codigo-iac-seguro", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac--modulo-formativo-infraestrutura-como-codigo-iac-seguro", "relation_hints": [], "section_path": ["Módulo Formativo - Infraestrutura como Código (IaC) Seguro"], "size_estimate": {"approx_tokens": 72, "chars": 286}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "# Módulo Formativo - Infraestrutura como Código (IaC) Seguro\nO presente exemplo ilustra formação num contexto de elevada automação da infraestrutura, onde a compreensão humana dos mecanismos e limites continua a ser essencial.", "title": "Módulo Formativo - Infraestrutura como Código (IaC) Seguro", "traceability": {"line_end": 12, "line_start": 10, "source_path": "010-sbd-manual/13-formacao-onboarding/addon/08-exemplo2-formacao-iac.md", "unit_id": "010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac--modulo-formativo-infraestrutura-como-codigo-iac-seguro"}, "vector_text": "Módulo Formativo - Infraestrutura como Código (IaC) Seguro\n\n# Módulo Formativo - Infraestrutura como Código (IaC) Seguro\nO presente exemplo ilustra formação num contexto de elevada automação da infraestrutura, onde a compreensão humana dos mecanismos e limites continua a ser essencial."}
|
|
3288
3288
|
{"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_id": "010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac--modulo-formativo-infraestrutura-como-codigo-iac-seguro--objetivo", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_kind": "narrative_section", "document_role": "addon", "domain": ["infrastructure-as-code"], "phase": [], "risk_level": ["L2", "L3"]}, "mentioned_entities": {"Requirement": ["IAC-001", "IAC-013"]}, "record_id": "mcp::010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac--modulo-formativo-infraestrutura-como-codigo-iac-seguro--objetivo", "relation_hints": [], "section_path": ["Módulo Formativo - Infraestrutura como Código (IaC) Seguro", "🎯 Objetivo"], "size_estimate": {"approx_tokens": 100, "chars": 398}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🎯 Objetivo\n\nCapacitar as equipas técnicas para:\n\n- Compreender os principais riscos de segurança em projetos de IaC;\n- Aplicar os requisitos `IAC-001` a `IAC-013` definidos no Capítulo 08 do SbD-ToE;\n- Integrar validações e boas práticas de segurança no ciclo de vida de desenvolvimento e operação de infraestrutura;\n- Reduzir o risco de exposição, erro de configuração e drift.\n\n---", "title": "🎯 Objetivo", "traceability": {"line_end": 23, "line_start": 13, "source_path": "010-sbd-manual/13-formacao-onboarding/addon/08-exemplo2-formacao-iac.md", "unit_id": "010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac--modulo-formativo-infraestrutura-como-codigo-iac-seguro--objetivo"}, "vector_text": "🎯 Objetivo\n\n## 🎯 Objetivo\n\nCapacitar as equipas técnicas para:\n\n- Compreender os principais riscos de segurança em projetos de IaC;\n- Aplicar os requisitos `IAC-001` a `IAC-013` definidos no Capítulo 08 do SbD-ToE;\n- Integrar validações e boas práticas de segurança no ciclo de vida de desenvolvimento e operação de infraestrutura;\n- Reduzir o risco de exposição, erro de configuração e drift.\n\n---"}
|
|
3289
3289
|
{"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_id": "010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac--modulo-formativo-infraestrutura-como-codigo-iac-seguro--pre-requisitos", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "13-formacao-onboarding", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac--modulo-formativo-infraestrutura-como-codigo-iac-seguro--pre-requisitos", "relation_hints": [], "section_path": ["Módulo Formativo - Infraestrutura como Código (IaC) Seguro", "📋 Pré-requisitos"], "size_estimate": {"approx_tokens": 68, "chars": 270}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 📋 Pré-requisitos\n\n- Familiaridade com linguagens de IaC (ex: Terraform, Bicep, YAML/K8s)\n- Experiência prévia com pipelines de CI/CD (execução, revisão ou configuração)\n- Conhecimento básico sobre segregação de ambientes e gestão de credenciais\n\n---", "title": "📋 Pré-requisitos", "traceability": {"line_end": 31, "line_start": 24, "source_path": "010-sbd-manual/13-formacao-onboarding/addon/08-exemplo2-formacao-iac.md", "unit_id": "010-sbd-manual-13-formacao-onboarding-addon-08-exemplo2-formacao-iac--modulo-formativo-infraestrutura-como-codigo-iac-seguro--pre-requisitos"}, "vector_text": "📋 Pré-requisitos\n\n## 📋 Pré-requisitos\n\n- Familiaridade com linguagens de IaC (ex: Terraform, Bicep, YAML/K8s)\n- Experiência prévia com pipelines de CI/CD (execução, revisão ou configuração)\n- Conhecimento básico sobre segregação de ambientes e gestão de credenciais\n\n---"}
|
|
@@ -3550,12 +3550,12 @@
|
|
|
3550
3550
|
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-03-modelo-validacao-fornecedores--modelo-de-validacao-de-fornecedores-e-terceiros--referencias-cruzadas", "chunk_kind": "table_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-03-modelo-validacao-fornecedores", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "table_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-03-modelo-validacao-fornecedores--modelo-de-validacao-de-fornecedores-e-terceiros--referencias-cruzadas", "relation_hints": [], "section_path": ["Modelo de Validação de Fornecedores e Terceiros", "🔗 Referências cruzadas"], "size_estimate": {"approx_tokens": 161, "chars": 643}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 🔗 Referências cruzadas\n\n| Documento / Capítulo | Relação com validação de fornecedores |\n| --------------------------------- | ------------------------------------------- |\n| Cap. 01 - Classificação de risco | Define o nível de aplicação do modelo |\n| Cap. 02 - Requisitos de segurança | Determina o que validar por tipo de risco |\n| addon/02-clausulas-contratuais.md | Cláusulas por tipo de contrato e risco |\n| addon/01-modelo-governacao.md | Papéis e alçadas para aprovação de exceções |\n| addon/05-exemplos-praticos.md | Casos reais de aplicação do modelo |\n\n---", "title": "🔗 Referências cruzadas", "traceability": {"line_end": 119, "line_start": 109, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/03-modelo-validacao-fornecedores.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-03-modelo-validacao-fornecedores--modelo-de-validacao-de-fornecedores-e-terceiros--referencias-cruzadas"}, "vector_text": "🔗 Referências cruzadas\n\n## 🔗 Referências cruzadas\n\n| Documento / Capítulo | Relação com validação de fornecedores |\n| --------------------------------- | ------------------------------------------- |\n| Cap. 01 - Classificação de risco | Define o nível de aplicação do modelo |\n| Cap. 02 - Requisitos de segurança | Determina o que validar por tipo de risco |\n| addon/02-clausulas-contratuais.md | Cláusulas por tipo de contrato e risco |\n| addon/01-modelo-governacao.md | Papéis e alçadas para aprovação de exceções |\n| addon/05-exemplos-praticos.md | Casos reais de aplicação do modelo |\n\n---"}
|
|
3551
3551
|
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional"], "size_estimate": {"approx_tokens": 21, "chars": 84}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "# Modelo de Rastreabilidade Organizacional", "title": "Modelo de Rastreabilidade Organizacional", "traceability": {"line_end": 12, "line_start": 11, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/04-rastreabilidade-organizacional.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional"}, "vector_text": "Modelo de Rastreabilidade Organizacional\n\n# Modelo de Rastreabilidade Organizacional"}
|
|
3552
3552
|
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--objetivo", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--objetivo", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "🌟 Objetivo"], "size_estimate": {"approx_tokens": 212, "chars": 847}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## 🌟 Objetivo\n\nGarantir que existe uma **ligação clara, documentada e auditável** entre:\n\n* A **classificação de risco** atribuída a cada aplicação ou sistema;\n* Os **requisitos de segurança aplicados** (Cap. 2);\n* As **cláusulas contratuais e exigências a terceiros** (`addon/02-clausulas-contratuais.md`);\n* Os **mecanismos de validação** (testes, revisões, evidência);\n* A **documentação de exceções ou compensações** (`addon/12-processo-excecoes.md`);\n* E os **responsáveis nomeados** por cada decisão.\n\nEste modelo de rastreabilidade assume que toda a evidência, independentemente de ser produzida manualmente ou por processos técnicos automatizados, é sempre associada a um responsável organizacional explícito.\n\nA existência de evidência técnica não substitui a necessidade de decisão consciente e responsabilização formal.\n\n---", "title": "🌟 Objetivo", "traceability": {"line_end": 29, "line_start": 13, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/04-rastreabilidade-organizacional.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--objetivo"}, "vector_text": "🌟 Objetivo\n\n## 🌟 Objetivo\n\nGarantir que existe uma **ligação clara, documentada e auditável** entre:\n\n* A **classificação de risco** atribuída a cada aplicação ou sistema;\n* Os **requisitos de segurança aplicados** (Cap. 2);\n* As **cláusulas contratuais e exigências a terceiros** (`addon/02-clausulas-contratuais.md`);\n* Os **mecanismos de validação** (testes, revisões, evidência);\n* A **documentação de exceções ou compensações** (`addon/12-processo-excecoes.md`);\n* E os **responsáveis nomeados** por cada decisão.\n\nEste modelo de rastreabilidade assume que toda a evidência, independentemente de ser produzida manualmente ou por processos técnicos automatizados, é sempre associada a um responsável organizacional explícito.\n\nA existência de evidência técnica não substitui a necessidade de decisão consciente e responsabilização formal.\n\n---"}
|
|
3553
|
-
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--estrutura-de-rastreabilidade-recomendada", "chunk_kind": "table_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "table_section", "document_role": "addon", "domain": ["application-security-requirements"], "phase": ["govern"], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["REQ-001", "REQ-002"
|
|
3554
|
-
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--mecanismos-de-atualizacao", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--mecanismos-de-atualizacao", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "🔄 Mecanismos de atualização"], "size_estimate": {"approx_tokens": 89, "chars": 355}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## 🔄 Mecanismos de atualização\n\n* A tabela deve ser atualizada:\n\n * Em cada release relevante;\n * Sempre que haja alterações de risco, fornecedor ou requisitos;\n * Na aprovação de exceções ou onboarding de novos terceiros.\n\n* A responsabilidade pela atualização deve ser atribuída ao **owner de segurança do projeto**.\n\n---", "title": "🔄 Mecanismos de atualização", "traceability": {"line_end":
|
|
3555
|
-
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--integracao-com-grc-auditorias-e-conformidade", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--integracao-com-grc-auditorias-e-conformidade", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "🔢 Integração com GRC, auditorias e conformidade"], "size_estimate": {"approx_tokens": 136, "chars": 544}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## 🔢 Integração com GRC, auditorias e conformidade\n\n* Este modelo pode ser usado como **fonte de verdade** para:\n\n * Avaliação de conformidade com ISO 27001, NIS2, PCI-DSS;\n * Revisões internas de GRC;\n * Análise de exceções e compensações por parte da equipa AppSec.\n\n* Pode ser consolidado com **dashboards trimestrais ou semestrais**, tais como:\n\n * % de aplicações com rastreabilidade completa;\n * % de aplicações com exceções aprovadas;\n * % de aplicações com evidência validada.\n\n---", "title": "🔢 Integração com GRC, auditorias e conformidade", "traceability": {"line_end":
|
|
3556
|
-
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--sugestao-de-visualizacao", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--sugestao-de-visualizacao", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "📊 Sugestão de visualização"], "size_estimate": {"approx_tokens": 92, "chars": 368}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## 📊 Sugestão de visualização\n\n```mermaid\nflowchart LR\n R[Risco Classificado: L1/L2/L3] --> Q[Requisitos Selecionados]\n Q --> C[Contrato com Cláusulas Alinhadas]\n C --> V[Validação: testes, revisões, SBOM]\n V --> E[Evidência Documentada]\n E --> D[Decisões de exceção se aplicável]\n D --> O[Owner nomeado / revalidação futura]\n```\n\n---", "title": "📊 Sugestão de visualização", "traceability": {"line_end":
|
|
3557
|
-
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--recomendacoes-finais", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--recomendacoes-finais", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "✅ Recomendações finais"], "size_estimate": {"approx_tokens": 82, "chars": 326}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## ✅ Recomendações finais\n\n* Esta tabela deve ser usada como **base para governação técnica** e decisão executiva;\n* Deve integrar os dados provenientes dos **checklists por capítulo SbD-ToE**;\n* Pode ser usada para **construir KPIs de maturidade e visibilidade** (ver `addon/kpis-governanca.md`).\n\n---", "title": "✅ Recomendações finais", "traceability": {"line_end":
|
|
3558
|
-
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--ligacoes-cruzadas", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--ligacoes-cruzadas", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "🔗 Ligações cruzadas"], "size_estimate": {"approx_tokens": 93, "chars": 372}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## 🔗 Ligações cruzadas\n\n* Cap. 1 - Classificação de risco\n* Cap. 2 - Requisitos e matriz de aplicação\n* `addon/01-modelo-governancao.md` - Governação e exceções\n* `addon/02-clausulas-contratuais.md` - Cláusulas contratuais\n* `addon/03-modelo-validacao-fornecedores.md` - Validação de fornecedores\n* `addon/kpis-governanca.md` - KPIs de governação\n\n---", "title": "🔗 Ligações cruzadas", "traceability": {"line_end":
|
|
3553
|
+
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--estrutura-de-rastreabilidade-recomendada", "chunk_kind": "table_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "table_section", "document_role": "addon", "domain": ["application-security-requirements"], "phase": ["govern"], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["REQ-001", "REQ-002"]}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--estrutura-de-rastreabilidade-recomendada", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "📈 Estrutura de rastreabilidade recomendada"], "size_estimate": {"approx_tokens": 238, "chars": 952}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## 📈 Estrutura de rastreabilidade recomendada\n\n| Aplicativo / Projeto | Risco (L1-L3) | Requisitos aplicados | Exceções aprovadas | Fornecedor / Serviço | Evidência existente | Owner de segurança |\n| -------------------- | ------------- | -------------------- | ------------------- | -------------------- | ------------------- | ------------------- |\n| Ex: Portal RH | L3 | REQ-001, REQ-002... | EX-REQ-017 justificada | Fornecedor ABC | Teste CI + cláusula | joao.silva\\@empresa |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n> 🔹 Esta estrutura pode ser mantida em Excel, SharePoint, Jira ou outra ferramenta ALM com suporte a traçabilidade.\n\nQuando aplicável, a coluna de evidência deve permitir identificar se a validação foi suportada por mecanismos automatizados, bem como o responsável pela aceitação dessa evidência.\n\n---", "title": "📈 Estrutura de rastreabilidade recomendada", "traceability": {"line_end": 43, "line_start": 30, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/04-rastreabilidade-organizacional.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--estrutura-de-rastreabilidade-recomendada"}, "vector_text": "📈 Estrutura de rastreabilidade recomendada\n\n## 📈 Estrutura de rastreabilidade recomendada\n\n| Aplicativo / Projeto | Risco (L1-L3) | Requisitos aplicados | Exceções aprovadas | Fornecedor / Serviço | Evidência existente | Owner de segurança |\n| -------------------- | ------------- | -------------------- | ------------------- | -------------------- | ------------------- | ------------------- |\n| Ex: Portal RH | L3 | REQ-001, REQ-002... | EX-REQ-017 justificada | Fornecedor ABC | Teste CI + cláusula | joao.silva\\@empresa |\n\n*Identificadores ilustrativos (`EX-…`); não correspondem ao Catálogo de Requisitos do Cap. 02.*\n\n> 🔹 Esta estrutura pode ser mantida em Excel, SharePoint, Jira ou outra ferramenta ALM com suporte a traçabilidade.\n\nQuando aplicável, a coluna de evidência deve permitir identificar se a validação foi suportada por mecanismos automatizados, bem como o responsável pela aceitação dessa evidência.\n\n---"}
|
|
3554
|
+
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--mecanismos-de-atualizacao", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--mecanismos-de-atualizacao", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "🔄 Mecanismos de atualização"], "size_estimate": {"approx_tokens": 89, "chars": 355}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## 🔄 Mecanismos de atualização\n\n* A tabela deve ser atualizada:\n\n * Em cada release relevante;\n * Sempre que haja alterações de risco, fornecedor ou requisitos;\n * Na aprovação de exceções ou onboarding de novos terceiros.\n\n* A responsabilidade pela atualização deve ser atribuída ao **owner de segurança do projeto**.\n\n---", "title": "🔄 Mecanismos de atualização", "traceability": {"line_end": 55, "line_start": 44, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/04-rastreabilidade-organizacional.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--mecanismos-de-atualizacao"}, "vector_text": "🔄 Mecanismos de atualização\n\n## 🔄 Mecanismos de atualização\n\n* A tabela deve ser atualizada:\n\n * Em cada release relevante;\n * Sempre que haja alterações de risco, fornecedor ou requisitos;\n * Na aprovação de exceções ou onboarding de novos terceiros.\n\n* A responsabilidade pela atualização deve ser atribuída ao **owner de segurança do projeto**.\n\n---"}
|
|
3555
|
+
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--integracao-com-grc-auditorias-e-conformidade", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--integracao-com-grc-auditorias-e-conformidade", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "🔢 Integração com GRC, auditorias e conformidade"], "size_estimate": {"approx_tokens": 136, "chars": 544}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## 🔢 Integração com GRC, auditorias e conformidade\n\n* Este modelo pode ser usado como **fonte de verdade** para:\n\n * Avaliação de conformidade com ISO 27001, NIS2, PCI-DSS;\n * Revisões internas de GRC;\n * Análise de exceções e compensações por parte da equipa AppSec.\n\n* Pode ser consolidado com **dashboards trimestrais ou semestrais**, tais como:\n\n * % de aplicações com rastreabilidade completa;\n * % de aplicações com exceções aprovadas;\n * % de aplicações com evidência validada.\n\n---", "title": "🔢 Integração com GRC, auditorias e conformidade", "traceability": {"line_end": 71, "line_start": 56, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/04-rastreabilidade-organizacional.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--integracao-com-grc-auditorias-e-conformidade"}, "vector_text": "🔢 Integração com GRC, auditorias e conformidade\n\n## 🔢 Integração com GRC, auditorias e conformidade\n\n* Este modelo pode ser usado como **fonte de verdade** para:\n\n * Avaliação de conformidade com ISO 27001, NIS2, PCI-DSS;\n * Revisões internas de GRC;\n * Análise de exceções e compensações por parte da equipa AppSec.\n\n* Pode ser consolidado com **dashboards trimestrais ou semestrais**, tais como:\n\n * % de aplicações com rastreabilidade completa;\n * % de aplicações com exceções aprovadas;\n * % de aplicações com evidência validada.\n\n---"}
|
|
3556
|
+
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--sugestao-de-visualizacao", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--sugestao-de-visualizacao", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "📊 Sugestão de visualização"], "size_estimate": {"approx_tokens": 92, "chars": 368}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## 📊 Sugestão de visualização\n\n```mermaid\nflowchart LR\n R[Risco Classificado: L1/L2/L3] --> Q[Requisitos Selecionados]\n Q --> C[Contrato com Cláusulas Alinhadas]\n C --> V[Validação: testes, revisões, SBOM]\n V --> E[Evidência Documentada]\n E --> D[Decisões de exceção se aplicável]\n D --> O[Owner nomeado / revalidação futura]\n```\n\n---", "title": "📊 Sugestão de visualização", "traceability": {"line_end": 85, "line_start": 72, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/04-rastreabilidade-organizacional.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--sugestao-de-visualizacao"}, "vector_text": "📊 Sugestão de visualização\n\n## 📊 Sugestão de visualização\n\n```mermaid\nflowchart LR\n R[Risco Classificado: L1/L2/L3] --> Q[Requisitos Selecionados]\n Q --> C[Contrato com Cláusulas Alinhadas]\n C --> V[Validação: testes, revisões, SBOM]\n V --> E[Evidência Documentada]\n E --> D[Decisões de exceção se aplicável]\n D --> O[Owner nomeado / revalidação futura]\n```\n\n---"}
|
|
3557
|
+
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--recomendacoes-finais", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--recomendacoes-finais", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "✅ Recomendações finais"], "size_estimate": {"approx_tokens": 82, "chars": 326}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## ✅ Recomendações finais\n\n* Esta tabela deve ser usada como **base para governação técnica** e decisão executiva;\n* Deve integrar os dados provenientes dos **checklists por capítulo SbD-ToE**;\n* Pode ser usada para **construir KPIs de maturidade e visibilidade** (ver `addon/kpis-governanca.md`).\n\n---", "title": "✅ Recomendações finais", "traceability": {"line_end": 93, "line_start": 86, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/04-rastreabilidade-organizacional.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--recomendacoes-finais"}, "vector_text": "✅ Recomendações finais\n\n## ✅ Recomendações finais\n\n* Esta tabela deve ser usada como **base para governação técnica** e decisão executiva;\n* Deve integrar os dados provenientes dos **checklists por capítulo SbD-ToE**;\n* Pode ser usada para **construir KPIs de maturidade e visibilidade** (ver `addon/kpis-governanca.md`).\n\n---"}
|
|
3558
|
+
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--ligacoes-cruzadas", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--ligacoes-cruzadas", "relation_hints": [], "section_path": ["Modelo de Rastreabilidade Organizacional", "🔗 Ligações cruzadas"], "size_estimate": {"approx_tokens": 93, "chars": 372}, "source_mode": "explicit", "support_profiles": ["consult", "guide", "review"], "text": "## 🔗 Ligações cruzadas\n\n* Cap. 1 - Classificação de risco\n* Cap. 2 - Requisitos e matriz de aplicação\n* `addon/01-modelo-governancao.md` - Governação e exceções\n* `addon/02-clausulas-contratuais.md` - Cláusulas contratuais\n* `addon/03-modelo-validacao-fornecedores.md` - Validação de fornecedores\n* `addon/kpis-governanca.md` - KPIs de governação\n\n---", "title": "🔗 Ligações cruzadas", "traceability": {"line_end": 103, "line_start": 94, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/04-rastreabilidade-organizacional.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-04-rastreabilidade-organizacional--modelo-de-rastreabilidade-organizacional--ligacoes-cruzadas"}, "vector_text": "🔗 Ligações cruzadas\n\n## 🔗 Ligações cruzadas\n\n* Cap. 1 - Classificação de risco\n* Cap. 2 - Requisitos e matriz de aplicação\n* `addon/01-modelo-governancao.md` - Governação e exceções\n* `addon/02-clausulas-contratuais.md` - Cláusulas contratuais\n* `addon/03-modelo-validacao-fornecedores.md` - Validação de fornecedores\n* `addon/kpis-governanca.md` - KPIs de governação\n\n---"}
|
|
3559
3559
|
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos--exemplos-de-aplicacao-no-ciclo-de-governaca", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos--exemplos-de-aplicacao-no-ciclo-de-governaca", "relation_hints": [], "section_path": ["Exemplos de Aplicação no Ciclo de Governaça"], "size_estimate": {"approx_tokens": 108, "chars": 429}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "# Exemplos de Aplicação no Ciclo de Governaça\n\nEste anexo fornece **exemplos práticos e reutilizáveis** para aplicar os conceitos de governança e contratação de forma operativa, alinhada com os restantes elementos do modelo SbD-ToE. \nInclui também a verificação de **formação obrigatória** para funções críticas (owners, aprovadores, validadores), em conformidade com o Cap. 13.\n\n---", "title": "Exemplos de Aplicação no Ciclo de Governaça", "traceability": {"line_end": 17, "line_start": 11, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/05-exemplos-praticos.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos--exemplos-de-aplicacao-no-ciclo-de-governaca"}, "vector_text": "Exemplos de Aplicação no Ciclo de Governaça\n\n# Exemplos de Aplicação no Ciclo de Governaça\n\nEste anexo fornece **exemplos práticos e reutilizáveis** para aplicar os conceitos de governança e contratação de forma operativa, alinhada com os restantes elementos do modelo SbD-ToE. \nInclui também a verificação de **formação obrigatória** para funções críticas (owners, aprovadores, validadores), em conformidade com o Cap. 13.\n\n---"}
|
|
3560
3560
|
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos--exemplos-de-aplicacao-no-ciclo-de-governaca--1-exemplo-de-aprovacao-de-excecao", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": ["application-security-requirements"], "phase": ["govern"], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["VAL-002", "VAL-006"]}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos--exemplos-de-aplicacao-no-ciclo-de-governaca--1-exemplo-de-aprovacao-de-excecao", "relation_hints": [], "section_path": ["Exemplos de Aplicação no Ciclo de Governaça", "📜 1. Exemplo de aprovação de exceção"], "size_estimate": {"approx_tokens": 179, "chars": 715}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 📜 1. Exemplo de aprovação de exceção\n\n**Título:** [SEC] Aprovação de exceção de controlo de validação de entrada para app \"GestDoc\"\n\n**Justificação:** \n\nA aplicação utiliza uma framework legada sem suporte nativo a validação automática. O risco foi mitigado com proxy de validação externo e logging reforçado.\n\n**Nível de risco:** L2 \n\n**Controlos substituídos:** VAL-002, VAL-006 \n**Compensação aplicada:** Validação em proxy com schema + testes de fuzzing \n\n**Validade da exceção:** 6 meses \n**Owner:** paula.lima@empresa \n\n**Aprovadores:** AppSec + gestor de produto \n**Formação obrigatória validada:** ✔️ Owners e aprovadores com formação SbD ativa (Cap. 13)\n\n---", "title": "📜 1. Exemplo de aprovação de exceção", "traceability": {"line_end": 38, "line_start": 18, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/05-exemplos-praticos.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos--exemplos-de-aplicacao-no-ciclo-de-governaca--1-exemplo-de-aprovacao-de-excecao"}, "vector_text": "📜 1. Exemplo de aprovação de exceção\n\n## 📜 1. Exemplo de aprovação de exceção\n\n**Título:** [SEC] Aprovação de exceção de controlo de validação de entrada para app \"GestDoc\"\n\n**Justificação:** \n\nA aplicação utiliza uma framework legada sem suporte nativo a validação automática. O risco foi mitigado com proxy de validação externo e logging reforçado.\n\n**Nível de risco:** L2 \n\n**Controlos substituídos:** VAL-002, VAL-006 \n**Compensação aplicada:** Validação em proxy com schema + testes de fuzzing \n\n**Validade da exceção:** 6 meses \n**Owner:** paula.lima@empresa \n\n**Aprovadores:** AppSec + gestor de produto \n**Formação obrigatória validada:** ✔️ Owners e aprovadores com formação SbD ativa (Cap. 13)\n\n---"}
|
|
3561
3561
|
{"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_id": "010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos--exemplos-de-aplicacao-no-ciclo-de-governaca--2-exemplo-de-onboarding-de-fornecedor", "chunk_kind": "narrative_section", "document_id": "010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos", "document_role": "addon", "filter_tags": {"authority_class": "supporting", "bundle_id": "14-governanca-contratacao", "chunk_kind": "narrative_section", "document_role": "addon", "domain": [], "phase": ["govern"], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos--exemplos-de-aplicacao-no-ciclo-de-governaca--2-exemplo-de-onboarding-de-fornecedor", "relation_hints": [], "section_path": ["Exemplos de Aplicação no Ciclo de Governaça", "📄 2. Exemplo de onboarding de fornecedor"], "size_estimate": {"approx_tokens": 179, "chars": 714}, "source_mode": "explicit", "support_profiles": ["consult", "guide"], "text": "## 📄 2. Exemplo de onboarding de fornecedor\n\n**Título:** [ONB] Validação de fornecedor para integração de pagamento externo (serviço \"XPay\")\n\n**Classificação de risco do sistema:** L3\n\n**Checklist de onboarding:**\n- [x] Questionário de segurança preenchido\n- [x] SBOM fornecido\n- [x] Cláusulas contratuais de segurança assinadas\n- [x] SLA de resposta a incidentes < 24h\n- [ ] Validação externa de controlos (em curso)\n\n**Owner da integração:** ana.gomes@empresa \n\n**Observação:** onboarding condicionado à entrega de evidência de testes antes de go-live \n**Formação obrigatória validada:** ✔️ Owner e analista AppSec com formação em validação de terceiros (Cap. 13)\n\n---", "title": "📄 2. Exemplo de onboarding de fornecedor", "traceability": {"line_end": 58, "line_start": 39, "source_path": "010-sbd-manual/14-governanca-contratacao/addon/05-exemplos-praticos.md", "unit_id": "010-sbd-manual-14-governanca-contratacao-addon-05-exemplos-praticos--exemplos-de-aplicacao-no-ciclo-de-governaca--2-exemplo-de-onboarding-de-fornecedor"}, "vector_text": "📄 2. Exemplo de onboarding de fornecedor\n\n## 📄 2. Exemplo de onboarding de fornecedor\n\n**Título:** [ONB] Validação de fornecedor para integração de pagamento externo (serviço \"XPay\")\n\n**Classificação de risco do sistema:** L3\n\n**Checklist de onboarding:**\n- [x] Questionário de segurança preenchido\n- [x] SBOM fornecido\n- [x] Cláusulas contratuais de segurança assinadas\n- [x] SLA de resposta a incidentes < 24h\n- [ ] Validação externa de controlos (em curso)\n\n**Owner da integração:** ana.gomes@empresa \n\n**Observação:** onboarding condicionado à entrega de evidência de testes antes de go-live \n**Formação obrigatória validada:** ✔️ Owner e analista AppSec com formação em validação de terceiros (Cap. 13)\n\n---"}
|
|
@@ -3799,16 +3799,16 @@
|
|
|
3799
3799
|
{"authority_class": "normative", "bundle_id": "020-assets", "chunk_id": "020-assets-intro--assets-organizacionais--como-usar", "chunk_kind": "narrative_section", "document_id": "020-assets-intro", "document_role": "intro", "filter_tags": {"authority_class": "normative", "bundle_id": "020-assets", "chunk_kind": "narrative_section", "document_role": "intro", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-intro--assets-organizacionais--como-usar", "relation_hints": [], "section_path": ["Assets Organizacionais", "🚀 Como Usar"], "size_estimate": {"approx_tokens": 104, "chars": 416}, "source_mode": "explicit", "support_profiles": ["consult"], "text": "## 🚀 Como Usar\n\n1. **Identifique o seu capítulo**: Selecione qual capítulo do manual SbD-ToE é relevante para a vossa iniciativa\n2. **Consulte a política correspondente**: Cada capítulo aponta às políticas recomendadas\n3. **Adapte à vossa organização**: Use as políticas como base, personalizando conforme o contexto\n4. **Implemente e audite**: Garanta conformidade através de auditorias periódicas\n\n---", "title": "🚀 Como Usar", "traceability": {"line_end": 82, "line_start": 74, "source_path": "020-assets/intro.md", "unit_id": "020-assets-intro--assets-organizacionais--como-usar"}, "vector_text": "🚀 Como Usar\n\n## 🚀 Como Usar\n\n1. **Identifique o seu capítulo**: Selecione qual capítulo do manual SbD-ToE é relevante para a vossa iniciativa\n2. **Consulte a política correspondente**: Cada capítulo aponta às políticas recomendadas\n3. **Adapte à vossa organização**: Use as políticas como base, personalizando conforme o contexto\n4. **Implemente e audite**: Garanta conformidade através de auditorias periódicas\n\n---"}
|
|
3800
3800
|
{"authority_class": "normative", "bundle_id": "020-assets", "chunk_id": "020-assets-intro--assets-organizacionais--normas-frameworks-alinhados", "chunk_kind": "narrative_section", "document_id": "020-assets-intro", "document_role": "intro", "filter_tags": {"authority_class": "normative", "bundle_id": "020-assets", "chunk_kind": "narrative_section", "document_role": "intro", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-intro--assets-organizacionais--normas-frameworks-alinhados", "relation_hints": [], "section_path": ["Assets Organizacionais", "💡 Normas & Frameworks Alinhados"], "size_estimate": {"approx_tokens": 102, "chars": 408}, "source_mode": "explicit", "support_profiles": ["consult"], "text": "## 💡 Normas & Frameworks Alinhados\n\nAs políticas aqui documentadas estão alinhadas com:\n\n- 🔒 **ISO/IEC 27005** – Gestão de Risco de Informação\n- 🛡️ **NIST SSDF** – Secure Software Development Framework\n- 📋 **OWASP SAMM** – Software Assurance Maturity Model\n- 🎯 **CIS Controls v8** – Controles de Segurança Críticos\n- 🌐 **ENISA Risk Management** – Recomendações Europeias\n\n---", "title": "💡 Normas & Frameworks Alinhados", "traceability": {"line_end": 94, "line_start": 83, "source_path": "020-assets/intro.md", "unit_id": "020-assets-intro--assets-organizacionais--normas-frameworks-alinhados"}, "vector_text": "💡 Normas & Frameworks Alinhados\n\n## 💡 Normas & Frameworks Alinhados\n\nAs políticas aqui documentadas estão alinhadas com:\n\n- 🔒 **ISO/IEC 27005** – Gestão de Risco de Informação\n- 🛡️ **NIST SSDF** – Secure Software Development Framework\n- 📋 **OWASP SAMM** – Software Assurance Maturity Model\n- 🎯 **CIS Controls v8** – Controles de Segurança Críticos\n- 🌐 **ENISA Risk Management** – Recomendações Europeias\n\n---"}
|
|
3801
3801
|
{"authority_class": "normative", "bundle_id": "020-assets", "chunk_id": "020-assets-intro--assets-organizacionais--suporte", "chunk_kind": "narrative_section", "document_id": "020-assets-intro", "document_role": "intro", "filter_tags": {"authority_class": "normative", "bundle_id": "020-assets", "chunk_kind": "narrative_section", "document_role": "intro", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-intro--assets-organizacionais--suporte", "relation_hints": [], "section_path": ["Assets Organizacionais", "📞 Suporte"], "size_estimate": {"approx_tokens": 75, "chars": 298}, "source_mode": "explicit", "support_profiles": ["consult"], "text": "## 📞 Suporte\n\nPara dúvidas, contribuições ou feedback sobre estas políticas, consulte:\n- **Documentação do Manual**: [Security by Design – Manual Completo](/sbd-toe/sbd-manual/)\n- **Repositório**: https://github.com/Shiftleftpt/SbD-ToE-Manual\n\n**Última atualização**: 30 de Março de 2026", "title": "📞 Suporte", "traceability": {"line_end": 101, "line_start": 95, "source_path": "020-assets/intro.md", "unit_id": "020-assets-intro--assets-organizacionais--suporte"}, "vector_text": "📞 Suporte\n\n## 📞 Suporte\n\nPara dúvidas, contribuições ou feedback sobre estas políticas, consulte:\n- **Documentação do Manual**: [Security by Design – Manual Completo](/sbd-toe/sbd-manual/)\n- **Repositório**: https://github.com/Shiftleftpt/SbD-ToE-Manual\n\n**Última atualização**: 30 de Março de 2026"}
|
|
3802
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe", "chunk_kind": "table_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)"], "size_estimate": {"approx_tokens":
|
|
3802
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe", "chunk_kind": "table_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)"], "size_estimate": {"approx_tokens": 554, "chars": 2214}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# MCP Server (SbD-ToE)\n\nQuando se pede a um agente que escreva código seguro, ele tem duas opções: ou recorre ao que reteve do treino — uma aproximação plausível, mas sem âncora nem fonte —, ou consulta o manual numa fonte que devolve requisitos e controlos com identificadores citáveis. O **`@shiftleftpt/sbd-toe-mcp`** existe para tornar a segunda opção trivial.\n\nÉ o servidor [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) oficial do SbD-ToE. Expõe o manual (capítulos 00–14), a ontologia *AppSec Core v1* e os cross-checks normativos publicados através de **tools, resources e prompts MCP** — para que o Claude, o GitHub Copilot, o Cursor, o Windsurf, o Zed (ou qualquer outro cliente MCP) deixem de responder a partir do que treinaram e passem a perguntar à fonte, no momento em que escrevem, com IDs reais. Em prática: cada `CTRL-*`, `REQ-*`, `THR-*` ou `ART-*` que o agente refere passa a ser verificável.\n\n| Atributo | Valor |\n|---|---|\n| **Package** | [`@shiftleftpt/sbd-toe-mcp`](https://www.npmjs.com/package/@shiftleftpt/sbd-toe-mcp) (npm) |\n| **Repositório** | [`Shiftleftpt/sbd-toe-mcp-poc`](https://github.com/Shiftleftpt/sbd-toe-mcp-poc) (GitHub) |\n| **Binário** | `sbd-toe-mcp` |\n| **Requisitos** | Node.js ≥ 20.9.0 |\n| **Licenciamento** | Apache-2.0 (código/runtime) · CC BY-SA 4.0 (snapshots de manual incluídos) |\n| **Transporte** | `stdio` (compatível com todos os clientes MCP padrão) |\n\n:::info Versão actual e *content lag*\nA versão publicada (**`@shiftleftpt/sbd-toe-mcp@0.10.2`**) serve o *snapshot* do manual **`v1.7.0`** sobre o KG formal **`v1.6.0`** (contrato de consumo v1.11): o **canon (capítulos 00–14)** e os fundamentos (incluindo os [cinco macro-processos](/sbd-toe/sbd-manual/fundamentos/macro-processos)), a **ontologia AppSec Core v1** e os seis cross-checks normativos — **CRA**, **DORA**, **NIS2**, **GDPR**, **AI Act** e **ENISA/CSA** — todos indexados e citáveis.\n\nO servidor serve sempre o *snapshot* do manual da altura da publicação; a versão exacta (manual, KG, ontologia) está em `sbd://toe/version`. Se o manual web tiver conteúdo posterior ao *snapshot*, ver [content lag](./10-troubleshooting-faq.md#content-lag).\n:::\n\n---", "title": "MCP Server (SbD-ToE)", "traceability": {"line_end": 36, "line_start": 14, "source_path": "020-assets/mcp/01-intro.md", "unit_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe"}, "vector_text": "MCP Server (SbD-ToE)\n\n# MCP Server (SbD-ToE)\n\nQuando se pede a um agente que escreva código seguro, ele tem duas opções: ou recorre ao que reteve do treino — uma aproximação plausível, mas sem âncora nem fonte —, ou consulta o manual numa fonte que devolve requisitos e controlos com identificadores citáveis. O **`@shiftleftpt/sbd-toe-mcp`** existe para tornar a segunda opção trivial.\n\nÉ o servidor [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) oficial do SbD-ToE. Expõe o manual (capítulos 00–14), a ontologia *AppSec Core v1* e os cross-checks normativos publicados através de **tools, resources e prompts MCP** — para que o Claude, o GitHub Copilot, o Cursor, o Windsurf, o Zed (ou qualquer outro cliente MCP) deixem de responder a partir do que treinaram e passem a perguntar à fonte, no momento em que escrevem, com IDs reais. Em prática: cada `CTRL-*`, `REQ-*`, `THR-*` ou `ART-*` que o agente refere passa a ser verificável.\n\n| Atributo | Valor |\n|---|---|\n| **Package** | [`@shiftleftpt/sbd-toe-mcp`](https://www.npmjs.com/package/@shiftleftpt/sbd-toe-mcp) (npm) |\n| **Repositório** | [`Shiftleftpt/sbd-toe-mcp-poc`](https://github.com/Shiftleftpt/sbd-toe-mcp-poc) (GitHub) |\n| **Binário** | `sbd-toe-mcp` |\n| **Requisitos** | Node.js ≥ 20.9.0 |\n| **Licenciamento** | Apache-2.0 (código/runtime) · CC BY-SA 4.0 (snapshots de manual incluídos) |\n| **Transporte** | `stdio` (compatível com todos os clientes MCP padrão) |\n\n:::info Versão actual e *content lag*\nA versão publicada (**`@shiftleftpt/sbd-toe-mcp@0.10.2`**) serve o *snapshot* do manual **`v1.7.0`** sobre o KG formal **`v1.6.0`** (contrato de consumo v1.11): o **canon (capítulos 00–14)** e os fundamentos (incluindo os [cinco macro-processos](/sbd-toe/sbd-manual/fundamentos/macro-processos)), a **ontologia AppSec Core v1** e os seis cross-checks normativos — **CRA**, **DORA**, **NIS2**, **GDPR**, **AI Act** e **ENISA/CSA** — todos indexados e citáveis.\n\nO servidor serve sempre o *snapshot* do manual da altura da publicação; a versão exacta (manual, KG, ontologia) está em `sbd://toe/version`. Se o manual web tiver conteúdo posterior ao *snapshot*, ver [content lag](./10-troubleshooting-faq.md#content-lag).\n:::\n\n---"}
|
|
3803
3803
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--para-que-serve", "chunk_kind": "table_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--para-que-serve", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Para que serve"], "size_estimate": {"approx_tokens": 456, "chars": 1821}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Para que serve\n\nHá três tipos de momento em que um agente recorre ao SbD-ToE — perceber **o que o manual diz**, perceber **como aplicar o que o manual diz**, e configurar-se a si próprio para o fazer bem. O MCP atende cada um com um conjunto distinto de *tools*:\n\n| Modo | Quando usar | Tools-chave |\n|---|---|---|\n| **CONSULT** | \"O que o manual diz?\", \"O que se aplica a este projecto?\", \"Que controlos estão activos?\" | `consult_security_requirements`, `search_sbd_toe_manual`, `map_sbd_toe_applicability`, `query_sbd_toe_entities` |\n| **GUIDE** | \"Como implemento isto?\", \"Como reviso este PR?\", \"Que threats aplicam aqui?\" | `get_guide_by_role`, `get_threat_landscape`, `plan_sbd_toe_repo_governance`, `map_sbd_toe_review_scope`, `prepare_sbd_toe_codegen_context` |\n| **SETUP** | \"Configurar o meu cliente AI para usar o SbD-ToE\" | `generate_sbd_toe_skill`, `setup_sbd_toe_agent` |\n| **IMPL** (vista de implementação) | \"Como pôr de pé e governar o SbD?\" — checklist por capítulo, operating model, rollout, verificação, KPIs | `get_sbd_toe_chapter_implementation_checklist`, `get_sbd_toe_operating_model`, `plan_sbd_toe_rollout`, `get_sbd_toe_verification_matrix`, `assess_sbd_toe_implementation` |\n\nA vista de implementação (IMPL) responde a *como pôr de pé e governar* o SbD numa organização — distinta da vista operacional (GUIDE), que diz *o que fazer em cada fase do SDLC*.\n\nA linha editorial atravessa todos os modos: **o MCP devolve aquilo que o manual diz; o LLM gera o conteúdo final**. Isso obriga a uma disciplina de rotulagem — cada afirmação na resposta vem marcada como `manual-grounded`, `observed`, `inferred` ou `not verified`. É a forma de manter visível o que veio da fonte, o que veio da observação directa, o que foi inferido pelo modelo e o que ainda está por confirmar.\n\n---", "title": "Para que serve", "traceability": {"line_end": 53, "line_start": 37, "source_path": "020-assets/mcp/01-intro.md", "unit_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--para-que-serve"}, "vector_text": "Para que serve\n\n## Para que serve\n\nHá três tipos de momento em que um agente recorre ao SbD-ToE — perceber **o que o manual diz**, perceber **como aplicar o que o manual diz**, e configurar-se a si próprio para o fazer bem. O MCP atende cada um com um conjunto distinto de *tools*:\n\n| Modo | Quando usar | Tools-chave |\n|---|---|---|\n| **CONSULT** | \"O que o manual diz?\", \"O que se aplica a este projecto?\", \"Que controlos estão activos?\" | `consult_security_requirements`, `search_sbd_toe_manual`, `map_sbd_toe_applicability`, `query_sbd_toe_entities` |\n| **GUIDE** | \"Como implemento isto?\", \"Como reviso este PR?\", \"Que threats aplicam aqui?\" | `get_guide_by_role`, `get_threat_landscape`, `plan_sbd_toe_repo_governance`, `map_sbd_toe_review_scope`, `prepare_sbd_toe_codegen_context` |\n| **SETUP** | \"Configurar o meu cliente AI para usar o SbD-ToE\" | `generate_sbd_toe_skill`, `setup_sbd_toe_agent` |\n| **IMPL** (vista de implementação) | \"Como pôr de pé e governar o SbD?\" — checklist por capítulo, operating model, rollout, verificação, KPIs | `get_sbd_toe_chapter_implementation_checklist`, `get_sbd_toe_operating_model`, `plan_sbd_toe_rollout`, `get_sbd_toe_verification_matrix`, `assess_sbd_toe_implementation` |\n\nA vista de implementação (IMPL) responde a *como pôr de pé e governar* o SbD numa organização — distinta da vista operacional (GUIDE), que diz *o que fazer em cada fase do SDLC*.\n\nA linha editorial atravessa todos os modos: **o MCP devolve aquilo que o manual diz; o LLM gera o conteúdo final**. Isso obriga a uma disciplina de rotulagem — cada afirmação na resposta vem marcada como `manual-grounded`, `observed`, `inferred` ou `not verified`. É a forma de manter visível o que veio da fonte, o que veio da observação directa, o que foi inferido pelo modelo e o que ainda está por confirmar.\n\n---"}
|
|
3804
3804
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Tools, resources e prompts disponíveis"], "size_estimate": {"approx_tokens": 21, "chars": 81}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Tools, resources e prompts disponíveis", "title": "Tools, resources e prompts disponíveis", "traceability": {"line_end": 55, "line_start": 54, "source_path": "020-assets/mcp/01-intro.md", "unit_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis"}, "vector_text": "Tools, resources e prompts disponíveis\n\n## Tools, resources e prompts disponíveis"}
|
|
3805
3805
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis--tools-operacoes", "chunk_kind": "table_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis--tools-operacoes", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Tools, resources e prompts disponíveis", "Tools (operações)"], "size_estimate": {"approx_tokens": 552, "chars": 2207}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Tools (operações)\n\n| Tool | Modo | Propósito |\n|---|---|---|\n| `search_sbd_toe_manual` | CONSULT | Pesquisa narrativa/conceptual com citações |\n| `consult_security_requirements` | CONSULT | Determinístico: requisitos + controlos activos por *risk level* (com *concerns*) |\n| `map_sbd_toe_applicability` | CONSULT | Que capítulos/controlos se aplicam ao projecto |\n| `get_sbd_toe_chapter_brief` | CONSULT | Resumo estruturado de um capítulo (fases, artefactos, tópicos) |\n| `list_sbd_toe_chapters` | CONSULT | Índice dos capítulos com aplicabilidade |\n| `query_sbd_toe_entities` | CONSULT | Procurar controlos (`CTRL-*`), artefactos (`ART-*`), práticas |\n| `resolve_entities` | CONSULT | Filtro de baixo nível sobre a ontologia |\n| `get_guide_by_role` | GUIDE | Práticas por *role* (developer, appsec-engineer, devops-sre, …) e fase do SDLC |\n| `get_threat_landscape` | GUIDE | *Threats* relevantes por *risk level* e *concern* (com confiança de mitigação) |\n| `plan_sbd_toe_repo_governance` | GUIDE | Lista artefactos requeridos pelo manual, agrupados por capítulo |\n| `map_sbd_toe_review_scope` | GUIDE | Bundles a rever dado um conjunto de ficheiros alterados |\n| `prepare_sbd_toe_codegen_context` | GUIDE | Contexto determinístico para *codegen* / *review* / *test-plan* (com `citation_map` fechado) |\n| `answer_sbd_toe_manual` | CONSULT | Q&A *grounded* (degrada para retrieval sem *MCP sampling*) |\n| `map_sbd_toe_regulatory_activation` | CONSULT | Framework (DORA/NIS2/CRA/RGPD) → capítulos do manual que activa |\n| `get_sbd_toe_chapter_implementation_checklist` | IMPL | \"Como implementar o cap. NN\" — narrativa canon/20 |\n| `get_sbd_toe_operating_model` | IMPL | RACI / governança / cadências (do *rollout playbook*) |\n| `plan_sbd_toe_rollout` | IMPL | Roadmap por fases — ordem de implementação |\n| `get_sbd_toe_verification_matrix` | IMPL | Lado EXPECTED: validação + evidência esperada por requisito |\n| `assess_sbd_toe_implementation` | IMPL | Postura de KPIs vs *thresholds* por nível |\n| `inspect_sbd_toe_retrieval` | DIAG | Diagnóstico do retriever |\n| `generate_sbd_toe_skill` | SETUP | Skill/subagent por *role* (`format`, `flavour`) — ou o *agent guide* sem `role` |", "title": "Tools (operações)", "traceability": {"line_end": 81, "line_start": 56, "source_path": "020-assets/mcp/01-intro.md", "unit_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis--tools-operacoes"}, "vector_text": "Tools (operações)\n\n### Tools (operações)\n\n| Tool | Modo | Propósito |\n|---|---|---|\n| `search_sbd_toe_manual` | CONSULT | Pesquisa narrativa/conceptual com citações |\n| `consult_security_requirements` | CONSULT | Determinístico: requisitos + controlos activos por *risk level* (com *concerns*) |\n| `map_sbd_toe_applicability` | CONSULT | Que capítulos/controlos se aplicam ao projecto |\n| `get_sbd_toe_chapter_brief` | CONSULT | Resumo estruturado de um capítulo (fases, artefactos, tópicos) |\n| `list_sbd_toe_chapters` | CONSULT | Índice dos capítulos com aplicabilidade |\n| `query_sbd_toe_entities` | CONSULT | Procurar controlos (`CTRL-*`), artefactos (`ART-*`), práticas |\n| `resolve_entities` | CONSULT | Filtro de baixo nível sobre a ontologia |\n| `get_guide_by_role` | GUIDE | Práticas por *role* (developer, appsec-engineer, devops-sre, …) e fase do SDLC |\n| `get_threat_landscape` | GUIDE | *Threats* relevantes por *risk level* e *concern* (com confiança de mitigação) |\n| `plan_sbd_toe_repo_governance` | GUIDE | Lista artefactos requeridos pelo manual, agrupados por capítulo |\n| `map_sbd_toe_review_scope` | GUIDE | Bundles a rever dado um conjunto de ficheiros alterados |\n| `prepare_sbd_toe_codegen_context` | GUIDE | Contexto determinístico para *codegen* / *review* / *test-plan* (com `citation_map` fechado) |\n| `answer_sbd_toe_manual` | CONSULT | Q&A *grounded* (degrada para retrieval sem *MCP sampling*) |\n| `map_sbd_toe_regulatory_activation` | CONSULT | Framework (DORA/NIS2/CRA/RGPD) → capítulos do manual que activa |\n| `get_sbd_toe_chapter_implementation_checklist` | IMPL | \"Como implementar o cap. NN\" — narrativa canon/20 |\n| `get_sbd_toe_operating_model` | IMPL | RACI / governança / cadências (do *rollout playbook*) |\n| `plan_sbd_toe_rollout` | IMPL | Roadmap por fases — ordem de implementação |\n| `get_sbd_toe_verification_matrix` | IMPL | Lado EXPECTED: validação + evidência esperada por requisito |\n| `assess_sbd_toe_implementation` | IMPL | Postura de KPIs vs *thresholds* por nível |\n| `inspect_sbd_toe_retrieval` | DIAG | Diagnóstico do retriever |\n| `generate_sbd_toe_skill` | SETUP | Skill/subagent por *role* (`format`, `flavour`) — ou o *agent guide* sem `role` |"}
|
|
3806
3806
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis--resources-uris-sbd-toe", "chunk_kind": "table_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis--resources-uris-sbd-toe", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Tools, resources e prompts disponíveis", "Resources (URIs `sbd://toe/*`)"], "size_estimate": {"approx_tokens": 232, "chars": 925}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Resources (URIs `sbd://toe/*`)\n\n| Resource URI | Conteúdo |\n|---|---|\n| `sbd://toe/agent-guide` | Guia operacional completo (LER PRIMEIRO) — modos, roteamento, padrões epistémicos |\n| `sbd://toe/index-compact` | Mapa compacto JSON do manual |\n| `sbd://toe/chapter-applicability/{riskLevel}` | Capítulos activos/condicionais/excluídos por *risk level* |\n| `sbd://toe/ontology` | Ontologia YAML — `domain_mapping`, regras de inferência, *concerns* |\n| `sbd://toe/grounded-codegen-guide` | Guia agente para `prepare_sbd_toe_codegen_context` (workflow + disciplina de output) |\n| `sbd://toe/skill/{role}` | *Skill* de um *role* canónico (= `generate_sbd_toe_skill(role, format=skill)`) |\n| `sbd://toe/subagent/{role}` | Definição de *subagent* de um *role* (= `format=subagent`, *harnessed*) |\n| `sbd://toe/version` | Nome / versão / *provenance* (manual, KG, ontologia) do servidor a correr |", "title": "Resources (URIs `sbd://toe/*`)", "traceability": {"line_end": 94, "line_start": 82, "source_path": "020-assets/mcp/01-intro.md", "unit_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis--resources-uris-sbd-toe"}, "vector_text": "Resources (URIs `sbd://toe/*`)\n\n### Resources (URIs `sbd://toe/*`)\n\n| Resource URI | Conteúdo |\n|---|---|\n| `sbd://toe/agent-guide` | Guia operacional completo (LER PRIMEIRO) — modos, roteamento, padrões epistémicos |\n| `sbd://toe/index-compact` | Mapa compacto JSON do manual |\n| `sbd://toe/chapter-applicability/{riskLevel}` | Capítulos activos/condicionais/excluídos por *risk level* |\n| `sbd://toe/ontology` | Ontologia YAML — `domain_mapping`, regras de inferência, *concerns* |\n| `sbd://toe/grounded-codegen-guide` | Guia agente para `prepare_sbd_toe_codegen_context` (workflow + disciplina de output) |\n| `sbd://toe/skill/{role}` | *Skill* de um *role* canónico (= `generate_sbd_toe_skill(role, format=skill)`) |\n| `sbd://toe/subagent/{role}` | Definição de *subagent* de um *role* (= `format=subagent`, *harnessed*) |\n| `sbd://toe/version` | Nome / versão / *provenance* (manual, KG, ontologia) do servidor a correr |"}
|
|
3807
3807
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis--prompts", "chunk_kind": "table_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis--prompts", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Tools, resources e prompts disponíveis", "Prompts"], "size_estimate": {"approx_tokens": 61, "chars": 241}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Prompts\n\n| Prompt | Quando |\n|---|---|\n| `setup_sbd_toe_agent(riskLevel, projectRole)` | Setup de sessão — capítulos activos + regras específicas do *risk level* |\n| `ask_sbd_toe_manual(question)` | Q&A directo *grounded* |\n\n---", "title": "Prompts", "traceability": {"line_end": 103, "line_start": 95, "source_path": "020-assets/mcp/01-intro.md", "unit_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--tools-resources-e-prompts-disponiveis--prompts"}, "vector_text": "Prompts\n\n### Prompts\n\n| Prompt | Quando |\n|---|---|\n| `setup_sbd_toe_agent(riskLevel, projectRole)` | Setup de sessão — capítulos activos + regras específicas do *risk level* |\n| `ask_sbd_toe_manual(question)` | Q&A directo *grounded* |\n\n---"}
|
|
3808
3808
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--vocabulario-controlado", "chunk_kind": "table_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--vocabulario-controlado", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Vocabulário controlado"], "size_estimate": {"approx_tokens": 315, "chars": 1260}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Vocabulário controlado\n\nO servidor expõe valores **fechados** para parâmetros — usar fora destes valores não devolve resultados.\n\n**Risk levels:**\n\n| Nível | Âmbito |\n|---|---|\n| `L1` | Baixo risco — interno, sem dados sensíveis |\n| `L2` | Médio risco — APIs públicas, dados de utilizador (desbloqueia capítulos 06 e 11) |\n| `L3` | Alto risco — PII, sistemas regulados (desbloqueia adicionalmente o capítulo 13) |\n\n**Concerns** (vocabulário ontológico, *lowercase* exacto):\n\n`auth` · `logging` · `validation` · `api` · `config` · `integrity` · `distribution` · `ide` · `requirements` · `architecture` · `iac` · `encryption`\n\n**Roles canónicos** (aceitam aliases):\n\n`developer` · `appsec-engineer` · `arquitetos-software` · `devops-sre` · `qa` · `security-champion` · `product-owner` · `scrum-master` · `operacoes` · `grc-compliance` · `gestao-executiva` · `auditores` · `fornecedores-terceiros`\n\n> São os **13 papéis canónicos** do manual ([Papéis e Responsabilidades](/sbd-toe/sbd-manual/fundamentos/roles-responsabilidades/intro)). O servidor aceita *aliases* comuns (ex.: `appsec`→`appsec-engineer`, `devops`/`sre`→`devops-sre`, `ciso`→`gestao-executiva`, `compliance`→`grc-compliance`) e resolve-os sempre para um destes 13.\n\n---", "title": "Vocabulário controlado", "traceability": {"line_end": 127, "line_start": 104, "source_path": "020-assets/mcp/01-intro.md", "unit_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--vocabulario-controlado"}, "vector_text": "Vocabulário controlado\n\n## Vocabulário controlado\n\nO servidor expõe valores **fechados** para parâmetros — usar fora destes valores não devolve resultados.\n\n**Risk levels:**\n\n| Nível | Âmbito |\n|---|---|\n| `L1` | Baixo risco — interno, sem dados sensíveis |\n| `L2` | Médio risco — APIs públicas, dados de utilizador (desbloqueia capítulos 06 e 11) |\n| `L3` | Alto risco — PII, sistemas regulados (desbloqueia adicionalmente o capítulo 13) |\n\n**Concerns** (vocabulário ontológico, *lowercase* exacto):\n\n`auth` · `logging` · `validation` · `api` · `config` · `integrity` · `distribution` · `ide` · `requirements` · `architecture` · `iac` · `encryption`\n\n**Roles canónicos** (aceitam aliases):\n\n`developer` · `appsec-engineer` · `arquitetos-software` · `devops-sre` · `qa` · `security-champion` · `product-owner` · `scrum-master` · `operacoes` · `grc-compliance` · `gestao-executiva` · `auditores` · `fornecedores-terceiros`\n\n> São os **13 papéis canónicos** do manual ([Papéis e Responsabilidades](/sbd-toe/sbd-manual/fundamentos/roles-responsabilidades/intro)). O servidor aceita *aliases* comuns (ex.: `appsec`→`appsec-engineer`, `devops`/`sre`→`devops-sre`, `ciso`→`gestao-executiva`, `compliance`→`grc-compliance`) e resolve-os sempre para um destes 13.\n\n---"}
|
|
3809
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--convencoes-de-identificadores", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": ["application-security-requirements"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["AUT-001", "LOG-003"]}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--convencoes-de-identificadores", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Convenções de identificadores"], "size_estimate": {"approx_tokens":
|
|
3810
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--padrao-epistemico-exigido", "chunk_kind": "table_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--padrao-epistemico-exigido", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Padrão epistémico exigido"], "size_estimate": {"approx_tokens": 172, "chars": 686}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Padrão epistémico exigido\n\nToda a resposta gerada com base no MCP deve rotular cada afirmação:\n\n| Rótulo | Significado |\n|---|---|\n| **manual-grounded** | Recuperado via MCP — citar `chapterId` ou ID de controlo |\n| **observed** | Directamente visível no repositório/codebase |\n| **inferred** | Conclusão lógica a partir de factos *grounded* ou *observed* — marcar explicitamente |\n| **not verified** | Não confirmado — nunca apresentar como facto |\n\nEm particular, o servidor **nunca** deve ser usado para declarar conformidade regulamentar com base em código gerado: o *overlay* regulamentar serve como *cross-check*, não como sinal de conformidade.\n\n---", "title": "Padrão epistémico exigido", "traceability": {"line_end":
|
|
3811
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--proximos-passos", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--proximos-passos", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Próximos passos"], "size_estimate": {"approx_tokens": 215, "chars": 858}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Próximos passos\n\n1. [Quickstart](./02-quickstart.md) — pôr a correr em 60 segundos (Claude Code, Cursor).\n2. [Instalação por cliente](./03-instalacao.md) — Claude Code, Claude Desktop, Cursor, VS Code (Copilot), Windsurf, Zed.\n3. [Skills e agentes](./04-skills-agentes.md) — onde guardar a *skill* e como inicializar a sessão.\n4. [Tools reference](./05-tools-reference.md) e [resources / prompts](./06-resources-prompts.md) — API completa.\n5. [Casos de uso](./casos-uso/) — receitas prontas: auditoria de PR, *codegen grounded*, *threat modeling*, *bootstrap* de governança, *onboarding*, *cross-check* normativo.\n6. [Padrões avançados](./08-padroes-avancados.md) · [Disciplina epistémica](./09-epistemica-anti-patterns.md) · [Troubleshooting / FAQ](./10-troubleshooting-faq.md) · [Versionamento / roadmap](./11-versionamento-roadmap.md).", "title": "Próximos passos", "traceability": {"line_end":
|
|
3809
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--convencoes-de-identificadores", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": ["application-security-requirements"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["AUT-001", "LOG-003"]}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--convencoes-de-identificadores", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Convenções de identificadores"], "size_estimate": {"approx_tokens": 258, "chars": 1031}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Convenções de identificadores\n\n- **Requisitos**: `<CAT>-NNN` (ex.: `AUT-001`, `LOG-003`) — resolver por id exato via `query_sbd_toe_entities`\n- **Controlos**: `CTRL-<domain>-<slug>-<hash>` (ex.: `CTRL-identity-gestao-de-identidades-acessos-e-ownership-d0919c69af`). **Não** existe a forma `CTRL-<capítulo>-<número>`.\n- **Ameaças**: `MT-NNN` · **Artefactos**: `ART-<slug>-<hash>` — listar via `get_sbd_toe_chapter_brief`\n- **Gramática de IDs** (*fullmatch*): `^(?:REQ-[A-Z]{3}-\\d{3}|[A-Z]{3}-\\d{3})$`. Identificadores **`EX-…`** (ex.: `EX-AUT-003`, `EX-REQ-010`) são **ilustrativos** e nunca resolvem; um `REQ-NNN` fora do catálogo devolve uma `citation_note` informativa (`status: \"informative\"`), não um requisito — ver [`query_sbd_toe_entities`](./05-tools-reference.md#query_sbd_toe_entities)\n- Em modo `prepare_sbd_toe_codegen_context`, o `citation_map` devolvido é o **mundo fechado** de IDs válidos para a tarefa — IDs fora do `citation_map` **não existem** para efeitos de *grounding*.\n\n---", "title": "Convenções de identificadores", "traceability": {"line_end": 137, "line_start": 128, "source_path": "020-assets/mcp/01-intro.md", "unit_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--convencoes-de-identificadores"}, "vector_text": "Convenções de identificadores\n\n## Convenções de identificadores\n\n- **Requisitos**: `<CAT>-NNN` (ex.: `AUT-001`, `LOG-003`) — resolver por id exato via `query_sbd_toe_entities`\n- **Controlos**: `CTRL-<domain>-<slug>-<hash>` (ex.: `CTRL-identity-gestao-de-identidades-acessos-e-ownership-d0919c69af`). **Não** existe a forma `CTRL-<capítulo>-<número>`.\n- **Ameaças**: `MT-NNN` · **Artefactos**: `ART-<slug>-<hash>` — listar via `get_sbd_toe_chapter_brief`\n- **Gramática de IDs** (*fullmatch*): `^(?:REQ-[A-Z]{3}-\\d{3}|[A-Z]{3}-\\d{3})$`. Identificadores **`EX-…`** (ex.: `EX-AUT-003`, `EX-REQ-010`) são **ilustrativos** e nunca resolvem; um `REQ-NNN` fora do catálogo devolve uma `citation_note` informativa (`status: \"informative\"`), não um requisito — ver [`query_sbd_toe_entities`](./05-tools-reference.md#query_sbd_toe_entities)\n- Em modo `prepare_sbd_toe_codegen_context`, o `citation_map` devolvido é o **mundo fechado** de IDs válidos para a tarefa — IDs fora do `citation_map` **não existem** para efeitos de *grounding*.\n\n---"}
|
|
3810
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--padrao-epistemico-exigido", "chunk_kind": "table_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--padrao-epistemico-exigido", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Padrão epistémico exigido"], "size_estimate": {"approx_tokens": 172, "chars": 686}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Padrão epistémico exigido\n\nToda a resposta gerada com base no MCP deve rotular cada afirmação:\n\n| Rótulo | Significado |\n|---|---|\n| **manual-grounded** | Recuperado via MCP — citar `chapterId` ou ID de controlo |\n| **observed** | Directamente visível no repositório/codebase |\n| **inferred** | Conclusão lógica a partir de factos *grounded* ou *observed* — marcar explicitamente |\n| **not verified** | Não confirmado — nunca apresentar como facto |\n\nEm particular, o servidor **nunca** deve ser usado para declarar conformidade regulamentar com base em código gerado: o *overlay* regulamentar serve como *cross-check*, não como sinal de conformidade.\n\n---", "title": "Padrão epistémico exigido", "traceability": {"line_end": 152, "line_start": 138, "source_path": "020-assets/mcp/01-intro.md", "unit_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--padrao-epistemico-exigido"}, "vector_text": "Padrão epistémico exigido\n\n## Padrão epistémico exigido\n\nToda a resposta gerada com base no MCP deve rotular cada afirmação:\n\n| Rótulo | Significado |\n|---|---|\n| **manual-grounded** | Recuperado via MCP — citar `chapterId` ou ID de controlo |\n| **observed** | Directamente visível no repositório/codebase |\n| **inferred** | Conclusão lógica a partir de factos *grounded* ou *observed* — marcar explicitamente |\n| **not verified** | Não confirmado — nunca apresentar como facto |\n\nEm particular, o servidor **nunca** deve ser usado para declarar conformidade regulamentar com base em código gerado: o *overlay* regulamentar serve como *cross-check*, não como sinal de conformidade.\n\n---"}
|
|
3811
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--proximos-passos", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-01-intro", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-01-intro--mcp-server-sbd-toe--proximos-passos", "relation_hints": [], "section_path": ["MCP Server (SbD-ToE)", "Próximos passos"], "size_estimate": {"approx_tokens": 215, "chars": 858}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Próximos passos\n\n1. [Quickstart](./02-quickstart.md) — pôr a correr em 60 segundos (Claude Code, Cursor).\n2. [Instalação por cliente](./03-instalacao.md) — Claude Code, Claude Desktop, Cursor, VS Code (Copilot), Windsurf, Zed.\n3. [Skills e agentes](./04-skills-agentes.md) — onde guardar a *skill* e como inicializar a sessão.\n4. [Tools reference](./05-tools-reference.md) e [resources / prompts](./06-resources-prompts.md) — API completa.\n5. [Casos de uso](./casos-uso/) — receitas prontas: auditoria de PR, *codegen grounded*, *threat modeling*, *bootstrap* de governança, *onboarding*, *cross-check* normativo.\n6. [Padrões avançados](./08-padroes-avancados.md) · [Disciplina epistémica](./09-epistemica-anti-patterns.md) · [Troubleshooting / FAQ](./10-troubleshooting-faq.md) · [Versionamento / roadmap](./11-versionamento-roadmap.md).", "title": "Próximos passos", "traceability": {"line_end": 160, "line_start": 153, "source_path": "020-assets/mcp/01-intro.md", "unit_id": "020-assets-mcp-01-intro--mcp-server-sbd-toe--proximos-passos"}, "vector_text": "Próximos passos\n\n## Próximos passos\n\n1. [Quickstart](./02-quickstart.md) — pôr a correr em 60 segundos (Claude Code, Cursor).\n2. [Instalação por cliente](./03-instalacao.md) — Claude Code, Claude Desktop, Cursor, VS Code (Copilot), Windsurf, Zed.\n3. [Skills e agentes](./04-skills-agentes.md) — onde guardar a *skill* e como inicializar a sessão.\n4. [Tools reference](./05-tools-reference.md) e [resources / prompts](./06-resources-prompts.md) — API completa.\n5. [Casos de uso](./casos-uso/) — receitas prontas: auditoria de PR, *codegen grounded*, *threat modeling*, *bootstrap* de governança, *onboarding*, *cross-check* normativo.\n6. [Padrões avançados](./08-padroes-avancados.md) · [Disciplina epistémica](./09-epistemica-anti-patterns.md) · [Troubleshooting / FAQ](./10-troubleshooting-faq.md) · [Versionamento / roadmap](./11-versionamento-roadmap.md)."}
|
|
3812
3812
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-02-quickstart--quickstart-60-segundos", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-02-quickstart", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-02-quickstart--quickstart-60-segundos", "relation_hints": [], "section_path": ["Quickstart — 60 segundos"], "size_estimate": {"approx_tokens": 76, "chars": 303}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Quickstart — 60 segundos\n\nA forma mais rápida de avaliar o MCP é experimentá-lo durante um minuto e ver o cliente AI a citar o manual com IDs em vez de o parafrasear. Não é preciso clonar nada nem configurar credenciais — o servidor está publicado no npm e arranca via `npx`.", "title": "Quickstart — 60 segundos", "traceability": {"line_end": 15, "line_start": 12, "source_path": "020-assets/mcp/02-quickstart.md", "unit_id": "020-assets-mcp-02-quickstart--quickstart-60-segundos"}, "vector_text": "Quickstart — 60 segundos\n\n# Quickstart — 60 segundos\n\nA forma mais rápida de avaliar o MCP é experimentá-lo durante um minuto e ver o cliente AI a citar o manual com IDs em vez de o parafrasear. Não é preciso clonar nada nem configurar credenciais — o servidor está publicado no npm e arranca via `npx`."}
|
|
3813
3813
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-02-quickstart--quickstart-60-segundos--pre-requisito", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-02-quickstart", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-02-quickstart--quickstart-60-segundos--pre-requisito", "relation_hints": [], "section_path": ["Quickstart — 60 segundos", "Pré-requisito"], "size_estimate": {"approx_tokens": 23, "chars": 91}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Pré-requisito\n\n- **Node.js ≥ 20.9.0** ([nodejs.org](https://nodejs.org/))", "title": "Pré-requisito", "traceability": {"line_end": 19, "line_start": 16, "source_path": "020-assets/mcp/02-quickstart.md", "unit_id": "020-assets-mcp-02-quickstart--quickstart-60-segundos--pre-requisito"}, "vector_text": "Pré-requisito\n\n## Pré-requisito\n\n- **Node.js ≥ 20.9.0** ([nodejs.org](https://nodejs.org/))"}
|
|
3814
3814
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-02-quickstart--quickstart-60-segundos--opcao-1-claude-code-cli", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-02-quickstart", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-02-quickstart--quickstart-60-segundos--opcao-1-claude-code-cli", "relation_hints": [], "section_path": ["Quickstart — 60 segundos", "Opção 1 — Claude Code (CLI)"], "size_estimate": {"approx_tokens": 81, "chars": 323}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Opção 1 — Claude Code (CLI)\n\n```bash\nclaude mcp add sbd-toe -- npx -y @shiftleftpt/sbd-toe-mcp\n```\n\nE pronto. Numa nova sessão do Claude Code, basta perguntar:\n\n> *\"Lista os capítulos do manual SbD-ToE.\"*\n\nA sessão deve arrancar com a tool `list_sbd_toe_chapters` a devolver os 15 capítulos.", "title": "Opção 1 — Claude Code (CLI)", "traceability": {"line_end": 31, "line_start": 20, "source_path": "020-assets/mcp/02-quickstart.md", "unit_id": "020-assets-mcp-02-quickstart--quickstart-60-segundos--opcao-1-claude-code-cli"}, "vector_text": "Opção 1 — Claude Code (CLI)\n\n## Opção 1 — Claude Code (CLI)\n\n```bash\nclaude mcp add sbd-toe -- npx -y @shiftleftpt/sbd-toe-mcp\n```\n\nE pronto. Numa nova sessão do Claude Code, basta perguntar:\n\n> *\"Lista os capítulos do manual SbD-ToE.\"*\n\nA sessão deve arrancar com a tool `list_sbd_toe_chapters` a devolver os 15 capítulos."}
|
|
@@ -3847,38 +3847,38 @@
|
|
|
3847
3847
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode"], "size_estimate": {"approx_tokens": 8, "chars": 29}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## CONSULT mode", "title": "CONSULT mode", "traceability": {"line_end": 25, "line_start": 24, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode"}, "vector_text": "CONSULT mode\n\n## CONSULT mode"}
|
|
3848
3848
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--search-sbd-toe-manual", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--search-sbd-toe-manual", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`search_sbd_toe_manual`"], "size_estimate": {"approx_tokens": 121, "chars": 481}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `search_sbd_toe_manual`\n\nPesquisa narrativa com citações — quando o utilizador faz perguntas conceptuais (\"o que é threat modeling?\", \"como funciona SBOM\").\n\n**Parâmetros:** `query` (string)\n\n**Output:** lista de excertos com `chapter_id`, `section`, `score`, `text`.\n\n**Quando preferir:** perguntas abertas / explicativas.\n**Quando NÃO usar:** quando há filtros estruturados (risk_level, concern, role) — preferir `consult_security_requirements`.\n\n---", "title": "`search_sbd_toe_manual`", "traceability": {"line_end": 38, "line_start": 26, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--search-sbd-toe-manual"}, "vector_text": "`search_sbd_toe_manual`\n\n### `search_sbd_toe_manual`\n\nPesquisa narrativa com citações — quando o utilizador faz perguntas conceptuais (\"o que é threat modeling?\", \"como funciona SBOM\").\n\n**Parâmetros:** `query` (string)\n\n**Output:** lista de excertos com `chapter_id`, `section`, `score`, `text`.\n\n**Quando preferir:** perguntas abertas / explicativas.\n**Quando NÃO usar:** quando há filtros estruturados (risk_level, concern, role) — preferir `consult_security_requirements`.\n\n---"}
|
|
3849
3849
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--answer-sbd-toe-manual", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--answer-sbd-toe-manual", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`answer_sbd_toe_manual`"], "size_estimate": {"approx_tokens": 159, "chars": 633}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `answer_sbd_toe_manual`\n\nQ&A em linguagem natural — recupera contexto do manual e pede a síntese da resposta ao modelo do cliente via *MCP sampling*.\n\n**Parâmetros:** `question` (string); `topK`, `useVectorRecall`, `debug` (opcionais)\n\n:::info Degradação honesta sem *sampling*\nEm clientes **sem suporte de MCP sampling** (ex.: Claude Code), a tool **não inventa** uma síntese: devolve o retrieval formatado com a nota *\"MCP sampling not available… use `search_sbd_toe_manual` directly\"* e encaminha para `search_sbd_toe_manual`. Nesses clientes, preferir `search_sbd_toe_manual` desde o início.\n:::\n\n---", "title": "`answer_sbd_toe_manual`", "traceability": {"line_end": 50, "line_start": 39, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--answer-sbd-toe-manual"}, "vector_text": "`answer_sbd_toe_manual`\n\n### `answer_sbd_toe_manual`\n\nQ&A em linguagem natural — recupera contexto do manual e pede a síntese da resposta ao modelo do cliente via *MCP sampling*.\n\n**Parâmetros:** `question` (string); `topK`, `useVectorRecall`, `debug` (opcionais)\n\n:::info Degradação honesta sem *sampling*\nEm clientes **sem suporte de MCP sampling** (ex.: Claude Code), a tool **não inventa** uma síntese: devolve o retrieval formatado com a nota *\"MCP sampling not available… use `search_sbd_toe_manual` directly\"* e encaminha para `search_sbd_toe_manual`. Nesses clientes, preferir `search_sbd_toe_manual` desde o início.\n:::\n\n---"}
|
|
3850
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--consult-security-requirements", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": ["application-security-requirements"], "phase": [], "risk_level": ["L2", "L3"]}, "mentioned_entities": {"Requirement": ["AUT-001"]}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--consult-security-requirements", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`consult_security_requirements`"], "size_estimate": {"approx_tokens":
|
|
3851
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--consult-security-requirements--exemplo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--consult-security-requirements--exemplo", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`consult_security_requirements`", "Exemplo"], "size_estimate": {"approx_tokens": 68, "chars": 271}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "#### Exemplo\n\n```json\nconsult_security_requirements({\"risk_level\": \"L2\", \"concerns\": [\"auth\", \"logging\"]})\n```\n\nDevolve apenas requisitos das categorias **AUT/ACC/SES** (auth) + **LOG** (logging), com `rule_trace` a confirmar `CONCERNS_FILTER_REQUIREMENTS`.\n\n---", "title": "Exemplo", "traceability": {"line_end":
|
|
3852
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--map-sbd-toe-applicability", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--map-sbd-toe-applicability", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`map_sbd_toe_applicability`"], "size_estimate": {"approx_tokens": 92, "chars": 365}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `map_sbd_toe_applicability`\n\nQue capítulos / controlos se aplicam ao projecto dado o seu perfil.\n\n**Parâmetros:** atributos do projecto (exposição, dados, *stack*, regulação aplicável).\n\n**Output:** capítulos activos/condicionais/excluídos + *rationale*.\n\n**Quando preferir:** decidir *risk level* ou perfilar um projecto novo.\n\n---", "title": "`map_sbd_toe_applicability`", "traceability": {"line_end":
|
|
3853
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--get-sbd-toe-chapter-brief", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--get-sbd-toe-chapter-brief", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`get_sbd_toe_chapter_brief`"], "size_estimate": {"approx_tokens": 68, "chars": 272}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_sbd_toe_chapter_brief`\n\nResumo estruturado de um capítulo — fases, artefactos (`ART-*`), tópicos.\n\n**Parâmetros:** `chapter_id` (ex.: `06-desenvolvimento-seguro`)\n\n**Output:** `phases`, `artifact_ids[]`, `topics[]`, `controls[]`.\n\n---", "title": "`get_sbd_toe_chapter_brief`", "traceability": {"line_end":
|
|
3854
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--list-sbd-toe-chapters", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--list-sbd-toe-chapters", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`list_sbd_toe_chapters`"], "size_estimate": {"approx_tokens": 41, "chars": 164}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `list_sbd_toe_chapters`\n\nÍndice — `chapter_id`, `title`, `min_level`, `domains`.\n\n**Parâmetros:** `risk_level` (opcional — filtra)\n\n---", "title": "`list_sbd_toe_chapters`", "traceability": {"line_end":
|
|
3855
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--query-sbd-toe-entities", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": ["application-security-requirements"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["AUT-001", "LOG-003"]}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--query-sbd-toe-entities", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`query_sbd_toe_entities`"], "size_estimate": {"approx_tokens":
|
|
3856
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--resolve-entities", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--resolve-entities", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`resolve_entities`"], "size_estimate": {"approx_tokens":
|
|
3857
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode"], "size_estimate": {"approx_tokens": 7, "chars": 25}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## GUIDE mode", "title": "GUIDE mode", "traceability": {"line_end":
|
|
3858
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--get-guide-by-role", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--get-guide-by-role", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode", "`get_guide_by_role`"], "size_estimate": {"approx_tokens": 157, "chars": 628}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_guide_by_role`\n\n**Determinístico**. Práticas atribuídas por *role* e/ou fase do SDLC.\n\n**Parâmetros:**\n- `risk_level` (`L1` | `L2` | `L3`) — obrigatório\n- `role` (string) — opcional\n- `phase` (string) — opcional (`requirements` | `design` | `implement` | `test` | `deploy` | `operate` | `governance`)\n\n**Output sem `role`/`phase`:** `role_summary{}` + `phase_summary{}` (contagens) — útil para discovery.\n**Output com `role` ou `phase`:** `assignments[]` + *user stories*.\n\n**Regra crítica:** **sempre passar `role` ou `phase`** para obter detalhes — sem nenhum dos dois, devolve só contagens.\n\n---", "title": "`get_guide_by_role`", "traceability": {"line_end":
|
|
3859
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--get-threat-landscape", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {"Threat": ["MT-021", "MT-055"]}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--get-threat-landscape", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode", "`get_threat_landscape`"], "size_estimate": {"approx_tokens": 424, "chars": 1693}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_threat_landscape`\n\n**Determinístico**. *Threats* relevantes para um *risk level* / *concern*, com mitigações.\n\n**Parâmetros:**\n- `risk_level` (`L1` | `L2` | `L3`) — obrigatório\n- `concerns` (string[]) — opcional\n\n**Output:** (ameaças `MT-NNN`; cada ligação cita o `control_id` real)\n```json\n{\n \"threats\": [\n {\n \"id\": \"MT-055\", \"name\": \"Interfaces expostas sem isolamento\",\n \"chapter_id\": \"04-arquitetura-segura\", \"threat_category\": \"STRIDE\",\n \"mitigation_confidence\": \"derived\", \"mitigation_strength\": \"parcial\",\n \"mitigated_by\": [\n {\"control_id\": \"CTRL-infrastructure-segmentacao-e-controlo-arquitetural-dceb3c1f0b\", \"domain\": \"infrastructure\"}\n ]\n }\n ]\n}\n```\n\n**Importante:**\n- `mitigation_confidence: \"derived\"` → ligação estrutural (chapter/bundle-match), fiável; `mitigation_strength` é tipicamente `\"parcial\"`. (Não há valor `\"heuristic\"` nas ligações estruturais — se aparecer um *fallback* heurístico, rotular como inferido.)\n- A tool **corre `consult` internamente** — não chamar `consult_security_requirements` antes.\n\n:::warning Limitação de *routing* conhecida (à data desta versão)\nOs *concerns* de **base** (`auth`, `validation`, `api`, …) roteiam para o **cap. 02** e devolvem as meta-ameaças de processo `MT-021..038` (ausência/ambiguidade de requisitos), **não** as ameaças técnicas do domínio. Os *concerns* de **domínio** roteiam bem: `architecture`→cap. 04 (`MT-055..072`), `iac`→cap. 08, `logging`→cap. 12. Para ameaças técnicas de auth/validação, ancorar antes nos **requisitos** (`consult_security_requirements`) e cruzar. *(Fix em curso no servidor — verificar o comportamento ao vivo.)*\n:::\n\n---", "title": "`get_threat_landscape`", "traceability": {"line_end":
|
|
3860
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--plan-sbd-toe-repo-governance", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--plan-sbd-toe-repo-governance", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode", "`plan_sbd_toe_repo_governance`"], "size_estimate": {"approx_tokens": 93, "chars": 370}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `plan_sbd_toe_repo_governance`\n\nLista os artefactos que o manual identifica para um repositório, agrupados por capítulo.\n\n**Output:** lista de `artifact_id` + `chapter_id` + `description`.\n\n**Padrão:** *bootstrap* de governança num repo novo — gerar a partir da lista artefactos por capítulo, criar os ficheiros vazios + READMEs.\n\n---", "title": "`plan_sbd_toe_repo_governance`", "traceability": {"line_end":
|
|
3861
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--map-sbd-toe-review-scope", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--map-sbd-toe-review-scope", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode", "`map_sbd_toe_review_scope`"], "size_estimate": {"approx_tokens": 99, "chars": 396}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `map_sbd_toe_review_scope`\n\nDado um conjunto de ficheiros alterados, devolve que **bundles do manual** rever.\n\n**Parâmetros:** `changed_files` (string[])\n\n**Output:** capítulos / bundles a rever + *rationale* (ex.: \"ficheiros sob `iac/` → cap. 08\").\n\n**Padrão:** *PR auditor*. Combinar com `consult_security_requirements` para enumerar controlos por capítulo.\n\n---", "title": "`map_sbd_toe_review_scope`", "traceability": {"line_end":
|
|
3862
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--prepare-sbd-toe-codegen-context", "chunk_kind": "table_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--prepare-sbd-toe-codegen-context", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode", "`prepare_sbd_toe_codegen_context`"], "size_estimate": {"approx_tokens": 426, "chars": 1704}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `prepare_sbd_toe_codegen_context`\n\nA tool **mais sofisticada** — devolve contexto determinístico para *codegen*, *review* ou *test-plan*.\n\n**Parâmetros:**\n- `task` (string) — obrigatório\n- `risk_level`, `mode` (`codegen` | `review` | `test-plan`), `stack`, `exposure`, `data_sensitivity`, `concerns`, `changed_files`, `regulatory_frameworks`, `include_regulatory_overlay` — opcionais (passar tudo que se sabe)\n\n**Output (campo `status`):**\n\n| `status` | Significado | Acção |\n|---|---|---|\n| `ready_for_codegen` | Scope claro, contexto pronto | Proceder — preencher `security_rationale` |\n| `needs_clarification` | Inputs ambíguos | **STOP** — perguntar ao utilizador, não gerar código |\n| `needs_decomposition` | Scope demasiado largo | **STOP** — propor 2–4 sub-tarefas |\n| `unsupported_scope` | Capacidade ausente no servidor | **STOP** — reportar verbatim |\n\n**Disciplina obrigatória após `ready_for_codegen`:**\n\n- O `citation_map` devolvido é o **mundo fechado** de IDs válidos — não inventar IDs.\n- Preencher `security_rationale.decisions[].cited_ids` com pelo menos 1 ID por decisão não-trivial.\n- Preencher `security_rationale.validations[]` (validações concretas implementadas).\n- Preencher `security_rationale.expected_evidence[]` (artefactos para o reviewer — código sozinho **não** é evidência).\n- Preencher `security_rationale.residual_risk` (o que não foi endereçado).\n- Sinalizar `completeness_report.m_recall < 1.0` ao utilizador (cobertura parcial).\n\nVer guia detalhado em [Caso de uso — codegen grounded](./casos-uso/codegen-grounded) e no resource [`sbd://toe/grounded-codegen-guide`](./06-resources-prompts.md#sbdtoegrounded-codegen-guide).\n\n---", "title": "`prepare_sbd_toe_codegen_context`", "traceability": {"line_end":
|
|
3863
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode", "relation_hints": [], "section_path": ["Tools — referência completa", "SETUP mode"], "size_estimate": {"approx_tokens": 7, "chars": 25}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## SETUP mode", "title": "SETUP mode", "traceability": {"line_end":
|
|
3864
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode--generate-sbd-toe-skill", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode--generate-sbd-toe-skill", "relation_hints": [], "section_path": ["Tools — referência completa", "SETUP mode", "`generate_sbd_toe_skill`"], "size_estimate": {"approx_tokens": 300, "chars": 1200}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `generate_sbd_toe_skill`\n\nGera conteúdo de configuração para o cliente. **Sem `role`** devolve o *agent guide* canónico (`sbd://toe/agent-guide`); **com `role`** devolve uma *skill* ou *subagent* especializado no *slice* desse papel.\n\n**Parâmetros:**\n- `role` (opcional) — uma das **13 personas canónicas** (aliases resolvem; papel desconhecido → erro com a lista das 13).\n- `format` (`skill` | `subagent`) — `skill` = ficheiro de orientação (`.claude/skills/…`); `subagent` = definição de agente instalável (`.claude/agents/…`).\n- `flavour` (`harnessed` | `skilled`) — `harnessed` (default) embebe as tools `mcp__sbd-toe__*` (consulta o manual ao vivo); `skilled` embebe o *slice* congelado, **sem** tools live (offline).\n- `risk_level` (default `L2`), `phase`, `include_detail`, `clientType` — opcionais.\n\n**Output:** `content` (markdown) + `suggested_path` + `meta.coverage{chapters, of_total_chapters, assignments, user_stories, checklist_items}` — a cobertura é **declarada** (\"nothing silently truncated\").\n\nResources paralelos: `sbd://toe/skill/{role}` e `sbd://toe/subagent/{role}` devolvem o mesmo conteúdo.\n\nVer [Skills e agentes](./04-skills-agentes.md).\n\n---", "title": "`generate_sbd_toe_skill`", "traceability": {"line_end":
|
|
3865
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode--setup-sbd-toe-agent-prompt", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode--setup-sbd-toe-agent-prompt", "relation_hints": [], "section_path": ["Tools — referência completa", "SETUP mode", "`setup_sbd_toe_agent` (prompt)"], "size_estimate": {"approx_tokens": 64, "chars": 255}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `setup_sbd_toe_agent` (prompt)\n\nTecnicamente um *prompt*, não uma *tool* — mas funciona como inicializador da sessão.\n\n**Parâmetros:** `riskLevel`, `projectRole`\n\n**Output:** capítulos activos + regras específicas.\n\n---", "title": "`setup_sbd_toe_agent` (prompt)", "traceability": {"line_end":
|
|
3866
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)"], "size_estimate": {"approx_tokens": 89, "chars": 355}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Implementation view (V5)\n\nEstas tools respondem a **\"como pôr de pé e governar o SbD\"** — distinta da vista operacional (\"o que fazer em cada fase do SDLC\"). Todas são *coverage-preserving* (paginação com `coverage.hasMore`/`nextOffset`; nada truncado em silêncio) e devolvem uma banda `next` com os próximos passos sugeridos.", "title": "Implementation view (V5)", "traceability": {"line_end":
|
|
3867
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-chapter-implementation-checklist", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-chapter-implementation-checklist", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`get_sbd_toe_chapter_implementation_checklist`"], "size_estimate": {"approx_tokens": 107, "chars": 426}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_sbd_toe_chapter_implementation_checklist`\n\nA narrativa de implementação canon/20 de um capítulo (o \"como implementar\"), distinta do DoD estruturado de *user story* (esse está em `get_guide_by_role(include_detail=true)`).\n\n**Parâmetros:** `chapter` (id ou número), `risk_level?`, `limit?`, `offset?`\n**Output:** `data.items[]` (prosa com `chunk_id` rastreável) + `next`.", "title": "`get_sbd_toe_chapter_implementation_checklist`", "traceability": {"line_end":
|
|
3868
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-operating-model", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-operating-model", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`get_sbd_toe_operating_model`"], "size_estimate": {"approx_tokens": 88, "chars": 352}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_sbd_toe_operating_model`\n\nRACI, *decision-rights*, cadências de governança e modelos de organização, promovidos do *rollout playbook*.\n\n**Parâmetros:** `orgScope?`, `limit?`, `offset?`\n**Output:** `data.sections[]` (prosa, paginado). Declara a fronteira: **não prescreve organigrama** (varia por setor/dimensão).", "title": "`get_sbd_toe_operating_model`", "traceability": {"line_end":
|
|
3869
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--plan-sbd-toe-rollout", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--plan-sbd-toe-rollout", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`plan_sbd_toe_rollout`"], "size_estimate": {"approx_tokens": 90, "chars": 357}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `plan_sbd_toe_rollout`\n\nRoadmap por fases — as fases canónicas do ciclo de vida mapeadas a capítulos.\n\n**Parâmetros:** `orgProfile?`, `horizon?`, `limit?`, `offset?`\n**Output:** `data.phases[]` (`order`, `phase_id`, `label`, `chapter`), `model: \"phase-ordered-mvp\"`. O DAG de dependências é **deferido** (declarado, não fingido).", "title": "`plan_sbd_toe_rollout`", "traceability": {"line_end":
|
|
3870
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-verification-matrix", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-verification-matrix", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`get_sbd_toe_verification_matrix`"], "size_estimate": {"approx_tokens": 146, "chars": 581}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_sbd_toe_verification_matrix`\n\nO lado **EXPECTED** da verificação: por requisito/controlo, o método de validação + evidência esperada + referência a *EvidencePattern*. Complemento determinístico do auditor e do plano de testes.\n\n**Parâmetros:** `risk_level` (obrigatório), `limit?`, `offset?`\n**Output:** `data.rows[]` (`evidence_pattern_id` `EP-*`, `requirement_id`, `control_id`, `validation_method`, `expected_evidence`, `evidence_type`, `expected_artifact_type_ids[]`, `source`) + `coverage_gaps` (requisitos sem padrão — declarados).", "title": "`get_sbd_toe_verification_matrix`", "traceability": {"line_end":
|
|
3871
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--assess-sbd-toe-implementation", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--assess-sbd-toe-implementation", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`assess_sbd_toe_implementation`"], "size_estimate": {"approx_tokens": 164, "chars": 653}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `assess_sbd_toe_implementation`\n\nAuto-relato de postura: compara valores de KPI submetidos contra os *thresholds* por nível.\n\n**Parâmetros:** `kpi_values` (mapa `metric_id`→número), `risk_level`\n**Output:** `posture` (`below`/`at`/`above`) + `totals{applicable, meets, gaps, not_reported}` + `per_kpi` + `unknown_metrics`. **Stateless** (nada é guardado); um KPI aplicável sem valor é `not_reported`, **nunca** *pass*.\n\n:::note Payload\nDevolve os KPIs aplicáveis **todos** (sem paginação) — em L2 são ~92, o que torna o output grande. Submeter os `kpi_values` que se tem; os em falta vêm marcados `not_reported`.\n:::", "title": "`assess_sbd_toe_implementation`", "traceability": {"line_end":
|
|
3872
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--map-sbd-toe-regulatory-activation", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--map-sbd-toe-regulatory-activation", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`map_sbd_toe_regulatory_activation`"], "size_estimate": {"approx_tokens": 133, "chars": 532}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `map_sbd_toe_regulatory_activation`\n\nLente regulatória (o inverso da *provenance*): dado um *framework*, que áreas/capítulos do manual ele activa.\n\n**Parâmetros:** `framework` (`DORA` | `NIS2` | `CRA` | `RGPD`; ou `EXT-DORA`…), `limit?`, `offset?`\n**Output:** `data.activated[]` por capítulo (`mapping_count`, `obligation_count`, `by_target_type`, `example_citation`) + `totals`. *Framework* desconhecido → erro `-32602`. Provenance declara: **cross-check ≠ atestação de conformidade**.\n\n---", "title": "`map_sbd_toe_regulatory_activation`", "traceability": {"line_end":
|
|
3873
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--diagnostico", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--diagnostico", "relation_hints": [], "section_path": ["Tools — referência completa", "Diagnóstico"], "size_estimate": {"approx_tokens": 7, "chars": 27}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Diagnóstico", "title": "Diagnóstico", "traceability": {"line_end":
|
|
3874
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--diagnostico--inspect-sbd-toe-retrieval", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--diagnostico--inspect-sbd-toe-retrieval", "relation_hints": [], "section_path": ["Tools — referência completa", "Diagnóstico", "`inspect_sbd_toe_retrieval`"], "size_estimate": {"approx_tokens": 49, "chars": 196}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `inspect_sbd_toe_retrieval`\n\nDiagnóstico do retriever — útil quando uma query devolve resultados inesperados. Mostra ranking, scores, e *rule_trace* completo.\n\n---", "title": "`inspect_sbd_toe_retrieval`", "traceability": {"line_end":
|
|
3875
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados"], "size_estimate": {"approx_tokens": 19, "chars": 75}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Combinatória — padrões recomendados", "title": "Combinatória — padrões recomendados", "traceability": {"line_end":
|
|
3876
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pergunta-estruturada", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pergunta-estruturada", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados", "Pergunta estruturada"], "size_estimate": {"approx_tokens": 25, "chars": 99}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Pergunta estruturada\n\n```\nconsult_security_requirements(L2, [\"auth\"])\n```", "title": "Pergunta estruturada", "traceability": {"line_end":
|
|
3877
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pergunta-narrativa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pergunta-narrativa", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados", "Pergunta narrativa"], "size_estimate": {"approx_tokens": 25, "chars": 99}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Pergunta narrativa\n\n```\nsearch_sbd_toe_manual(\"threat modeling stride\")\n```", "title": "Pergunta narrativa", "traceability": {"line_end":
|
|
3878
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--resposta-complexa-threat-model-security-plan", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--resposta-complexa-threat-model-security-plan", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados", "Resposta complexa (threat model / security plan)"], "size_estimate": {"approx_tokens": 93, "chars": 371}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Resposta complexa (threat model / security plan)\n\n```\n1. consult_security_requirements(L2, concerns) # requisitos + controlos\n2. get_threat_landscape(L2, concerns) # threats relevantes\n3. get_guide_by_role(L2, role) # práticas do role\n4. → gerar documento citando IDs dos 3 passos\n```", "title": "Resposta complexa (threat model / security plan)", "traceability": {"line_end":
|
|
3879
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pr-review", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pr-review", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados", "PR review"], "size_estimate": {"approx_tokens": 57, "chars": 226}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### PR review\n\n```\n1. map_sbd_toe_review_scope(changed_files) # que capítulos\n2. consult_security_requirements(risk_level, concerns) # controlos activos\n3. → enumerar findings citando CTRL-* + chapter_id\n```", "title": "PR review", "traceability": {"line_end":
|
|
3880
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--codegen-grounded", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--codegen-grounded", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados", "Codegen grounded"], "size_estimate": {"approx_tokens": 55, "chars": 220}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Codegen grounded\n\n```\n1. prepare_sbd_toe_codegen_context(task, mode=\"codegen\", ...)\n2. ramificar por status (ver tabela acima)\n3. se ready_for_codegen → gerar código + tests + security_rationale\n```", "title": "Codegen grounded", "traceability": {"line_end":
|
|
3881
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--a-seguir", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--a-seguir", "relation_hints": [], "section_path": ["Tools — referência completa", "A seguir"], "size_estimate": {"approx_tokens": 37, "chars": 147}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## A seguir\n\n[Resources e prompts](./06-resources-prompts.md) — URIs `sbd://toe/*` para *grounding* estrutural e prompts pré-empacotados.", "title": "A seguir", "traceability": {"line_end":
|
|
3850
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--consult-security-requirements", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": ["application-security-requirements"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["AUT-001", "REQ-AGN-001"]}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--consult-security-requirements", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`consult_security_requirements`"], "size_estimate": {"approx_tokens": 554, "chars": 2215}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `consult_security_requirements`\n\n**Determinístico**. Devolve o conjunto de requisitos + controlos activos para um *risk level*, opcionalmente filtrado por *concerns*.\n\n**Parâmetros:**\n- `risk_level` (`L1` | `L2` | `L3`) — obrigatório\n- `concerns` (string[]) — opcional, valores do **enum fechado** abaixo\n\n**Enum de `concerns` (fechado — 13 valores exatos):**\n`auth` · `logging` · `validation` · `api` · `config` · `integrity` · `distribution` · `ide` · `requirements` · `architecture` · `iac` · `encryption` · `agents`.\n\nValores fora deste enum **não resolvem** (não há *fuzzy match*): usar `logging` para monitorização, `distribution` para *supply-chain* / terceiros, `agents` para os requisitos de agentes AI (`REQ-AGN-001…004`).\n\n**Output:** (formatos de id reais — requisitos `<CAT>-NNN`, controlos `CTRL-<domain>-<slug>-<hash>`)\n```json\n{\n \"requirements\": [{\"requirement_id\": \"AUT-001\", \"name\": \"MFA obrigatório\", \"category\": \"AUT\", \"type\": \"base\"}],\n \"controls\": [{\n \"control_id\": \"CTRL-identity-gestao-de-identidades-acessos-e-ownership-d0919c69af\",\n \"name\": \"Gestão de identidades, acessos e ownership\",\n \"domain\": \"identity\", \"control_type\": \"preventive\",\n \"chapter_ids\": [\"08-iac-infraestrutura\", \"14-governanca-contratacao\"],\n \"_confidence\": \"direct\"\n }],\n \"active_domains\": [\"identity\", \"governance\", \"infrastructure\"],\n \"active_categories\": [\"ACC\", \"ARC\", \"AUT\", \"SES\"],\n \"rule_trace\": [\n \"REQUIREMENT_APPLIES_BY_RISK(risk_level=L2): 39 requirements active\",\n \"CONCERNS_FILTER_REQUIREMENTS(concerns=[auth])\"\n ],\n \"coverage_gaps\": {\n \"requirements_without_control_link\": {\"count\": 0, \"requirement_ids\": [], \"note\": \"…\"}\n }\n}\n```\n\n`coverage_gaps.requirements_without_control_link` é **sempre devolvido** (hoje `count: 0` em L1, L2 e L3): declara os requisitos activos sem entrada em `requirement_control_links` — uma lacuna declarada, não uma ausência de obrigação (o requisito é servido; os controlos são, no máximo, derivados por domínio, `_confidence: \"derived\"`).\n\n**Tamanhos típicos:** L1 ≈ 22k chars · L2 ≈ 36k chars · L3 ≈ 36k chars.\n**Regra prática:** **sempre** passar `concerns` em L2/L3 (reduz para ~9k por *concern set*).", "title": "`consult_security_requirements`", "traceability": {"line_end": 91, "line_start": 51, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--consult-security-requirements"}, "vector_text": "`consult_security_requirements`\n\n### `consult_security_requirements`\n\n**Determinístico**. Devolve o conjunto de requisitos + controlos activos para um *risk level*, opcionalmente filtrado por *concerns*.\n\n**Parâmetros:**\n- `risk_level` (`L1` | `L2` | `L3`) — obrigatório\n- `concerns` (string[]) — opcional, valores do **enum fechado** abaixo\n\n**Enum de `concerns` (fechado — 13 valores exatos):**\n`auth` · `logging` · `validation` · `api` · `config` · `integrity` · `distribution` · `ide` · `requirements` · `architecture` · `iac` · `encryption` · `agents`.\n\nValores fora deste enum **não resolvem** (não há *fuzzy match*): usar `logging` para monitorização, `distribution` para *supply-chain* / terceiros, `agents` para os requisitos de agentes AI (`REQ-AGN-001…004`).\n\n**Output:** (formatos de id reais — requisitos `<CAT>-NNN`, controlos `CTRL-<domain>-<slug>-<hash>`)\n```json\n{\n \"requirements\": [{\"requirement_id\": \"AUT-001\", \"name\": \"MFA obrigatório\", \"category\": \"AUT\", \"type\": \"base\"}],\n \"controls\": [{\n \"control_id\": \"CTRL-identity-gestao-de-identidades-acessos-e-ownership-d0919c69af\",\n \"name\": \"Gestão de identidades, acessos e ownership\",\n \"domain\": \"identity\", \"control_type\": \"preventive\",\n \"chapter_ids\": [\"08-iac-infraestrutura\", \"14-governanca-contratacao\"],\n \"_confidence\": \"direct\"\n }],\n \"active_domains\": [\"identity\", \"governance\", \"infrastructure\"],\n \"active_categories\": [\"ACC\", \"ARC\", \"AUT\", \"SES\"],\n \"rule_trace\": [\n \"REQUIREMENT_APPLIES_BY_RISK(risk_level=L2): 39 requirements active\",\n \"CONCERNS_FILTER_REQUIREMENTS(concerns=[auth])\"\n ],\n \"coverage_gaps\": {\n \"requirements_without_control_link\": {\"count\": 0, \"requirement_ids\": [], \"note\": \"…\"}\n }\n}\n```\n\n`coverage_gaps.requirements_without_control_link` é **sempre devolvido** (hoje `count: 0` em L1, L2 e L3): declara os requisitos activos sem entrada em `requirement_control_links` — uma lacuna declarada, não uma ausência de obrigação (o requisito é servido; os controlos são, no máximo, derivados por domínio, `_confidence: \"derived\"`).\n\n**Tamanhos típicos:** L1 ≈ 22k chars · L2 ≈ 36k chars · L3 ≈ 36k chars.\n**Regra prática:** **sempre** passar `concerns` em L2/L3 (reduz para ~9k por *concern set*)."}
|
|
3851
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--consult-security-requirements--exemplo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--consult-security-requirements--exemplo", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`consult_security_requirements`", "Exemplo"], "size_estimate": {"approx_tokens": 68, "chars": 271}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "#### Exemplo\n\n```json\nconsult_security_requirements({\"risk_level\": \"L2\", \"concerns\": [\"auth\", \"logging\"]})\n```\n\nDevolve apenas requisitos das categorias **AUT/ACC/SES** (auth) + **LOG** (logging), com `rule_trace` a confirmar `CONCERNS_FILTER_REQUIREMENTS`.\n\n---", "title": "Exemplo", "traceability": {"line_end": 101, "line_start": 92, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--consult-security-requirements--exemplo"}, "vector_text": "Exemplo\n\n#### Exemplo\n\n```json\nconsult_security_requirements({\"risk_level\": \"L2\", \"concerns\": [\"auth\", \"logging\"]})\n```\n\nDevolve apenas requisitos das categorias **AUT/ACC/SES** (auth) + **LOG** (logging), com `rule_trace` a confirmar `CONCERNS_FILTER_REQUIREMENTS`.\n\n---"}
|
|
3852
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--map-sbd-toe-applicability", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--map-sbd-toe-applicability", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`map_sbd_toe_applicability`"], "size_estimate": {"approx_tokens": 92, "chars": 365}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `map_sbd_toe_applicability`\n\nQue capítulos / controlos se aplicam ao projecto dado o seu perfil.\n\n**Parâmetros:** atributos do projecto (exposição, dados, *stack*, regulação aplicável).\n\n**Output:** capítulos activos/condicionais/excluídos + *rationale*.\n\n**Quando preferir:** decidir *risk level* ou perfilar um projecto novo.\n\n---", "title": "`map_sbd_toe_applicability`", "traceability": {"line_end": 113, "line_start": 102, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--map-sbd-toe-applicability"}, "vector_text": "`map_sbd_toe_applicability`\n\n### `map_sbd_toe_applicability`\n\nQue capítulos / controlos se aplicam ao projecto dado o seu perfil.\n\n**Parâmetros:** atributos do projecto (exposição, dados, *stack*, regulação aplicável).\n\n**Output:** capítulos activos/condicionais/excluídos + *rationale*.\n\n**Quando preferir:** decidir *risk level* ou perfilar um projecto novo.\n\n---"}
|
|
3853
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--get-sbd-toe-chapter-brief", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--get-sbd-toe-chapter-brief", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`get_sbd_toe_chapter_brief`"], "size_estimate": {"approx_tokens": 68, "chars": 272}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_sbd_toe_chapter_brief`\n\nResumo estruturado de um capítulo — fases, artefactos (`ART-*`), tópicos.\n\n**Parâmetros:** `chapter_id` (ex.: `06-desenvolvimento-seguro`)\n\n**Output:** `phases`, `artifact_ids[]`, `topics[]`, `controls[]`.\n\n---", "title": "`get_sbd_toe_chapter_brief`", "traceability": {"line_end": 123, "line_start": 114, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--get-sbd-toe-chapter-brief"}, "vector_text": "`get_sbd_toe_chapter_brief`\n\n### `get_sbd_toe_chapter_brief`\n\nResumo estruturado de um capítulo — fases, artefactos (`ART-*`), tópicos.\n\n**Parâmetros:** `chapter_id` (ex.: `06-desenvolvimento-seguro`)\n\n**Output:** `phases`, `artifact_ids[]`, `topics[]`, `controls[]`.\n\n---"}
|
|
3854
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--list-sbd-toe-chapters", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--list-sbd-toe-chapters", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`list_sbd_toe_chapters`"], "size_estimate": {"approx_tokens": 41, "chars": 164}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `list_sbd_toe_chapters`\n\nÍndice — `chapter_id`, `title`, `min_level`, `domains`.\n\n**Parâmetros:** `risk_level` (opcional — filtra)\n\n---", "title": "`list_sbd_toe_chapters`", "traceability": {"line_end": 131, "line_start": 124, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--list-sbd-toe-chapters"}, "vector_text": "`list_sbd_toe_chapters`\n\n### `list_sbd_toe_chapters`\n\nÍndice — `chapter_id`, `title`, `min_level`, `domains`.\n\n**Parâmetros:** `risk_level` (opcional — filtra)\n\n---"}
|
|
3855
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--query-sbd-toe-entities", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": ["application-security-requirements"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["AUT-001", "LOG-003", "REQ-010"]}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--query-sbd-toe-entities", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`query_sbd_toe_entities`"], "size_estimate": {"approx_tokens": 573, "chars": 2290}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `query_sbd_toe_entities`\n\nResolve uma entidade por **id exato** ou, se o token não for um id, faz *fallback* para busca semântica.\n\n**Parâmetros:** `query` (string, obrigatório); `entityType`, `chapterId`, `riskLevel`, `topK` (opcionais)\n\n**Exemplo (id exato):**\n\n```json\nquery_sbd_toe_entities({\"query\": \"AUT-001\"})\n```\n```json\n{\n \"entities\": [{\n \"entity_type\": \"requirement\", \"requirement_id\": \"AUT-001\",\n \"category\": \"AUT\", \"name\": \"MFA obrigatório\",\n \"applicable_levels\": {\"L1\": false, \"L2\": true, \"L3\": true},\n \"source_bundle\": \"02-requisitos-seguranca\"\n }],\n \"total\": 1, \"match\": \"exact_id\"\n}\n```\n\n:::warning Erro de categoria comum\nUm token como `\"CTRL-06\"` **não é um id** — não existe a forma `CTRL-<capítulo>-<número>`. Passá-lo **não** devolve \"os controlos do capítulo 06\"; cai em *fallback* semântico (`match` ≠ `\"exact_id\"`). Os ids reais são `AUT-001`, `LOG-003` (requisitos), `CTRL-<domain>-<slug>-<hash>` (controlos), `MT-NNN` (ameaças), `ART-…` (artefactos). Para **filtrar por tipo/domínio** (em vez de resolver um id), usar `resolve_entities`.\n:::\n\n**`citation_note` e `declared_gap`.** A gramática de IDs de requisito é *fullmatch* — `^(?:REQ-[A-Z]{3}-\\d{3}|[A-Z]{3}-\\d{3})$`; identificadores `EX-…` são ilustrativos e nunca resolvem. Um `REQ-NNN` que o manual cita como exemplo mas não existe no catálogo (ex.: `REQ-010`, num exemplo do Cap. 02) devolve `entities` por *fallback* semântico **e** uma `citation_note` com `status: \"informative\"` e `cited_in` (onde é citado) — informativo, não é *gap*, e nunca é resolvido por aproximação a outro requisito. Citações legadas com a forma `REQ-<CAT>-NNN` devolvem `declared_gap`; hoje não existem no manual e o campo não aparece.\n\n```json\nquery_sbd_toe_entities({\"query\": \"REQ-010\"})\n// → \"citation_note\": {\n// \"requirement_id\": \"REQ-010\", \"status\": \"informative\",\n// \"note\": \"`REQ-010` não é um requisito publicado: o Manual cita-o como identificador ilustrativo de exemplo ou é um token não-requisito com a forma <CAT>-NNN (CWE-, SHA-, …). Informativo, não é um gap; nunca resolvido por aproximação a outro requisito.\",\n// \"cited_in\": {\"mention_count\": 2, \"document_ids\": [\"010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao\"]}\n// }\n```\n\n---", "title": "`query_sbd_toe_entities`", "traceability": {"line_end": 171, "line_start": 132, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--query-sbd-toe-entities"}, "vector_text": "`query_sbd_toe_entities`\n\n### `query_sbd_toe_entities`\n\nResolve uma entidade por **id exato** ou, se o token não for um id, faz *fallback* para busca semântica.\n\n**Parâmetros:** `query` (string, obrigatório); `entityType`, `chapterId`, `riskLevel`, `topK` (opcionais)\n\n**Exemplo (id exato):**\n\n```json\nquery_sbd_toe_entities({\"query\": \"AUT-001\"})\n```\n```json\n{\n \"entities\": [{\n \"entity_type\": \"requirement\", \"requirement_id\": \"AUT-001\",\n \"category\": \"AUT\", \"name\": \"MFA obrigatório\",\n \"applicable_levels\": {\"L1\": false, \"L2\": true, \"L3\": true},\n \"source_bundle\": \"02-requisitos-seguranca\"\n }],\n \"total\": 1, \"match\": \"exact_id\"\n}\n```\n\n:::warning Erro de categoria comum\nUm token como `\"CTRL-06\"` **não é um id** — não existe a forma `CTRL-<capítulo>-<número>`. Passá-lo **não** devolve \"os controlos do capítulo 06\"; cai em *fallback* semântico (`match` ≠ `\"exact_id\"`). Os ids reais são `AUT-001`, `LOG-003` (requisitos), `CTRL-<domain>-<slug>-<hash>` (controlos), `MT-NNN` (ameaças), `ART-…` (artefactos). Para **filtrar por tipo/domínio** (em vez de resolver um id), usar `resolve_entities`.\n:::\n\n**`citation_note` e `declared_gap`.** A gramática de IDs de requisito é *fullmatch* — `^(?:REQ-[A-Z]{3}-\\d{3}|[A-Z]{3}-\\d{3})$`; identificadores `EX-…` são ilustrativos e nunca resolvem. Um `REQ-NNN` que o manual cita como exemplo mas não existe no catálogo (ex.: `REQ-010`, num exemplo do Cap. 02) devolve `entities` por *fallback* semântico **e** uma `citation_note` com `status: \"informative\"` e `cited_in` (onde é citado) — informativo, não é *gap*, e nunca é resolvido por aproximação a outro requisito. Citações legadas com a forma `REQ-<CAT>-NNN` devolvem `declared_gap`; hoje não existem no manual e o campo não aparece.\n\n```json\nquery_sbd_toe_entities({\"query\": \"REQ-010\"})\n// → \"citation_note\": {\n// \"requirement_id\": \"REQ-010\", \"status\": \"informative\",\n// \"note\": \"`REQ-010` não é um requisito publicado: o Manual cita-o como identificador ilustrativo de exemplo ou é um token não-requisito com a forma <CAT>-NNN (CWE-, SHA-, …). Informativo, não é um gap; nunca resolvido por aproximação a outro requisito.\",\n// \"cited_in\": {\"mention_count\": 2, \"document_ids\": [\"010-sbd-manual-02-requisitos-seguranca-addon-15-exemplos-aplicacao\"]}\n// }\n```\n\n---"}
|
|
3856
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--resolve-entities", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {"Requirement": ["REQ-010"]}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--resolve-entities", "relation_hints": [], "section_path": ["Tools — referência completa", "CONSULT mode", "`resolve_entities`"], "size_estimate": {"approx_tokens": 167, "chars": 665}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `resolve_entities`\n\nFiltro de baixo nível sobre a ontologia — *dot-notation* nos `filters`.\n\n**Parâmetros:** `record_type` (`control` | `requirement` | `role` | `practice`), `filters` (objecto *dot-path*), `limit` (opcional)\n\n**Exemplos:**\n\n```json\nresolve_entities({\"record_type\": \"role\"})\n// → lista os 13 roles canónicos\n\nresolve_entities({\"record_type\": \"control\", \"filters\": {\"domain\": \"architecture\"}})\n// → controlos do domínio architecture\n\nresolve_entities({\"record_type\": \"requirement\", \"filters\": {\"requirement_id\": \"REQ-010\"}})\n// → total: 0, com meta.note idêntica à citation_note (identificador ilustrativo; não é gap)\n```\n\n---", "title": "`resolve_entities`", "traceability": {"line_end": 192, "line_start": 172, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--consult-mode--resolve-entities"}, "vector_text": "`resolve_entities`\n\n### `resolve_entities`\n\nFiltro de baixo nível sobre a ontologia — *dot-notation* nos `filters`.\n\n**Parâmetros:** `record_type` (`control` | `requirement` | `role` | `practice`), `filters` (objecto *dot-path*), `limit` (opcional)\n\n**Exemplos:**\n\n```json\nresolve_entities({\"record_type\": \"role\"})\n// → lista os 13 roles canónicos\n\nresolve_entities({\"record_type\": \"control\", \"filters\": {\"domain\": \"architecture\"}})\n// → controlos do domínio architecture\n\nresolve_entities({\"record_type\": \"requirement\", \"filters\": {\"requirement_id\": \"REQ-010\"}})\n// → total: 0, com meta.note idêntica à citation_note (identificador ilustrativo; não é gap)\n```\n\n---"}
|
|
3857
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode"], "size_estimate": {"approx_tokens": 7, "chars": 25}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## GUIDE mode", "title": "GUIDE mode", "traceability": {"line_end": 194, "line_start": 193, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode"}, "vector_text": "GUIDE mode\n\n## GUIDE mode"}
|
|
3858
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--get-guide-by-role", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--get-guide-by-role", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode", "`get_guide_by_role`"], "size_estimate": {"approx_tokens": 157, "chars": 628}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_guide_by_role`\n\n**Determinístico**. Práticas atribuídas por *role* e/ou fase do SDLC.\n\n**Parâmetros:**\n- `risk_level` (`L1` | `L2` | `L3`) — obrigatório\n- `role` (string) — opcional\n- `phase` (string) — opcional (`requirements` | `design` | `implement` | `test` | `deploy` | `operate` | `governance`)\n\n**Output sem `role`/`phase`:** `role_summary{}` + `phase_summary{}` (contagens) — útil para discovery.\n**Output com `role` ou `phase`:** `assignments[]` + *user stories*.\n\n**Regra crítica:** **sempre passar `role` ou `phase`** para obter detalhes — sem nenhum dos dois, devolve só contagens.\n\n---", "title": "`get_guide_by_role`", "traceability": {"line_end": 210, "line_start": 195, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--get-guide-by-role"}, "vector_text": "`get_guide_by_role`\n\n### `get_guide_by_role`\n\n**Determinístico**. Práticas atribuídas por *role* e/ou fase do SDLC.\n\n**Parâmetros:**\n- `risk_level` (`L1` | `L2` | `L3`) — obrigatório\n- `role` (string) — opcional\n- `phase` (string) — opcional (`requirements` | `design` | `implement` | `test` | `deploy` | `operate` | `governance`)\n\n**Output sem `role`/`phase`:** `role_summary{}` + `phase_summary{}` (contagens) — útil para discovery.\n**Output com `role` ou `phase`:** `assignments[]` + *user stories*.\n\n**Regra crítica:** **sempre passar `role` ou `phase`** para obter detalhes — sem nenhum dos dois, devolve só contagens.\n\n---"}
|
|
3859
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--get-threat-landscape", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {"Threat": ["MT-021", "MT-055"]}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--get-threat-landscape", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode", "`get_threat_landscape`"], "size_estimate": {"approx_tokens": 424, "chars": 1693}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_threat_landscape`\n\n**Determinístico**. *Threats* relevantes para um *risk level* / *concern*, com mitigações.\n\n**Parâmetros:**\n- `risk_level` (`L1` | `L2` | `L3`) — obrigatório\n- `concerns` (string[]) — opcional\n\n**Output:** (ameaças `MT-NNN`; cada ligação cita o `control_id` real)\n```json\n{\n \"threats\": [\n {\n \"id\": \"MT-055\", \"name\": \"Interfaces expostas sem isolamento\",\n \"chapter_id\": \"04-arquitetura-segura\", \"threat_category\": \"STRIDE\",\n \"mitigation_confidence\": \"derived\", \"mitigation_strength\": \"parcial\",\n \"mitigated_by\": [\n {\"control_id\": \"CTRL-infrastructure-segmentacao-e-controlo-arquitetural-dceb3c1f0b\", \"domain\": \"infrastructure\"}\n ]\n }\n ]\n}\n```\n\n**Importante:**\n- `mitigation_confidence: \"derived\"` → ligação estrutural (chapter/bundle-match), fiável; `mitigation_strength` é tipicamente `\"parcial\"`. (Não há valor `\"heuristic\"` nas ligações estruturais — se aparecer um *fallback* heurístico, rotular como inferido.)\n- A tool **corre `consult` internamente** — não chamar `consult_security_requirements` antes.\n\n:::warning Limitação de *routing* conhecida (à data desta versão)\nOs *concerns* de **base** (`auth`, `validation`, `api`, …) roteiam para o **cap. 02** e devolvem as meta-ameaças de processo `MT-021..038` (ausência/ambiguidade de requisitos), **não** as ameaças técnicas do domínio. Os *concerns* de **domínio** roteiam bem: `architecture`→cap. 04 (`MT-055..072`), `iac`→cap. 08, `logging`→cap. 12. Para ameaças técnicas de auth/validação, ancorar antes nos **requisitos** (`consult_security_requirements`) e cruzar. *(Fix em curso no servidor — verificar o comportamento ao vivo.)*\n:::\n\n---", "title": "`get_threat_landscape`", "traceability": {"line_end": 244, "line_start": 211, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--get-threat-landscape"}, "vector_text": "`get_threat_landscape`\n\n### `get_threat_landscape`\n\n**Determinístico**. *Threats* relevantes para um *risk level* / *concern*, com mitigações.\n\n**Parâmetros:**\n- `risk_level` (`L1` | `L2` | `L3`) — obrigatório\n- `concerns` (string[]) — opcional\n\n**Output:** (ameaças `MT-NNN`; cada ligação cita o `control_id` real)\n```json\n{\n \"threats\": [\n {\n \"id\": \"MT-055\", \"name\": \"Interfaces expostas sem isolamento\",\n \"chapter_id\": \"04-arquitetura-segura\", \"threat_category\": \"STRIDE\",\n \"mitigation_confidence\": \"derived\", \"mitigation_strength\": \"parcial\",\n \"mitigated_by\": [\n {\"control_id\": \"CTRL-infrastructure-segmentacao-e-controlo-arquitetural-dceb3c1f0b\", \"domain\": \"infrastructure\"}\n ]\n }\n ]\n}\n```\n\n**Importante:**\n- `mitigation_confidence: \"derived\"` → ligação estrutural (chapter/bundle-match), fiável; `mitigation_strength` é tipicamente `\"parcial\"`. (Não há valor `\"heuristic\"` nas ligações estruturais — se aparecer um *fallback* heurístico, rotular como inferido.)\n- A tool **corre `consult` internamente** — não chamar `consult_security_requirements` antes.\n\n:::warning Limitação de *routing* conhecida (à data desta versão)\nOs *concerns* de **base** (`auth`, `validation`, `api`, …) roteiam para o **cap. 02** e devolvem as meta-ameaças de processo `MT-021..038` (ausência/ambiguidade de requisitos), **não** as ameaças técnicas do domínio. Os *concerns* de **domínio** roteiam bem: `architecture`→cap. 04 (`MT-055..072`), `iac`→cap. 08, `logging`→cap. 12. Para ameaças técnicas de auth/validação, ancorar antes nos **requisitos** (`consult_security_requirements`) e cruzar. *(Fix em curso no servidor — verificar o comportamento ao vivo.)*\n:::\n\n---"}
|
|
3860
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--plan-sbd-toe-repo-governance", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--plan-sbd-toe-repo-governance", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode", "`plan_sbd_toe_repo_governance`"], "size_estimate": {"approx_tokens": 93, "chars": 370}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `plan_sbd_toe_repo_governance`\n\nLista os artefactos que o manual identifica para um repositório, agrupados por capítulo.\n\n**Output:** lista de `artifact_id` + `chapter_id` + `description`.\n\n**Padrão:** *bootstrap* de governança num repo novo — gerar a partir da lista artefactos por capítulo, criar os ficheiros vazios + READMEs.\n\n---", "title": "`plan_sbd_toe_repo_governance`", "traceability": {"line_end": 254, "line_start": 245, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--plan-sbd-toe-repo-governance"}, "vector_text": "`plan_sbd_toe_repo_governance`\n\n### `plan_sbd_toe_repo_governance`\n\nLista os artefactos que o manual identifica para um repositório, agrupados por capítulo.\n\n**Output:** lista de `artifact_id` + `chapter_id` + `description`.\n\n**Padrão:** *bootstrap* de governança num repo novo — gerar a partir da lista artefactos por capítulo, criar os ficheiros vazios + READMEs.\n\n---"}
|
|
3861
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--map-sbd-toe-review-scope", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--map-sbd-toe-review-scope", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode", "`map_sbd_toe_review_scope`"], "size_estimate": {"approx_tokens": 99, "chars": 396}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `map_sbd_toe_review_scope`\n\nDado um conjunto de ficheiros alterados, devolve que **bundles do manual** rever.\n\n**Parâmetros:** `changed_files` (string[])\n\n**Output:** capítulos / bundles a rever + *rationale* (ex.: \"ficheiros sob `iac/` → cap. 08\").\n\n**Padrão:** *PR auditor*. Combinar com `consult_security_requirements` para enumerar controlos por capítulo.\n\n---", "title": "`map_sbd_toe_review_scope`", "traceability": {"line_end": 266, "line_start": 255, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--map-sbd-toe-review-scope"}, "vector_text": "`map_sbd_toe_review_scope`\n\n### `map_sbd_toe_review_scope`\n\nDado um conjunto de ficheiros alterados, devolve que **bundles do manual** rever.\n\n**Parâmetros:** `changed_files` (string[])\n\n**Output:** capítulos / bundles a rever + *rationale* (ex.: \"ficheiros sob `iac/` → cap. 08\").\n\n**Padrão:** *PR auditor*. Combinar com `consult_security_requirements` para enumerar controlos por capítulo.\n\n---"}
|
|
3862
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--prepare-sbd-toe-codegen-context", "chunk_kind": "table_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--prepare-sbd-toe-codegen-context", "relation_hints": [], "section_path": ["Tools — referência completa", "GUIDE mode", "`prepare_sbd_toe_codegen_context`"], "size_estimate": {"approx_tokens": 426, "chars": 1704}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `prepare_sbd_toe_codegen_context`\n\nA tool **mais sofisticada** — devolve contexto determinístico para *codegen*, *review* ou *test-plan*.\n\n**Parâmetros:**\n- `task` (string) — obrigatório\n- `risk_level`, `mode` (`codegen` | `review` | `test-plan`), `stack`, `exposure`, `data_sensitivity`, `concerns`, `changed_files`, `regulatory_frameworks`, `include_regulatory_overlay` — opcionais (passar tudo que se sabe)\n\n**Output (campo `status`):**\n\n| `status` | Significado | Acção |\n|---|---|---|\n| `ready_for_codegen` | Scope claro, contexto pronto | Proceder — preencher `security_rationale` |\n| `needs_clarification` | Inputs ambíguos | **STOP** — perguntar ao utilizador, não gerar código |\n| `needs_decomposition` | Scope demasiado largo | **STOP** — propor 2–4 sub-tarefas |\n| `unsupported_scope` | Capacidade ausente no servidor | **STOP** — reportar verbatim |\n\n**Disciplina obrigatória após `ready_for_codegen`:**\n\n- O `citation_map` devolvido é o **mundo fechado** de IDs válidos — não inventar IDs.\n- Preencher `security_rationale.decisions[].cited_ids` com pelo menos 1 ID por decisão não-trivial.\n- Preencher `security_rationale.validations[]` (validações concretas implementadas).\n- Preencher `security_rationale.expected_evidence[]` (artefactos para o reviewer — código sozinho **não** é evidência).\n- Preencher `security_rationale.residual_risk` (o que não foi endereçado).\n- Sinalizar `completeness_report.m_recall < 1.0` ao utilizador (cobertura parcial).\n\nVer guia detalhado em [Caso de uso — codegen grounded](./casos-uso/codegen-grounded) e no resource [`sbd://toe/grounded-codegen-guide`](./06-resources-prompts.md#sbdtoegrounded-codegen-guide).\n\n---", "title": "`prepare_sbd_toe_codegen_context`", "traceability": {"line_end": 296, "line_start": 267, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--guide-mode--prepare-sbd-toe-codegen-context"}, "vector_text": "`prepare_sbd_toe_codegen_context`\n\n### `prepare_sbd_toe_codegen_context`\n\nA tool **mais sofisticada** — devolve contexto determinístico para *codegen*, *review* ou *test-plan*.\n\n**Parâmetros:**\n- `task` (string) — obrigatório\n- `risk_level`, `mode` (`codegen` | `review` | `test-plan`), `stack`, `exposure`, `data_sensitivity`, `concerns`, `changed_files`, `regulatory_frameworks`, `include_regulatory_overlay` — opcionais (passar tudo que se sabe)\n\n**Output (campo `status`):**\n\n| `status` | Significado | Acção |\n|---|---|---|\n| `ready_for_codegen` | Scope claro, contexto pronto | Proceder — preencher `security_rationale` |\n| `needs_clarification` | Inputs ambíguos | **STOP** — perguntar ao utilizador, não gerar código |\n| `needs_decomposition` | Scope demasiado largo | **STOP** — propor 2–4 sub-tarefas |\n| `unsupported_scope` | Capacidade ausente no servidor | **STOP** — reportar verbatim |\n\n**Disciplina obrigatória após `ready_for_codegen`:**\n\n- O `citation_map` devolvido é o **mundo fechado** de IDs válidos — não inventar IDs.\n- Preencher `security_rationale.decisions[].cited_ids` com pelo menos 1 ID por decisão não-trivial.\n- Preencher `security_rationale.validations[]` (validações concretas implementadas).\n- Preencher `security_rationale.expected_evidence[]` (artefactos para o reviewer — código sozinho **não** é evidência).\n- Preencher `security_rationale.residual_risk` (o que não foi endereçado).\n- Sinalizar `completeness_report.m_recall < 1.0` ao utilizador (cobertura parcial).\n\nVer guia detalhado em [Caso de uso — codegen grounded](./casos-uso/codegen-grounded) e no resource [`sbd://toe/grounded-codegen-guide`](./06-resources-prompts.md#sbdtoegrounded-codegen-guide).\n\n---"}
|
|
3863
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode", "relation_hints": [], "section_path": ["Tools — referência completa", "SETUP mode"], "size_estimate": {"approx_tokens": 7, "chars": 25}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## SETUP mode", "title": "SETUP mode", "traceability": {"line_end": 298, "line_start": 297, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode"}, "vector_text": "SETUP mode\n\n## SETUP mode"}
|
|
3864
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode--generate-sbd-toe-skill", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode--generate-sbd-toe-skill", "relation_hints": [], "section_path": ["Tools — referência completa", "SETUP mode", "`generate_sbd_toe_skill`"], "size_estimate": {"approx_tokens": 300, "chars": 1200}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `generate_sbd_toe_skill`\n\nGera conteúdo de configuração para o cliente. **Sem `role`** devolve o *agent guide* canónico (`sbd://toe/agent-guide`); **com `role`** devolve uma *skill* ou *subagent* especializado no *slice* desse papel.\n\n**Parâmetros:**\n- `role` (opcional) — uma das **13 personas canónicas** (aliases resolvem; papel desconhecido → erro com a lista das 13).\n- `format` (`skill` | `subagent`) — `skill` = ficheiro de orientação (`.claude/skills/…`); `subagent` = definição de agente instalável (`.claude/agents/…`).\n- `flavour` (`harnessed` | `skilled`) — `harnessed` (default) embebe as tools `mcp__sbd-toe__*` (consulta o manual ao vivo); `skilled` embebe o *slice* congelado, **sem** tools live (offline).\n- `risk_level` (default `L2`), `phase`, `include_detail`, `clientType` — opcionais.\n\n**Output:** `content` (markdown) + `suggested_path` + `meta.coverage{chapters, of_total_chapters, assignments, user_stories, checklist_items}` — a cobertura é **declarada** (\"nothing silently truncated\").\n\nResources paralelos: `sbd://toe/skill/{role}` e `sbd://toe/subagent/{role}` devolvem o mesmo conteúdo.\n\nVer [Skills e agentes](./04-skills-agentes.md).\n\n---", "title": "`generate_sbd_toe_skill`", "traceability": {"line_end": 316, "line_start": 299, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode--generate-sbd-toe-skill"}, "vector_text": "`generate_sbd_toe_skill`\n\n### `generate_sbd_toe_skill`\n\nGera conteúdo de configuração para o cliente. **Sem `role`** devolve o *agent guide* canónico (`sbd://toe/agent-guide`); **com `role`** devolve uma *skill* ou *subagent* especializado no *slice* desse papel.\n\n**Parâmetros:**\n- `role` (opcional) — uma das **13 personas canónicas** (aliases resolvem; papel desconhecido → erro com a lista das 13).\n- `format` (`skill` | `subagent`) — `skill` = ficheiro de orientação (`.claude/skills/…`); `subagent` = definição de agente instalável (`.claude/agents/…`).\n- `flavour` (`harnessed` | `skilled`) — `harnessed` (default) embebe as tools `mcp__sbd-toe__*` (consulta o manual ao vivo); `skilled` embebe o *slice* congelado, **sem** tools live (offline).\n- `risk_level` (default `L2`), `phase`, `include_detail`, `clientType` — opcionais.\n\n**Output:** `content` (markdown) + `suggested_path` + `meta.coverage{chapters, of_total_chapters, assignments, user_stories, checklist_items}` — a cobertura é **declarada** (\"nothing silently truncated\").\n\nResources paralelos: `sbd://toe/skill/{role}` e `sbd://toe/subagent/{role}` devolvem o mesmo conteúdo.\n\nVer [Skills e agentes](./04-skills-agentes.md).\n\n---"}
|
|
3865
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode--setup-sbd-toe-agent-prompt", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode--setup-sbd-toe-agent-prompt", "relation_hints": [], "section_path": ["Tools — referência completa", "SETUP mode", "`setup_sbd_toe_agent` (prompt)"], "size_estimate": {"approx_tokens": 64, "chars": 255}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `setup_sbd_toe_agent` (prompt)\n\nTecnicamente um *prompt*, não uma *tool* — mas funciona como inicializador da sessão.\n\n**Parâmetros:** `riskLevel`, `projectRole`\n\n**Output:** capítulos activos + regras específicas.\n\n---", "title": "`setup_sbd_toe_agent` (prompt)", "traceability": {"line_end": 326, "line_start": 317, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--setup-mode--setup-sbd-toe-agent-prompt"}, "vector_text": "`setup_sbd_toe_agent` (prompt)\n\n### `setup_sbd_toe_agent` (prompt)\n\nTecnicamente um *prompt*, não uma *tool* — mas funciona como inicializador da sessão.\n\n**Parâmetros:** `riskLevel`, `projectRole`\n\n**Output:** capítulos activos + regras específicas.\n\n---"}
|
|
3866
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)"], "size_estimate": {"approx_tokens": 89, "chars": 355}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Implementation view (V5)\n\nEstas tools respondem a **\"como pôr de pé e governar o SbD\"** — distinta da vista operacional (\"o que fazer em cada fase do SDLC\"). Todas são *coverage-preserving* (paginação com `coverage.hasMore`/`nextOffset`; nada truncado em silêncio) e devolvem uma banda `next` com os próximos passos sugeridos.", "title": "Implementation view (V5)", "traceability": {"line_end": 330, "line_start": 327, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5"}, "vector_text": "Implementation view (V5)\n\n## Implementation view (V5)\n\nEstas tools respondem a **\"como pôr de pé e governar o SbD\"** — distinta da vista operacional (\"o que fazer em cada fase do SDLC\"). Todas são *coverage-preserving* (paginação com `coverage.hasMore`/`nextOffset`; nada truncado em silêncio) e devolvem uma banda `next` com os próximos passos sugeridos."}
|
|
3867
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-chapter-implementation-checklist", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-chapter-implementation-checklist", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`get_sbd_toe_chapter_implementation_checklist`"], "size_estimate": {"approx_tokens": 107, "chars": 426}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_sbd_toe_chapter_implementation_checklist`\n\nA narrativa de implementação canon/20 de um capítulo (o \"como implementar\"), distinta do DoD estruturado de *user story* (esse está em `get_guide_by_role(include_detail=true)`).\n\n**Parâmetros:** `chapter` (id ou número), `risk_level?`, `limit?`, `offset?`\n**Output:** `data.items[]` (prosa com `chunk_id` rastreável) + `next`.", "title": "`get_sbd_toe_chapter_implementation_checklist`", "traceability": {"line_end": 337, "line_start": 331, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-chapter-implementation-checklist"}, "vector_text": "`get_sbd_toe_chapter_implementation_checklist`\n\n### `get_sbd_toe_chapter_implementation_checklist`\n\nA narrativa de implementação canon/20 de um capítulo (o \"como implementar\"), distinta do DoD estruturado de *user story* (esse está em `get_guide_by_role(include_detail=true)`).\n\n**Parâmetros:** `chapter` (id ou número), `risk_level?`, `limit?`, `offset?`\n**Output:** `data.items[]` (prosa com `chunk_id` rastreável) + `next`."}
|
|
3868
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-operating-model", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-operating-model", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`get_sbd_toe_operating_model`"], "size_estimate": {"approx_tokens": 88, "chars": 352}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_sbd_toe_operating_model`\n\nRACI, *decision-rights*, cadências de governança e modelos de organização, promovidos do *rollout playbook*.\n\n**Parâmetros:** `orgScope?`, `limit?`, `offset?`\n**Output:** `data.sections[]` (prosa, paginado). Declara a fronteira: **não prescreve organigrama** (varia por setor/dimensão).", "title": "`get_sbd_toe_operating_model`", "traceability": {"line_end": 344, "line_start": 338, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-operating-model"}, "vector_text": "`get_sbd_toe_operating_model`\n\n### `get_sbd_toe_operating_model`\n\nRACI, *decision-rights*, cadências de governança e modelos de organização, promovidos do *rollout playbook*.\n\n**Parâmetros:** `orgScope?`, `limit?`, `offset?`\n**Output:** `data.sections[]` (prosa, paginado). Declara a fronteira: **não prescreve organigrama** (varia por setor/dimensão)."}
|
|
3869
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--plan-sbd-toe-rollout", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--plan-sbd-toe-rollout", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`plan_sbd_toe_rollout`"], "size_estimate": {"approx_tokens": 90, "chars": 357}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `plan_sbd_toe_rollout`\n\nRoadmap por fases — as fases canónicas do ciclo de vida mapeadas a capítulos.\n\n**Parâmetros:** `orgProfile?`, `horizon?`, `limit?`, `offset?`\n**Output:** `data.phases[]` (`order`, `phase_id`, `label`, `chapter`), `model: \"phase-ordered-mvp\"`. O DAG de dependências é **deferido** (declarado, não fingido).", "title": "`plan_sbd_toe_rollout`", "traceability": {"line_end": 351, "line_start": 345, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--plan-sbd-toe-rollout"}, "vector_text": "`plan_sbd_toe_rollout`\n\n### `plan_sbd_toe_rollout`\n\nRoadmap por fases — as fases canónicas do ciclo de vida mapeadas a capítulos.\n\n**Parâmetros:** `orgProfile?`, `horizon?`, `limit?`, `offset?`\n**Output:** `data.phases[]` (`order`, `phase_id`, `label`, `chapter`), `model: \"phase-ordered-mvp\"`. O DAG de dependências é **deferido** (declarado, não fingido)."}
|
|
3870
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-verification-matrix", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-verification-matrix", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`get_sbd_toe_verification_matrix`"], "size_estimate": {"approx_tokens": 146, "chars": 581}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `get_sbd_toe_verification_matrix`\n\nO lado **EXPECTED** da verificação: por requisito/controlo, o método de validação + evidência esperada + referência a *EvidencePattern*. Complemento determinístico do auditor e do plano de testes.\n\n**Parâmetros:** `risk_level` (obrigatório), `limit?`, `offset?`\n**Output:** `data.rows[]` (`evidence_pattern_id` `EP-*`, `requirement_id`, `control_id`, `validation_method`, `expected_evidence`, `evidence_type`, `expected_artifact_type_ids[]`, `source`) + `coverage_gaps` (requisitos sem padrão — declarados).", "title": "`get_sbd_toe_verification_matrix`", "traceability": {"line_end": 358, "line_start": 352, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--get-sbd-toe-verification-matrix"}, "vector_text": "`get_sbd_toe_verification_matrix`\n\n### `get_sbd_toe_verification_matrix`\n\nO lado **EXPECTED** da verificação: por requisito/controlo, o método de validação + evidência esperada + referência a *EvidencePattern*. Complemento determinístico do auditor e do plano de testes.\n\n**Parâmetros:** `risk_level` (obrigatório), `limit?`, `offset?`\n**Output:** `data.rows[]` (`evidence_pattern_id` `EP-*`, `requirement_id`, `control_id`, `validation_method`, `expected_evidence`, `evidence_type`, `expected_artifact_type_ids[]`, `source`) + `coverage_gaps` (requisitos sem padrão — declarados)."}
|
|
3871
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--assess-sbd-toe-implementation", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--assess-sbd-toe-implementation", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`assess_sbd_toe_implementation`"], "size_estimate": {"approx_tokens": 164, "chars": 653}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `assess_sbd_toe_implementation`\n\nAuto-relato de postura: compara valores de KPI submetidos contra os *thresholds* por nível.\n\n**Parâmetros:** `kpi_values` (mapa `metric_id`→número), `risk_level`\n**Output:** `posture` (`below`/`at`/`above`) + `totals{applicable, meets, gaps, not_reported}` + `per_kpi` + `unknown_metrics`. **Stateless** (nada é guardado); um KPI aplicável sem valor é `not_reported`, **nunca** *pass*.\n\n:::note Payload\nDevolve os KPIs aplicáveis **todos** (sem paginação) — em L2 são ~92, o que torna o output grande. Submeter os `kpi_values` que se tem; os em falta vêm marcados `not_reported`.\n:::", "title": "`assess_sbd_toe_implementation`", "traceability": {"line_end": 369, "line_start": 359, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--assess-sbd-toe-implementation"}, "vector_text": "`assess_sbd_toe_implementation`\n\n### `assess_sbd_toe_implementation`\n\nAuto-relato de postura: compara valores de KPI submetidos contra os *thresholds* por nível.\n\n**Parâmetros:** `kpi_values` (mapa `metric_id`→número), `risk_level`\n**Output:** `posture` (`below`/`at`/`above`) + `totals{applicable, meets, gaps, not_reported}` + `per_kpi` + `unknown_metrics`. **Stateless** (nada é guardado); um KPI aplicável sem valor é `not_reported`, **nunca** *pass*.\n\n:::note Payload\nDevolve os KPIs aplicáveis **todos** (sem paginação) — em L2 são ~92, o que torna o output grande. Submeter os `kpi_values` que se tem; os em falta vêm marcados `not_reported`.\n:::"}
|
|
3872
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--map-sbd-toe-regulatory-activation", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--map-sbd-toe-regulatory-activation", "relation_hints": [], "section_path": ["Tools — referência completa", "Implementation view (V5)", "`map_sbd_toe_regulatory_activation`"], "size_estimate": {"approx_tokens": 133, "chars": 532}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `map_sbd_toe_regulatory_activation`\n\nLente regulatória (o inverso da *provenance*): dado um *framework*, que áreas/capítulos do manual ele activa.\n\n**Parâmetros:** `framework` (`DORA` | `NIS2` | `CRA` | `RGPD`; ou `EXT-DORA`…), `limit?`, `offset?`\n**Output:** `data.activated[]` por capítulo (`mapping_count`, `obligation_count`, `by_target_type`, `example_citation`) + `totals`. *Framework* desconhecido → erro `-32602`. Provenance declara: **cross-check ≠ atestação de conformidade**.\n\n---", "title": "`map_sbd_toe_regulatory_activation`", "traceability": {"line_end": 378, "line_start": 370, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--implementation-view-v5--map-sbd-toe-regulatory-activation"}, "vector_text": "`map_sbd_toe_regulatory_activation`\n\n### `map_sbd_toe_regulatory_activation`\n\nLente regulatória (o inverso da *provenance*): dado um *framework*, que áreas/capítulos do manual ele activa.\n\n**Parâmetros:** `framework` (`DORA` | `NIS2` | `CRA` | `RGPD`; ou `EXT-DORA`…), `limit?`, `offset?`\n**Output:** `data.activated[]` por capítulo (`mapping_count`, `obligation_count`, `by_target_type`, `example_citation`) + `totals`. *Framework* desconhecido → erro `-32602`. Provenance declara: **cross-check ≠ atestação de conformidade**.\n\n---"}
|
|
3873
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--diagnostico", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--diagnostico", "relation_hints": [], "section_path": ["Tools — referência completa", "Diagnóstico"], "size_estimate": {"approx_tokens": 7, "chars": 27}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Diagnóstico", "title": "Diagnóstico", "traceability": {"line_end": 380, "line_start": 379, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--diagnostico"}, "vector_text": "Diagnóstico\n\n## Diagnóstico"}
|
|
3874
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--diagnostico--inspect-sbd-toe-retrieval", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--diagnostico--inspect-sbd-toe-retrieval", "relation_hints": [], "section_path": ["Tools — referência completa", "Diagnóstico", "`inspect_sbd_toe_retrieval`"], "size_estimate": {"approx_tokens": 49, "chars": 196}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `inspect_sbd_toe_retrieval`\n\nDiagnóstico do retriever — útil quando uma query devolve resultados inesperados. Mostra ranking, scores, e *rule_trace* completo.\n\n---", "title": "`inspect_sbd_toe_retrieval`", "traceability": {"line_end": 386, "line_start": 381, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--diagnostico--inspect-sbd-toe-retrieval"}, "vector_text": "`inspect_sbd_toe_retrieval`\n\n### `inspect_sbd_toe_retrieval`\n\nDiagnóstico do retriever — útil quando uma query devolve resultados inesperados. Mostra ranking, scores, e *rule_trace* completo.\n\n---"}
|
|
3875
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados"], "size_estimate": {"approx_tokens": 19, "chars": 75}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Combinatória — padrões recomendados", "title": "Combinatória — padrões recomendados", "traceability": {"line_end": 388, "line_start": 387, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados"}, "vector_text": "Combinatória — padrões recomendados\n\n## Combinatória — padrões recomendados"}
|
|
3876
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pergunta-estruturada", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pergunta-estruturada", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados", "Pergunta estruturada"], "size_estimate": {"approx_tokens": 25, "chars": 99}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Pergunta estruturada\n\n```\nconsult_security_requirements(L2, [\"auth\"])\n```", "title": "Pergunta estruturada", "traceability": {"line_end": 394, "line_start": 389, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pergunta-estruturada"}, "vector_text": "Pergunta estruturada\n\n### Pergunta estruturada\n\n```\nconsult_security_requirements(L2, [\"auth\"])\n```"}
|
|
3877
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pergunta-narrativa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pergunta-narrativa", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados", "Pergunta narrativa"], "size_estimate": {"approx_tokens": 25, "chars": 99}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Pergunta narrativa\n\n```\nsearch_sbd_toe_manual(\"threat modeling stride\")\n```", "title": "Pergunta narrativa", "traceability": {"line_end": 400, "line_start": 395, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pergunta-narrativa"}, "vector_text": "Pergunta narrativa\n\n### Pergunta narrativa\n\n```\nsearch_sbd_toe_manual(\"threat modeling stride\")\n```"}
|
|
3878
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--resposta-complexa-threat-model-security-plan", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--resposta-complexa-threat-model-security-plan", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados", "Resposta complexa (threat model / security plan)"], "size_estimate": {"approx_tokens": 93, "chars": 371}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Resposta complexa (threat model / security plan)\n\n```\n1. consult_security_requirements(L2, concerns) # requisitos + controlos\n2. get_threat_landscape(L2, concerns) # threats relevantes\n3. get_guide_by_role(L2, role) # práticas do role\n4. → gerar documento citando IDs dos 3 passos\n```", "title": "Resposta complexa (threat model / security plan)", "traceability": {"line_end": 409, "line_start": 401, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--resposta-complexa-threat-model-security-plan"}, "vector_text": "Resposta complexa (threat model / security plan)\n\n### Resposta complexa (threat model / security plan)\n\n```\n1. consult_security_requirements(L2, concerns) # requisitos + controlos\n2. get_threat_landscape(L2, concerns) # threats relevantes\n3. get_guide_by_role(L2, role) # práticas do role\n4. → gerar documento citando IDs dos 3 passos\n```"}
|
|
3879
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pr-review", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pr-review", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados", "PR review"], "size_estimate": {"approx_tokens": 57, "chars": 226}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### PR review\n\n```\n1. map_sbd_toe_review_scope(changed_files) # que capítulos\n2. consult_security_requirements(risk_level, concerns) # controlos activos\n3. → enumerar findings citando CTRL-* + chapter_id\n```", "title": "PR review", "traceability": {"line_end": 417, "line_start": 410, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--pr-review"}, "vector_text": "PR review\n\n### PR review\n\n```\n1. map_sbd_toe_review_scope(changed_files) # que capítulos\n2. consult_security_requirements(risk_level, concerns) # controlos activos\n3. → enumerar findings citando CTRL-* + chapter_id\n```"}
|
|
3880
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--codegen-grounded", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--codegen-grounded", "relation_hints": [], "section_path": ["Tools — referência completa", "Combinatória — padrões recomendados", "Codegen grounded"], "size_estimate": {"approx_tokens": 55, "chars": 220}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Codegen grounded\n\n```\n1. prepare_sbd_toe_codegen_context(task, mode=\"codegen\", ...)\n2. ramificar por status (ver tabela acima)\n3. se ready_for_codegen → gerar código + tests + security_rationale\n```", "title": "Codegen grounded", "traceability": {"line_end": 425, "line_start": 418, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--combinatoria-padroes-recomendados--codegen-grounded"}, "vector_text": "Codegen grounded\n\n### Codegen grounded\n\n```\n1. prepare_sbd_toe_codegen_context(task, mode=\"codegen\", ...)\n2. ramificar por status (ver tabela acima)\n3. se ready_for_codegen → gerar código + tests + security_rationale\n```"}
|
|
3881
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--a-seguir", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-05-tools-reference", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-05-tools-reference--tools-referencia-completa--a-seguir", "relation_hints": [], "section_path": ["Tools — referência completa", "A seguir"], "size_estimate": {"approx_tokens": 37, "chars": 147}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## A seguir\n\n[Resources e prompts](./06-resources-prompts.md) — URIs `sbd://toe/*` para *grounding* estrutural e prompts pré-empacotados.", "title": "A seguir", "traceability": {"line_end": 428, "line_start": 426, "source_path": "020-assets/mcp/05-tools-reference.md", "unit_id": "020-assets-mcp-05-tools-reference--tools-referencia-completa--a-seguir"}, "vector_text": "A seguir\n\n## A seguir\n\n[Resources e prompts](./06-resources-prompts.md) — URIs `sbd://toe/*` para *grounding* estrutural e prompts pré-empacotados."}
|
|
3882
3882
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts", "chunk_kind": "table_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts", "relation_hints": [], "section_path": ["Resources e prompts"], "size_estimate": {"approx_tokens": 205, "chars": 818}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Resources e prompts\n\nPara além das **tools**, o protocolo MCP expõe dois mecanismos adicionais que o servidor SbD-ToE usa amplamente:\n\n- **Resources** (`sbd://toe/*`) — documentos / dados estruturados acessíveis por URI, lidos pelo cliente como contexto.\n- **Prompts** — templates de prompt pré-empacotados que o cliente pode executar com parâmetros.\n\nA diferença prática:\n\n| Mecanismo | Lê-se | Caso típico |\n|---|---|---|\n| **Tool** | Cliente chama, recebe resultado | Operação determinística com parâmetros (consultar requisitos, listar capítulos) |\n| **Resource** | Cliente injecta em contexto | Conteúdo estável que vale a pena ter sempre acessível (guia, índice, ontologia) |\n| **Prompt** | Cliente executa como mensagem do utilizador | *Workflow* canónico (inicializar sessão, Q&A) |\n\n---", "title": "Resources e prompts", "traceability": {"line_end": 29, "line_start": 13, "source_path": "020-assets/mcp/06-resources-prompts.md", "unit_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts"}, "vector_text": "Resources e prompts\n\n# Resources e prompts\n\nPara além das **tools**, o protocolo MCP expõe dois mecanismos adicionais que o servidor SbD-ToE usa amplamente:\n\n- **Resources** (`sbd://toe/*`) — documentos / dados estruturados acessíveis por URI, lidos pelo cliente como contexto.\n- **Prompts** — templates de prompt pré-empacotados que o cliente pode executar com parâmetros.\n\nA diferença prática:\n\n| Mecanismo | Lê-se | Caso típico |\n|---|---|---|\n| **Tool** | Cliente chama, recebe resultado | Operação determinística com parâmetros (consultar requisitos, listar capítulos) |\n| **Resource** | Cliente injecta em contexto | Conteúdo estável que vale a pena ter sempre acessível (guia, índice, ontologia) |\n| **Prompt** | Cliente executa como mensagem do utilizador | *Workflow* canónico (inicializar sessão, Q&A) |\n\n---"}
|
|
3883
3883
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts--resources", "relation_hints": [], "section_path": ["Resources e prompts", "Resources"], "size_estimate": {"approx_tokens": 40, "chars": 159}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Resources\n\nTodos os resources usam o esquema `sbd://toe/*` e devolvem `text/markdown`, `application/json` ou `application/yaml` consoante o tipo.", "title": "Resources", "traceability": {"line_end": 33, "line_start": 30, "source_path": "020-assets/mcp/06-resources-prompts.md", "unit_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources"}, "vector_text": "Resources\n\n## Resources\n\nTodos os resources usam o esquema `sbd://toe/*` e devolvem `text/markdown`, `application/json` ou `application/yaml` consoante o tipo."}
|
|
3884
3884
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-agent-guide", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-agent-guide", "relation_hints": [], "section_path": ["Resources e prompts", "Resources", "`sbd://toe/agent-guide`"], "size_estimate": {"approx_tokens": 135, "chars": 540}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `sbd://toe/agent-guide`\n\n**MIME:** `text/markdown`\n**Conteúdo:** guia operacional completo do agente — modos (CONSULT / GUIDE / SETUP), roteamento por fase / domínio / tipo de pergunta, padrões epistémicos, vocabulário controlado, mapa dos 15 capítulos.\n\n**Quando ler:** **uma vez por sessão**, antes de qualquer chamada. É o *system prompt* canónico.\n\n> Este resource é a fonte do que `generate_sbd_toe_skill` devolve — guardar como *skill file* é exactamente injectá-lo permanentemente no contexto do cliente.", "title": "`sbd://toe/agent-guide`", "traceability": {"line_end": 42, "line_start": 34, "source_path": "020-assets/mcp/06-resources-prompts.md", "unit_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-agent-guide"}, "vector_text": "`sbd://toe/agent-guide`\n\n### `sbd://toe/agent-guide`\n\n**MIME:** `text/markdown`\n**Conteúdo:** guia operacional completo do agente — modos (CONSULT / GUIDE / SETUP), roteamento por fase / domínio / tipo de pergunta, padrões epistémicos, vocabulário controlado, mapa dos 15 capítulos.\n\n**Quando ler:** **uma vez por sessão**, antes de qualquer chamada. É o *system prompt* canónico.\n\n> Este resource é a fonte do que `generate_sbd_toe_skill` devolve — guardar como *skill file* é exactamente injectá-lo permanentemente no contexto do cliente."}
|
|
@@ -3887,7 +3887,7 @@
|
|
|
3887
3887
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-ontology", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-ontology", "relation_hints": [], "section_path": ["Resources e prompts", "Resources", "`sbd://toe/ontology`"], "size_estimate": {"approx_tokens": 113, "chars": 452}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `sbd://toe/ontology`\n\n**MIME:** `application/yaml`\n**Conteúdo:** ontologia completa — `domain_mapping` (requirement category → control domains), regras de inferência com prioridades, *resolution pipelines* (consult / guide / threats / review), *concerns* lexicon, *role aliases*, schemas de entidade.\n\n**Quando ler:** **uma vez por sessão** para entender o modelo de resolução determinístico antes de combinar tools complexas.", "title": "`sbd://toe/ontology`", "traceability": {"line_end": 80, "line_start": 74, "source_path": "020-assets/mcp/06-resources-prompts.md", "unit_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-ontology"}, "vector_text": "`sbd://toe/ontology`\n\n### `sbd://toe/ontology`\n\n**MIME:** `application/yaml`\n**Conteúdo:** ontologia completa — `domain_mapping` (requirement category → control domains), regras de inferência com prioridades, *resolution pipelines* (consult / guide / threats / review), *concerns* lexicon, *role aliases*, schemas de entidade.\n\n**Quando ler:** **uma vez por sessão** para entender o modelo de resolução determinístico antes de combinar tools complexas."}
|
|
3888
3888
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-grounded-codegen-guide", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-grounded-codegen-guide", "relation_hints": [], "section_path": ["Resources e prompts", "Resources", "`sbd://toe/grounded-codegen-guide`"], "size_estimate": {"approx_tokens": 161, "chars": 644}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `sbd://toe/grounded-codegen-guide`\n\n**MIME:** `text/markdown`\n**Conteúdo:** guia agente para `prepare_sbd_toe_codegen_context` — *workflow*, ramificação por *status* (`ready_for_codegen` / `needs_clarification` / `needs_decomposition` / `unsupported_scope`), disciplina de *output* (citar `citation_map`, preencher `security_rationale`, distinguir code/tests/evidence), e **proibições explícitas** (não inventar IDs, não declarar conformidade, não poluir código com rastreabilidade-noise).\n\n**Quando ler:** sempre antes de qualquer trabalho de *codegen* ou *review* via `prepare_sbd_toe_codegen_context`.", "title": "`sbd://toe/grounded-codegen-guide`", "traceability": {"line_end": 87, "line_start": 81, "source_path": "020-assets/mcp/06-resources-prompts.md", "unit_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-grounded-codegen-guide"}, "vector_text": "`sbd://toe/grounded-codegen-guide`\n\n### `sbd://toe/grounded-codegen-guide`\n\n**MIME:** `text/markdown`\n**Conteúdo:** guia agente para `prepare_sbd_toe_codegen_context` — *workflow*, ramificação por *status* (`ready_for_codegen` / `needs_clarification` / `needs_decomposition` / `unsupported_scope`), disciplina de *output* (citar `citation_map`, preencher `security_rationale`, distinguir code/tests/evidence), e **proibições explícitas** (não inventar IDs, não declarar conformidade, não poluir código com rastreabilidade-noise).\n\n**Quando ler:** sempre antes de qualquer trabalho de *codegen* ou *review* via `prepare_sbd_toe_codegen_context`."}
|
|
3889
3889
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-skill-role-sbd-toe-subagent-role", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-skill-role-sbd-toe-subagent-role", "relation_hints": [], "section_path": ["Resources e prompts", "Resources", "`sbd://toe/skill/{role}` · `sbd://toe/subagent/{role}`"], "size_estimate": {"approx_tokens": 142, "chars": 567}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `sbd://toe/skill/{role}` · `sbd://toe/subagent/{role}`\n\n**MIME:** `text/markdown`\n**Parâmetro:** `{role}` = um dos 13 *roles* canónicos (aliases resolvem)\n**Conteúdo:** o mesmo que `generate_sbd_toe_skill(role, format=skill)` (skill) e `…(role, format=subagent)` (definição de *subagent*, *flavour* `harnessed` por omissão — concede as tools `mcp__sbd-toe__*`). Risco `L2` por omissão.\n\n**Quando usar:** instalar a configuração de um papel sem chamar a tool — ler o resource e guardar no caminho do cliente.", "title": "`sbd://toe/skill/{role}` · `sbd://toe/subagent/{role}`", "traceability": {"line_end": 95, "line_start": 88, "source_path": "020-assets/mcp/06-resources-prompts.md", "unit_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-skill-role-sbd-toe-subagent-role"}, "vector_text": "`sbd://toe/skill/{role}` · `sbd://toe/subagent/{role}`\n\n### `sbd://toe/skill/{role}` · `sbd://toe/subagent/{role}`\n\n**MIME:** `text/markdown`\n**Parâmetro:** `{role}` = um dos 13 *roles* canónicos (aliases resolvem)\n**Conteúdo:** o mesmo que `generate_sbd_toe_skill(role, format=skill)` (skill) e `…(role, format=subagent)` (definição de *subagent*, *flavour* `harnessed` por omissão — concede as tools `mcp__sbd-toe__*`). Risco `L2` por omissão.\n\n**Quando usar:** instalar a configuração de um papel sem chamar a tool — ler o resource e guardar no caminho do cliente."}
|
|
3890
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-version", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-version", "relation_hints": [], "section_path": ["Resources e prompts", "Resources", "`sbd://toe/version`"], "size_estimate": {"approx_tokens":
|
|
3890
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-version", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-version", "relation_hints": [], "section_path": ["Resources e prompts", "Resources", "`sbd://toe/version`"], "size_estimate": {"approx_tokens": 201, "chars": 802}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `sbd://toe/version`\n\n**MIME:** `application/json`\n**Conteúdo:** identidade do servidor + *provenance* do conhecimento servido (manual, KG, ontologia), lido do *pin* do bundle consumido.\n\n```json\n{\n \"name\": \"@shiftleftpt/sbd-toe-mcp\",\n \"version\": \"0.10.2\",\n \"manual\": { \"tag\": \"v1.7.0\", \"version\": \"1.7.0\", \"commit\": \"d5c2586a…\" },\n \"kg\": { \"release_tag\": \"v1.6.0\", \"sha256\": \"baf5913b…\", \"source\": \"release\", \"consumer_contract_version\": \"v1.11\" },\n \"ontology\": { \"tag\": \"ontology-v1.1-fair-baseline\", \"commit\": \"…\" }\n}\n```\n\n**Quando usar:** *troubleshooting* — confirmar a versão activa e a *provenance* (que manual/KG/ontologia o servidor serve), e se cobre o conteúdo esperado (ver [troubleshooting / FAQ](./10-troubleshooting-faq.md) sobre *content lag*).\n\n---", "title": "`sbd://toe/version`", "traceability": {"line_end": 114, "line_start": 96, "source_path": "020-assets/mcp/06-resources-prompts.md", "unit_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--resources--sbd-toe-version"}, "vector_text": "`sbd://toe/version`\n\n### `sbd://toe/version`\n\n**MIME:** `application/json`\n**Conteúdo:** identidade do servidor + *provenance* do conhecimento servido (manual, KG, ontologia), lido do *pin* do bundle consumido.\n\n```json\n{\n \"name\": \"@shiftleftpt/sbd-toe-mcp\",\n \"version\": \"0.10.2\",\n \"manual\": { \"tag\": \"v1.7.0\", \"version\": \"1.7.0\", \"commit\": \"d5c2586a…\" },\n \"kg\": { \"release_tag\": \"v1.6.0\", \"sha256\": \"baf5913b…\", \"source\": \"release\", \"consumer_contract_version\": \"v1.11\" },\n \"ontology\": { \"tag\": \"ontology-v1.1-fair-baseline\", \"commit\": \"…\" }\n}\n```\n\n**Quando usar:** *troubleshooting* — confirmar a versão activa e a *provenance* (que manual/KG/ontologia o servidor serve), e se cobre o conteúdo esperado (ver [troubleshooting / FAQ](./10-troubleshooting-faq.md) sobre *content lag*).\n\n---"}
|
|
3891
3891
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--prompts", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts--prompts", "relation_hints": [], "section_path": ["Resources e prompts", "Prompts"], "size_estimate": {"approx_tokens": 5, "chars": 19}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Prompts", "title": "Prompts", "traceability": {"line_end": 116, "line_start": 115, "source_path": "020-assets/mcp/06-resources-prompts.md", "unit_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--prompts"}, "vector_text": "Prompts\n\n## Prompts"}
|
|
3892
3892
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--prompts--setup-sbd-toe-agent-risklevel-projectrole", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts--prompts--setup-sbd-toe-agent-risklevel-projectrole", "relation_hints": [], "section_path": ["Resources e prompts", "Prompts", "`setup_sbd_toe_agent(riskLevel, projectRole)`"], "size_estimate": {"approx_tokens": 116, "chars": 463}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `setup_sbd_toe_agent(riskLevel, projectRole)`\n\nInicializa a sessão.\n\n**Parâmetros:**\n- `riskLevel`: `L1` | `L2` | `L3`\n- `projectRole`: um dos 13 *roles* canónicos\n\n**Resultado:** mensagem do utilizador equivalente a \"Estou a trabalhar num projecto `riskLevel=L2`, role `appsec-engineer`. Carrega as regras e capítulos activos.\" — o agente executa imediatamente as chamadas adequadas para inicializar o contexto.", "title": "`setup_sbd_toe_agent(riskLevel, projectRole)`", "traceability": {"line_end": 126, "line_start": 117, "source_path": "020-assets/mcp/06-resources-prompts.md", "unit_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--prompts--setup-sbd-toe-agent-risklevel-projectrole"}, "vector_text": "`setup_sbd_toe_agent(riskLevel, projectRole)`\n\n### `setup_sbd_toe_agent(riskLevel, projectRole)`\n\nInicializa a sessão.\n\n**Parâmetros:**\n- `riskLevel`: `L1` | `L2` | `L3`\n- `projectRole`: um dos 13 *roles* canónicos\n\n**Resultado:** mensagem do utilizador equivalente a \"Estou a trabalhar num projecto `riskLevel=L2`, role `appsec-engineer`. Carrega as regras e capítulos activos.\" — o agente executa imediatamente as chamadas adequadas para inicializar o contexto."}
|
|
3893
3893
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--prompts--ask-sbd-toe-manual-question", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-06-resources-prompts", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-06-resources-prompts--resources-e-prompts--prompts--ask-sbd-toe-manual-question", "relation_hints": [], "section_path": ["Resources e prompts", "Prompts", "`ask_sbd_toe_manual(question)`"], "size_estimate": {"approx_tokens": 83, "chars": 332}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `ask_sbd_toe_manual(question)`\n\nQ&A directo *grounded* no manual.\n\n**Parâmetros:**\n- `question`: pergunta em linguagem natural\n\n**Resultado:** o agente é instruído a usar `search_sbd_toe_manual` ou `consult_security_requirements` consoante o tipo de pergunta, e a responder com IDs citáveis.\n\n---", "title": "`ask_sbd_toe_manual(question)`", "traceability": {"line_end": 137, "line_start": 127, "source_path": "020-assets/mcp/06-resources-prompts.md", "unit_id": "020-assets-mcp-06-resources-prompts--resources-e-prompts--prompts--ask-sbd-toe-manual-question"}, "vector_text": "`ask_sbd_toe_manual(question)`\n\n### `ask_sbd_toe_manual(question)`\n\nQ&A directo *grounded* no manual.\n\n**Parâmetros:**\n- `question`: pergunta em linguagem natural\n\n**Resultado:** o agente é instruído a usar `search_sbd_toe_manual` ou `consult_security_requirements` consoante o tipo de pergunta, e a responder com IDs citáveis.\n\n---"}
|
|
@@ -3965,7 +3965,7 @@
|
|
|
3965
3965
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--titulo--disciplina-de-output", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-04-governance-bootstrap--titulo--disciplina-de-output", "relation_hints": [], "section_path": ["<título>", "Disciplina de output"], "size_estimate": {"approx_tokens": 102, "chars": 407}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Disciplina de output\n\n- O *bootstrap* gera **placeholders** — não preenche os artefactos. Cada artefacto requer trabalho de equipa.\n- **Não declarar conformidade** com base na existência de placeholders. Conformidade requer conteúdo preenchido + evidência.\n- Documentar o ***risk level* assumido** explicitamente em cada artefacto — se subir, alguns artefactos extra ficam a faltar.", "title": "Disciplina de output", "traceability": {"line_end": 121, "line_start": 116, "source_path": "020-assets/mcp/07-casos-uso/04-governance-bootstrap.md", "unit_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--titulo--disciplina-de-output"}, "vector_text": "Disciplina de output\n\n## Disciplina de output\n\n- O *bootstrap* gera **placeholders** — não preenche os artefactos. Cada artefacto requer trabalho de equipa.\n- **Não declarar conformidade** com base na existência de placeholders. Conformidade requer conteúdo preenchido + evidência.\n- Documentar o ***risk level* assumido** explicitamente em cada artefacto — se subir, alguns artefactos extra ficam a faltar."}
|
|
3966
3966
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--titulo--skill-subagent-claude-code", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-04-governance-bootstrap--titulo--skill-subagent-claude-code", "relation_hints": [], "section_path": ["<título>", "Skill / subagent — Claude Code"], "size_estimate": {"approx_tokens": 78, "chars": 309}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Skill / subagent — Claude Code\n\n`.claude/agents/sbd-toe-bootstrap.md`:\n\n```markdown\n---\nname: sbd-toe-bootstrap\ndescription: Bootstrap inicial de governança SbD-ToE num repo novo — gera scaffold de artefactos por capítulo.\ntools: Read, Write, Edit, Bash, mcp__sbd-toe__*\n---", "title": "Skill / subagent — Claude Code", "traceability": {"line_end": 132, "line_start": 122, "source_path": "020-assets/mcp/07-casos-uso/04-governance-bootstrap.md", "unit_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--titulo--skill-subagent-claude-code"}, "vector_text": "Skill / subagent — Claude Code\n\n## Skill / subagent — Claude Code\n\n`.claude/agents/sbd-toe-bootstrap.md`:\n\n```markdown\n---\nname: sbd-toe-bootstrap\ndescription: Bootstrap inicial de governança SbD-ToE num repo novo — gera scaffold de artefactos por capítulo.\ntools: Read, Write, Edit, Bash, mcp__sbd-toe__*\n---"}
|
|
3967
3967
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow", "relation_hints": [], "section_path": ["Workflow"], "size_estimate": {"approx_tokens": 142, "chars": 567}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Workflow\n\n1. Perguntar risk_level alvo se não estiver explícito.\n2. Chamar plan_sbd_toe_repo_governance.\n3. Filtrar artefactos por chapter applicable ao risk_level (via sbd://toe/chapter-applicability/{riskLevel}).\n4. Criar layout governance/<chapter>/<artifact>.md com placeholders.\n5. Criar AGENTS.md + CLAUDE.md com bloco de inicialização.\n6. Guardar a skill canónica via generate_sbd_toe_skill em .claude/skills/sbd-toe.md.\n7. Reportar lista do que ficou criado + lista do que falta preencher.\n8. Não inventar conteúdo de artefactos — só scaffold.\n```", "title": "Workflow", "traceability": {"line_end": 144, "line_start": 133, "source_path": "020-assets/mcp/07-casos-uso/04-governance-bootstrap.md", "unit_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow"}, "vector_text": "Workflow\n\n# Workflow\n\n1. Perguntar risk_level alvo se não estiver explícito.\n2. Chamar plan_sbd_toe_repo_governance.\n3. Filtrar artefactos por chapter applicable ao risk_level (via sbd://toe/chapter-applicability/{riskLevel}).\n4. Criar layout governance/<chapter>/<artifact>.md com placeholders.\n5. Criar AGENTS.md + CLAUDE.md com bloco de inicialização.\n6. Guardar a skill canónica via generate_sbd_toe_skill em .claude/skills/sbd-toe.md.\n7. Reportar lista do que ficou criado + lista do que falta preencher.\n8. Não inventar conteúdo de artefactos — só scaffold.\n```"}
|
|
3968
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--quando-re-correr", "chunk_kind": "table_section", "document_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--quando-re-correr", "relation_hints": [], "section_path": ["Workflow", "Quando re-correr"], "size_estimate": {"approx_tokens":
|
|
3968
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--quando-re-correr", "chunk_kind": "table_section", "document_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--quando-re-correr", "relation_hints": [], "section_path": ["Workflow", "Quando re-correr"], "size_estimate": {"approx_tokens": 128, "chars": 512}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Quando re-correr\n\n| Trigger | Acção |\n|---|---|\n| *Risk level* sobe (L1→L2 ou L2→L3) | Re-correr — adiciona artefactos dos capítulos novos. Não apagar nada. |\n| Upgrade do MCP server | Re-correr `generate_sbd_toe_skill()` para refrescar a skill. |\n| Adição de cross-check normativo posterior ao *snapshot* do MCP | Adicionar manualmente a partir do manual web até nova publicação — confirmar a cobertura em `sbd://toe/version` (ver [content lag](../10-troubleshooting-faq.md#content-lag)). |", "title": "Quando re-correr", "traceability": {"line_end": 152, "line_start": 145, "source_path": "020-assets/mcp/07-casos-uso/04-governance-bootstrap.md", "unit_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--quando-re-correr"}, "vector_text": "Quando re-correr\n\n## Quando re-correr\n\n| Trigger | Acção |\n|---|---|\n| *Risk level* sobe (L1→L2 ou L2→L3) | Re-correr — adiciona artefactos dos capítulos novos. Não apagar nada. |\n| Upgrade do MCP server | Re-correr `generate_sbd_toe_skill()` para refrescar a skill. |\n| Adição de cross-check normativo posterior ao *snapshot* do MCP | Adicionar manualmente a partir do manual web até nova publicação — confirmar a cobertura em `sbd://toe/version` (ver [content lag](../10-troubleshooting-faq.md#content-lag)). |"}
|
|
3969
3969
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--anti-patterns", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--anti-patterns", "relation_hints": [], "section_path": ["Workflow", "Anti-patterns"], "size_estimate": {"approx_tokens": 60, "chars": 239}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Anti-patterns\n\n- ❌ Preencher os placeholders automaticamente com texto genérico — pior que vazio.\n- ❌ Apagar artefactos \"que não vão ser usados\" — esconde o gap.\n- ❌ Marcar artefactos como \"concluídos\" sem revisão humana.", "title": "Anti-patterns", "traceability": {"line_end": 158, "line_start": 153, "source_path": "020-assets/mcp/07-casos-uso/04-governance-bootstrap.md", "unit_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--anti-patterns"}, "vector_text": "Anti-patterns\n\n## Anti-patterns\n\n- ❌ Preencher os placeholders automaticamente com texto genérico — pior que vazio.\n- ❌ Apagar artefactos \"que não vão ser usados\" — esconde o gap.\n- ❌ Marcar artefactos como \"concluídos\" sem revisão humana."}
|
|
3970
3970
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--relacionado", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--relacionado", "relation_hints": [], "section_path": ["Workflow", "Relacionado"], "size_estimate": {"approx_tokens": 46, "chars": 184}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Relacionado\n\n- [Onboarding](./onboarding-formacao) — depois do scaffold, treinar a equipa.\n- [Skills e agentes](../04-skills-agentes.md) — para configurar persistência.", "title": "Relacionado", "traceability": {"line_end": 162, "line_start": 159, "source_path": "020-assets/mcp/07-casos-uso/04-governance-bootstrap.md", "unit_id": "020-assets-mcp-07-casos-uso-04-governance-bootstrap--workflow--relacionado"}, "vector_text": "Relacionado\n\n## Relacionado\n\n- [Onboarding](./onboarding-formacao) — depois do scaffold, treinar a equipa.\n- [Skills e agentes](../04-skills-agentes.md) — para configurar persistência."}
|
|
3971
3971
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao--caso-de-uso-onboarding-por-role", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-05-onboarding-formacao--caso-de-uso-onboarding-por-role", "relation_hints": [], "section_path": ["Caso de uso — Onboarding por role"], "size_estimate": {"approx_tokens": 205, "chars": 817}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Caso de uso — Onboarding por role\n\nPedir a um *developer* recém-chegado para ler os 15 capítulos do manual antes de fazer o primeiro commit é, na prática, pedir que não os leia. Onboarding eficaz é o oposto: começa pequeno, no que esse papel faz nas próximas duas semanas, e cresce com o trabalho.\n\nO `get_guide_by_role` foi pensado precisamente para isso. Recebe o *risk level* e o papel — `developer`, `appsec-engineer`, `devops-sre`, `qa`, qualquer um dos 13 canónicos — e devolve apenas as práticas que o manual atribui a essa pessoa, organizadas por fase do SDLC. O agente compõe um guia personalizado a partir daí: o que se espera deste papel em *requirements*, *design*, *implement*, *test*, *operate* — com *user stories* já ligadas, prontas a virar *acceptance criteria*.", "title": "Caso de uso — Onboarding por role", "traceability": {"line_end": 20, "line_start": 15, "source_path": "020-assets/mcp/07-casos-uso/05-onboarding-formacao.md", "unit_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao--caso-de-uso-onboarding-por-role"}, "vector_text": "Caso de uso — Onboarding por role\n\n# Caso de uso — Onboarding por role\n\nPedir a um *developer* recém-chegado para ler os 15 capítulos do manual antes de fazer o primeiro commit é, na prática, pedir que não os leia. Onboarding eficaz é o oposto: começa pequeno, no que esse papel faz nas próximas duas semanas, e cresce com o trabalho.\n\nO `get_guide_by_role` foi pensado precisamente para isso. Recebe o *risk level* e o papel — `developer`, `appsec-engineer`, `devops-sre`, `qa`, qualquer um dos 13 canónicos — e devolve apenas as práticas que o manual atribui a essa pessoa, organizadas por fase do SDLC. O agente compõe um guia personalizado a partir daí: o que se espera deste papel em *requirements*, *design*, *implement*, *test*, *operate* — com *user stories* já ligadas, prontas a virar *acceptance criteria*."}
|
|
@@ -3992,8 +3992,8 @@
|
|
|
3992
3992
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao--workflow--combinatoria-util", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-05-onboarding-formacao--workflow--combinatoria-util", "relation_hints": [], "section_path": ["Workflow", "Combinatória útil"], "size_estimate": {"approx_tokens": 112, "chars": 448}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Combinatória útil\n\nPara um *role* que faz muitas fases (`developer`, `arquitetos-software`), iterar fase a fase para manter o output dentro do contexto:\n\n```\nget_guide_by_role(L2, \"developer\", \"requirements\")\nget_guide_by_role(L2, \"developer\", \"design\")\nget_guide_by_role(L2, \"developer\", \"implement\")\nget_guide_by_role(L2, \"developer\", \"test\")\nget_guide_by_role(L2, \"developer\", \"operate\")\n```\n\nConcatenar os outputs no guia.", "title": "Combinatória útil", "traceability": {"line_end": 150, "line_start": 137, "source_path": "020-assets/mcp/07-casos-uso/05-onboarding-formacao.md", "unit_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao--workflow--combinatoria-util"}, "vector_text": "Combinatória útil\n\n## Combinatória útil\n\nPara um *role* que faz muitas fases (`developer`, `arquitetos-software`), iterar fase a fase para manter o output dentro do contexto:\n\n```\nget_guide_by_role(L2, \"developer\", \"requirements\")\nget_guide_by_role(L2, \"developer\", \"design\")\nget_guide_by_role(L2, \"developer\", \"implement\")\nget_guide_by_role(L2, \"developer\", \"test\")\nget_guide_by_role(L2, \"developer\", \"operate\")\n```\n\nConcatenar os outputs no guia."}
|
|
3993
3993
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao--workflow--anti-patterns", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-05-onboarding-formacao--workflow--anti-patterns", "relation_hints": [], "section_path": ["Workflow", "Anti-patterns"], "size_estimate": {"approx_tokens": 84, "chars": 336}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Anti-patterns\n\n- ❌ Chamar `get_guide_by_role(L2)` sem `role`/`phase` e tentar extrair detalhe — só vem contagem.\n- ❌ Aliasing manual de roles (ex.: \"engineer\" → \"developer\") em vez de deixar o servidor resolver — usar a forma canónica documentada.\n- ❌ Inventar *acceptance criteria* para *user stories* não retornadas.", "title": "Anti-patterns", "traceability": {"line_end": 156, "line_start": 151, "source_path": "020-assets/mcp/07-casos-uso/05-onboarding-formacao.md", "unit_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao--workflow--anti-patterns"}, "vector_text": "Anti-patterns\n\n## Anti-patterns\n\n- ❌ Chamar `get_guide_by_role(L2)` sem `role`/`phase` e tentar extrair detalhe — só vem contagem.\n- ❌ Aliasing manual de roles (ex.: \"engineer\" → \"developer\") em vez de deixar o servidor resolver — usar a forma canónica documentada.\n- ❌ Inventar *acceptance criteria* para *user stories* não retornadas."}
|
|
3994
3994
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao--workflow--relacionado", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-05-onboarding-formacao--workflow--relacionado", "relation_hints": [], "section_path": ["Workflow", "Relacionado"], "size_estimate": {"approx_tokens": 51, "chars": 202}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Relacionado\n\n- [Bootstrap de governança](./governance-bootstrap) — antes do onboarding, ter o scaffold.\n- [`get_guide_by_role`](../05-tools-reference.md#get_guide_by_role) na referência.", "title": "Relacionado", "traceability": {"line_end": 160, "line_start": 157, "source_path": "020-assets/mcp/07-casos-uso/05-onboarding-formacao.md", "unit_id": "020-assets-mcp-07-casos-uso-05-onboarding-formacao--workflow--relacionado"}, "vector_text": "Relacionado\n\n## Relacionado\n\n- [Bootstrap de governança](./governance-bootstrap) — antes do onboarding, ter o scaffold.\n- [`get_guide_by_role`](../05-tools-reference.md#get_guide_by_role) na referência."}
|
|
3995
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo", "relation_hints": [], "section_path": ["Caso de uso — Cross-check normativo"], "size_estimate": {"approx_tokens":
|
|
3996
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--cobertura-actual-no-mcp-o-que-esta-dentro-e-fora", "chunk_kind": "table_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--cobertura-actual-no-mcp-o-que-esta-dentro-e-fora", "relation_hints": [], "section_path": ["Caso de uso — Cross-check normativo", "Cobertura actual no MCP — o que está dentro e fora"], "size_estimate": {"approx_tokens":
|
|
3995
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo", "relation_hints": [], "section_path": ["Caso de uso — Cross-check normativo"], "size_estimate": {"approx_tokens": 221, "chars": 883}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Caso de uso — Cross-check normativo\n\nMais cedo ou mais tarde, alguém na empresa — *legal*, auditoria interna, um cliente B2B no contrato — vai querer ver, em papel, como é que as práticas de engenharia respondem a um regulamento específico. AI Act, CRA, DORA, NIS2, RGPD. A pergunta não é \"estamos compliant?\" (essa é jurídica) — é \"como é que o SbD-ToE responde a este artigo?\" (essa é técnica).\n\nEsta receita serve para a segunda. Combina o MCP (onde estão indexados a maior parte dos cross-checks normativos do manual) com a leitura directa do manual web (necessária para conteúdo posterior ao *snapshot* publicado). O resultado é um relatório técnico que cita o regulamento *verbatim*, os capítulos e controlos do SbD-ToE com IDs reais, e marca explicitamente o que não está coberto — sem nunca derrapar para uma declaração de conformidade.", "title": "Caso de uso — Cross-check normativo", "traceability": {"line_end": 23, "line_start": 18, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo"}, "vector_text": "Caso de uso — Cross-check normativo\n\n# Caso de uso — Cross-check normativo\n\nMais cedo ou mais tarde, alguém na empresa — *legal*, auditoria interna, um cliente B2B no contrato — vai querer ver, em papel, como é que as práticas de engenharia respondem a um regulamento específico. AI Act, CRA, DORA, NIS2, RGPD. A pergunta não é \"estamos compliant?\" (essa é jurídica) — é \"como é que o SbD-ToE responde a este artigo?\" (essa é técnica).\n\nEsta receita serve para a segunda. Combina o MCP (onde estão indexados a maior parte dos cross-checks normativos do manual) com a leitura directa do manual web (necessária para conteúdo posterior ao *snapshot* publicado). O resultado é um relatório técnico que cita o regulamento *verbatim*, os capítulos e controlos do SbD-ToE com IDs reais, e marca explicitamente o que não está coberto — sem nunca derrapar para uma declaração de conformidade."}
|
|
3996
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--cobertura-actual-no-mcp-o-que-esta-dentro-e-fora", "chunk_kind": "table_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--cobertura-actual-no-mcp-o-que-esta-dentro-e-fora", "relation_hints": [], "section_path": ["Caso de uso — Cross-check normativo", "Cobertura actual no MCP — o que está dentro e fora"], "size_estimate": {"approx_tokens": 412, "chars": 1648}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Cobertura actual no MCP — o que está dentro e fora\n\nO *snapshot* publicado em **`@shiftleftpt/sbd-toe-mcp@0.10.2`** (manual `v1.7.0`, KG formal `v1.6.0`) inclui canon (capítulos 00–14), ontologia *AppSec Core v1* **e** os seis cross-checks — **CRA**, **DORA**, **NIS2**, **GDPR**, **AI Act** e **ENISA/CSA** — indexados no KG. Para esses, o MCP é a fonte recomendada: `search_sbd_toe_manual` devolve os intros, playbooks e notas de convergência com citações, e `map_sbd_toe_regulatory_activation` / `resolve_entities` expõem o overlay regulatório (frameworks, obrigações, mapeamentos).\n\nA fronteira é o *snapshot*: conteúdo adicionado ao manual web **depois** dele vive só no manual web até nova publicação. A versão servida está em `sbd://toe/version` (ver [content lag](../10-troubleshooting-faq.md#content-lag)).\n\n| Pergunta | Fonte recomendada |\n|---|---|\n| \"Que controlos `CTRL-*` se aplicam a `auth` em L2?\" | **MCP** (`consult_security_requirements`) |\n| \"Que threats existem para `encryption` em L3?\" | **MCP** (`get_threat_landscape`) |\n| \"Como o SbD-ToE responde ao CRA Art. 12?\" | **MCP** (`search_sbd_toe_manual`) — cross-check **CRA** indexado |\n| \"Como o SbD-ToE mapeia o NIS2 Art. 21?\" | **MCP** (`search_sbd_toe_manual`) — cross-check **NIS2** indexado |\n| \"Que obrigações DORA / GDPR aplicam ao meu projecto?\" | **MCP** — cross-checks **DORA** e **GDPR** indexados |\n| \"Como o SbD-ToE responde ao Art. 15 do AI Act?\" | **MCP** (`search_sbd_toe_manual`) — cross-check **AI Act** indexado; o [cross-check web](/sbd-toe/cross-check-normativo/ai-act/intro) para leitura integral |", "title": "Cobertura actual no MCP — o que está dentro e fora", "traceability": {"line_end": 38, "line_start": 24, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--cobertura-actual-no-mcp-o-que-esta-dentro-e-fora"}, "vector_text": "Cobertura actual no MCP — o que está dentro e fora\n\n## Cobertura actual no MCP — o que está dentro e fora\n\nO *snapshot* publicado em **`@shiftleftpt/sbd-toe-mcp@0.10.2`** (manual `v1.7.0`, KG formal `v1.6.0`) inclui canon (capítulos 00–14), ontologia *AppSec Core v1* **e** os seis cross-checks — **CRA**, **DORA**, **NIS2**, **GDPR**, **AI Act** e **ENISA/CSA** — indexados no KG. Para esses, o MCP é a fonte recomendada: `search_sbd_toe_manual` devolve os intros, playbooks e notas de convergência com citações, e `map_sbd_toe_regulatory_activation` / `resolve_entities` expõem o overlay regulatório (frameworks, obrigações, mapeamentos).\n\nA fronteira é o *snapshot*: conteúdo adicionado ao manual web **depois** dele vive só no manual web até nova publicação. A versão servida está em `sbd://toe/version` (ver [content lag](../10-troubleshooting-faq.md#content-lag)).\n\n| Pergunta | Fonte recomendada |\n|---|---|\n| \"Que controlos `CTRL-*` se aplicam a `auth` em L2?\" | **MCP** (`consult_security_requirements`) |\n| \"Que threats existem para `encryption` em L3?\" | **MCP** (`get_threat_landscape`) |\n| \"Como o SbD-ToE responde ao CRA Art. 12?\" | **MCP** (`search_sbd_toe_manual`) — cross-check **CRA** indexado |\n| \"Como o SbD-ToE mapeia o NIS2 Art. 21?\" | **MCP** (`search_sbd_toe_manual`) — cross-check **NIS2** indexado |\n| \"Que obrigações DORA / GDPR aplicam ao meu projecto?\" | **MCP** — cross-checks **DORA** e **GDPR** indexados |\n| \"Como o SbD-ToE responde ao Art. 15 do AI Act?\" | **MCP** (`search_sbd_toe_manual`) — cross-check **AI Act** indexado; o [cross-check web](/sbd-toe/cross-check-normativo/ai-act/intro) para leitura integral |"}
|
|
3997
3997
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--cobertura-actual-no-mcp-o-que-esta-dentro-e-fora--como-confirmar-antes-de-responder", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--cobertura-actual-no-mcp-o-que-esta-dentro-e-fora--como-confirmar-antes-de-responder", "relation_hints": [], "section_path": ["Caso de uso — Cross-check normativo", "Cobertura actual no MCP — o que está dentro e fora", "Como confirmar antes de responder"], "size_estimate": {"approx_tokens": 87, "chars": 345}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Como confirmar antes de responder\n\nEm caso de dúvida sobre se um framework está no KG, correr:\n\n```json\ninspect_sbd_toe_retrieval({\"question\": \"<framework>\", \"topK\": 5})\n```\n\nSe os top-ranked records apontam a `002-cross-check-normativo/<framework>/...` → indexado. Caso contrário → consultar o manual web.", "title": "Como confirmar antes de responder", "traceability": {"line_end": 48, "line_start": 39, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--cobertura-actual-no-mcp-o-que-esta-dentro-e-fora--como-confirmar-antes-de-responder"}, "vector_text": "Como confirmar antes de responder\n\n### Como confirmar antes de responder\n\nEm caso de dúvida sobre se um framework está no KG, correr:\n\n```json\ninspect_sbd_toe_retrieval({\"question\": \"<framework>\", \"topK\": 5})\n```\n\nSe os top-ranked records apontam a `002-cross-check-normativo/<framework>/...` → indexado. Caso contrário → consultar o manual web."}
|
|
3998
3998
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--fluxo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--fluxo", "relation_hints": [], "section_path": ["Caso de uso — Cross-check normativo", "Fluxo"], "size_estimate": {"approx_tokens": 4, "chars": 15}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Fluxo", "title": "Fluxo", "traceability": {"line_end": 50, "line_start": 49, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--fluxo"}, "vector_text": "Fluxo\n\n## Fluxo"}
|
|
3999
3999
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--fluxo--1-identificar-a-obrigacao-regulatoria", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--fluxo--1-identificar-a-obrigacao-regulatoria", "relation_hints": [], "section_path": ["Caso de uso — Cross-check normativo", "Fluxo", "1. Identificar a obrigação regulatória"], "size_estimate": {"approx_tokens": 76, "chars": 301}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### 1. Identificar a obrigação regulatória\n\nDa fonte primária (EUR-Lex / texto do regulamento), extrair:\n- Artigo (ex.: AI Act Art. 15 — *accuracy, robustness and cybersecurity*)\n- Conceitos-chave (ex.: *adversarial examples*, *model evasion*, *data poisoning*)", "title": "1. Identificar a obrigação regulatória", "traceability": {"line_end": 56, "line_start": 51, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--caso-de-uso-cross-check-normativo--fluxo--1-identificar-a-obrigacao-regulatoria"}, "vector_text": "1. Identificar a obrigação regulatória\n\n### 1. Identificar a obrigação regulatória\n\nDa fonte primária (EUR-Lex / texto do regulamento), extrair:\n- Artigo (ex.: AI Act Art. 15 — *accuracy, robustness and cybersecurity*)\n- Conceitos-chave (ex.: *adversarial examples*, *model evasion*, *data poisoning*)"}
|
|
@@ -4010,8 +4010,8 @@
|
|
|
4010
4010
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--cross-check-sbd-toe-regulamento-art-n--residuo-gap--5-nao-declarar-conformidade", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--cross-check-sbd-toe-regulamento-art-n--residuo-gap--5-nao-declarar-conformidade", "relation_hints": [], "section_path": ["Cross-check SbD-ToE × <Regulamento> Art. <N>", "Resíduo / gap", "5. **Não declarar conformidade**"], "size_estimate": {"approx_tokens": 123, "chars": 489}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### 5. **Não declarar conformidade**\n\nO cross-check **mostra como o manual responde** ao regulamento — **não** declara conformidade jurídica. Conformidade requer:\n\n- **Evidência operacional** (logs, attestations, audit reports)\n- **Decisão do *legal counsel*** ou DPO/CISO\n- **Avaliação externa** quando a regulação assim o exige (ex.: AI Act high-risk Art. 43)\n\nMarcar **sempre** o relatório como *\"cross-check técnico — não declaração de conformidade\"*.", "title": "5. **Não declarar conformidade**", "traceability": {"line_end": 125, "line_start": 116, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--cross-check-sbd-toe-regulamento-art-n--residuo-gap--5-nao-declarar-conformidade"}, "vector_text": "5. **Não declarar conformidade**\n\n### 5. **Não declarar conformidade**\n\nO cross-check **mostra como o manual responde** ao regulamento — **não** declara conformidade jurídica. Conformidade requer:\n\n- **Evidência operacional** (logs, attestations, audit reports)\n- **Decisão do *legal counsel*** ou DPO/CISO\n- **Avaliação externa** quando a regulação assim o exige (ex.: AI Act high-risk Art. 43)\n\nMarcar **sempre** o relatório como *\"cross-check técnico — não declaração de conformidade\"*."}
|
|
4011
4011
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--cross-check-sbd-toe-regulamento-art-n--disciplina-de-output", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--cross-check-sbd-toe-regulamento-art-n--disciplina-de-output", "relation_hints": [], "section_path": ["Cross-check SbD-ToE × <Regulamento> Art. <N>", "Disciplina de output"], "size_estimate": {"approx_tokens": 147, "chars": 585}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Disciplina de output\n\n- IDs `CTRL-*` apenas se devolvidos por `query_sbd_toe_entities` ou `consult_security_requirements`.\n- Citações do regulamento **verbatim** com referência precisa (artigo, número, alínea).\n- Diferenciar:\n - **manual-grounded** (do canon SbD-ToE ou de cross-check indexado, via MCP — citar `Document path` e `chapter_id` exactos)\n - **cross-check-web-grounded** (do manual web — usar quando o cross-check **não está** no MCP, hoje o AI Act)\n - **inferred** (deduzido — marcar)\n - **not verified** (não confirmado — não usar como facto)", "title": "Disciplina de output", "traceability": {"line_end": 135, "line_start": 126, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--cross-check-sbd-toe-regulamento-art-n--disciplina-de-output"}, "vector_text": "Disciplina de output\n\n## Disciplina de output\n\n- IDs `CTRL-*` apenas se devolvidos por `query_sbd_toe_entities` ou `consult_security_requirements`.\n- Citações do regulamento **verbatim** com referência precisa (artigo, número, alínea).\n- Diferenciar:\n - **manual-grounded** (do canon SbD-ToE ou de cross-check indexado, via MCP — citar `Document path` e `chapter_id` exactos)\n - **cross-check-web-grounded** (do manual web — usar quando o cross-check **não está** no MCP, hoje o AI Act)\n - **inferred** (deduzido — marcar)\n - **not verified** (não confirmado — não usar como facto)"}
|
|
4012
4012
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--cross-check-sbd-toe-regulamento-art-n--skill-subagent-claude-code", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--cross-check-sbd-toe-regulamento-art-n--skill-subagent-claude-code", "relation_hints": [], "section_path": ["Cross-check SbD-ToE × <Regulamento> Art. <N>", "Skill / subagent — Claude Code"], "size_estimate": {"approx_tokens": 92, "chars": 368}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Skill / subagent — Claude Code\n\n`.claude/agents/sbd-toe-compliance.md`:\n\n```markdown\n---\nname: sbd-toe-compliance\ndescription: Cross-check SbD-ToE × regulamento UE. Usa MCP para frameworks indexados (CRA, DORA, NIS2, GDPR, ENISA-CSA); usa manual web para AI Act. NUNCA declara conformidade.\ntools: WebFetch, Read, mcp__sbd-toe__*\n---", "title": "Skill / subagent — Claude Code", "traceability": {"line_end": 146, "line_start": 136, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--cross-check-sbd-toe-regulamento-art-n--skill-subagent-claude-code"}, "vector_text": "Skill / subagent — Claude Code\n\n## Skill / subagent — Claude Code\n\n`.claude/agents/sbd-toe-compliance.md`:\n\n```markdown\n---\nname: sbd-toe-compliance\ndescription: Cross-check SbD-ToE × regulamento UE. Usa MCP para frameworks indexados (CRA, DORA, NIS2, GDPR, ENISA-CSA); usa manual web para AI Act. NUNCA declara conformidade.\ntools: WebFetch, Read, mcp__sbd-toe__*\n---"}
|
|
4013
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow", "relation_hints": [], "section_path": ["Workflow"], "size_estimate": {"approx_tokens":
|
|
4014
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow--anti-patterns", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow--anti-patterns", "relation_hints": [], "section_path": ["Workflow", "Anti-patterns"], "size_estimate": {"approx_tokens":
|
|
4013
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow", "relation_hints": [], "section_path": ["Workflow"], "size_estimate": {"approx_tokens": 177, "chars": 706}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Workflow\n\n1. Identificar regulamento + artigo alvo. Validar contra EUR-Lex se possível.\n2. Validar indexação no MCP com inspect_sbd_toe_retrieval(question=\"<framework>\", topK=5).\n3. Se indexado: usar search_sbd_toe_manual para extrair excertos do cross-check.\n4. Se NÃO indexado (conteúdo posterior ao snapshot): WebFetch a /sbd-toe/cross-check-normativo/<framework>/.\n5. Para cada CTRL-* / capítulo referido, validar via MCP (query_sbd_toe_entities).\n6. Estruturar relatório com 4 rótulos: manual-grounded, cross-check-web-grounded, inferred, not verified.\n7. Marcar como \"cross-check técnico — não declaração de conformidade\".\n8. Em dúvida: preferir \"not verified\" a inventar uma ligação.\n```", "title": "Workflow", "traceability": {"line_end": 158, "line_start": 147, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow"}, "vector_text": "Workflow\n\n# Workflow\n\n1. Identificar regulamento + artigo alvo. Validar contra EUR-Lex se possível.\n2. Validar indexação no MCP com inspect_sbd_toe_retrieval(question=\"<framework>\", topK=5).\n3. Se indexado: usar search_sbd_toe_manual para extrair excertos do cross-check.\n4. Se NÃO indexado (conteúdo posterior ao snapshot): WebFetch a /sbd-toe/cross-check-normativo/<framework>/.\n5. Para cada CTRL-* / capítulo referido, validar via MCP (query_sbd_toe_entities).\n6. Estruturar relatório com 4 rótulos: manual-grounded, cross-check-web-grounded, inferred, not verified.\n7. Marcar como \"cross-check técnico — não declaração de conformidade\".\n8. Em dúvida: preferir \"not verified\" a inventar uma ligação.\n```"}
|
|
4014
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow--anti-patterns", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow--anti-patterns", "relation_hints": [], "section_path": ["Workflow", "Anti-patterns"], "size_estimate": {"approx_tokens": 162, "chars": 648}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Anti-patterns\n\n- ❌ Inventar ligações SbD-ToE ↔ regulamento que não estejam no cross-check publicado.\n- ❌ Declarar \"compliant with X\" — o cross-check **demonstra cobertura técnica**, não conformidade jurídica.\n- ❌ Confiar **apenas** no MCP para conteúdo posterior ao *snapshot* — confirmar em `sbd://toe/version`; consultar o manual web para o que ainda não foi publicado.\n- ❌ Esquecer-se de procurar via MCP os cross-checks que **estão** indexados (CRA, DORA, NIS2, GDPR, AI Act, ENISA/CSA) — duplica trabalho desnecessariamente.\n- ❌ Esquecer convergências (AI Act ↔ CRA, NIS2 ↔ DORA) — duplicação de trabalho e *gaps* invisíveis.", "title": "Anti-patterns", "traceability": {"line_end": 166, "line_start": 159, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow--anti-patterns"}, "vector_text": "Anti-patterns\n\n## Anti-patterns\n\n- ❌ Inventar ligações SbD-ToE ↔ regulamento que não estejam no cross-check publicado.\n- ❌ Declarar \"compliant with X\" — o cross-check **demonstra cobertura técnica**, não conformidade jurídica.\n- ❌ Confiar **apenas** no MCP para conteúdo posterior ao *snapshot* — confirmar em `sbd://toe/version`; consultar o manual web para o que ainda não foi publicado.\n- ❌ Esquecer-se de procurar via MCP os cross-checks que **estão** indexados (CRA, DORA, NIS2, GDPR, AI Act, ENISA/CSA) — duplica trabalho desnecessariamente.\n- ❌ Esquecer convergências (AI Act ↔ CRA, NIS2 ↔ DORA) — duplicação de trabalho e *gaps* invisíveis."}
|
|
4015
4015
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow--relacionado", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow--relacionado", "relation_hints": [], "section_path": ["Workflow", "Relacionado"], "size_estimate": {"approx_tokens": 66, "chars": 264}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Relacionado\n\n- [Casos de uso — Bootstrap de governança](./governance-bootstrap) — para criar o repo já com placeholders dos artefactos regulatórios.\n- [Troubleshooting / FAQ](../10-troubleshooting-faq.md#content-lag) — sobre o *content lag* do MCP.", "title": "Relacionado", "traceability": {"line_end": 170, "line_start": 167, "source_path": "020-assets/mcp/07-casos-uso/06-cross-check-conformidade.md", "unit_id": "020-assets-mcp-07-casos-uso-06-cross-check-conformidade--workflow--relacionado"}, "vector_text": "Relacionado\n\n## Relacionado\n\n- [Casos de uso — Bootstrap de governança](./governance-bootstrap) — para criar o repo já com placeholders dos artefactos regulatórios.\n- [Troubleshooting / FAQ](../10-troubleshooting-faq.md#content-lag) — sobre o *content lag* do MCP."}
|
|
4016
4016
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc--caso-de-uso-agentic-sdlc-via-mcp", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-07-agentic-sdlc--caso-de-uso-agentic-sdlc-via-mcp", "relation_hints": [], "section_path": ["Caso de uso — Agentic SDLC via MCP"], "size_estimate": {"approx_tokens": 239, "chars": 955}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Caso de uso — Agentic SDLC via MCP\n\nHá uma simetria útil neste caso de uso: o MCP serve para que **o próprio agente que opera o processo agentic** consulte o manual antes de cada decisão. O agente que classifica o nível A0–A4 de outro agente; o agente que produz o *threat model* de outro agente; o agente que regista o *mandate*; o agente que gera a *eval suite*. Em cada paragem do [processo agentic transversal](/sbd-toe/cross-check-normativo/exemplo-playbook/exemplo-agentic-sdlc), o MCP serve como fonte canónica do que o manual diz — para que a decisão fique *grounded*, não improvisada.\n\nO exemplo de cross-check (`exemplo-playbook/exemplo-agentic-sdlc`) descreve **o que** acontece em cada paragem do processo; este caso de uso descreve **como** o MCP é invocado em cada uma. Os dois são deliberadamente acoplados mas separados — a vista regulatória vive no cross-check, a vista operacional via MCP vive aqui.", "title": "Caso de uso — Agentic SDLC via MCP", "traceability": {"line_end": 21, "line_start": 16, "source_path": "020-assets/mcp/07-casos-uso/07-agentic-sdlc.md", "unit_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc--caso-de-uso-agentic-sdlc-via-mcp"}, "vector_text": "Caso de uso — Agentic SDLC via MCP\n\n# Caso de uso — Agentic SDLC via MCP\n\nHá uma simetria útil neste caso de uso: o MCP serve para que **o próprio agente que opera o processo agentic** consulte o manual antes de cada decisão. O agente que classifica o nível A0–A4 de outro agente; o agente que produz o *threat model* de outro agente; o agente que regista o *mandate*; o agente que gera a *eval suite*. Em cada paragem do [processo agentic transversal](/sbd-toe/cross-check-normativo/exemplo-playbook/exemplo-agentic-sdlc), o MCP serve como fonte canónica do que o manual diz — para que a decisão fique *grounded*, não improvisada.\n\nO exemplo de cross-check (`exemplo-playbook/exemplo-agentic-sdlc`) descreve **o que** acontece em cada paragem do processo; este caso de uso descreve **como** o MCP é invocado em cada uma. Os dois são deliberadamente acoplados mas separados — a vista regulatória vive no cross-check, a vista operacional via MCP vive aqui."}
|
|
4017
4017
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc--caso-de-uso-agentic-sdlc-via-mcp--pre-requisitos", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-07-agentic-sdlc--caso-de-uso-agentic-sdlc-via-mcp--pre-requisitos", "relation_hints": [], "section_path": ["Caso de uso — Agentic SDLC via MCP", "Pré-requisitos"], "size_estimate": {"approx_tokens": 87, "chars": 347}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Pré-requisitos\n\n- MCP instalado (ver [Instalação](../03-instalacao.md))\n- Skill canónica em `.claude/skills/sbd-toe.md` (ver [Skills](../04-skills-agentes.md))\n- Familiaridade com o [processo agentic transversal](/sbd-toe/cross-check-normativo/exemplo-playbook/exemplo-agentic-sdlc) — esta receita assume que estás a percorrê-lo", "title": "Pré-requisitos", "traceability": {"line_end": 27, "line_start": 22, "source_path": "020-assets/mcp/07-casos-uso/07-agentic-sdlc.md", "unit_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc--caso-de-uso-agentic-sdlc-via-mcp--pre-requisitos"}, "vector_text": "Pré-requisitos\n\n## Pré-requisitos\n\n- MCP instalado (ver [Instalação](../03-instalacao.md))\n- Skill canónica em `.claude/skills/sbd-toe.md` (ver [Skills](../04-skills-agentes.md))\n- Familiaridade com o [processo agentic transversal](/sbd-toe/cross-check-normativo/exemplo-playbook/exemplo-agentic-sdlc) — esta receita assume que estás a percorrê-lo"}
|
|
@@ -4023,7 +4023,7 @@
|
|
|
4023
4023
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc--hard-rules", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-07-agentic-sdlc--hard-rules", "relation_hints": [], "section_path": ["Hard rules"], "size_estimate": {"approx_tokens": 90, "chars": 357}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Hard rules\n\n- citation_map (quando `prepare_sbd_toe_codegen_context` é usado) é\n mundo fechado de IDs válidos — não inventar.\n- Em dúvida, marcar `not verified` em vez de assumir.\n- Em decisões A3/A4, propor mas nunca decidir; escalação ao CISO via\n Policy 38 §5.3 é obrigatória.\n- mandate_ref preservado em qualquer artefacto produzido.\n```", "title": "Hard rules", "traceability": {"line_end": 112, "line_start": 103, "source_path": "020-assets/mcp/07-casos-uso/07-agentic-sdlc.md", "unit_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc--hard-rules"}, "vector_text": "Hard rules\n\n# Hard rules\n\n- citation_map (quando `prepare_sbd_toe_codegen_context` é usado) é\n mundo fechado de IDs válidos — não inventar.\n- Em dúvida, marcar `not verified` em vez de assumir.\n- Em decisões A3/A4, propor mas nunca decidir; escalação ao CISO via\n Policy 38 §5.3 é obrigatória.\n- mandate_ref preservado em qualquer artefacto produzido.\n```"}
|
|
4024
4024
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc--hard-rules--anti-patterns", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-07-agentic-sdlc--hard-rules--anti-patterns", "relation_hints": [], "section_path": ["Hard rules", "Anti-patterns"], "size_estimate": {"approx_tokens": 196, "chars": 782}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Anti-patterns\n\n- ❌ **\"O Claude consultou o MCP e disse que sim\"** sem citar IDs concretos — desperdiça a vantagem do MCP, que é grounding citável.\n- ❌ **Não distinguir `manual-grounded` de `observed`** — o manual diz X, o repo está em estado Y; estes são dois factos diferentes e a sua conjugação é uma inferência.\n- ❌ **Saltar paragens \"porque já está coberto\"** — cada paragem tem critério de aceitação próprio; \"implícito\" não conta como evidência.\n- ❌ **Promover de nível A com base em interacções soltas no chat sem audit `mandate_ref`** — viola Policy 38 §5.5 (sem *amendments* informais).\n- ❌ **Tratar o MCP como oráculo** — o MCP devolve o que o manual diz; a interpretação para o caso concreto continua ser de quem opera (humano + agente como assistente).", "title": "Anti-patterns", "traceability": {"line_end": 120, "line_start": 113, "source_path": "020-assets/mcp/07-casos-uso/07-agentic-sdlc.md", "unit_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc--hard-rules--anti-patterns"}, "vector_text": "Anti-patterns\n\n## Anti-patterns\n\n- ❌ **\"O Claude consultou o MCP e disse que sim\"** sem citar IDs concretos — desperdiça a vantagem do MCP, que é grounding citável.\n- ❌ **Não distinguir `manual-grounded` de `observed`** — o manual diz X, o repo está em estado Y; estes são dois factos diferentes e a sua conjugação é uma inferência.\n- ❌ **Saltar paragens \"porque já está coberto\"** — cada paragem tem critério de aceitação próprio; \"implícito\" não conta como evidência.\n- ❌ **Promover de nível A com base em interacções soltas no chat sem audit `mandate_ref`** — viola Policy 38 §5.5 (sem *amendments* informais).\n- ❌ **Tratar o MCP como oráculo** — o MCP devolve o que o manual diz; a interpretação para o caso concreto continua ser de quem opera (humano + agente como assistente)."}
|
|
4025
4025
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc--hard-rules--relacionado", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-07-agentic-sdlc--hard-rules--relacionado", "relation_hints": [], "section_path": ["Hard rules", "Relacionado"], "size_estimate": {"approx_tokens": 190, "chars": 760}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Relacionado\n\n- **Vista regulatória do mesmo processo**: [Cross-check — Agentic SDLC ponta-a-ponta](/sbd-toe/cross-check-normativo/exemplo-playbook/exemplo-agentic-sdlc) — descreve **o quê** e mapeia para AI Act/NIS2/DORA/CRA\n- [Caso de uso — Codegen grounded](./codegen-grounded) — disciplina de `citation_map` aplicada a *codegen*\n- [Caso de uso — Threat modeling](./threat-modeling) — paragem 2 detalhada\n- [Caso de uso — Bootstrap de governança](./governance-bootstrap) — paragem 4 detalhada (mandate scaffolding)\n- [Caso de uso — Auditoria de PR](./auditoria-pr) — caso operacional realista de agente A2\n- [Epistemica & anti-patterns](../09-epistemica-anti-patterns.md) — rótulos `manual-grounded` / `observed` / `inferred` / `not verified`", "title": "Relacionado", "traceability": {"line_end": 128, "line_start": 121, "source_path": "020-assets/mcp/07-casos-uso/07-agentic-sdlc.md", "unit_id": "020-assets-mcp-07-casos-uso-07-agentic-sdlc--hard-rules--relacionado"}, "vector_text": "Relacionado\n\n## Relacionado\n\n- **Vista regulatória do mesmo processo**: [Cross-check — Agentic SDLC ponta-a-ponta](/sbd-toe/cross-check-normativo/exemplo-playbook/exemplo-agentic-sdlc) — descreve **o quê** e mapeia para AI Act/NIS2/DORA/CRA\n- [Caso de uso — Codegen grounded](./codegen-grounded) — disciplina de `citation_map` aplicada a *codegen*\n- [Caso de uso — Threat modeling](./threat-modeling) — paragem 2 detalhada\n- [Caso de uso — Bootstrap de governança](./governance-bootstrap) — paragem 4 detalhada (mandate scaffolding)\n- [Caso de uso — Auditoria de PR](./auditoria-pr) — caso operacional realista de agente A2\n- [Epistemica & anti-patterns](../09-epistemica-anti-patterns.md) — rótulos `manual-grounded` / `observed` / `inferred` / `not verified`"}
|
|
4026
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-index--casos-de-uso", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-index", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-index--casos-de-uso", "relation_hints": [], "section_path": ["Casos de uso"], "size_estimate": {"approx_tokens":
|
|
4026
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-index--casos-de-uso", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-index", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-index--casos-de-uso", "relation_hints": [], "section_path": ["Casos de uso"], "size_estimate": {"approx_tokens": 703, "chars": 2812}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Casos de uso\n\nA maior parte dos workflows de equipa de software acaba por cair em meia dúzia de padrões — alguém faz um PR e precisa de o auditar; alguém vai escrever código sensível e quer fazê-lo *grounded* num manual; alguém arranca um repo novo e quer alinhamento desde o início. Em vez de reinventar o uso do MCP a cada vez, esta secção junta seis receitas testadas, cada uma já pensada em torno do que tipicamente se quer.\n\nCada receita tem o mesmo esqueleto:\n\n- **Quando aplicar** — sinal de gatilho para o agente\n- **Sequência de chamadas MCP** — tools, resources, prompts na ordem correcta\n- **Disciplina de output** — formato, IDs a citar, anti-patterns a evitar\n- **Skill / subagent file** — *snippet* pronto a guardar no cliente\n\nEscolher pelo caso que mais se parece com o trabalho em mãos hoje:\n\n <UseCaseCard\n icon=\"🔍\"\n title=\"Auditoria de PR\"\n summary=\"Review automatizada de Pull Requests contra os controlos activos do risk_level do projecto — findings citáveis por CTRL-*.\"\n to=\"./auditoria-pr\"\n tags={['review', 'PR', 'CTRL-*']}\n />\n <UseCaseCard\n icon=\"⚙️\"\n title=\"Codegen grounded\"\n summary=\"Gerar código com prepare_sbd_toe_codegen_context — 4 status (ready / clarification / decomposition / unsupported) e disciplina de citation_map.\"\n to=\"./codegen-grounded\"\n tags={['codegen', 'citation_map', 'security_rationale']}\n />\n <UseCaseCard\n icon=\"🎯\"\n title=\"Threat modeling\"\n summary=\"Combinar get_threat_landscape + consult_security_requirements por concern (auth, api, encryption…) para gerar threat models grounded.\"\n to=\"./threat-modeling\"\n tags={['threats', 'STRIDE', 'concerns']}\n />\n <UseCaseCard\n icon=\"🏗️\"\n title=\"Bootstrap de governança\"\n summary=\"Aplicar plan_sbd_toe_repo_governance num repo novo — lista de artefactos por capítulo e scaffold automático.\"\n to=\"./governance-bootstrap\"\n tags={['governance', 'artefactos', 'bootstrap']}\n />\n <UseCaseCard\n icon=\"🎓\"\n title=\"Onboarding por role\"\n summary=\"get_guide_by_role(risk_level, role) para gerar guia de onboarding personalizado — práticas por fase do SDLC, user stories joined.\"\n to=\"./onboarding-formacao\"\n tags={['onboarding', 'roles', 'training']}\n />\n <UseCaseCard\n icon=\"📋\"\n title=\"Cross-check normativo\"\n summary=\"Cruzar SbD-ToE com CRA, DORA, NIS2, GDPR, AI Act e ENISA/CSA via MCP — os seis indexados no KG em 0.10.2.\"\n to=\"./cross-check-conformidade\"\n tags={['compliance', 'AI Act', 'CRA', 'DORA']}\n />\n <UseCaseCard\n icon=\"🧭\"\n title=\"Agentic SDLC via MCP\"\n summary=\"Como o MCP suporta cada paragem do processo agentic ponta-a-ponta — do mandate ao kill-switch — com a tool certa para cada decisão.\"\n to=\"./agentic-sdlc\"\n tags={['agentic', 'SDLC', 'mandate', 'eval-suite']}\n />\n\n---", "title": "Casos de uso", "traceability": {"line_end": 78, "line_start": 14, "source_path": "020-assets/mcp/07-casos-uso/index.mdx", "unit_id": "020-assets-mcp-07-casos-uso-index--casos-de-uso"}, "vector_text": "Casos de uso\n\n# Casos de uso\n\nA maior parte dos workflows de equipa de software acaba por cair em meia dúzia de padrões — alguém faz um PR e precisa de o auditar; alguém vai escrever código sensível e quer fazê-lo *grounded* num manual; alguém arranca um repo novo e quer alinhamento desde o início. Em vez de reinventar o uso do MCP a cada vez, esta secção junta seis receitas testadas, cada uma já pensada em torno do que tipicamente se quer.\n\nCada receita tem o mesmo esqueleto:\n\n- **Quando aplicar** — sinal de gatilho para o agente\n- **Sequência de chamadas MCP** — tools, resources, prompts na ordem correcta\n- **Disciplina de output** — formato, IDs a citar, anti-patterns a evitar\n- **Skill / subagent file** — *snippet* pronto a guardar no cliente\n\nEscolher pelo caso que mais se parece com o trabalho em mãos hoje:\n\n <UseCaseCard\n icon=\"🔍\"\n title=\"Auditoria de PR\"\n summary=\"Review automatizada de Pull Requests contra os controlos activos do risk_level do projecto — findings citáveis por CTRL-*.\"\n to=\"./auditoria-pr\"\n tags={['review', 'PR', 'CTRL-*']}\n />\n <UseCaseCard\n icon=\"⚙️\"\n title=\"Codegen grounded\"\n summary=\"Gerar código com prepare_sbd_toe_codegen_context — 4 status (ready / clarification / decomposition / unsupported) e disciplina de citation_map.\"\n to=\"./codegen-grounded\"\n tags={['codegen', 'citation_map', 'security_rationale']}\n />\n <UseCaseCard\n icon=\"🎯\"\n title=\"Threat modeling\"\n summary=\"Combinar get_threat_landscape + consult_security_requirements por concern (auth, api, encryption…) para gerar threat models grounded.\"\n to=\"./threat-modeling\"\n tags={['threats', 'STRIDE', 'concerns']}\n />\n <UseCaseCard\n icon=\"🏗️\"\n title=\"Bootstrap de governança\"\n summary=\"Aplicar plan_sbd_toe_repo_governance num repo novo — lista de artefactos por capítulo e scaffold automático.\"\n to=\"./governance-bootstrap\"\n tags={['governance', 'artefactos', 'bootstrap']}\n />\n <UseCaseCard\n icon=\"🎓\"\n title=\"Onboarding por role\"\n summary=\"get_guide_by_role(risk_level, role) para gerar guia de onboarding personalizado — práticas por fase do SDLC, user stories joined.\"\n to=\"./onboarding-formacao\"\n tags={['onboarding', 'roles', 'training']}\n />\n <UseCaseCard\n icon=\"📋\"\n title=\"Cross-check normativo\"\n summary=\"Cruzar SbD-ToE com CRA, DORA, NIS2, GDPR, AI Act e ENISA/CSA via MCP — os seis indexados no KG em 0.10.2.\"\n to=\"./cross-check-conformidade\"\n tags={['compliance', 'AI Act', 'CRA', 'DORA']}\n />\n <UseCaseCard\n icon=\"🧭\"\n title=\"Agentic SDLC via MCP\"\n summary=\"Como o MCP suporta cada paragem do processo agentic ponta-a-ponta — do mandate ao kill-switch — com a tool certa para cada decisão.\"\n to=\"./agentic-sdlc\"\n tags={['agentic', 'SDLC', 'mandate', 'eval-suite']}\n />\n\n---"}
|
|
4027
4027
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-index--casos-de-uso--como-ler-cada-receita", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-07-casos-uso-index", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-index--casos-de-uso--como-ler-cada-receita", "relation_hints": [], "section_path": ["Casos de uso", "Como ler cada receita"], "size_estimate": {"approx_tokens": 203, "chars": 809}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Como ler cada receita\n\n> 💡 O caso **Agentic SDLC via MCP** é a vista operacional do [processo agentic ponta-a-ponta](/sbd-toe/cross-check-normativo/exemplo-playbook/exemplo-agentic-sdlc) (cross-check transversal). São acoplados mas separados — a vista regulatória vive no cross-check, a vista de uso do MCP vive aqui.\n\nCada página segue a mesma estrutura:\n\n1. **Cenário** — uma situação concreta em prosa.\n2. **Pré-requisitos** — *risk level* + *role* + skill instalada.\n3. **Fluxo** — sequência de chamadas MCP (com input/output esperado).\n4. **Disciplina de output** — formato do relatório final + rótulos epistémicos.\n5. **Skill / subagent snippet** — texto pronto a guardar (`.claude/skills/...`, `.github/copilot-instructions.md`, …).\n6. **Anti-patterns** — o que **não** fazer.", "title": "Como ler cada receita", "traceability": {"line_end": 91, "line_start": 79, "source_path": "020-assets/mcp/07-casos-uso/index.mdx", "unit_id": "020-assets-mcp-07-casos-uso-index--casos-de-uso--como-ler-cada-receita"}, "vector_text": "Como ler cada receita\n\n## Como ler cada receita\n\n> 💡 O caso **Agentic SDLC via MCP** é a vista operacional do [processo agentic ponta-a-ponta](/sbd-toe/cross-check-normativo/exemplo-playbook/exemplo-agentic-sdlc) (cross-check transversal). São acoplados mas separados — a vista regulatória vive no cross-check, a vista de uso do MCP vive aqui.\n\nCada página segue a mesma estrutura:\n\n1. **Cenário** — uma situação concreta em prosa.\n2. **Pré-requisitos** — *risk level* + *role* + skill instalada.\n3. **Fluxo** — sequência de chamadas MCP (com input/output esperado).\n4. **Disciplina de output** — formato do relatório final + rótulos epistémicos.\n5. **Skill / subagent snippet** — texto pronto a guardar (`.claude/skills/...`, `.github/copilot-instructions.md`, …).\n6. **Anti-patterns** — o que **não** fazer."}
|
|
4028
4028
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-index--casos-de-uso--atalhos-por-risk-level", "chunk_kind": "table_section", "document_id": "020-assets-mcp-07-casos-uso-index", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-index--casos-de-uso--atalhos-por-risk-level", "relation_hints": [], "section_path": ["Casos de uso", "Atalhos por *risk level*"], "size_estimate": {"approx_tokens": 115, "chars": 459}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Atalhos por *risk level*\n\n| Risk level | Casos típicos prioritários |\n|---|---|\n| **L1** | [Bootstrap de governança](./04-governance-bootstrap.md) · [Onboarding](./05-onboarding-formacao.md) |\n| **L2** | [Auditoria de PR](./01-auditoria-pr.md) · [Codegen grounded](./02-codegen-grounded.md) · [Threat modeling](./03-threat-modeling.md) |\n| **L3** | Todos os anteriores + [Cross-check normativo](./06-cross-check-conformidade.md) |", "title": "Atalhos por *risk level*", "traceability": {"line_end": 99, "line_start": 92, "source_path": "020-assets/mcp/07-casos-uso/index.mdx", "unit_id": "020-assets-mcp-07-casos-uso-index--casos-de-uso--atalhos-por-risk-level"}, "vector_text": "Atalhos por *risk level*\n\n## Atalhos por *risk level*\n\n| Risk level | Casos típicos prioritários |\n|---|---|\n| **L1** | [Bootstrap de governança](./04-governance-bootstrap.md) · [Onboarding](./05-onboarding-formacao.md) |\n| **L2** | [Auditoria de PR](./01-auditoria-pr.md) · [Codegen grounded](./02-codegen-grounded.md) · [Threat modeling](./03-threat-modeling.md) |\n| **L3** | Todos os anteriores + [Cross-check normativo](./06-cross-check-conformidade.md) |"}
|
|
4029
4029
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-07-casos-uso-index--casos-de-uso--atalhos-por-role", "chunk_kind": "table_section", "document_id": "020-assets-mcp-07-casos-uso-index", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-07-casos-uso-index--casos-de-uso--atalhos-por-role", "relation_hints": [], "section_path": ["Casos de uso", "Atalhos por *role*"], "size_estimate": {"approx_tokens": 137, "chars": 546}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Atalhos por *role*\n\n| Role | Caso de uso prioritário |\n|---|---|\n| `developer` | [Codegen grounded](./02-codegen-grounded.md) |\n| `appsec-engineer` | [Auditoria de PR](./01-auditoria-pr.md) · [Threat modeling](./03-threat-modeling.md) |\n| `arquitetos-software` | [Threat modeling](./03-threat-modeling.md) |\n| `grc-compliance` / `auditores` | [Cross-check normativo](./06-cross-check-conformidade.md) · [Bootstrap de governança](./04-governance-bootstrap.md) |\n| `scrum-master` | [Onboarding](./05-onboarding-formacao.md) |", "title": "Atalhos por *role*", "traceability": {"line_end": 108, "line_start": 100, "source_path": "020-assets/mcp/07-casos-uso/index.mdx", "unit_id": "020-assets-mcp-07-casos-uso-index--casos-de-uso--atalhos-por-role"}, "vector_text": "Atalhos por *role*\n\n## Atalhos por *role*\n\n| Role | Caso de uso prioritário |\n|---|---|\n| `developer` | [Codegen grounded](./02-codegen-grounded.md) |\n| `appsec-engineer` | [Auditoria de PR](./01-auditoria-pr.md) · [Threat modeling](./03-threat-modeling.md) |\n| `arquitetos-software` | [Threat modeling](./03-threat-modeling.md) |\n| `grc-compliance` / `auditores` | [Cross-check normativo](./06-cross-check-conformidade.md) · [Bootstrap de governança](./04-governance-bootstrap.md) |\n| `scrum-master` | [Onboarding](./05-onboarding-formacao.md) |"}
|
|
@@ -4041,7 +4041,7 @@
|
|
|
4041
4041
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-3-analise-de-change-set-pr-grande", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-08-padroes-avancados", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-3-analise-de-change-set-pr-grande", "relation_hints": [], "section_path": ["Security Plan — <feature>", "Padrão 3 — Análise de change set (PR grande)"], "size_estimate": {"approx_tokens": 180, "chars": 720}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Padrão 3 — Análise de change set (PR grande)\n\nPara PRs que tocam **múltiplos capítulos** simultaneamente. Versão expandida da [auditoria de PR](./casos-uso/auditoria-pr).\n\n```\n1. map_sbd_toe_review_scope(changed_files)\n ↳ bundles N a rever\n\n2. Para cada bundle:\n a. get_sbd_toe_chapter_brief(chapter_id) # contexto\n b. consult_security_requirements(risk_level, concerns_inferred)\n c. Examinar hunks relevantes do PR\n\n3. consolidar findings agrupados por chapter\n```\n\n**Quando dividir o PR em vez de auditar inteiro:**\n\n- Se `map_sbd_toe_review_scope` devolver > 3 bundles + áreas tematicamente distintas → sugerir *PR split* ao autor antes de auditar.\n\n---", "title": "Padrão 3 — Análise de change set (PR grande)", "traceability": {"line_end": 115, "line_start": 94, "source_path": "020-assets/mcp/08-padroes-avancados.md", "unit_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-3-analise-de-change-set-pr-grande"}, "vector_text": "Padrão 3 — Análise de change set (PR grande)\n\n## Padrão 3 — Análise de change set (PR grande)\n\nPara PRs que tocam **múltiplos capítulos** simultaneamente. Versão expandida da [auditoria de PR](./casos-uso/auditoria-pr).\n\n```\n1. map_sbd_toe_review_scope(changed_files)\n ↳ bundles N a rever\n\n2. Para cada bundle:\n a. get_sbd_toe_chapter_brief(chapter_id) # contexto\n b. consult_security_requirements(risk_level, concerns_inferred)\n c. Examinar hunks relevantes do PR\n\n3. consolidar findings agrupados por chapter\n```\n\n**Quando dividir o PR em vez de auditar inteiro:**\n\n- Se `map_sbd_toe_review_scope` devolver > 3 bundles + áreas tematicamente distintas → sugerir *PR split* ao autor antes de auditar.\n\n---"}
|
|
4042
4042
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-4-sweep-de-findings-auditoria-periodica", "chunk_kind": "table_section", "document_id": "020-assets-mcp-08-padroes-avancados", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-4-sweep-de-findings-auditoria-periodica", "relation_hints": [], "section_path": ["Security Plan — <feature>", "Padrão 4 — Sweep de findings (auditoria periódica)"], "size_estimate": {"approx_tokens": 252, "chars": 1007}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Padrão 4 — Sweep de findings (auditoria periódica)\n\n**Objetivo:** auditoria periódica do repo inteiro — não só do PR, mas do estado actual.\n\n```\n1. plan_sbd_toe_repo_governance()\n ↳ artefactos requeridos\n\n2. Verificar quais existem no repo (Glob / Read)\n\n3. Para artefactos em falta:\n a. get_sbd_toe_chapter_brief(chapter_id) — para conhecer o conteúdo esperado\n b. flag como gap\n\n4. Para artefactos existentes mas desactualizados:\n a. Verificar last-updated vs version do MCP\n b. flag para revisão\n\n5. Para CTRL-* críticos (L3 / regulado):\n a. consult_security_requirements(risk_level, all_concerns)\n b. Procurar evidência no repo (logs/, tests/, attestations/)\n c. flag não-cobertos\n```\n\n**Output:** dashboard com 3 colunas:\n\n| Estado | Significado |\n|---|---|\n| ✅ **Coberto** | Artefacto/control com evidência |\n| ⚠️ **Em risco** | Artefacto existe, mas desactualizado/incompleto |\n| ❌ **Gap** | Não existe / evidência ausente |\n\n---", "title": "Padrão 4 — Sweep de findings (auditoria periódica)", "traceability": {"line_end": 149, "line_start": 116, "source_path": "020-assets/mcp/08-padroes-avancados.md", "unit_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-4-sweep-de-findings-auditoria-periodica"}, "vector_text": "Padrão 4 — Sweep de findings (auditoria periódica)\n\n## Padrão 4 — Sweep de findings (auditoria periódica)\n\n**Objetivo:** auditoria periódica do repo inteiro — não só do PR, mas do estado actual.\n\n```\n1. plan_sbd_toe_repo_governance()\n ↳ artefactos requeridos\n\n2. Verificar quais existem no repo (Glob / Read)\n\n3. Para artefactos em falta:\n a. get_sbd_toe_chapter_brief(chapter_id) — para conhecer o conteúdo esperado\n b. flag como gap\n\n4. Para artefactos existentes mas desactualizados:\n a. Verificar last-updated vs version do MCP\n b. flag para revisão\n\n5. Para CTRL-* críticos (L3 / regulado):\n a. consult_security_requirements(risk_level, all_concerns)\n b. Procurar evidência no repo (logs/, tests/, attestations/)\n c. flag não-cobertos\n```\n\n**Output:** dashboard com 3 colunas:\n\n| Estado | Significado |\n|---|---|\n| ✅ **Coberto** | Artefacto/control com evidência |\n| ⚠️ **Em risco** | Artefacto existe, mas desactualizado/incompleto |\n| ❌ **Gap** | Não existe / evidência ausente |\n\n---"}
|
|
4043
4043
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-5-iteracao-de-codegen-com-falhas-padrao-5", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-08-padroes-avancados", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-5-iteracao-de-codegen-com-falhas-padrao-5", "relation_hints": [], "section_path": ["Security Plan — <feature>", "Padrão 5 — Iteração de codegen com falhas {#padrao-5}"], "size_estimate": {"approx_tokens": 192, "chars": 766}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Padrão 5 — Iteração de codegen com falhas {#padrao-5}\n\nQuando `prepare_sbd_toe_codegen_context` devolve `needs_decomposition` repetidamente:\n\n```\n1. Primeira chamada com a task original\n → needs_decomposition\n\n2. Tomar uma das sub-tarefas sugeridas (apenas UMA)\n 2.a. Re-chamar com a sub-task isolada\n 2.b. Se ready_for_codegen → gerar\n 2.c. Se needs_clarification → dialogar com utilizador\n 2.d. Se needs_decomposition de novo → STOP, escalar com o utilizador\n (sinal de que o conceito-mãe precisa de reformulação prévia)\n\n3. NUNCA re-chamar com o mesmo payload após needs_*\n```\n\n**Anti-pattern:** *brute-force* — re-chamar com tweaks cosméticos para evitar o gate. O gate é por design.\n\n---", "title": "Padrão 5 — Iteração de codegen com falhas {#padrao-5}", "traceability": {"line_end": 171, "line_start": 150, "source_path": "020-assets/mcp/08-padroes-avancados.md", "unit_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-5-iteracao-de-codegen-com-falhas-padrao-5"}, "vector_text": "Padrão 5 — Iteração de codegen com falhas {#padrao-5}\n\n## Padrão 5 — Iteração de codegen com falhas {#padrao-5}\n\nQuando `prepare_sbd_toe_codegen_context` devolve `needs_decomposition` repetidamente:\n\n```\n1. Primeira chamada com a task original\n → needs_decomposition\n\n2. Tomar uma das sub-tarefas sugeridas (apenas UMA)\n 2.a. Re-chamar com a sub-task isolada\n 2.b. Se ready_for_codegen → gerar\n 2.c. Se needs_clarification → dialogar com utilizador\n 2.d. Se needs_decomposition de novo → STOP, escalar com o utilizador\n (sinal de que o conceito-mãe precisa de reformulação prévia)\n\n3. NUNCA re-chamar com o mesmo payload após needs_*\n```\n\n**Anti-pattern:** *brute-force* — re-chamar com tweaks cosméticos para evitar o gate. O gate é por design.\n\n---"}
|
|
4044
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-6-cross-check-normativo-via-mcp-ou-manual-web", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-08-padroes-avancados", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-6-cross-check-normativo-via-mcp-ou-manual-web", "relation_hints": [], "section_path": ["Security Plan — <feature>", "Padrão 6 — Cross-check normativo (via MCP ou manual web)"], "size_estimate": {"approx_tokens":
|
|
4044
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-6-cross-check-normativo-via-mcp-ou-manual-web", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-08-padroes-avancados", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-6-cross-check-normativo-via-mcp-ou-manual-web", "relation_hints": [], "section_path": ["Security Plan — <feature>", "Padrão 6 — Cross-check normativo (via MCP ou manual web)"], "size_estimate": {"approx_tokens": 250, "chars": 997}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Padrão 6 — Cross-check normativo (via MCP ou manual web)\n\nPara perguntas que envolvem regulamentos UE:\n\n```\n1. Identificar a obrigação no regulamento (EUR-Lex)\n\n2. Verificar se o framework está indexado no MCP:\n inspect_sbd_toe_retrieval({question: \"<framework>\", topK: 5})\n\n Indexados em 0.10.2: CRA, DORA, NIS2, GDPR, AI Act, ENISA-CSA (os seis)\n Fora do índice: só conteúdo posterior ao snapshot (ver sbd://toe/version)\n\n3. Se indexado:\n search_sbd_toe_manual({question: \"<artigo + tópico>\"})\n\n Se NÃO indexado (conteúdo posterior ao snapshot):\n consultar /sbd-toe/cross-check-normativo/ai-act/ no manual web\n\n4. Validar cada CTRL-* referido via MCP (resolução por id exato):\n query_sbd_toe_entities({query: \"<CTRL-id exato>\"})\n\n5. Estruturar relatório com 4 rótulos epistémicos\n (ver disciplina-epistemica)\n```\n\nDetalhe completo em [Caso de uso — Cross-check normativo](./casos-uso/cross-check-conformidade).\n\n---", "title": "Padrão 6 — Cross-check normativo (via MCP ou manual web)", "traceability": {"line_end": 201, "line_start": 172, "source_path": "020-assets/mcp/08-padroes-avancados.md", "unit_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-6-cross-check-normativo-via-mcp-ou-manual-web"}, "vector_text": "Padrão 6 — Cross-check normativo (via MCP ou manual web)\n\n## Padrão 6 — Cross-check normativo (via MCP ou manual web)\n\nPara perguntas que envolvem regulamentos UE:\n\n```\n1. Identificar a obrigação no regulamento (EUR-Lex)\n\n2. Verificar se o framework está indexado no MCP:\n inspect_sbd_toe_retrieval({question: \"<framework>\", topK: 5})\n\n Indexados em 0.10.2: CRA, DORA, NIS2, GDPR, AI Act, ENISA-CSA (os seis)\n Fora do índice: só conteúdo posterior ao snapshot (ver sbd://toe/version)\n\n3. Se indexado:\n search_sbd_toe_manual({question: \"<artigo + tópico>\"})\n\n Se NÃO indexado (conteúdo posterior ao snapshot):\n consultar /sbd-toe/cross-check-normativo/ai-act/ no manual web\n\n4. Validar cada CTRL-* referido via MCP (resolução por id exato):\n query_sbd_toe_entities({query: \"<CTRL-id exato>\"})\n\n5. Estruturar relatório com 4 rótulos epistémicos\n (ver disciplina-epistemica)\n```\n\nDetalhe completo em [Caso de uso — Cross-check normativo](./casos-uso/cross-check-conformidade).\n\n---"}
|
|
4045
4045
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-7-discovery-de-roles-para-uma-fase", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-08-padroes-avancados", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-7-discovery-de-roles-para-uma-fase", "relation_hints": [], "section_path": ["Security Plan — <feature>", "Padrão 7 — Discovery de roles para uma fase"], "size_estimate": {"approx_tokens": 143, "chars": 572}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Padrão 7 — Discovery de roles para uma fase\n\n**Objetivo:** \"Quem faz o quê na fase X?\" — útil para *retrospectives*, RACI, mapeamento RACI por feature.\n\n```\n1. get_guide_by_role(risk_level) # contagens\n ↳ role_summary{} + phase_summary{}\n\n2. Para cada role com > 0 atribuições na fase X:\n get_guide_by_role(risk_level, role, phase=X)\n ↳ assignments[]\n\n3. Agrupar por practice_id — mostrar overlapping (mais de 1 role para a mesma practice)\n```\n\n**Output:** matriz role × practice para a fase X.\n\n---", "title": "Padrão 7 — Discovery de roles para uma fase", "traceability": {"line_end": 220, "line_start": 202, "source_path": "020-assets/mcp/08-padroes-avancados.md", "unit_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--padrao-7-discovery-de-roles-para-uma-fase"}, "vector_text": "Padrão 7 — Discovery de roles para uma fase\n\n## Padrão 7 — Discovery de roles para uma fase\n\n**Objetivo:** \"Quem faz o quê na fase X?\" — útil para *retrospectives*, RACI, mapeamento RACI por feature.\n\n```\n1. get_guide_by_role(risk_level) # contagens\n ↳ role_summary{} + phase_summary{}\n\n2. Para cada role com > 0 atribuições na fase X:\n get_guide_by_role(risk_level, role, phase=X)\n ↳ assignments[]\n\n3. Agrupar por practice_id — mostrar overlapping (mais de 1 role para a mesma practice)\n```\n\n**Output:** matriz role × practice para a fase X.\n\n---"}
|
|
4046
4046
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--quando-usar-inspect-sbd-toe-retrieval", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-08-padroes-avancados", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-08-padroes-avancados--security-plan-feature--quando-usar-inspect-sbd-toe-retrieval", "relation_hints": [], "section_path": ["Security Plan — <feature>", "Quando usar `inspect_sbd_toe_retrieval`"], "size_estimate": {"approx_tokens": 177, "chars": 706}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Quando usar `inspect_sbd_toe_retrieval`\n\nDiagnóstico para queries que devolvem resultados inesperados:\n\n- `search_sbd_toe_manual` devolve resultados *off-topic*\n- `consult_security_requirements` tem `rule_trace` incompleto\n- `get_threat_landscape` devolve `threats: []` quando esperavas o contrário\n\n```\ninspect_sbd_toe_retrieval({query: \"<query original>\"})\n```\n\nDevolve ranking, *scores*, `rule_trace` completo. Útil para perceber se o problema é:\n- *Vocabulary mismatch* (`auth` em vez de `authentication`) → ajustar\n- *Risk level* errado → re-classificar\n- *Content lag* (ver [troubleshooting](./10-troubleshooting-faq.md#content-lag)) → consultar manual web", "title": "Quando usar `inspect_sbd_toe_retrieval`", "traceability": {"line_end": 237, "line_start": 221, "source_path": "020-assets/mcp/08-padroes-avancados.md", "unit_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--quando-usar-inspect-sbd-toe-retrieval"}, "vector_text": "Quando usar `inspect_sbd_toe_retrieval`\n\n## Quando usar `inspect_sbd_toe_retrieval`\n\nDiagnóstico para queries que devolvem resultados inesperados:\n\n- `search_sbd_toe_manual` devolve resultados *off-topic*\n- `consult_security_requirements` tem `rule_trace` incompleto\n- `get_threat_landscape` devolve `threats: []` quando esperavas o contrário\n\n```\ninspect_sbd_toe_retrieval({query: \"<query original>\"})\n```\n\nDevolve ranking, *scores*, `rule_trace` completo. Útil para perceber se o problema é:\n- *Vocabulary mismatch* (`auth` em vez de `authentication`) → ajustar\n- *Risk level* errado → re-classificar\n- *Content lag* (ver [troubleshooting](./10-troubleshooting-faq.md#content-lag)) → consultar manual web"}
|
|
4047
4047
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--a-seguir", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-08-padroes-avancados", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-08-padroes-avancados--security-plan-feature--a-seguir", "relation_hints": [], "section_path": ["Security Plan — <feature>", "A seguir"], "size_estimate": {"approx_tokens": 53, "chars": 211}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## A seguir\n\n- [Disciplina epistémica e anti-patterns](./09-epistemica-anti-patterns.md) — o que **não** fazer com os outputs.\n- [Casos de uso](./casos-uso/) — para versões mais focadas destes padrões.", "title": "A seguir", "traceability": {"line_end": 241, "line_start": 238, "source_path": "020-assets/mcp/08-padroes-avancados.md", "unit_id": "020-assets-mcp-08-padroes-avancados--security-plan-feature--a-seguir"}, "vector_text": "A seguir\n\n## A seguir\n\n- [Disciplina epistémica e anti-patterns](./09-epistemica-anti-patterns.md) — o que **não** fazer com os outputs.\n- [Casos de uso](./casos-uso/) — para versões mais focadas destes padrões."}
|
|
@@ -4061,12 +4061,12 @@
|
|
|
4061
4061
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--4-fundir-manual-grounded-com-inferred", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--4-fundir-manual-grounded-com-inferred", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "Anti-patterns gerais", "4. Fundir manual-grounded com inferred"], "size_estimate": {"approx_tokens": 101, "chars": 403}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### 4. Fundir manual-grounded com inferred\n\n❌ \"O manual diz que rate limiting + monitoring previnem credential stuffing.\"\n✅ \"Manual-grounded: o output liga `MT-NNN` (credential stuffing) a `CTRL-<domain>-<slug>-<hash>` com `mitigation_confidence: derived`. Inferência (minha): aplicados juntos cobrem o threat — marcado como inferência, não como facto do manual.\"", "title": "4. Fundir manual-grounded com inferred", "traceability": {"line_end": 112, "line_start": 108, "source_path": "020-assets/mcp/09-epistemica-anti-patterns.md", "unit_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--4-fundir-manual-grounded-com-inferred"}, "vector_text": "4. Fundir manual-grounded com inferred\n\n### 4. Fundir manual-grounded com inferred\n\n❌ \"O manual diz que rate limiting + monitoring previnem credential stuffing.\"\n✅ \"Manual-grounded: o output liga `MT-NNN` (credential stuffing) a `CTRL-<domain>-<slug>-<hash>` com `mitigation_confidence: derived`. Inferência (minha): aplicados juntos cobrem o threat — marcado como inferência, não como facto do manual.\""}
|
|
4062
4062
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--5-saltar-gate-needs-clarification-needs-decomposition", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--5-saltar-gate-needs-clarification-needs-decomposition", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "Anti-patterns gerais", "5. Saltar gate `needs_clarification` / `needs_decomposition`"], "size_estimate": {"approx_tokens": 72, "chars": 288}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### 5. Saltar gate `needs_clarification` / `needs_decomposition`\n\n❌ Re-chamar `prepare_sbd_toe_codegen_context` com o mesmo payload para \"tentar de novo\".\n✅ Parar, dialogar com o utilizador, **re-chamar só após inputs novos**.", "title": "5. Saltar gate `needs_clarification` / `needs_decomposition`", "traceability": {"line_end": 117, "line_start": 113, "source_path": "020-assets/mcp/09-epistemica-anti-patterns.md", "unit_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--5-saltar-gate-needs-clarification-needs-decomposition"}, "vector_text": "5. Saltar gate `needs_clarification` / `needs_decomposition`\n\n### 5. Saltar gate `needs_clarification` / `needs_decomposition`\n\n❌ Re-chamar `prepare_sbd_toe_codegen_context` com o mesmo payload para \"tentar de novo\".\n✅ Parar, dialogar com o utilizador, **re-chamar só após inputs novos**."}
|
|
4063
4063
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--6-mostrar-mitigation-confidence-heuristic-como-certeza", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--6-mostrar-mitigation-confidence-heuristic-como-certeza", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "Anti-patterns gerais", "6. Mostrar `mitigation_confidence: \"heuristic\"` como certeza"], "size_estimate": {"approx_tokens": 71, "chars": 284}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### 6. Mostrar `mitigation_confidence: \"heuristic\"` como certeza\n\n❌ \"`CTRL-…` mitiga `MT-NNN`.\"\n✅ \"`CTRL-…` mitiga `MT-NNN` — ligação **inferida** (*fallback* sem confidence `derived`); validar com teste / revisão humana.\"", "title": "6. Mostrar `mitigation_confidence: \"heuristic\"` como certeza", "traceability": {"line_end": 122, "line_start": 118, "source_path": "020-assets/mcp/09-epistemica-anti-patterns.md", "unit_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--6-mostrar-mitigation-confidence-heuristic-como-certeza"}, "vector_text": "6. Mostrar `mitigation_confidence: \"heuristic\"` como certeza\n\n### 6. Mostrar `mitigation_confidence: \"heuristic\"` como certeza\n\n❌ \"`CTRL-…` mitiga `MT-NNN`.\"\n✅ \"`CTRL-…` mitiga `MT-NNN` — ligação **inferida** (*fallback* sem confidence `derived`); validar com teste / revisão humana.\""}
|
|
4064
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--7-
|
|
4064
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--7-assumir-a-cobertura-do-snapshot-sem-a-confirmar", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--7-assumir-a-cobertura-do-snapshot-sem-a-confirmar", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "Anti-patterns gerais", "7. Assumir a cobertura do *snapshot* sem a confirmar"], "size_estimate": {"approx_tokens": 155, "chars": 619}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### 7. Assumir a cobertura do *snapshot* sem a confirmar\n\n❌ Responder sobre um cross-check normativo (ou qualquer página) assumindo que o MCP a serve — ou que não a serve.\n✅ Ler `sbd://toe/version` (manual, KG, ontologia) e, em dúvida, validar com `inspect_sbd_toe_retrieval` se o documento aparece nos *top-ranked records*. Em `0.10.2` os seis cross-checks — **CRA / DORA / NIS2 / GDPR / AI Act / ENISA-CSA** — estão indexados; conteúdo posterior ao *snapshot* vive só no manual web até nova publicação (ver [content lag](./10-troubleshooting-faq.md#content-lag)).", "title": "7. Assumir a cobertura do *snapshot* sem a confirmar", "traceability": {"line_end": 127, "line_start": 123, "source_path": "020-assets/mcp/09-epistemica-anti-patterns.md", "unit_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--7-assumir-a-cobertura-do-snapshot-sem-a-confirmar"}, "vector_text": "7. Assumir a cobertura do *snapshot* sem a confirmar\n\n### 7. Assumir a cobertura do *snapshot* sem a confirmar\n\n❌ Responder sobre um cross-check normativo (ou qualquer página) assumindo que o MCP a serve — ou que não a serve.\n✅ Ler `sbd://toe/version` (manual, KG, ontologia) e, em dúvida, validar com `inspect_sbd_toe_retrieval` se o documento aparece nos *top-ranked records*. Em `0.10.2` os seis cross-checks — **CRA / DORA / NIS2 / GDPR / AI Act / ENISA-CSA** — estão indexados; conteúdo posterior ao *snapshot* vive só no manual web até nova publicação (ver [content lag](./10-troubleshooting-faq.md#content-lag))."}
|
|
4065
4065
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--8-confundir-concerns-ontologicos-com-dominios-stride", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--8-confundir-concerns-ontologicos-com-dominios-stride", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "Anti-patterns gerais", "8. Confundir *concerns* (ontológicos) com domínios STRIDE"], "size_estimate": {"approx_tokens": 70, "chars": 280}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### 8. Confundir *concerns* (ontológicos) com domínios STRIDE\n\n❌ `concerns: [\"spoofing\", \"tampering\"]`\n✅ `concerns: [\"auth\", \"integrity\"]` — o vocabulário ontológico é fechado e mapeia para domínios STRIDE indirectamente.", "title": "8. Confundir *concerns* (ontológicos) com domínios STRIDE", "traceability": {"line_end": 132, "line_start": 128, "source_path": "020-assets/mcp/09-epistemica-anti-patterns.md", "unit_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--8-confundir-concerns-ontologicos-com-dominios-stride"}, "vector_text": "8. Confundir *concerns* (ontológicos) com domínios STRIDE\n\n### 8. Confundir *concerns* (ontológicos) com domínios STRIDE\n\n❌ `concerns: [\"spoofing\", \"tampering\"]`\n✅ `concerns: [\"auth\", \"integrity\"]` — o vocabulário ontológico é fechado e mapeia para domínios STRIDE indirectamente."}
|
|
4066
4066
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--9-saltar-setup-sbd-toe-agent-no-inicio-da-sessao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--9-saltar-setup-sbd-toe-agent-no-inicio-da-sessao", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "Anti-patterns gerais", "9. Saltar `setup_sbd_toe_agent` no início da sessão"], "size_estimate": {"approx_tokens": 74, "chars": 295}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### 9. Saltar `setup_sbd_toe_agent` no início da sessão\n\n❌ Começar a chamar tools sem inicializar.\n✅ Primeira mensagem da sessão de segurança: `setup_sbd_toe_agent(riskLevel, projectRole)` — carrega os capítulos activos e as regras do *role*.", "title": "9. Saltar `setup_sbd_toe_agent` no início da sessão", "traceability": {"line_end": 137, "line_start": 133, "source_path": "020-assets/mcp/09-epistemica-anti-patterns.md", "unit_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--9-saltar-setup-sbd-toe-agent-no-inicio-da-sessao"}, "vector_text": "9. Saltar `setup_sbd_toe_agent` no início da sessão\n\n### 9. Saltar `setup_sbd_toe_agent` no início da sessão\n\n❌ Começar a chamar tools sem inicializar.\n✅ Primeira mensagem da sessão de segurança: `setup_sbd_toe_agent(riskLevel, projectRole)` — carrega os capítulos activos e as regras do *role*."}
|
|
4067
4067
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--10-re-gerar-a-skill-no-inicio-de-cada-sessao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--10-re-gerar-a-skill-no-inicio-de-cada-sessao", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "Anti-patterns gerais", "10. Re-gerar a skill no início de cada sessão"], "size_estimate": {"approx_tokens": 67, "chars": 266}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### 10. Re-gerar a skill no início de cada sessão\n\n❌ Chamar `generate_sbd_toe_skill()` cada vez.\n✅ Gerar uma vez, guardar no caminho canónico (`.claude/skills/sbd-toe.md`, etc.), re-gerar **apenas após upgrade do MCP**.", "title": "10. Re-gerar a skill no início de cada sessão", "traceability": {"line_end": 142, "line_start": 138, "source_path": "020-assets/mcp/09-epistemica-anti-patterns.md", "unit_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--10-re-gerar-a-skill-no-inicio-de-cada-sessao"}, "vector_text": "10. Re-gerar a skill no início de cada sessão\n\n### 10. Re-gerar a skill no início de cada sessão\n\n❌ Chamar `generate_sbd_toe_skill()` cada vez.\n✅ Gerar uma vez, guardar no caminho canónico (`.claude/skills/sbd-toe.md`, etc.), re-gerar **apenas após upgrade do MCP**."}
|
|
4068
4068
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--11-confundir-consumir-mcp-com-expor-mcp-server-escopo-de-seguranca-distinto", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": ["application-security-requirements", "architecture", "operations-monitoring"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["ARC-015", "OPS-011", "REQ-AGN-001"]}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--11-confundir-consumir-mcp-com-expor-mcp-server-escopo-de-seguranca-distinto", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "Anti-patterns gerais", "11. Confundir \"consumir MCP\" com \"expor MCP server\" (escopo de segurança distinto)"], "size_estimate": {"approx_tokens": 300, "chars": 1199}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### 11. Confundir \"consumir MCP\" com \"expor MCP server\" (escopo de segurança distinto)\n\nEste mini-site cobre o uso do MCP server SbD-ToE — o consumo. Quando a organização passa a **expor um MCP server próprio** (não consumir), entra num escopo de segurança adicional que **não é coberto** por este mini-site nem pelo SbD-ToE manual em geral.\n\n❌ Assumir que ler este mini-site cobre a segurança de um MCP server a publicar pela organização.\n✅ Para MCP servers expostos, consultar o **OWASP MCP Top 10 (2025)** — catálogo dedicado que cobre prompt injection em contexto MCP, *tool poisoning*, *excessive permissions*, autenticação/autorização inadequadas, transporte inseguro, validação de input, *output handling*, monitorização insuficiente, defaults inseguros. Os controlos SbD-ToE relevantes (`ARC-015`, `REQ-AGN-001..004`, `OPS-011..014`, Policy 38, Policy 39) aplicam-se directamente — o OWASP MCP Top 10 funciona como *checklist de cobertura específica*, complementar ao threat modeling do [Cap. 03 §playbook-agentic](/sbd-toe/sbd-manual/threat-modeling/addon/metodologias-e-ferramentas#playbook-agentic).\n\n---", "title": "11. Confundir \"consumir MCP\" com \"expor MCP server\" (escopo de segurança distinto)", "traceability": {"line_end": 151, "line_start": 143, "source_path": "020-assets/mcp/09-epistemica-anti-patterns.md", "unit_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--anti-patterns-gerais--11-confundir-consumir-mcp-com-expor-mcp-server-escopo-de-seguranca-distinto"}, "vector_text": "11. Confundir \"consumir MCP\" com \"expor MCP server\" (escopo de segurança distinto)\n\n### 11. Confundir \"consumir MCP\" com \"expor MCP server\" (escopo de segurança distinto)\n\nEste mini-site cobre o uso do MCP server SbD-ToE — o consumo. Quando a organização passa a **expor um MCP server próprio** (não consumir), entra num escopo de segurança adicional que **não é coberto** por este mini-site nem pelo SbD-ToE manual em geral.\n\n❌ Assumir que ler este mini-site cobre a segurança de um MCP server a publicar pela organização.\n✅ Para MCP servers expostos, consultar o **OWASP MCP Top 10 (2025)** — catálogo dedicado que cobre prompt injection em contexto MCP, *tool poisoning*, *excessive permissions*, autenticação/autorização inadequadas, transporte inseguro, validação de input, *output handling*, monitorização insuficiente, defaults inseguros. Os controlos SbD-ToE relevantes (`ARC-015`, `REQ-AGN-001..004`, `OPS-011..014`, Policy 38, Policy 39) aplicam-se directamente — o OWASP MCP Top 10 funciona como *checklist de cobertura específica*, complementar ao threat modeling do [Cap. 03 §playbook-agentic](/sbd-toe/sbd-manual/threat-modeling/addon/metodologias-e-ferramentas#playbook-agentic).\n\n---"}
|
|
4069
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--checklist-de-rigor-antes-de-submeter-qualquer-output", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--checklist-de-rigor-antes-de-submeter-qualquer-output", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "Checklist de rigor antes de submeter qualquer output"], "size_estimate": {"approx_tokens":
|
|
4069
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--checklist-de-rigor-antes-de-submeter-qualquer-output", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--checklist-de-rigor-antes-de-submeter-qualquer-output", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "Checklist de rigor antes de submeter qualquer output"], "size_estimate": {"approx_tokens": 145, "chars": 580}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Checklist de rigor antes de submeter qualquer output\n\n1. Cada afirmação tem um dos 4 rótulos?\n2. Todos os IDs citados existem em outputs MCP da sessão?\n3. *Heuristic confidence* está marcado como tal?\n4. `m_recall < 1.0` foi sinalizado?\n5. Não há declaração de conformidade?\n6. Código não foi apresentado como evidência?\n7. Para perguntas regulatórias — a cobertura do *snapshot* foi confirmada em `sbd://toe/version` (e o manual web consultado para conteúdo posterior)?\n\nSe algum check falha → **rever antes de entregar**.", "title": "Checklist de rigor antes de submeter qualquer output", "traceability": {"line_end": 163, "line_start": 152, "source_path": "020-assets/mcp/09-epistemica-anti-patterns.md", "unit_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--checklist-de-rigor-antes-de-submeter-qualquer-output"}, "vector_text": "Checklist de rigor antes de submeter qualquer output\n\n## Checklist de rigor antes de submeter qualquer output\n\n1. Cada afirmação tem um dos 4 rótulos?\n2. Todos os IDs citados existem em outputs MCP da sessão?\n3. *Heuristic confidence* está marcado como tal?\n4. `m_recall < 1.0` foi sinalizado?\n5. Não há declaração de conformidade?\n6. Código não foi apresentado como evidência?\n7. Para perguntas regulatórias — a cobertura do *snapshot* foi confirmada em `sbd://toe/version` (e o manual web consultado para conteúdo posterior)?\n\nSe algum check falha → **rever antes de entregar**."}
|
|
4070
4070
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--a-seguir", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-09-epistemica-anti-patterns", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--a-seguir", "relation_hints": [], "section_path": ["Disciplina epistémica e anti-patterns", "A seguir"], "size_estimate": {"approx_tokens": 48, "chars": 190}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## A seguir\n\n- [Troubleshooting / FAQ](./10-troubleshooting-faq.md) — sintomas vs soluções.\n- [Padrões avançados](./08-padroes-avancados.md) — para combinar tools sem perder rigor.", "title": "A seguir", "traceability": {"line_end": 167, "line_start": 164, "source_path": "020-assets/mcp/09-epistemica-anti-patterns.md", "unit_id": "020-assets-mcp-09-epistemica-anti-patterns--disciplina-epistemica-e-anti-patterns--a-seguir"}, "vector_text": "A seguir\n\n## A seguir\n\n- [Troubleshooting / FAQ](./10-troubleshooting-faq.md) — sintomas vs soluções.\n- [Padrões avançados](./08-padroes-avancados.md) — para combinar tools sem perder rigor."}
|
|
4071
4071
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--troubleshooting-faq", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--troubleshooting-faq", "relation_hints": [], "section_path": ["Troubleshooting & FAQ"], "size_estimate": {"approx_tokens": 104, "chars": 413}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Troubleshooting & FAQ\n\nA maior parte das dúvidas que aparecem nas primeiras semanas de uso do MCP não são *bugs* — são desalinhamentos previsíveis: uma chamada que devolve mais (ou menos) do que esperavas, um cliente que não reconhece o servidor, ou conteúdo que existe no manual web mas não aparece na pesquisa do MCP. Esta página reúne esses casos, com sintoma, causa e solução directa.", "title": "Troubleshooting & FAQ", "traceability": {"line_end": 16, "line_start": 13, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--troubleshooting-faq"}, "vector_text": "Troubleshooting & FAQ\n\n# Troubleshooting & FAQ\n\nA maior parte das dúvidas que aparecem nas primeiras semanas de uso do MCP não são *bugs* — são desalinhamentos previsíveis: uma chamada que devolve mais (ou menos) do que esperavas, um cliente que não reconhece o servidor, ou conteúdo que existe no manual web mas não aparece na pesquisa do MCP. Esta página reúne esses casos, com sintoma, causa e solução directa."}
|
|
4072
4072
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--troubleshooting-faq--estado-do-servidor", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--troubleshooting-faq--estado-do-servidor", "relation_hints": [], "section_path": ["Troubleshooting & FAQ", "Estado do servidor"], "size_estimate": {"approx_tokens": 11, "chars": 41}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Estado do servidor", "title": "Estado do servidor", "traceability": {"line_end": 18, "line_start": 17, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--troubleshooting-faq--estado-do-servidor"}, "vector_text": "Estado do servidor\n\n## Estado do servidor"}
|
|
@@ -4074,67 +4074,68 @@
|
|
|
4074
4074
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa", "relation_hints": [], "section_path": ["ou — em alternativa:"], "size_estimate": {"approx_tokens": 23, "chars": 90}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# ou — em alternativa:\nnpm view @shiftleftpt/sbd-toe-mcp version\n```", "title": "ou — em alternativa:", "traceability": {"line_end": 36, "line_start": 33, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa"}, "vector_text": "ou — em alternativa:\n\n# ou — em alternativa:\nnpm view @shiftleftpt/sbd-toe-mcp version\n```"}
|
|
4075
4075
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--como-saber-se-o-servidor-esta-a-correr-no-cliente", "chunk_kind": "table_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--como-saber-se-o-servidor-esta-a-correr-no-cliente", "relation_hints": [], "section_path": ["ou — em alternativa:", "Como saber se o servidor está a correr no cliente"], "size_estimate": {"approx_tokens": 110, "chars": 440}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Como saber se o servidor está a correr no cliente\n\n| Cliente | Verificação |\n|---|---|\n| Claude Code | `claude mcp list` |\n| Claude Desktop | Painel de ferramentas mostra `sbd-toe.*` na conversa |\n| Cursor | Settings → Features → MCP, *badge* verde em `sbd-toe` |\n| VS Code (Copilot) | Em *Agent mode*, `@workspace` mostra MCP ligados |\n| Windsurf | Painel MCP, status `running` |\n\n---", "title": "Como saber se o servidor está a correr no cliente", "traceability": {"line_end": 48, "line_start": 37, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--como-saber-se-o-servidor-esta-a-correr-no-cliente"}, "vector_text": "Como saber se o servidor está a correr no cliente\n\n### Como saber se o servidor está a correr no cliente\n\n| Cliente | Verificação |\n|---|---|\n| Claude Code | `claude mcp list` |\n| Claude Desktop | Painel de ferramentas mostra `sbd-toe.*` na conversa |\n| Cursor | Settings → Features → MCP, *badge* verde em `sbd-toe` |\n| VS Code (Copilot) | Em *Agent mode*, `@workspace` mostra MCP ligados |\n| Windsurf | Painel MCP, status `running` |\n\n---"}
|
|
4076
4076
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag", "relation_hints": [], "section_path": ["ou — em alternativa:", "Content lag {#content-lag}"], "size_estimate": {"approx_tokens": 15, "chars": 57}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Content lag {#content-lag}", "title": "Content lag {#content-lag}", "traceability": {"line_end": 50, "line_start": 49, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag"}, "vector_text": "Content lag {#content-lag}\n\n## Content lag {#content-lag}"}
|
|
4077
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--sintoma", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--sintoma", "relation_hints": [], "section_path": ["ou — em alternativa:", "Content lag {#content-lag}", "Sintoma"], "size_estimate": {"approx_tokens":
|
|
4078
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--causa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--causa", "relation_hints": [], "section_path": ["ou — em alternativa:", "Content lag {#content-lag}", "Causa"], "size_estimate": {"approx_tokens":
|
|
4079
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--como-confirmar-o-que-esta-indexado", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--como-confirmar-o-que-esta-indexado", "relation_hints": [], "section_path": ["ou — em alternativa:", "Content lag {#content-lag}", "Como confirmar o que está indexado"], "size_estimate": {"approx_tokens":
|
|
4080
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--solucao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--solucao", "relation_hints": [], "section_path": ["ou — em alternativa:", "Content lag {#content-lag}", "Solução"], "size_estimate": {"approx_tokens":
|
|
4081
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--quando-
|
|
4082
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance", "relation_hints": [], "section_path": ["ou — em alternativa:", "Performance"], "size_estimate": {"approx_tokens": 7, "chars": 27}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Performance", "title": "Performance", "traceability": {"line_end":
|
|
4083
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance--sintoma-consult-security-requirements-l3-e-lento-ou-estoura-o-contexto", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance--sintoma-consult-security-requirements-l3-e-lento-ou-estoura-o-contexto", "relation_hints": [], "section_path": ["ou — em alternativa:", "Performance", "Sintoma — `consult_security_requirements(L3)` é lento ou estoura o contexto"], "size_estimate": {"approx_tokens": 59, "chars": 236}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `consult_security_requirements(L3)` é lento ou estoura o contexto\n\nOutput de L3 sem `concerns` é ~36k chars — pode exceder o contexto do cliente.", "title": "Sintoma — `consult_security_requirements(L3)` é lento ou estoura o contexto", "traceability": {"line_end":
|
|
4084
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance--solucao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance--solucao", "relation_hints": [], "section_path": ["ou — em alternativa:", "Performance", "Solução"], "size_estimate": {"approx_tokens": 67, "chars": 266}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n**Sempre passar `concerns`** em L2 / L3:\n\n```json\nconsult_security_requirements({\"risk_level\": \"L3\", \"concerns\": [\"auth\", \"encryption\"]})\n```\n\nReduz para ~9k chars por *concern set*. Iterar por *concern* se precisares de coverage completa.\n\n---", "title": "Solução", "traceability": {"line_end":
|
|
4085
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados"], "size_estimate": {"approx_tokens": 13, "chars": 49}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Resultados inesperados", "title": "Resultados inesperados", "traceability": {"line_end":
|
|
4086
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-search-sbd-toe-manual-devolve-resultados-off-topic", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-search-sbd-toe-manual-devolve-resultados-off-topic", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Sintoma — `search_sbd_toe_manual` devolve resultados *off-topic*"], "size_estimate": {"approx_tokens": 34, "chars": 134}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `search_sbd_toe_manual` devolve resultados *off-topic*", "title": "Sintoma — `search_sbd_toe_manual` devolve resultados *off-topic*", "traceability": {"line_end":
|
|
4087
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa-s-possiveis", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa-s-possiveis", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Causa(s) possíveis"], "size_estimate": {"approx_tokens": 61, "chars": 244}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa(s) possíveis\n\n1. *Vocabulary mismatch* — usaste `authentication` em vez de `auth` (vocabulário ontológico)\n2. Pergunta narrativa demasiado vaga\n3. Pergunta estruturada que devia ir a `consult_security_requirements`", "title": "Causa(s) possíveis", "traceability": {"line_end":
|
|
4088
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--diagnostico", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--diagnostico", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Diagnóstico"], "size_estimate": {"approx_tokens": 46, "chars": 182}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Diagnóstico\n\n```json\ninspect_sbd_toe_retrieval({\"query\": \"<query original>\"})\n```\n\nDevolve ranking, *scores*, *rule_trace*. Identifica se é *vocabulary* ou *intent*.", "title": "Diagnóstico", "traceability": {"line_end":
|
|
4089
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Solução"], "size_estimate": {"approx_tokens": 53, "chars": 210}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n- Para *vocabulary*: usar termos canónicos (ver [concerns](./01-intro.md#vocabul%C3%A1rio-controlado))\n- Para *intent estruturado*: preferir `consult_security_requirements` ou `get_*`\n\n---", "title": "Solução", "traceability": {"line_end":
|
|
4090
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-get-guide-by-role-l2-devolve-so-contagens", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-get-guide-by-role-l2-devolve-so-contagens", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Sintoma — `get_guide_by_role(L2)` devolve só contagens"], "size_estimate": {"approx_tokens": 29, "chars": 114}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `get_guide_by_role(L2)` devolve só contagens", "title": "Sintoma — `get_guide_by_role(L2)` devolve só contagens", "traceability": {"line_end":
|
|
4091
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Causa"], "size_estimate": {"approx_tokens": 34, "chars": 136}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa\n\nChamaste sem `role` nem `phase`. Por design, sem nenhum dos dois, devolve apenas `role_summary{}` + `phase_summary{}`.", "title": "Causa", "traceability": {"line_end":
|
|
4092
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao--2", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao--2", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Solução"], "size_estimate": {"approx_tokens": 42, "chars": 167}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n```json\nget_guide_by_role({\"risk_level\": \"L2\", \"role\": \"developer\"})\n// ou\nget_guide_by_role({\"risk_level\": \"L2\", \"phase\": \"implement\"})\n```\n\n---", "title": "Solução", "traceability": {"line_end":
|
|
4093
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-get-threat-landscape-devolve-threats", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-get-threat-landscape-devolve-threats", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Sintoma — `get_threat_landscape` devolve `threats: []`"], "size_estimate": {"approx_tokens": 29, "chars": 114}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `get_threat_landscape` devolve `threats: []`", "title": "Sintoma — `get_threat_landscape` devolve `threats: []`", "traceability": {"line_end":
|
|
4094
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa-s", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa-s", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Causa(s)"], "size_estimate": {"approx_tokens": 48, "chars": 191}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa(s)\n\n1. *Risk level* / *concerns* combinação demasiado restrita\n2. O escopo é genuinamente sem threats catalogados no canon\n3. Os *concerns* não estão no vocabulário (typo)", "title": "Causa(s)", "traceability": {"line_end":
|
|
4095
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao--3", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao--3", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Solução"], "size_estimate": {"approx_tokens": 97, "chars": 387}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n1. Alargar — remover *concerns*, ou subir *risk level* se aplicável\n2. Se persistir vazio: **não inventar threats** — escrever na resposta *\"Manual-grounded: sem threats no canon para este escopo. Não confundir com ausência de risco — inspeção humana recomendada.\"*\n3. Validar os *concerns* contra a [tabela canónica](./01-intro.md#vocabul%C3%A1rio-controlado)\n\n---", "title": "Solução", "traceability": {"line_end":
|
|
4096
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`"], "size_estimate": {"approx_tokens": 18, "chars": 71}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## `prepare_sbd_toe_codegen_context`", "title": "`prepare_sbd_toe_codegen_context`", "traceability": {"line_end":
|
|
4097
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--sintoma-devolve-needs-decomposition-em-ciclo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--sintoma-devolve-needs-decomposition-em-ciclo", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`", "Sintoma — devolve `needs_decomposition` em ciclo"], "size_estimate": {"approx_tokens": 26, "chars": 102}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — devolve `needs_decomposition` em ciclo", "title": "Sintoma — devolve `needs_decomposition` em ciclo", "traceability": {"line_end":
|
|
4098
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--causa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--causa", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`", "Causa"], "size_estimate": {"approx_tokens": 33, "chars": 129}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa\n\nA tarefa-mãe é demasiado conceptual / aberta. *Brute-force* (re-chamar com pequenos *tweaks*) não passa o gate.", "title": "Causa", "traceability": {"line_end":
|
|
4099
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--solucao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--solucao", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`", "Solução"], "size_estimate": {"approx_tokens": 89, "chars": 356}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n1. Aceitar uma das sub-tarefas sugeridas e re-chamar **apenas para essa**\n2. Se a sub-tarefa também devolver `needs_decomposition` → **STOP**, escalar com o utilizador\n3. Recomeçar a sessão com uma decomposição manual antes da primeira chamada\n\nVer [Padrão 5 — Iteração de codegen com falhas](./08-padroes-avancados.md#padrao-5).\n\n---", "title": "Solução", "traceability": {"line_end":
|
|
4100
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--sintoma-unsupported-scope", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--sintoma-unsupported-scope", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`", "Sintoma — `unsupported_scope`"], "size_estimate": {"approx_tokens": 16, "chars": 64}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `unsupported_scope`", "title": "Sintoma — `unsupported_scope`", "traceability": {"line_end":
|
|
4101
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--significado", "chunk_kind": "table_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--significado", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`", "Significado"], "size_estimate": {"approx_tokens": 141, "chars": 563}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Significado\n\nO servidor instalado não tem a capacidade que pediste. Possíveis sub-causas:\n\n| Causa | Acção |\n|---|---|\n| `AppSec Core v1 runtime ausente` | Deploy incompleto — re-correr `npm run checkout:backend` ou *pin* outra KG snapshot. |\n| `Overlay regulatório ausente` | Remover `regulatory_frameworks` / `include_regulatory_overlay`, ou esperar publicação. |\n| `Framework regulatório desconhecida` | Listar os *short codes* suportados em `regulatory_overlay.frameworks`. |\n\n**Não fabricar** IDs para \"continuar\" — o gate é por design.\n\n---", "title": "Significado", "traceability": {"line_end":
|
|
4102
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente"], "size_estimate": {"approx_tokens": 12, "chars": 45}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Instalação / cliente", "title": "Instalação / cliente", "traceability": {"line_end":
|
|
4103
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-claude-mcp-add-falha-com-cannot-find-package", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-claude-mcp-add-falha-com-cannot-find-package", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Sintoma — `claude mcp add` falha com `Cannot find package`"], "size_estimate": {"approx_tokens": 31, "chars": 122}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `claude mcp add` falha com `Cannot find package`", "title": "Sintoma — `claude mcp add` falha com `Cannot find package`", "traceability": {"line_end":
|
|
4104
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--causa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--causa", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Causa"], "size_estimate": {"approx_tokens": 19, "chars": 74}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa\n\nNode.js `< 20.9.0` ou npm sem acesso ao registo público.", "title": "Causa", "traceability": {"line_end":
|
|
4105
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--solucao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--solucao", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Solução"], "size_estimate": {"approx_tokens": 37, "chars": 147}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n```bash\nnode --version # confirmar ≥ 20.9.0\nnpm config get registry # confirmar https://registry.npmjs.org/\n```\n\n---", "title": "Solução", "traceability": {"line_end":
|
|
4106
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-cursor-claude-desktop-nao-reconhece-o-servidor", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-cursor-claude-desktop-nao-reconhece-o-servidor", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Sintoma — Cursor / Claude Desktop não reconhece o servidor"], "size_estimate": {"approx_tokens": 31, "chars": 122}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — Cursor / Claude Desktop não reconhece o servidor", "title": "Sintoma — Cursor / Claude Desktop não reconhece o servidor", "traceability": {"line_end":
|
|
4107
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--causa-s", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--causa-s", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Causa(s)"], "size_estimate": {"approx_tokens": 39, "chars": 156}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa(s)\n\n1. Ficheiro de configuração em caminho errado\n2. JSON inválido (trailing comma, aspas erradas)\n3. Cliente não reiniciado após edição", "title": "Causa(s)", "traceability": {"line_end":
|
|
4108
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--solucao--2", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--solucao--2", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Solução"], "size_estimate": {"approx_tokens": 55, "chars": 217}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n1. Confirmar caminho (ver [Instalação](./03-instalacao.md))\n2. Validar JSON: `jq . < /path/to/config.json` — erros aparecem\n3. **Reiniciar o cliente** após cada alteração da configuração MCP\n\n---", "title": "Solução", "traceability": {"line_end":
|
|
4109
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-tools-sbd-toe-aparecem-mas-todas-as-chamadas-falham", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-tools-sbd-toe-aparecem-mas-todas-as-chamadas-falham", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Sintoma — Tools `sbd-toe.*` aparecem mas todas as chamadas falham"], "size_estimate": {"approx_tokens": 34, "chars": 136}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — Tools `sbd-toe.*` aparecem mas todas as chamadas falham", "title": "Sintoma — Tools `sbd-toe.*` aparecem mas todas as chamadas falham", "traceability": {"line_end":
|
|
4110
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--diagnostico", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--diagnostico", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Diagnóstico"], "size_estimate": {"approx_tokens": 66, "chars": 264}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Diagnóstico\n\nExecutar o comando manualmente para isolar:\n\n```bash\nnpx -y @shiftleftpt/sbd-toe-mcp\n```\n\nDeve mostrar logs *stderr* a indicar \"MCP server listening on stdio\" (ou equivalente). Se não — problema do servidor / Node / dependências.\n\n---", "title": "Diagnóstico", "traceability": {"line_end":
|
|
4111
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional", "relation_hints": [], "section_path": ["ou — em alternativa:", "Operacional"], "size_estimate": {"approx_tokens": 7, "chars": 27}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Operacional", "title": "Operacional", "traceability": {"line_end":
|
|
4112
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--sintoma-output-do-mcp-e-em-pt-mas-o-utilizador-escreve-en", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--sintoma-output-do-mcp-e-em-pt-mas-o-utilizador-escreve-en", "relation_hints": [], "section_path": ["ou — em alternativa:", "Operacional", "Sintoma — output do MCP é em PT, mas o utilizador escreve EN"], "size_estimate": {"approx_tokens": 32, "chars": 126}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — output do MCP é em PT, mas o utilizador escreve EN", "title": "Sintoma — output do MCP é em PT, mas o utilizador escreve EN", "traceability": {"line_end":
|
|
4113
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--nao-e-bug-e-arquitectura", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--nao-e-bug-e-arquitectura", "relation_hints": [], "section_path": ["ou — em alternativa:", "Operacional", "Não é bug — é arquitectura"], "size_estimate": {"approx_tokens": 111, "chars": 441}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Não é bug — é arquitectura\n\nO conteúdo canónico do manual está em PT. O *agent guide* diz explicitamente:\n\n> *Always respond in the user's language. The manual content is in Portuguese — translate, summarise, and explain in whatever language the user writes in.*\n\n**Solução:** o LLM deve **traduzir / sumarizar** o conteúdo PT para a língua do utilizador. Não passar a falar PT só porque o manual o está.\n\n---", "title": "Não é bug — é arquitectura", "traceability": {"line_end":
|
|
4114
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--sintoma-utilizador-discorda-do-risk-level", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--sintoma-utilizador-discorda-do-risk-level", "relation_hints": [], "section_path": ["ou — em alternativa:", "Operacional", "Sintoma — utilizador discorda do *risk level*"], "size_estimate": {"approx_tokens": 24, "chars": 96}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — utilizador discorda do *risk level*", "title": "Sintoma — utilizador discorda do *risk level*", "traceability": {"line_end":
|
|
4115
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--accao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--accao", "relation_hints": [], "section_path": ["ou — em alternativa:", "Operacional", "Acção"], "size_estimate": {"approx_tokens": 76, "chars": 301}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Acção\n\nNão decidir unilateralmente. Apresentar:\n\n1. O que `map_sbd_toe_applicability` sugere\n2. O que mudaria se `risk_level` fosse X vs Y (custo: capítulos adicionais)\n3. Quem assina a decisão (`CISO`, `executive_management`, `appsec`)\n\nMarcar como `inferred` enquanto não há decisão.\n\n---", "title": "Acção", "traceability": {"line_end":
|
|
4116
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento", "relation_hints": [], "section_path": ["ou — em alternativa:", "*Upgrades* e versionamento"], "size_estimate": {"approx_tokens": 15, "chars": 57}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## *Upgrades* e versionamento", "title": "*Upgrades* e versionamento", "traceability": {"line_end":
|
|
4117
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento--quando-re-correr-generate-sbd-toe-skill", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento--quando-re-correr-generate-sbd-toe-skill", "relation_hints": [], "section_path": ["ou — em alternativa:", "*Upgrades* e versionamento", "Quando re-correr `generate_sbd_toe_skill`"], "size_estimate": {"approx_tokens": 62, "chars": 248}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Quando re-correr `generate_sbd_toe_skill`\n\nApós cada *upgrade* do servidor MCP (releases minor/patch no npm). O conteúdo do *agent guide* pode mudar; a skill em disco está desactualizada até regenerar.", "title": "Quando re-correr `generate_sbd_toe_skill`", "traceability": {"line_end":
|
|
4118
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento--como-saber-se-a-skill-esta-desactualizada", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento--como-saber-se-a-skill-esta-desactualizada", "relation_hints": [], "section_path": ["ou — em alternativa:", "*Upgrades* e versionamento", "Como saber se a skill está desactualizada"], "size_estimate": {"approx_tokens": 93, "chars": 369}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Como saber se a skill está desactualizada\n\nA skill em disco começa com:\n\n```\n<!-- SbD-ToE skill content — source: sbd://toe/agent-guide (@shiftleftpt/sbd-toe-mcp) -->\n```\n\nNão inclui versão explícita — comparar `sbd://toe/version` com a versão usada na última geração (manter como entrada de *changelog* do projecto).\n\n---", "title": "Como saber se a skill está desactualizada", "traceability": {"line_end":
|
|
4119
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--quando-reportar-bug", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--quando-reportar-bug", "relation_hints": [], "section_path": ["ou — em alternativa:", "Quando reportar bug"], "size_estimate": {"approx_tokens": 138, "chars": 550}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Quando reportar bug\n\nReportar em [github.com/Shiftleftpt/sbd-toe-mcp-poc/issues](https://github.com/Shiftleftpt/sbd-toe-mcp-poc/issues) se:\n\n- `inspect_sbd_toe_retrieval` mostra *rule_trace* incoerente\n- Output contradiz directamente o que o manual web diz para um capítulo canon\n- Tool retorna *schema* diferente do documentado\n- Tools listadas como disponíveis falham 100% das chamadas\n\nIncluir no report:\n- Versão do MCP (`sbd://toe/version`)\n- Cliente e versão\n- Input exacto da chamada\n- Output recebido\n- Output esperado", "title": "Quando reportar bug", "traceability": {"line_end":
|
|
4120
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--a-seguir", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--a-seguir", "relation_hints": [], "section_path": ["ou — em alternativa:", "A seguir"], "size_estimate": {"approx_tokens": 27, "chars": 107}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## A seguir\n\n- [Versionamento e roadmap](./11-versionamento-roadmap.md) — release notes + futuro.", "title": "A seguir", "traceability": {"line_end":
|
|
4077
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--sintoma", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--sintoma", "relation_hints": [], "section_path": ["ou — em alternativa:", "Content lag {#content-lag}", "Sintoma"], "size_estimate": {"approx_tokens": 48, "chars": 189}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma\n\nUma página existe no manual web, mas o MCP não a devolve (`search_sbd_toe_manual`, `query_sbd_toe_entities` ou `inspect_sbd_toe_retrieval` sem *hits* nesse documento).", "title": "Sintoma", "traceability": {"line_end": 54, "line_start": 51, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--sintoma"}, "vector_text": "Sintoma\n\n### Sintoma\n\nUma página existe no manual web, mas o MCP não a devolve (`search_sbd_toe_manual`, `query_sbd_toe_entities` ou `inspect_sbd_toe_retrieval` sem *hits* nesse documento)."}
|
|
4078
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--causa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--causa", "relation_hints": [], "section_path": ["ou — em alternativa:", "Content lag {#content-lag}", "Causa"], "size_estimate": {"approx_tokens": 127, "chars": 505}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa\n\nO servidor serve um *snapshot* do manual e o índice KG construído a partir dele; a versão do manual, do KG e da ontologia está em `sbd://toe/version`. Conteúdo adicionado ao manual web **depois** desse *snapshot* só entra no MCP na publicação seguinte.\n\n**Estado corrente:** `@shiftleftpt/sbd-toe-mcp@0.10.2` serve o manual `v1.7.0` sobre o KG formal `v1.6.0`, com os seis cross-checks (**CRA**, **DORA**, **NIS2**, **GDPR**, **AI Act**, **ENISA/CSA**) indexados — **sem lag conhecido**.", "title": "Causa", "traceability": {"line_end": 60, "line_start": 55, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--causa"}, "vector_text": "Causa\n\n### Causa\n\nO servidor serve um *snapshot* do manual e o índice KG construído a partir dele; a versão do manual, do KG e da ontologia está em `sbd://toe/version`. Conteúdo adicionado ao manual web **depois** desse *snapshot* só entra no MCP na publicação seguinte.\n\n**Estado corrente:** `@shiftleftpt/sbd-toe-mcp@0.10.2` serve o manual `v1.7.0` sobre o KG formal `v1.6.0`, com os seis cross-checks (**CRA**, **DORA**, **NIS2**, **GDPR**, **AI Act**, **ENISA/CSA**) indexados — **sem lag conhecido**."}
|
|
4079
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--como-confirmar-o-que-esta-indexado", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--como-confirmar-o-que-esta-indexado", "relation_hints": [], "section_path": ["ou — em alternativa:", "Content lag {#content-lag}", "Como confirmar o que está indexado"], "size_estimate": {"approx_tokens": 127, "chars": 507}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Como confirmar o que está indexado\n\n```\ninspect_sbd_toe_retrieval({\"question\": \"<nome do regulamento ou da página>\", \"topK\": 5})\n```\n\nSe os *top-ranked records* apontam a `002-cross-check-normativo/<framework>/...` (ou ao documento esperado) → indexado. Se apontam apenas a outros documentos, a página pode estar fora do índice — confirmar a versão em `sbd://toe/version` antes de concluir; uma pergunta mais específica (artigo, título da secção) melhora o *ranking*.", "title": "Como confirmar o que está indexado", "traceability": {"line_end": 68, "line_start": 61, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--como-confirmar-o-que-esta-indexado"}, "vector_text": "Como confirmar o que está indexado\n\n### Como confirmar o que está indexado\n\n```\ninspect_sbd_toe_retrieval({\"question\": \"<nome do regulamento ou da página>\", \"topK\": 5})\n```\n\nSe os *top-ranked records* apontam a `002-cross-check-normativo/<framework>/...` (ou ao documento esperado) → indexado. Se apontam apenas a outros documentos, a página pode estar fora do índice — confirmar a versão em `sbd://toe/version` antes de concluir; uma pergunta mais específica (artigo, título da secção) melhora o *ranking*."}
|
|
4080
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--solucao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--solucao", "relation_hints": [], "section_path": ["ou — em alternativa:", "Content lag {#content-lag}", "Solução"], "size_estimate": {"approx_tokens": 74, "chars": 294}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\nLer `sbd://toe/version`. Se o conteúdo procurado é posterior ao *snapshot* indicado, consultar o manual web (por exemplo, [cross-check normativo](/sbd-toe/cross-check-normativo/intro)) até nova publicação do MCP. Para tudo o que está no *snapshot*, usar o MCP normalmente.", "title": "Solução", "traceability": {"line_end": 72, "line_start": 69, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--solucao"}, "vector_text": "Solução\n\n### Solução\n\nLer `sbd://toe/version`. Se o conteúdo procurado é posterior ao *snapshot* indicado, consultar o manual web (por exemplo, [cross-check normativo](/sbd-toe/cross-check-normativo/intro)) até nova publicação do MCP. Para tudo o que está no *snapshot*, usar o MCP normalmente."}
|
|
4081
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--quando-ocorre", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--quando-ocorre", "relation_hints": [], "section_path": ["ou — em alternativa:", "Content lag {#content-lag}", "Quando ocorre"], "size_estimate": {"approx_tokens": 65, "chars": 259}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Quando ocorre\n\nA cada publicação npm o *snapshot* avança. A diferença entre a tag do manual e a versão do servidor é esperada e está documentada em [versionamento & roadmap](./11-versionamento-roadmap.md#relação-com-versões-do-manual).\n\n---", "title": "Quando ocorre", "traceability": {"line_end": 78, "line_start": 73, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--content-lag-content-lag--quando-ocorre"}, "vector_text": "Quando ocorre\n\n### Quando ocorre\n\nA cada publicação npm o *snapshot* avança. A diferença entre a tag do manual e a versão do servidor é esperada e está documentada em [versionamento & roadmap](./11-versionamento-roadmap.md#relação-com-versões-do-manual).\n\n---"}
|
|
4082
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance", "relation_hints": [], "section_path": ["ou — em alternativa:", "Performance"], "size_estimate": {"approx_tokens": 7, "chars": 27}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Performance", "title": "Performance", "traceability": {"line_end": 80, "line_start": 79, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance"}, "vector_text": "Performance\n\n## Performance"}
|
|
4083
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance--sintoma-consult-security-requirements-l3-e-lento-ou-estoura-o-contexto", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance--sintoma-consult-security-requirements-l3-e-lento-ou-estoura-o-contexto", "relation_hints": [], "section_path": ["ou — em alternativa:", "Performance", "Sintoma — `consult_security_requirements(L3)` é lento ou estoura o contexto"], "size_estimate": {"approx_tokens": 59, "chars": 236}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `consult_security_requirements(L3)` é lento ou estoura o contexto\n\nOutput de L3 sem `concerns` é ~36k chars — pode exceder o contexto do cliente.", "title": "Sintoma — `consult_security_requirements(L3)` é lento ou estoura o contexto", "traceability": {"line_end": 84, "line_start": 81, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance--sintoma-consult-security-requirements-l3-e-lento-ou-estoura-o-contexto"}, "vector_text": "Sintoma — `consult_security_requirements(L3)` é lento ou estoura o contexto\n\n### Sintoma — `consult_security_requirements(L3)` é lento ou estoura o contexto\n\nOutput de L3 sem `concerns` é ~36k chars — pode exceder o contexto do cliente."}
|
|
4084
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance--solucao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance--solucao", "relation_hints": [], "section_path": ["ou — em alternativa:", "Performance", "Solução"], "size_estimate": {"approx_tokens": 67, "chars": 266}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n**Sempre passar `concerns`** em L2 / L3:\n\n```json\nconsult_security_requirements({\"risk_level\": \"L3\", \"concerns\": [\"auth\", \"encryption\"]})\n```\n\nReduz para ~9k chars por *concern set*. Iterar por *concern* se precisares de coverage completa.\n\n---", "title": "Solução", "traceability": {"line_end": 96, "line_start": 85, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--performance--solucao"}, "vector_text": "Solução\n\n### Solução\n\n**Sempre passar `concerns`** em L2 / L3:\n\n```json\nconsult_security_requirements({\"risk_level\": \"L3\", \"concerns\": [\"auth\", \"encryption\"]})\n```\n\nReduz para ~9k chars por *concern set*. Iterar por *concern* se precisares de coverage completa.\n\n---"}
|
|
4085
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados"], "size_estimate": {"approx_tokens": 13, "chars": 49}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Resultados inesperados", "title": "Resultados inesperados", "traceability": {"line_end": 98, "line_start": 97, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados"}, "vector_text": "Resultados inesperados\n\n## Resultados inesperados"}
|
|
4086
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-search-sbd-toe-manual-devolve-resultados-off-topic", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-search-sbd-toe-manual-devolve-resultados-off-topic", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Sintoma — `search_sbd_toe_manual` devolve resultados *off-topic*"], "size_estimate": {"approx_tokens": 34, "chars": 134}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `search_sbd_toe_manual` devolve resultados *off-topic*", "title": "Sintoma — `search_sbd_toe_manual` devolve resultados *off-topic*", "traceability": {"line_end": 100, "line_start": 99, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-search-sbd-toe-manual-devolve-resultados-off-topic"}, "vector_text": "Sintoma — `search_sbd_toe_manual` devolve resultados *off-topic*\n\n### Sintoma — `search_sbd_toe_manual` devolve resultados *off-topic*"}
|
|
4087
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa-s-possiveis", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa-s-possiveis", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Causa(s) possíveis"], "size_estimate": {"approx_tokens": 61, "chars": 244}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa(s) possíveis\n\n1. *Vocabulary mismatch* — usaste `authentication` em vez de `auth` (vocabulário ontológico)\n2. Pergunta narrativa demasiado vaga\n3. Pergunta estruturada que devia ir a `consult_security_requirements`", "title": "Causa(s) possíveis", "traceability": {"line_end": 106, "line_start": 101, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa-s-possiveis"}, "vector_text": "Causa(s) possíveis\n\n### Causa(s) possíveis\n\n1. *Vocabulary mismatch* — usaste `authentication` em vez de `auth` (vocabulário ontológico)\n2. Pergunta narrativa demasiado vaga\n3. Pergunta estruturada que devia ir a `consult_security_requirements`"}
|
|
4088
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--diagnostico", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--diagnostico", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Diagnóstico"], "size_estimate": {"approx_tokens": 46, "chars": 182}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Diagnóstico\n\n```json\ninspect_sbd_toe_retrieval({\"query\": \"<query original>\"})\n```\n\nDevolve ranking, *scores*, *rule_trace*. Identifica se é *vocabulary* ou *intent*.", "title": "Diagnóstico", "traceability": {"line_end": 114, "line_start": 107, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--diagnostico"}, "vector_text": "Diagnóstico\n\n### Diagnóstico\n\n```json\ninspect_sbd_toe_retrieval({\"query\": \"<query original>\"})\n```\n\nDevolve ranking, *scores*, *rule_trace*. Identifica se é *vocabulary* ou *intent*."}
|
|
4089
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Solução"], "size_estimate": {"approx_tokens": 53, "chars": 210}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n- Para *vocabulary*: usar termos canónicos (ver [concerns](./01-intro.md#vocabul%C3%A1rio-controlado))\n- Para *intent estruturado*: preferir `consult_security_requirements` ou `get_*`\n\n---", "title": "Solução", "traceability": {"line_end": 121, "line_start": 115, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao"}, "vector_text": "Solução\n\n### Solução\n\n- Para *vocabulary*: usar termos canónicos (ver [concerns](./01-intro.md#vocabul%C3%A1rio-controlado))\n- Para *intent estruturado*: preferir `consult_security_requirements` ou `get_*`\n\n---"}
|
|
4090
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-get-guide-by-role-l2-devolve-so-contagens", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-get-guide-by-role-l2-devolve-so-contagens", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Sintoma — `get_guide_by_role(L2)` devolve só contagens"], "size_estimate": {"approx_tokens": 29, "chars": 114}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `get_guide_by_role(L2)` devolve só contagens", "title": "Sintoma — `get_guide_by_role(L2)` devolve só contagens", "traceability": {"line_end": 123, "line_start": 122, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-get-guide-by-role-l2-devolve-so-contagens"}, "vector_text": "Sintoma — `get_guide_by_role(L2)` devolve só contagens\n\n### Sintoma — `get_guide_by_role(L2)` devolve só contagens"}
|
|
4091
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Causa"], "size_estimate": {"approx_tokens": 34, "chars": 136}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa\n\nChamaste sem `role` nem `phase`. Por design, sem nenhum dos dois, devolve apenas `role_summary{}` + `phase_summary{}`.", "title": "Causa", "traceability": {"line_end": 127, "line_start": 124, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa"}, "vector_text": "Causa\n\n### Causa\n\nChamaste sem `role` nem `phase`. Por design, sem nenhum dos dois, devolve apenas `role_summary{}` + `phase_summary{}`."}
|
|
4092
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao--2", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao--2", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Solução"], "size_estimate": {"approx_tokens": 42, "chars": 167}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n```json\nget_guide_by_role({\"risk_level\": \"L2\", \"role\": \"developer\"})\n// ou\nget_guide_by_role({\"risk_level\": \"L2\", \"phase\": \"implement\"})\n```\n\n---", "title": "Solução", "traceability": {"line_end": 137, "line_start": 128, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao--2"}, "vector_text": "Solução\n\n### Solução\n\n```json\nget_guide_by_role({\"risk_level\": \"L2\", \"role\": \"developer\"})\n// ou\nget_guide_by_role({\"risk_level\": \"L2\", \"phase\": \"implement\"})\n```\n\n---"}
|
|
4093
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-get-threat-landscape-devolve-threats", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-get-threat-landscape-devolve-threats", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Sintoma — `get_threat_landscape` devolve `threats: []`"], "size_estimate": {"approx_tokens": 29, "chars": 114}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `get_threat_landscape` devolve `threats: []`", "title": "Sintoma — `get_threat_landscape` devolve `threats: []`", "traceability": {"line_end": 139, "line_start": 138, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--sintoma-get-threat-landscape-devolve-threats"}, "vector_text": "Sintoma — `get_threat_landscape` devolve `threats: []`\n\n### Sintoma — `get_threat_landscape` devolve `threats: []`"}
|
|
4094
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa-s", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa-s", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Causa(s)"], "size_estimate": {"approx_tokens": 48, "chars": 191}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa(s)\n\n1. *Risk level* / *concerns* combinação demasiado restrita\n2. O escopo é genuinamente sem threats catalogados no canon\n3. Os *concerns* não estão no vocabulário (typo)", "title": "Causa(s)", "traceability": {"line_end": 145, "line_start": 140, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--causa-s"}, "vector_text": "Causa(s)\n\n### Causa(s)\n\n1. *Risk level* / *concerns* combinação demasiado restrita\n2. O escopo é genuinamente sem threats catalogados no canon\n3. Os *concerns* não estão no vocabulário (typo)"}
|
|
4095
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao--3", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao--3", "relation_hints": [], "section_path": ["ou — em alternativa:", "Resultados inesperados", "Solução"], "size_estimate": {"approx_tokens": 97, "chars": 387}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n1. Alargar — remover *concerns*, ou subir *risk level* se aplicável\n2. Se persistir vazio: **não inventar threats** — escrever na resposta *\"Manual-grounded: sem threats no canon para este escopo. Não confundir com ausência de risco — inspeção humana recomendada.\"*\n3. Validar os *concerns* contra a [tabela canónica](./01-intro.md#vocabul%C3%A1rio-controlado)\n\n---", "title": "Solução", "traceability": {"line_end": 153, "line_start": 146, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--resultados-inesperados--solucao--3"}, "vector_text": "Solução\n\n### Solução\n\n1. Alargar — remover *concerns*, ou subir *risk level* se aplicável\n2. Se persistir vazio: **não inventar threats** — escrever na resposta *\"Manual-grounded: sem threats no canon para este escopo. Não confundir com ausência de risco — inspeção humana recomendada.\"*\n3. Validar os *concerns* contra a [tabela canónica](./01-intro.md#vocabul%C3%A1rio-controlado)\n\n---"}
|
|
4096
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`"], "size_estimate": {"approx_tokens": 18, "chars": 71}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## `prepare_sbd_toe_codegen_context`", "title": "`prepare_sbd_toe_codegen_context`", "traceability": {"line_end": 155, "line_start": 154, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context"}, "vector_text": "`prepare_sbd_toe_codegen_context`\n\n## `prepare_sbd_toe_codegen_context`"}
|
|
4097
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--sintoma-devolve-needs-decomposition-em-ciclo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--sintoma-devolve-needs-decomposition-em-ciclo", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`", "Sintoma — devolve `needs_decomposition` em ciclo"], "size_estimate": {"approx_tokens": 26, "chars": 102}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — devolve `needs_decomposition` em ciclo", "title": "Sintoma — devolve `needs_decomposition` em ciclo", "traceability": {"line_end": 157, "line_start": 156, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--sintoma-devolve-needs-decomposition-em-ciclo"}, "vector_text": "Sintoma — devolve `needs_decomposition` em ciclo\n\n### Sintoma — devolve `needs_decomposition` em ciclo"}
|
|
4098
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--causa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--causa", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`", "Causa"], "size_estimate": {"approx_tokens": 33, "chars": 129}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa\n\nA tarefa-mãe é demasiado conceptual / aberta. *Brute-force* (re-chamar com pequenos *tweaks*) não passa o gate.", "title": "Causa", "traceability": {"line_end": 161, "line_start": 158, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--causa"}, "vector_text": "Causa\n\n### Causa\n\nA tarefa-mãe é demasiado conceptual / aberta. *Brute-force* (re-chamar com pequenos *tweaks*) não passa o gate."}
|
|
4099
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--solucao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--solucao", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`", "Solução"], "size_estimate": {"approx_tokens": 89, "chars": 356}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n1. Aceitar uma das sub-tarefas sugeridas e re-chamar **apenas para essa**\n2. Se a sub-tarefa também devolver `needs_decomposition` → **STOP**, escalar com o utilizador\n3. Recomeçar a sessão com uma decomposição manual antes da primeira chamada\n\nVer [Padrão 5 — Iteração de codegen com falhas](./08-padroes-avancados.md#padrao-5).\n\n---", "title": "Solução", "traceability": {"line_end": 171, "line_start": 162, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--solucao"}, "vector_text": "Solução\n\n### Solução\n\n1. Aceitar uma das sub-tarefas sugeridas e re-chamar **apenas para essa**\n2. Se a sub-tarefa também devolver `needs_decomposition` → **STOP**, escalar com o utilizador\n3. Recomeçar a sessão com uma decomposição manual antes da primeira chamada\n\nVer [Padrão 5 — Iteração de codegen com falhas](./08-padroes-avancados.md#padrao-5).\n\n---"}
|
|
4100
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--sintoma-unsupported-scope", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--sintoma-unsupported-scope", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`", "Sintoma — `unsupported_scope`"], "size_estimate": {"approx_tokens": 16, "chars": 64}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `unsupported_scope`", "title": "Sintoma — `unsupported_scope`", "traceability": {"line_end": 173, "line_start": 172, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--sintoma-unsupported-scope"}, "vector_text": "Sintoma — `unsupported_scope`\n\n### Sintoma — `unsupported_scope`"}
|
|
4101
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--significado", "chunk_kind": "table_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--significado", "relation_hints": [], "section_path": ["ou — em alternativa:", "`prepare_sbd_toe_codegen_context`", "Significado"], "size_estimate": {"approx_tokens": 141, "chars": 563}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Significado\n\nO servidor instalado não tem a capacidade que pediste. Possíveis sub-causas:\n\n| Causa | Acção |\n|---|---|\n| `AppSec Core v1 runtime ausente` | Deploy incompleto — re-correr `npm run checkout:backend` ou *pin* outra KG snapshot. |\n| `Overlay regulatório ausente` | Remover `regulatory_frameworks` / `include_regulatory_overlay`, ou esperar publicação. |\n| `Framework regulatório desconhecida` | Listar os *short codes* suportados em `regulatory_overlay.frameworks`. |\n\n**Não fabricar** IDs para \"continuar\" — o gate é por design.\n\n---", "title": "Significado", "traceability": {"line_end": 187, "line_start": 174, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--prepare-sbd-toe-codegen-context--significado"}, "vector_text": "Significado\n\n### Significado\n\nO servidor instalado não tem a capacidade que pediste. Possíveis sub-causas:\n\n| Causa | Acção |\n|---|---|\n| `AppSec Core v1 runtime ausente` | Deploy incompleto — re-correr `npm run checkout:backend` ou *pin* outra KG snapshot. |\n| `Overlay regulatório ausente` | Remover `regulatory_frameworks` / `include_regulatory_overlay`, ou esperar publicação. |\n| `Framework regulatório desconhecida` | Listar os *short codes* suportados em `regulatory_overlay.frameworks`. |\n\n**Não fabricar** IDs para \"continuar\" — o gate é por design.\n\n---"}
|
|
4102
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente"], "size_estimate": {"approx_tokens": 12, "chars": 45}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Instalação / cliente", "title": "Instalação / cliente", "traceability": {"line_end": 189, "line_start": 188, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente"}, "vector_text": "Instalação / cliente\n\n## Instalação / cliente"}
|
|
4103
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-claude-mcp-add-falha-com-cannot-find-package", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-claude-mcp-add-falha-com-cannot-find-package", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Sintoma — `claude mcp add` falha com `Cannot find package`"], "size_estimate": {"approx_tokens": 31, "chars": 122}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — `claude mcp add` falha com `Cannot find package`", "title": "Sintoma — `claude mcp add` falha com `Cannot find package`", "traceability": {"line_end": 191, "line_start": 190, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-claude-mcp-add-falha-com-cannot-find-package"}, "vector_text": "Sintoma — `claude mcp add` falha com `Cannot find package`\n\n### Sintoma — `claude mcp add` falha com `Cannot find package`"}
|
|
4104
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--causa", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--causa", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Causa"], "size_estimate": {"approx_tokens": 19, "chars": 74}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa\n\nNode.js `< 20.9.0` ou npm sem acesso ao registo público.", "title": "Causa", "traceability": {"line_end": 195, "line_start": 192, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--causa"}, "vector_text": "Causa\n\n### Causa\n\nNode.js `< 20.9.0` ou npm sem acesso ao registo público."}
|
|
4105
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--solucao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--solucao", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Solução"], "size_estimate": {"approx_tokens": 37, "chars": 147}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n```bash\nnode --version # confirmar ≥ 20.9.0\nnpm config get registry # confirmar https://registry.npmjs.org/\n```\n\n---", "title": "Solução", "traceability": {"line_end": 204, "line_start": 196, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--solucao"}, "vector_text": "Solução\n\n### Solução\n\n```bash\nnode --version # confirmar ≥ 20.9.0\nnpm config get registry # confirmar https://registry.npmjs.org/\n```\n\n---"}
|
|
4106
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-cursor-claude-desktop-nao-reconhece-o-servidor", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-cursor-claude-desktop-nao-reconhece-o-servidor", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Sintoma — Cursor / Claude Desktop não reconhece o servidor"], "size_estimate": {"approx_tokens": 31, "chars": 122}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — Cursor / Claude Desktop não reconhece o servidor", "title": "Sintoma — Cursor / Claude Desktop não reconhece o servidor", "traceability": {"line_end": 206, "line_start": 205, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-cursor-claude-desktop-nao-reconhece-o-servidor"}, "vector_text": "Sintoma — Cursor / Claude Desktop não reconhece o servidor\n\n### Sintoma — Cursor / Claude Desktop não reconhece o servidor"}
|
|
4107
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--causa-s", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--causa-s", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Causa(s)"], "size_estimate": {"approx_tokens": 39, "chars": 156}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Causa(s)\n\n1. Ficheiro de configuração em caminho errado\n2. JSON inválido (trailing comma, aspas erradas)\n3. Cliente não reiniciado após edição", "title": "Causa(s)", "traceability": {"line_end": 212, "line_start": 207, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--causa-s"}, "vector_text": "Causa(s)\n\n### Causa(s)\n\n1. Ficheiro de configuração em caminho errado\n2. JSON inválido (trailing comma, aspas erradas)\n3. Cliente não reiniciado após edição"}
|
|
4108
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--solucao--2", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--solucao--2", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Solução"], "size_estimate": {"approx_tokens": 55, "chars": 217}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Solução\n\n1. Confirmar caminho (ver [Instalação](./03-instalacao.md))\n2. Validar JSON: `jq . < /path/to/config.json` — erros aparecem\n3. **Reiniciar o cliente** após cada alteração da configuração MCP\n\n---", "title": "Solução", "traceability": {"line_end": 220, "line_start": 213, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--solucao--2"}, "vector_text": "Solução\n\n### Solução\n\n1. Confirmar caminho (ver [Instalação](./03-instalacao.md))\n2. Validar JSON: `jq . < /path/to/config.json` — erros aparecem\n3. **Reiniciar o cliente** após cada alteração da configuração MCP\n\n---"}
|
|
4109
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-tools-sbd-toe-aparecem-mas-todas-as-chamadas-falham", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-tools-sbd-toe-aparecem-mas-todas-as-chamadas-falham", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Sintoma — Tools `sbd-toe.*` aparecem mas todas as chamadas falham"], "size_estimate": {"approx_tokens": 34, "chars": 136}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — Tools `sbd-toe.*` aparecem mas todas as chamadas falham", "title": "Sintoma — Tools `sbd-toe.*` aparecem mas todas as chamadas falham", "traceability": {"line_end": 222, "line_start": 221, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--sintoma-tools-sbd-toe-aparecem-mas-todas-as-chamadas-falham"}, "vector_text": "Sintoma — Tools `sbd-toe.*` aparecem mas todas as chamadas falham\n\n### Sintoma — Tools `sbd-toe.*` aparecem mas todas as chamadas falham"}
|
|
4110
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--diagnostico", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--diagnostico", "relation_hints": [], "section_path": ["ou — em alternativa:", "Instalação / cliente", "Diagnóstico"], "size_estimate": {"approx_tokens": 66, "chars": 264}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Diagnóstico\n\nExecutar o comando manualmente para isolar:\n\n```bash\nnpx -y @shiftleftpt/sbd-toe-mcp\n```\n\nDeve mostrar logs *stderr* a indicar \"MCP server listening on stdio\" (ou equivalente). Se não — problema do servidor / Node / dependências.\n\n---", "title": "Diagnóstico", "traceability": {"line_end": 234, "line_start": 223, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--instalacao-cliente--diagnostico"}, "vector_text": "Diagnóstico\n\n### Diagnóstico\n\nExecutar o comando manualmente para isolar:\n\n```bash\nnpx -y @shiftleftpt/sbd-toe-mcp\n```\n\nDeve mostrar logs *stderr* a indicar \"MCP server listening on stdio\" (ou equivalente). Se não — problema do servidor / Node / dependências.\n\n---"}
|
|
4111
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional", "relation_hints": [], "section_path": ["ou — em alternativa:", "Operacional"], "size_estimate": {"approx_tokens": 7, "chars": 27}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Operacional", "title": "Operacional", "traceability": {"line_end": 236, "line_start": 235, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional"}, "vector_text": "Operacional\n\n## Operacional"}
|
|
4112
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--sintoma-output-do-mcp-e-em-pt-mas-o-utilizador-escreve-en", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--sintoma-output-do-mcp-e-em-pt-mas-o-utilizador-escreve-en", "relation_hints": [], "section_path": ["ou — em alternativa:", "Operacional", "Sintoma — output do MCP é em PT, mas o utilizador escreve EN"], "size_estimate": {"approx_tokens": 32, "chars": 126}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — output do MCP é em PT, mas o utilizador escreve EN", "title": "Sintoma — output do MCP é em PT, mas o utilizador escreve EN", "traceability": {"line_end": 238, "line_start": 237, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--sintoma-output-do-mcp-e-em-pt-mas-o-utilizador-escreve-en"}, "vector_text": "Sintoma — output do MCP é em PT, mas o utilizador escreve EN\n\n### Sintoma — output do MCP é em PT, mas o utilizador escreve EN"}
|
|
4113
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--nao-e-bug-e-arquitectura", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--nao-e-bug-e-arquitectura", "relation_hints": [], "section_path": ["ou — em alternativa:", "Operacional", "Não é bug — é arquitectura"], "size_estimate": {"approx_tokens": 111, "chars": 441}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Não é bug — é arquitectura\n\nO conteúdo canónico do manual está em PT. O *agent guide* diz explicitamente:\n\n> *Always respond in the user's language. The manual content is in Portuguese — translate, summarise, and explain in whatever language the user writes in.*\n\n**Solução:** o LLM deve **traduzir / sumarizar** o conteúdo PT para a língua do utilizador. Não passar a falar PT só porque o manual o está.\n\n---", "title": "Não é bug — é arquitectura", "traceability": {"line_end": 248, "line_start": 239, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--nao-e-bug-e-arquitectura"}, "vector_text": "Não é bug — é arquitectura\n\n### Não é bug — é arquitectura\n\nO conteúdo canónico do manual está em PT. O *agent guide* diz explicitamente:\n\n> *Always respond in the user's language. The manual content is in Portuguese — translate, summarise, and explain in whatever language the user writes in.*\n\n**Solução:** o LLM deve **traduzir / sumarizar** o conteúdo PT para a língua do utilizador. Não passar a falar PT só porque o manual o está.\n\n---"}
|
|
4114
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--sintoma-utilizador-discorda-do-risk-level", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--sintoma-utilizador-discorda-do-risk-level", "relation_hints": [], "section_path": ["ou — em alternativa:", "Operacional", "Sintoma — utilizador discorda do *risk level*"], "size_estimate": {"approx_tokens": 24, "chars": 96}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Sintoma — utilizador discorda do *risk level*", "title": "Sintoma — utilizador discorda do *risk level*", "traceability": {"line_end": 250, "line_start": 249, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--sintoma-utilizador-discorda-do-risk-level"}, "vector_text": "Sintoma — utilizador discorda do *risk level*\n\n### Sintoma — utilizador discorda do *risk level*"}
|
|
4115
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--accao", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--accao", "relation_hints": [], "section_path": ["ou — em alternativa:", "Operacional", "Acção"], "size_estimate": {"approx_tokens": 76, "chars": 301}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Acção\n\nNão decidir unilateralmente. Apresentar:\n\n1. O que `map_sbd_toe_applicability` sugere\n2. O que mudaria se `risk_level` fosse X vs Y (custo: capítulos adicionais)\n3. Quem assina a decisão (`CISO`, `executive_management`, `appsec`)\n\nMarcar como `inferred` enquanto não há decisão.\n\n---", "title": "Acção", "traceability": {"line_end": 262, "line_start": 251, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--operacional--accao"}, "vector_text": "Acção\n\n### Acção\n\nNão decidir unilateralmente. Apresentar:\n\n1. O que `map_sbd_toe_applicability` sugere\n2. O que mudaria se `risk_level` fosse X vs Y (custo: capítulos adicionais)\n3. Quem assina a decisão (`CISO`, `executive_management`, `appsec`)\n\nMarcar como `inferred` enquanto não há decisão.\n\n---"}
|
|
4116
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento", "relation_hints": [], "section_path": ["ou — em alternativa:", "*Upgrades* e versionamento"], "size_estimate": {"approx_tokens": 15, "chars": 57}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## *Upgrades* e versionamento", "title": "*Upgrades* e versionamento", "traceability": {"line_end": 264, "line_start": 263, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento"}, "vector_text": "*Upgrades* e versionamento\n\n## *Upgrades* e versionamento"}
|
|
4117
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento--quando-re-correr-generate-sbd-toe-skill", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento--quando-re-correr-generate-sbd-toe-skill", "relation_hints": [], "section_path": ["ou — em alternativa:", "*Upgrades* e versionamento", "Quando re-correr `generate_sbd_toe_skill`"], "size_estimate": {"approx_tokens": 62, "chars": 248}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Quando re-correr `generate_sbd_toe_skill`\n\nApós cada *upgrade* do servidor MCP (releases minor/patch no npm). O conteúdo do *agent guide* pode mudar; a skill em disco está desactualizada até regenerar.", "title": "Quando re-correr `generate_sbd_toe_skill`", "traceability": {"line_end": 268, "line_start": 265, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento--quando-re-correr-generate-sbd-toe-skill"}, "vector_text": "Quando re-correr `generate_sbd_toe_skill`\n\n### Quando re-correr `generate_sbd_toe_skill`\n\nApós cada *upgrade* do servidor MCP (releases minor/patch no npm). O conteúdo do *agent guide* pode mudar; a skill em disco está desactualizada até regenerar."}
|
|
4118
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento--como-saber-se-a-skill-esta-desactualizada", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento--como-saber-se-a-skill-esta-desactualizada", "relation_hints": [], "section_path": ["ou — em alternativa:", "*Upgrades* e versionamento", "Como saber se a skill está desactualizada"], "size_estimate": {"approx_tokens": 93, "chars": 369}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Como saber se a skill está desactualizada\n\nA skill em disco começa com:\n\n```\n<!-- SbD-ToE skill content — source: sbd://toe/agent-guide (@shiftleftpt/sbd-toe-mcp) -->\n```\n\nNão inclui versão explícita — comparar `sbd://toe/version` com a versão usada na última geração (manter como entrada de *changelog* do projecto).\n\n---", "title": "Como saber se a skill está desactualizada", "traceability": {"line_end": 280, "line_start": 269, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--upgrades-e-versionamento--como-saber-se-a-skill-esta-desactualizada"}, "vector_text": "Como saber se a skill está desactualizada\n\n### Como saber se a skill está desactualizada\n\nA skill em disco começa com:\n\n```\n<!-- SbD-ToE skill content — source: sbd://toe/agent-guide (@shiftleftpt/sbd-toe-mcp) -->\n```\n\nNão inclui versão explícita — comparar `sbd://toe/version` com a versão usada na última geração (manter como entrada de *changelog* do projecto).\n\n---"}
|
|
4119
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--quando-reportar-bug", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--quando-reportar-bug", "relation_hints": [], "section_path": ["ou — em alternativa:", "Quando reportar bug"], "size_estimate": {"approx_tokens": 138, "chars": 550}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Quando reportar bug\n\nReportar em [github.com/Shiftleftpt/sbd-toe-mcp-poc/issues](https://github.com/Shiftleftpt/sbd-toe-mcp-poc/issues) se:\n\n- `inspect_sbd_toe_retrieval` mostra *rule_trace* incoerente\n- Output contradiz directamente o que o manual web diz para um capítulo canon\n- Tool retorna *schema* diferente do documentado\n- Tools listadas como disponíveis falham 100% das chamadas\n\nIncluir no report:\n- Versão do MCP (`sbd://toe/version`)\n- Cliente e versão\n- Input exacto da chamada\n- Output recebido\n- Output esperado", "title": "Quando reportar bug", "traceability": {"line_end": 296, "line_start": 281, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--quando-reportar-bug"}, "vector_text": "Quando reportar bug\n\n## Quando reportar bug\n\nReportar em [github.com/Shiftleftpt/sbd-toe-mcp-poc/issues](https://github.com/Shiftleftpt/sbd-toe-mcp-poc/issues) se:\n\n- `inspect_sbd_toe_retrieval` mostra *rule_trace* incoerente\n- Output contradiz directamente o que o manual web diz para um capítulo canon\n- Tool retorna *schema* diferente do documentado\n- Tools listadas como disponíveis falham 100% das chamadas\n\nIncluir no report:\n- Versão do MCP (`sbd://toe/version`)\n- Cliente e versão\n- Input exacto da chamada\n- Output recebido\n- Output esperado"}
|
|
4120
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--a-seguir", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-10-troubleshooting-faq", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--a-seguir", "relation_hints": [], "section_path": ["ou — em alternativa:", "A seguir"], "size_estimate": {"approx_tokens": 27, "chars": 107}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## A seguir\n\n- [Versionamento e roadmap](./11-versionamento-roadmap.md) — release notes + futuro.", "title": "A seguir", "traceability": {"line_end": 299, "line_start": 297, "source_path": "020-assets/mcp/10-troubleshooting-faq.md", "unit_id": "020-assets-mcp-10-troubleshooting-faq--ou-em-alternativa--a-seguir"}, "vector_text": "A seguir\n\n## A seguir\n\n- [Versionamento e roadmap](./11-versionamento-roadmap.md) — release notes + futuro."}
|
|
4121
4121
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap", "relation_hints": [], "section_path": ["Versionamento e roadmap"], "size_estimate": {"approx_tokens": 106, "chars": 422}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "# Versionamento e roadmap\n\nO MCP server vive dois ritmos: o ritmo do *software* (releases no npm, *bugfixes*, novas tools) e o ritmo do *conteúdo* (cada *snapshot* traz consigo a versão do manual em que foi publicado). Os dois não andam sincronizados — e essa assimetria é a fonte da maior parte das perguntas de versionamento. Esta página explica como ler cada um, e o que está previsto a seguir.", "title": "Versionamento e roadmap", "traceability": {"line_end": 17, "line_start": 14, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap"}, "vector_text": "Versionamento e roadmap\n\n# Versionamento e roadmap\n\nO MCP server vive dois ritmos: o ritmo do *software* (releases no npm, *bugfixes*, novas tools) e o ritmo do *conteúdo* (cada *snapshot* traz consigo a versão do manual em que foi publicado). Os dois não andam sincronizados — e essa assimetria é a fonte da maior parte das perguntas de versionamento. Esta página explica como ler cada um, e o que está previsto a seguir."}
|
|
4122
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--politica-de-versionamento", "chunk_kind": "table_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--politica-de-versionamento", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Política de versionamento"], "size_estimate": {"approx_tokens":
|
|
4122
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--politica-de-versionamento", "chunk_kind": "table_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--politica-de-versionamento", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Política de versionamento"], "size_estimate": {"approx_tokens": 182, "chars": 728}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Política de versionamento\n\nO servidor segue **SemVer 2.0.0** com a seguinte semântica:\n\n| Tipo | Quando | Exemplos |\n|---|---|---|\n| **Major** (`X.0.0`) | *Breaking changes* na superfície MCP (tools renomeadas/removidas, parâmetros incompatíveis, resources renomeados) | `1.0.0` (futuro: estabilização) |\n| **Minor** (`0.X.0`) | Novas tools, novos resources, novos parâmetros opcionais, novos *concerns* ou *roles* — backward-compatible | `0.10.0` |\n| **Patch** (`0.0.X`) | Correções de bug, melhorias de retrieval, refinamento de outputs sem mudar schema | `0.10.2` (atual), `0.10.1` |\n\nO servidor está actualmente em **0.x** — pré-estável; *breaking changes* podem ocorrer em *minor* até `1.0.0`.", "title": "Política de versionamento", "traceability": {"line_end": 29, "line_start": 18, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--politica-de-versionamento"}, "vector_text": "Política de versionamento\n\n## Política de versionamento\n\nO servidor segue **SemVer 2.0.0** com a seguinte semântica:\n\n| Tipo | Quando | Exemplos |\n|---|---|---|\n| **Major** (`X.0.0`) | *Breaking changes* na superfície MCP (tools renomeadas/removidas, parâmetros incompatíveis, resources renomeados) | `1.0.0` (futuro: estabilização) |\n| **Minor** (`0.X.0`) | Novas tools, novos resources, novos parâmetros opcionais, novos *concerns* ou *roles* — backward-compatible | `0.10.0` |\n| **Patch** (`0.0.X`) | Correções de bug, melhorias de retrieval, refinamento de outputs sem mudar schema | `0.10.2` (atual), `0.10.1` |\n\nO servidor está actualmente em **0.x** — pré-estável; *breaking changes* podem ocorrer em *minor* até `1.0.0`."}
|
|
4123
4123
|
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--como-saber-a-versao-actual", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--como-saber-a-versao-actual", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Como saber a versão actual"], "size_estimate": {"approx_tokens": 62, "chars": 246}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Como saber a versão actual\n\nSempre via o resource:\n\n```\nsbd://toe/version\n```\n\nOu via npm:\n\n```bash\nnpm view @shiftleftpt/sbd-toe-mcp version\nnpm view @shiftleftpt/sbd-toe-mcp versions # histórico completo\n```\n\n---", "title": "Como saber a versão actual", "traceability": {"line_end": 46, "line_start": 30, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--como-saber-a-versao-actual"}, "vector_text": "Como saber a versão actual\n\n## Como saber a versão actual\n\nSempre via o resource:\n\n```\nsbd://toe/version\n```\n\nOu via npm:\n\n```bash\nnpm view @shiftleftpt/sbd-toe-mcp version\nnpm view @shiftleftpt/sbd-toe-mcp versions # histórico completo\n```\n\n---"}
|
|
4124
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--relacao-com-versoes-do-manual", "chunk_kind": "table_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--relacao-com-versoes-do-manual", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Relação com versões do manual"], "size_estimate": {"approx_tokens":
|
|
4125
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--release-actual", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--release-actual", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Release actual"], "size_estimate": {"approx_tokens":
|
|
4126
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Roadmap (público)"], "size_estimate": {"approx_tokens": 31, "chars": 122}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Roadmap (público)\n\n> Roadmap indicativo, sem datas duras. Prioridades podem mudar conforme feedback.", "title": "Roadmap (público)", "traceability": {"line_end":
|
|
4127
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--entregue-0-10-
|
|
4128
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--curto-prazo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--curto-prazo", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Roadmap (público)", "Curto prazo"], "size_estimate": {"approx_tokens": 80, "chars": 320}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Curto prazo\n\n- **Estabilização para `1.0.0`** — fechar superfície de tools / resources, congelar *schemas*.\n- **Refinamento de `prepare_sbd_toe_codegen_context`** — mais *stacks* suportadas no `regulatory_overlay`.\n- **Documentação cliente-específica** — guias para Zed e Windsurf no GitHub do servidor.", "title": "Curto prazo", "traceability": {"line_end":
|
|
4129
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--medio-prazo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--medio-prazo", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Roadmap (público)", "Médio prazo"], "size_estimate": {"approx_tokens":
|
|
4130
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--longo-prazo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--longo-prazo", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Roadmap (público)", "Longo prazo"], "size_estimate": {"approx_tokens": 143, "chars": 569}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Longo prazo\n\n- **State layer / *stateful-assess*** (tier Premium) — verificação contra o estado real de CI / repo / runtime (o lado *observed* que hoje fica `not verified — runtime`).\n- **Protocolo de interação** — encadeamento dirigido pelo servidor para além da banda `next`.\n- **Multi-language manual support** — quando o manual existir em outras línguas além de PT, expor selector via parameter.\n- **Streaming responses** para outputs grandes (L3 *full coverage*).\n- **MCP transport HTTP/SSE** além de stdio (consumo a partir de cloud agents).\n\n---", "title": "Longo prazo", "traceability": {"line_end":
|
|
4131
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Changelog (resumo público)"], "size_estimate": {"approx_tokens": 65, "chars": 258}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Changelog (resumo público)\n\nPara o changelog detalhado por release, consultar:\n\n- [GitHub Releases](https://github.com/Shiftleftpt/sbd-toe-mcp-poc/releases)\n- npm: `npm view @shiftleftpt/sbd-toe-mcp time` (datas de cada versão)", "title": "Changelog (resumo público)", "traceability": {"line_end":
|
|
4132
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-10-
|
|
4133
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-
|
|
4134
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-
|
|
4135
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--
|
|
4136
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--como-
|
|
4137
|
-
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--
|
|
4124
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--relacao-com-versoes-do-manual", "chunk_kind": "table_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--relacao-com-versoes-do-manual", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Relação com versões do manual"], "size_estimate": {"approx_tokens": 336, "chars": 1341}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Relação com versões do manual\n\n| Componente | Versionamento | Onde |\n|---|---|---|\n| **Servidor MCP** | SemVer no npm | `@shiftleftpt/sbd-toe-mcp@<x.y.z>` |\n| **Canon do manual** (caps. 00–14) | Tags Git no repositório do manual | `vX.Y.Z` em [SbD-ToE-Manual](https://github.com/Shiftleftpt/SbD-ToE-Manual/tags) |\n| **Cross-checks normativos** | Aditivos sobre o canon — viajam dentro do *snapshot* MCP **se publicados antes** dele; caso contrário, vivem só no manual web até nova publicação | Manual web em `/sbd-toe/cross-check-normativo/`; cobertura actual no MCP (`0.10.2`): CRA, DORA, NIS2, GDPR, AI Act, ENISA/CSA (✅ — os seis) |\n| **Ontologia AppSec Core v1** | Versão pinned dentro do MCP | `sbd://toe/ontology` (declara a versão) |\n\n**Importante** — não há mapeamento 1-para-1:\n\n- Uma release de servidor (`0.10.2`) **não** corresponde a uma tag do manual (o *snapshot* actual traz o manual `v1.7.0`, sobre o KG formal `v1.6.0`)\n- O servidor traz uma *snapshot* do canon na altura da publicação, e um índice KG construído a partir dela\n- Exemplo histórico: entre `0.10.0` e `0.10.2`, o cross-check do **AI Act** esteve no *snapshot* do manual mas fora do índice KG — uma lacuna de **indexação**, não de versão; resolvido em `0.10.2` (ver [content lag](./10-troubleshooting-faq.md#content-lag))\n\n---", "title": "Relação com versões do manual", "traceability": {"line_end": 63, "line_start": 47, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--relacao-com-versoes-do-manual"}, "vector_text": "Relação com versões do manual\n\n## Relação com versões do manual\n\n| Componente | Versionamento | Onde |\n|---|---|---|\n| **Servidor MCP** | SemVer no npm | `@shiftleftpt/sbd-toe-mcp@<x.y.z>` |\n| **Canon do manual** (caps. 00–14) | Tags Git no repositório do manual | `vX.Y.Z` em [SbD-ToE-Manual](https://github.com/Shiftleftpt/SbD-ToE-Manual/tags) |\n| **Cross-checks normativos** | Aditivos sobre o canon — viajam dentro do *snapshot* MCP **se publicados antes** dele; caso contrário, vivem só no manual web até nova publicação | Manual web em `/sbd-toe/cross-check-normativo/`; cobertura actual no MCP (`0.10.2`): CRA, DORA, NIS2, GDPR, AI Act, ENISA/CSA (✅ — os seis) |\n| **Ontologia AppSec Core v1** | Versão pinned dentro do MCP | `sbd://toe/ontology` (declara a versão) |\n\n**Importante** — não há mapeamento 1-para-1:\n\n- Uma release de servidor (`0.10.2`) **não** corresponde a uma tag do manual (o *snapshot* actual traz o manual `v1.7.0`, sobre o KG formal `v1.6.0`)\n- O servidor traz uma *snapshot* do canon na altura da publicação, e um índice KG construído a partir dela\n- Exemplo histórico: entre `0.10.0` e `0.10.2`, o cross-check do **AI Act** esteve no *snapshot* do manual mas fora do índice KG — uma lacuna de **indexação**, não de versão; resolvido em `0.10.2` (ver [content lag](./10-troubleshooting-faq.md#content-lag))\n\n---"}
|
|
4125
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--release-actual", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": ["application-security-requirements", "operations-monitoring"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["OPS-015", "REQ-AGN-001"]}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--release-actual", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Release actual"], "size_estimate": {"approx_tokens": 536, "chars": 2141}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Release actual\n\n`@shiftleftpt/sbd-toe-mcp@0.10.2` (latest no npm) — *snapshot* do manual `v1.7.0`, KG formal `v1.6.0` (contrato de consumo v1.11).\n\nInclui:\n- Canon 00–14, fundamentos (incluindo os [cinco macro-processos](/sbd-toe/sbd-manual/fundamentos/macro-processos)), policies e addons dos capítulos, ontologia AppSec Core v1\n- Cross-checks normativos **CRA**, **DORA**, **NIS2**, **GDPR**, **AI Act** e **ENISA/CSA** — os seis indexados no KG (narrativa citável via `search_sbd_toe_manual` e overlay regulatório via `map_sbd_toe_regulatory_activation` / `resolve_entities`)\n- **256 requisitos** em 27 categorias (inclui `REQ-AGN-001…004` e `OPS-015`), com ligações requisito→controlo completas — `coverage_gaps.requirements_without_control_link` devolve `count: 0` em L1/L2/L3\n- Concern **`agents`** (enum fechado de 13 valores) e campo `coverage_gaps` em `consult_security_requirements`; `declared_gap` / `citation_note` (`status: \"informative\"`) em `query_sbd_toe_entities` / `resolve_entities`; gramática de IDs *fullmatch* — ver [tools reference](./05-tools-reference.md)\n- **21 tools** (inalterado desde `0.10.0`) — CONSULT + GUIDE + SETUP + DIAG + a **vista de implementação** (`get_sbd_toe_chapter_implementation_checklist`, `get_sbd_toe_operating_model`, `plan_sbd_toe_rollout`, `get_sbd_toe_verification_matrix`, `assess_sbd_toe_implementation`) e o overlay regulatório (`map_sbd_toe_regulatory_activation`) — ver [tools reference](./05-tools-reference.md)\n- `generate_sbd_toe_skill` com `role` / `format` / `flavour` (role-skills) + resources `sbd://toe/{skill,subagent}/{role}`\n- 8 resources `sbd://toe/*` — ver [resources & prompts](./06-resources-prompts.md)\n- 3 prompts (`setup_sbd_toe_agent`, `ask_sbd_toe_manual`, `prepare_grounded_codegen`)\n- `prepare_sbd_toe_codegen_context` com `mode` em `codegen`, `review` ou `test-plan`\n\nNão inclui:\n- A *state layer* / *stateful-assess* (verificação contra o estado real de CI/repo) — ver roadmap\n- Conteúdo do manual posterior ao *snapshot* `v1.7.0` — vive só no manual web até nova publicação (ver [content lag](./10-troubleshooting-faq.md#content-lag))\n\n---", "title": "Release actual", "traceability": {"line_end": 84, "line_start": 64, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--release-actual"}, "vector_text": "Release actual\n\n## Release actual\n\n`@shiftleftpt/sbd-toe-mcp@0.10.2` (latest no npm) — *snapshot* do manual `v1.7.0`, KG formal `v1.6.0` (contrato de consumo v1.11).\n\nInclui:\n- Canon 00–14, fundamentos (incluindo os [cinco macro-processos](/sbd-toe/sbd-manual/fundamentos/macro-processos)), policies e addons dos capítulos, ontologia AppSec Core v1\n- Cross-checks normativos **CRA**, **DORA**, **NIS2**, **GDPR**, **AI Act** e **ENISA/CSA** — os seis indexados no KG (narrativa citável via `search_sbd_toe_manual` e overlay regulatório via `map_sbd_toe_regulatory_activation` / `resolve_entities`)\n- **256 requisitos** em 27 categorias (inclui `REQ-AGN-001…004` e `OPS-015`), com ligações requisito→controlo completas — `coverage_gaps.requirements_without_control_link` devolve `count: 0` em L1/L2/L3\n- Concern **`agents`** (enum fechado de 13 valores) e campo `coverage_gaps` em `consult_security_requirements`; `declared_gap` / `citation_note` (`status: \"informative\"`) em `query_sbd_toe_entities` / `resolve_entities`; gramática de IDs *fullmatch* — ver [tools reference](./05-tools-reference.md)\n- **21 tools** (inalterado desde `0.10.0`) — CONSULT + GUIDE + SETUP + DIAG + a **vista de implementação** (`get_sbd_toe_chapter_implementation_checklist`, `get_sbd_toe_operating_model`, `plan_sbd_toe_rollout`, `get_sbd_toe_verification_matrix`, `assess_sbd_toe_implementation`) e o overlay regulatório (`map_sbd_toe_regulatory_activation`) — ver [tools reference](./05-tools-reference.md)\n- `generate_sbd_toe_skill` com `role` / `format` / `flavour` (role-skills) + resources `sbd://toe/{skill,subagent}/{role}`\n- 8 resources `sbd://toe/*` — ver [resources & prompts](./06-resources-prompts.md)\n- 3 prompts (`setup_sbd_toe_agent`, `ask_sbd_toe_manual`, `prepare_grounded_codegen`)\n- `prepare_sbd_toe_codegen_context` com `mode` em `codegen`, `review` ou `test-plan`\n\nNão inclui:\n- A *state layer* / *stateful-assess* (verificação contra o estado real de CI/repo) — ver roadmap\n- Conteúdo do manual posterior ao *snapshot* `v1.7.0` — vive só no manual web até nova publicação (ver [content lag](./10-troubleshooting-faq.md#content-lag))\n\n---"}
|
|
4126
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Roadmap (público)"], "size_estimate": {"approx_tokens": 31, "chars": 122}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Roadmap (público)\n\n> Roadmap indicativo, sem datas duras. Prioridades podem mudar conforme feedback.", "title": "Roadmap (público)", "traceability": {"line_end": 88, "line_start": 85, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico"}, "vector_text": "Roadmap (público)\n\n## Roadmap (público)\n\n> Roadmap indicativo, sem datas duras. Prioridades podem mudar conforme feedback."}
|
|
4127
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--entregue-0-10-x", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": ["application-security-requirements", "operations-monitoring"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["OPS-015", "REQ-AGN-001"]}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--entregue-0-10-x", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Roadmap (público)", "Entregue (`0.10.x`)"], "size_estimate": {"approx_tokens": 228, "chars": 912}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Entregue (`0.10.x`)\n\n- **Vista de implementação (V5)** — checklist por capítulo, operating model, rollout, *verification matrix*, *assess* de KPIs.\n- **Role-skills** — `generate_sbd_toe_skill` com `role` / `format` / `flavour` + resources `sbd://toe/{skill,subagent}/{role}`.\n- **Overlay regulatório como tool** — `map_sbd_toe_regulatory_activation` (framework → capítulos activados).\n- **Two-band `next` + coverage-preserving** — afordances de encadeamento e paginação sem truncar em todas as tools.\n- **`0.10.2` — alinhamento ao KG formal `v1.6.0` / manual `v1.7.0`** — AI Act e ENISA/CSA indexados; `REQ-AGN-001…004` e `OPS-015` servidos; `coverage_gaps` e concern `agents`; `declared_gap` / `citation_note`; gramática de IDs *fullmatch*.\n- **Policies e addons servidos** — `020-assets/policies/` e `addon/` dos capítulos (incluindo `macro-processos`) estão nos *chunks* consultáveis.", "title": "Entregue (`0.10.x`)", "traceability": {"line_end": 97, "line_start": 89, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--entregue-0-10-x"}, "vector_text": "Entregue (`0.10.x`)\n\n### Entregue (`0.10.x`)\n\n- **Vista de implementação (V5)** — checklist por capítulo, operating model, rollout, *verification matrix*, *assess* de KPIs.\n- **Role-skills** — `generate_sbd_toe_skill` com `role` / `format` / `flavour` + resources `sbd://toe/{skill,subagent}/{role}`.\n- **Overlay regulatório como tool** — `map_sbd_toe_regulatory_activation` (framework → capítulos activados).\n- **Two-band `next` + coverage-preserving** — afordances de encadeamento e paginação sem truncar em todas as tools.\n- **`0.10.2` — alinhamento ao KG formal `v1.6.0` / manual `v1.7.0`** — AI Act e ENISA/CSA indexados; `REQ-AGN-001…004` e `OPS-015` servidos; `coverage_gaps` e concern `agents`; `declared_gap` / `citation_note`; gramática de IDs *fullmatch*.\n- **Policies e addons servidos** — `020-assets/policies/` e `addon/` dos capítulos (incluindo `macro-processos`) estão nos *chunks* consultáveis."}
|
|
4128
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--curto-prazo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--curto-prazo", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Roadmap (público)", "Curto prazo"], "size_estimate": {"approx_tokens": 80, "chars": 320}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Curto prazo\n\n- **Estabilização para `1.0.0`** — fechar superfície de tools / resources, congelar *schemas*.\n- **Refinamento de `prepare_sbd_toe_codegen_context`** — mais *stacks* suportadas no `regulatory_overlay`.\n- **Documentação cliente-específica** — guias para Zed e Windsurf no GitHub do servidor.", "title": "Curto prazo", "traceability": {"line_end": 103, "line_start": 98, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--curto-prazo"}, "vector_text": "Curto prazo\n\n### Curto prazo\n\n- **Estabilização para `1.0.0`** — fechar superfície de tools / resources, congelar *schemas*.\n- **Refinamento de `prepare_sbd_toe_codegen_context`** — mais *stacks* suportadas no `regulatory_overlay`.\n- **Documentação cliente-específica** — guias para Zed e Windsurf no GitHub do servidor."}
|
|
4129
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--medio-prazo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--medio-prazo", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Roadmap (público)", "Médio prazo"], "size_estimate": {"approx_tokens": 29, "chars": 114}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Médio prazo\n\n- **Tools de comparação** — *diff* entre versões do canon, *diff* entre risk levels.", "title": "Médio prazo", "traceability": {"line_end": 107, "line_start": 104, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--medio-prazo"}, "vector_text": "Médio prazo\n\n### Médio prazo\n\n- **Tools de comparação** — *diff* entre versões do canon, *diff* entre risk levels."}
|
|
4130
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--longo-prazo", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--longo-prazo", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Roadmap (público)", "Longo prazo"], "size_estimate": {"approx_tokens": 143, "chars": 569}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### Longo prazo\n\n- **State layer / *stateful-assess*** (tier Premium) — verificação contra o estado real de CI / repo / runtime (o lado *observed* que hoje fica `not verified — runtime`).\n- **Protocolo de interação** — encadeamento dirigido pelo servidor para além da banda `next`.\n- **Multi-language manual support** — quando o manual existir em outras línguas além de PT, expor selector via parameter.\n- **Streaming responses** para outputs grandes (L3 *full coverage*).\n- **MCP transport HTTP/SSE** além de stdio (consumo a partir de cloud agents).\n\n---", "title": "Longo prazo", "traceability": {"line_end": 117, "line_start": 108, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--roadmap-publico--longo-prazo"}, "vector_text": "Longo prazo\n\n### Longo prazo\n\n- **State layer / *stateful-assess*** (tier Premium) — verificação contra o estado real de CI / repo / runtime (o lado *observed* que hoje fica `not verified — runtime`).\n- **Protocolo de interação** — encadeamento dirigido pelo servidor para além da banda `next`.\n- **Multi-language manual support** — quando o manual existir em outras línguas além de PT, expor selector via parameter.\n- **Streaming responses** para outputs grandes (L3 *full coverage*).\n- **MCP transport HTTP/SSE** além de stdio (consumo a partir de cloud agents).\n\n---"}
|
|
4131
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Changelog (resumo público)"], "size_estimate": {"approx_tokens": 65, "chars": 258}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Changelog (resumo público)\n\nPara o changelog detalhado por release, consultar:\n\n- [GitHub Releases](https://github.com/Shiftleftpt/sbd-toe-mcp-poc/releases)\n- npm: `npm view @shiftleftpt/sbd-toe-mcp time` (datas de cada versão)", "title": "Changelog (resumo público)", "traceability": {"line_end": 124, "line_start": 118, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico"}, "vector_text": "Changelog (resumo público)\n\n## Changelog (resumo público)\n\nPara o changelog detalhado por release, consultar:\n\n- [GitHub Releases](https://github.com/Shiftleftpt/sbd-toe-mcp-poc/releases)\n- npm: `npm view @shiftleftpt/sbd-toe-mcp time` (datas de cada versão)"}
|
|
4132
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-10-2-actual", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": ["application-security-requirements", "operations-monitoring"], "phase": [], "risk_level": ["L1", "L2", "L3"]}, "mentioned_entities": {"Requirement": ["OPS-015", "REQ-AGN-001"]}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-10-2-actual", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Changelog (resumo público)", "`0.10.2` — actual"], "size_estimate": {"approx_tokens": 135, "chars": 539}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `0.10.2` — actual\n\nAlinhamento ao KG formal `v1.6.0` e ao manual `v1.7.0`: AI Act e ENISA/CSA indexados (os seis cross-checks), `REQ-AGN-001…004` e `OPS-015` servidos, ligações requisito→controlo completas com `coverage_gaps` declarado, concern `agents` (13 valores), `declared_gap` / `citation_note` em `query_sbd_toe_entities` / `resolve_entities`, gramática de IDs *fullmatch* (`EX-…` nunca resolve). 21 tools, 8 resources, 3 prompts. (`0.10.1`: re-*pin* intermédio ao mesmo bundle, sem alterações de superfície.)", "title": "`0.10.2` — actual", "traceability": {"line_end": 128, "line_start": 125, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-10-2-actual"}, "vector_text": "`0.10.2` — actual\n\n### `0.10.2` — actual\n\nAlinhamento ao KG formal `v1.6.0` e ao manual `v1.7.0`: AI Act e ENISA/CSA indexados (os seis cross-checks), `REQ-AGN-001…004` e `OPS-015` servidos, ligações requisito→controlo completas com `coverage_gaps` declarado, concern `agents` (13 valores), `declared_gap` / `citation_note` em `query_sbd_toe_entities` / `resolve_entities`, gramática de IDs *fullmatch* (`EX-…` nunca resolve). 21 tools, 8 resources, 3 prompts. (`0.10.1`: re-*pin* intermédio ao mesmo bundle, sem alterações de superfície.)"}
|
|
4133
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-10-0", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-10-0", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Changelog (resumo público)", "`0.10.0`"], "size_estimate": {"approx_tokens": 70, "chars": 278}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `0.10.0`\n\nVista de implementação (checklist / operating model / rollout / verification matrix / assess de KPIs), role-skills (`role`/`format`/`flavour`), overlay regulatório como tool, banda `next` e outputs *coverage-preserving*. 21 tools, 8 resources, 2 prompts.", "title": "`0.10.0`", "traceability": {"line_end": 132, "line_start": 129, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-10-0"}, "vector_text": "`0.10.0`\n\n### `0.10.0`\n\nVista de implementação (checklist / operating model / rollout / verification matrix / assess de KPIs), role-skills (`role`/`format`/`flavour`), overlay regulatório como tool, banda `next` e outputs *coverage-preserving*. 21 tools, 8 resources, 2 prompts."}
|
|
4134
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-9-x", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-9-x", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Changelog (resumo público)", "`0.9.x`"], "size_estimate": {"approx_tokens": 43, "chars": 169}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `0.9.x`\n\nEstabilização do conjunto `consult` + `guide` + `codegen`. Refinamento da ontologia. Disciplina de *epistemic labels* documentada no *agent guide*.", "title": "`0.9.x`", "traceability": {"line_end": 136, "line_start": 133, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-9-x"}, "vector_text": "`0.9.x`\n\n### `0.9.x`\n\nEstabilização do conjunto `consult` + `guide` + `codegen`. Refinamento da ontologia. Disciplina de *epistemic labels* documentada no *agent guide*."}
|
|
4135
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-8-x-e-anteriores", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-8-x-e-anteriores", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Changelog (resumo público)", "`0.8.x` e anteriores"], "size_estimate": {"approx_tokens": 44, "chars": 176}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "### `0.8.x` e anteriores\n\nIterações pré-publicação — adição progressiva de tools, refinamento de retrieval, primeiros clientes (Claude Code, Cursor).\n\n---", "title": "`0.8.x` e anteriores", "traceability": {"line_end": 142, "line_start": 137, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--changelog-resumo-publico--0-8-x-e-anteriores"}, "vector_text": "`0.8.x` e anteriores\n\n### `0.8.x` e anteriores\n\nIterações pré-publicação — adição progressiva de tools, refinamento de retrieval, primeiros clientes (Claude Code, Cursor).\n\n---"}
|
|
4136
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--como-acompanhar", "chunk_kind": "table_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "table_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--como-acompanhar", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Como acompanhar"], "size_estimate": {"approx_tokens": 108, "chars": 432}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Como acompanhar\n\n| Canal | Para |\n|---|---|\n| [GitHub Releases](https://github.com/Shiftleftpt/sbd-toe-mcp-poc/releases) | Notas detalhadas por versão |\n| `npm view @shiftleftpt/sbd-toe-mcp` | Verificar última versão |\n| `sbd://toe/version` em sessão | Saber o que o cliente está realmente a usar |\n| [Manual web — Cross-check normativo](/sbd-toe/cross-check-normativo/intro) | Conteúdo regulatório actualizado |", "title": "Como acompanhar", "traceability": {"line_end": 151, "line_start": 143, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--como-acompanhar"}, "vector_text": "Como acompanhar\n\n## Como acompanhar\n\n| Canal | Para |\n|---|---|\n| [GitHub Releases](https://github.com/Shiftleftpt/sbd-toe-mcp-poc/releases) | Notas detalhadas por versão |\n| `npm view @shiftleftpt/sbd-toe-mcp` | Verificar última versão |\n| `sbd://toe/version` em sessão | Saber o que o cliente está realmente a usar |\n| [Manual web — Cross-check normativo](/sbd-toe/cross-check-normativo/intro) | Conteúdo regulatório actualizado |"}
|
|
4137
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--como-contribuir", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--como-contribuir", "relation_hints": [], "section_path": ["Versionamento e roadmap", "Como contribuir"], "size_estimate": {"approx_tokens": 104, "chars": 416}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## Como contribuir\n\nIssues e PRs no repositório do servidor: [Shiftleftpt/sbd-toe-mcp-poc](https://github.com/Shiftleftpt/sbd-toe-mcp-poc).\n\nPara sugestões ao **conteúdo do manual** (capítulos 00–14, cross-checks, policies), o repositório alvo é [Shiftleftpt/SbD-ToE-Manual](https://github.com/Shiftleftpt/SbD-ToE-Manual). O MCP serve a *snapshot* do que está nesse repositório à data da publicação.", "title": "Como contribuir", "traceability": {"line_end": 157, "line_start": 152, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--como-contribuir"}, "vector_text": "Como contribuir\n\n## Como contribuir\n\nIssues e PRs no repositório do servidor: [Shiftleftpt/sbd-toe-mcp-poc](https://github.com/Shiftleftpt/sbd-toe-mcp-poc).\n\nPara sugestões ao **conteúdo do manual** (capítulos 00–14, cross-checks, policies), o repositório alvo é [Shiftleftpt/SbD-ToE-Manual](https://github.com/Shiftleftpt/SbD-ToE-Manual). O MCP serve a *snapshot* do que está nesse repositório à data da publicação."}
|
|
4138
|
+
{"authority_class": "meta", "bundle_id": "mcp", "chunk_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--a-seguir", "chunk_kind": "narrative_section", "document_id": "020-assets-mcp-11-versionamento-roadmap", "document_role": "meta", "filter_tags": {"authority_class": "meta", "bundle_id": "mcp", "chunk_kind": "narrative_section", "document_role": "meta", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--a-seguir", "relation_hints": [], "section_path": ["Versionamento e roadmap", "A seguir"], "size_estimate": {"approx_tokens": 46, "chars": 182}, "source_mode": "explicit", "support_profiles": ["meta"], "text": "## A seguir\n\n- [Casos de uso](./casos-uso/) — quando precisares de receitas prontas.\n- [Troubleshooting / FAQ](./10-troubleshooting-faq.md) — quando algo não fizer sentido.", "title": "A seguir", "traceability": {"line_end": 161, "line_start": 158, "source_path": "020-assets/mcp/11-versionamento-roadmap.md", "unit_id": "020-assets-mcp-11-versionamento-roadmap--versionamento-e-roadmap--a-seguir"}, "vector_text": "A seguir\n\n## A seguir\n\n- [Casos de uso](./casos-uso/) — quando precisares de receitas prontas.\n- [Troubleshooting / FAQ](./10-troubleshooting-faq.md) — quando algo não fizer sentido."}
|
|
4138
4139
|
{"authority_class": "supporting", "bundle_id": "policies", "chunk_id": "020-assets-policies-01-policy-dast-fuzzing--politica-de-dast-e-fuzzing", "chunk_kind": "narrative_section", "document_id": "020-assets-policies-01-policy-dast-fuzzing", "document_role": "instantiated_policy", "filter_tags": {"authority_class": "supporting", "bundle_id": "policies", "chunk_kind": "narrative_section", "document_role": "instantiated_policy", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-policies-01-policy-dast-fuzzing--politica-de-dast-e-fuzzing", "relation_hints": [], "section_path": ["Política de DAST e Fuzzing"], "size_estimate": {"approx_tokens": 14, "chars": 56}, "source_mode": "explicit", "support_profiles": ["consult", "implementation", "review"], "text": "# Política de DAST e Fuzzing", "title": "Política de DAST e Fuzzing", "traceability": {"line_end": 11, "line_start": 10, "source_path": "020-assets/policies/01_policy-dast-fuzzing.md", "unit_id": "020-assets-policies-01-policy-dast-fuzzing--politica-de-dast-e-fuzzing"}, "vector_text": "Política de DAST e Fuzzing\n\n# Política de DAST e Fuzzing"}
|
|
4139
4140
|
{"authority_class": "supporting", "bundle_id": "policies", "chunk_id": "020-assets-policies-01-policy-dast-fuzzing--politica-de-dast-e-fuzzing--1-objetivo", "chunk_kind": "narrative_section", "document_id": "020-assets-policies-01-policy-dast-fuzzing", "document_role": "instantiated_policy", "filter_tags": {"authority_class": "supporting", "bundle_id": "policies", "chunk_kind": "narrative_section", "document_role": "instantiated_policy", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-policies-01-policy-dast-fuzzing--politica-de-dast-e-fuzzing--1-objetivo", "relation_hints": [], "section_path": ["Política de DAST e Fuzzing", "1. Objetivo"], "size_estimate": {"approx_tokens": 204, "chars": 816}, "source_mode": "explicit", "support_profiles": ["consult", "implementation", "review"], "text": "## 1. Objetivo\n\nEsta política define os requisitos mínimos para a execução de **testes dinâmicos de segurança (DAST)** e **fuzzing** em aplicações classificadas como L2 ou L3 no modelo SbD-ToE.\n\nO objetivo é garantir que vulnerabilidades comportamentais e de tratamento de input são detetadas antes da promoção a produção, complementando os mecanismos de análise estática (SAST) com validação em runtime.\n\nDAST e fuzzing são técnicas complementares:\n\n- **DAST** - simula o comportamento de um utilizador ou atacante externo sobre a aplicação em execução, identificando falhas que só se manifestam em runtime;\n- **Fuzzing** - injeta inputs malformados, inesperados ou aleatórios em endpoints críticos, revelando falhas de parsing, crashes e comportamentos anómalos não cobertos por testes planeados.\n\n---", "title": "1. Objetivo", "traceability": {"line_end": 24, "line_start": 12, "source_path": "020-assets/policies/01_policy-dast-fuzzing.md", "unit_id": "020-assets-policies-01-policy-dast-fuzzing--politica-de-dast-e-fuzzing--1-objetivo"}, "vector_text": "1. Objetivo\n\n## 1. Objetivo\n\nEsta política define os requisitos mínimos para a execução de **testes dinâmicos de segurança (DAST)** e **fuzzing** em aplicações classificadas como L2 ou L3 no modelo SbD-ToE.\n\nO objetivo é garantir que vulnerabilidades comportamentais e de tratamento de input são detetadas antes da promoção a produção, complementando os mecanismos de análise estática (SAST) com validação em runtime.\n\nDAST e fuzzing são técnicas complementares:\n\n- **DAST** - simula o comportamento de um utilizador ou atacante externo sobre a aplicação em execução, identificando falhas que só se manifestam em runtime;\n- **Fuzzing** - injeta inputs malformados, inesperados ou aleatórios em endpoints críticos, revelando falhas de parsing, crashes e comportamentos anómalos não cobertos por testes planeados.\n\n---"}
|
|
4140
4141
|
{"authority_class": "supporting", "bundle_id": "policies", "chunk_id": "020-assets-policies-01-policy-dast-fuzzing--politica-de-dast-e-fuzzing--2-ambito-e-proporcionalidade", "chunk_kind": "table_section", "document_id": "020-assets-policies-01-policy-dast-fuzzing", "document_role": "instantiated_policy", "filter_tags": {"authority_class": "supporting", "bundle_id": "policies", "chunk_kind": "table_section", "document_role": "instantiated_policy", "domain": [], "phase": [], "risk_level": []}, "mentioned_entities": {}, "record_id": "mcp::020-assets-policies-01-policy-dast-fuzzing--politica-de-dast-e-fuzzing--2-ambito-e-proporcionalidade", "relation_hints": [], "section_path": ["Política de DAST e Fuzzing", "2. Âmbito e proporcionalidade"], "size_estimate": {"approx_tokens": 118, "chars": 472}, "source_mode": "explicit", "support_profiles": ["consult", "implementation", "review"], "text": "## 2. Âmbito e proporcionalidade\n\n| Técnica | L1 | L2 | L3 |\n|---|---|---|---|\n| DAST | Manual/exploratório (opcional) | Automático autenticado | Automático + cobertura ampliada |\n| Fuzzing | Opcional | Endpoints prioritários | Endpoints críticos obrigatórios |\n| IAST | Não aplicável | Recomendado | Obrigatório |\n\nEsta política é **obrigatória para L2 e L3**. Para L1, as práticas aqui descritas são recomendadas mas não obrigatórias.\n\n---", "title": "2. Âmbito e proporcionalidade", "traceability": {"line_end": 36, "line_start": 25, "source_path": "020-assets/policies/01_policy-dast-fuzzing.md", "unit_id": "020-assets-policies-01-policy-dast-fuzzing--politica-de-dast-e-fuzzing--2-ambito-e-proporcionalidade"}, "vector_text": "2. Âmbito e proporcionalidade\n\n## 2. Âmbito e proporcionalidade\n\n| Técnica | L1 | L2 | L3 |\n|---|---|---|---|\n| DAST | Manual/exploratório (opcional) | Automático autenticado | Automático + cobertura ampliada |\n| Fuzzing | Opcional | Endpoints prioritários | Endpoints críticos obrigatórios |\n| IAST | Não aplicável | Recomendado | Obrigatório |\n\nEsta política é **obrigatória para L2 e L3**. Para L1, as práticas aqui descritas são recomendadas mas não obrigatórias.\n\n---"}
|