@shiftleftpt/sbd-toe-mcp 0.20.0-beta.39 → 0.20.0-beta.40

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 (39) hide show
  1. package/assets/agent-guide.md +7 -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 +4907 -4907
  6. package/data/publish/indexes/publication_manifest.json +1 -1
  7. package/data/publish/ontology/sbdtoe-ontology.yaml +129 -2
  8. package/data/publish/runtime/artifact_requirements.json +1059 -15
  9. package/data/publish/runtime/deterministic_manifest.json +1 -1
  10. package/data/publish/runtime/phases.json +106 -0
  11. package/data/publish/runtime/v1/v1_manifest.json +1 -1
  12. package/data/publish/semantic/ctrl_acore_alignment.jsonl +1 -1
  13. package/data/publish/semantic/macro_processes.jsonl +1 -1
  14. package/data/publish/semantic/mp_edges.jsonl +1 -1
  15. package/data/reports/run_manifest.json +4 -4
  16. package/dist/serving/agent-guide.d.ts +9 -0
  17. package/dist/serving/agent-guide.js +31 -0
  18. package/dist/serving/agent-guide.js.map +1 -1
  19. package/dist/serving/declared-absences.d.ts +63 -0
  20. package/dist/serving/declared-absences.js +114 -0
  21. package/dist/serving/declared-absences.js.map +1 -0
  22. package/dist/tools/get-chapter-capability.js +54 -7
  23. package/dist/tools/get-chapter-capability.js.map +1 -1
  24. package/dist/tools/get-guide-by-role.d.ts +2 -0
  25. package/dist/tools/get-guide-by-role.js +9 -0
  26. package/dist/tools/get-guide-by-role.js.map +1 -1
  27. package/dist/tools/get-macro-processes.js +2 -0
  28. package/dist/tools/get-macro-processes.js.map +1 -1
  29. package/dist/tools/get-playbook.js +3 -0
  30. package/dist/tools/get-playbook.js.map +1 -1
  31. package/dist/tools/ontology-loader.d.ts +6 -0
  32. package/dist/tools/ontology-loader.js +7 -0
  33. package/dist/tools/ontology-loader.js.map +1 -1
  34. package/dist/tools/plan-rollout.d.ts +8 -1
  35. package/dist/tools/plan-rollout.js +89 -19
  36. package/dist/tools/plan-rollout.js.map +1 -1
  37. package/dist/tools/structured-tools.js +30 -4
  38. package/dist/tools/structured-tools.js.map +1 -1
  39. package/package.json +1 -1
@@ -94,5 +94,5 @@
94
94
  "local_mirror_role": "build_input_only"
95
95
  },
96
96
  "primary_artifact": "canonical_chunks.jsonl",
97
- "substrate_version": "manual-v1.8.1+sbdtoe-ontology-v2.5"
97
+ "substrate_version": "manual-v1.8.1+sbdtoe-ontology-v2.6"
98
98
  }
@@ -1,12 +1,15 @@
1
1
  meta:
2
2
  name: SbD-ToE Manual Ontology
3
- version: '2.5'
3
+ version: '2.6'
4
4
  status: current
5
5
  scope: Manual ontology
6
- tag: sbdtoe-ontology-v2.5
6
+ tag: sbdtoe-ontology-v2.6
7
7
  history:
8
8
  - version: '2.0'
9
9
  note: V2 backbone + semantic layer (imported baseline from sbd-toe-knowledge-graph)
10
+ - version: '2.6'
11
+ date: '2026-09-07'
12
+ note: "Aditiva sobre 2.5 (dispatch Orchestrator + decisões do programme lead 2026-09-07, registo em agentic/decisions do programa): epistemic_model.absence_model (gap | out_of_scope | deferred | elsewhere, critério em cascata, debt_of, autoridade/prova), índice declared_absences (5 nomeadas tipadas + re-tipagem das ausências v2.2–v2.5 SEM tocar nos blocos originais — o índice prevalece), segmentation_principle nomeado com TRÊS espécies de relação inter-segmentação (travessia, dependência, piso — cap. 00 é piso, não ausência), schema aditivo em SDLCPhase (+bundle_ids derivado de assignments; manual_chapter documentado como âncora editorial) e ArtifactRequirement (+defining/cited_chapter_ids por decisão K, +required_for_levels; mandatory documentado como legacy constante), relação bundle_operates_in_phase. Nada removido nem alterado; bateria de aditividade estrita."
10
13
  - version: '2.5'
