@shiftleftpt/sbd-toe-mcp 0.20.0-beta.4 → 0.20.0-beta.6

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.
Files changed (46) hide show
  1. package/assets/agent-guide.md +33 -0
  2. package/consumed-bundle.json +8 -8
  3. package/data/entities/proportionality.json +2 -2
  4. package/data/entities/sdlc_integration.json +2 -2
  5. package/data/publish/indexes/canonical_chunks.jsonl +4903 -4903
  6. package/data/publish/indexes/publication_manifest.json +4 -4
  7. package/data/publish/ontology/sbdtoe-ontology.yaml +1699 -21
  8. package/data/publish/overlay/framework_overlay_index.json +121 -11
  9. package/data/publish/overlay/overlay_mappings.jsonl +935 -646
  10. package/data/publish/runtime/artifact_requirements.json +218 -311
  11. package/data/publish/runtime/artifacts.json +82 -55
  12. package/data/publish/runtime/controls.json +870 -311
  13. package/data/publish/runtime/deterministic_manifest.json +2 -2
  14. package/data/publish/runtime/evidence_patterns.json +162 -162
  15. package/data/publish/runtime/requirement_control_links.json +2271 -1708
  16. package/data/publish/runtime/v1/manual_threat_mitigation.jsonl +233 -233
  17. package/data/publish/runtime/v1/v1_manifest.json +6 -4
  18. package/data/reports/run_manifest.json +4 -4
  19. package/dist/index.js +66 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/serving/affordances.d.ts +1 -0
  22. package/dist/serving/affordances.js +12 -3
  23. package/dist/serving/affordances.js.map +1 -1
  24. package/dist/serving/selection.d.ts +56 -0
  25. package/dist/serving/selection.js +289 -0
  26. package/dist/serving/selection.js.map +1 -0
  27. package/dist/tools/consult-security-requirements.d.ts +7 -0
  28. package/dist/tools/consult-security-requirements.js +38 -0
  29. package/dist/tools/consult-security-requirements.js.map +1 -1
  30. package/dist/tools/generate-sbd-toe-skill.js +7 -2
  31. package/dist/tools/generate-sbd-toe-skill.js.map +1 -1
  32. package/dist/tools/get-threat-landscape.js +36 -13
  33. package/dist/tools/get-threat-landscape.js.map +1 -1
  34. package/dist/tools/map-review-scope.d.ts +6 -0
  35. package/dist/tools/map-review-scope.js +19 -0
  36. package/dist/tools/map-review-scope.js.map +1 -1
  37. package/dist/tools/ontology-loader.d.ts +8 -0
  38. package/dist/tools/ontology-loader.js +9 -0
  39. package/dist/tools/ontology-loader.js.map +1 -1
  40. package/dist/tools/prepare-codegen-context.d.ts +55 -1
  41. package/dist/tools/prepare-codegen-context.js +151 -28
  42. package/dist/tools/prepare-codegen-context.js.map +1 -1
  43. package/dist/tools/select-requirements.d.ts +53 -0
  44. package/dist/tools/select-requirements.js +99 -0
  45. package/dist/tools/select-requirements.js.map +1 -0
  46. package/package.json +3 -2