11
14
  date: '2026-09-06'
12
15
  note: "Aditiva sobre 2.4 (ciclo macro-processos, gate ratificado pelo programme lead 2026-09-06 + adenda das três segmentações): entidade MacroProcess (MP-01..05) com travessias como dados declarados, 18 pares inter-MP tipados verbatim (9 dependency + 9 feedback; 23 registos de consumo; errata declarada face aos 17 do mapa: +MP2→MP4), DAG de adopção MP1 → {MP2 ∥ MP4} → MP3 → MP5, relações process_view, lacuna declarada da travessia de fases (não derivar). Ids dos 20 controlos, resolution_order, 260 práticas, catalogue_rules e acore_alignment inalterados."
@@ -97,6 +100,18 @@ epistemic_model:
97
100
  deterministic: Result is exact given canonical source data
98
101
  bounded: Result is deterministic but thresholded and contestable
99
102
  probabilistic: Result depends on a probabilistic extraction step; not allowed in runtime
103
+ absence_model:
104
+ # v2.6 (decisão do lead 2026-09-07): vocabulário tipado para ausências declaradas. «É bom ser honesto no que
105
+ # não apresentamos, mas temos que distinguir o que é fora do âmbito do que é uma lacuna. A lacuna é erro ou
106
+ # omissão e tem que ser definido. Out-of-scope é decisão.»
107
+ criterion: "cascata — existe decisão registada sobre esta ausência? não → gap; sim e «nunca» → out_of_scope; sim e «depois» com gatilho declarado → deferred; sim e existe noutra superfície resolúvel → elsewhere (pointer que não resolve degrada para gap da superfície apontada)"
108
+ values:
109
+ gap: "erro ou omissão — dívida com dono (debt_of) e destino (closes_in); qualquer persona propõe, o dono da camada confirma, o lead arbitra se contestado; prova: fonte esperada identificada + ausência demonstrada"
110
+ out_of_scope: "fronteira deliberada; não fecha; SÓ O PROGRAMME LEAD atribui — é o que impede que uma lacuna incómoda vire fronteira por conveniência; prova: decisão registada ou declaração de fronteira na fonte + ratificação"
111
+ deferred: "decisão «depois» COM gatilho de activação declarado (sem gatilho não é deferred, é gap); atribui o dono da camada + autorização do lead; prova: decisão + trigger"
112
+ elsewhere: "existe noutra superfície; atribui o dono da camada; prova: pointer resolúvel mecanicamente"
113
+ debt_of: [manual_content, ontology_model, kg_surface, mcp_serving]
114
+ note: "«não modelado» NÃO é valor próprio — é gap/deferred com debt_of: ontology_model"
100
115
  requirement_selection_model:
101
116
  # v2.2 (2026-08-30) — semântica declarada pelo programme lead (pré-G-b, ciclo D2). Formulação normativa:
102
117
  description: "O catálogo do cap. 02 (requisitos type: base) é a baseline normativa por defeito — catálogo real, seleccionado sempre, salvo overlay; os catálogos dos capítulos 03–14 (type: domain-specific) são requisitos do domínio, activados pelo contexto (Docker → 09, IaC → 08, infra → 08/11, CI → 07…); os overlays operam por categoria com replace ou extend. Selecção = baseline ∪ específicos(contexto) ⊕ overlay."
@@ -397,6 +412,8 @@ entities:
397
412
  - phase_id: string
398
413
  - label: string
399
414
  - aliases: list[string]
415
+ - manual_chapter: integer # legado (v2.6): âncora editorial histórica, NÃO é contenção — não usar para cobertura; mantido inalterado (aditividade)
416
+ - bundle_ids: list[string] # v2.6, aditivo: travessia N:M fase↔capítulo DERIVADA dos assignments autorados (papel×nível×fase) — regra em segmentation_principle.derivations.phase_bundles
400
417
  EvidencePattern:
401
418
  layer: core
402
419
  description: 'Expected evidence pattern used for deterministic review. Interprets one or more artifacts or signals as verifiable evidence; the artifact itself is not the evidence judgement. Designed as input for deterministic verification models in future ontology versions (V3).
@@ -585,6 +602,11 @@ entities:
585
602
  - source_control_ids: list[string]
586
603
  - source_practice_ids: list[string]
587
604
  - chapter_id: string
605
+ - chapter_ids: list[string] # legado: união indiferenciada (semântica histórica; mantido inalterado)
606
+ - defining_chapter_ids: list[string] # v2.6, aditivo (decisão K aplicada): capítulos das source_practice_ids — onde o artefacto é PRESCRITO
607
+ - cited_chapter_ids: list[string] # v2.6, aditivo: chapter_ids ∖ defining_chapter_ids — proveniência sem prescrição
608
+ - mandatory: boolean # legado (v2.6): constante true em 45/45 — sem valor discriminante; mantido inalterado; usar required_for_levels
609
+ - required_for_levels: object # v2.6, aditivo: {L1,L2,L3} derivado pela cadeia ratificada de níveis (§1.9 do contrato KG: requisito→controlo→artefacto, applicable_levels autorados)
588
610
  ImplementationRule:
589
611
  layer: stub
590
612
  description: Reserved future layer for code-generation-facing implementation rules
@@ -685,6 +707,16 @@ relations:
685
707
  source_mode: heuristic
686
708
  authority_class: normative
687
709
  confidence_model: bounded
710
+ segmentation_traversals:
711
+ # v2.6 — travessias entre segmentações (ver segmentation_principle). Nunca contenção.
712
+ bundle_operates_in_phase:
713
+ from: KnowledgeBundle
714
+ to: SDLCPhase
715
+ status: stable
716
+ source_mode: derived
717
+ authority_class: normative
718
+ confidence_model: deterministic
719
+ note: "N:M derivada dos practice_assignments autorados (capítulo tem >=1 assignment na fase); regra declarada em segmentation_principle.derivations.phase_bundles; verificado 2026-09-07: plan 8 · design 7 · develop 9 · build 6 · test 6 · deploy 10 · operate 12 · govern 11. O cap. 00-fundamentos não entra por derivação: é PISO (terceira espécie), não ausência."
688
720
  process_view:
689
721
  # v2.5 — vista processual (MacroProcess). NOTA: deliberadamente NÃO existe relação MacroProcess↔SDLCPhase
690
722
  # (ver macro_processes.sdlc_phase_traversal — lacuna declarada; travessia parcial e não publicada).
@@ -4695,3 +4727,98 @@ macro_processes:
4695
4727
  L1: thresholds de base; T-06 espera nível 1
4696
4728
  L2: thresholds apertam; validação contínua semestral
4697
4729
  L3: trimestral; obrigações cumulativas