@@ -0,0 +1,289 @@
1
+ /**
2
+ * selection — the MP1 selection operation (G-mp1a, O2; ciclo MP1 P2, 2026-08-31).
3
+ *
4
+ * Implements the reference semantics DECLARED by the published ontology
5
+ * (`requirement_selection_model`, sbdtoe-ontology v2.2, served since contract v1.14):
6
+ *
7
+ * selection = baseline(cap. 02, `type: base`, by risk level)
8
+ * ∪ domain_specific(chapters activated by CONTEXT)
9
+ * ⊕ overlay(extend — the `replace` operator awaits ADR 0014)
10
+ *
11
+ * followed by deterministic, DECLARED narrowing by the task over that eligible set.
12
+ * Two output bands, both listed (never-silent):
13
+ * - `selected[]` — requirement with a declared signal (selection_trace per item)
14
+ * - `narrowed_out[]` — eligible without a signal, grouped by category with reason.
15
+ *
16
+ * The engine consumes the activation machinery of prepare-codegen-context (one
17
+ * audited signal table for the whole serving layer — D4: the concern lexicon is ONE
18
+ * signal among task terms, compound phrases, changed_files, stack, exposure,
19
+ * data_sensitivity and explicit concerns) and the path→chapter knowledge of
20
+ * map_sbd_toe_review_scope. It never invents requirements and never consults a model.
21
+ */
22
+ import { getOntologyData } from "../tools/ontology-loader.js";
23
+ import { activate, categoriesForConcerns, normalizeInput } from "../tools/prepare-codegen-context.js";
24
+ import { bundlesForChangedFiles } from "../tools/map-review-scope.js";
25
+ /** Concern → the domain chapter(s) whose catalogue it activates (aligned with the
26
+ * ontology's `activation_examples` and the applicability model; audited table). */
27
+ const CONCERN_TO_DOMAIN_CHAPTERS = {
28
+ deployment: ["09-containers-imagens", "11-deploy-seguro"],
29
+ iac: ["08-iac-infraestrutura"],
30
+ build: ["07-cicd-seguro"],
31
+ release: ["11-deploy-seguro"],
32
+ supply_chain: ["05-dependencias-sbom-sca"],
33
+ testing: ["10-testes-seguranca"],
34
+ threat_modeling: ["03-threat-modeling"],
35
+ monitoring: ["12-monitorizacao-operacoes"],
36
+ architecture: ["04-arquitetura-segura"],
37
+ };
38
+ /** Technology vocabulary → chapters (mirrors map_sbd_toe_applicability). */
39
+ const TECHNOLOGY_TO_CHAPTERS = {
40
+ containers: ["08-iac-infraestrutura", "09-containers-imagens"],
41
+ kubernetes: ["08-iac-infraestrutura", "09-containers-imagens"],
42
+ iac: ["08-iac-infraestrutura"],
43
+ "ci-cd": ["07-cicd-seguro"],
44
+ "sca-sbom": ["05-dependencias-sbom-sca"],
45
+ sast: ["10-testes-seguranca"],
46
+ dast: ["10-testes-seguranca"],
47
+ monitoring: ["12-monitorizacao-operacoes"],
48
+ };
49
+ /**
50
+ * The agentic-governance wave: `agents` selects the domain-specific requirements
51
+ * whose published name/description carries the agentic vocabulary (mandate,
52
+ * autonomy, kill-switch, tool-call, AI agent). Deterministic lexical rule over
53
+ * published fields — declared per match, never a model call.
54
+ */
55
+ /**
56
+ * R1 (decisão pós-P2 do programme lead, 2026-08-31, GC-07): o concern `agents` activa,
57
+ * como regra NOMEADA e declarada no selection_trace, o conjunto "principal não-humano" —
58
+ * o agente é um principal (ARC-015: least privilege para agentes): {ACC-002 menor
59
+ * privilégio, AUT-006 credenciais em claro, ENC-006 segredos expostos} ∪ {DEP-011,
60
+ * DEP-013, DEP-014 — supply chain AI do cap. 05}.
61
+ */
62
+ const R1_RULE_ID = "R1:principal-nao-humano";
63
+ const R1_PRINCIPAL_SET = ["ACC-002", "AUT-006", "ENC-006", "DEP-011", "DEP-013", "DEP-014"];
64
+ /**
65
+ * R2 (decisão pós-P2 do programme lead, 2026-08-31, GC-02): SES-* resolve-se por
66
+ * narrowing de sinais — sem sinais de sessão/login/token DE UTILIZADOR na tarefa, a
67
+ * categoria SES sai para `narrowed_out` com razão declarada; com eles, fica. O
68
+ * `concernsMap` do loader (`auth → [AUT, ACC, SES]`) NÃO é alterado neste ciclo; a via
69
+ * de dados fica anotada para avaliação futura no loader.
70
+ */
71
+ const R2_RULE_ID = "R2:narrowing-de-sinais-SES";
72
+ const SESSION_SIGNAL_PATTERN = /sess[ãa]o|session|login|logout|sign.?in|\bjwt\b|cookie|token de utilizador|user token|refresh token|autentica[çc][ãa]o de utilizador|user authentication|utilizador(es)? autenticado/i;
73
+ const AGENTIC_WAVE_PATTERN = /\bagente|\bagent\b|agêntic|agentic|autonom|kill.?switch|mandate|tool.?call/i;
74
+ /** Chapters activated by the CONTEXT (changed files, technologies, stack, concerns). */
75
+ function activateChapters(input, technologies, activation) {
76
+ const out = [];
77
+ const seen = new Set();
78
+ const push = (chapter, source, trigger) => {
79
+ const key = `${chapter}`;
80
+ if (seen.has(key))
81
+ return;
82
+ seen.add(key);
83
+ out.push({ chapter, source, trigger });
84
+ };
85
+ const fileMap = bundlesForChangedFiles(input.changed_files);
86
+ for (const [file, bundles] of fileMap) {
87
+ for (const bundle of bundles)
88
+ push(bundle, "changed_file", file);
89
+ }
90
+ for (const tech of technologies) {
91
+ for (const chapter of TECHNOLOGY_TO_CHAPTERS[tech] ?? [])
92
+ push(chapter, "technology", tech);
93
+ }
94
+ const stackLower = (input.stack ?? "").toLowerCase();
95
+ for (const [token, chapters] of Object.entries(TECHNOLOGY_TO_CHAPTERS)) {
96
+ if (stackLower.includes(token))
97
+ for (const chapter of chapters)
98
+ push(chapter, "stack", token);
99
+ }
100
+ for (const concern of activation.concerns) {
101
+ for (const chapter of CONCERN_TO_DOMAIN_CHAPTERS[concern] ?? [])
102
+ push(chapter, "concern", concern);
103
+ }
104
+ return out;
105
+ }
106
+ /**
107
+ * Run the MP1 selection. Deterministic; every inclusion carries a trace and every
108
+ * eligible exclusion is listed with a reason.
109
+ */
110
+ export function runSelection(context) {
111
+ const input = normalizeInput({
112
+ task: context.task ?? "",
113
+ risk_level: context.risk_level,
114
+ ...(context.stack ? { stack: context.stack } : {}),
115
+ ...(context.exposure ? { exposure: context.exposure } : {}),
116
+ ...(context.data_sensitivity ? { data_sensitivity: context.data_sensitivity } : {}),
117
+ ...(context.concerns ? { concerns: context.concerns } : {}),
118
+ ...(context.changed_files ? { changed_files: context.changed_files } : {}),
119
+ });
120
+ const activation = activate(input);
121
+ return runSelectionWithActivation(input, activation, context.technologies ?? []);
122
+ }
123
+ /** Variant for callers that already ran the activation engine (prepare). */
124
+ export function runSelectionWithActivation(input, activation, technologies = []) {
125
+ const level = (input.risk_level ?? "L2");
126
+ const ontology = getOntologyData();
127
+ const atLevel = (r) => r.applicable_levels?.[level] === true;
128
+ const activatedChapters = activateChapters(input, technologies, activation);
129
+ const chapterSet = new Set(activatedChapters.map((c) => c.chapter));
130
+ const activatedCategories = categoriesForConcerns(activation.concerns);
131
+ const concernByCategory = new Map();
132
+ for (const entry of activation.trace) {
133
+ const produced = entry.produced;
134
+ for (const category of categoriesForConcerns([produced])) {
135
+ const existing = concernByCategory.get(category);
136
+ if (!existing || entry.score > existing.score)
137
+ concernByCategory.set(category, entry);
138
+ }
139
+ }
140
+ // Layer 1 — eligibility.
141
+ const baselineEligible = ontology.requirements.filter((r) => r.type === "base" && atLevel(r));
142
+ const domainEligible = ontology.requirements.filter((r) => r.type !== "base" && atLevel(r) && r.source_bundle !== undefined && chapterSet.has(r.source_bundle));
143
+ const agentsActive = activation.concerns.includes("agents");
144
+ const agentsWave = agentsActive
145
+ ? ontology.requirements.filter((r) => r.type !== "base" &&
146
+ atLevel(r) &&
147
+ !domainEligible.includes(r) &&
148
+ AGENTIC_WAVE_PATTERN.test(`${r.name} ${r.description ?? ""}`))
149
+ : [];
150
+ // Layer 2 — narrowing into the two declared bands.
151
+ const selected = [];
152
+ const narrowedByCategory = new Map();
153
+ const pushSelected = (r, trace) => {
154
+ selected.push({
155
+ requirement_id: r.requirement_id,
156
+ name: r.name,
157
+ category: r.category,
158
+ type: r.type,
159
+ source_chapter: r.source_chapter,
160
+ selection_trace: trace,
161
+ });
162
+ };
163
+ const sessionSignals = SESSION_SIGNAL_PATTERN.test(input.task ?? "");
164
+ let r2Applied = false;
165
+ for (const r of baselineEligible) {
166
+ const signal = concernByCategory.get(r.category);
167
+ if (r.category === "SES" && !sessionSignals && (signal || activatedCategories.has(r.category))) {
168
+ // R2: SES elegível com sinal de categoria (via auth) mas SEM sinal de sessão na tarefa.
169
+ r2Applied = true;
170
+ const list = narrowedByCategory.get(r.category) ?? [];
171
+ list.push(r.requirement_id);
172
+ narrowedByCategory.set(r.category, list);
173
+ continue;
174
+ }
175
+ if (signal || activatedCategories.has(r.category)) {
176
+ const entry = signal ?? {
177
+ source: "explicit_concern",
178
+ produced: r.category,
179
+ trigger: r.category,
180
+ score: 1,
181
+ confidence: "deterministic",
182
+ reason: "categoria activada",
183
+ };
184
+ pushSelected(r, [
185
+ {
186
+ layer: "baseline",
187
+ source: entry.source,
188
+ trigger: entry.trigger,
189
+ score: entry.score,
190
+ reason: `baseline cap. 02 (${level}); categoria ${r.category} com sinal: ${entry.reason}`,
191
+ },
192
+ ]);
193
+ }
194
+ else {
195
+ const list = narrowedByCategory.get(r.category) ?? [];
196
+ list.push(r.requirement_id);
197
+ narrowedByCategory.set(r.category, list);
198
+ }
199
+ }
200
+ for (const r of domainEligible) {
201
+ const via = activatedChapters.find((c) => c.chapter === r.source_bundle);
202
+ pushSelected(r, [
203
+ {
204
+ layer: "domain_specific",
205
+ source: via && via.source === "changed_file" ? "changed_file" : "context_chapter",
206
+ trigger: via?.trigger ?? r.source_bundle ?? "",
207
+ score: 0.9,
208
+ reason: `capítulo ${r.source_bundle} activado pelo contexto (${via?.source ?? "context"}: ${via?.trigger ?? ""})`,
209
+ },
210
+ ]);
211
+ }
212
+ for (const r of agentsWave) {
213
+ pushSelected(r, [
214
+ {
215
+ layer: "agents_wave",
216
+ source: "agents_wave",
217
+ trigger: "agents",
218
+ score: 0.85,
219
+ reason: "concern `agents`: requisito domain-specific da onda agêntica (nome/descrição publicados casam o vocabulário mandate/autonomia/kill-switch/tool-call)",
220
+ },
221
+ ]);
222
+ }
223
+ // R1 — named rule: the agent is a non-human principal.
224
+ let extraEligible = 0;
225
+ let r1Added = 0;
226
+ if (agentsActive) {
227
+ const already = new Set(selected.map((s) => s.requirement_id));
228
+ for (const rid of R1_PRINCIPAL_SET) {
229
+ if (already.has(rid))
230
+ continue;
231
+ const r = ontology.requirements.find((x) => x.requirement_id === rid);
232
+ if (!r || !atLevel(r))
233
+ continue;
234
+ pushSelected(r, [
235
+ {
236
+ layer: "named_rule",
237
+ source: "named_rule",
238
+ trigger: R1_RULE_ID,
239
+ score: 0.95,
240
+ reason: `regra nomeada ${R1_RULE_ID} (decisão pós-P2 2026-08-31): o agente é um principal não-humano (ARC-015 — least privilege para agentes); conjunto {ACC-002, AUT-006, ENC-006} ∪ {DEP-011, DEP-013, DEP-014}`,
241
+ },
242
+ ]);
243
+ r1Added += 1;
244
+ const parked = narrowedByCategory.get(r.category);
245
+ if (parked) {
246
+ const at = parked.indexOf(rid);
247
+ if (at >= 0)
248
+ parked.splice(at, 1);
249
+ if (parked.length === 0)
250
+ narrowedByCategory.delete(r.category);
251
+ }
252
+ if (!baselineEligible.includes(r) && !domainEligible.includes(r))
253
+ extraEligible += 1;
254
+ }
255
+ }
256
+ selected.sort((a, b) => a.requirement_id.localeCompare(b.requirement_id));
257
+ const narrowed_out = [...narrowedByCategory.entries()]
258
+ .sort(([a], [b]) => a.localeCompare(b))
259
+ .map(([category, ids]) => ({
260
+ category,
261
+ count: ids.length,
262
+ requirement_ids: ids.sort(),
263
+ reason: category === "SES" && r2Applied
264
+ ? `${R2_RULE_ID} (decisão pós-P2 2026-08-31): sem sinais de sessão/login/token de utilizador na tarefa, SES-* sai por narrowing declarado (o concernsMap do loader mantém auth → [AUT, ACC, SES]); com esses sinais na tarefa, fica`
265
+ : `elegível na baseline ${level} (cap. 02) sem sinal na tarefa/contexto — excluído pelo narrowing, nunca em silêncio`,
266
+ }));
267
+ const notes = [];
268
+ if (r1Added > 0) {
269
+ notes.push(`${R1_RULE_ID}: ${r1Added} requisitos do principal não-humano seleccionados por regra nomeada (decisão pós-P2 2026-08-31).`);
270
+ }
271
+ if (r2Applied) {
272
+ notes.push(`${R2_RULE_ID}: categoria SES excluída por narrowing de sinais — sem sinais de sessão/login/token de utilizador na tarefa.`);
273
+ }
274
+ if (agentsActive && agentsWave.length > 0) {
275
+ notes.push(`agents_wave: ${agentsWave.length} requisitos domain-specific seleccionados pelo vocabulário agêntico publicado.`);
276
+ }
277
+ return {
278
+ risk_level: level,
279
+ eligible_count: baselineEligible.length + domainEligible.length + agentsWave.length + extraEligible,
280
+ selected,
281
+ narrowed_out,
282
+ activated_chapters: activatedChapters,
283
+ activated_categories: [...new Set([...activatedCategories, ...selected.map((s) => s.category)])].sort(),
284
+ activation,
285
+ input,
286
+ notes,
287
+ };
288
+ }
289
+ //# sourceMappingURL=selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.js","sourceRoot":"","sources":["../../src/serving/selection.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,11 @@ export interface McpProvenance {
85
85
  source_data: string;