4730
+ # ---------------------------------------------------------------------------
4731
+ # segmentation_principle + declared_absences (v2.6, 2026-09-07 — decisões do programme lead)
4732
+ # ---------------------------------------------------------------------------
4733
+ segmentation_principle:
4734
+ # v2.6 — nomeado e normativo (generaliza a adenda v2.5; decisões do lead 2026-09-06 e 2026-09-07)
4735
+ statement: "MacroProcess, KnowledgeBundle (capítulo) e SDLCPhase são segmentações PARALELAS do mesmo substrato. Relações entre segmentações nunca se tipam como contenção (campo 1:1, int, «pertence a»). A cardinalidade é propriedade da vista (a vista processual cobre 15 capítulos; a vista de fases tem 8): nenhuma vista substitui ou vence outra."
4736
+ relation_species:
4737
+ travessia: "N:M entre segmentações, PUBLICADA na fonte (ex.: MP → capítulos) ou DERIVADA de dados autorados com regra declarada (ex.: fase ↔ capítulos via assignments). Sem fonte, não há travessia — deriva-se o que é publicado, nunca o que é conveniente."
4738
+ dependencia: "consumo tipado entre instâncias da MESMA segmentação (ex.: arestas inter-MP dependency|feedback, regra do template)"
4739
+ piso: "relação transversal de fundação — aplica-se a tudo, independentemente do eixo da segmentação (ex.: cap. 00-fundamentos: «capítulo de definição para que se entenda o resto do manual; roles e mínimos — transversal a todo o manual»). O piso NÃO é ausência de nenhuma vista, não recebe fase nem se tipa out_of_scope; a v2.5 já o publica (path_edge kind: piso; MP-01/MP-04/MP-05 atravessam-no)."
4740
+ derivations:
4741
+ phase_bundles: "SDLCPhase.bundle_ids = capítulos com >=1 practice_assignment autorado na fase (papel×nível×fase publicados no Manual). Verificado 2026-09-07: plan 8 · design 7 · develop 9 · build 6 · test 6 · deploy 10 · operate 12 · govern 11 — design inclui o cap. 04 e develop o cap. 06 porque os assignments o publicam; 6 dos 7 capítulos ausentes do rollout regressam (o 00 entra como piso). O cap. 00 fica fora desta derivação POR SER PISO, não por ausência."
4742
+ artifact_defining_chapters: "ArtifactRequirement.defining_chapter_ids = capítulos das source_practice_ids (decisão K, precedente ratificado v2.1/contrato §1.20); cited_chapter_ids = chapter_ids ∖ defining (ex. verificado: SBOM 7 definidores vs 15 citados)"
4743
+ artifact_required_levels: "ArtifactRequirement.required_for_levels derivado pela cadeia de níveis ratificada (requisito→controlo→artefacto; applicable_levels autorados)"
4744
+ prohibitions:
4745
+ - "MacroProcess ↔ SDLCPhase: travessia N:M parcial nos dois sentidos e NÃO publicada — out_of_scope (ABS-001); derivação proibida"
4746
+ - "manual_chapter e mandatory não são removidos nem alterados — ganham companhia (bundle_ids; required_for_levels)"
4747
+ declared_absences:
4748
+ # v2.6 — índice central das ausências declaradas, tipadas pelo absence_model. Regra de imutabilidade aditiva:
4749
+ # os blocos locais de v2.2–v2.5 (requirement_selection_model.status.*, acore_alignment.unaligned,
4750
+ # macro_processes.sdlc_phase_traversal, catalogue_rules) mantêm o texto original SEM alteração; A TIPAGEM DESTE
4751
+ # ÍNDICE PREVALECE sobre qualquer rótulo local anterior. Decisões: SecurityByDesign-TheoryOfEverything/agentic/decisions/2026-09-07-ausencias-tipadas-travessia-vs-contencao.md
4752
+ items:
4753
+ - absence_id: ABS-001
4754
+ statement: "Travessia MacroProcess ↔ SDLCPhase"
4755
+ absence_type: out_of_scope
4756
+ decided_by: programme-lead
4757
+ decided_on: '2026-09-07'
4758
+ evidence: "«não há esse walkthrough possível. Um MP pode passar várias fases e as fases podem cruzar vários MPs» — relação N:M e parcial nos dois sentidos; o Manual publica percursos ao grão capítulo («fase» ocorre 1× no capítulo, na frase que nega a equivalência)"
4759
+ note: "a derivação a partir de capítulos/assignments continua PROIBIDA (mantém macro_processes.sdlc_phase_traversal, cujo rótulo local unpublished_gap fica superseded por esta tipagem)"
4760
+ - absence_id: ABS-002
4761
+ statement: "Semântica decide-vs-delega por papel (GR-04)"
4762
+ absence_type: gap
4763
+ debt_of: manual_content
4764
+ owner: Author
4765
+ decided_by: "Orchestrator (proposta) + programme-lead (concordou: falha de conteúdo no painel há vários ciclos, confirmada por auditor externo)"
4766
+ decided_on: '2026-09-07'
4767
+ closes_in: "vaga de conteúdo do Manual a agendar"
4768
+ note: "hipótese elsewhere PARCADA para análise posterior (avaliar se há pointer real de operating model e no que resultaria); não usada aqui, não eliminada do vocabulário"
4769
+ - absence_id: ABS-003
4770
+ statement: "Atribuições (practice_assignments) para o papel fornecedores-terceiros"
4771
+ absence_type: gap
4772
+ debt_of: "a triar (manual_content provável vs kg_surface — US omite o papel, ou a extracção perde-o)"
4773
+ owner: "Author + Codex (triagem)"
4774
+ decided_on: '2026-09-07'
4775
+ evidence: "papel canónico existe; deveres em prosa existem (cap. 14, TRN-007, GOV-013, MP4); 0 assignments servidos (GR-04)"
4776
+ - absence_id: ABS-004
4777
+ statement: "Cross-checks normativos ISO/PCI/SOC2/HIPAA/FedRAMP/CSA"
4778
+ absence_type: deferred
4779
+ debt_of: manual_content
4780
+ owner: "Author / lane overlay"
4781
+ trigger: "ciclo do cross-check normativo (roadmap declarado)"
4782
+ decided_on: '2026-09-07'
4783
+ - absence_id: ABS-005
4784
+ statement: "Atribuições para gestao-executiva no cap. 01"
4785
+ absence_type: gap
4786
+ debt_of: "a triar (kg_surface se a US do cap. 01 nomeia o papel e a extracção perde; senão manual_content)"
4787
+ owner: "Author + Codex (triagem)"
4788
+ decided_on: '2026-09-07'
4789
+ evidence: "o catálogo dá-lhe deveres (CLA-002: aprovação L3); US-15@01 existe; atribuição não servida"
4790
+ # --- re-tipagem das ausências declaradas em v2.2–v2.5 (blocos originais intocados; este índice prevalece) ---
4791
+ - absence_id: ABS-006
4792
+ statement: "Operadores de overlay replace|extend (requirement_selection_model.status.overlay_operators)"
4793
+ absence_type: deferred
4794
+ debt_of: ontology_model
4795
+ owner: Archon
4796
+ trigger: "ADR 0014 (overlay corporativo)"
4797
+ decided_on: '2026-08-30'
4798
+ - absence_id: ABS-007
4799
+ statement: "Operação de selecção em runtime (requirement_selection_model.status.runtime_selection)"
4800
+ absence_type: deferred
4801
+ debt_of: mcp_serving
4802
+ owner: Pontifex
4803
+ trigger: "ciclo do Pontifex (pipeline d, MP1 como operação)"
4804
+ decided_on: '2026-08-30'
4805
+ - absence_id: ABS-008
4806
+ statement: "Alinhamento dos 58 ACM (acore_alignment.unaligned.acm)"
4807
+ absence_type: deferred
4808
+ debt_of: ontology_model
4809
+ owner: Archon
4810
+ trigger: "F-W1 — materializar a aresta ACM→CO na superfície V1 e derivar como as ACP"
4811
+ decided_on: '2026-09-03'
4812
+ - absence_id: ABS-009
4813
+ statement: "CTRL sem contraparte AppSec Core (CAP, C4, C3 — acore_alignment.unaligned.ctrl)"
4814
+ absence_type: out_of_scope
4815
+ decided_by: programme-lead
4816
+ decided_on: '2026-09-03'
4817
+ evidence: "âmbito do Core V1 por desenho (gate do walkthrough)"
4818
+ - absence_id: ABS-010
4819
+ statement: "Estrutura de medição F-01..F-04 / T-01..T-06 não modelada"
4820
+ absence_type: deferred
4821
+ debt_of: ontology_model
4822
+ owner: Archon
4823
+ trigger: "ciclo do desenho de assurance"
4824
+ decided_on: '2026-08-30'