86
86
  note: string;
87
87
  }
88
+ export interface ConsultRequirementsIndexEntry {
89
+ category: string;
90
+ count: number;
91
+ requirement_ids: string[];
92
+ }
88
93
  export interface ConsultSecurityRequirementsOutput {
89
94
  provenance: McpProvenance;
90
95
  risk_level: string;
@@ -95,6 +100,8 @@ export interface ConsultSecurityRequirementsOutput {
95
100
  artifacts: ArtifactSlim[];
96
101
  rule_trace: string[];
97
102
  coverage_gaps: ConsultCoverageGaps;
103
+ /** mode: "index" (opt-in, additive): per-category index replacing the full requirement bodies. */
104
+ index?: ConsultRequirementsIndexEntry[];
98
105
  meta: {
99
106
  requirementCount: number;
100
107
  controlCount: number;
@@ -220,6 +220,44 @@ export function _resolveConsultResult(args, ontologyData) {
220
220
  }
221
221
  export function handleConsultSecurityRequirements(args) {
222
222
  const full = _resolveConsultResult(args, getOntologyData());
223
+ // mode: "index" (G-mp1a decision 3, option (c)) — additive opt-in: same filters,
224
+ // same totals, but requirements come back as a per-category index (ids + counts)
225
+ // instead of the full bodies. Default behaviour is byte-unchanged (retro-compat);
226
+ // index-by-default stays flagged for a future major.
227
+ const modeArg = args["mode"];
228
+ const indexMode = modeArg === "index";
229
+ if (modeArg !== undefined && modeArg !== "index" && modeArg !== "full") {
230
+ throw Object.assign(new Error(`Invalid mode: "${String(modeArg)}". Allowed: full, index.`), {
231
+ rpcError: { code: -32602, message: `Invalid mode: "${String(modeArg)}"` }
232
+ });
233
+ }
234
+ if (indexMode) {
235
+ const byCategory = new Map();
236
+ for (const r of full.requirements) {
237
+ const list = byCategory.get(r.category) ?? [];
238
+ list.push(r.requirement_id);
239
+ byCategory.set(r.category, list);
240
+ }
241
+ return {
242
+ provenance: {
243
+ content_type: "derived",
244
+ produced_by: "deterministic_runtime_resolution",
245
+ source_data: "runtime/requirements.json (index projection)",
246
+ note: "mode=index: per-category requirement index (ids + counts) — same filters and totals as the full mode; fetch bodies with mode omitted or resolve_entities."
247
+ },
248
+ risk_level: full.risk_level,
249
+ active_categories: full.active_categories,
250
+ active_domains: full.active_domains,
251
+ requirements: [],
252
+ controls: [],
253
+ artifacts: [],
254
+ rule_trace: [...full.rule_trace, "MODE_INDEX: requirement bodies elided — per-category index returned (declared, not silent)"],
255
+ coverage_gaps: full.coverage_gaps,
256
+ index: [...byCategory.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([category, ids]) => ({ category, count: ids.length, requirement_ids: ids.sort() })),
257
+ meta: { ...full.meta, note: `${full.meta.note} mode=index: controls/artifacts counts in meta; bodies via the default mode.` },
258
+ next: consultAffordances(full.risk_level, full.meta.concernsApplied ?? undefined)
259
+ };
260
+ }
223
261
  return {
224
262
  provenance: {
225
263
  content_type: "derived",
@@ -1 +1 @@
1
- {"version":3,"file":"consult-security-requirements.js","sourceRoot":"","sources":["../../src/tools/consult-security-requirements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consult-security-requirements.js","sourceRoot":"","sources":["../../src/tools/consult-security-requirements.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ const CLIENT_LOCAL_TOOLS = "Read, Write, Edit, Grep, Glob, Bash";
28
28
  const HARNESSED_MCP_TOOLS = [
29
29
  "mcp__sbd-toe__get_guide_by_role",
30
30
  "mcp__sbd-toe__consult_security_requirements",
31
+ "mcp__sbd-toe__select_sbd_toe_requirements",
31
32
  "mcp__sbd-toe__get_threat_landscape",
32
33
  "mcp__sbd-toe__query_sbd_toe_entities",
33
34
  "mcp__sbd-toe__resolve_entities",
@@ -114,10 +115,14 @@ function coverageOf(guide, totalChapters) {
114
115
  function renderCoverageBlock(canonicalRole, riskLevel, coverage, harnessed) {
115
116
  const pathToRest = harnessed
116
117
  ? `For the full Definition-of-Done call \`get_guide_by_role(risk_level="${riskLevel}", role="${canonicalRole}", include_detail=true)\`; ` +
117
- `for requirements use \`consult_security_requirements\`; for threats \`get_threat_landscape\`; ` +
118
+ `for *which requirements apply to a concrete task* use \`select_sbd_toe_requirements\` ` +
119
+ `(selected[] is the recommendation; narrowed_out[] lists what left and why — re-call with the missing signal to recover it); ` +
120
+ `for the catalogue at a level use \`consult_security_requirements\` (mode="index" for a compact id map); for threats \`get_threat_landscape\`; ` +
118
121
  `for the chapters outside your slice \`list_sbd_toe_chapters\` + \`get_sbd_toe_chapter_brief\`.`
119
122
  : `To reach beyond it, re-generate via the SbD-ToE MCP (\`generate_sbd_toe_skill\`) or consult the manual ` +
120
- `chapters listed by \`list_sbd_toe_chapters\` on a connected client.`;
123
+ `chapters listed by \`list_sbd_toe_chapters\` on a connected client — where ` +
124
+ `\`select_sbd_toe_requirements\` narrows the requirements to a concrete task ` +
125
+ `(selected[] recommendation + narrowed_out[] with reasons, never silent).`;
121
126
  return (`## Coverage (declared — nothing hidden)\n` +
122
127
  `This is the **${canonicalRole}** slice at **${riskLevel}**: ${coverage.assignments} assignments, ` +
123
128
  `${coverage.user_stories} user stories, ${coverage.checklist_items} checklist items across ` +
@@ -1 +1 @@
1
- {"version":3,"file":"generate-sbd-toe-skill.js","sourceRoot":"","sources":["../../src/tools/generate-sbd-toe-skill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-sbd-toe-skill.js","sourceRoot":"","sources":["../../src/tools/generate-sbd-toe-skill.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,7 @@ export function _resolveThreatLandscape(args, ontologyData) {
58
58
  name: control.name,
59
59
  domain: control.domain,
60
60
  chapter_ids: control.chapter_ids ?? [],
61
+ defining_chapter_ids: control.defining_chapter_ids ?? [],
61
62
  }));
62
63
  const activeControlIds = new Set(activeControls.map((control) => control.control_id));
63
64
  const inputConcerns = Array.isArray(args["concerns"])
@@ -77,6 +78,10 @@ export function _resolveThreatLandscape(args, ontologyData) {
77
78
  if (domainChapter !== undefined)
78
79
  activeChapterNumbers.add(domainChapter);
79
80
  }
81
+ // G-b decision 2 (2026-08-30): the DEFINING chapters of the activated controls count
82
+ // as in-scope — a control that defines its content in a chapter brings that chapter's
83
+ // threats with it (e.g. C1, identity/auth, defines in ch.02).
84
+ const definingBundles = new Set();
80
85
  for (const control of activeControls) {
81
86
  for (const chapterId of control.chapter_ids) {
82
87
  activeBundles.add(chapterId);
@@ -84,6 +89,13 @@ export function _resolveThreatLandscape(args, ontologyData) {
84
89
  if (!Number.isNaN(num))
85
90
  activeChapterNumbers.add(num);
86
91
  }
92
+ for (const chapterId of control.defining_chapter_ids) {
93
+ definingBundles.add(chapterId);
94
+ activeBundles.add(chapterId);
95
+ const num = chapterNumber(chapterId);
96
+ if (!Number.isNaN(num))
97
+ activeChapterNumbers.add(num);
98
+ }
87
99
  }
88
100
  // With no concern filter the caller wants the full landscape — fall back to every
89
101
  // applicable requirement's chapter/bundle (broad, spans all domains, not just ch.02).
@@ -97,22 +109,27 @@ export function _resolveThreatLandscape(args, ontologyData) {
97
109
  }
98
110
  }
99
111
  // Chapter 02 (requisitos-seguranca) holds the requirements-process meta-threats.
100
- // Surface them only when the caller explicitly targets requirements never as a
101
- // side effect of a base/domain concern whose controls happen to be catalogued there.
102
- const wantsRequirements = !hasConcerns || inputConcerns.includes("requirements");
112
+ // Surface them when the caller explicitly targets requirements OR when an activated
113
+ // control DEFINES in ch.02 (G-b decision 2) never as a side effect of a control
114
+ // merely catalogued there.
115
+ const wantsRequirements = !hasConcerns ||
116
+ inputConcerns.includes("requirements") ||
117
+ definingBundles.has("02-requisitos-seguranca");
103
118
  if (!wantsRequirements) {
104
119
  activeChapterNumbers.delete(2);
105
120
  activeBundles.delete("02-requisitos-seguranca");
106
121
  }
107
122
  const controlsByChapter = new Map();
108
123
  for (const control of activeControls) {
109
- for (const chapterId of control.chapter_ids) {
124
+ for (const chapterId of new Set([...control.chapter_ids, ...control.defining_chapter_ids])) {
110
125
  const existing = controlsByChapter.get(chapterId) ?? [];
111
- existing.push({
112
- control_id: control.control_id,
113
- name: control.name,
114
- domain: control.domain,
115
- });
126
+ if (!existing.some((c) => c.control_id === control.control_id)) {
127
+ existing.push({
128
+ control_id: control.control_id,
129
+ name: control.name,
130
+ domain: control.domain,
131
+ });
132
+ }
116
133
  controlsByChapter.set(chapterId, existing);
117
134
  }
118
135
  }
@@ -195,7 +212,7 @@ export function _resolveThreatLandscape(args, ontologyData) {
195
212
  activeChapters: [...activeChapterNumbers].sort((a, b) => a - b).map(String),
196
213
  activeBundles: [...activeBundles].sort(),
197
214
  concernsApplied: consult.meta.concernsApplied,
198
- note: "Threat applicability resolves from consult-mode requirement scope. mitigation_confidence uses direct control references first, then chapter/bundle or antipattern-derived alignment, then heuristic domain fallback.",
215
+ note: "Threat applicability resolves from consult-mode requirement scope; the defining chapters of activated controls count as in-scope (G-b 2026-08-30). mitigation_confidence uses direct control references first, then chapter/bundle or antipattern-derived alignment, then heuristic domain fallback.",
199
216
  },
200
217
  };
201
218
  }
@@ -215,10 +232,16 @@ export function handleGetThreatLandscape(args) {
215
232
  mitigation_confidence: threat.mitigation_confidence,
216
233
  mitigated_by: threat.mitigated_by,
217
234
  related_antipatterns: threat.related_antipatterns,
218
- // Surface the threat's own associated_controls carried by the substrate
219
- // (runtime/threats.json). Previously hardcoded to [] a serving-layer
220
- // drop, not absent data. Pontifex serves what the bundle carries.
235
+ // Surface the threat's own association fields carried by the substrate.
236
+ // Contract v1.14 §1.21: associated_control_ids are structural CTRL-* ids with a
237
+ // DECLARED derivation; associated_controls_text is the Manual's prose;
238
+ // associated_controls stays as-is for compatibility. Nothing invented.
221
239
  associated_controls: threat.associated_controls ?? [],
240
+ associated_control_ids: threat.associated_control_ids ?? [],
241
+ ...(threat.associated_controls_text ? { associated_controls_text: threat.associated_controls_text } : {}),
242
+ ...(threat.associated_control_ids_derivation
243
+ ? { associated_control_ids_derivation: threat.associated_control_ids_derivation }
244
+ : {}),
222
245
  ...(threat.mitigated_threat_id ? { mitigated_threat_id: threat.mitigated_threat_id } : {}),
223
246
  ...(threat.chapter_id ? { chapter_id: threat.chapter_id } : {}),
224
247
  ...(threat.mitigation_summary ? { mitigation_summary: threat.mitigation_summary } : {}),