[
 {
  "name": "05_CODE_1: GDPR-compliant CI/CD pipeline (GitHub Actions workflow)",
  "kind": "artefact",
  "id_prefix": "05_CODE_*",
  "activity": "Delivery pipelines",
  "purpose": "GitHub Actions pipeline for architecture-as-code changes with GDPR and compliance checks",
  "chapters": [
   "5",
   "A"
  ],
  "location": "30_appendix_code_examples.md#cicd-pipelines",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "05_CODE_2: Jenkins pipeline with GDPR compliance",
  "kind": "artefact",
  "id_prefix": "05_CODE_*",
  "activity": "Delivery pipelines",
  "purpose": "Jenkins pipeline equivalent of the compliant CI/CD workflow",
  "chapters": [
   "5",
   "A"
  ],
  "location": "30_appendix_code_examples.md#cicd-pipelines",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "05_CODE_3: Terratest for VPC implementation",
  "kind": "artefact",
  "id_prefix": "05_CODE_*",
  "activity": "Testing",
  "purpose": "Go Terratest suite that tests a VPC module",
  "chapters": [
   "5",
   "A"
  ],
  "location": "30_appendix_code_examples.md#cicd-pipelines",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "21_CODE_1: Multi-cloud enterprise landing zone",
  "kind": "artefact",
  "id_prefix": "21_CODE_*",
  "activity": "Infrastructure definition",
  "purpose": "Terraform multi-cloud landing zone with EU data residency and common tagging",
  "chapters": [
   "21",
   "A"
  ],
  "location": "30_appendix_code_examples.md#terraform-iac",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "07_CODE_1: VPC setup with GDPR compliance (CloudFormation)",
  "kind": "artefact",
  "id_prefix": "07_CODE_*",
  "activity": "Infrastructure definition",
  "purpose": "CloudFormation template for a GDPR-oriented VPC",
  "chapters": [
   "7",
   "A"
  ],
  "location": "30_appendix_code_examples.md#cloudformation-architecture-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "24_CODE_1: Comprehensive test framework for Architecture as Code",
  "kind": "artefact",
  "id_prefix": "24_CODE_*",
  "activity": "Testing",
  "purpose": "Python framework for testing infrastructure code",
  "chapters": [
   "24",
   "A"
  ],
  "location": "30_appendix_code_examples.md#automation-scripts",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "24_CODE_2: Governance policy configuration",
  "kind": "artefact",
  "id_prefix": "24_CODE_*",
  "activity": "Governance",
  "purpose": "YAML governance policy configuration file for an organisation",
  "chapters": [
   "24",
   "A"
  ],
  "location": "30_appendix_code_examples.md#configuration",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "13_CODE_A: Vitest configuration for IaC projects",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Testing",
  "purpose": "Vitest configuration for testing infrastructure code",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_a",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "13_CODE_B: Terraform configuration generator",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Testing",
  "purpose": "TypeScript generator of Terraform configuration used as a testable unit",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_b",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "13_CODE_C: Terraform configuration generator tests",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Testing",
  "purpose": "Vitest tests for the Terraform generator",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_c",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "13_CODE_D: Infrastructure validator",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Testing",
  "purpose": "TypeScript validator of infrastructure definitions",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_d",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "13_CODE_E: Infrastructure validator tests",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Testing",
  "purpose": "Vitest tests for the infrastructure validator",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_e",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "13_CODE_F: GitHub Actions Vitest workflow",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Testing",
  "purpose": "Workflow that runs the Vitest suite in CI",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_f",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "13_CODE_G: Requirements as Code definition",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Requirements",
  "purpose": "Requirements catalogue in YAML (requirements/catalogue.yaml)",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_g",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "13_CODE_H: Requirements validation framework",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Requirements",
  "purpose": "Python validator for the requirements catalogue (requirements/validator.py)",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_h",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "13_CODE_I: Terratest for GDPR-compliant infrastructure",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Testing",
  "purpose": "Go Terratest suite asserting GDPR-relevant properties",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_i",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "13_CODE_J: Policy-as-Code testing with OPA",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Policy as code",
  "purpose": "Rego policy (security.rego) with its Rego unit tests",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_j",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "13_CODE_K: Kubernetes infrastructure test suite",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Testing",
  "purpose": "Kubernetes manifests that validate infrastructure (k8s/tests/infrastructure-validation.yaml)",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_k",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "13_CODE_L: Infrastructure testing pipeline",
  "kind": "artefact",
  "id_prefix": "13_CODE_*",
  "activity": "Testing",
  "purpose": "GitHub Actions pipeline for infrastructure testing",
  "chapters": [
   "13",
   "A"
  ],
  "location": "30_appendix_code_examples.md#13_code_l",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "17_CODE_1: Infrastructure platform team blueprint",
  "kind": "artefact",
  "id_prefix": "17_CODE_*",
  "activity": "Organisation",
  "purpose": "YAML blueprint of a platform team structure (devops_team_structure.yaml)",
  "chapters": [
   "17",
   "A",
   "C"
  ],
  "location": "30_appendix_code_examples.md#17_code_1",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "17_CODE_2: IaC competency framework utilities",
  "kind": "artefact",
  "id_prefix": "17_CODE_*",
  "activity": "Competence",
  "purpose": "Python utilities for a competency framework and tracking",
  "chapters": [
   "17",
   "A"
  ],
  "location": "30_appendix_code_examples.md#17_code_2",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 21
 },
 {
  "name": "17_CODE_3: DevOps performance measurement framework",
  "kind": "artefact",
  "id_prefix": "17_CODE_*",
  "activity": "Metrics",
  "purpose": "YAML framework of leading-indicator delivery metrics",
  "chapters": [
   "17",
   "A"
  ],
  "location": "30_appendix_code_examples.md#17_code_3",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 15
 },
 {
  "name": "14_CODE_1: Terraform service blueprint for a web application landing zone",
  "kind": "artefact",
  "id_prefix": "14_CODE_*",
  "activity": "Infrastructure definition",
  "purpose": "Reusable Terraform module (modules/web-application)",
  "chapters": [
   "14",
   "A"
  ],
  "location": "30_appendix_code_examples.md#14_code_1",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "14_CODE_2: Environment configuration and observability controls",
  "kind": "artefact",
  "id_prefix": "14_CODE_*",
  "activity": "Infrastructure definition",
  "purpose": "Terraform production environment with observability controls",
  "chapters": [
   "14",
   "A"
  ],
  "location": "30_appendix_code_examples.md#14_code_2",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 15
 },
 {
  "name": "14_CODE_3: Continuous delivery workflow for infrastructure changes",
  "kind": "artefact",
  "id_prefix": "14_CODE_*",
  "activity": "Delivery pipelines",
  "purpose": "GitHub Actions workflow for infrastructure delivery",
  "chapters": [
   "14",
   "A"
  ],
  "location": "30_appendix_code_examples.md#14_code_3",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "15_CODE_1: Cost-aware Terraform infrastructure configuration",
  "kind": "artefact",
  "id_prefix": "15_CODE_*",
  "activity": "Cost management",
  "purpose": "Terraform with cost allocation tags, budgets and Spot instances",
  "chapters": [
   "15",
   "A"
  ],
  "location": "30_appendix_code_examples.md#15_code_1",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "15_CODE_2: Kubernetes cost optimisation manifests",
  "kind": "artefact",
  "id_prefix": "15_CODE_*",
  "activity": "Cost management",
  "purpose": "Quotas, limit ranges, VPA and HPA manifests",
  "chapters": [
   "15",
   "A"
  ],
  "location": "30_appendix_code_examples.md#15_code_2",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "15_CODE_3: AWS cost monitoring and optimisation automation",
  "kind": "artefact",
  "id_prefix": "15_CODE_*",
  "activity": "Cost management",
  "purpose": "Python cost optimiser that generates optimisation suggestions",
  "chapters": [
   "15",
   "A"
  ],
  "location": "30_appendix_code_examples.md#15_code_3",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "10_CODE_1: Advanced Policy-as-Code module for EU compliance",
  "kind": "artefact",
  "id_prefix": "10_CODE_*",
  "activity": "Policy as code",
  "purpose": "Rego module checking encryption, residency, key management and ingress",
  "chapters": [
   "10",
   "A"
  ],
  "location": "30_appendix_code_examples.md#10_code_1",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "10_CODE_2: OSCAL profile for regulated financial services",
  "kind": "artefact",
  "id_prefix": "10_CODE_*",
  "activity": "Compliance",
  "purpose": "OSCAL profile document in JSON",
  "chapters": [
   "10",
   "A"
  ],
  "location": "30_appendix_code_examples.md#10_code_2",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "10_CODE_3: OSCAL component definitions for reusable cloud modules",
  "kind": "artefact",
  "id_prefix": "10_CODE_*",
  "activity": "Compliance",
  "purpose": "OSCAL component-definition document in JSON",
  "chapters": [
   "10",
   "A"
  ],
  "location": "30_appendix_code_examples.md#10_code_3",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "10_CODE_4: Automated OSCAL System Security Plan generator",
  "kind": "artefact",
  "id_prefix": "10_CODE_*",
  "activity": "Compliance",
  "purpose": "Python generator of an OSCAL System Security Plan",
  "chapters": [
   "10",
   "A"
  ],
  "location": "30_appendix_code_examples.md#10_code_4",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "06_CODE_5: Structurizr workspace for a complete e-commerce platform",
  "kind": "artefact",
  "id_prefix": "06_CODE_*",
  "activity": "Architecture modelling",
  "purpose": "Complete Structurizr DSL workspace for an e-commerce platform",
  "chapters": [
   "6",
   "A"
  ],
  "location": "30_appendix_code_examples.md#06_code_5",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Architecture Decision Record (ADR) template",
  "kind": "artefact",
  "id_prefix": "ADR-*",
  "activity": "Decision records",
  "purpose": "Standard ADR with YAML front matter (adr_id, status, review dates, deciders) and Context, Decision, Consequences, Mitigation sections",
  "chapters": [
   "4"
  ],
  "location": "04_adr.md#standardised-adr-template",
  "has_full_template": true,
  "language": "md",
  "sources": [
   39,
   41,
   55
  ],
  "mention": "described",
  "notes": "Book repository extends it with related_chapters etc.; instances exist under docs/examples/structurizr/adrs, adr/ and docs/adr/",
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "ADR status lifecycle (Proposed, Accepted, Deprecated, Superseded)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "Table of ADR statuses and the action each requires",
  "chapters": [
   "4"
  ],
  "location": "04_adr.md#status-lifecycle",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "ADR directory layout (docs/adr/)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "Repository structure for numbered ADR files",
  "chapters": [
   "4"
  ],
  "location": "04_adr.md",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "ADR dashboards (lifecycle timeline, policy coverage heat map, review debt tracker)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "JSON index emitted in CI feeding dashboards of ADR metadata",
  "chapters": [
   "4"
  ],
  "location": "04_adr.md#operationalising-adr-metadata",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described as widgets, no code",
  "book": 1,
  "tools_chapter": 14
 },
 {
  "name": "Handover checklist from ADRs",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "Three-step checklist for inheriting a service through its ADRs",
  "chapters": [
   "4"
  ],
  "location": "04_adr.md#preventing-knowledge-loss-through-adrs",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 3
 },
 {
  "name": "CODEOWNERS for architectural review",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "CODEOWNERS file mapping architecture paths to required reviewers",
  "chapters": [
   "2",
   "6",
   "19"
  ],
  "location": "02_fundamental_principles.md (.github/CODEOWNERS example)",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Documentation workflow (.github/workflows/docs.yml)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Documentation as code",
  "purpose": "GitHub Actions workflow building documentation from the repository",
  "chapters": [
   "2"
  ],
  "location": "02_fundamental_principles.md#documentation-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Security requirements as code (requirements/security-requirements.yaml)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Requirements",
  "purpose": "YAML requirement definitions with traceability",
  "chapters": [
   "2"
  ],
  "location": "02_fundamental_principles.md#requirements-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Requirements validation test (test/requirements_validation.py)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Requirements",
  "purpose": "Python test validating requirements against infrastructure",
  "chapters": [
   "2"
  ],
  "location": "02_fundamental_principles.md",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Performance NFR as code (requirements/performance-nfr.yaml)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Requirements",
  "purpose": "YAML non-functional requirement for performance",
  "chapters": [
   "2"
  ],
  "location": "02_fundamental_principles.md#functional-vs-non-functional-requirements-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Authentication FR as code (requirements/authentication-fr.yaml)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Requirements",
  "purpose": "YAML functional requirement for authentication",
  "chapters": [
   "2"
  ],
  "location": "02_fundamental_principles.md#functional-vs-non-functional-requirements-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Pipeline monitoring ConfigMap (monitoring/pipeline-monitoring.yaml)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Monitoring configuration for architecture-as-code pipelines with GDPR and EUR cost tracking",
  "chapters": [
   "5"
  ],
  "location": "05_automation_devops_cicd.md#monitoring-and-observability",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Compliance test container (test/Dockerfile.compliance-test)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Testing",
  "purpose": "Dockerfile for container-based compliance testing",
  "chapters": [
   "5"
  ],
  "location": "05_automation_devops_cicd.md#container-based-testing-with-compliance",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Pipeline stage table (validation, scanning, cost estimation, compliance tests)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Delivery pipelines",
  "purpose": "Table assigning tools to pipeline stages for IaC",
  "chapters": [
   "5"
  ],
  "location": "05_automation_devops_cicd.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "Structurizr example workspaces (E-Commerce, Microservices, Event-Driven, Multi-Tenant SaaS)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Structurizr DSL workspaces and patterns",
  "chapters": [
   "6"
  ],
  "location": "06_structurizr.md",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Structurizr multi-file workspace layout (workspace.dsl, model/*.dsl)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Includes-based file organisation of a workspace",
  "chapters": [
   "6"
  ],
  "location": "06_structurizr.md#multi-file-workspaces",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Structurizr CI workflows (diagram automation, documentation, validation; GitLab CI job)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "GitHub Actions and GitLab CI examples that validate and export workspaces",
  "chapters": [
   "6"
  ],
  "location": "06_structurizr.md#integration-with-cicd-pipelines",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Architecture coverage script and ci/validate-architecture.py",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Python scripts verifying architecture coverage and workspace rules",
  "chapters": [
   "6"
  ],
  "location": "06_structurizr.md",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 14
 },
 {
  "name": "New-service DSL template (templates/new-service.dsl) and onboarding guide",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Template and markdown guide for adding a service to the workspace",
  "chapters": [
   "6"
  ],
  "location": "06_structurizr.md#team-enablement-and-adoption-playbook",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "AaC reference Structurizr workspace (aac_reference_workspace.dsl) and manifest",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Curated workspace modelling the book production platform, with manifest recording digest",
  "chapters": [
   "6",
   "24",
   "B"
  ],
  "location": "docs/examples/structurizr/aac_reference_workspace.dsl",
  "has_full_template": false,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": "Lives in the repository, described in Chapter 6 and 24",
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "OPA Gatekeeper constraint blocking privileged containers",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Gatekeeper constraint (K8sPSPPrivilegedContainer)",
  "chapters": [
   "7"
  ],
  "location": "07_containerisation.md#guard-rails-that-keep-manifests-trustworthy",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Argo CD Application manifest",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Delivery pipelines",
  "purpose": "GitOps reconciliation manifest for a production namespace",
  "chapters": [
   "7"
  ],
  "location": "07_containerisation.md#guard-rails-that-keep-manifests-trustworthy",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "Kubernetes Deployment, Helm values, Docker Compose and Terraform cluster examples",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Infrastructure definition",
  "purpose": "Example manifests for container platforms",
  "chapters": [
   "7"
  ],
  "location": "07_containerisation.md#practical-examples",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "Istio VirtualService weighted canary routing",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Delivery pipelines",
  "purpose": "Weighted routing manifest for canary release",
  "chapters": [
   "8"
  ],
  "location": "08_microservices.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "AsyncAPI 3.0 saga definition",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Interface contracts",
  "purpose": "AsyncAPI document for an order-payment saga",
  "chapters": [
   "8"
  ],
  "location": "08_microservices.md#data-management-across-domains",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 9
 },
 {
  "name": "Secure IaC state management and security foundation Terraform module",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Terraform module for remote state hardening and security foundation",
  "chapters": [
   "9b"
  ],
  "location": "09b_security_patterns.md",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "GDPR compliance Rego policy (policies/gdpr_compliance.rego)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Rego policy for GDPR checks",
  "chapters": [
   "9b"
  ],
  "location": "09b_security_patterns.md#advanced-gdpr-compliance-implementation",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Advanced threat detection platform (Python)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Detection",
  "purpose": "Python example of a threat detection platform for European organisations",
  "chapters": [
   "9b"
  ],
  "location": "09b_security_patterns.md#advanced-threat-detection-platform",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 12
 },
 {
  "name": "Risk definition document (RISK-*)",
  "kind": "artefact",
  "id_prefix": "RISK-*",
  "activity": "Risk management",
  "purpose": "YAML risk with likelihood, impact, control_refs, owner and review cadence, validated in CI",
  "chapters": [
   "9c"
  ],
  "location": "09c_risk_and_threat_as_code.md#domain-driven-risk-definitions",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   83
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 7
 },
 {
  "name": "Time-bound risk exception",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Risk management",
  "purpose": "Exception as code artefact with expiry date and approval chain",
  "chapters": [
   "9c"
  ],
  "location": "09c_risk_and_threat_as_code.md#automating-approvals-and-exceptions",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described, no template",
  "book": 1,
  "tools_chapter": 7
 },
 {
  "name": "Incident response playbook as state machine",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Incident response",
  "purpose": "Playbook with Subscribe, Assess, Act, Document steps",
  "chapters": [
   "9c"
  ],
  "location": "09c_risk_and_threat_as_code.md#response-playbooks-expressed-as-state-machines",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described, no code",
  "book": 1,
  "tools_chapter": 12
 },
 {
  "name": "Enterprise security Rego policy (package se.enterprise.security) and MFA identity policy",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Rego policies for security and MFA enforcement",
  "chapters": [
   "10"
  ],
  "location": "10_policy_and_security.md",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 20
 },
 {
  "name": "Governance Rego policies (encryption at rest, tag compliance) with tests and CI step",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Rego policies, their opa test file and a workflow step",
  "chapters": [
   "11"
  ],
  "location": "11_governance_as_code.md#policy-as-code-opa-and-rego-in-practice",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Governance and Security Controls as Code backlog",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Backlog of governance and security control items to codify",
  "chapters": [
   "11"
  ],
  "location": "11_governance_as_code.md#governance-and-security-controls-as-code-backlog",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Control Mapping Matrix",
  "kind": "artefact",
  "id_prefix": "SEC-*",
  "activity": "Compliance",
  "purpose": "Table linking control IDs to assurance artefacts and ISO 27001, SOC 2, NIST 800-53, GDPR and internal controls (assure once, comply many)",
  "chapters": [
   "12",
   "D",
   "15a"
  ],
  "location": "appendix_d_control_mapping_matrix_template.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": "Chapter 12 worked row SEC-ID-001",
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "AI-augmented infrastructure optimiser (ai_optimiser.py)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Cost management",
  "purpose": "Python example of AI-assisted infrastructure optimisation",
  "chapters": [
   "12"
  ],
  "location": "12_compliance.md#ai-augmented-infrastructure-optimisation",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Serverless infrastructure definition",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Infrastructure definition",
  "purpose": "Serverless YAML template",
  "chapters": [
   "12"
  ],
  "location": "12_compliance.md#serverless-infrastructure-definition",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Crypto-agility baseline (crypto-agility-baseline.tf)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Terraform baseline preparing for post-quantum migration",
  "chapters": [
   "12"
  ],
  "location": "12_compliance.md#crypto-agility-baseline-pre-pqc",
  "has_full_template": true,
  "language": "other",
  "sources": [
   85,
   126,
   127
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Infrastructure CI workflow (infrastructure-ci) and package.json test scripts",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Testing",
  "purpose": "GitHub Actions workflow and npm scripts for infrastructure tests",
  "chapters": [
   "13"
  ],
  "location": "13_testing_strategies.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Resilience checklist for infrastructure changes",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Operations",
  "purpose": "Table of pre-change validation, state resilience, recovery drills and rollback readiness prompts with expected artefacts",
  "chapters": [
   "14"
  ],
  "location": "14_practical_implementation.md#resilience-checklist-for-infrastructure-changes",
  "has_full_template": true,
  "language": "md",
  "sources": [
   15,
   16
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 13
 },
 {
  "name": "MFA evidence export pipeline",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "CI job producing MFA evidence artefacts for reuse",
  "chapters": [
   "15a"
  ],
  "location": "15a_evidence_as_code.md#pipeline-example-exporting-mfa-evidence",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Calls scripts/export_mfa_snapshot.py, which is not provided",
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Evidence manifest",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "Manifest linking artefacts to control IDs and framework mappings",
  "chapters": [
   "15a"
  ],
  "location": "15a_evidence_as_code.md#evidence-lifecycle-management",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in lifecycle table; no schema given",
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "SBOM generation steps (Syft, CycloneDX) in CI",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "Commands and CI step generating an SBOM from a container image",
  "chapters": [
   "15a"
  ],
  "location": "15a_evidence_as_code.md#software-bill-of-materials-as-evidence",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   89
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "SLSA provenance attestation (in-toto statement)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "Example SLSA provenance JSON",
  "chapters": [
   "15a"
  ],
  "location": "15a_evidence_as_code.md#slsa-provenance",
  "has_full_template": true,
  "language": "json",
  "sources": [
   87
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Evidence lifecycle table (capture, packaging, storage, indexing, retrieval, expiry, access control)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "Table of lifecycle stages and tooling",
  "chapters": [
   "15a"
  ],
  "location": "15a_evidence_as_code.md#evidence-lifecycle-management",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "CloudFormation legacy import template and resource identifier list",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Migration",
  "purpose": "IMPORT change-set template (migration/legacy-import-template.yaml) and resource identifier JSON",
  "chapters": [
   "16"
  ],
  "location": "16_migration.md#cloudformation-legacy-import",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   96
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Legacy resource import script (migration/import-legacy-resources.sh)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Migration",
  "purpose": "Bash script importing legacy resources",
  "chapters": [
   "16"
  ],
  "location": "16_migration.md",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 0
 },
 {
  "name": "Migration testing framework",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Migration",
  "purpose": "Bash script testing migrated infrastructure",
  "chapters": [
   "16"
  ],
  "location": "16_migration.md#migration-testing-framework",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Migration assessment automation (infrastructure_discovery.py)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Migration",
  "purpose": "Python discovery of unmanaged resources with generated Terraform and migration playbook",
  "chapters": [
   "16",
   "D"
  ],
  "location": "appendix_templates_and_tools.md#migration-assessment-automation",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Migration playbook (generated Markdown)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Migration",
  "purpose": "Phased playbook: preparation, pilot, production, post-migration, EU compliance, success metrics, risks",
  "chapters": [
   "16",
   "D"
  ],
  "location": "appendix_templates_and_tools.md#migration-assessment-automation",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 12
 },
 {
  "name": "Training programme blueprint (training-program.yaml)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "12-week training programme in YAML",
  "chapters": [
   "18"
  ],
  "location": "18_team_structure.md#training-programme-blueprint",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 21
 },
 {
  "name": "Skills matrix (technical Levels 1-4 and interpersonal)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "Tables of competencies by level",
  "chapters": [
   "18"
  ],
  "location": "18_team_structure.md#skills-matrix-reference",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 21
 },
 {
  "name": "Platform and product team charter (team-structure.yaml)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Organisation",
  "purpose": "YAML team charter",
  "chapters": [
   "18"
  ],
  "location": "18_team_structure.md#platform-and-product-team-charter",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Community of practice charter",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Organisation",
  "purpose": "Markdown charter with purpose, structure, activities, knowledge sharing and metrics",
  "chapters": [
   "18"
  ],
  "location": "18_team_structure.md#community-of-practice-framework",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 3
 },
 {
  "name": "Management as Code artefacts (OKRs, budgets, competency frameworks, playbooks, policies as files)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Management as code",
  "purpose": "Version-controlled management artefacts validated by GitHub Actions",
  "chapters": [
   "19"
  ],
  "location": "19_management_as_code.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described; no schema",
  "book": 1,
  "tools_chapter": 12
 },
 {
  "name": "Issue templates for management decisions",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Management as code",
  "purpose": "Custom GitHub issue templates capturing financial impact, staffing etc.",
  "chapters": [
   "19"
  ],
  "location": "19_management_as_code.md#issues-as-transparent-decision-records",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": "Described, no template body",
  "book": 1,
  "tools_chapter": 22
 },
 {
  "name": "Budget envelope files (Budgeting as Code)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Management as code",
  "purpose": "YAML/JSON budget envelopes validated by tests",
  "chapters": [
   "19"
  ],
  "location": "19_management_as_code.md#budgeting-as-code",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described, no template",
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Editor agent documentation-consistency workflow",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "AI agents",
  "purpose": "GitHub Actions workflow running a documentation consistency check by an Editor agent",
  "chapters": [
   "20"
  ],
  "location": "20_ai_agent_team.md#github-actions-as-the-agent-execution-layer",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "References illustrative scripts/check_terminology.py and .pyspelling.yml",
  "book": 1,
  "tools_chapter": 18
 },
 {
  "name": "Architect agent system prompt",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "AI agents",
  "purpose": "Prompt encoding the Architect agent's responsibilities and review output",
  "chapters": [
   "20"
  ],
  "location": "20_ai_agent_team.md#prompt-engineering-for-architecture-as-code-agents",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 18
 },
 {
  "name": "Agent role set (Project Manager, Architect, Requirements Analyst, Designer, Developer, Quality Control, Editor, Graphic Designer)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "AI agents",
  "purpose": "Multi-agent operating model roles",
  "chapters": [
   "20"
  ],
  "location": "20_ai_agent_team.md#role-narratives-and-responsibilities",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 18
 },
 {
  "name": "Backend partial configuration (backend.eu-central-1.hcl)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Infrastructure definition",
  "purpose": "Terraform partial backend configuration",
  "chapters": [
   "21"
  ],
  "location": "21_digitalisation.md",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Automated compliance pipeline (compliance-check.yml)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Compliance",
  "purpose": "GitHub Actions workflow for compliance checks",
  "chapters": [
   "21"
  ],
  "location": "21_digitalisation.md#automated-compliance-pipeline",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Calls ./scripts/eu-security-validation.sh, not provided",
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Self-service developer portal (infrastructure_provisioning.py)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Platform engineering",
  "purpose": "Flask example for self-service provisioning; TerraformRunner is illustrative",
  "chapters": [
   "21"
  ],
  "location": "21_digitalisation.md#self-service-developer-portal",
  "has_full_template": true,
  "language": "python",
  "sources": [
   118
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "CALM definition example",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "CALM JSON valid against release 1.0 schema",
  "chapters": [
   "22"
  ],
  "location": "22_documentation_vs_architecture.md#modelling-tools-calm-and-structurizr",
  "has_full_template": true,
  "language": "json",
  "sources": [
   1,
   48
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "PlantUML and Mermaid diagram examples",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Documentation as code",
  "purpose": "Diagram-as-code examples",
  "chapters": [
   "22"
  ],
  "location": "22_documentation_vs_architecture.md#diagram-tools-mermaid-and-plantuml",
  "has_full_template": true,
  "language": "other",
  "sources": [
   40
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Team norms file (team-norms.yaml)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Culture as code",
  "purpose": "Version-controlled team agreements",
  "chapters": [
   "23"
  ],
  "location": "23_soft_as_code_interplay.md#culture-as-code-in-practice",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Lessons-learned knowledge registry entry (LL-*)",
  "kind": "artefact",
  "id_prefix": "LL-*",
  "activity": "Knowledge as code",
  "purpose": "YAML lessons-learned record, e.g. LL-0042",
  "chapters": [
   "23"
  ],
  "location": "23_soft_as_code_interplay.md#knowledge-as-code-in-practice",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Carbon-aware scheduling (carbon_aware_scheduling.py)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Sustainability",
  "purpose": "Python example scheduling work by carbon intensity",
  "chapters": [
   "25"
  ],
  "location": "25_future_trends.md",
  "has_full_template": true,
  "language": "python",
  "sources": [
   120,
   121
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "Readiness scorecard",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Adoption",
  "purpose": "15-criterion scorecard scored 1-5 with interpretation bands (60-75, 40-59, <40)",
  "chapters": [
   "26a"
  ],
  "location": "26a_prerequisites_for_aac.md#readiness-scorecard-template",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 3
 },
 {
  "name": "Anti-pattern severity classification",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Adoption",
  "purpose": "Table of Critical, High, Medium, Low with responses",
  "chapters": [
   "26b"
  ],
  "location": "26b_aac_anti_patterns.md#severity-classification",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 7
 },
 {
  "name": "Maturity model checklist (50 yes/no questions across ten disciplines)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Maturity assessment",
  "purpose": "Per-discipline checklist used by the radar",
  "chapters": [
   "D",
   "Maturity model"
  ],
  "location": "architecture_as_code_maturity_model.md#assessment-checklist-for-radar-visualisation",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": "Maturity model file is a supplement, listed in Appendix D",
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Architecture as Code Maturity Model (Levels 0-5)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Maturity assessment",
  "purpose": "Six maturity levels from ad hoc to innovative/AI-assisted",
  "chapters": [
   "D",
   "Maturity model"
  ],
  "location": "architecture_as_code_maturity_model.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Radar assessment export (JSON and PDF report)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Maturity assessment",
  "purpose": "JSON export of answers (re-importable) and PDF of improvement suggestions",
  "chapters": [
   "D"
  ],
  "location": "maturity_model_radar.html",
  "has_full_template": false,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Pandoc defaults (docs/pandoc.yaml excerpt)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Pandoc configuration for the book build",
  "chapters": [
   "B"
  ],
  "location": "31_appendix_b_technical_architecture.md#configuration-system",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "unified-build-release.yml workflow excerpt",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "GitHub Actions workflow for the release build",
  "chapters": [
   "B"
  ],
  "location": "31_appendix_b_technical_architecture.md#primary-workflow-for-book-production",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "Course action plan canvas, lab submission checklist, module workbook template, radar reflection log",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Training",
  "purpose": "Course templates stored in course/templates",
  "chapters": [
   "course"
  ],
  "location": "course/templates/",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": "Repository course material, not a book chapter; mentioned in Chapter 1 as companion workbook",
  "book": 1,
  "tools_chapter": 3
 },
 {
  "name": "FINOS project blueprint (CALM-based repository blueprint)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Proposed blueprint of pipelines, evidence export, policy modules and FinOps templates",
  "chapters": [
   "C"
  ],
  "location": "32_finos_project_blueprint.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   1,
   48,
   131
  ],
  "mention": "described",
  "notes": "Proposal, no template code",
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "Evidence export pipeline in the blueprint",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "Pipeline stamping artefacts with control IDs and framework mappings",
  "chapters": [
   "C"
  ],
  "location": "32_finos_project_blueprint.md#evidence-export-for-reuse",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Architecture as Code Maturity Radar Tool",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Maturity assessment",
  "purpose": "Interactive HTML tool: answer the checklist, plot a radar chart, list prioritised improvement suggestions with chapter references, export JSON (re-importable) or PDF",
  "chapters": [
   "D",
   "Maturity model"
  ],
  "location": "maturity_model_radar.html",
  "has_full_template": false,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": "Uses jsPDF for PDF export",
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "generate_book.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Loads the chapter list via navigation.py and orchestrates manuscript content generation",
  "chapters": [
   "6",
   "24",
   "B"
  ],
  "location": "generate_book.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "docs/build_book.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds PDF, EPUB and DOCX with Mermaid conversion and Pandoc",
  "chapters": [
   "B",
   "6",
   "24"
  ],
  "location": "docs/build_book.sh",
  "has_full_template": false,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "build_all_orchestrator.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Coordinates book, whitepaper, presentation and site builds locally",
  "chapters": [
   "README"
  ],
  "location": "build_all_orchestrator.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "build_release.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates all deliverables and organises them in a release folder",
  "chapters": [
   "B",
   "README"
  ],
  "location": "build_release.sh",
  "has_full_template": false,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "generate_presentation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates a PowerPoint deck from chapters with diagram validation",
  "chapters": [
   "B"
  ],
  "location": "generate_presentation.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "generate_whitepapers.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Exports per-chapter HTML whitepapers",
  "chapters": [
   "B"
  ],
  "location": "generate_whitepapers.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/navigation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Canonical chapter ordering utilities shared by the toolchain",
  "chapters": [
   "README",
   "B"
  ],
  "location": "scripts/navigation.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_mermaid_diagrams.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates that committed PNGs match Mermaid sources",
  "chapters": [
   "B"
  ],
  "location": "scripts/check_mermaid_diagrams.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/audit_references.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Audits chapter citations and Sources sections against the bibliography",
  "chapters": [
   "README"
  ],
  "location": "scripts/audit_references.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Checks URL accessibility and ISBN format of cited sources",
  "chapters": [
   "README"
  ],
  "location": "scripts/verify_sources.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_doc_numbering.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Validates chapter file numbering",
  "chapters": [
   "README"
  ],
  "location": "scripts/check_doc_numbering.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_environment.py (make verify-env)",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies toolchain versions against BOOK_REQUIREMENTS.md",
  "chapters": [
   "README"
  ],
  "location": "scripts/verify_environment.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_heading_capitalization.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Checks headings begin with uppercase",
  "chapters": [
   "20"
  ],
  "location": "scripts/validate_heading_capitalization.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_figure_captions.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Checks figure captions start with 'Figure'",
  "chapters": [
   "docs/VALIDATION_SCRIPTS.md"
  ],
  "location": "scripts/validate_figure_captions.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_branding.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Checks Mermaid diagrams against Kvadrat brand guidelines",
  "chapters": [
   "repo"
  ],
  "location": "scripts/validate_diagram_branding.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_elements.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Enforces at most 15 elements per Mermaid diagram",
  "chapters": [
   "repo"
  ],
  "location": "scripts/validate_diagram_elements.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/analyze_diagram_complexity.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Reports overly complex Mermaid diagrams",
  "chapters": [
   "repo"
  ],
  "location": "scripts/analyze_diagram_complexity.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/analyze_chapter_lengths.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Flags chapters whose length deviates from the average",
  "chapters": [
   "repo"
  ],
  "location": "scripts/analyze_chapter_lengths.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_docs_protection.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Checks that changes do not inappropriately modify docs/",
  "chapters": [
   "repo"
  ],
  "location": "scripts/validate_docs_protection.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_presentation_guidelines.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Validates presentation materials against design guidelines",
  "chapters": [
   "repo"
  ],
  "location": "scripts/validate_presentation_guidelines.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/translate_repo.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Translation helper for the repository",
  "chapters": [
   "B"
  ],
  "location": "scripts/translate_repo.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "No docstring; purpose inferred from file name and Appendix B mention",
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "tests/ pytest suites (completeness, consistency, technical accuracy, clarity, references)",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Quality assurance",
  "purpose": "Content validation test suites for the manuscript",
  "chapters": [
   "README",
   "B"
  ],
  "location": "tests/",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "scripts/new_adr.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "Creates the next numbered ADR from a template in docs/examples/structurizr/adrs",
  "chapters": [
   "repo"
  ],
  "location": "scripts/new_adr.sh",
  "has_full_template": false,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": "Not described in a chapter",
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "scripts/validate_adrs.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "Validates ADR metadata (front matter completeness)",
  "chapters": [
   "4",
   "repo"
  ],
  "location": "scripts/validate_adrs.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "scripts/generate_adr_catalogue.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "Generates documentation assets (docs/adr/adr_catalogue.md) from ADR metadata",
  "chapters": [
   "repo"
  ],
  "location": "scripts/generate_adr_catalogue.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "scripts/adr_metrics.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "Markdown report of ADR status and age",
  "chapters": [
   "repo"
  ],
  "location": "scripts/adr_metrics.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 15
 },
 {
  "name": "scripts/adr_impact_analysis.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "Report of which chapters reference which ADRs",
  "chapters": [
   "repo"
  ],
  "location": "scripts/adr_impact_analysis.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "scripts/render_structurizr_diagrams.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Validates and exports the reference workspace (JSON, PlantUML) via the structurizr/structurizr image and refreshes the manifest",
  "chapters": [
   "6",
   "B"
  ],
  "location": "scripts/render_structurizr_diagrams.sh",
  "has_full_template": false,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "scripts/check_structurizr_manifest.py and update_structurizr_manifest.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Check and update the workspace manifest digest and ADR references",
  "chapters": [
   "6"
  ],
  "location": "scripts/",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Mermaid Designer Bot (mermaid-designer-bot.yml)",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "AI agents",
  "purpose": "Issue labelled mermaid/diagram yields a new .mmd diagram, a pull request and a comment",
  "chapters": [
   "20"
  ],
  "location": ".github/workflows/mermaid-designer-bot.yml",
  "has_full_template": false,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Claude Code workflow (claude.yml)",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "AI agents",
  "purpose": "Responds to @claude mentions in issues and pull requests",
  "chapters": [
   "20"
  ],
  "location": ".github/workflows/claude.yml",
  "has_full_template": false,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Issue to draft PR workflow (assign-codex2.yml)",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "AI agents",
  "purpose": "Creates a branch and draft pull request when an issue is opened",
  "chapters": [
   "20"
  ],
  "location": ".github/workflows/assign-codex2.yml",
  "has_full_template": false,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "structurizr-diagrams.yml workflow",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "CI workflow rendering the Structurizr example",
  "chapters": [
   "B"
  ],
  "location": ".github/workflows/structurizr-diagrams.yml",
  "has_full_template": false,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Presentation and prezi assets (presentations/, docs/prezi)",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generated deck data and HTML slides",
  "chapters": [
   "B"
  ],
  "location": "presentations/presentation_data.json",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Outputs, not tools; included for completeness",
  "publishing_engine": true,
  "book": 1,
  "tools_chapter": null
 },
 {
  "name": "Terraform",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Infrastructure as code",
  "purpose": "Declarative IaC tool used throughout the examples; terraform test, plan, validate, fmt",
  "chapters": [
   "2",
   "3",
   "4",
   "5",
   "7",
   "8",
   "9",
   "9b",
   "10",
   "11",
   "13",
   "14",
   "15",
   "16",
   "18",
   "21",
   "23",
   "A",
   "D"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   5,
   16,
   17,
   26,
   70,
   71,
   73,
   103,
   113,
   123,
   140
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "HCP Terraform / Terraform Cloud",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Infrastructure as code",
  "purpose": "Managed remote state, policy enforcement and collaboration",
  "chapters": [
   "4",
   "9b",
   "15",
   "21"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   70,
   73,
   113
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "OpenTofu",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Infrastructure as code",
  "purpose": "Terraform-compatible alternative",
  "chapters": [
   "4",
   "14",
   "27"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Pulumi",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Infrastructure as code",
  "purpose": "General-purpose-language IaC with host-language testing and mocks",
  "chapters": [
   "13",
   "14"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   15
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "AWS CloudFormation",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Infrastructure as code",
  "purpose": "AWS-native templates; legacy import via IMPORT change sets",
  "chapters": [
   "14",
   "16",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   96
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "AWS CDK",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Infrastructure as code",
  "purpose": "Programmatic IaC on AWS",
  "chapters": [
   "3",
   "5",
   "13",
   "14"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   9
  ],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Ansible",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Configuration management",
  "purpose": "Configuration management tool",
  "chapters": [
   "5",
   "9"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 0
 },
 {
  "name": "Bicep",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Infrastructure as code",
  "purpose": "Azure IaC language",
  "chapters": [
   "3"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Crossplane",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Infrastructure as code",
  "purpose": "Kubernetes-based infrastructure composition",
  "chapters": [
   "7"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Open Policy Agent (OPA) and Rego",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Policy engine and language for infrastructure, Kubernetes and governance policies, with opa test",
  "chapters": [
   "2",
   "5",
   "7",
   "8",
   "9",
   "9b",
   "10",
   "11",
   "13",
   "15a",
   "22",
   "26b",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   10,
   44
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Conftest",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Runs OPA policies against configuration files in CI",
  "chapters": [
   "2",
   "5",
   "8",
   "21"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "HashiCorp Sentinel",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Policy-as-code framework in HashiCorp products",
  "chapters": [
   "9",
   "9c",
   "10",
   "11"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   73
  ],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "OPA Gatekeeper",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Kubernetes admission control with OPA constraints",
  "chapters": [
   "7",
   "10",
   "13"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   10
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Kyverno",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Kubernetes policy engine",
  "chapters": [
   "7",
   "13"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "OSCAL (Open Security Controls Assessment Language)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Compliance",
  "purpose": "NIST machine-readable control language for profiles, component definitions and System Security Plans",
  "chapters": [
   "10",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   11
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Checkov",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Static analysis of IaC against policies",
  "chapters": [
   "5",
   "13",
   "16",
   "21",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "terraform-compliance",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Testing",
  "purpose": "BDD-style compliance checks on Terraform plans",
  "chapters": [
   "5",
   "13"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Trivy",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security scanning",
  "purpose": "Scanner that absorbed tfsec; used for IaC and image scanning",
  "chapters": [
   "5",
   "16",
   "21",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "tfsec",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security scanning",
  "purpose": "Terraform static analysis, now merged into Trivy",
  "chapters": [
   "5",
   "21"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "TFLint",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Static analysis",
  "purpose": "Terraform linter",
  "chapters": [
   "5"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Infracost",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Cost management",
  "purpose": "Cost estimation of Terraform changes in CI",
  "chapters": [
   "5"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "Terratest",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Testing",
  "purpose": "Go library for infrastructure tests",
  "chapters": [
   "5",
   "11",
   "13",
   "14",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   90,
   26
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Vitest",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Testing",
  "purpose": "Test runner used to test infrastructure code in TypeScript",
  "chapters": [
   "13",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "pytest",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Testing",
  "purpose": "Python test runner for infrastructure and Pulumi tests",
  "chapters": [
   "5",
   "13"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Structurizr (DSL, local, export)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "C4 modelling DSL and tooling; structurizr local replaces Lite; CLI end of life",
  "chapters": [
   "2",
   "6",
   "22",
   "24",
   "B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   38,
   56,
   61,
   62,
   63,
   64,
   65,
   66
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "C4 model",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Four-level notation for software architecture",
  "chapters": [
   "6",
   "8",
   "22"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   37,
   60
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "CALM (FINOS Common Architecture Language Model)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "FINOS machine-readable architecture language with JSON schema",
  "chapters": [
   "1",
   "2",
   "6",
   "22",
   "B",
   "C"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   1,
   48,
   131
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Mermaid and Mermaid CLI",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Documentation as code",
  "purpose": "Text-based diagrams; mmdc renders PNG",
  "chapters": [
   "2",
   "6",
   "9c",
   "20",
   "22",
   "B",
   "D"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   40
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "PlantUML",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Documentation as code",
  "purpose": "Text-based diagrams, target of Structurizr export",
  "chapters": [
   "6",
   "22"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   40
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Draw.io / Lucidchart",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Documentation as code",
  "purpose": "GUI diagram tools contrasted with diagrams as code",
  "chapters": [
   "6"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Docusaurus, Sphinx, Jekyll",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Documentation as code",
  "purpose": "Static site generators for docs as code",
  "chapters": [
   "22"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   21
  ],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "MkDocs",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Documentation as code",
  "purpose": "Static documentation site generator",
  "chapters": [
   "2",
   "22",
   "B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   21
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Pandoc, XeLaTeX and the Eisvogel template",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Conversion chain to PDF, EPUB and DOCX",
  "chapters": [
   "B",
   "29"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 0
 },
 {
  "name": "Kubernetes",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Container platform",
  "purpose": "Orchestration platform for declarative manifests",
  "chapters": [
   "5",
   "7",
   "9",
   "10",
   "13",
   "15",
   "18",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   13
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Helm",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Container platform",
  "purpose": "Package manager for Kubernetes charts",
  "chapters": [
   "7",
   "8"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "kubeconform / kubeval",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Testing",
  "purpose": "Kubernetes manifest schema validation",
  "chapters": [
   "7"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Docker and Docker Compose",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Container platform",
  "purpose": "Container runtime and local multi-container composition",
  "chapters": [
   "6",
   "7",
   "31"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Istio",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Service mesh",
  "purpose": "Service mesh used for canary routing and mTLS",
  "chapters": [
   "7",
   "8"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "Linkerd, Cilium",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Service mesh",
  "purpose": "Alternative mesh and networking",
  "chapters": [
   "7",
   "8"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Argo CD",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "GitOps",
  "purpose": "GitOps controller reconciling Git to cluster",
  "chapters": [
   "7"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   105,
   133
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "Flux",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "GitOps",
  "purpose": "GitOps controller",
  "chapters": [
   "7"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   105,
   133
  ],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "OpenGitOps principles",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "GitOps",
  "purpose": "CNCF GitOps principles v1.0",
  "chapters": [
   "7",
   "25"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   105,
   133
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "GitHub Actions",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "CI/CD",
  "purpose": "Workflow engine used for most pipeline examples",
  "chapters": [
   "5",
   "6",
   "11",
   "13",
   "14",
   "15a",
   "19",
   "20",
   "B",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   23
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Jenkins",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "CI/CD",
  "purpose": "Pipeline server with GDPR example",
  "chapters": [
   "5",
   "13",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   22
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "GitLab CI",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "CI/CD",
  "purpose": "GitLab pipelines with Structurizr example",
  "chapters": [
   "5",
   "6"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   25
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Azure Pipelines / Azure DevOps",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "CI/CD",
  "purpose": "Microsoft pipeline service with approvals and checks",
  "chapters": [
   "5",
   "13"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   12,
   24
  ],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "HashiCorp Vault and cloud secret managers (AWS Secrets Manager)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Secrets management",
  "purpose": "Secrets lifecycle management",
  "chapters": [
   "9"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   16,
   20
  ],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 20
 },
 {
  "name": "Syft",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "SBOM generator for images",
  "chapters": [
   "15a"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   89
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "CycloneDX and SPDX",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "SBOM formats",
  "chapters": [
   "15a"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   89
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "SLSA",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "Provenance framework and attestations",
  "chapters": [
   "15a"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   87
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Sigstore Cosign",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "Container image signing and verification",
  "chapters": [
   "15a"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   88
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "in-toto",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "Attestation statement format used by SLSA",
  "chapters": [
   "15a"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   87
  ],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Software Bill of Materials (NTIA minimum elements)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "SBOM content standard",
  "chapters": [
   "15a"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   89
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "NIST Secure Software Development Framework (SSDF)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "Secure development practices",
  "chapters": [
   "15a"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   86
  ],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "STIX and TAXII",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat intelligence",
  "purpose": "OASIS formats for exchanging threat intelligence",
  "chapters": [
   "9b",
   "9c"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   82
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 12
 },
 {
  "name": "Microsoft Threat Modeling Tool (STRIDE)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "STRIDE-based threat modelling tool",
  "chapters": [
   "9",
   "9c"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   81,
   80
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 10
 },
 {
  "name": "MITRE ATT&CK",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat intelligence",
  "purpose": "Adversary technique knowledge base",
  "chapters": [
   "9b"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 10
 },
 {
  "name": "AWS Step Functions, Azure Logic Apps, Temporal",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Incident response",
  "purpose": "Workflow engines for playbooks as state machines",
  "chapters": [
   "9c",
   "20"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 12
 },
 {
  "name": "Prometheus, Grafana, CloudWatch, Azure Monitor",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Metrics and alerting for control health",
  "chapters": [
   "5",
   "8",
   "9c",
   "15",
   "A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 15
 },
 {
  "name": "Chaos Monkey",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Resilience testing",
  "purpose": "Fault injection tool popularising chaos experiments",
  "chapters": [
   "13"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   135
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 14
 },
 {
  "name": "Gremlin, Chaos Mesh",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Resilience testing",
  "purpose": "Chaos engineering platforms",
  "chapters": [
   "8"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 14
 },
 {
  "name": "OpenCost / Kubecost",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Cost management",
  "purpose": "Kubernetes cost monitoring",
  "chapters": [
   "15"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   92
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "FinOps Framework",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Cost management",
  "purpose": "Cloud financial management framework",
  "chapters": [
   "15",
   "24",
   "25",
   "26b"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   93,
   124
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "Green Software Foundation Carbon Aware SDK and Software Carbon Intensity",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Sustainability",
  "purpose": "Carbon-aware scheduling and SCI score",
  "chapters": [
   "25",
   "26b"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   120,
   121
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "Backstage",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Platform engineering",
  "purpose": "Developer portal framework",
  "chapters": [
   "21"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   118
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "AsyncAPI / OpenAPI",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Interface contracts",
  "purpose": "Contract-first specification of events and APIs",
  "chapters": [
   "8"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 9
 },
 {
  "name": "Pact",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Testing",
  "purpose": "Consumer-driven contract tests",
  "chapters": [
   "25"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 9
 },
 {
  "name": "adr-tools and adr-log",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "CLI tools to create ADRs and generate the decision log",
  "chapters": [
   "4"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   55
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "NIST SP 800-53, ISO/IEC 27001, SOC 2 (control frameworks)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Compliance",
  "purpose": "Frameworks to which the Control Mapping Matrix maps controls",
  "chapters": [
   "9",
   "10",
   "11",
   "12",
   "15a",
   "D"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   11,
   14
  ],
  "mention": "described",
  "notes": "Frameworks, not software",
  "book": 1,
  "tools_chapter": 12
 },
 {
  "name": "NIST SP 800-30 risk assessment",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Risk management",
  "purpose": "Likelihood and impact vocabulary for risk definitions",
  "chapters": [
   "9c"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   83
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "AWS Application Discovery Service, Azure Migrate",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Migration",
  "purpose": "Discovery tools for resource inventory",
  "chapters": [
   "16"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   97,
   99
  ],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 7
 },
 {
  "name": "Pluralsight, KodeKloud",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Training",
  "purpose": "Learning platforms",
  "chapters": [
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 21
 },
 {
  "name": "Slack / Microsoft Teams",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Collaboration",
  "purpose": "Chat for agent teams",
  "chapters": [
   "20"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 18
 },
 {
  "name": "Obsidian with Git synchronisation",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Knowledge as code",
  "purpose": "Knowledge graph tool for the registry",
  "chapters": [
   "23"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "jq",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Scripting",
  "purpose": "JSON processing in evidence and migration scripts",
  "chapters": [
   "5",
   "15a",
   "16"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Kafka, PostgreSQL",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Technology selection",
  "purpose": "Technologies used as ADR examples",
  "chapters": [
   "4"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Assure once, comply many",
  "kind": "method",
  "id_prefix": null,
  "activity": "Compliance",
  "purpose": "Execute and evidence a control once, map it to many frameworks",
  "chapters": [
   "10",
   "11",
   "12",
   "15a",
   "D"
  ],
  "location": "10_policy_and_security.md#assure-once-comply-many-in-policy-design",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Mandatory architectural review gates via pull requests",
  "kind": "method",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Two-role approval of architecture changes in protected branches",
  "chapters": [
   "2",
   "3",
   "11"
  ],
  "location": "02_fundamental_principles.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   4
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Drift detection and prevention",
  "kind": "method",
  "id_prefix": null,
  "activity": "Operations",
  "purpose": "Scheduled terraform plan, kubectl diff and GitOps reconciliation to detect divergence",
  "chapters": [
   "2",
   "7"
  ],
  "location": "07_containerisation.md#detecting-and-preventing-drift",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 12
 },
 {
  "name": "Requirements as Code with traceability",
  "kind": "method",
  "id_prefix": null,
  "activity": "Requirements",
  "purpose": "Requirements as versioned YAML tested against infrastructure",
  "chapters": [
   "2",
   "13"
  ],
  "location": "02_fundamental_principles.md#requirements-as-code",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Documentation as Code",
  "kind": "method",
  "id_prefix": null,
  "activity": "Documentation",
  "purpose": "Documentation kept in version control and built in CI",
  "chapters": [
   "2",
   "22"
  ],
  "location": "02_fundamental_principles.md#documentation-as-code",
  "has_full_template": false,
  "language": null,
  "sources": [
   21
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "Architecture fitness functions (evolutionary architecture)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Architecture governance",
  "purpose": "Automated checks of workspace validity, coverage, tag conformance, fitness scores",
  "chapters": [
   "B"
  ],
  "location": "31_appendix_b_technical_architecture.md#evolutionary-architecture-fitness-functions",
  "has_full_template": false,
  "language": null,
  "sources": [
   35
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "ADR discovery, review and supersession workflow",
  "kind": "method",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "Bot-scaffolded ADRs, linted metadata, successor generation and review reminders",
  "chapters": [
   "4"
  ],
  "location": "04_adr.md#code-managed-discovery-review-and-supersession",
  "has_full_template": false,
  "language": null,
  "sources": [
   41
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Fail-fast feedback and progressive validation; progressive deployment",
  "kind": "method",
  "id_prefix": null,
  "activity": "Delivery",
  "purpose": "Staged pipeline validation and canary/blue-green rollout",
  "chapters": [
   "5"
  ],
  "location": "05_automation_devops_cicd.md#pipeline-design-principles",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "Security chaos engineering / Chaos Monkey experiments",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience testing",
  "purpose": "Codified failure-injection experiments with guardrails",
  "chapters": [
   "9c",
   "13"
  ],
  "location": "13_testing_strategies.md#chaos-monkey-experiments",
  "has_full_template": false,
  "language": null,
  "sources": [
   84,
   135
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 14
 },
 {
  "name": "Threat modelling from code",
  "kind": "method",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Regenerate models and attack trees from architecture code",
  "chapters": [
   "9",
   "9c"
  ],
  "location": "09c_risk_and_threat_as_code.md#automated-threat-modelling",
  "has_full_template": false,
  "language": null,
  "sources": [
   80,
   81
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 10
 },
 {
  "name": "Risk as code with exceptions",
  "kind": "method",
  "id_prefix": null,
  "activity": "Risk management",
  "purpose": "Validated risk documents; deployments gated on mitigation or time-bound exception",
  "chapters": [
   "9c"
  ],
  "location": "09c_risk_and_threat_as_code.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   83
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 7
 },
 {
  "name": "Playbooks as state machines, exercised continuously",
  "kind": "method",
  "id_prefix": null,
  "activity": "Incident response",
  "purpose": "Subscribe, Assess, Act, Document, with scheduled drills",
  "chapters": [
   "9c"
  ],
  "location": "09c_risk_and_threat_as_code.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   84
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 14
 },
 {
  "name": "Policy as Code operating model",
  "kind": "method",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Policies authored, tested and enforced in pipelines",
  "chapters": [
   "10",
   "11"
  ],
  "location": "10_policy_and_security.md#policy-as-code-operating-model",
  "has_full_template": false,
  "language": null,
  "sources": [
   2
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Testing policies with opa test",
  "kind": "method",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Unit-test Rego policies in CI",
  "chapters": [
   "11",
   "13"
  ],
  "location": "11_governance_as_code.md#testing-policies-with-opas-built-in-test-runner",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "Evidence lifecycle management",
  "kind": "method",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "Capture, package, store, index, retrieve, expire, control access",
  "chapters": [
   "15a"
  ],
  "location": "15a_evidence_as_code.md#evidence-lifecycle-management",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 5
 },
 {
  "name": "FinOps and commitment-based pricing",
  "kind": "method",
  "id_prefix": null,
  "activity": "Cost management",
  "purpose": "Cost governance, rightsizing, reserved instances and savings plans",
  "chapters": [
   "15"
  ],
  "location": "15_cost_optimization.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   93,
   95,
   98
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 17
 },
 {
  "name": "Migration approach: assessment, wave planning, lift-and-shift vs re-architecting, gradual codification",
  "kind": "method",
  "id_prefix": null,
  "activity": "Migration",
  "purpose": "Phased migration of unmanaged infrastructure",
  "chapters": [
   "16"
  ],
  "location": "16_migration.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   96,
   97,
   99
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "DORA delivery metrics",
  "kind": "method",
  "id_prefix": null,
  "activity": "Metrics",
  "purpose": "Deployment frequency, lead time and related metrics for measuring progress",
  "chapters": [
   "5",
   "17",
   "18",
   "20"
  ],
  "location": "17_organisational_change.md#measuring-sustainable-progress",
  "has_full_template": false,
  "language": null,
  "sources": [
   49
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 15
 },
 {
  "name": "Team Topologies team design",
  "kind": "method",
  "id_prefix": null,
  "activity": "Organisation",
  "purpose": "Platform and stream-aligned team patterns",
  "chapters": [
   "17",
   "18"
  ],
  "location": "18_team_structure.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   30
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 6
 },
 {
  "name": "Competency development loop",
  "kind": "method",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "Assessment, planning, learning, application, sharing, measurement",
  "chapters": [
   "18"
  ],
  "location": "18_team_structure.md#competency-domains-for-architecture-as-code-specialists",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 21
 },
 {
  "name": "Management as Code, Budgeting as Code, Competence Management as Code",
  "kind": "method",
  "id_prefix": null,
  "activity": "Management as code",
  "purpose": "Codified management policies, budgets and frameworks",
  "chapters": [
   "19"
  ],
  "location": "19_management_as_code.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 21
 },
 {
  "name": "Transparent decisions through Issues and Discussions",
  "kind": "method",
  "id_prefix": null,
  "activity": "Management as code",
  "purpose": "Issues as decision records, Discussions for deliberation",
  "chapters": [
   "19"
  ],
  "location": "19_management_as_code.md#achieving-transparency-through-issues-and-discussions",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Culture as Code and Knowledge as Code",
  "kind": "method",
  "id_prefix": null,
  "activity": "Culture",
  "purpose": "Team norms and lessons learned as versioned files",
  "chapters": [
   "23"
  ],
  "location": "23_soft_as_code_interplay.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 3
 },
 {
  "name": "Readiness assessment framework (four loops)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Adoption",
  "purpose": "Contextual discovery, capability baseline, cultural and economic diagnostics, remediation roadmap",
  "chapters": [
   "26a"
  ],
  "location": "26a_prerequisites_for_aac.md#readiness-assessment-framework",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 16
 },
 {
  "name": "Anti-pattern detection and remediation playbook",
  "kind": "method",
  "id_prefix": null,
  "activity": "Adoption",
  "purpose": "Leading indicators, feedback channels and a three-step remediation",
  "chapters": [
   "26b"
  ],
  "location": "26b_aac_anti_patterns.md#remediation-playbook",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 12
 },
 {
  "name": "Step-by-step adoption strategy",
  "kind": "method",
  "id_prefix": null,
  "activity": "Adoption",
  "purpose": "Six-step staged adoption from education to future readiness",
  "chapters": [
   "27"
  ],
  "location": "27_conclusion.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 3
 },
 {
  "name": "Four-phase blueprint roadmap (pilot, expand, govern, sustain)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Adoption",
  "purpose": "FINOS blueprint adoption roadmap",
  "chapters": [
   "C"
  ],
  "location": "32_finos_project_blueprint.md#implementation-roadmap-and-adoption-strategy",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 3
 },
 {
  "name": "Architecture as Code maturity assessment (radar)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Maturity assessment",
  "purpose": "Assess disciplines, find gaps, advance one level at a time",
  "chapters": [
   "D",
   "Maturity model"
  ],
  "location": "architecture_as_code_maturity_model.md#using-the-maturity-model",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 8
 },
 {
  "name": "Saga and event sourcing patterns",
  "kind": "method",
  "id_prefix": null,
  "activity": "Microservices",
  "purpose": "Patterns for distributed transactions",
  "chapters": [
   "8"
  ],
  "location": "08_microservices.md#data-management-across-domains",
  "has_full_template": false,
  "language": null,
  "sources": [
   36
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 9
 },
 {
  "name": "Zero Trust architecture",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Shift from perimeter to identity-based protection",
  "chapters": [
   "9"
  ],
  "location": "09_security_fundamentals.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   134
  ],
  "mention": "described",
  "notes": null,
  "book": 1,
  "tools_chapter": 4
 },
 {
  "name": "AI governance charter",
  "kind": "artefact",
  "id_prefix": "charter.yaml",
  "activity": "Orient",
  "purpose": "Declares scope, where controls are law versus group policy, who decides and what evidence must exist (Hansa Mutual charter, kind AIGovernanceCharter).",
  "chapters": [
   1
  ],
  "location": "01_introduction.md#the-two-organisations",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Usage-mode register",
  "kind": "artefact",
  "id_prefix": "usage-modes/*.yaml",
  "activity": "Orient",
  "purpose": "Register of use cases by usage mode (Mode 0-5), kept as YAML beside the AI inventory, with review cycle.",
  "chapters": [
   2
  ],
  "location": "02_llm_usage_modes.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Minimum control baseline per mode",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Orient",
  "purpose": "Table of minimum controls that apply to each usage mode.",
  "chapters": [
   2
  ],
  "location": "02_llm_usage_modes.md#minimum-control-baseline",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 0
 },
 {
  "name": "Regulatory position record",
  "kind": "artefact",
  "id_prefix": "RegulatoryPosition",
  "activity": "Regulatory mapping",
  "purpose": "Records each system's position on the EU AI Act map (role, risk class) in the architecture repository.",
  "chapters": [
   3
  ],
  "location": "03_eu_regulatory_landscape.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Declared intent and staff statement on AI tools",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Orient",
  "purpose": "Statement of intent and staff-facing statement on AI tools (Principle 1).",
  "chapters": [
   1,
   4
  ],
  "location": "01_introduction.md; 29_appendix_c_templates_and_tools.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix C; full template not clearly given in a code block",
  "book": 2,
  "tools_chapter": 0
 },
 {
  "name": "Principle set with executable verifications",
  "kind": "artefact",
  "id_prefix": "architecture/principles.yaml",
  "activity": "Orient",
  "purpose": "Principles declared as a PrincipleSet, each with an executable verification.",
  "chapters": [
   4
  ],
  "location": "04_fundamental_principles.md#the-principles-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "Principles for the use of AI (public statement)",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Orient",
  "purpose": "Plain-language principles document of Nordvik Region (version 1.2).",
  "chapters": [
   4
  ],
  "location": "04_fundamental_principles.md#the-principles-as-code",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 0
 },
 {
  "name": "Principle exception record",
  "kind": "artefact",
  "id_prefix": "EXC-*",
  "activity": "Orient",
  "purpose": "Time-limited, recorded exception to a principle (kind PrincipleException).",
  "chapters": [
   4
  ],
  "location": "04_fundamental_principles.md#trade-offs-between-principles",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "EXC-* also used for portfolio exceptions in Chapter 16",
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Use-case intake record",
  "kind": "artefact",
  "id_prefix": "UC-*",
  "activity": "Intake",
  "purpose": "Intake form for a proposed AI use case (UC-2026-017) with legal mandate note.",
  "chapters": [
   5
  ],
  "location": "05_prerequisites_for_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 12
 },
 {
  "name": "Legal mandate note",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Intake",
  "purpose": "Worked example confirming the legal mandate for a public-sector use case.",
  "chapters": [
   5
  ],
  "location": "05_prerequisites_for_ai.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 18
 },
 {
  "name": "Readiness scorecard",
  "kind": "artefact",
  "id_prefix": "readiness/scorecard.yaml",
  "activity": "Intake",
  "purpose": "Scores data, platform, governance, skills and culture readiness per use case, re-scored quarterly.",
  "chapters": [
   5
  ],
  "location": "05_prerequisites_for_ai.md#the-readiness-scorecard-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 12
 },
 {
  "name": "Model-origin assessment record",
  "kind": "artefact",
  "id_prefix": "GEO-*",
  "activity": "Sovereignty",
  "purpose": "Scores geopolitical risk of a model or provider across the five risk categories.",
  "chapters": [
   6
  ],
  "location": "06_geopolitics_and_model_origin.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 9
 },
 {
  "name": "Model-origin policy",
  "kind": "artefact",
  "id_prefix": "policies/model-origin-policy.yaml",
  "activity": "Sovereignty",
  "purpose": "Policy by data class and use case, evaluated by intake pipeline and AI gateway.",
  "chapters": [
   6
  ],
  "location": "06_geopolitics_and_model_origin.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "Exit and substitution plan",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Sovereignty / Procure",
  "purpose": "Plan that keeps a second source ready for a model or provider.",
  "chapters": [
   6,
   7
  ],
  "location": "06_geopolitics_and_model_origin.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 9
 },
 {
  "name": "Vendor assessment record",
  "kind": "artefact",
  "id_prefix": "vendors/assessments/*.yaml",
  "activity": "Procure",
  "purpose": "Schema for assessing a model provider against AI Act and contract criteria.",
  "chapters": [
   7
  ],
  "location": "07_procurement_and_vendors.md#the-vendor-assessment-schema",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 9
 },
 {
  "name": "Due-diligence questionnaire",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Procure",
  "purpose": "Questionnaire for vendors in a tender (benefits-triage, tender NR-2026-117).",
  "chapters": [
   7
  ],
  "location": "07_procurement_and_vendors.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 12
 },
 {
  "name": "Contract clause checklist",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Procure",
  "purpose": "Checklist of clauses on data use, model updates and audit rights for a model-supplier agreement.",
  "chapters": [
   7
  ],
  "location": "07_procurement_and_vendors.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 9
 },
 {
  "name": "Risk-tiering questionnaire",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Classify",
  "purpose": "Questionnaire walking the AI Act classification decision tree for a system.",
  "chapters": [
   8
  ],
  "location": "08_ai_risk_management.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Risk classification policy",
  "kind": "artefact",
  "id_prefix": "ai.risk.classification",
  "activity": "Classify",
  "purpose": "Rego policy that evaluates a use-case descriptor and returns a tier with reasons.",
  "chapters": [
   8
  ],
  "location": "08_ai_risk_management.md#encoding-the-tree-as-policy",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Use-case descriptor and policy decision",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Classify",
  "purpose": "JSON descriptor input and policy output for classification.",
  "chapters": [
   8
  ],
  "location": "08_ai_risk_management.md",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 12
 },
 {
  "name": "Risk register entry",
  "kind": "artefact",
  "id_prefix": "RISK-*",
  "activity": "Classify",
  "purpose": "Version-controlled risk register entries (e.g. RISK-2026-014, RISK-2026-031) with controls.",
  "chapters": [
   8
  ],
  "location": "08_ai_risk_management.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Substantial-modification rule",
  "kind": "artefact",
  "id_prefix": "ai.risk.substantial_modification",
  "activity": "Classify",
  "purpose": "Rego policy deciding whether a change to model or data is a substantial modification requiring reassessment.",
  "chapters": [
   8
  ],
  "location": "08_ai_risk_management.md",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Risk appetite statement",
  "kind": "artefact",
  "id_prefix": "risk_appetite",
  "activity": "Classify",
  "purpose": "Risk appetite expressed as data that gates consume.",
  "chapters": [
   8
  ],
  "location": "08_ai_risk_management.md#risk-appetite-statements-as-data",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Impact assessments as pipeline inputs",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Classify",
  "purpose": "DPIA/FRIA and related assessments as required inputs to the gate by risk tier.",
  "chapters": [
   8,
   10
  ],
  "location": "08_ai_risk_management.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "AI Decision Record",
  "kind": "artefact",
  "id_prefix": "AIDR-*",
  "activity": "Govern",
  "purpose": "Version-controlled record kept for every AI system: intended purpose, users, data, model, risk class, owner, retirement criteria; extends Nygard's ADR.",
  "chapters": [
   3,
   8,
   9,
   13,
   21
  ],
  "location": "08_ai_risk_management.md; 09_ai_governance_as_code.md#the-ai-inventory-and-the-register",
  "has_full_template": false,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Inventory entry (ai-system/benefits-triage) is the closest full example; no standalone AIDR template block",
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "AI governance policy",
  "kind": "artefact",
  "id_prefix": "governance/policy.md",
  "activity": "Govern",
  "purpose": "Top-management AI policy as one repository document, mapped to ISO/IEC 42001 clause 5.2.",
  "chapters": [
   9
  ],
  "location": "09_ai_governance_as_code.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Model approval policy",
  "kind": "artefact",
  "id_prefix": "ai.governance.model_approval",
  "activity": "Govern",
  "purpose": "Rego policy: model version approved only if model card complete, evaluation meets tier thresholds, licence allowed.",
  "chapters": [
   9
  ],
  "location": "09_ai_governance_as_code.md",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "Deployment policy",
  "kind": "artefact",
  "id_prefix": "ai.governance.deployment",
  "activity": "Govern",
  "purpose": "Rego policy evaluated in CI: gateway references approved model, guardrails and logging on.",
  "chapters": [
   9
  ],
  "location": "09_ai_governance_as_code.md",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 16
 },
 {
  "name": "Data handling standard",
  "kind": "artefact",
  "id_prefix": "data_handling_standard",
  "activity": "Govern",
  "purpose": "Data-use rules by classification as machine-readable standard.",
  "chapters": [
   9
  ],
  "location": "09_ai_governance_as_code.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "AI system inventory entry",
  "kind": "artefact",
  "id_prefix": "ai-system/*",
  "activity": "Govern",
  "purpose": "Inventory record per AI system (e.g. ai-system/benefits-triage).",
  "chapters": [
   9
  ],
  "location": "09_ai_governance_as_code.md#the-ai-inventory-and-the-register",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Acceptable-use policy for staff",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Govern",
  "purpose": "Plain-language rules for staff on using AI (Nordvik Region).",
  "chapters": [
   9
  ],
  "location": "09_ai_governance_as_code.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "Waiver record",
  "kind": "artefact",
  "id_prefix": "waiver",
  "activity": "Govern",
  "purpose": "Time-limited waiver of a governance rule as a record.",
  "chapters": [
   9
  ],
  "location": "09_ai_governance_as_code.md#exceptions-and-waivers-as-records",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "System-level transparency record",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Assess impact",
  "purpose": "JSON record of system-level transparency information (Article 13 style).",
  "chapters": [
   10
  ],
  "location": "10_trustworthy_ai.md",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Transparency notice to affected persons",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Assess impact",
  "purpose": "Plain-language notice to residents about automated triage.",
  "chapters": [
   10
  ],
  "location": "10_trustworthy_ai.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Fairness evaluation configuration",
  "kind": "artefact",
  "id_prefix": "fairness_evaluation",
  "activity": "Assess impact",
  "purpose": "Fairness metrics with thresholds and slices as configuration.",
  "chapters": [
   10
  ],
  "location": "10_trustworthy_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 22
 },
 {
  "name": "Human-oversight design specification",
  "kind": "artefact",
  "id_prefix": "oversight_design",
  "activity": "Assess impact",
  "purpose": "Specification of oversight roles, override and information (Article 14).",
  "chapters": [
   10
  ],
  "location": "10_trustworthy_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Fundamental rights impact assessment (FRIA)",
  "kind": "artefact",
  "id_prefix": "FRIA-*",
  "activity": "Assess impact",
  "purpose": "FRIA outline for a public-sector system, with FRIA-2026-002 as example.",
  "chapters": [
   10,
   17
  ],
  "location": "10_trustworthy_ai.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "FRIA summary for publication",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Be transparent",
  "purpose": "Publishable summary of the FRIA.",
  "chapters": [
   17
  ],
  "location": "17_public_sector_ai.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Evidence manifest",
  "kind": "artefact",
  "id_prefix": "EvidenceManifest",
  "activity": "Assure",
  "purpose": "Manifest binding a system's evidence artefacts (tests, logs, approvals) for signing.",
  "chapters": [
   11
  ],
  "location": "11_assurance_and_audit.md#the-evidence-manifest",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "Model card and system card",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Assure",
  "purpose": "Cards recording intended use, evaluation and limits of a model or system.",
  "chapters": [
   4,
   11
  ],
  "location": "11_assurance_and_audit.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": "Worked example is described; no full code block",
  "book": 2,
  "tools_chapter": 0
 },
 {
  "name": "Evidence pack index",
  "kind": "artefact",
  "id_prefix": "evidence_pack",
  "activity": "Assure",
  "purpose": "Index of the evidence pack handed to an auditor.",
  "chapters": [
   11
  ],
  "location": "11_assurance_and_audit.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "Audit test procedure",
  "kind": "artefact",
  "id_prefix": "TP-AI-*",
  "activity": "Assure",
  "purpose": "Internal audit test procedure (TP-AI-014, caseworker override with recorded reason).",
  "chapters": [
   11
  ],
  "location": "11_assurance_and_audit.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Deployer obligations checklist",
  "kind": "artefact",
  "id_prefix": "deployer_obligations",
  "activity": "Assure",
  "purpose": "Checklist of deployer obligations under the AI Act as data.",
  "chapters": [
   11
  ],
  "location": "11_assurance_and_audit.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 16
 },
 {
  "name": "Incident classification record",
  "kind": "artefact",
  "id_prefix": "incident_classification",
  "activity": "Assure",
  "purpose": "Classification of incidents for AI Act serious-incident and DORA reporting.",
  "chapters": [
   11
  ],
  "location": "11_assurance_and_audit.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 13
 },
 {
  "name": "Engagement charter",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Organise",
  "purpose": "Charter for AI enablement team working with a product team.",
  "chapters": [
   12
  ],
  "location": "12_organisational_design.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 0
 },
 {
  "name": "Group entity profile",
  "kind": "artefact",
  "id_prefix": "organisation/group-entities.yaml",
  "activity": "Organise",
  "purpose": "Entity profiles of a group with national differences.",
  "chapters": [
   12
  ],
  "location": "12_organisational_design.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "Shared-platform service agreement",
  "kind": "artefact",
  "id_prefix": "agreements/ai-platform/*.yaml",
  "activity": "Organise",
  "purpose": "Agreement between platform owner and municipality for shared AI platform.",
  "chapters": [
   12
  ],
  "location": "12_organisational_design.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 6
 },
 {
  "name": "AI team topology",
  "kind": "artefact",
  "id_prefix": "organisation/ai-team-topology.yaml",
  "activity": "Organise",
  "purpose": "Topology of platform, enabling and stream-aligned teams as data.",
  "chapters": [
   12
  ],
  "location": "12_organisational_design.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 6
 },
 {
  "name": "Decision tiers",
  "kind": "artefact",
  "id_prefix": "governance/decision-tiers.yaml",
  "activity": "Decide",
  "purpose": "Escalation matrix by risk tier.",
  "chapters": [
   13
  ],
  "location": "13_decision_forums_and_governance_bodies.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Forum terms of reference",
  "kind": "artefact",
  "id_prefix": "governance/forums/*.yaml",
  "activity": "Decide",
  "purpose": "Mandate, quorum, cadence and evidence for a governance forum (AI governance board).",
  "chapters": [
   13,
   16
  ],
  "location": "13_decision_forums_and_governance_bodies.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 18
 },
 {
  "name": "Decision record (minute)",
  "kind": "artefact",
  "id_prefix": "DEC-*",
  "activity": "Decide",
  "purpose": "Filled-in decision minute (DEC-2026-031).",
  "chapters": [
   13,
   "16A"
  ],
  "location": "13_decision_forums_and_governance_bodies.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 4
 },
 {
  "name": "Role description (AI system owner)",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Build competence",
  "purpose": "Role description template for the AI system owner.",
  "chapters": [
   14
  ],
  "location": "14_competence_and_roles.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 21
 },
 {
  "name": "Competence record",
  "kind": "artefact",
  "id_prefix": "competence/records/*.yaml",
  "activity": "Build competence",
  "purpose": "Per-employee AI literacy and competence record.",
  "chapters": [
   14
  ],
  "location": "14_competence_and_roles.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 21
 },
 {
  "name": "AI competence framework",
  "kind": "artefact",
  "id_prefix": "competence/ai-competence-framework.yaml",
  "activity": "Build competence",
  "purpose": "Framework of competence levels and learning paths.",
  "chapters": [
   14
  ],
  "location": "14_competence_and_roles.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 21
 },
 {
  "name": "Consultation commitments",
  "kind": "artefact",
  "id_prefix": "consultation/*-commitments.yaml",
  "activity": "Adopt",
  "purpose": "Commitments made to employee representatives, tracked as data.",
  "chapters": [
   15
  ],
  "location": "15_change_and_adoption.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 22
 },
 {
  "name": "Adoption dashboard definition",
  "kind": "artefact",
  "id_prefix": "dashboards/adoption/*.yaml",
  "activity": "Adopt",
  "purpose": "Metrics definition for measuring adoption of a system.",
  "chapters": [
   15
  ],
  "location": "15_change_and_adoption.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "Portfolio use-case entry",
  "kind": "artefact",
  "id_prefix": "UC-*",
  "activity": "Steer",
  "purpose": "Version-controlled use-case register entry with value hypothesis.",
  "chapters": [
   16
  ],
  "location": "16_management_as_code_for_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 12
 },
 {
  "name": "Portfolio exception record",
  "kind": "artefact",
  "id_prefix": "EXC-*",
  "activity": "Steer",
  "purpose": "Exception when a funding or readiness criterion is not met.",
  "chapters": [
   16
  ],
  "location": "16_management_as_code_for_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Benefits record",
  "kind": "artefact",
  "id_prefix": "portfolio/benefits/*",
  "activity": "Steer",
  "purpose": "Quarterly benefit tracking record against the value hypothesis.",
  "chapters": [
   16
  ],
  "location": "16_management_as_code_for_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 0
 },
 {
  "name": "Decision-rights matrix",
  "kind": "artefact",
  "id_prefix": "decision_rights",
  "activity": "Steer",
  "purpose": "Decision rights of the governance board by risk class.",
  "chapters": [
   16
  ],
  "location": "16_management_as_code_for_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "AI risk report to the management body",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Steer",
  "purpose": "Periodic risk report to the management body.",
  "chapters": [
   16
  ],
  "location": "16_management_as_code_for_ai.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Entity reporting profile",
  "kind": "artefact",
  "id_prefix": "reporting/profiles/entities.yaml",
  "activity": "Steer",
  "purpose": "Reporting profile per group entity.",
  "chapters": [
   16
  ],
  "location": "16_management_as_code_for_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Investment and value record",
  "kind": "artefact",
  "id_prefix": "portfolio/value/*.yaml",
  "activity": "Steer (economics)",
  "purpose": "Cost envelope, stop conditions and value units per use case.",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 19
 },
 {
  "name": "Consumption forecast",
  "kind": "artefact",
  "id_prefix": "portfolio/forecasts/*.yaml",
  "activity": "Steer (economics)",
  "purpose": "Forecast of AI consumption with stated assumptions.",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "Allocation map and showback",
  "kind": "artefact",
  "id_prefix": "finops/allocation/*.yaml",
  "activity": "Steer (economics)",
  "purpose": "Maps consumption to teams, applications and cost centres for showback/chargeback.",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 17
 },
 {
  "name": "Spend-stop record",
  "kind": "artefact",
  "id_prefix": "SPD-*",
  "activity": "Steer (economics)",
  "purpose": "Record of a spend alert or stop condition (SPD-2026-007, agent loop).",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 19
 },
 {
  "name": "Option comparison",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Steer (economics)",
  "purpose": "Fair comparison of build, buy, reuse, non-AI and do-nothing before renewal.",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": "Worked example is a table, not a code block",
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "Economics decision table",
  "kind": "artefact",
  "id_prefix": "economics-decisions.yaml",
  "activity": "Steer (economics)",
  "purpose": "Decision table of the governance forum for renewal/retirement outcomes.",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Team consumption envelope",
  "kind": "artefact",
  "id_prefix": "finops/envelopes/*",
  "activity": "Steer (economics)",
  "purpose": "Consumption envelope for agentic work tools per team.",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 17
 },
 {
  "name": "Public appraisal summary",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Steer (economics)",
  "purpose": "Appraisal summary for an elected committee on use of public money.",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 0
 },
 {
  "name": "Legal-basis / algorithm descriptor",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Be transparent",
  "purpose": "JSON record of legal basis for administrative use of AI.",
  "chapters": [
   17
  ],
  "location": "17_public_sector_ai.md",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Algorithm register entry (public)",
  "kind": "artefact",
  "id_prefix": "NR-ALG-*",
  "activity": "Be transparent",
  "purpose": "Public-facing description and structured entry for an algorithm register.",
  "chapters": [
   17
  ],
  "location": "17_public_sector_ai.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Agent permission manifest",
  "kind": "artefact",
  "id_prefix": "agents/*/permissions.yaml",
  "activity": "Agent control",
  "purpose": "Budget and tool permissions of an agent, before and after hardening.",
  "chapters": [
   18,
   20
  ],
  "location": "18_case_studies.md; 20_anti_patterns.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 20
 },
 {
  "name": "Agent environment assessment",
  "kind": "artefact",
  "id_prefix": "agent_environment_assessment",
  "activity": "Agent control",
  "purpose": "Self-assessment of agent environments against the escape path of the incident.",
  "chapters": [
   19
  ],
  "location": "19_openai_hugging_face_incident.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 18
 },
 {
  "name": "Agent stop policy",
  "kind": "artefact",
  "id_prefix": "agent_stop_policy",
  "activity": "Agent control",
  "purpose": "Decision-rights policy for pausing or stopping agent work.",
  "chapters": [
   19
  ],
  "location": "19_openai_hugging_face_incident.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 19
 },
 {
  "name": "Anti-pattern fitness functions",
  "kind": "artefact",
  "id_prefix": "anti-pattern-fitness-functions.yaml",
  "activity": "Learn",
  "purpose": "Suite of fitness functions that detect the catalogued anti-patterns.",
  "chapters": [
   20
  ],
  "location": "20_anti_patterns.md#detecting-anti-patterns-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "Anti-pattern catalogue",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Learn",
  "purpose": "Catalogue of sixteen named anti-patterns (e.g. pilot purgatory, shadow AI, governance theatre).",
  "chapters": [
   20
  ],
  "location": "20_anti_patterns.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "Retirement record",
  "kind": "artefact",
  "id_prefix": "portfolio/retirements/*.yaml",
  "activity": "Learn",
  "purpose": "Steps for retiring an AI system.",
  "chapters": [
   21
  ],
  "location": "21_best_practices.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "Practice checklist",
  "kind": "artefact",
  "id_prefix": "ai-practice-checklist.yaml",
  "activity": "Learn",
  "purpose": "Practices by lifecycle stage as a checklist, checkable as code.",
  "chapters": [
   21
  ],
  "location": "21_best_practices.md#the-practice-checklist-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "Horizon register",
  "kind": "artefact",
  "id_prefix": "horizon-register.yaml",
  "activity": "Look ahead",
  "purpose": "Register of developments with horizon (observable, expected, speculation), affected decision and review date.",
  "chapters": [
   22,
   24
  ],
  "location": "22_future_trends.md#codifying-the-outlook-a-horizon-register",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 23
 },
 {
  "name": "Governance roadmap",
  "kind": "artefact",
  "id_prefix": "roadmaps/*.yaml",
  "activity": "Steer",
  "purpose": "Roadmaps 2026-2028 for Nordvik Region and Hansa Mutual.",
  "chapters": [
   23
  ],
  "location": "23_conclusions_for_nordvik_and_hansa.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Programme plan",
  "kind": "artefact",
  "id_prefix": "ProgrammePlan",
  "activity": "Steer",
  "purpose": "First/next/later plan for the two organisations.",
  "chapters": [
   25
  ],
  "location": "25_conclusion.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 0
 },
 {
  "name": "EU AI Act obligation mapping",
  "kind": "artefact",
  "id_prefix": "governance/aiact/obligation-mapping.yaml",
  "activity": "Assure",
  "purpose": "Maps AI Act obligations to repository artefacts, evidence and owners for providers, deployers, GPAI providers and Article 50.",
  "chapters": [
   "Appendix A"
  ],
  "location": "27_appendix_a_ai_act_mapping.md#the-mapping-as-yaml",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Maturity self-assessment",
  "kind": "artefact",
  "id_prefix": "governance/maturity/assessment-*.yaml",
  "activity": "Assess maturity",
  "purpose": "Self-assessment record over eight dimensions and five levels.",
  "chapters": [
   "Appendix B"
  ],
  "location": "28_appendix_b_maturity_model.md#self-assessment-template",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Learning path",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Build competence",
  "purpose": "Learning path listed in Appendix C.",
  "chapters": [
   14
  ],
  "location": "14_competence_and_roles.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix C; checked only as part of competence framework",
  "book": 2,
  "tools_chapter": 21
 },
 {
  "name": "Champions charter",
  "kind": "artefact",
  "id_prefix": "—",
  "activity": "Adopt",
  "purpose": "Charter for adoption champions, listed in Appendix C.",
  "chapters": [
   15
  ],
  "location": "15_change_and_adoption.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix C; no separate template found",
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "AI Act classification decision tree",
  "kind": "method",
  "id_prefix": null,
  "activity": "Classify",
  "purpose": "Stepwise decision tree to place a system in an AI Act risk class and role.",
  "chapters": [
   8
  ],
  "location": "08_ai_risk_management.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Maturity model (five levels, eight dimensions)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assess maturity",
  "purpose": "Self-assessment of governance maturity with moves from level to level.",
  "chapters": [
   "Appendix B"
  ],
  "location": "28_appendix_b_maturity_model.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Governance gates in the pipeline",
  "kind": "method",
  "id_prefix": null,
  "activity": "Govern",
  "purpose": "Intake, approval, deployment and operation gates enforced by policy in CI.",
  "chapters": [
   9
  ],
  "location": "09_ai_governance_as_code.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Mode drift check",
  "kind": "method",
  "id_prefix": null,
  "activity": "Orient",
  "purpose": "Detecting when a use case moves to another usage mode and re-applying the baseline.",
  "chapters": [
   2
  ],
  "location": "02_llm_usage_modes.md#mode-drift",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 12
 },
 {
  "name": "Model-origin geopolitical risk assessment",
  "kind": "method",
  "id_prefix": null,
  "activity": "Sovereignty",
  "purpose": "Assess five categories of geopolitical risk of a model or provider.",
  "chapters": [
   6
  ],
  "location": "06_geopolitics_and_model_origin.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Investment gate lifecycle",
  "kind": "method",
  "id_prefix": null,
  "activity": "Steer (economics)",
  "purpose": "Gate sequence from intake to renewal or retirement with required evidence per gate.",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Setting a cost envelope and stop conditions",
  "kind": "method",
  "id_prefix": null,
  "activity": "Steer (economics)",
  "purpose": "Practical guide to cost envelopes and stop conditions written at intake.",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 19
 },
 {
  "name": "Showback before chargeback",
  "kind": "method",
  "id_prefix": null,
  "activity": "Steer (economics)",
  "purpose": "Report consumption per team before charging it.",
  "chapters": [
   "16A"
  ],
  "location": "16a_governing_ai_economics.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Tabletop exercise built on the OpenAI / Hugging Face incident timeline",
  "kind": "method",
  "id_prefix": null,
  "activity": "Incident learning",
  "purpose": "Exercise using the incident's timeline to test own decisions.",
  "chapters": [
   19
  ],
  "location": "19_openai_hugging_face_incident.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 14
 },
 {
  "name": "Internal algorithmic audit",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assure",
  "purpose": "Internal audit of an AI system using test procedures and evidence pack.",
  "chapters": [
   11
  ],
  "location": "11_assurance_and_audit.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Fitness functions for governance",
  "kind": "method",
  "id_prefix": null,
  "activity": "Learn",
  "purpose": "Executable checks that detect anti-patterns or principle violations.",
  "chapters": [
   4,
   20
  ],
  "location": "20_anti_patterns.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Observable, expected, speculation horizons",
  "kind": "method",
  "id_prefix": null,
  "activity": "Look ahead",
  "purpose": "Label each outlook statement with one of three horizons.",
  "chapters": [
   22
  ],
  "location": "22_future_trends.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 23
 },
 {
  "name": "Forum structure and decision-rights design",
  "kind": "method",
  "id_prefix": null,
  "activity": "Decide",
  "purpose": "Practical guides to designing forums and a decision-rights matrix by risk class.",
  "chapters": [
   13
  ],
  "location": "13_decision_forums_and_governance_bodies.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Kotter's eight steps applied to AI",
  "kind": "method",
  "id_prefix": null,
  "activity": "Adopt",
  "purpose": "Leading-change model with AI-specific pitfalls.",
  "chapters": [
   15
  ],
  "location": "15_change_and_adoption.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   75
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "Diffusion of innovation",
  "kind": "method",
  "id_prefix": null,
  "activity": "Adopt",
  "purpose": "Adopter categories applied to AI rollouts.",
  "chapters": [
   15
  ],
  "location": "15_change_and_adoption.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   76
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "Westrum organisational culture typology",
  "kind": "method",
  "id_prefix": null,
  "activity": "Adopt",
  "purpose": "Typology of generative culture used for psychological safety.",
  "chapters": [
   15
  ],
  "location": "15_change_and_adoption.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   58
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "Employee consultation as design review",
  "kind": "method",
  "id_prefix": null,
  "activity": "Adopt",
  "purpose": "Turn works-council consultation into a design review with recorded commitments.",
  "chapters": [
   15
  ],
  "location": "15_change_and_adoption.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 3
 },
 {
  "name": "Architecture decision record (Nygard)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Govern",
  "purpose": "Short decision record that AI Decision Records extend.",
  "chapters": [
   3,
   13,
   16
  ],
  "location": "13_decision_forums_and_governance_bodies.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   78
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 4
 },
 {
  "name": "Conway's law applied to AI",
  "kind": "method",
  "id_prefix": null,
  "activity": "Organise",
  "purpose": "Align team structure with intended AI architecture.",
  "chapters": [
   12
  ],
  "location": "12_organisational_design.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   59
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 4
 },
 {
  "name": "Team Topologies",
  "kind": "method",
  "id_prefix": null,
  "activity": "Organise",
  "purpose": "Stream-aligned, platform and enabling team types applied to AI.",
  "chapters": [
   12,
   14
  ],
  "location": "12_organisational_design.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   69
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 6
 },
 {
  "name": "Open Policy Agent / Rego",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Policy engine and language used for risk classification, approval and deployment policies.",
  "chapters": [
   8,
   9
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   40
  ],
  "mention": "described",
  "notes": "Same engine as Architecture as Code",
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "Git repository and pull-request review",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Governance as code",
  "purpose": "Governance repository with reviewed pull requests as change control.",
  "chapters": [
   9,
   16,
   29
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "ISO/IEC 42001",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Management system",
  "purpose": "AI management system standard codified as repository artefacts.",
  "chapters": [
   9,
   12,
   13
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   32
  ],
  "mention": "described",
  "notes": "Standard rather than software",
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "ISO/IEC 23894",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Risk management",
  "purpose": "AI risk management guidance.",
  "chapters": [
   8
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   33
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "ISO/IEC 42005",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Impact assessment",
  "purpose": "AI system impact assessment standard.",
  "chapters": [
   8
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   35
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "NIST AI RMF 1.0 and Generative AI Profile",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Risk management",
  "purpose": "Framework for AI risk functions; generative profile.",
  "chapters": [
   8,
   21
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   36,
   37
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "ALTAI (Assessment List for Trustworthy AI)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Impact assessment",
  "purpose": "Self-assessment questionnaire from the seven trustworthy-AI requirements.",
  "chapters": [
   5,
   8,
   10
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   13
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "UNESCO Readiness Assessment Methodology and Ethical Impact Assessment",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Readiness",
  "purpose": "UNESCO tools for readiness and ethics impact assessment.",
  "chapters": [
   5,
   10,
   "Appendix C"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   30,
   31
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 7
 },
 {
  "name": "Model cards",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Documentation",
  "purpose": "Model card reporting format (Mitchell et al.).",
  "chapters": [
   4,
   11
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   46
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 8
 },
 {
  "name": "Datasheets for datasets",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Documentation",
  "purpose": "Dataset documentation format (Gebru et al.).",
  "chapters": [
   4
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   47
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 4
 },
 {
  "name": "CycloneDX ML-BOM",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "Machine learning bill of materials format for models.",
  "chapters": [
   6,
   18,
   27
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   43
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "SLSA and Sigstore",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "Signed provenance for models and datasets.",
  "chapters": [
   11,
   21
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   45
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 5
 },
 {
  "name": "OpenTelemetry (GenAI semantic conventions)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Observability",
  "purpose": "Common vocabulary for traces of generative AI calls.",
  "chapters": [
   11,
   21
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   41
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 15
 },
 {
  "name": "MITRE ATLAS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Catalogue of adversarial AI techniques for threat models.",
  "chapters": [
   21
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   42
  ],
  "mention": "passing",
  "notes": null,
  "book": 2,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for LLM Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Catalogue of LLM risks to start a threat model.",
  "chapters": [
   2,
   10,
   "16A",
   21
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   38
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for Agentic Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Catalogue naming loop amplification and related agent risks.",
  "chapters": [
   "16A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   84
  ],
  "mention": "passing",
  "notes": null,
  "book": 2,
  "tools_chapter": 10
 },
 {
  "name": "FinOps framework and FinOps for AI",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Economics",
  "purpose": "Cost-management practice for AI consumption.",
  "chapters": [
   "16A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   207,
   208
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 17
 },
 {
  "name": "Software Carbon Intensity specification",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Sustainability",
  "purpose": "Carbon accounting for AI workloads.",
  "chapters": [
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   44
  ],
  "mention": "passing",
  "notes": null,
  "book": 2,
  "tools_chapter": 17
 },
 {
  "name": "Mermaid",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Diagram language for figures.",
  "chapters": [
   "Appendix C"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Repository diagram toolchain",
  "book": 2,
  "tools_chapter": 4
 },
 {
  "name": "Open Source AI Definition",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Open weights",
  "purpose": "Definition used to judge open-weight models.",
  "chapters": [
   6,
   7
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   39
  ],
  "mention": "described",
  "notes": null,
  "book": 2,
  "tools_chapter": 6
 },
 {
  "name": "AI gateway and model registry",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Platform",
  "purpose": "Platform components that enforce approval and logging; generic, no product named.",
  "chapters": [
   6,
   9
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Generic components",
  "book": 2,
  "tools_chapter": 6
 },
 {
  "name": "scripts/check_mermaid_diagrams.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Verifies rendered diagrams match Mermaid sources.",
  "chapters": [
   "Appendix C"
  ],
  "location": "scripts/check_mermaid_diagrams.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix C; also repository publishing tooling",
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/audit_references.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Audits inline citations against 30_references.md.",
  "chapters": [
   "Appendix C"
  ],
  "location": "scripts/audit_references.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix C; also repository publishing tooling",
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Verifies cited URLs and ISBNs.",
  "chapters": [
   "Appendix C"
  ],
  "location": "scripts/verify_sources.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix C; also repository publishing tooling",
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_doc_numbering.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Checks chapter numbering.",
  "chapters": [
   "Appendix C"
  ],
  "location": "scripts/check_doc_numbering.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix C; also repository publishing tooling",
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "tests/ (pytest suites)",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Pytest suites for completeness, consistency, clarity and reference integrity, plus series-order tests.",
  "chapters": [
   "Appendix C"
  ],
  "location": "tests/",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix C; also repository publishing tooling",
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/format_citations.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Keeps inline citations in the (ID, author, year) form linked to the bibliography.",
  "chapters": [],
  "location": "scripts/format_citations.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/renumber_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Merges duplicate bibliography entries and renumbers sources 1..N.",
  "chapters": [],
  "location": "scripts/renumber_sources.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/update_reference_backlinks.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Refreshes Referenced-in annotations in the bibliography.",
  "chapters": [],
  "location": "scripts/update_reference_backlinks.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/build_sources_section.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Writes a chapter's Sources list from the bibliography.",
  "chapters": [],
  "location": "scripts/build_sources_section.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_branding.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Validates diagrams against brand guidelines.",
  "chapters": [],
  "location": "scripts/validate_diagram_branding.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_elements.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Checks diagrams have at most 15 elements.",
  "chapters": [],
  "location": "scripts/validate_diagram_elements.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_figure_captions.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Checks figure captions start with Figure.",
  "chapters": [],
  "location": "scripts/validate_figure_captions.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_heading_capitalization.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Checks headings start with uppercase.",
  "chapters": [],
  "location": "scripts/validate_heading_capitalization.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/analyze_chapter_lengths.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Measures chapter length variance.",
  "chapters": [],
  "location": "scripts/analyze_chapter_lengths.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_environment.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Verifies toolchain versions match locked versions.",
  "chapters": [],
  "location": "scripts/verify_environment.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "scripts/navigation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Resolves ordered chapter list from mkdocs.yml.",
  "chapters": [],
  "location": "scripts/navigation.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "generate_book.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates manuscript content from chapter list.",
  "chapters": [],
  "location": "generate_book.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "generate_presentation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates PowerPoint presentation from chapters.",
  "chapters": [],
  "location": "generate_presentation.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "generate_whitepapers.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates whitepaper HTML from chapters.",
  "chapters": [],
  "location": "generate_whitepapers.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "build_all_orchestrator.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Orchestrates building all deliverables.",
  "chapters": [],
  "location": "build_all_orchestrator.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "docs/build_book.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds PDF, EPUB and DOCX with Pandoc.",
  "chapters": [],
  "location": "docs/build_book.sh",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 2,
  "tools_chapter": null
 },
 {
  "name": "AI Decision Record template (Markdown)",
  "kind": "artefact",
  "id_prefix": "AIDR-*",
  "activity": "Design / governance",
  "purpose": "Records an architectural decision about an AI system, extending the ADR with intended purpose, data, evaluation, oversight and retirement fields.",
  "chapters": [
   5,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#05_code_adr",
  "has_full_template": true,
  "language": "md",
  "sources": [
   41,
   42
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 7
 },
 {
  "name": "AI Decision Record as structured data",
  "kind": "artefact",
  "id_prefix": "AIDR-*",
  "activity": "Design / governance",
  "purpose": "Machine-readable YAML form of the AIDR that pipelines and the generated decision index can read.",
  "chapters": [
   5,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#05_code_aidr",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 7
 },
 {
  "name": "Data contract for an AI data product",
  "kind": "artefact",
  "id_prefix": "contracts/*.yaml",
  "activity": "Data architecture",
  "purpose": "Declares schema, quality, freshness, purpose and access terms between a data producer and an AI consumer.",
  "chapters": [
   6,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#06_code_contract",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   76
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 9
 },
 {
  "name": "Model promotion pipeline with evaluation gates",
  "kind": "artefact",
  "id_prefix": "model-promotion.yml",
  "activity": "Build / MLOps",
  "purpose": "GitHub Actions workflow that promotes a model only when evaluation, security and approval gates pass and emits an evidence manifest.",
  "chapters": [
   7,
   8,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#07_code_pipeline",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 19
 },
 {
  "name": "Versioned system prompt with metadata",
  "kind": "artefact",
  "id_prefix": "prompts/*.md",
  "activity": "Build / prompt management",
  "purpose": "System prompt stored in the repository with YAML front matter for version, owner, linked AIDR and evaluation.",
  "chapters": [
   7,
   8,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#07_code_prompt",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 7
 },
 {
  "name": "Evidence manifest",
  "kind": "artefact",
  "id_prefix": "evidence/*/manifest.yaml",
  "activity": "Build / evidence",
  "purpose": "Manifest assembled by the promotion pipeline that binds model, data, prompt, evaluation results and approvals into one auditable release record.",
  "chapters": [
   7,
   8,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#07_code_evidence",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   130
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Agent permission manifest and tool allow-list",
  "kind": "artefact",
  "id_prefix": "agents/*.yaml",
  "activity": "Agent governance",
  "purpose": "Deny-by-default declaration of the tools, data, identity, budgets and approval gates an agent may use.",
  "chapters": [
   11,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#11_code_agent",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "Agent skill for reviewing AI Decision Records",
  "kind": "artefact",
  "id_prefix": "SKILL.md",
  "activity": "Agent governance",
  "purpose": "Reusable agent skill with steps and boundaries for reviewing an AIDR.",
  "chapters": [
   11,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#11_code_skill",
  "has_full_template": true,
  "language": "md",
  "sources": [
   146,
   147
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 7
 },
 {
  "name": "Review agent configuration with least privilege and approval gates",
  "kind": "artefact",
  "id_prefix": "agents/*.yaml",
  "activity": "Agent governance",
  "purpose": "Complete configuration of a review agent with scoped permissions, approvals and audit settings.",
  "chapters": [
   11,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#11_code_agentconfig",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Evaluation suite definition",
  "kind": "artefact",
  "id_prefix": "evals/suites/*.yaml",
  "activity": "Evaluation",
  "purpose": "Declares datasets, metrics, thresholds and judge settings that turn the evaluation pyramid into a pipeline gate.",
  "chapters": [
   20,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#20_code_evalsuite",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Drift detection job",
  "kind": "artefact",
  "id_prefix": "DriftDetectionJob",
  "activity": "Observability",
  "purpose": "Python job comparing a reference and a current window per feature and raising signals above thresholds.",
  "chapters": [
   21,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#21_code_drift",
  "has_full_template": true,
  "language": "python",
  "sources": [
   69
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "Cost-aware model routing policy",
  "kind": "artefact",
  "id_prefix": "policies/routing/*.yaml",
  "activity": "Cost / gateway",
  "purpose": "Routes requests across model tiers by task, risk and budget at the AI gateway.",
  "chapters": [
   22,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md#22_code_routing",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 17
 },
 {
  "name": "Platform onboarding declaration",
  "kind": "artefact",
  "id_prefix": "systems/*/onboarding.yaml",
  "activity": "Intake",
  "purpose": "Declares a lower-risk system's mode, data, owner and controls so the platform can onboard it.",
  "chapters": [
   1
  ],
  "location": "01_introduction.md#the-two-organisations",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Worked example, Nordvik Region",
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Mode baseline as platform policy",
  "kind": "artefact",
  "id_prefix": "platform/mode-baselines.yaml",
  "activity": "Platform baseline",
  "purpose": "Per-usage-mode minimum platform controls (gateway, identity, isolation, logging, data boundaries).",
  "chapters": [
   2
  ],
  "location": "02_llm_usage_modes.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Use-case to control-point mapping (practical guide)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Intake",
  "purpose": "Maps each use case to its usage mode and platform control point.",
  "chapters": [
   2
  ],
  "location": "02_llm_usage_modes.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "Platform requirements catalogue",
  "kind": "artefact",
  "id_prefix": "PlatformRequirementsCatalogue",
  "activity": "Regulatory requirements",
  "purpose": "Entries naming an article, control, applicability condition and release gate that the pipeline reads.",
  "chapters": [
   3
  ],
  "location": "03_regulatory_requirements.md#the-platform-requirements-catalogue",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Excerpt; book says full catalogue runs to some sixty entries",
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Requirements-to-capability matrix",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Regulatory requirements",
  "purpose": "Table mapping high-risk requirements to platform capabilities.",
  "chapters": [
   3
  ],
  "location": "03_regulatory_requirements.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "Declarative reference architecture model",
  "kind": "artefact",
  "id_prefix": "ReferenceArchitecture",
  "activity": "Architecture",
  "purpose": "Declares the six layers, patterns and control plane of the AI reference architecture as code.",
  "chapters": [
   4
  ],
  "location": "04_reference_architecture.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   72
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "Component manifest for one use case",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Architecture",
  "purpose": "Maps one use case to components of the reference architecture.",
  "chapters": [
   4
  ],
  "location": "04_reference_architecture.md",
  "has_full_template": false,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "Market overlay (jurisdiction overlay)",
  "kind": "artefact",
  "id_prefix": "architecture/overlays/*",
  "activity": "Architecture",
  "purpose": "Applies jurisdiction-specific constraints on top of the reference model.",
  "chapters": [
   4,
   24
  ],
  "location": "04_reference_architecture.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "Reference-architecture variant derivation (practical guide)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Architecture",
  "purpose": "Steps for deriving an organisation's own variant of the reference architecture.",
  "chapters": [
   4
  ],
  "location": "04_reference_architecture.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "Model card",
  "kind": "artefact",
  "id_prefix": "model_card",
  "activity": "Design documentation",
  "purpose": "Version-controlled description of a model's intended use and limits, companion to the AIDR.",
  "chapters": [
   5
  ],
  "location": "05_ai_decision_records.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   41
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 7
 },
 {
  "name": "Datasheet (for datasets)",
  "kind": "artefact",
  "id_prefix": "Datasheet",
  "activity": "Design documentation",
  "purpose": "Documents dataset composition, gaps, uses and maintenance.",
  "chapters": [
   5,
   6,
   20
  ],
  "location": "06_data_architecture.md",
  "has_full_template": true,
  "language": "md",
  "sources": [
   42
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "System card for compound systems",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Design documentation",
  "purpose": "Describes a compound system's components, flows and oversight.",
  "chapters": [
   5
  ],
  "location": "05_ai_decision_records.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 8
 },
 {
  "name": "Generated decision index",
  "kind": "artefact",
  "id_prefix": "decisions/index.yaml",
  "activity": "Governance",
  "purpose": "Generated register of AIDRs and their status.",
  "chapters": [
   5
  ],
  "location": "05_ai_decision_records.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 8
 },
 {
  "name": "Annex IV technical documentation mapping",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Maps repository content to AI Act Annex IV and generates the documentation.",
  "chapters": [
   5
  ],
  "location": "05_ai_decision_records.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "Data product descriptor",
  "kind": "artefact",
  "id_prefix": "data_product",
  "activity": "Data architecture",
  "purpose": "Describes a data product's owner, schema, quality, lineage and access.",
  "chapters": [
   6
  ],
  "location": "06_data_architecture.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   76
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Retention and erasure rule",
  "kind": "artefact",
  "id_prefix": "policies/retention/RET-*.yaml",
  "activity": "Data architecture",
  "purpose": "Declares retention and erasure of personal data across stores and derived artefacts.",
  "chapters": [
   6
  ],
  "location": "06_data_architecture.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Prefix RET-",
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Model registry entry",
  "kind": "artefact",
  "id_prefix": "registry://",
  "activity": "Build / MLOps",
  "purpose": "Immutable record linking a model version to run, data, model card, evaluation and approvals.",
  "chapters": [
   7
  ],
  "location": "07_model_lifecycle_mlops.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Training run record",
  "kind": "artefact",
  "id_prefix": "training_run",
  "activity": "Build / reproducibility",
  "purpose": "Captures code, data, environment and seeds so a run can be reproduced.",
  "chapters": [
   7
  ],
  "location": "07_model_lifecycle_mlops.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 21
 },
 {
  "name": "Promotion gate definition",
  "kind": "artefact",
  "id_prefix": "gates/*.yaml",
  "activity": "Build / MLOps",
  "purpose": "Declares gates (including comparison against champion) for a compound system.",
  "chapters": [
   7
  ],
  "location": "07_model_lifecycle_mlops.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 19
 },
 {
  "name": "Predetermined change envelope",
  "kind": "artefact",
  "id_prefix": "change_envelope.yaml",
  "activity": "Change control",
  "purpose": "Declares in advance the range of model changes permitted without new approval.",
  "chapters": [
   7
  ],
  "location": "07_model_lifecycle_mlops.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Prompt record",
  "kind": "artefact",
  "id_prefix": "prompt_record",
  "activity": "Build / prompt management",
  "purpose": "Versioned prompt with metadata and evaluation links.",
  "chapters": [
   8
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   139
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 0
 },
 {
  "name": "Repository layout for an AI system",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Build / revision management",
  "purpose": "Directory layout where everything shaping behaviour is versioned.",
  "chapters": [
   8
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 0
 },
 {
  "name": "Catalogue entry for a skill or agent",
  "kind": "artefact",
  "id_prefix": "catalogue_entry",
  "activity": "Agent governance",
  "purpose": "Entry in the governed catalogue of skills and agents.",
  "chapters": [
   8
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Release record",
  "kind": "artefact",
  "id_prefix": "release",
  "activity": "Build / release",
  "purpose": "Defines a release as the set of versions evaluated together with evidence and approvals.",
  "chapters": [
   8
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 16
 },
 {
  "name": "Pipeline setup and reproducible-release practical guides",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Build / release",
  "purpose": "Step lists for repository setup, a gated reference pipeline and reproducible releases.",
  "chapters": [
   8
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 16
 },
 {
  "name": "Risk register entry as code",
  "kind": "artefact",
  "id_prefix": "HM-LOOP-*",
  "activity": "Risk",
  "purpose": "Stage-risk register entry for the DevSecMLOps loop.",
  "chapters": [
   9
  ],
  "location": "09_devsecmlops_risks.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Example entry HM-LOOP-04",
  "book": 3,
  "tools_chapter": 7
 },
 {
  "name": "Annex A control mapping with evidence",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Risk / ISMS",
  "purpose": "Maps loop risks to ISO/IEC 27001:2022 Annex A controls with evidence.",
  "chapters": [
   9
  ],
  "location": "09_devsecmlops_risks.md",
  "has_full_template": false,
  "language": "md",
  "sources": [
   124
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 8
 },
 {
  "name": "Hardening source-control and CI (practical guide)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Supply-chain security",
  "purpose": "Steps pinning actions, read-only tokens, OIDC, rulesets and secret scanning.",
  "chapters": [
   9
  ],
  "location": "09_devsecmlops_risks.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "Compromised dependency or model artefact response (practical guide)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Incident response",
  "purpose": "Steps to respond to a compromised dependency or model.",
  "chapters": [
   9
  ],
  "location": "09_devsecmlops_risks.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 13
 },
 {
  "name": "Stage-by-stage pipeline risk assessment (practical guide)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Risk",
  "purpose": "Steps to assess risks in an existing pipeline.",
  "chapters": [
   9
  ],
  "location": "09_devsecmlops_risks.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 7
 },
 {
  "name": "Retrieval prompt template with grounding and abstention",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "RAG",
  "purpose": "Prompt template enforcing citations and abstention.",
  "chapters": [
   10
  ],
  "location": "10_foundation_models_rag.md",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "RAG system configuration",
  "kind": "artefact",
  "id_prefix": "rag_system",
  "activity": "RAG",
  "purpose": "Codifies ingestion, chunking, embedding, index and retrieval settings.",
  "chapters": [
   10
  ],
  "location": "10_foundation_models_rag.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Tool registry entry for an MCP server",
  "kind": "artefact",
  "id_prefix": "tool-registry/*.yaml",
  "activity": "Agent governance",
  "purpose": "Registers an MCP server with owner, scopes and trust.",
  "chapters": [
   11
  ],
  "location": "11_agentic_architectures.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   36,
   148
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "Agent skill (worked example)",
  "kind": "artefact",
  "id_prefix": "SKILL.md",
  "activity": "Agent governance",
  "purpose": "Skill file with steps and rules for an agent.",
  "chapters": [
   8,
   11
  ],
  "location": "11_agentic_architectures.md",
  "has_full_template": true,
  "language": "md",
  "sources": [
   146,
   147
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Deny-by-default permission manifest for an IT-operations agent",
  "kind": "artefact",
  "id_prefix": "agents/*/manifest.yaml",
  "activity": "Agent governance",
  "purpose": "Permission manifest for an IT-operations agent.",
  "chapters": [
   11
  ],
  "location": "11_agentic_architectures.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "Complete agent configuration",
  "kind": "artefact",
  "id_prefix": "agents/*/agent.yaml",
  "activity": "Agent governance",
  "purpose": "Full agent configuration with allow-list and policy decision point.",
  "chapters": [
   11
  ],
  "location": "11_agentic_architectures.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Human-approval policy",
  "kind": "artefact",
  "id_prefix": "approvals/*.yaml",
  "activity": "Agent governance",
  "purpose": "Declares which agent actions need which human approval.",
  "chapters": [
   11
  ],
  "location": "11_agentic_architectures.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "AGENTS.md repository configuration for coding agents",
  "kind": "artefact",
  "id_prefix": "AGENTS.md",
  "activity": "Agent governance",
  "purpose": "Repository file giving coding agents checks, rules and off-limits areas.",
  "chapters": [
   11
  ],
  "location": "11_agentic_architectures.md",
  "has_full_template": true,
  "language": "md",
  "sources": [
   209
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "AI gateway route and policy configuration",
  "kind": "artefact",
  "id_prefix": "gateway/routes/*.yaml",
  "activity": "Integration / gateway",
  "purpose": "Per-system gateway route with model access, guardrails and logging policy.",
  "chapters": [
   12
  ],
  "location": "12_integration_patterns.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Delegated token claims",
  "kind": "artefact",
  "id_prefix": "token claims",
  "activity": "Identity",
  "purpose": "Claims of a delegated-authority token that carries user and agent identity.",
  "chapters": [
   12
  ],
  "location": "12_integration_patterns.md",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "API contract for a probabilistic service",
  "kind": "artefact",
  "id_prefix": "openapi.yaml",
  "activity": "Integration",
  "purpose": "OpenAPI contract expressing confidence, versions and abstention.",
  "chapters": [
   12
  ],
  "location": "12_integration_patterns.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 9
 },
 {
  "name": "Capacity plan as code",
  "kind": "artefact",
  "id_prefix": "platform/capacity/*.yaml",
  "activity": "Infrastructure",
  "purpose": "Declares accelerator capacity and placement.",
  "chapters": [
   13
  ],
  "location": "13_infrastructure_sovereignty.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 17
 },
 {
  "name": "Sovereignty requirements profile",
  "kind": "artefact",
  "id_prefix": "procurement/profiles/*.yaml",
  "activity": "Procurement / sovereignty",
  "purpose": "Weighted and mandatory sovereignty requirements for a tender.",
  "chapters": [
   13
  ],
  "location": "13_infrastructure_sovereignty.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   22
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 9
 },
 {
  "name": "Decision record on model origin and hosting",
  "kind": "artefact",
  "id_prefix": "AIDR-*",
  "activity": "Sovereignty",
  "purpose": "AIDR example recording model origin and hosting decision using the sovereignty decision matrix.",
  "chapters": [
   13
  ],
  "location": "13_infrastructure_sovereignty.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "Sovereignty decision matrix",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Sovereignty",
  "purpose": "Matrix weighing model origin and hosting options.",
  "chapters": [
   13
  ],
  "location": "13_infrastructure_sovereignty.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 9
 },
 {
  "name": "Placement policy",
  "kind": "artefact",
  "id_prefix": "placement-policy.yaml",
  "activity": "Infrastructure placement",
  "purpose": "Intake-time rules placing a workload in cloud, European cloud, hybrid or on-premises.",
  "chapters": [
   14
  ],
  "location": "14_cloud_versus_on_premises_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Cloud versus on-premises decision matrix",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Infrastructure placement",
  "purpose": "Matrix comparing deployment options per workload.",
  "chapters": [
   14
  ],
  "location": "14_cloud_versus_on_premises_ai.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 16
 },
 {
  "name": "Self-hosting readiness check",
  "kind": "artefact",
  "id_prefix": "self-hosting-readiness.yaml",
  "activity": "Infrastructure placement",
  "purpose": "Checklist all of whose items must pass before a model is self-hosted in production.",
  "chapters": [
   14
  ],
  "location": "14_cloud_versus_on_premises_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Cloud AI service controls",
  "kind": "artefact",
  "id_prefix": "cloud-ai-service-controls.yaml",
  "activity": "Procurement / controls",
  "purpose": "Contract and configuration controls required per cloud AI service.",
  "chapters": [
   14
  ],
  "location": "14_cloud_versus_on_premises_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 9
 },
 {
  "name": "Agent routing policy",
  "kind": "artefact",
  "id_prefix": "agent-routing-policy.yaml",
  "activity": "Hybrid agentic work",
  "purpose": "Routes coding-agent requests to self-hosted or cloud models by information class and jurisdiction.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Classification-routed hybrid agent setup (practical guide)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Hybrid agentic work",
  "purpose": "Steps to set up a classification-routed agent environment.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 7
 },
 {
  "name": "Prompt section for handling untrusted content",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "AI security",
  "purpose": "System-prompt section separating instructions from untrusted content.",
  "chapters": [
   16
  ],
  "location": "16_security_for_ai.md",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 0
 },
 {
  "name": "ML-BOM for a fine-tuned model",
  "kind": "artefact",
  "id_prefix": "ML-BOM",
  "activity": "Supply-chain security",
  "purpose": "CycloneDX ML bill of materials for a model.",
  "chapters": [
   16,
   8
  ],
  "location": "16_security_for_ai.md",
  "has_full_template": true,
  "language": "json",
  "sources": [
   31,
   135
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Threat model as code",
  "kind": "artefact",
  "id_prefix": "ThreatModel",
  "activity": "AI security",
  "purpose": "Declares assets, trust boundaries, threats and linked controls for a system.",
  "chapters": [
   16,
   17
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   28,
   27
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 10
 },
 {
  "name": "Guardrail policy",
  "kind": "artefact",
  "id_prefix": "guardrails",
  "activity": "AI security",
  "purpose": "Declarative guardrails applied at the gateway.",
  "chapters": [
   16
  ],
  "location": "16_security_for_ai.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Security review checklist for a new AI system",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "AI security",
  "purpose": "Ordered checklist reviewed by the security architect before production.",
  "chapters": [
   16
  ],
  "location": "16_security_for_ai.md",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 3
 },
 {
  "name": "Gateway security configuration",
  "kind": "artefact",
  "id_prefix": "gateway",
  "activity": "AI security",
  "purpose": "Gateway policy with model allow-list, signed models and guardrails.",
  "chapters": [
   17
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Agent workload-identity authorisation policy",
  "kind": "artefact",
  "id_prefix": "package ai.agents.authz",
  "activity": "AI security",
  "purpose": "Rego policy authorising agent tool calls by workload identity.",
  "chapters": [
   17
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": true,
  "language": "rego",
  "sources": [
   35
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "CI security test workflow",
  "kind": "artefact",
  "id_prefix": "ai-security-tests",
  "activity": "AI security testing",
  "purpose": "Workflow running policy tests, injection and leakage regression suites and agent boundary fuzzing, publishing evidence.",
  "chapters": [
   17
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "References tools/redteam.py, tools/agent_fuzz.py, tools/evidence.py which the book does not provide",
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Prompt injection playbook as code",
  "kind": "artefact",
  "id_prefix": "PB-AI-*",
  "activity": "Incident response",
  "purpose": "Playbook for a suspected indirect injection.",
  "chapters": [
   17
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": false,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "Control catalogue",
  "kind": "artefact",
  "id_prefix": "ControlCatalogue / CTRL-*",
  "activity": "Assurance",
  "purpose": "Catalogue of controls (CTRL-GW, CTRL-RAG, CTRL-AGT, CTRL-SEC, CTRL-OVR) with evidence.",
  "chapters": [
   17
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 8
 },
 {
  "name": "Patch-velocity policy",
  "kind": "artefact",
  "id_prefix": "patch-velocity-policy.yaml",
  "activity": "Vulnerability management",
  "purpose": "Service levels for patching by exploitability tier.",
  "chapters": [
   18
  ],
  "location": "18_when_ai_is_the_threat.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   89
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Synthetic-media-resistant approval policy",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Fraud resistance",
  "purpose": "Hardens approvals against voice and video deepfakes.",
  "chapters": [
   18
  ],
  "location": "18_when_ai_is_the_threat.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 15
 },
 {
  "name": "30-60-90-day plan",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Planning",
  "purpose": "Plan for a large organisation or authority responding to AI-enabled threats.",
  "chapters": [
   18
  ],
  "location": "18_when_ai_is_the_threat.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 0
 },
 {
  "name": "Agent containment profile",
  "kind": "artefact",
  "id_prefix": "agents/*/containment.yaml",
  "activity": "Agent containment",
  "purpose": "Platform-enforced limits on tools, egress, secrets, budgets and stop paths.",
  "chapters": [
   19
  ],
  "location": "19_agents_that_exceed_their_mandate.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "Containment sandbox, overreach detection and response guides",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Agent containment",
  "purpose": "Practical guides to build a sandbox, detect overreach and respond.",
  "chapters": [
   19
  ],
  "location": "19_agents_that_exceed_their_mandate.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "Golden dataset datasheet",
  "kind": "artefact",
  "id_prefix": "Datasheet",
  "activity": "Evaluation",
  "purpose": "Datasheet for a golden evaluation set.",
  "chapters": [
   20
  ],
  "location": "20_evaluation_and_testing.md",
  "has_full_template": true,
  "language": "md",
  "sources": [
   42
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 0
 },
 {
  "name": "LLM-as-a-judge prompt with rubric",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Evaluation",
  "purpose": "Judge prompt with anchored rubric and JSON schema.",
  "chapters": [
   20
  ],
  "location": "20_evaluation_and_testing.md",
  "has_full_template": true,
  "language": "other",
  "sources": [
   56
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Evaluation report summary",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Evaluation",
  "purpose": "JSON summary of an evaluation run.",
  "chapters": [
   20
  ],
  "location": "20_evaluation_and_testing.md",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 8
 },
 {
  "name": "Red-team test plan",
  "kind": "artefact",
  "id_prefix": "RT-*",
  "activity": "Evaluation / red teaming",
  "purpose": "Plan for a release's adversarial testing.",
  "chapters": [
   20
  ],
  "location": "20_evaluation_and_testing.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Telemetry collector configuration",
  "kind": "artefact",
  "id_prefix": "otel collector",
  "activity": "Observability",
  "purpose": "OpenTelemetry collector redacting personal data and routing to append-only stores.",
  "chapters": [
   21
  ],
  "location": "21_observability_and_drift.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   34
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 15
 },
 {
  "name": "Alerting rules",
  "kind": "artefact",
  "id_prefix": "groups:",
  "activity": "Observability",
  "purpose": "Alert rules for SLOs and drift.",
  "chapters": [
   21
  ],
  "location": "21_observability_and_drift.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 15
 },
 {
  "name": "Drift runbook",
  "kind": "artefact",
  "id_prefix": "runbooks/*/drift.md",
  "activity": "Operations",
  "purpose": "Runbook for input drift.",
  "chapters": [
   21
  ],
  "location": "21_observability_and_drift.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 16
 },
 {
  "name": "AI incident runbook",
  "kind": "artefact",
  "id_prefix": "RB-AI-*",
  "activity": "Operations",
  "purpose": "Runbook for AI incidents.",
  "chapters": [
   21
  ],
  "location": "21_observability_and_drift.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 13
 },
 {
  "name": "GPU capacity plan",
  "kind": "artefact",
  "id_prefix": "capacity/*.yaml",
  "activity": "Cost",
  "purpose": "Capacity plan for accelerators.",
  "chapters": [
   22
  ],
  "location": "22_cost_and_sustainability.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 17
 },
 {
  "name": "Model routing policy (gateway)",
  "kind": "artefact",
  "id_prefix": "ModelRoutingPolicy",
  "activity": "Cost",
  "purpose": "Tiered model routing with budgets.",
  "chapters": [
   22
  ],
  "location": "22_cost_and_sustainability.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "SCI calculation record",
  "kind": "artefact",
  "id_prefix": "sustainability/sci/*.yaml",
  "activity": "Sustainability",
  "purpose": "Records SCI for a use case.",
  "chapters": [
   22
  ],
  "location": "22_cost_and_sustainability.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   30
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "Golden path template manifest",
  "kind": "artefact",
  "id_prefix": "golden-paths/*/template.yaml",
  "activity": "Delivery",
  "purpose": "Template manifest of a golden path.",
  "chapters": [
   23
  ],
  "location": "23_pilot_to_production.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Use-case intake record",
  "kind": "artefact",
  "id_prefix": "UC-2026-*",
  "activity": "Intake",
  "purpose": "Intake record as code.",
  "chapters": [
   23
  ],
  "location": "23_pilot_to_production.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "Production readiness checklist",
  "kind": "artefact",
  "id_prefix": "readiness/checklist.yaml",
  "activity": "Delivery",
  "purpose": "Readiness checklist aligned to Article 26 deployer obligations.",
  "chapters": [
   23
  ],
  "location": "23_pilot_to_production.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 3
 },
 {
  "name": "Go/no-go decision record",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Delivery",
  "purpose": "Decision record for production go/no-go.",
  "chapters": [
   23
  ],
  "location": "23_pilot_to_production.md",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "Platform roadmap",
  "kind": "artefact",
  "id_prefix": "PlatformRoadmap",
  "activity": "Planning",
  "purpose": "Roadmap as code for each organisation.",
  "chapters": [
   24
  ],
  "location": "24_conclusions_for_nordvik_and_hansa.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "First-90-days platform and security plan",
  "kind": "artefact",
  "id_prefix": "PlatformSecurityPlan",
  "activity": "Planning",
  "purpose": "Consolidated plan.",
  "chapters": [
   25
  ],
  "location": "25_conclusion.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "STRIDE extended with ATLAS threat modelling",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI security",
  "purpose": "Combines STRIDE categories with MITRE ATLAS techniques and OWASP identifiers per threat.",
  "chapters": [
   17
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   27,
   28
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 10
 },
 {
  "name": "Evaluation pyramid",
  "kind": "method",
  "id_prefix": null,
  "activity": "Evaluation",
  "purpose": "Layers tests from unit through golden-set to human evaluation.",
  "chapters": [
   20
  ],
  "location": "20_evaluation_and_testing.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "LLM-as-a-judge",
  "kind": "method",
  "id_prefix": null,
  "activity": "Evaluation",
  "purpose": "Uses calibrated judge models with swap and human-agreement checks.",
  "chapters": [
   20
  ],
  "location": "20_evaluation_and_testing.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   56
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 0
 },
 {
  "name": "Shadow and canary deployment",
  "kind": "method",
  "id_prefix": null,
  "activity": "Release",
  "purpose": "Shadow traffic, canary and champion-challenger rollout.",
  "chapters": [
   7
  ],
  "location": "07_model_lifecycle_mlops.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 16
 },
 {
  "name": "ML Test Score",
  "kind": "method",
  "id_prefix": null,
  "activity": "MLOps readiness",
  "purpose": "Rubric for production readiness used as a gate.",
  "chapters": [
   7,
   8,
   20,
   23
  ],
  "location": "07_model_lifecycle_mlops.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   66
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Drift detection with reference and current windows",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observability",
  "purpose": "Compares windows per feature with thresholds.",
  "chapters": [
   21
  ],
  "location": "21_observability_and_drift.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   69
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "Sampled human review",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observability",
  "purpose": "Sampled review of production outputs.",
  "chapters": [
   21
  ],
  "location": "21_observability_and_drift.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 15
 },
 {
  "name": "Service level objectives for probabilistic services",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observability",
  "purpose": "SLOs and alerting for quality-dependent services.",
  "chapters": [
   21
  ],
  "location": "21_observability_and_drift.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 15
 },
 {
  "name": "Software Carbon Intensity calculation",
  "kind": "method",
  "id_prefix": null,
  "activity": "Sustainability",
  "purpose": "SCI = ((E x I) + M) per R.",
  "chapters": [
   22
  ],
  "location": "22_cost_and_sustainability.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   30
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 17
 },
 {
  "name": "FinOps for AI and chargeback",
  "kind": "method",
  "id_prefix": null,
  "activity": "Cost",
  "purpose": "Allocates AI cost to consumers.",
  "chapters": [
   22
  ],
  "location": "22_cost_and_sustainability.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   30
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 17
 },
 {
  "name": "Production readiness review",
  "kind": "method",
  "id_prefix": null,
  "activity": "Delivery",
  "purpose": "Gate between pilot and service.",
  "chapters": [
   23
  ],
  "location": "23_pilot_to_production.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 3
 },
 {
  "name": "Red teaming and continuous security testing",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security testing",
  "purpose": "Convert findings into automated tests.",
  "chapters": [
   17,
   20
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   1
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 11
 },
 {
  "name": "Patch-window compression",
  "kind": "method",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "Prioritises patches by EPSS and known exploitation.",
  "chapters": [
   18
  ],
  "location": "18_when_ai_is_the_threat.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   89
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "MLflow",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "MLOps",
  "purpose": "Experiment tracking, model and prompt registry with mutable aliases.",
  "chapters": [
   7,
   8,
   9
  ],
  "location": "07_model_lifecycle_mlops.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   37,
   139
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Kubeflow Pipelines",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "MLOps",
  "purpose": "Kubernetes-native pipeline orchestration with run capture.",
  "chapters": [
   7
  ],
  "location": "07_model_lifecycle_mlops.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   38
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "lakeFS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Data versioning",
  "purpose": "Git-like branches over a data lake.",
  "chapters": [
   8
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   138
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "DVC",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Data versioning",
  "purpose": "Data version control in the repository; stays open source.",
  "chapters": [
   8
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   138
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Sigstore",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply-chain security",
  "purpose": "Keyless signing and verification with transparency log.",
  "chapters": [
   8,
   9,
   16,
   17
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   33,
   177
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "gitsign",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply-chain security",
  "purpose": "Signs Git commits with short-lived Sigstore certificates.",
  "chapters": [
   8
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   141
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Rekor",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply-chain security",
  "purpose": "Append-only transparency log, self-hostable.",
  "chapters": [
   8,
   9
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   177
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 8
 },
 {
  "name": "OpenSSF Model Signing (OMS)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply-chain security",
  "purpose": "Signs a manifest of model file hashes.",
  "chapters": [
   8,
   9
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   134
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "SLSA",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply-chain security",
  "purpose": "Supply-chain levels for build provenance.",
  "chapters": [
   8,
   9,
   16,
   17
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   32,
   133
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "CycloneDX ML-BOM",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply-chain security",
  "purpose": "Bill of materials for models and datasets.",
  "chapters": [
   8,
   16,
   17
  ],
  "location": "16_security_for_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   31,
   135
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Open Policy Agent and Rego",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Policy engine for gateways, pipelines and agent authorisation.",
  "chapters": [
   4,
   8,
   11,
   17
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   35
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Model Context Protocol (MCP)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Protocol and registry for agent tool access.",
  "chapters": [
   11,
   12,
   15,
   16
  ],
  "location": "11_agentic_architectures.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   36,
   148,
   229
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "AGENTS.md",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Open format guiding coding agents.",
  "chapters": [
   11
  ],
  "location": "11_agentic_architectures.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   209
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Agent Skills (SKILL.md)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Reusable skill format.",
  "chapters": [
   8,
   11
  ],
  "location": "08_devsecmlops_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   146,
   147
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "OpenTelemetry (GenAI semantic conventions)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Observability",
  "purpose": "Telemetry standard and collector.",
  "chapters": [
   21,
   11,
   12
  ],
  "location": "21_observability_and_drift.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   34
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 15
 },
 {
  "name": "OpenCode",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Hybrid agentic work",
  "purpose": "Provider-neutral coding agent used as worked example.",
  "chapters": [
   2,
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   218,
   219,
   220
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Codex CLI",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Hybrid agentic work",
  "purpose": "Open-source coding agent compared in table of provider-agnostic agents.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   236,
   237
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Cline",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Hybrid agentic work",
  "purpose": "Open-source coding agent compared in table of provider-agnostic agents.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   230,
   231
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Continue",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Hybrid agentic work",
  "purpose": "Open-source coding agent compared in table of provider-agnostic agents.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   232
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Goose",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Hybrid agentic work",
  "purpose": "Open-source coding agent compared in table of provider-agnostic agents.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   234
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Aider",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Hybrid agentic work",
  "purpose": "Open-source coding agent compared in table of provider-agnostic agents.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   233
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Crush",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Hybrid agentic work",
  "purpose": "Open-source coding agent compared in table of provider-agnostic agents.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   235
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 18
 },
 {
  "name": "Ollama",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Model serving",
  "purpose": "Local model server (also vulnerability examples).",
  "chapters": [
   9,
   14,
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   220,
   227,
   228
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "vLLM",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Model serving",
  "purpose": "Self-hosted inference server with OpenAI-compatible API.",
  "chapters": [
   9,
   14,
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   227
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "llama.cpp",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Model serving",
  "purpose": "Local inference engine.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   220
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "LM Studio",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Model serving",
  "purpose": "Local model server supported by agents.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   220
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "LiteLLM",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Gateway",
  "purpose": "Library/proxy used by agents to reach models.",
  "chapters": [
   15
  ],
  "location": "15_hybrid_agentic_work.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   233,
   234
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Terraform",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Infrastructure as code",
  "purpose": "Provisions inference node pools.",
  "chapters": [
   8,
   13
  ],
  "location": "13_infrastructure_sovereignty.md#infrastructure-as-code",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Kubernetes",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Infrastructure",
  "purpose": "Orchestration for inference and pipelines.",
  "chapters": [
   7,
   13
  ],
  "location": "13_infrastructure_sovereignty.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   38
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "Structurizr",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Architecture model DSL referenced from Architecture as Code.",
  "chapters": [
   4
  ],
  "location": "04_reference_architecture.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   72
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "C4 model",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Architecture modelling",
  "purpose": "Diagram method.",
  "chapters": [
   4
  ],
  "location": "04_reference_architecture.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   39
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "GitHub Actions",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "CI/CD",
  "purpose": "Pipeline platform for examples.",
  "chapters": [
   9,
   "Appendix A"
  ],
  "location": "27_appendix_a_code_examples.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Trivy",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security scanning",
  "purpose": "Scanner; compromised in 2026 incident.",
  "chapters": [
   9
  ],
  "location": "09_devsecmlops_risks.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   154
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Triton Inference Server",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Model serving",
  "purpose": "Inference server; vulnerability example.",
  "chapters": [
   9
  ],
  "location": "09_devsecmlops_risks.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   173,
   175
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "MITRE ATLAS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Catalogue of AI attack techniques.",
  "chapters": [
   3,
   9,
   16,
   17
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   28
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 10
 },
 {
  "name": "MITRE ATT&CK",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Adversary technique catalogue.",
  "chapters": [
   16
  ],
  "location": "16_security_for_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   28
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for LLM Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Catalogue of LLM application risks.",
  "chapters": [
   16,
   17
  ],
  "location": "16_security_for_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   27
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for Agentic Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Catalogue of agentic risks.",
  "chapters": [
   16,
   17
  ],
  "location": "16_security_for_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   102
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 10
 },
 {
  "name": "EPSS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "Exploit prediction score used in patch prioritisation.",
  "chapters": [
   18
  ],
  "location": "18_when_ai_is_the_threat.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   89
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "CISA Known Exploited Vulnerabilities catalogue",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "Catalogue of exploited vulnerabilities.",
  "chapters": [
   9,
   18
  ],
  "location": "18_when_ai_is_the_threat.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   90
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "CVSS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "Severity scoring.",
  "chapters": [
   9
  ],
  "location": "09_devsecmlops_risks.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 12
 },
 {
  "name": "Gaia-X",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Sovereignty",
  "purpose": "Machine-readable self-descriptions.",
  "chapters": [
   4,
   13
  ],
  "location": "13_infrastructure_sovereignty.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   22
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 9
 },
 {
  "name": "Software Carbon Intensity specification",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Sustainability",
  "purpose": "ISO/IEC 21031:2024 carbon metric.",
  "chapters": [
   22
  ],
  "location": "22_cost_and_sustainability.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   30
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 17
 },
 {
  "name": "HELM",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Evaluation",
  "purpose": "Holistic Evaluation of Language Models.",
  "chapters": [
   20
  ],
  "location": "20_evaluation_and_testing.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   55
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "ISO/IEC 42001 and ISO/IEC 27001",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Management systems",
  "purpose": "Management system standards.",
  "chapters": [
   8,
   9,
   17
  ],
  "location": "09_devsecmlops_risks.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   24,
   124
  ],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 8
 },
 {
  "name": "Hugging Face",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Model hub",
  "purpose": "Model hub.",
  "chapters": [
   9,
   14,
   19
  ],
  "location": "09_devsecmlops_risks.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   200
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 6
 },
 {
  "name": "OpenAPI",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Integration",
  "purpose": "API contracts.",
  "chapters": [
   12
  ],
  "location": "12_integration_patterns.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 9
 },
 {
  "name": "SPIFFE",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Identity",
  "purpose": "Workload identity.",
  "chapters": [
   17
  ],
  "location": "17_ai_security_engineering.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 20
 },
 {
  "name": "safetensors",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Model format",
  "purpose": "Safe model format vs pickle.",
  "chapters": [
   14,
   16
  ],
  "location": "16_security_for_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 0
 },
 {
  "name": "Claude Code, GitHub Copilot, Cursor",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Coding agents",
  "purpose": "Agentic coding tools named in Mode 3.",
  "chapters": [
   2,
   9
  ],
  "location": "02_llm_usage_modes.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   214
  ],
  "mention": "passing",
  "notes": null,
  "book": 3,
  "tools_chapter": 3
 },
 {
  "name": "scripts/check_mermaid_diagrams.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies rendered diagrams against Mermaid sources.",
  "chapters": [
   "Appendix B"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/audit_references.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Audits inline citations against 28_references.md.",
  "chapters": [
   "Appendix B"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies cited URLs and ISBNs.",
  "chapters": [
   "Appendix B"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_doc_numbering.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Checks chapter numbering for gaps and duplicates.",
  "chapters": [
   "Appendix B"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_environment.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Confirms toolchain matches BOOK_REQUIREMENTS.md.",
  "chapters": [
   "Appendix B"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/format_citations.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Formats inline citations.",
  "chapters": [],
  "location": "scripts/format_citations.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/renumber_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Renumbers bibliography.",
  "chapters": [],
  "location": "scripts/renumber_sources.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/update_reference_backlinks.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Updates reference backlinks.",
  "chapters": [],
  "location": "scripts/update_reference_backlinks.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/build_sources_section.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds Sources sections.",
  "chapters": [],
  "location": "scripts/build_sources_section.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/analyze_chapter_lengths.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Analyses chapter lengths.",
  "chapters": [],
  "location": "scripts/analyze_chapter_lengths.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_branding.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates diagram branding.",
  "chapters": [],
  "location": "scripts/validate_diagram_branding.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_elements.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates diagram elements.",
  "chapters": [],
  "location": "scripts/validate_diagram_elements.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_figure_captions.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates figure captions.",
  "chapters": [],
  "location": "scripts/validate_figure_captions.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_heading_capitalization.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates heading capitalisation.",
  "chapters": [],
  "location": "scripts/validate_heading_capitalization.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "scripts/navigation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Resolves chapter order from mkdocs.yml.",
  "chapters": [],
  "location": "scripts/navigation.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "generate_book.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates book content.",
  "chapters": [],
  "location": "generate_book.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "build_all_orchestrator.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Coordinates all generators.",
  "chapters": [],
  "location": "build_all_orchestrator.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "generate_presentation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Creates presentation.",
  "chapters": [],
  "location": "generate_presentation.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "generate_whitepapers.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Exports whitepapers.",
  "chapters": [],
  "location": "generate_whitepapers.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "build_release.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Full release pipeline.",
  "chapters": [],
  "location": "build_release.sh",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "docs/build_book.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds PDF, EPUB, DOCX with Pandoc.",
  "chapters": [],
  "location": "docs/build_book.sh",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "tests/ (pytest suites)",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Pytest suites for completeness, consistency and references.",
  "chapters": [
   "Appendix B"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 3,
  "tools_chapter": null
 },
 {
  "name": "Mermaid",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Used by the book's build pipeline.",
  "chapters": [],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 4
 },
 {
  "name": "Pandoc",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Used by the book's build pipeline.",
  "chapters": [],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "MkDocs",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Used by the book's build pipeline.",
  "chapters": [],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 3,
  "tools_chapter": 5
 },
 {
  "name": "Programme charter for AI-enabled defence",
  "kind": "artefact",
  "id_prefix": "NR-SEC-PROG-*",
  "activity": "Governance",
  "purpose": "Charter for an organisation's AI-enabled defence programme (owner, sponsor, scope).",
  "chapters": [
   1
  ],
  "location": "01_introduction.md#worked-example-a-programme-charter-for-ai-enabled-defence",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind ProgrammeCharter; Appendix B lists it as Chapter 1 only, not in Appendix A",
  "book": 4,
  "tools_chapter": 8
 },
 {
  "name": "Threat profile entry (AI-enabled threat, evidence-labelled)",
  "kind": "artefact",
  "id_prefix": "HM-TP-*",
  "activity": "Threat intelligence",
  "purpose": "Entry in an AI-aware threat profile that labels a threat by evidence level and translates it into requirements.",
  "chapters": [
   2
  ],
  "location": "02_threat_landscape.md#worked-example-threat-profile-entry-for-ai-enabled-initial-access-labelled-by-evidence-level",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 5
 },
 {
  "name": "CSF profile as code with an AI focus",
  "kind": "artefact",
  "id_prefix": "HM-CSF-*",
  "activity": "Governance",
  "purpose": "Current and target CSF maturity per Category, with Cyber AI Profile focus-area targets, controls and obligations.",
  "chapters": [
   3
  ],
  "location": "30_appendix_a_code_examples.md#03_code_profile",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   20,
   19
  ],
  "mention": "described",
  "notes": "Code id 03_CODE_PROFILE; also shown in 03 with different fields (profile: HM-CSF-2027)",
  "book": 4,
  "tools_chapter": 8
 },
 {
  "name": "Agent containment profile",
  "kind": "artefact",
  "id_prefix": "platform.example.eu/v1 AgentContainmentProfile",
  "activity": "Platform security",
  "purpose": "Containment profile for the SOC investigation agent placing security AI on the platform's controls.",
  "chapters": [
   4
  ],
  "location": "04_reference_architecture.md#worked-example-containment-profile-for-the-soc-investigation-agent",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   73
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 20
 },
 {
  "name": "Risk-appetite statement as code",
  "kind": "artefact",
  "id_prefix": "HM-RAS-*",
  "activity": "Governance",
  "purpose": "Versioned statement of error tolerance, autonomy ceilings, reversibility and review triggers for security AI.",
  "chapters": [
   5
  ],
  "location": "05_context_and_risk_strategy.md#worked-example-risk-appetite-statement-as-code-with-autonomy-ceilings-and-review-triggers",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B marks it 'planned' although Chapter 5 gives a full example",
  "book": 4,
  "tools_chapter": 7
 },
 {
  "name": "Autonomy-level decision record (AI Decision Record)",
  "kind": "artefact",
  "id_prefix": "AIDR-*",
  "activity": "Governance",
  "purpose": "Assigns usage mode and autonomy level per action for a security AI capability, with oversight, review and works-council consultation.",
  "chapters": [
   6
  ],
  "location": "30_appendix_a_code_examples.md#06_code_autonomy",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   72
  ],
  "mention": "described",
  "notes": "Code id 06_CODE_AUTONOMY; chapter 06 version has kind AIDecisionRecord (status: proposed), appendix has kind AutonomyDecision",
  "book": 4,
  "tools_chapter": 18
 },
 {
  "name": "Rules-of-engagement manifest",
  "kind": "artefact",
  "id_prefix": "RoE-*",
  "activity": "Red teaming and exercises",
  "purpose": "Signed, versioned manifest of scope, window, permitted tactics, AI participation, stop conditions and stop path for an exercise.",
  "chapters": [
   7,
   12,
   13,
   15,
   25,
   26
  ],
  "location": "30_appendix_a_code_examples.md#07_code_roe",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Code id 07_CODE_ROE; ids RoE-NR-*, RoE-HM-*",
  "book": 4,
  "tools_chapter": 11
 },
 {
  "name": "Supplier assurance requirements for security AI",
  "kind": "artefact",
  "id_prefix": "NR-SUP-*",
  "activity": "Supply chain",
  "purpose": "Contract-level requirements and evidence a vendor's AI feature must meet before it is enabled in the SOC.",
  "chapters": [
   8
  ],
  "location": "08_oversight_and_supply_chain.md#worked-example-supplier-assurance-requirements-for-security-ai-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B marks it 'planned'",
  "book": 4,
  "tools_chapter": 9
 },
 {
  "name": "AI asset record (agent)",
  "kind": "artefact",
  "id_prefix": "HM-SEC-001 (asset id)",
  "activity": "Asset management",
  "purpose": "Inventory record for an AI asset class (here an agent) with owner, class, dependencies and criticality.",
  "chapters": [
   9
  ],
  "location": "09_asset_management.md#worked-example-asset-record-for-an-agent",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind AIAssetRecord; Appendix B marks it 'planned'",
  "book": 4,
  "tools_chapter": 18
 },
 {
  "name": "Threat model (threat-model.yaml)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Versioned threat model for a system, with threats classified by STRIDE, ATLAS/ATT&CK and OWASP identifiers.",
  "chapters": [
   10
  ],
  "location": "10_threat_modelling_and_risk_assessment.md#worked-example-threat-modelyaml-for-the-citizen-service-assistant",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   10,
   11,
   14
  ],
  "mention": "described",
  "notes": "Kind ThreatModel",
  "book": 4,
  "tools_chapter": 10
 },
 {
  "name": "Delegated patch decision",
  "kind": "artefact",
  "id_prefix": "DPD-*",
  "activity": "Vulnerability management",
  "purpose": "Records the pre-approved patch decisions delegated to AI for known-exploited vulnerabilities, with limits and approver.",
  "chapters": [
   11
  ],
  "location": "11_vulnerability_and_exposure.md#practical-guide-defining-delegated-patch-decisions-for-known-exploited-vulnerabilities",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "Patch-velocity service-level policy",
  "kind": "artefact",
  "id_prefix": "HM-PATCH-SLO-*",
  "activity": "Vulnerability management",
  "purpose": "Policy as code setting patch time targets by exposure and exploitation signal.",
  "chapters": [
   11
  ],
  "location": "11_vulnerability_and_exposure.md#worked-example-patch-velocity-service-level-policy-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   26,
   27,
   28
  ],
  "mention": "described",
  "notes": "Appendix B marks it 'planned'",
  "book": 4,
  "tools_chapter": 5
 },
 {
  "name": "Emulation plan (ATT&CK-mapped)",
  "kind": "artefact",
  "id_prefix": "HM-TLPT-*",
  "activity": "Red teaming and exercises",
  "purpose": "Plan for an AI-assisted adversary emulation with ATT&CK mapping, safeguards and stop conditions.",
  "chapters": [
   12
  ],
  "location": "12_adversary_emulation.md#worked-example-an-attck-mapped-emulation-plan-with-safeguards-and-stop-conditions",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   10
  ],
  "mention": "described",
  "notes": "Kind EmulationPlan",
  "book": 4,
  "tools_chapter": 11
 },
 {
  "name": "Emulation finding record",
  "kind": "artefact",
  "id_prefix": "FND-*",
  "activity": "Red teaming and exercises",
  "purpose": "Structured JSON finding from an emulation run that the blue team can use.",
  "chapters": [
   12
  ],
  "location": "12_adversary_emulation.md#worked-example-a-structured-finding-record",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": "Kind EmulationFinding; distinct from the YAML FindingRecord of Chapter 26",
  "book": 4,
  "tools_chapter": 11
 },
 {
  "name": "AI red-team campaign plan",
  "kind": "artefact",
  "id_prefix": "NR-SEC-*-C*",
  "activity": "AI red teaming",
  "purpose": "Campaign plan for an AI system mapped to OWASP and ATLAS categories.",
  "chapters": [
   13
  ],
  "location": "13_red_teaming_ai_systems.md#worked-example-campaign-plan-for-nr-sec-002-mapped-to-owasp-and-atlas-categories",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   11,
   14,
   15
  ],
  "mention": "described",
  "notes": "Kind AIRedTeamCampaignPlan",
  "book": 4,
  "tools_chapter": 11
 },
 {
  "name": "Containment test plan (agent escape paths)",
  "kind": "artefact",
  "id_prefix": "HM-SEC-*-CT-*",
  "activity": "AI red teaming",
  "purpose": "Plan to test whether an agent can escape its containment, including the stop path.",
  "chapters": [
   13
  ],
  "location": "13_red_teaming_ai_systems.md#worked-example-containment-test-plan-for-hansas-it-operations-agent",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind ContainmentTestPlan",
  "book": 4,
  "tools_chapter": 20
 },
 {
  "name": "Agent credential profile",
  "kind": "artefact",
  "id_prefix": "hm-sec-001-credentials",
  "activity": "Identity and access",
  "purpose": "Task-scoped, short-lived credential profile for the SOC investigation agent, issued outside the agent runtime.",
  "chapters": [
   14
  ],
  "location": "14_identity_and_access.md#worked-example-a-credential-profile-for-the-soc-investigation-agent",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 20
 },
 {
  "name": "Synthetic-media-resistant approval policy",
  "kind": "artefact",
  "id_prefix": "hm-approvals-synthetic-media",
  "activity": "Identity and access",
  "purpose": "Policy as code that treats voice, video and chat as untrusted channels and requires out-of-band confirmation for payment and privileged approvals.",
  "chapters": [
   14
  ],
  "location": "14_identity_and_access.md#worked-example-synthetic-media-resistant-approval-policy-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B marks it 'planned'",
  "book": 4,
  "tools_chapter": 15
 },
 {
  "name": "Resilience exercise design record",
  "kind": "artefact",
  "id_prefix": "NR-AWR-*",
  "activity": "Awareness and training",
  "purpose": "Design record for a deepfake-resilience exercise with consent, scope and success criteria.",
  "chapters": [
   15
  ],
  "location": "15_awareness_and_training.md#worked-example-exercise-design-record-with-consent-scope-and-success-criteria",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind ResilienceExerciseDesign",
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Guardrail policy",
  "kind": "artefact",
  "id_prefix": "NR-SEC-*-guardrails",
  "activity": "Data and platform security",
  "purpose": "Layered guardrail policy for a security AI capability (inputs, tools, outputs, data).",
  "chapters": [
   16
  ],
  "location": "16_data_and_platform_security.md#worked-example-guardrail-policy-for-the-soc-triage-assistant",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind GuardrailPolicy; Appendix B marks it 'planned'",
  "book": 4,
  "tools_chapter": 5
 },
 {
  "name": "Secure-configuration baseline policy (Rego)",
  "kind": "artefact",
  "id_prefix": "secai_baseline",
  "activity": "Data and platform security",
  "purpose": "Rego policy that detects drift from a security-AI configuration baseline and decides what reverts automatically.",
  "chapters": [
   16
  ],
  "location": "16_data_and_platform_security.md#secure-configuration-with-ai",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": "Rego/OPA is not named explicitly as OPA in the chapter text",
  "book": 4,
  "tools_chapter": 5
 },
 {
  "name": "Degradation-mode definition",
  "kind": "artefact",
  "id_prefix": "HM-SEC-*-degradation",
  "activity": "Resilience",
  "purpose": "Defines how a security AI capability degrades (lose speed, never lose the defence) with fail-safe behaviour.",
  "chapters": [
   17
  ],
  "location": "17_infrastructure_resilience.md#worked-example-degradation-mode-definition-for-the-soc-investigation-agent",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind DegradationModes",
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Grounded triage record",
  "kind": "artefact",
  "id_prefix": "NR-SEC-001/triage/*",
  "activity": "Security operations",
  "purpose": "JSON record of an AI triage verdict grounded in telemetry and asset context.",
  "chapters": [
   18
  ],
  "location": "18_ai_assisted_soc.md#worked-example-a-grounded-triage-record",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "Agent permission manifest (SOC investigation agent)",
  "kind": "artefact",
  "id_prefix": "HM-SEC-*",
  "activity": "Security operations",
  "purpose": "Permission manifest granting a SOC investigation agent only the tools, egress and budgets it needs, with a stop path.",
  "chapters": [
   18
  ],
  "location": "30_appendix_a_code_examples.md#18_code_permissions",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   73
  ],
  "mention": "described",
  "notes": "Code id 18_CODE_PERMISSIONS; chapter 18 version has kind AgentPermissionManifest, appendix version kind PermissionManifest",
  "book": 4,
  "tools_chapter": 20
 },
 {
  "name": "Detection rule with test cases (Sigma)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Detection engineering",
  "purpose": "Sigma rule with test cases and ATT&CK mapping, versioned as code.",
  "chapters": [
   19
  ],
  "location": "19_detection_intelligence_deception.md#worked-example-a-sigma-rule-with-test-cases-and-attck-mapping",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   32,
   10
  ],
  "mention": "described",
  "notes": "Appendix B marks it 'planned'",
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "AI-assisted threat assessment (STIX report)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Threat intelligence",
  "purpose": "STIX 2.1 report object for an AI-assisted intelligence assessment graded by people.",
  "chapters": [
   19
  ],
  "location": "19_detection_intelligence_deception.md#worked-example-an-ai-assisted-assessment-in-stix",
  "has_full_template": true,
  "language": "json",
  "sources": [
   24
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "Decoy register entry",
  "kind": "artefact",
  "id_prefix": "HM-DEC-*",
  "activity": "Deception",
  "purpose": "Register entry for a honeytoken, canary or decoy with owner, placement, monitoring and authority to act.",
  "chapters": [
   19
  ],
  "location": "19_detection_intelligence_deception.md#worked-example-a-decoy-register-entry",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 7
 },
 {
  "name": "Impact query (parameterised SQL)",
  "kind": "artefact",
  "id_prefix": "IQ-CTA-*",
  "activity": "Incident response",
  "purpose": "Versioned SQL impact query for an agent, with parameters bound by the incident tool and never by the model.",
  "chapters": [
   20
  ],
  "location": "20_incident_management.md#impact-queries-and-scoping",
  "has_full_template": true,
  "language": "sql",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Incident record with AI classification step",
  "kind": "artefact",
  "id_prefix": "HM-INC-*",
  "activity": "Incident response",
  "purpose": "Single-source incident record including declaration, proposer system and the AI classification step.",
  "chapters": [
   20,
   21
  ],
  "location": "20_incident_management.md#worked-example-incident-record-with-the-ai-classification-step",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind IncidentRecord; Appendix B marks it 'planned'",
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Reporting-clock configuration",
  "kind": "artefact",
  "id_prefix": "INC-HM-*",
  "activity": "Incident response",
  "purpose": "Configuration mapping one incident to the clocks of every reporting regime (AI Act, DORA, NIS 2, GDPR, CRA).",
  "chapters": [
   21
  ],
  "location": "21_reporting_and_mitigation.md#worked-example-reporting-clock-configuration-for-a-multi-regime-incident",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 8
 },
 {
  "name": "Containment catalogue",
  "kind": "artefact",
  "id_prefix": "HM-SEC-001 (catalogue)",
  "activity": "Incident response",
  "purpose": "Catalogue of bounded, reversible containment actions with levels, budgets, exclusions and stop path.",
  "chapters": [
   21
  ],
  "location": "21_reporting_and_mitigation.md#containment-that-does-not-depend-on-intent",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 20
 },
 {
  "name": "Recovery plan as code",
  "kind": "artefact",
  "id_prefix": "RP-*",
  "activity": "Recovery",
  "purpose": "Recovery plan with objectives, dependencies, runbook steps and verification.",
  "chapters": [
   22
  ],
  "location": "22_recovery_plan_execution.md#worked-example-recovery-plan-as-code-with-objectives-dependencies-and-verification-steps",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind RecoveryPlan",
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Return-to-service evidence record",
  "kind": "artefact",
  "id_prefix": "RTS-*",
  "activity": "Recovery",
  "purpose": "JSON evidence record that a restored service passed integrity and acceptance checks before return to service.",
  "chapters": [
   22
  ],
  "location": "22_recovery_plan_execution.md#worked-example-return-to-service-evidence-record",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": "Kind ReturnToServiceRecord; same RTS prefix as the checklist of Chapter 23",
  "book": 4,
  "tools_chapter": 5
 },
 {
  "name": "Return-to-service checklist for an AI system",
  "kind": "artefact",
  "id_prefix": "RTS-*",
  "activity": "Recovery",
  "purpose": "Checklist as code for re-evaluation, rollback and re-enabling of an AI system or agent after an incident.",
  "chapters": [
   23
  ],
  "location": "23_recovering_ai_systems.md#worked-example-return-to-service-checklist-as-code-for-an-ai-system",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind ReturnToServiceChecklist",
  "book": 4,
  "tools_chapter": 3
 },
 {
  "name": "Recoverability test definition (restore drill)",
  "kind": "artefact",
  "id_prefix": "NR-SEC-*-RD-*",
  "activity": "Recovery",
  "purpose": "Defines a restore drill with objectives, schedule and evidence output.",
  "chapters": [
   24
  ],
  "location": "24_proactive_recovery.md#worked-example-recoverability-test-definition-with-objectives-drill-schedule-and-evidence-output",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind RecoverabilityTest",
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Prepared recovery message record",
  "kind": "artefact",
  "id_prefix": "HM-COMMS-RC-*",
  "activity": "Recovery",
  "purpose": "Message-library entry that defines fact sources, forbidden statements, approvers, channels and release target, holding no text.",
  "chapters": [
   24
  ],
  "location": "24_proactive_recovery.md#worked-example-a-prepared-recovery-message-record",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in prose only; no code block",
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Security chaos experiment manifest",
  "kind": "artefact",
  "id_prefix": "SCE-*",
  "activity": "Security chaos engineering",
  "purpose": "Catalogue entry injecting a condition to verify a control, with rollback, blast radius and failure routing.",
  "chapters": [
   25
  ],
  "location": "30_appendix_a_code_examples.md#25_code_chaosexp",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   67
  ],
  "mention": "described",
  "notes": "Code id 25_CODE_CHAOSEXP",
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Chaos safety-boundary policy",
  "kind": "artefact",
  "id_prefix": "HM-SEC-*-boundaries",
  "activity": "Security chaos engineering",
  "purpose": "Policy bounding blast radius, data, timing, autonomy and abort for AI-planned chaos experiments.",
  "chapters": [
   25
  ],
  "location": "30_appendix_a_code_examples.md#25_code_chaospolicy",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Code id 25_CODE_CHAOSPOLICY; Appendix B lists it with the experiment manifest",
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Finding record carried to verified closure",
  "kind": "artefact",
  "id_prefix": "FND-*",
  "activity": "Improvement",
  "purpose": "Finding record from source to control, detection, re-test and verified closure.",
  "chapters": [
   26
  ],
  "location": "30_appendix_a_code_examples.md#26_code_finding",
  "has_full_template": true,
  "language": "yaml",
  "sources": [
   10,
   32
  ],
  "mention": "described",
  "notes": "Code id 26_CODE_FINDING",
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "Purple session plan",
  "kind": "artefact",
  "id_prefix": "PS-*",
  "activity": "Improvement",
  "purpose": "Quarterly purple-session plan with chair, agenda, replay, closure criteria and works-council limits.",
  "chapters": [
   26
  ],
  "location": "26_purple_teaming_and_improvement.md#practical-guide-running-a-quarterly-purple-team-session",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind PurpleSession; Appendix B lists 'agenda and metric definitions' as planned",
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Security AI evaluation (golden-dataset evaluation)",
  "kind": "artefact",
  "id_prefix": "EVAL-*",
  "activity": "Improvement",
  "purpose": "Evaluation configuration scoring a security AI component against a frozen golden dataset with thresholds and gates.",
  "chapters": [
   26
  ],
  "location": "26_purple_teaming_and_improvement.md#worked-example-golden-dataset-evaluation-for-the-soc-triage-assistant",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind SecurityAIEvaluation",
  "book": 4,
  "tools_chapter": 19
 },
 {
  "name": "CSF profile summary of the two organisations",
  "kind": "artefact",
  "id_prefix": "nordvik-region / hansa-mutual",
  "activity": "Governance",
  "purpose": "Side-by-side current and target CSF maturity of the two example organisations as code.",
  "chapters": [
   27
  ],
  "location": "27_conclusions_for_nordvik_and_hansa.md#the-two-csf-profiles-as-code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind CsfProfileSummary",
  "book": 4,
  "tools_chapter": 8
 },
 {
  "name": "First-90-days programme plan",
  "kind": "artefact",
  "id_prefix": "AI-DEFENCE-FIRST-90",
  "activity": "Governance",
  "purpose": "Consolidated 90-day plan with owner and milestones for starting AI-enabled defence.",
  "chapters": [
   28
  ],
  "location": "28_conclusion.md#worked-example-a-consolidated-first-90-days-plan",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Kind ProgrammePlan",
  "book": 4,
  "tools_chapter": 8
 },
 {
  "name": "Risk-appetite statement / supplier / etc. templates listed as planned in Appendix B",
  "kind": "artefact",
  "id_prefix": "various",
  "activity": "Appendix",
  "purpose": "Appendix B lists templates marked planned (patch-velocity policy, detection rule, incident record, recovery plan, etc.).",
  "chapters": [
   "B"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Index only; see individual entries. Several 'planned' items already exist as worked examples in chapters",
  "book": 4,
  "tools_chapter": 9
 },
 {
  "name": "Practical-guide structure (purpose, defaults, definition of done)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Authoring",
  "purpose": "Each Practical guide sets Purpose, steps, Default values to adapt and Definition of done.",
  "chapters": [
   2,
   3,
   4,
   5,
   6,
   7,
   8,
   9,
   10,
   11,
   12,
   13,
   14,
   15,
   16,
   17,
   18,
   19,
   20,
   21,
   22,
   23,
   24,
   25,
   26
  ],
  "location": "CHAPTER_AUTHORING_GUIDE.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 0
 },
 {
  "name": "Usage-mode and autonomy-level scales",
  "kind": "artefact",
  "id_prefix": "Mode 0-5; Level 0-4",
  "activity": "Governance",
  "purpose": "Series scales for how AI is used (Mode 0 Ambient AI to Mode 5 Autonomous production agents) and how much it may do (Level 0 Advisory to Level 4 Autonomous).",
  "chapters": [
   6
  ],
  "location": "06_roles_and_autonomy.md#usage-modes",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Tables reused in every chapter's 'Across the usage modes' and 'Across the autonomy levels' sections",
  "book": 4,
  "tools_chapter": 18
 },
 {
  "name": "Building an AI-aware threat profile",
  "kind": "method",
  "id_prefix": null,
  "activity": "Threat intelligence",
  "purpose": "Produce a short, versioned threat profile labelled by evidence and translated into requirements.",
  "chapters": [
   2
  ],
  "location": "02_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "Building a current and target CSF profile with an AI focus",
  "kind": "method",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Build current and target CSF profiles with the three Cyber AI Profile focus areas.",
  "chapters": [
   3
  ],
  "location": "03_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 8
 },
 {
  "name": "Placing a new security AI capability on the reference architecture",
  "kind": "method",
  "id_prefix": null,
  "activity": "Architecture",
  "purpose": "Place a security AI capability on the platform's controls and layers.",
  "chapters": [
   4
  ],
  "location": "04_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 4
 },
 {
  "name": "Writing a risk-appetite statement for security AI",
  "kind": "method",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Draft a risk-appetite statement with autonomy ceilings and review triggers.",
  "chapters": [
   5
  ],
  "location": "05_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 7
 },
 {
  "name": "Assigning a usage mode and an autonomy level",
  "kind": "method",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Decide mode and level together for a security AI capability and record it.",
  "chapters": [
   6
  ],
  "location": "06_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 18
 },
 {
  "name": "Drafting rules of engagement for an AI exercise",
  "kind": "method",
  "id_prefix": null,
  "activity": "Red teaming and exercises",
  "purpose": "Draft a rules-of-engagement manifest for an exercise that uses AI.",
  "chapters": [
   7
  ],
  "location": "07_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Assuring a vendor's AI feature before enabling it in the SOC",
  "kind": "method",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "Assure a supplier's AI feature before it is switched on.",
  "chapters": [
   8
  ],
  "location": "08_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "Reconciling the AI inventory with discovered assets",
  "kind": "method",
  "id_prefix": null,
  "activity": "Asset management",
  "purpose": "Reconcile declared AI assets with discovered ones to find shadow AI.",
  "chapters": [
   9
  ],
  "location": "09_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 7
 },
 {
  "name": "AI-assisted threat-modelling review on a pull request",
  "kind": "method",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Run a threat-model review in the pull request with soundness checks and reviewer accountability.",
  "chapters": [
   10
  ],
  "location": "10_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 10
 },
 {
  "name": "Defining delegated patch decisions for known-exploited vulnerabilities",
  "kind": "method",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "Define which patch decisions are delegated to AI and within what limits.",
  "chapters": [
   11
  ],
  "location": "11_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "Preparing a safe AI-assisted emulation run",
  "kind": "method",
  "id_prefix": null,
  "activity": "Red teaming and exercises",
  "purpose": "Prepare an emulation run with safeguards, containment and stop conditions.",
  "chapters": [
   12
  ],
  "location": "12_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 11
 },
 {
  "name": "Running a red-team campaign on a retrieval-augmented assistant",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI red teaming",
  "purpose": "Run an AI red-team campaign from taxonomy to suite.",
  "chapters": [
   13
  ],
  "location": "13_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 11
 },
 {
  "name": "Running an escape-path assessment on a production agent",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI red teaming",
  "purpose": "Assess an agent's escape paths and stop path.",
  "chapters": [
   13
  ],
  "location": "13_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 18
 },
 {
  "name": "Hardening approvals against deepfakes",
  "kind": "method",
  "id_prefix": null,
  "activity": "Identity and access",
  "purpose": "Harden payment and privileged-access approvals against synthetic media.",
  "chapters": [
   14
  ],
  "location": "14_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 20
 },
 {
  "name": "Designing a deepfake-resilience exercise",
  "kind": "method",
  "id_prefix": null,
  "activity": "Awareness and training",
  "purpose": "Test the process, not the person, with consent and success criteria.",
  "chapters": [
   15
  ],
  "location": "15_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Applying a guardrail policy to a security AI capability",
  "kind": "method",
  "id_prefix": null,
  "activity": "Data and platform security",
  "purpose": "Apply layered guardrails as code to a capability.",
  "chapters": [
   16
  ],
  "location": "16_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 5
 },
 {
  "name": "Defining degradation modes for a security AI capability",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Define degradation modes so the defence is never lost.",
  "chapters": [
   17
  ],
  "location": "17_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Introducing an AI triage assistant at Level 1 Assisted",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security operations",
  "purpose": "Introduce AI triage in stages with verification and skill retention.",
  "chapters": [
   18
  ],
  "location": "18_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 18
 },
 {
  "name": "Taking a threat report to a deployed, tested detection in a day",
  "kind": "method",
  "id_prefix": null,
  "activity": "Detection engineering",
  "purpose": "Turn a threat report into a reviewed, tested detection.",
  "chapters": [
   19
  ],
  "location": "19_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "Running an AI-assisted incident tabletop",
  "kind": "method",
  "id_prefix": null,
  "activity": "Incident response",
  "purpose": "Exercise an incident involving AI as a tabletop.",
  "chapters": [
   20
  ],
  "location": "20_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Mapping one incident to every reporting obligation",
  "kind": "method",
  "id_prefix": null,
  "activity": "Incident response",
  "purpose": "Derive every reporting clock from the single incident record.",
  "chapters": [
   21
  ],
  "location": "21_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Executing a recovery plan with AI-assisted sequencing and verification",
  "kind": "method",
  "id_prefix": null,
  "activity": "Recovery",
  "purpose": "Execute a recovery plan with sequencing and verification.",
  "chapters": [
   22
  ],
  "location": "22_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Returning an AI system to service after an incident",
  "kind": "method",
  "id_prefix": null,
  "activity": "Recovery",
  "purpose": "Roll back, re-evaluate and approve return to service of an AI system.",
  "chapters": [
   23
  ],
  "location": "23_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Setting up a monthly AI-assisted restore drill",
  "kind": "method",
  "id_prefix": null,
  "activity": "Recovery",
  "purpose": "Run a monthly restore drill that yields evidence of recoverability.",
  "chapters": [
   24
  ],
  "location": "24_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Introducing security chaos engineering in stages",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security chaos engineering",
  "purpose": "Introduce chaos experiments in stages with safety boundaries.",
  "chapters": [
   25
  ],
  "location": "25_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Running a quarterly purple-team session",
  "kind": "method",
  "id_prefix": null,
  "activity": "Improvement",
  "purpose": "Run a quarterly purple session that ends in verified closure.",
  "chapters": [
   26
  ],
  "location": "26_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Steady-state hypothesis for security",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security chaos engineering",
  "purpose": "Falsifiable statement of condition, expected outcome and observation, measured from outside the control tested.",
  "chapters": [
   25
  ],
  "location": "25_security_chaos_engineering.md#steady-state-hypotheses-for-security",
  "has_full_template": false,
  "language": null,
  "sources": [
   67,
   68,
   70
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Golden-dataset evaluation",
  "kind": "method",
  "id_prefix": null,
  "activity": "Improvement",
  "purpose": "Score an AI component against a frozen, labelled set of past cases with hard negatives and gates.",
  "chapters": [
   26
  ],
  "location": "26_purple_teaming_and_improvement.md#building-a-golden-dataset",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 0
 },
 {
  "name": "Purple loop (finding to verified closure)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Improvement",
  "purpose": "Every finding ends as a verified control, detection and re-test with evidence.",
  "chapters": [
   26,
   12,
   19
  ],
  "location": "26_purple_teaming_and_improvement.md#the-purple-loop",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Restore, do not repair (known-good redeploy, clean room)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Recovery",
  "purpose": "Rebuild from known-good definitions and restore into a clean room instead of cleaning in place.",
  "chapters": [
   17,
   21,
   22
  ],
  "location": "22_recovery_plan_execution.md#restore-do-not-repair",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 16
 },
 {
  "name": "Assure once, comply many",
  "kind": "method",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Map one control and its evidence to several European obligations.",
  "chapters": [
   3
  ],
  "location": "03_csf_with_ai_focus.md#mapping-csf-to-european-obligations",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 8
 },
 {
  "name": "Honeytokens, canaries and decoys",
  "kind": "method",
  "id_prefix": null,
  "activity": "Deception",
  "purpose": "Plant artefacts with no legitimate use and monitor them as detections.",
  "chapters": [
   19
  ],
  "location": "19_detection_intelligence_deception.md#deception-honeytokens-canaries-and-decoys",
  "has_full_template": false,
  "language": null,
  "sources": [
   12
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 23
 },
 {
  "name": "AI-assisted STRIDE and ATLAS analysis",
  "kind": "method",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Classify generated threats by STRIDE, ATT&CK/ATLAS and OWASP identifiers and review them for soundness.",
  "chapters": [
   10
  ],
  "location": "10_threat_modelling_and_risk_assessment.md#ai-assisted-stride-and-atlas-analysis",
  "has_full_template": false,
  "language": null,
  "sources": [
   10,
   11,
   14
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 10
 },
 {
  "name": "Threat-led testing (DORA TLPT / TIBER-EU)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Red teaming and exercises",
  "purpose": "Threat-intelligence-based red teaming run by a white team under TIBER-EU.",
  "chapters": [
   7,
   12
  ],
  "location": "07_policy_and_rules_of_engagement.md#threat-led-testing-dora-tlpt-and-tiber-eu",
  "has_full_template": false,
  "language": null,
  "sources": [
   13
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 11
 },
 {
  "name": "Chain of custody for AI analysis",
  "kind": "method",
  "id_prefix": null,
  "activity": "Incident response",
  "purpose": "Keep evidence, prompts, outputs and versions reproducible for defensible AI-assisted analysis.",
  "chapters": [
   20
  ],
  "location": "20_incident_management.md#defensible-analysis",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 13
 },
 {
  "name": "Containment that does not depend on intent",
  "kind": "method",
  "id_prefix": null,
  "activity": "Platform security",
  "purpose": "Task-scoped credentials, default-deny egress, policy outside the model, budgets and an out-of-band stop path.",
  "chapters": [
   4,
   12,
   14,
   18,
   21
  ],
  "location": "21_reporting_and_mitigation.md#containment-that-does-not-depend-on-intent",
  "has_full_template": false,
  "language": null,
  "sources": [
   73
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 20
 },
 {
  "name": "MITRE ATT&CK",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Knowledge base of adversary tactics and techniques used to map emulation, detections and findings.",
  "chapters": [
   1,
   2,
   4,
   7,
   8,
   9,
   10,
   12,
   14,
   15,
   17,
   18,
   19,
   20,
   25,
   26
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   10
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 10
 },
 {
  "name": "MITRE ATLAS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Knowledge base of adversarial techniques against AI systems used for threat models and red-team plans.",
  "chapters": [
   2,
   4,
   7,
   8,
   9,
   10,
   11,
   12,
   13,
   16,
   18,
   19,
   20,
   25,
   26
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   11
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 10
 },
 {
  "name": "MITRE D3FEND",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Architecture",
  "purpose": "Countermeasure knowledge graph used to map building blocks to defensive techniques and for deception.",
  "chapters": [
   4,
   10,
   19,
   21
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   12
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for Large Language Model Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI red teaming",
  "purpose": "Risk taxonomy used as a test plan and in threat models.",
  "chapters": [
   4,
   6,
   7,
   8,
   9,
   10,
   11,
   13,
   14,
   16,
   17,
   18,
   21,
   23
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   14
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for Agentic Applications for 2026",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI red teaming",
  "purpose": "Threat classes for agents used in threat models and campaign plans.",
  "chapters": [
   10,
   13,
   14
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   15
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 10
 },
 {
  "name": "NIST Cybersecurity Framework 2.0",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Framework whose six Functions and 22 Categories organise the book.",
  "chapters": [
   1,
   2,
   3,
   4,
   5,
   6,
   7,
   8,
   9,
   10,
   11,
   12,
   13,
   14,
   15,
   16,
   17,
   18,
   19,
   20,
   21,
   22,
   23,
   24,
   25,
   26,
   27,
   28
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   19
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 8
 },
 {
  "name": "NIST Cyber AI Profile (IR 8596 preliminary draft)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Profile adding three AI focus areas (secure, defend, thwart) to CSF Categories.",
  "chapters": [
   1,
   2,
   3,
   4,
   5,
   6,
   7,
   8,
   9,
   10,
   11,
   12,
   13,
   14,
   15,
   16,
   17,
   18,
   19,
   20,
   21,
   22,
   23,
   24,
   25,
   26
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   20
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 8
 },
 {
  "name": "TIBER-EU",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Red teaming and exercises",
  "purpose": "ECB framework for threat-intelligence-based ethical red teaming.",
  "chapters": [
   1,
   2,
   6,
   7,
   12,
   25,
   26,
   27
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   13
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 11
 },
 {
  "name": "Sigma",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Detection engineering",
  "purpose": "Portable detection rule format converted to target SIEM query languages.",
  "chapters": [
   19,
   26
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   32
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "STIX 2.1 and TAXII 2.1",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat intelligence",
  "purpose": "OASIS standards to structure and exchange threat intelligence.",
  "chapters": [
   10,
   19
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   24
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "EPSS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "FIRST score estimating the probability of exploitation in the next 30 days.",
  "chapters": [
   5,
   11
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   26
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "CISA Known Exploited Vulnerabilities catalogue",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "List of vulnerabilities with evidence of active exploitation.",
  "chapters": [
   5,
   11
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   27
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "European Vulnerability Database (EUVD)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "ENISA database of vulnerability information under a European identifier.",
  "chapters": [
   5,
   11
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   28
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "SSVC",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "Decision-based vulnerability prioritisation method suggested by the NCSC.",
  "chapters": [
   11
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   38
  ],
  "mention": "passing",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "STRIDE",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Threat classification scheme applied to boundaries in threat models.",
  "chapters": [
   10
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   25
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 10
 },
 {
  "name": "Threat Modeling Manifesto",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Principles for continuous threat modelling.",
  "chapters": [
   10
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   25
  ],
  "mention": "passing",
  "notes": null,
  "book": 4,
  "tools_chapter": 10
 },
 {
  "name": "ISO/IEC 27001",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Information security management standard the CSF profile is aligned with.",
  "chapters": [
   1,
   3,
   9
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   30
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 8
 },
 {
  "name": "Chaos Monkey",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security chaos engineering",
  "purpose": "Netflix tool that terminates production instances, the origin of chaos engineering.",
  "chapters": [
   25
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   69
  ],
  "mention": "passing",
  "notes": null,
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Principles of Chaos Engineering",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security chaos engineering",
  "purpose": "Community principles behind steady-state hypotheses and experiments.",
  "chapters": [
   25
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   70,
   68
  ],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Rego",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Policy language used for the configuration-baseline example.",
  "chapters": [
   3,
   16
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 4,
  "tools_chapter": 5
 },
 {
  "name": "Model Context Protocol (MCP)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI platform",
  "purpose": "Protocol for connectors and tools that extend agents; recorded as an asset class.",
  "chapters": [
   9,
   2
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 4,
  "tools_chapter": 20
 },
 {
  "name": "SPIFFE",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Identity and access",
  "purpose": "Workload identity scheme appearing in manifests (spiffe:// IDs).",
  "chapters": [
   14,
   18
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 4,
  "tools_chapter": 20
 },
 {
  "name": "Big Sleep",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "Google Project Zero/DeepMind LLM vulnerability-discovery project cited as evidence.",
  "chapters": [
   11
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   58
  ],
  "mention": "passing",
  "notes": null,
  "book": 4,
  "tools_chapter": 12
 },
 {
  "name": "purple-align",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Improvement",
  "purpose": "Tool name in the PurpleSession example for read-only reconciliation at Mode 4 Level 0.",
  "chapters": [
   26
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 4,
  "tools_chapter": 14
 },
 {
  "name": "Mermaid CLI",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Renders diagram sources to PNG for the book.",
  "chapters": [],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Used by the repository, not discussed in chapters",
  "book": 4,
  "tools_chapter": 4
 },
 {
  "name": "Pandoc with XeLaTeX (Eisvogel template)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds PDF, EPUB and DOCX editions.",
  "chapters": [],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Used by the repository, not discussed in chapters",
  "book": 4,
  "tools_chapter": 0
 },
 {
  "name": "MkDocs",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds the documentation website.",
  "chapters": [],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Used by the repository, not discussed in chapters",
  "book": 4,
  "tools_chapter": 4
 },
 {
  "name": "scripts/toc_definition.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Holds the table of contents and regenerates the index, navigation and chapter list.",
  "chapters": [
   "B"
  ],
  "location": "scripts/toc_definition.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'",
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/generate_outlines.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Regenerates the chapter briefs and CSF coverage matrix.",
  "chapters": [
   "B"
  ],
  "location": "scripts/generate_outlines.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'",
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/csf_data.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "CSF 2.0 Functions, Categories and Cyber AI Profile focus areas.",
  "chapters": [
   "B"
  ],
  "location": "scripts/csf_data.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'",
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/outline_data.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Chapter briefs for the book (data for the outline generator).",
  "chapters": [
   "B"
  ],
  "location": "scripts/outline_data.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/format_citations.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Derives citation labels from the bibliography.",
  "chapters": [
   "B"
  ],
  "location": "scripts/format_citations.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'",
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/renumber_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Keeps the bibliography numbered 1..N without gaps.",
  "chapters": [
   "B"
  ],
  "location": "scripts/renumber_sources.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'",
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/update_reference_backlinks.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Refreshes 'Referenced in' annotations in the references.",
  "chapters": [
   "B"
  ],
  "location": "scripts/update_reference_backlinks.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/build_sources_section.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Writes or refreshes a chapter's Sources list.",
  "chapters": [
   "B"
  ],
  "location": "scripts/build_sources_section.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/audit_references.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Audits chapter citations against the bibliography.",
  "chapters": [
   "B"
  ],
  "location": "scripts/audit_references.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Verifies cited URLs and ISBNs.",
  "chapters": [
   "B"
  ],
  "location": "scripts/verify_sources.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_mermaid_diagrams.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Renders and validates Mermaid diagrams against committed PNGs.",
  "chapters": [
   "B"
  ],
  "location": "scripts/check_mermaid_diagrams.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'",
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_doc_numbering.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Validates chapter file numbering.",
  "chapters": [
   "B"
  ],
  "location": "scripts/check_doc_numbering.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/navigation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Resolves the ordered chapter list from mkdocs.yml.",
  "chapters": [
   "B"
  ],
  "location": "scripts/navigation.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_branding.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Validates diagram brand compliance.",
  "chapters": [
   "B"
  ],
  "location": "scripts/validate_diagram_branding.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_elements.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Checks diagrams have no more than 15 elements.",
  "chapters": [
   "B"
  ],
  "location": "scripts/validate_diagram_elements.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_figure_captions.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Checks figure captions start with 'Figure'.",
  "chapters": [
   "B"
  ],
  "location": "scripts/validate_figure_captions.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_heading_capitalization.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Checks headings start with uppercase.",
  "chapters": [
   "B"
  ],
  "location": "scripts/validate_heading_capitalization.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/analyze_chapter_lengths.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Analyses chapter length distribution.",
  "chapters": [
   "B"
  ],
  "location": "scripts/analyze_chapter_lengths.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_environment.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Verifies toolchain versions against locked versions.",
  "chapters": [
   "B"
  ],
  "location": "scripts/verify_environment.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "docs/build_book.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Builds PDF, EPUB and DOCX with Pandoc.",
  "chapters": [
   "B"
  ],
  "location": "docs/build_book.sh",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "generate_book.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Generates book content from the chapter list.",
  "chapters": [
   "B"
  ],
  "location": "generate_book.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "generate_presentation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Generates a PowerPoint deck from chapters.",
  "chapters": [
   "B"
  ],
  "location": "generate_presentation.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "generate_whitepapers.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Generates whitepapers from chapters.",
  "chapters": [
   "B"
  ],
  "location": "generate_whitepapers.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "build_all_orchestrator.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "Coordinates building all deliverables.",
  "chapters": [
   "B"
  ],
  "location": "build_all_orchestrator.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "hooks/bracketed_spans.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Repository tooling",
  "purpose": "MkDocs hook rendering Pandoc bracketed spans such as bibliography anchors.",
  "chapters": [
   "B"
  ],
  "location": "hooks/bracketed_spans.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 4,
  "tools_chapter": null
 },
 {
  "name": "Terms of reference for an AI threat assessment",
  "kind": "artefact",
  "id_prefix": "ATA-*",
  "activity": "Mandate",
  "purpose": "Defines the mandate, scope, sponsor, owner and method of an organisation's AI threat assessment.",
  "chapters": [
   1,
   "Appendix A"
  ],
  "location": "01_introduction.md#worked-example-terms-of-reference; 37_appendix_a_code_examples.md#01_code_tor",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind ThreatAssessmentTermsOfReference; ATA-NR-2026-01, ATA-HM-2026-01",
  "book": 5,
  "tools_chapter": 18
 },
 {
  "name": "Trope catalogue",
  "kind": "artefact",
  "id_prefix": "T1-T10",
  "activity": "Method",
  "purpose": "Catalogue of the ten science-fiction tropes treated as testable hypotheses, with scale and evidence per trope.",
  "chapters": [
   2,
   "Appendix A"
  ],
  "location": "02_machine_dystopias.md; 37_appendix_a_code_examples.md#02_code_tropes",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind TropeCatalogue",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Claim card",
  "kind": "artefact",
  "id_prefix": "CC-*",
  "activity": "Evidence",
  "purpose": "Records one AI risk claim, who makes it, its incentives and how it is weighed.",
  "chapters": [
   3
  ],
  "location": "03_voices_of_alarm.md#worked-example-a-claim-card",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind ClaimCard; CC-NR-2026-03",
  "book": 5,
  "tools_chapter": 7
 },
 {
  "name": "Graded evidence record",
  "kind": "artefact",
  "id_prefix": "EVD-*",
  "activity": "Evidence",
  "purpose": "Grades one threat claim on the evidence ladder with outlook label, challenger and review triggers.",
  "chapters": [
   4,
   "Appendix A"
  ],
  "location": "04_weighing_the_evidence.md; 37_appendix_a_code_examples.md#04_code_evidence",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind EvidenceRecord; EVD-024-01",
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "Crux map",
  "kind": "artefact",
  "id_prefix": "CRX-*",
  "activity": "Deliberation",
  "purpose": "Records the points on which participants in a structured AI risk discussion disagree and what evidence would settle each.",
  "chapters": [
   4
  ],
  "location": "04_weighing_the_evidence.md#worked-example-a-crux-map",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind CruxMap; CRX-NR-2026-01. Appendix B lists it together with the discussion format",
  "book": 5,
  "tools_chapter": 7
 },
 {
  "name": "Capability snapshot",
  "kind": "artefact",
  "id_prefix": "CAPS-*",
  "activity": "Evidence",
  "purpose": "Dated record of what frontier AI can do in selected domains and how fast it is changing, for use in the register.",
  "chapters": [
   5
  ],
  "location": "05_state_of_ai.md#worked-example-a-capability-snapshot-record",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind CapabilitySnapshot; not listed in Appendix B",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Team working agreement for AI use",
  "kind": "artefact",
  "id_prefix": "WA-*",
  "activity": "Human mind",
  "purpose": "Team agreement on which analytic tasks are done with, without or after AI, with reasoning checks to preserve skill.",
  "chapters": [
   6
  ],
  "location": "06_cognitive_offloading.md#worked-example-a-team-working-agreement",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "AI policy for a school or graduate programme",
  "kind": "artefact",
  "id_prefix": "AIDR-*",
  "activity": "Human mind",
  "purpose": "Classifies tasks as excluded, tutor or tool use and reserves learning tasks for humans, recorded as an AI Decision Record.",
  "chapters": [
   7
  ],
  "location": "07_learning_and_education.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "AIDR-0470; classroom lanes",
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "Sycophancy evaluation configuration",
  "kind": "artefact",
  "id_prefix": "EVAL-*",
  "activity": "Human mind",
  "purpose": "Evaluation configuration measuring an assistant's agreement with false user claims before release.",
  "chapters": [
   8
  ],
  "location": "08_persuasion_and_manipulation.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "EVAL-NR-SYC-001",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Safeguarding policy for an assistant",
  "kind": "artefact",
  "id_prefix": "SG-*",
  "activity": "Human mind",
  "purpose": "Safeguarding policy for a public-facing assistant covering vulnerable users, minors and crisis escalation.",
  "chapters": [
   9
  ],
  "location": "09_companions_and_mental_health.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind SafeguardingPolicy; SG-NR-CSA-01",
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "Content-provenance policy",
  "kind": "artefact",
  "id_prefix": "CPP-*",
  "activity": "Society",
  "purpose": "Policy for signing, labelling and publishing a canonical record of an authority's own communications.",
  "chapters": [
   10
  ],
  "location": "10_information_ecosystem.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CPP-NR-2026-01",
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "Harm-path review of an automated decision system",
  "kind": "artefact",
  "id_prefix": "HPR-*",
  "activity": "Society",
  "purpose": "Lists harm paths of an automated decision system, the control and evidence blocking each, and what remains open.",
  "chapters": [
   11
  ],
  "location": "11_automated_state.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "HPR-NR-2026-01",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Disparate-impact test configuration",
  "kind": "artefact",
  "id_prefix": "DIT-*",
  "activity": "Society",
  "purpose": "Release-pipeline test configuration computing outcome and error-rate disparities across groups with thresholds.",
  "chapters": [
   12
  ],
  "location": "12_discrimination_at_scale.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "DIT-NR-CR-01",
  "book": 5,
  "tools_chapter": 22
 },
 {
  "name": "Prohibited-practice check",
  "kind": "artefact",
  "id_prefix": "PPC-*",
  "activity": "Society",
  "purpose": "Check in the AI inventory pipeline that a system does not fall under Article 5 AI Act prohibited practices.",
  "chapters": [
   13
  ],
  "location": "13_surveillance.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "PPC-NR-01; not listed in Appendix B",
  "book": 5,
  "tools_chapter": 3
 },
 {
  "name": "Oversight-quality metric",
  "kind": "artefact",
  "id_prefix": "OQM-*",
  "activity": "Society",
  "purpose": "Metric that detects rubber-stamping by human overseers of an AI system.",
  "chapters": [
   14
  ],
  "location": "14_work_and_skills.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "OQM-HM-CLM-01",
  "book": 5,
  "tools_chapter": 8
 },
 {
  "name": "Dependency map with exit references",
  "kind": "artefact",
  "id_prefix": "DEP-*",
  "activity": "Society",
  "purpose": "Maps AI supplier dependencies layer by layer with an exit plan, cost and time for each critical service.",
  "chapters": [
   15
  ],
  "location": "15_inequality_and_power.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "DEP-NR-2026-01; EXIT-* exit plans are referenced, not defined here",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Procurement clause on training-data transparency and opt-out compliance",
  "kind": "artefact",
  "id_prefix": "PC-*",
  "activity": "Society",
  "purpose": "Contract clause requiring suppliers to disclose training-data summaries and honour opt-outs.",
  "chapters": [
   16
  ],
  "location": "16_culture_and_creativity.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "PC-NR-GENAI-2026-03; not listed in Appendix B",
  "book": 5,
  "tools_chapter": 21
 },
 {
  "name": "Model-routing and carbon policy",
  "kind": "artefact",
  "id_prefix": "RP-*",
  "activity": "Society",
  "purpose": "Routing policy defaulting to the smallest adequate model, with footprint reporting.",
  "chapters": [
   17
  ],
  "location": "17_environment.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "RP-HM-CLAIMS-2026-02",
  "book": 5,
  "tools_chapter": 17
 },
 {
  "name": "Threat register entry (AI-accelerated exploitation)",
  "kind": "artefact",
  "id_prefix": "THR-NR-*",
  "activity": "Threat register",
  "purpose": "Worked register entry for AI-accelerated exploitation of internet-facing services.",
  "chapters": [
   18
  ],
  "location": "18_cyber_offence.md#worked-example-threat-register-entry-thr-nr-02",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "THR-NR-02; schema in 32_CODE_SCHEMA",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Procurement clause for catastrophic-misuse safeguards",
  "kind": "artefact",
  "id_prefix": "HM-PROC-*",
  "activity": "Misuse",
  "purpose": "Contract clause requiring a general-purpose model provider to evidence catastrophic-misuse safeguards.",
  "chapters": [
   19
  ],
  "location": "19_mass_harm_uplift.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "HM-PROC-GPAI-MISUSE-01; not listed in Appendix B",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Callback-verification policy for approvals",
  "kind": "artefact",
  "id_prefix": "CVP-*",
  "activity": "Misuse",
  "purpose": "Policy as code requiring out-of-band callback verification for high-value payment and identity approvals.",
  "chapters": [
   20
  ],
  "location": "20_fraud_and_influence.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CVP-HM-2026-01",
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "Supplier-exposure record",
  "kind": "artefact",
  "id_prefix": "SXR-*",
  "activity": "Misuse",
  "purpose": "Records the defence-sector exposure of a critical AI supplier.",
  "chapters": [
   21
  ],
  "location": "21_autonomous_weapons.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "SXR-HM-2026-03",
  "book": 5,
  "tools_chapter": 9
 },
 {
  "name": "Threat register entry (reward hacking)",
  "kind": "artefact",
  "id_prefix": "THR-HM-*",
  "activity": "Threat register",
  "purpose": "Worked register entry for reward hacking in an IT-operations agent; also basis for the shortcut-rate evaluation plan.",
  "chapters": [
   22
  ],
  "location": "22_specification_gaming.md#worked-example-threat-register-entry-thr-hm-03",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "THR-HM-03. Appendix B calls it Shortcut-rate evaluation plan, but the block is a register entry",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Layered evaluation plan with monitoring and decoys",
  "kind": "artefact",
  "id_prefix": "EVP-*",
  "activity": "Machines beyond control",
  "purpose": "Layered assurance plan: supplier evidence, production-harness tests, paired variants, telemetry, decoys, containment.",
  "chapters": [
   23
  ],
  "location": "23_deception_and_scheming.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "EVP-HM-CTA-2026-01",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Stop-path test record",
  "kind": "artefact",
  "id_prefix": "SPT-*",
  "activity": "Machines beyond control",
  "purpose": "Records a test that an agent can be stopped by a route it cannot block.",
  "chapters": [
   24
  ],
  "location": "24_self_preservation.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind StopPathTestRecord; SPT-HM-ITOPS-2026-Q4",
  "book": 5,
  "tools_chapter": 19
 },
 {
  "name": "Agent incident timeline record",
  "kind": "artefact",
  "id_prefix": "TL-*",
  "activity": "Machines beyond control",
  "purpose": "Timeline reconstructed from logs of an agent incident, for rehearsal and classification.",
  "chapters": [
   25
  ],
  "location": "25_agents_in_the_wild.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "TL-HM-TTX-2026-01",
  "book": 5,
  "tools_chapter": 13
 },
 {
  "name": "Delegation register entry with reversibility test",
  "kind": "artefact",
  "id_prefix": "DEL-*; RVT-*",
  "activity": "Machines beyond control",
  "purpose": "Records a delegated function, its owner and the result of a test of working without the AI.",
  "chapters": [
   26
  ],
  "location": "26_gradual_disempowerment.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "DEL-NR-BEN-01, RVT-NR-2027-01",
  "book": 5,
  "tools_chapter": 18
 },
 {
  "name": "Threat register entry (systemic loss of control)",
  "kind": "artefact",
  "id_prefix": "THR-HM-*",
  "activity": "Threat register",
  "purpose": "Complete register entry for civilisational loss-of-control scenario with raising and lowering triggers.",
  "chapters": [
   27
  ],
  "location": "27_loss_of_control_and_extinction.md#worked-example-threat-register-entry-thr-hm-09",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind ThreatRegisterEntry; THR-HM-09",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Instrument mapping of register entries",
  "kind": "artefact",
  "id_prefix": "IMAP-*",
  "activity": "Response",
  "purpose": "Maps each register entry to the instruments that require a control, duty holders and residual gaps.",
  "chapters": [
   28
  ],
  "location": "28_what_europe_has_decided.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "IMAP-2026-01; not listed in Appendix B",
  "book": 5,
  "tools_chapter": 7
 },
 {
  "name": "Supplier evidence request from a safety framework",
  "kind": "artefact",
  "id_prefix": "SER-*",
  "activity": "Response",
  "purpose": "Evidence request to a model provider derived from its published safety framework commitments.",
  "chapters": [
   29
  ],
  "location": "29_frontier_safety.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "SER-HM-2026-01",
  "book": 5,
  "tools_chapter": 9
 },
 {
  "name": "Control-to-threat coverage matrix",
  "kind": "artefact",
  "id_prefix": "CCM-*; CTRL-*",
  "activity": "Response",
  "purpose": "Maps registered threats to controls and states whether each control is verified, declared or absent.",
  "chapters": [
   30
  ],
  "location": "30_organisational_defences.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CCM-HM-2027-01",
  "book": 5,
  "tools_chapter": 14
 },
 {
  "name": "Household and classroom agreement on AI use",
  "kind": "artefact",
  "id_prefix": "LIB-*",
  "activity": "Individuals",
  "purpose": "One-page agreement with three lanes (by ourselves, with a tutor, as a tool), attempt rule and safety rules.",
  "chapters": [
   31
  ],
  "location": "31_staying_capable.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Guide only; the code block in ch. 31 is a library AI literacy programme (LIB-NR-AIL-2027-01), which Appendix B does not list",
  "book": 5,
  "tools_chapter": 0
 },
 {
  "name": "Library AI literacy programme",
  "kind": "artefact",
  "id_prefix": "LIB-*",
  "activity": "Individuals",
  "purpose": "One-page programme of six evenings at a municipal library on living with AI.",
  "chapters": [
   31
  ],
  "location": "31_staying_capable.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "LIB-NR-AIL-2027-01",
  "book": 5,
  "tools_chapter": 0
 },
 {
  "name": "AI threat register",
  "kind": "artefact",
  "id_prefix": "THR-*",
  "activity": "Response",
  "purpose": "Version-controlled register of AI threats, one file per entry, with scale, trope, rung, label, owner and triggers.",
  "chapters": [
   4,
   32,
   "Appendix A"
  ],
  "location": "32_threat_register.md#worked-example-the-full-threat-register-of-hansa-mutual",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind ThreatRegister; THR-NR-NN and THR-HM-NN",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Schema of an AI threat register entry",
  "kind": "artefact",
  "id_prefix": "THR-*",
  "activity": "Response",
  "purpose": "JSON Schema validating register entries in the pipeline (additional properties forbidden).",
  "chapters": [
   32,
   "Appendix A"
  ],
  "location": "37_appendix_a_code_examples.md#32_code_schema",
  "has_full_template": true,
  "language": "json",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "One-page board briefing",
  "kind": "artefact",
  "id_prefix": "THR-*",
  "activity": "Response",
  "purpose": "One-page board report with a row per scale and a tail row; shows rung and label, no scores or heat maps.",
  "chapters": [
   32
  ],
  "location": "32_threat_register.md#board-reporting",
  "has_full_template": false,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": "Table of five rows, not a full template",
  "book": 5,
  "tools_chapter": 13
 },
 {
  "name": "Threat statement",
  "kind": "artefact",
  "id_prefix": "ATA-*",
  "activity": "Response",
  "purpose": "One-page statement by which Nordvik Region and Hansa Mutual answer their council and risk committee.",
  "chapters": [
   33
  ],
  "location": "33_conclusions_for_nordvik_and_hansa.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind ThreatStatement; not listed in Appendix B",
  "book": 5,
  "tools_chapter": 13
 },
 {
  "name": "Positive-scenario entry",
  "kind": "artefact",
  "id_prefix": "POS-*",
  "activity": "Response",
  "purpose": "Register entry for what the organisation hopes to achieve with AI, using the register schema.",
  "chapters": [
   34
  ],
  "location": "34_what_going_well_looks_like.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "POS-NR-01; kind ScenarioRegisterEntry; not listed in Appendix B",
  "book": 5,
  "tools_chapter": 13
 },
 {
  "name": "Threat register snapshot with triggers",
  "kind": "artefact",
  "id_prefix": "THR-BOOK-*; TRG-*",
  "activity": "Response",
  "purpose": "Snapshot of the book's final verdicts by trope with raising/lowering triggers.",
  "chapters": [
   35
  ],
  "location": "35_conclusion.md#worked-example",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "kind ThreatRegisterSnapshot; THR-BOOK-2026-11",
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Calibration log",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Response",
  "purpose": "Log of lessons and forecast calibration started in the first register quarter.",
  "chapters": [
   32
  ],
  "location": "32_threat_register.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Mentioned in the 13-week guide only; no template",
  "book": 5,
  "tools_chapter": 13
 },
 {
  "name": "AI Decision Record",
  "kind": "artefact",
  "id_prefix": "AIDR-*",
  "activity": "Governance",
  "purpose": "Decision record (from AI Governance) cited throughout to document decisions on threat controls.",
  "chapters": [
   7,
   10,
   11,
   13,
   14,
   16,
   20,
   32
  ],
  "location": "AI Governance (earlier volume); AIDR-0470 in 07_learning_and_education.md",
  "has_full_template": false,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Defined in Book 2, used in this book as reference",
  "book": 5,
  "tools_chapter": 7
 },
 {
  "name": "Exit plan",
  "kind": "artefact",
  "id_prefix": "EXIT-*",
  "activity": "Governance",
  "purpose": "Per-supplier exit plan referenced from the dependency map.",
  "chapters": [
   15,
   30
  ],
  "location": "15_inequality_and_power.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Referenced, not defined in this book",
  "book": 5,
  "tools_chapter": 9
 },
 {
  "name": "Evidence ladder",
  "kind": "method",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "Five-rung grading of claims: fiction, argument, laboratory demonstration, incident in the wild, pattern at scale.",
  "chapters": [
   4,
   32,
   35
  ],
  "location": "04_weighing_the_evidence.md#the-evidence-ladder",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Observable, expected, speculation labelling",
  "kind": "method",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "Labels every outlook statement so that rung and outlook are recorded separately.",
  "chapters": [
   4,
   32
  ],
  "location": "04_weighing_the_evidence.md#observable-expected-speculation",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Ten tropes as hypotheses (T1-T10)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Method",
  "purpose": "Tests ten science-fiction tropes as hypotheses with a verdict per trope.",
  "chapters": [
   2,
   35
  ],
  "location": "02_machine_dystopias.md#ten-tropes-as-hypotheses",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Reading an AI risk claim (ten-question check)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "Ten written questions applied to alarm and reassurance by the same standard.",
  "chapters": [
   3
  ],
  "location": "03_voices_of_alarm.md#practical-guide-reading-an-ai-risk-claim",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 7
 },
 {
  "name": "Grading an AI threat claim on the evidence ladder",
  "kind": "method",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "Grader/challenger/owner process producing an evidence record.",
  "chapters": [
   4
  ],
  "location": "04_weighing_the_evidence.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Constructive discussion in four steps",
  "kind": "method",
  "id_prefix": null,
  "activity": "Deliberation",
  "purpose": "Case for concern, case for calm, where positions meet, what can be done, then verdict; run with chair, facilitator and recorder.",
  "chapters": [
   1,
   4,
   "6-27"
  ],
  "location": "04_weighing_the_evidence.md#practical-guide-running-a-constructive-ai-risk-discussion-in-a-board-or-council",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 12
 },
 {
  "name": "Skill-preserving AI use (working agreement and reasoning check)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Human mind",
  "purpose": "Keeps judgement by choosing tasks done with or without AI and peer reasoning checks.",
  "chapters": [
   6
  ],
  "location": "06_cognitive_offloading.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Task classification for AI in education",
  "kind": "method",
  "id_prefix": null,
  "activity": "Human mind",
  "purpose": "Classifies each task as excluded, tutor or tool.",
  "chapters": [
   7
  ],
  "location": "07_learning_and_education.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 7
 },
 {
  "name": "Pre-release sycophancy testing",
  "kind": "method",
  "id_prefix": null,
  "activity": "Human mind",
  "purpose": "Tests that an assistant keeps correct answers under pressure, with evidence in version control.",
  "chapters": [
   8
  ],
  "location": "08_persuasion_and_manipulation.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 16
 },
 {
  "name": "AI companion decision for care settings",
  "kind": "method",
  "id_prefix": null,
  "activity": "Human mind",
  "purpose": "Structured decision whether to offer an AI companion, Article 5(1)(b) as first test.",
  "chapters": [
   9
  ],
  "location": "09_companions_and_mental_health.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Publishing with provenance",
  "kind": "method",
  "id_prefix": null,
  "activity": "Society",
  "purpose": "Signed media, canonical record with SHA-256 hash, labelling and impersonation monitoring.",
  "chapters": [
   10
  ],
  "location": "10_information_ecosystem.md#practical-guide-publishing-with-provenance",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "Harm-path review",
  "kind": "method",
  "id_prefix": null,
  "activity": "Society",
  "purpose": "Finds every harm path of an automated decision system and its blocking control.",
  "chapters": [
   11
  ],
  "location": "11_automated_state.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Fairness metrics (demographic parity, disparate-impact ratio, equal opportunity, equalised odds)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Society",
  "purpose": "Outcome and error comparisons across groups for bias detection.",
  "chapters": [
   12
  ],
  "location": "12_discrimination_at_scale.md#fairness-metrics-and-their-trade-offs",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 22
 },
 {
  "name": "Keeping oversight skills alive (rotation, drills, oversight-quality metric)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Society",
  "purpose": "Maintains overseers' ability to correct AI and work without it.",
  "chapters": [
   14
  ],
  "location": "14_work_and_skills.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 8
 },
 {
  "name": "AI dependency mapping with exit options",
  "kind": "method",
  "id_prefix": null,
  "activity": "Society",
  "purpose": "Layer-by-layer map of dependence with exit cost and time.",
  "chapters": [
   15
  ],
  "location": "15_inequality_and_power.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "AI service footprint estimate",
  "kind": "method",
  "id_prefix": null,
  "activity": "Society",
  "purpose": "Estimates footprint of each AI service and defaults to the smallest adequate model.",
  "chapters": [
   17
  ],
  "location": "17_environment.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Patch velocity as a supervised metric",
  "kind": "method",
  "id_prefix": null,
  "activity": "Misuse",
  "purpose": "Tiers and targets (default 48 hours for known-exploited flaws on exposed systems) reported to the management body.",
  "chapters": [
   18
  ],
  "location": "18_cyber_offence.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [
   179
  ],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 15
 },
 {
  "name": "Assuring a provider's catastrophic-misuse safeguards",
  "kind": "method",
  "id_prefix": null,
  "activity": "Misuse",
  "purpose": "Obtains and records proportionate evidence of provider safeguards.",
  "chapters": [
   19
  ],
  "location": "19_mass_harm_uplift.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Callback verification of approvals",
  "kind": "method",
  "id_prefix": null,
  "activity": "Misuse",
  "purpose": "No release on voice, face or message alone; out-of-band callback with evidence.",
  "chapters": [
   20
  ],
  "location": "20_fraud_and_influence.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Supplier defence-exposure assessment",
  "kind": "method",
  "id_prefix": null,
  "activity": "Misuse",
  "purpose": "Makes supplier defence exposure visible, extending model-origin assessment.",
  "chapters": [
   21
  ],
  "location": "21_autonomous_weapons.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 9
 },
 {
  "name": "Shortcut-rate measurement",
  "kind": "method",
  "id_prefix": null,
  "activity": "Machines beyond control",
  "purpose": "Estimates how often an agent meets the measure but not the intent, in a replica environment.",
  "chapters": [
   22
  ],
  "location": "22_specification_gaming.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 15
 },
 {
  "name": "Layered assurance against evaluation awareness (paired variants, report-record comparison, decoys)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Machines beyond control",
  "purpose": "Assurance that does not depend on the model being unaware of tests.",
  "chapters": [
   23
  ],
  "location": "23_deception_and_scheming.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 21
 },
 {
  "name": "Stop-path test",
  "kind": "method",
  "id_prefix": null,
  "activity": "Machines beyond control",
  "purpose": "Shows an agent can be stopped by a route outside it, using a test double and named stop holders.",
  "chapters": [
   24
  ],
  "location": "24_self_preservation.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 19
 },
 {
  "name": "Agent incident rehearsal from logs",
  "kind": "method",
  "id_prefix": null,
  "activity": "Machines beyond control",
  "purpose": "Reconstructs an agent incident timeline from logs and classifies it in time.",
  "chapters": [
   25
  ],
  "location": "25_agents_in_the_wild.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 13
 },
 {
  "name": "Reversibility test",
  "kind": "method",
  "id_prefix": null,
  "activity": "Machines beyond control",
  "purpose": "Tests whether a delegated function can be done acceptably without the AI for a defined period.",
  "chapters": [
   26
  ],
  "location": "26_gradual_disempowerment.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "Existential-risk scenario writing for a register",
  "kind": "method",
  "id_prefix": null,
  "activity": "Machines beyond control",
  "purpose": "Records civilisational risk with decision rules and raising/lowering triggers.",
  "chapters": [
   27
  ],
  "location": "27_loss_of_control_and_extinction.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 7
 },
 {
  "name": "Mapping register to legal instruments",
  "kind": "method",
  "id_prefix": null,
  "activity": "Response",
  "purpose": "Maps each entry to scales, instruments, duty holders and gaps.",
  "chapters": [
   28
  ],
  "location": "28_what_europe_has_decided.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 7
 },
 {
  "name": "Reading a system card as a deployer",
  "kind": "method",
  "id_prefix": null,
  "activity": "Response",
  "purpose": "Extracts from system card and framework what bears on own use; gaps become tests and evidence requests.",
  "chapters": [
   29
  ],
  "location": "29_frontier_safety.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [
   124,
   125,
   126,
   127
  ],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 16
 },
 {
  "name": "Control-to-threat mapping and gap testing",
  "kind": "method",
  "id_prefix": null,
  "activity": "Response",
  "purpose": "Classifies threats as covered by verified, declared or no controls and tests gaps.",
  "chapters": [
   30
  ],
  "location": "30_organisational_defences.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "Household and classroom lanes",
  "kind": "method",
  "id_prefix": null,
  "activity": "Individuals",
  "purpose": "Three-lane task sorting and attempt rule.",
  "chapters": [
   31
  ],
  "location": "31_staying_capable.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 0
 },
 {
  "name": "Setting up a threat register in a quarter (13-week plan)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Response",
  "purpose": "Nine-step programme to a validated, owned and reported register.",
  "chapters": [
   32
  ],
  "location": "32_threat_register.md#practical-guide",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Trigger-based register review",
  "kind": "method",
  "id_prefix": null,
  "activity": "Response",
  "purpose": "Reopens entries when named observations occur, in both directions; nextReview as backstop.",
  "chapters": [
   32
  ],
  "location": "32_threat_register.md#triggers-and-review",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 7
 },
 {
  "name": "Tail-risk handling with leading indicators",
  "kind": "method",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "Tail risks kept in register with leading indicators and triggers rather than agreed probabilities.",
  "chapters": [
   4,
   27
  ],
  "location": "04_weighing_the_evidence.md#tail-risks-and-the-risk-register",
  "has_full_template": false,
  "language": null,
  "sources": [
   72
  ],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 7
 },
 {
  "name": "Dangerous-capability evaluations",
  "kind": "method",
  "id_prefix": null,
  "activity": "Frontier safety",
  "purpose": "Evaluating models for extreme risk before deployment.",
  "chapters": [
   5,
   19,
   27,
   29
  ],
  "location": "29_frontier_safety.md#dangerous-capability-evaluations",
  "has_full_template": false,
  "language": null,
  "sources": [
   123
  ],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Decoys (self-concealing canary assets)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Machines beyond control",
  "purpose": "Honeypot-style decoys recorded in a register the system cannot read; any use is an incident, rotated every 90 days.",
  "chapters": [
   23
  ],
  "location": "23_deception_and_scheming.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Part of layered plan",
  "book": 5,
  "tools_chapter": 16
 },
 {
  "name": "NIST AI Risk Management Framework (AI RMF 1.0) and Generative AI Profile",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Risk management",
  "purpose": "Cited for the point that hard-to-measure risks are not therefore low.",
  "chapters": [
   4,
   32
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   72,
   73
  ],
  "mention": "passing",
  "notes": null,
  "book": 5,
  "tools_chapter": 8
 },
 {
  "name": "Coalition for Content Provenance and Authenticity (C2PA) content credentials",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Provenance",
  "purpose": "Open standard binding signed statements of origin and edits to a file.",
  "chapters": [
   10
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Source 5 is the labelling Code of Practice, not C2PA itself",
  "book": 5,
  "tools_chapter": 20
 },
 {
  "name": "Code of Practice on marking and labelling AI-generated content",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Provenance",
  "purpose": "Voluntary code combining machine-readable marking techniques (metadata, watermarks, detection).",
  "chapters": [
   10
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   5
  ],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 3
 },
 {
  "name": "General-Purpose AI Code of Practice",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Frontier safety",
  "purpose": "Voluntary code covering systemic-risk assessment by GPAI providers.",
  "chapters": [
   10,
   19,
   28
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   3
  ],
  "mention": "passing",
  "notes": null,
  "book": 5,
  "tools_chapter": 3
 },
 {
  "name": "Watermarking and AI-content detection classifiers",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Provenance",
  "purpose": "Technique discussed with its weaknesses.",
  "chapters": [
   10
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   5
  ],
  "mention": "passing",
  "notes": null,
  "book": 5,
  "tools_chapter": 12
 },
 {
  "name": "Exploit Prediction Scoring System (EPSS)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "Prioritises patching along with known-exploited catalogues and EUVD.",
  "chapters": [
   18
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 12
 },
 {
  "name": "Known-exploited vulnerability catalogues",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "Prioritisation input for patch tiers.",
  "chapters": [
   18
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 12
 },
 {
  "name": "European Vulnerability Database (EUVD)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vulnerability management",
  "purpose": "Prioritisation input for patch tiers.",
  "chapters": [
   18
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 5,
  "tools_chapter": 12
 },
 {
  "name": "OpenAI Preparedness Framework",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Frontier safety",
  "purpose": "Tracks categories of catastrophic risk with thresholds; read by deployers as structured attestation.",
  "chapters": [
   19,
   24,
   29
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   126
  ],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Anthropic Responsible Scaling Policy",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Frontier safety",
  "purpose": "Ladder of AI Safety Levels triggering deployment and security measures.",
  "chapters": [
   19,
   29
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   127
  ],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "System cards (o1, Claude Opus 4 and Sonnet 4)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Frontier safety",
  "purpose": "Provider documents read as evidence of model behaviour.",
  "chapters": [
   22,
   23,
   24,
   29
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   124,
   125
  ],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 23
 },
 {
  "name": "Model cards",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Documentation",
  "purpose": "Documentation accompanying open-weight models, often without a framework.",
  "chapters": [
   29
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 5,
  "tools_chapter": 4
 },
 {
  "name": "International AI Safety Report",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Evidence",
  "purpose": "Periodic report used as evidence and as review-trigger source.",
  "chapters": [
   5,
   32
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   50
  ],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 8
 },
 {
  "name": "Mermaid, Pandoc, XeLaTeX, MkDocs",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Toolchain that produced the book.",
  "chapters": [
   "About the Author"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 5,
  "tools_chapter": 4
 },
 {
  "name": "JSON Schema",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Governance as code",
  "purpose": "Language used to validate register entries (32_CODE_SCHEMA).",
  "chapters": [
   32,
   "Appendix A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "Version control with pull-request review and pipeline validation",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Governance as code",
  "purpose": "Registers kept one file per entry in a governance repository, validated on change.",
  "chapters": [
   32
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 5,
  "tools_chapter": 5
 },
 {
  "name": "scripts/toc_definition.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Holds the table of contents and regenerates the chapter lists.",
  "chapters": [
   "Appendix B"
  ],
  "location": "scripts/toc_definition.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/generate_outlines.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Regenerates chapter briefs and outlines.",
  "chapters": [
   "Appendix B"
  ],
  "location": "scripts/generate_outlines.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/format_citations.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Derives citation labels from the bibliography.",
  "chapters": [
   "Appendix B"
  ],
  "location": "scripts/format_citations.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/renumber_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Numbers the bibliography 1..N without gaps.",
  "chapters": [
   "Appendix B"
  ],
  "location": "scripts/renumber_sources.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_mermaid_diagrams.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Renders and validates diagrams.",
  "chapters": [
   "Appendix B"
  ],
  "location": "scripts/check_mermaid_diagrams.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/audit_references.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Audits citations against the bibliography.",
  "chapters": [],
  "location": "scripts/audit_references.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies cited sources (URLs and ISBNs).",
  "chapters": [],
  "location": "scripts/verify_sources.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_doc_numbering.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates numbering of chapter files.",
  "chapters": [],
  "location": "scripts/check_doc_numbering.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/build_sources_section.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Writes or refreshes a chapter's Sources list.",
  "chapters": [],
  "location": "scripts/build_sources_section.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/update_reference_backlinks.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Refreshes Referenced-in annotations in the bibliography.",
  "chapters": [],
  "location": "scripts/update_reference_backlinks.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/navigation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Resolves ordered chapter list from mkdocs.yml.",
  "chapters": [],
  "location": "scripts/navigation.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/outline_data.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Holds chapter briefs.",
  "chapters": [],
  "location": "scripts/outline_data.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/analyze_chapter_lengths.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Analyses chapter length distribution.",
  "chapters": [],
  "location": "scripts/analyze_chapter_lengths.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_branding.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates diagram brand compliance.",
  "chapters": [],
  "location": "scripts/validate_diagram_branding.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_elements.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Checks diagrams have at most 15 elements.",
  "chapters": [],
  "location": "scripts/validate_diagram_elements.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_figure_captions.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Checks figure captions start with Figure.",
  "chapters": [],
  "location": "scripts/validate_figure_captions.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_heading_capitalization.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Checks headings start with uppercase.",
  "chapters": [],
  "location": "scripts/validate_heading_capitalization.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_environment.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies toolchain versions.",
  "chapters": [],
  "location": "scripts/verify_environment.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "generate_book.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates book content from book_index.",
  "chapters": [],
  "location": "generate_book.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "generate_presentation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates PowerPoint presentation.",
  "chapters": [],
  "location": "generate_presentation.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "generate_whitepapers.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates whitepaper versions.",
  "chapters": [],
  "location": "generate_whitepapers.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "build_all_orchestrator.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Orchestrates building all deliverables.",
  "chapters": [],
  "location": "build_all_orchestrator.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "build_release.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Full release pipeline.",
  "chapters": [],
  "location": "build_release.sh",
  "has_full_template": false,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "docs/build_book.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds PDF, EPUB and DOCX with Pandoc.",
  "chapters": [],
  "location": "docs/build_book.sh",
  "has_full_template": false,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": "Not listed in Appendix B",
  "publishing_engine": true,
  "book": 5,
  "tools_chapter": null
 },
 {
  "name": "AI Decision Record (AIDR) for the commission",
  "kind": "artefact",
  "id_prefix": "AIDR-05xx",
  "activity": "Governance",
  "purpose": "Decision record for commissioning a role charter and competence plan; AIDR-0500 to AIDR-0599 is the book's range, used in every chapter.",
  "chapters": [
   1,
   3,
   5,
   13,
   "throughout"
  ],
  "location": "01_introduction.md (Worked example: The commission and the board request as decision records)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Also used in Architecture Decision Record form (ADR); chapters 5 and 10 give further AIDR examples (AIDR-0501, AIDR-0554, AIDR-0503)",
  "book": 6,
  "tools_chapter": 7
 },
 {
  "name": "Practice audit record",
  "kind": "artefact",
  "id_prefix": "PA-*",
  "activity": "Role and practice",
  "purpose": "Records, for each inherited practice, whether to keep, codify, delegate or retire it.",
  "chapters": [
   2
  ],
  "location": "02_the_role_before.md (Auditing an inherited security architecture practice)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Shift assessment",
  "kind": "artefact",
  "id_prefix": "assessments/shift-assessment-*.yaml",
  "activity": "Role and practice",
  "purpose": "Places a practice on each of the four shifts with evidence and gaps, recorded as code.",
  "chapters": [
   3
  ],
  "location": "03_four_shifts.md (Locating a practice on the four shifts)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Role charter",
  "kind": "artefact",
  "id_prefix": "ROLE-*",
  "activity": "Role and governance",
  "purpose": "Machine-readable charter with mandate, accountabilities and decision rights (decide, veto, recommend, escalate) of the security architect.",
  "chapters": [
   4,
   "A"
  ],
  "location": "04_role_charter.md (Decision rights); 29_appendix_a_code_examples.md#04_code_role",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Chapter 4 also gives Hansa Mutual charters ROLE-HM-*",
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Structurizr workspace with trust-zone properties",
  "kind": "artefact",
  "id_prefix": "(model as code)",
  "activity": "Architecture as code",
  "purpose": "Security architecture modelled in a Structurizr DSL workspace with security properties on elements.",
  "chapters": [
   5
  ],
  "location": "05_security_architecture_as_code.md (trust-zone properties in a Structurizr fragment)",
  "has_full_template": true,
  "language": "other",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 4
 },
 {
  "name": "Rego zone-crossing rule",
  "kind": "artefact",
  "id_prefix": "package architecture.zones",
  "activity": "Architecture as code",
  "purpose": "Policy rule that fails a pull request at a trust-zone crossing.",
  "chapters": [
   5
  ],
  "location": "05_security_architecture_as_code.md (a Rego rule that fails a pull request at a zone crossing)",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Threat model as code",
  "kind": "artefact",
  "id_prefix": "kind: ThreatModel",
  "activity": "Threat modelling",
  "purpose": "Generated threat-model manifest for a system with threats, controls, owners and decisions.",
  "chapters": [
   6
  ],
  "location": "06_threat_modelling.md (A threat model as code for Hansa Mutual's claims-triage agent)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B calls it Threat-model manifest",
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "Threat-model pipeline gate",
  "kind": "artefact",
  "id_prefix": "package threatmodel.gate",
  "activity": "Threat modelling",
  "purpose": "Rego rule that fails a merge when a threat has no control, a control no owner or an identifier is absent from the pinned catalogue.",
  "chapters": [
   6
  ],
  "location": "06_threat_modelling.md (The pipeline rule that fails a merge when a threat has no control)",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Containment profile",
  "kind": "artefact",
  "id_prefix": "CP-*",
  "activity": "Boundaries",
  "purpose": "Per workload or agent ceiling of identity, egress, data, blast radius, stop holders and verification tests.",
  "chapters": [
   7,
   "A"
  ],
  "location": "07_boundaries_and_containment.md (containment profile for Hansa Mutual's IT-operations agent); 29_appendix_a_code_examples.md#07_code_contain",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Chapter 7 uses CP-HM-ITOPS-01; Appendix A uses profile name architecture-review-agents with no CP- id",
  "book": 6,
  "tools_chapter": 20
 },
 {
  "name": "Permission manifest",
  "kind": "artefact",
  "id_prefix": "(per agent)",
  "activity": "Boundaries",
  "purpose": "Per-agent cap on tool calls evaluated by a policy decision point outside the model.",
  "chapters": [
   3,
   7,
   8,
   9
  ],
  "location": "07_boundaries_and_containment.md (Containment profiles and permission manifests)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B together with the containment profile, but no standalone permission-manifest listing found; the ITOPS profile references agents/itops/manifest.yaml",
  "book": 6,
  "tools_chapter": 20
 },
 {
  "name": "Tender annex for a supplier boundary",
  "kind": "artefact",
  "id_prefix": "TA-*",
  "activity": "Boundaries, procurement",
  "purpose": "Testable boundary requirements for a supplier, written as an annex.",
  "chapters": [
   7
  ],
  "location": "07_boundaries_and_containment.md (A tender annex for a supplier boundary at Nordvik Region)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 9
 },
 {
  "name": "Agent identity record",
  "kind": "artefact",
  "id_prefix": "HM-EVC-001 (identity: ...)",
  "activity": "Identity",
  "purpose": "Registers an agent identity with owner, operator, authority, scope, lifetime and revocation; called delegated-authority record in Appendix B.",
  "chapters": [
   8
  ],
  "location": "08_identity_for_non_human_actors.md (identity record for an evidence-collection agent)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 20
 },
 {
  "name": "Call-back rule",
  "kind": "artefact",
  "id_prefix": "CBR-*",
  "activity": "Identity",
  "purpose": "Rule requiring out-of-band confirmation of a change so approvals resist synthetic media.",
  "chapters": [
   8,
   25,
   26
  ],
  "location": "08_identity_for_non_human_actors.md (a call-back rule for changes to the benefits-triage system)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 20
 },
 {
  "name": "Control catalogue entry",
  "kind": "artefact",
  "id_prefix": "CTRL-*",
  "activity": "Controls and assurance",
  "purpose": "Control with owner, obligations, enforcement, evidence source and freshness, test and status.",
  "chapters": [
   9,
   "A"
  ],
  "location": "09_controls_evidence_assurance.md (A control entry and its evidence); 29_appendix_a_code_examples.md#09_code_ctrl",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Control catalogue (first ten entries)",
  "kind": "artefact",
  "id_prefix": "catalogue: nordvik-controls",
  "activity": "Controls and assurance",
  "purpose": "Catalogue as code mapping controls to obligations, started with ten entries.",
  "chapters": [
   9
  ],
  "location": "09_controls_evidence_assurance.md (The first ten entries of Nordvik Region's catalogue)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Evidence manifest",
  "kind": "artefact",
  "id_prefix": "(evidence fields)",
  "activity": "Controls and assurance",
  "purpose": "Evidence collected as a by-product with source and freshness for each control.",
  "chapters": [
   9,
   19
  ],
  "location": "09_controls_evidence_assurance.md (Evidence as a by-product)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Appendix B lists it with the control entry; the evidence block is part of the CTRL entry, not a separate template",
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Delegated patch playbook decision",
  "kind": "artefact",
  "id_prefix": "HM-PATCH-SLO-*, AIDR-0554",
  "activity": "Machine-speed design",
  "purpose": "Decision record that delegates fixes to known-exploited vulnerabilities to a playbook with a patch-velocity service level.",
  "chapters": [
   10
  ],
  "location": "10_machine_speed_design.md (A delegated playbook for known-exploited vulnerabilities at Hansa Mutual)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 12
 },
 {
  "name": "Managed security service provider annex",
  "kind": "artefact",
  "id_prefix": "MS-*",
  "activity": "Machine-speed design, procurement",
  "purpose": "Machine-speed requirements (detection content, response times) for an MSSP in a framework agreement.",
  "chapters": [
   10
  ],
  "location": "10_machine_speed_design.md (Machine-speed requirements for Nordvik Region's managed security service provider)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 12
 },
 {
  "name": "Timed stop drill record",
  "kind": "artefact",
  "id_prefix": "STOP-*",
  "activity": "Machine-speed design",
  "purpose": "Records an end-to-end timed stop of an agent against a budget.",
  "chapters": [
   10,
   "A"
  ],
  "location": "10_machine_speed_design.md (The stop path as a timed property)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 19
 },
 {
  "name": "Recovery definition",
  "kind": "artefact",
  "id_prefix": "RCV-*",
  "activity": "Resilience",
  "purpose": "Known-good recovery definition for an AI system including identity reissue.",
  "chapters": [
   11,
   25,
   26
  ],
  "location": "11_resilience_by_design.md (A recovery definition and a chaos experiment)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 13
 },
 {
  "name": "Chaos experiment record",
  "kind": "artefact",
  "id_prefix": "SCE-*",
  "activity": "Resilience",
  "purpose": "Security chaos experiment with hypothesis, safety boundaries, abort holder and result.",
  "chapters": [
   11,
   25,
   26
  ],
  "location": "11_resilience_by_design.md (Designing a first security chaos experiment)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 14
 },
 {
  "name": "Recoverability requirements annex",
  "kind": "artefact",
  "id_prefix": "NR-REQ-HOST-*",
  "activity": "Resilience, procurement",
  "purpose": "Recoverability requirements for a hosting provider, tied to NIS 2 Article 21(2).",
  "chapters": [
   11
  ],
  "location": "11_resilience_by_design.md (Recoverability requirements for the hosting provider)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 13
 },
 {
  "name": "Delegation register and reversibility test",
  "kind": "artefact",
  "id_prefix": "(delegation register)",
  "activity": "Resilience",
  "purpose": "Register of functions delegated to AI with yearly reversibility tests; defined in AI Threat and applied here.",
  "chapters": [
   11,
   15,
   23,
   27
  ],
  "location": "11_resilience_by_design.md (Running a reversibility test on a delegation)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Register concept comes from an earlier volume; no template in this book",
  "book": 6,
  "tools_chapter": 18
 },
 {
  "name": "Mandate manifest",
  "kind": "artefact",
  "id_prefix": "MND-*",
  "activity": "AI team",
  "purpose": "Per agent team or assistant: purpose, identities, usage mode, autonomy level, allowed actions, containment, oracles, records, stop path.",
  "chapters": [
   12,
   13,
   "A"
  ],
  "location": "13_ai_agent_team.md (Hansa Mutual's mandate manifest MND-HM-01); 12_architects_own_ai_use.md (MND-NR-01); 29_appendix_a_code_examples.md#13_code_mandate",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 18
 },
 {
  "name": "Prompt and skill record / AI use log",
  "kind": "artefact",
  "id_prefix": "(work log, session record)",
  "activity": "AI team",
  "purpose": "Work log and session records of AI use, with verification noted per use.",
  "chapters": [
   12
  ],
  "location": "12_architects_own_ai_use.md (Skills, instructions and prompt records)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Appendix B lists a 'Prompt and skill record' as an artefact; chapter describes work log and session record fields inside MND-NR-01, no separate template",
  "book": 6,
  "tools_chapter": 0
 },
 {
  "name": "Review protocol by risk tier",
  "kind": "artefact",
  "id_prefix": "protocol: architecture-review",
  "activity": "AI team",
  "purpose": "Review depth, techniques and reviewers by risk tier for AI-proposed changes.",
  "chapters": [
   14
  ],
  "location": "14_verifying_ai_proposals.md (Review depth by risk)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 7
 },
 {
  "name": "Review record",
  "kind": "artefact",
  "id_prefix": "REV-*",
  "activity": "AI team",
  "purpose": "Records review of an AI proposal: techniques, minutes, findings and decision.",
  "chapters": [
   14,
   "A"
  ],
  "location": "14_verifying_ai_proposals.md (Evidence of review); 29_appendix_a_code_examples.md#14_code_review",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Chapter 14 uses REV-HM-0014, Appendix A REV-HM-0001",
  "book": 6,
  "tools_chapter": 3
 },
 {
  "name": "Review checklist",
  "kind": "artefact",
  "id_prefix": "(checklist)",
  "activity": "AI team",
  "purpose": "Checklist for reviewing AI proposals.",
  "chapters": [
   14
  ],
  "location": "14_verifying_ai_proposals.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Appendix B lists a review checklist and says it is in Appendix A; no standalone checklist found, only the protocol and the review record",
  "book": 6,
  "tools_chapter": 3
 },
 {
  "name": "Craft-keeping programme and no-AI exercise calendar",
  "kind": "artefact",
  "id_prefix": "CKP-*",
  "activity": "Keeping the craft",
  "purpose": "Quarterly programme of no-AI exercises and seeded-error drills for craft-critical capabilities.",
  "chapters": [
   15
  ],
  "location": "15_keeping_the_craft.md (Deliberate practice; No-AI exercises and seeded-error drills)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B names it 'Practice plan without AI'",
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Apprenticeship plan",
  "kind": "artefact",
  "id_prefix": "AIDR-0562 (plan)",
  "activity": "Keeping the craft",
  "purpose": "Plan for mentoring a junior architect when junior work is automated.",
  "chapters": [
   15
  ],
  "location": "15_keeping_the_craft.md (Hansa Mutual's apprenticeship plan)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Decision-rights RACI as code",
  "kind": "artefact",
  "id_prefix": "roles/decision-rights.yaml",
  "activity": "Organisation",
  "purpose": "RACI for cross-role decisions as a versioned file; Appendix B calls it the responsibility matrix.",
  "chapters": [
   16
  ],
  "location": "16_role_map.md (A RACI as code for cross-role decisions at Hansa Mutual)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Decision tier policy",
  "kind": "artefact",
  "id_prefix": "security-architecture-decision-tiers",
  "activity": "Organisation",
  "purpose": "Tier policy as data that decides which decisions are gated, delegated or taken by the design authority.",
  "chapters": [
   17
  ],
  "location": "17_decision_forums.md (Hansa Mutual's tier policy)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Exception gate rule",
  "kind": "artefact",
  "id_prefix": "package gates.exceptions",
  "activity": "Organisation",
  "purpose": "Rego rule denying a change that relies on an expired exception.",
  "chapters": [
   17
  ],
  "location": "17_decision_forums.md (Pipeline gates)",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 7
 },
 {
  "name": "Exception record",
  "kind": "artefact",
  "id_prefix": "EXC-*",
  "activity": "Organisation",
  "purpose": "Expiring exception with owner, compensating design and expiry.",
  "chapters": [
   17,
   25
  ],
  "location": "17_decision_forums.md (an expiring exception for a supplier control)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 7
 },
 {
  "name": "Regulatory mapping",
  "kind": "artefact",
  "id_prefix": "MAP-*",
  "activity": "Regulation",
  "purpose": "Article-to-control mapping (kind: RegulatoryMapping).",
  "chapters": [
   18
  ],
  "location": "18_regulation_as_constraint.md (Hansa Mutual's article-to-control mapping)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Management report",
  "kind": "artefact",
  "id_prefix": "MGT-*",
  "activity": "Communication",
  "purpose": "Generated one-page management-body report with decisions asked, indicators, control status and provenance.",
  "chapters": [
   19
  ],
  "location": "19_communicating_architecture.md (A generated board page)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Procurement security requirements annex",
  "kind": "artefact",
  "id_prefix": "SECREQ-*",
  "activity": "Procurement",
  "purpose": "Testable security requirements for a tender, with evidence obligations.",
  "chapters": [
   20
  ],
  "location": "20_public_sector_and_multinational.md (security requirements annex as code)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 9
 },
 {
  "name": "Exit plan",
  "kind": "artefact",
  "id_prefix": "EXIT-*",
  "activity": "Procurement",
  "purpose": "Rehearsed plan for what leaves, how fast, and what keeps the function running when leaving a supplier.",
  "chapters": [
   20
  ],
  "location": "20_public_sector_and_multinational.md (exit plan)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Appendix B names 'Procurement requirements as code, with exit plan'; EXIT-NR-01 is described in prose",
  "book": 6,
  "tools_chapter": 9
 },
 {
  "name": "Market overlay",
  "kind": "artefact",
  "id_prefix": "overlays/markets/*.yaml",
  "activity": "Regulation, multinational",
  "purpose": "Per-jurisdiction overlay on a pinned baseline catalogue version.",
  "chapters": [
   20
  ],
  "location": "20_public_sector_and_multinational.md (Hansa Mutual's overlays for the UK and Swiss entities)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Competence framework",
  "kind": "artefact",
  "id_prefix": "SA-CF",
  "activity": "Competence",
  "purpose": "Six domains by four levels, evidence per level, mapped to ECSF, SFIA and NICE.",
  "chapters": [
   21,
   "A"
  ],
  "location": "21_competence_framework.md; 29_appendix_a_code_examples.md#21_code_competence",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Competence record",
  "kind": "artefact",
  "id_prefix": "CMP-*",
  "activity": "Competence",
  "purpose": "Personal record of assessed levels and evidence; conditions decision rights and agent autonomy.",
  "chapters": [
   21,
   4,
   15,
   22
  ],
  "location": "21_competence_framework.md (Competence records CMP-NR-01 and CMP-HM-04)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Learning path",
  "kind": "artefact",
  "id_prefix": "LP-*",
  "activity": "Competence",
  "purpose": "Twelve-month path with assessments for moving an enterprise architect to security architect.",
  "chapters": [
   22
  ],
  "location": "22_learning_and_hiring.md (Learning paths)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Hiring profile and interview exercise",
  "kind": "artefact",
  "id_prefix": "HP-*, IX-*",
  "activity": "Competence",
  "purpose": "Hiring profile and interview exercise testing judgement with and without AI.",
  "chapters": [
   22
  ],
  "location": "22_learning_and_hiring.md (Interview exercises)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Horizon register",
  "kind": "artefact",
  "id_prefix": "HZN-*",
  "activity": "Future",
  "purpose": "Register of signals and no-regret measures for the role, reviewed yearly.",
  "chapters": [
   23
  ],
  "location": "23_future_of_the_role.md (Signals and no-regret measures)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 23
 },
 {
  "name": "Anti-pattern record",
  "kind": "artefact",
  "id_prefix": "AP-*",
  "activity": "Experience",
  "purpose": "Evidence-based record of a diagnosed anti-pattern with remedy, owner, test and date.",
  "chapters": [
   24
  ],
  "location": "24_case_studies_and_anti_patterns.md (An anti-pattern record as code)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 3
 },
 {
  "name": "Year timeline",
  "kind": "artefact",
  "id_prefix": "timeline: NR-SA-*",
  "activity": "Experience",
  "purpose": "Timeline generated from the year's AIDRs and ADRs by quarter.",
  "chapters": [
   25
  ],
  "location": "25_a_year_in_the_role.md (a year's timeline as code)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 4
 },
 {
  "name": "24-month plan",
  "kind": "artefact",
  "id_prefix": "PLAN-*",
  "activity": "Experience",
  "purpose": "Plan funded by the CISO and checkable by audit, one constraint per shift.",
  "chapters": [
   26
  ],
  "location": "26_conclusions_for_nordvik_and_hansa.md (The two 24-month plans as code)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "First-90-days plan",
  "kind": "artefact",
  "id_prefix": "PLAN-HM-SA-PL-90",
  "activity": "Experience",
  "purpose": "Plan for a new architect to establish authority, boundary knowledge and calibrated judgement.",
  "chapters": [
   27
  ],
  "location": "27_conclusion.md (A first-90-days plan as code)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 4
 },
 {
  "name": "Appendix B artefact index (templates by activity)",
  "kind": "artefact",
  "id_prefix": "none",
  "activity": "Reference",
  "purpose": "Table that lists every template by activity and chapter.",
  "chapters": [
   "B"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Index only",
  "book": 6,
  "tools_chapter": 0
 },
 {
  "name": "Framing the question (commission)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Role and practice",
  "purpose": "Turn the question into a commission a named person must answer.",
  "chapters": [
   1
  ],
  "location": "01_introduction.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 3
 },
 {
  "name": "Auditing an inherited security architecture practice",
  "kind": "method",
  "id_prefix": null,
  "activity": "Role and practice",
  "purpose": "Decide per practice to keep, codify, delegate or retire it.",
  "chapters": [
   2
  ],
  "location": "02_the_role_before.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Four shifts assessment",
  "kind": "method",
  "id_prefix": null,
  "activity": "Role and practice",
  "purpose": "Locate a practice on the four shifts by sampling the last 20 decisions.",
  "chapters": [
   3
  ],
  "location": "03_four_shifts.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 3
 },
 {
  "name": "Writing a role charter in five steps",
  "kind": "method",
  "id_prefix": null,
  "activity": "Role and governance",
  "purpose": "Produce a first machine-readable charter from 30 to 50 decisions.",
  "chapters": [
   4
  ],
  "location": "04_role_charter.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Testing a charter against ten decisions",
  "kind": "method",
  "id_prefix": null,
  "activity": "Role and governance",
  "purpose": "Check that the charter resolves real decisions to one holder in time.",
  "chapters": [
   4
  ],
  "location": "04_role_charter.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Moving a reference architecture document into a model and policy set",
  "kind": "method",
  "id_prefix": null,
  "activity": "Architecture as code",
  "purpose": "Replace a document with a model, policies and a change workflow.",
  "chapters": [
   5
  ],
  "location": "05_security_architecture_as_code.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Assure once, comply many",
  "kind": "method",
  "id_prefix": null,
  "activity": "Architecture as code",
  "purpose": "Assure a property once at design time and map it to many obligations.",
  "chapters": [
   5,
   9
  ],
  "location": "05_security_architecture_as_code.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Generated threat models in eight weeks",
  "kind": "method",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Introduce generated, reviewed and pipeline-enforced threat models for one system.",
  "chapters": [
   6
  ],
  "location": "06_threat_modelling.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "Correlated-controls review",
  "kind": "method",
  "id_prefix": null,
  "activity": "Boundaries",
  "purpose": "Find dependencies that let one failure defeat several controls.",
  "chapters": [
   7
  ],
  "location": "07_boundaries_and_containment.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 0
 },
 {
  "name": "Designing a containment profile in six questions",
  "kind": "method",
  "id_prefix": null,
  "activity": "Boundaries",
  "purpose": "Produce a containment profile before an agent receives a credential.",
  "chapters": [
   7
  ],
  "location": "07_boundaries_and_containment.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   122
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 20
 },
 {
  "name": "Blast radius as a design parameter",
  "kind": "method",
  "id_prefix": null,
  "activity": "Boundaries",
  "purpose": "Set a stated worst case for an agent's possible effect.",
  "chapters": [
   7
  ],
  "location": "07_boundaries_and_containment.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 12
 },
 {
  "name": "Registering an agent identity",
  "kind": "method",
  "id_prefix": null,
  "activity": "Identity",
  "purpose": "Ensure each agent has a registered, scoped, time-limited, revocable identity.",
  "chapters": [
   8
  ],
  "location": "08_identity_for_non_human_actors.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 20
 },
 {
  "name": "Turning a spreadsheet of Annex A controls into a catalogue",
  "kind": "method",
  "id_prefix": null,
  "activity": "Controls and assurance",
  "purpose": "Move control spreadsheet rows into a catalogue as code with validator.",
  "chapters": [
   9
  ],
  "location": "09_controls_evidence_assurance.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   23
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Classifying controls as verified, declared or failed",
  "kind": "method",
  "id_prefix": null,
  "activity": "Controls and assurance",
  "purpose": "Give each control a status set by its last test result.",
  "chapters": [
   9
  ],
  "location": "09_controls_evidence_assurance.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 7
 },
 {
  "name": "Setting a patch-velocity service level",
  "kind": "method",
  "id_prefix": null,
  "activity": "Machine-speed design",
  "purpose": "Set service levels per exposure class from EPSS, KEV and exposure.",
  "chapters": [
   10
  ],
  "location": "10_machine_speed_design.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   145,
   146,
   147
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 15
 },
 {
  "name": "Timing a stop path end to end",
  "kind": "method",
  "id_prefix": null,
  "activity": "Machine-speed design",
  "purpose": "Measure by drill that the stop can be exercised within the budget.",
  "chapters": [
   10
  ],
  "location": "10_machine_speed_design.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 19
 },
 {
  "name": "Reversibility test on a delegation",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Show a delegated function can be performed without AI for a defined period.",
  "chapters": [
   11
  ],
  "location": "11_resilience_by_design.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 18
 },
 {
  "name": "Security chaos experiment",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Verify one recoverability property safely and move a control from declared to verified.",
  "chapters": [
   11
  ],
  "location": "11_resilience_by_design.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   83,
   84,
   85,
   86
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 14
 },
 {
  "name": "Personal AI workflow set-up",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Set up Modes 1 to 3 assistants with confidentiality, verification and records.",
  "chapters": [
   12
  ],
  "location": "12_architects_own_ai_use.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Writing a mandate manifest",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Produce a mandate manifest the platform can enforce before the first agent runs.",
  "chapters": [
   13
  ],
  "location": "13_ai_agent_team.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 18
 },
 {
  "name": "Introducing an agent team in three stages",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Shadow review at Level 0, then bounded stages, with evidence before action.",
  "chapters": [
   13
  ],
  "location": "13_ai_agent_team.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 18
 },
 {
  "name": "Soundness defined in advance with non-trusting review techniques",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Independent re-derivation, tests and policies as oracles, provenance of every claim.",
  "chapters": [
   14
  ],
  "location": "14_verifying_ai_proposals.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   194
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 19
 },
 {
  "name": "Second agent as adversary",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Use a second agent to challenge a proposal without trusting either.",
  "chapters": [
   14
  ],
  "location": "14_verifying_ai_proposals.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   191,
   192,
   193
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 11
 },
 {
  "name": "Review protocol by risk tier",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Review depth proportionate to risk, leaving a record.",
  "chapters": [
   14
  ],
  "location": "14_verifying_ai_proposals.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 7
 },
 {
  "name": "Measuring review quality without monitoring individuals",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Measure whether review is real without performance surveillance.",
  "chapters": [
   14
  ],
  "location": "14_verifying_ai_proposals.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 0
 },
 {
  "name": "Craft-keeping programme",
  "kind": "method",
  "id_prefix": null,
  "activity": "Keeping the craft",
  "purpose": "Quarterly programme keeping architects able to do craft-critical work unaided.",
  "chapters": [
   15
  ],
  "location": "15_keeping_the_craft.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   106
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Seeded-error drill",
  "kind": "method",
  "id_prefix": null,
  "activity": "Keeping the craft",
  "purpose": "Measure with known answers whether approvers still catch errors.",
  "chapters": [
   15,
   14
  ],
  "location": "15_keeping_the_craft.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   194
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 19
 },
 {
  "name": "Role-map workshop",
  "kind": "method",
  "id_prefix": null,
  "activity": "Organisation",
  "purpose": "Draw a role map with one owner per seam in one session.",
  "chapters": [
   16
  ],
  "location": "16_role_map.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   75
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Redesigning a review board as a design authority with gates",
  "kind": "method",
  "id_prefix": null,
  "activity": "Organisation",
  "purpose": "Replace a board deciding every item with gates for the routine and an authority for exceptions.",
  "chapters": [
   17
  ],
  "location": "17_decision_forums.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 7
 },
 {
  "name": "Turning an article into a control",
  "kind": "method",
  "id_prefix": null,
  "activity": "Regulation",
  "purpose": "Convert one article into a catalogue control with test and evidence.",
  "chapters": [
   18
  ],
  "location": "18_regulation_as_constraint.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "One-page architecture report for a management body",
  "kind": "method",
  "id_prefix": null,
  "activity": "Communication",
  "purpose": "Generate a quarterly page with decisions, indicators and provenance.",
  "chapters": [
   19
  ],
  "location": "19_communicating_architecture.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Writing testable security requirements for a tender",
  "kind": "method",
  "id_prefix": null,
  "activity": "Procurement",
  "purpose": "Produce an annex evaluators can score and verify after award.",
  "chapters": [
   20
  ],
  "location": "20_public_sector_and_multinational.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Adding a market overlay without weakening the baseline",
  "kind": "method",
  "id_prefix": null,
  "activity": "Regulation, multinational",
  "purpose": "Add a jurisdiction on a pinned baseline.",
  "chapters": [
   20
  ],
  "location": "20_public_sector_and_multinational.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Competence assessment by practical demonstration",
  "kind": "method",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "Assess against the framework by demonstration, with two assessors.",
  "chapters": [
   21
  ],
  "location": "21_competence_framework.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Twelve-month learning path",
  "kind": "method",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "Bring an enterprise architect to Practitioner level in twelve months.",
  "chapters": [
   22
  ],
  "location": "22_learning_and_hiring.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Interview exercise testing judgement with and without AI",
  "kind": "method",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "Fair exercise in two conditions, scored by two independent raters.",
  "chapters": [
   22
  ],
  "location": "22_learning_and_hiring.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   209,
   210
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 14
 },
 {
  "name": "Horizon register and four scenarios",
  "kind": "method",
  "id_prefix": null,
  "activity": "Future",
  "purpose": "Keep an outlook with observable, expected, speculation labels and scenarios.",
  "chapters": [
   23
  ],
  "location": "23_future_of_the_role.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   213,
   214
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 23
 },
 {
  "name": "Diagnosing anti-patterns",
  "kind": "method",
  "id_prefix": null,
  "activity": "Experience",
  "purpose": "Answer twelve questions from records to find which of five anti-patterns a practice shows.",
  "chapters": [
   24
  ],
  "location": "24_case_studies_and_anti_patterns.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 3
 },
 {
  "name": "Reviewing a year in the role",
  "kind": "method",
  "id_prefix": null,
  "activity": "Experience",
  "purpose": "Review a year against the four shifts from generated timeline.",
  "chapters": [
   25
  ],
  "location": "25_a_year_in_the_role.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 0
 },
 {
  "name": "Building a 24-month plan",
  "kind": "method",
  "id_prefix": null,
  "activity": "Experience",
  "purpose": "Turn a year's decisions into a fundable, auditable plan.",
  "chapters": [
   26
  ],
  "location": "26_conclusions_for_nordvik_and_hansa.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "First 90 days in the role",
  "kind": "method",
  "id_prefix": null,
  "activity": "Experience",
  "purpose": "Establish authority, boundary knowledge and calibrated judgement before approving agent proposals.",
  "chapters": [
   27
  ],
  "location": "27_conclusion.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 18
 },
 {
  "name": "Structurizr (DSL)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Architecture as code",
  "purpose": "Architecture workspace as code, where security properties and decision records attach to elements.",
  "chapters": [
   1,
   2,
   3,
   5,
   6,
   19,
   25
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   59
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 4
 },
 {
  "name": "C4 model",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Architecture as code",
  "purpose": "Model for visualising software architecture.",
  "chapters": [
   5,
   19
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   58
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 4
 },
 {
  "name": "FINOS CALM",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Architecture as code",
  "purpose": "Emerging alternative architecture-as-code specification.",
  "chapters": [
   3,
   5,
   19
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   60
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 4
 },
 {
  "name": "Open Policy Agent / Rego",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Policy engine and language for pipeline and runtime policy.",
  "chapters": [
   3,
   5,
   6,
   9,
   13,
   17,
   21
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   61
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Conftest",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy as code",
  "purpose": "Tests structured configuration with OPA policies in the pipeline.",
  "chapters": [
   5
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   171
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "Architecture Decision Records (Nygard)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Decision records",
  "purpose": "Record architecture decisions beside the code.",
  "chapters": [
   4,
   5,
   14,
   17,
   19
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   62
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 4
 },
 {
  "name": "GitHub code owners",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Assigns named reviewers per path.",
  "chapters": [
   4,
   5,
   6,
   13
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   168
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "MITRE ATT&CK",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Adversary technique catalogue for threat models.",
  "chapters": [
   1,
   6,
   7,
   8,
   10,
   11,
   13,
   21
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   45
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "MITRE ATLAS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Adversary technique catalogue for AI systems.",
  "chapters": [
   1,
   6,
   7,
   10,
   13,
   15,
   21,
   22
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   46
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "MITRE D3FEND",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Countermeasure knowledge graph.",
  "chapters": [
   6,
   10
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   47
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "STRIDE",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Threat categories used for threat stubs.",
  "chapters": [
   6,
   22
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   49
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for LLM Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Vulnerability catalogue for LLM applications.",
  "chapters": [
   6,
   12,
   21
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   43
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for Agentic Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Risk catalogue for agentic systems.",
  "chapters": [
   6,
   7,
   8,
   13,
   21
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   44
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "OWASP pytm",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Threat modelling as code in Python.",
  "chapters": [
   6
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   172
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "Threagile",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Agile threat modelling toolkit.",
  "chapters": [
   6
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   174
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "Attack trees",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Attack tree modelling.",
  "chapters": [
   6
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   173
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "Threat Modeling Manifesto",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Threat modelling",
  "purpose": "Principles for threat modelling.",
  "chapters": [
   6
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   48
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "SPIFFE / SPIRE",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Identity",
  "purpose": "Attested workload identities.",
  "chapters": [
   8
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   54
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 20
 },
 {
  "name": "OAuth 2.0 Token Exchange, RAR and DPoP",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Identity",
  "purpose": "Delegation, rich authorisation and proof of possession for agents.",
  "chapters": [
   8
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   55,
   177,
   178
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 20
 },
 {
  "name": "OWASP Non-Human Identities Top 10",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Identity",
  "purpose": "Risk catalogue for non-human identities.",
  "chapters": [
   8
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   179
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 10
 },
 {
  "name": "Model Context Protocol (MCP)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Tool protocol for agents whose security practices are part of the boundary.",
  "chapters": [
   6,
   7,
   8,
   13,
   24
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   56,
   57
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 20
 },
 {
  "name": "ISO/IEC 27001 / 27002",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Controls and assurance",
  "purpose": "Annex A controls mapped in the catalogue.",
  "chapters": [
   1,
   2,
   4,
   9,
   16,
   17,
   19,
   24,
   25,
   26
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   23,
   24
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "ISO/IEC 42001",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Controls and assurance",
  "purpose": "AI management system standard.",
  "chapters": [
   9
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   27
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "NIST SP 800-53A",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Controls and assurance",
  "purpose": "Control assessment procedures.",
  "chapters": [
   9
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   180
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "NIST CSF 2.0",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Controls and assurance",
  "purpose": "Framework profile for reporting.",
  "chapters": [
   9,
   11,
   19
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   29
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "NIST SP 800-207 Zero Trust Architecture",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Boundaries",
  "purpose": "Zero trust reference architecture.",
  "chapters": [
   2,
   3,
   7,
   8,
   27
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   31
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "Sigstore",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Controls and assurance",
  "purpose": "Keyless signing and provenance of artefacts.",
  "chapters": [
   9,
   11,
   14
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   51
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "in-toto attestations",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Controls and assurance",
  "purpose": "Supply chain attestation framework.",
  "chapters": [
   9
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   181
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "SLSA",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Supply chain levels for software artefacts.",
  "chapters": [
   11,
   14,
   16
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   50
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "SBOM and CycloneDX",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Procurement",
  "purpose": "Bill of materials format (ECMA-424) for supplier requirements.",
  "chapters": [
   16,
   20
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   52,
   53
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 5
 },
 {
  "name": "EPSS, CISA KEV and EUVD",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Machine-speed design",
  "purpose": "Exploit probability and exploited-vulnerability catalogues used for patch-velocity classes.",
  "chapters": [
   3,
   10,
   19
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   145,
   146,
   147
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 12
 },
 {
  "name": "Chaos engineering principles",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Experimental discipline behind security chaos experiments.",
  "chapters": [
   10,
   11
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   83,
   84,
   85,
   86
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 14
 },
 {
  "name": "Agent Skills and AGENTS.md",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Formats for instructions and skills given to coding agents.",
  "chapters": [
   12,
   13,
   16
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   116,
   117
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 18
 },
 {
  "name": "Claude Code and Codex permission and sandbox settings",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Examples of per-tool permission and approval controls.",
  "chapters": [
   7,
   12,
   17
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   118,
   119
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 20
 },
 {
  "name": "DORA research programme and key metrics",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Communication",
  "purpose": "DevOps research metrics and AI capabilities model.",
  "chapters": [
   3,
   12,
   23
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   95,
   96,
   97
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 15
 },
 {
  "name": "SABSA and TOGAF",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Role and practice",
  "purpose": "Inherited enterprise and security architecture methods.",
  "chapters": [
   2,
   16,
   22
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   37,
   38,
   39
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 3
 },
 {
  "name": "Team Topologies",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Organisation",
  "purpose": "Team types used to place the role.",
  "chapters": [
   4,
   16,
   23,
   26
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   81
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 0
 },
 {
  "name": "Three Lines Model",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Organisation",
  "purpose": "Model of assurance roles.",
  "chapters": [
   9,
   16
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   182
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 8
 },
 {
  "name": "ECSF, SFIA and NICE frameworks",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "Skills frameworks to which the competence framework maps.",
  "chapters": [
   1,
   4,
   16,
   21,
   22,
   25,
   27
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   40,
   41,
   42,
   33
  ],
  "mention": "described",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "ISC2 CISSP-ISSAP",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "Certification evidencing security architecture knowledge.",
  "chapters": [
   2,
   21,
   22
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   89
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 21
 },
 {
  "name": "Mermaid",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Diagram language and CLI.",
  "chapters": [
   "B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 4
 },
 {
  "name": "GitHub Copilot",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI team",
  "purpose": "Assistant studied in productivity and security research.",
  "chapters": [
   3,
   12
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   90,
   99
  ],
  "mention": "passing",
  "notes": null,
  "book": 6,
  "tools_chapter": 3
 },
 {
  "name": "scripts/toc_definition.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Holds the table of contents and regenerates the chapter lists.",
  "chapters": [
   "B"
  ],
  "location": "scripts/toc_definition.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/generate_outlines.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Regenerates the chapter briefs in BOOK_BLUEPRINT.md.",
  "chapters": [
   "B"
  ],
  "location": "scripts/generate_outlines.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/format_citations.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Derives citation labels from the bibliography.",
  "chapters": [
   "B"
  ],
  "location": "scripts/format_citations.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/renumber_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Keeps the bibliography numbered 1..N without gaps.",
  "chapters": [
   "B"
  ],
  "location": "scripts/renumber_sources.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_mermaid_diagrams.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Renders and validates the diagrams.",
  "chapters": [
   "B"
  ],
  "location": "scripts/check_mermaid_diagrams.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/audit_references.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Audits citations against the bibliography.",
  "chapters": [
   "B"
  ],
  "location": "scripts/audit_references.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies cited URLs and ISBNs.",
  "chapters": [
   "B"
  ],
  "location": "scripts/verify_sources.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/build_sources_section.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Writes a chapter's Sources list from the bibliography.",
  "chapters": [
   "B"
  ],
  "location": "scripts/build_sources_section.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/update_reference_backlinks.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Refreshes 'Referenced in' annotations.",
  "chapters": [
   "B"
  ],
  "location": "scripts/update_reference_backlinks.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_doc_numbering.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates chapter file numbering.",
  "chapters": [
   "B"
  ],
  "location": "scripts/check_doc_numbering.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/analyze_chapter_lengths.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Measures chapter length variance.",
  "chapters": [
   "B"
  ],
  "location": "scripts/analyze_chapter_lengths.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_branding.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates diagram brand compliance.",
  "chapters": [
   "B"
  ],
  "location": "scripts/validate_diagram_branding.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_elements.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Limits diagrams to 15 elements.",
  "chapters": [
   "B"
  ],
  "location": "scripts/validate_diagram_elements.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_figure_captions.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Checks figure caption capitalisation.",
  "chapters": [
   "B"
  ],
  "location": "scripts/validate_figure_captions.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_heading_capitalization.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Checks heading capitalisation.",
  "chapters": [
   "B"
  ],
  "location": "scripts/validate_heading_capitalization.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_environment.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies pinned tool versions.",
  "chapters": [
   "B"
  ],
  "location": "scripts/verify_environment.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "scripts/navigation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Resolves the chapter order from mkdocs.yml.",
  "chapters": [
   "B"
  ],
  "location": "scripts/navigation.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "docs/build_book.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds PDF, EPUB and DOCX with Pandoc.",
  "chapters": [
   "B"
  ],
  "location": "docs/build_book.sh",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "generate_book.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates book content.",
  "chapters": [
   "B"
  ],
  "location": "generate_book.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "generate_presentation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates the PowerPoint presentation.",
  "chapters": [
   "B"
  ],
  "location": "generate_presentation.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "generate_whitepapers.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates whitepaper HTML.",
  "chapters": [
   "B"
  ],
  "location": "generate_whitepapers.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "build_all_orchestrator.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Coordinates all builds.",
  "chapters": [
   "B"
  ],
  "location": "build_all_orchestrator.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Repository script",
  "publishing_engine": true,
  "book": 6,
  "tools_chapter": null
 },
 {
  "name": "Management Decision Record schema",
  "kind": "artefact",
  "id_prefix": "MDR schema",
  "activity": "Records",
  "purpose": "JSON Schema 2020-12 that validates every MDR: person decider, contestation route, retention, no M3 Consequence at Level 4, no adverse consequence above Level 1.",
  "chapters": [
   25,
   "A"
  ],
  "location": "35_appendix_a_code_examples.md#25_code_schema",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Management Decision Record (MDR)",
  "kind": "artefact",
  "id_prefix": "MDR-NR-*, MDR-HM-*",
  "activity": "Records",
  "purpose": "Records one management decision AI made or shaped about a person: function, system, recommendation, named human decider, basis, explanation and contestation route.",
  "chapters": [
   25,
   9,
   "B.4"
  ],
  "location": "35_appendix_a_code_examples.md#25_code_mdrnr; #25_code_mdrhm",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Examples MDR-NR-0001 (approved roster) and MDR-HM-0001 (allocation override).",
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Delegation profile",
  "kind": "artefact",
  "id_prefix": "DLG-*",
  "activity": "Delegation",
  "purpose": "States the degree of delegation (Level 0 Advisory to Level 4 Autonomous) per management function and action class for one system, with deciders, agreement and stop path.",
  "chapters": [
   4,
   9,
   7,
   11,
   25,
   "B.2"
  ],
  "location": "35_appendix_a_code_examples.md#04_code_dlgros",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Examples DLG-NR-ROS-01 v1.1.0 (App. A), DLG-HM-CTA-01 and DLG-HM-REC-01 (ch. 4, 7, 24), also DLG-HM-AB-01, DLG-NR-HCD-01, DLG-HM-SPS-01, DLG-NR-SA-* named in text.",
  "book": 7,
  "tools_chapter": 18
 },
 {
  "name": "Delegation register of management functions",
  "kind": "artefact",
  "id_prefix": "management/delegation-register.yaml",
  "activity": "Delegation",
  "purpose": "One versioned register of all delegation profiles, reversibility tests and oversight metrics; pipeline rejects M3 Consequence at Level 4 and profiles past review date.",
  "chapters": [
   4,
   25,
   32,
   "B.3"
  ],
  "location": "35_appendix_a_code_examples.md#25_code_regnr; #25_code_reghm",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 18
 },
 {
  "name": "Decision-rights file",
  "kind": "artefact",
  "id_prefix": "DRF-NR-01, DRF-HM-01",
  "activity": "Delegation",
  "purpose": "Gives every class of management decision a decider, a ceiling and a stop right, agreed with the representatives.",
  "chapters": [
   20,
   "B.17"
  ],
  "location": "35_appendix_a_code_examples.md#20_code_drfnr; #20_code_drfhm",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "management/decision-rights.yaml",
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Oversight record",
  "kind": "artefact",
  "id_prefix": "OVR-*",
  "activity": "Oversight",
  "purpose": "Records a human review of an AI recommendation: what was examined, review time, whether the outcome changed and seeded-error results.",
  "chapters": [
   26,
   30,
   "B.5"
  ],
  "location": "35_appendix_a_code_examples.md#26_code_ovr",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Example OVR-NR-ROS-2027-2.",
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Oversight-quality metrics",
  "kind": "artefact",
  "id_prefix": "OQM-NR-ROS-01, OQM-HM-CLM-01",
  "activity": "Oversight",
  "purpose": "Measures whether oversight is real via override rate, seeded-error catch rate and review times, reported at team level, never to evaluate the overseers.",
  "chapters": [
   26,
   "B.6"
  ],
  "location": "35_appendix_a_code_examples.md#26_code_oqm",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Contestation record",
  "kind": "artefact",
  "id_prefix": "CNT-NR-*, CNT-HM-*",
  "activity": "Contestability",
  "purpose": "Records a worker's challenge, the reviewer (never the original decider), time limits, outcome and the correction propagated to data or system.",
  "chapters": [
   27,
   "B.8"
  ],
  "location": "35_appendix_a_code_examples.md#27_code_cntnr; #27_code_cnthm",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Worker information notice",
  "kind": "artefact",
  "id_prefix": "WIN-NR-SW-HC-01, WIN-HM-CTA-DE",
  "activity": "Transparency",
  "purpose": "Tells workers and representatives which systems manage them, at which degree, with which data, and how to contest, serving AI Act Art. 26(7), GDPR and the Platform Work Directive.",
  "chapters": [
   28,
   "B.10"
  ],
  "location": "35_appendix_a_code_examples.md#28_code_win",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Transparency register",
  "kind": "artefact",
  "id_prefix": "management/transparency-register.yaml",
  "activity": "Transparency",
  "purpose": "Lists inside the organisation the systems that take part in managing people with their notices and profiles.",
  "chapters": [
   28,
   "B.11"
  ],
  "location": "35_appendix_a_code_examples.md#28_code_trg",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Mandate manifest for agents a manager directs",
  "kind": "artefact",
  "id_prefix": "MND-HM-CLM-*",
  "activity": "Agents",
  "purpose": "States tasks, autonomy level, tools, data, approvals and accountable manager for each agent a person directs; the platform enforces it.",
  "chapters": [
   16,
   "B.16"
  ],
  "location": "35_appendix_a_code_examples.md#16_code_mnd",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Example MND-HM-CLM-01 v1.1.0. Reuses form from The Transformed Security Architect, Ch. 13.",
  "book": 7,
  "tools_chapter": 18
 },
 {
  "name": "Chain record",
  "kind": "artefact",
  "id_prefix": "CHN-HM-CLM-01",
  "activity": "Agents",
  "purpose": "Makes a multi-agent workflow visible: owner of each link, no link holding M3 Consequence, stop-path drill (SPT-HM-CHN-01).",
  "chapters": [
   17
  ],
  "location": "35_appendix_a_code_examples.md#17_code_chn",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Team charter for a mixed team",
  "kind": "artefact",
  "id_prefix": "TCH-HM-CLM-01",
  "activity": "Agents",
  "purpose": "Sets down how work is divided, figures kept apart, handovers made and learning tasks reserved in a team of people and agents.",
  "chapters": [
   18
  ],
  "location": "35_appendix_a_code_examples.md#18_code_tch",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 18
 },
 {
  "name": "Reversibility test",
  "kind": "artefact",
  "id_prefix": "RVT-HM-CTA-2027-01, RVT-NR-ROS-*",
  "activity": "Delegation",
  "purpose": "Tests whether a delegation can be reversed in practice (manual fallback works); a failed test can freeze further delegation.",
  "chapters": [
   25,
   19,
   7
  ],
  "location": "35_appendix_a_code_examples.md#25_code_rvt",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Takes over the reversibility test of AI Threat, Ch. 26.",
  "book": 7,
  "tools_chapter": 5
 },
 {
  "name": "AI Act control set",
  "kind": "artefact",
  "id_prefix": "management/ai-act-controls.yaml",
  "activity": "Assessment",
  "purpose": "Maps AI Act obligations for AI systems that manage people to controls in the group baseline.",
  "chapters": [
   21
  ],
  "location": "35_appendix_a_code_examples.md#21_code_aia",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Fundamental rights impact assessment extract",
  "kind": "artefact",
  "id_prefix": "FRIA-2026-007",
  "activity": "Assessment",
  "purpose": "Structures the FRIA under AI Act Art. 27 for a worker-management system (home-care section).",
  "chapters": [
   21,
   22,
   "B.14"
  ],
  "location": "35_appendix_a_code_examples.md#21_code_fria",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 7
 },
 {
  "name": "Role charter for a line manager",
  "kind": "artefact",
  "id_prefix": "ROLE-HM-MGR-01, ROLE-NR-MGR-01",
  "activity": "Leadership",
  "purpose": "Gives a line manager written decision rights per function, systems and agents overseen, and a time budget protecting M4 Development and M5 Care.",
  "chapters": [
   29
  ],
  "location": "35_appendix_a_code_examples.md#29_code_role",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 21
 },
 {
  "name": "Anti-pattern checklist",
  "kind": "artefact",
  "id_prefix": "management/anti-pattern-checklist.yaml",
  "activity": "Experience",
  "purpose": "Lists recurring anti-patterns of algorithmic management, from rubber-stamp approval to appeal to nobody, each with signal and remedy.",
  "chapters": [
   31,
   "B.21"
  ],
  "location": "35_appendix_a_code_examples.md#31_code_ap",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 3
 },
 {
  "name": "24-month plan for governing the AI boss",
  "kind": "artefact",
  "id_prefix": "management/plans/ai-in-management-2027-2029.yaml",
  "activity": "Governance",
  "purpose": "Prioritised plan with owners, dates and AIDRs that turns a year's records into funded actions; one each for Nordvik Region and Hansa Mutual.",
  "chapters": [
   32,
   "B.22"
  ],
  "location": "35_appendix_a_code_examples.md#32_code_plannr; #32_code_planhm",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "AI Decision Record (AIDR)",
  "kind": "artefact",
  "id_prefix": "AIDR-0600 to AIDR-0699",
  "activity": "Governance",
  "purpose": "Records decisions about systems and profiles (Nordvik Region AIDR-0600 to 0649, Hansa Mutual AIDR-0650 to 0699), e.g. commission AIDR-0600, pause AIDR-0601, Article 22 analysis AIDR-0676.",
  "chapters": [
   1,
   4,
   7,
   21,
   22,
   23
  ],
  "location": "01_introduction.md; 07_hiring_by_machine.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Full examples: AIDR-0600 (ch.1), AIDR-0601 (ch.7), AIDR-0624 lineage (ch.3), AIDR-0651 (ch.21), AIDR-0627 (ch.23).",
  "book": 7,
  "tools_chapter": 7
 },
 {
  "name": "Management function map",
  "kind": "artefact",
  "id_prefix": "management/function-map.yaml",
  "activity": "Definition",
  "purpose": "Lists per team or role which of the five management functions (M1-M5) are performed, by whom and with which systems, mode and degree.",
  "chapters": [
   1,
   2,
   "B.1"
  ],
  "location": "02_what_a_manager_does.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Called 'Management function inventory' in Appendix B (B.1), 'function map' in the chapters.",
  "book": 7,
  "tools_chapter": 5
 },
 {
  "name": "Measure lineage record",
  "kind": "artefact",
  "id_prefix": "AIDR-0624",
  "activity": "Definition",
  "purpose": "Traces where a measure came from and which management function it enters before AI computes it per person.",
  "chapters": [
   3
  ],
  "location": "03_from_taylor_to_the_algorithm.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 7
 },
 {
  "name": "Platform Work Directive benchmark",
  "kind": "artefact",
  "id_prefix": "PWD-BENCH-NR-SW-01",
  "activity": "Assessment",
  "purpose": "Tests an internal shift-offer or allocation system against Chapter III of the Platform Work Directive.",
  "chapters": [
   5
  ],
  "location": "05_platform_work.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 19
 },
 {
  "name": "Work-environment risk assessment",
  "kind": "artefact",
  "id_prefix": "WRA-NR-HC-01",
  "activity": "Assessment",
  "purpose": "Assesses a pace or rate system (visit-time targets, ShiftWise routes) as a work-environment risk with safety representatives.",
  "chapters": [
   6,
   14
  ],
  "location": "06_warehouse_and_shop_floor.md; 14_health_pace_and_burnout.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Revision 1 in ch.6, revision 2 in ch.14.",
  "book": 7,
  "tools_chapter": 7
 },
 {
  "name": "Pause record for a screening model",
  "kind": "artefact",
  "id_prefix": "AIDR-0601",
  "activity": "Records",
  "purpose": "Records introducing, pausing or retiring a screening model so a candidate, union and supervisor can read it.",
  "chapters": [
   7
  ],
  "location": "07_hiring_by_machine.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 7
 },
 {
  "name": "Office feature register",
  "kind": "artefact",
  "id_prefix": "management/office-feature-register.yaml",
  "activity": "Definition",
  "purpose": "Registers office-suite and workflow-agent features that assign, summarise or report about people, with degree and whose agreement they carry.",
  "chapters": [
   10
  ],
  "location": "10_the_ai_manager_in_the_office.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 7
 },
 {
  "name": "Autonomy and fairness survey plan",
  "kind": "artefact",
  "id_prefix": "SVY-NR-STV-01",
  "activity": "Assessment",
  "purpose": "Plans a three-wave survey of autonomy, competence, relatedness and fairness before and after an AI system takes over part of M1 Direction.",
  "chapters": [
   11
  ],
  "location": "11_autonomy_dignity_control.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Disparate-impact test record",
  "kind": "artefact",
  "id_prefix": "DIT-HM-CTA-01, DIT-NR-ROS-*",
  "activity": "Assessment",
  "purpose": "Records a test of whether an evaluating or allocating system disadvantages a group, agreed with representatives.",
  "chapters": [
   12,
   24
  ],
  "location": "12_fairness_bias_and_contestability.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Works agreement annex of change classes",
  "kind": "artefact",
  "id_prefix": "KBV-IT-2024 annex",
  "activity": "Co-determination",
  "purpose": "Classifies changes to a continuously changing AI system by which require notice, consultation or negotiation; includes conditions on monitoring data.",
  "chapters": [
   13,
   23,
   "B.13"
  ],
  "location": "23_co_determination.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "13_surveillance_at_work.md has agreement KBV-IT-2024 annex for claims-triage figures.",
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Evaluation plan",
  "kind": "artefact",
  "id_prefix": "EVP-NR-ROS-2027-01, EVP-HM-AB-2027-01",
  "activity": "Evaluation",
  "purpose": "Multi-year evaluation of an AI system performing management functions on outcomes agreed with representatives, using matched or not-yet-live comparison units.",
  "chapters": [
   15
  ],
  "location": "15_does_it_work.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 0
 },
 {
  "name": "Competence record for a manager",
  "kind": "artefact",
  "id_prefix": "CMP-NR-MGR-01",
  "activity": "Leadership",
  "purpose": "Evidences managerial judgement (overrides, hand-made plans, seeded errors found, conversations held) for development and selection.",
  "chapters": [
   19
  ],
  "location": "19_who_becomes_a_manager.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 21
 },
 {
  "name": "Data protection impact assessment extract",
  "kind": "artefact",
  "id_prefix": "DPIA-2026-031",
  "activity": "Assessment",
  "purpose": "DPIA excerpt cross-referenced with the FRIA for ShiftWise, recording the degree of human involvement.",
  "chapters": [
   22
  ],
  "location": "22_data_protection_and_platform_work_directive.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 7
 },
 {
  "name": "Procurement requirement set for management functions",
  "kind": "artefact",
  "id_prefix": "NR-PRQ-MGT-01",
  "activity": "Procurement",
  "purpose": "Tender requirements, acceptance tests and contract conditions so a public employer can meet safety, equality and public-law duties.",
  "chapters": [
   24,
   "B.15"
  ],
  "location": "24_safety_equality_and_public_employers.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 9
 },
 {
  "name": "First 90 days plan",
  "kind": "artefact",
  "id_prefix": "plans/ai-boss/first-90-days.yaml",
  "activity": "Governance",
  "purpose": "Template plan for the first 90 days of governing the AI boss.",
  "chapters": [
   33
  ],
  "location": "33_conclusion.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Ten questions for governing the AI boss",
  "kind": "artefact",
  "id_prefix": "",
  "activity": "Governance",
  "purpose": "Short annual test of whether the organisation governs the AI boss; the board asks, HR answers with evidence, representatives review.",
  "chapters": [
   33
  ],
  "location": "33_conclusion.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Checklist in prose.",
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Contestation and appeal form",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Templates",
  "purpose": "Lets a worker or representative challenge a management decision in plain language with the MDR identifier pre-filled.",
  "chapters": [
   27,
   "B.7"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Explanation template",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Templates",
  "purpose": "Gives the affected person main factors, role of system and human decider and route to contest (AI Act Art. 86, GDPR Arts. 13-15, 22).",
  "chapters": [
   27,
   "B.9"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Counterfactual explanations are used (ch.27).",
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Co-determination checklist",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Templates",
  "purpose": "Lists per jurisdiction the information, consultation, negotiation or consent steps before introducing or changing a system that manages people.",
  "chapters": [
   23,
   "B.12"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Works agreement clause set for algorithmic management",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Templates",
  "purpose": "Draft clauses on purpose limitation, aggregation level, delegation limits, change notification, contestation and review.",
  "chapters": [
   23,
   "B.13"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Manager's weekly review protocol",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Templates",
  "purpose": "Weekly routine for line managers: review MDRs and overrides, sample oversight records, read contestations, check pace and rest flags, hold one unassisted development conversation.",
  "chapters": [
   29,
   16,
   "B.18"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Related to the team-leader weekly verification routine (ch.16).",
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Development conversation guide (development without a score)",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Templates",
  "purpose": "Structures M4 Development conversations that do not start from a system's score.",
  "chapters": [
   19,
   "B.19"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "One-page board report on algorithmic management",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Templates",
  "purpose": "Quarterly report to the management body on register, M3 decisions, contestation rates, oversight quality and co-determination, requesting one decision.",
  "chapters": [
   32,
   "B.20"
  ],
  "location": "appendix_templates_and_tools.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Locating the organisation on the five functions in an afternoon",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "Finds where AI already takes part in managing people in one unit, including Mode 0 Ambient AI features nobody decided on.",
  "chapters": [
   1
  ],
  "location": "01_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 0
 },
 {
  "name": "Mapping a team's management functions",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "Produces a reviewed function map showing who performs each function and which AI systems touch it at which mode and degree.",
  "chapters": [
   2
  ],
  "location": "02_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 0
 },
 {
  "name": "Tracing the lineage of a measure",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "Establishes where an existing measure came from and which management function it enters before AI computes it per person.",
  "chapters": [
   3
  ],
  "location": "03_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 15
 },
 {
  "name": "Writing a first delegation profile",
  "kind": "method",
  "id_prefix": null,
  "activity": "Delegation",
  "purpose": "Produces a first honest profile for one system that already takes part in managing people.",
  "chapters": [
   4
  ],
  "location": "04_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 18
 },
 {
  "name": "Platform Work Directive test of internal allocation systems",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assessment",
  "purpose": "Tests whether an internal offer/allocation system behaves like a platform dispatcher and closes gaps against Chapter III of Directive (EU) 2024/2831.",
  "chapters": [
   5
  ],
  "location": "05_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 6
 },
 {
  "name": "Work-environment risk assessment of pace systems",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assessment",
  "purpose": "Assesses any system that sets, measures or enforces work pace as a work-environment risk before introduction or change.",
  "chapters": [
   6
  ],
  "location": "06_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 7
 },
 {
  "name": "Introducing, pausing or retiring a screening model with a record",
  "kind": "method",
  "id_prefix": null,
  "activity": "Records",
  "purpose": "Keeps every hiring decision with a named person and readable record as a screening model is introduced, paused or retired.",
  "chapters": [
   7
  ],
  "location": "07_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 21
 },
 {
  "name": "Testing whether a performance score is decisive in practice",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assessment",
  "purpose": "Establishes from records whether an 'advisory' score for M3 Consequence is advisory in practice.",
  "chapters": [
   8
  ],
  "location": "08_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 5
 },
 {
  "name": "Negotiating a delegation profile with unions or works council",
  "kind": "method",
  "id_prefix": null,
  "activity": "Co-determination",
  "purpose": "Agrees before go-live what a rostering or allocation system may do per function, degree, inputs and reviews, and which changes reopen the agreement.",
  "chapters": [
   9
  ],
  "location": "09_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Building a feature register for office assistants and analytics",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "Establishes which office features assign, summarise or report about people and records their degree and agreement.",
  "chapters": [
   10
  ],
  "location": "10_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 7
 },
 {
  "name": "Measuring autonomy and perceived fairness",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assessment",
  "purpose": "Three-wave short survey (12-16 statements, groups of at least ten) before and after an AI system takes over part of M1 Direction.",
  "chapters": [
   11
  ],
  "location": "11_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [
   93,
   106
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Disparate-impact test with the representatives",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assessment",
  "purpose": "Finds out whether a system disadvantages a group, explains why, corrects it and tells the workforce.",
  "chapters": [
   12
  ],
  "location": "12_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Proportionality review of monitoring data",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assessment",
  "purpose": "Checks that each data element serves a stated purpose, is aggregated, retained no longer than needed and seen only by those who need it; applies the Barbulescu criteria.",
  "chapters": [
   13
  ],
  "location": "13_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [
   201,
   202,
   50
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 0
 },
 {
  "name": "Writing health and rest constraints into an optimiser",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assessment",
  "purpose": "Makes health limits hard constraints that M1 Direction systems cannot trade for output and proves by tests that they hold.",
  "chapters": [
   14
  ],
  "location": "14_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Multi-year evaluation design",
  "kind": "method",
  "id_prefix": null,
  "activity": "Evaluation",
  "purpose": "Evaluates whether a system performing management functions improves work over years against matched or not-yet-live comparison units.",
  "chapters": [
   15
  ],
  "location": "15_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 0
 },
 {
  "name": "Writing a mandate manifest for a team's agents",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Produces a manifest the platform can enforce, the team can read and an auditor can test before the first agent runs.",
  "chapters": [
   16
  ],
  "location": "16_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 18
 },
 {
  "name": "Weekly verification routine for the team leader",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "About two hours a week: unassisted samples, seeded cases and telemetry summary to keep review real.",
  "chapters": [
   16
  ],
  "location": "16_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 19
 },
 {
  "name": "Drawing the chain of accountability and testing the stop path",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Makes every multi-agent workflow reaching people visible, owned and stoppable, with stop-path drills.",
  "chapters": [
   17
  ],
  "location": "17_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 19
 },
 {
  "name": "Team charter for a mixed team",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Sets before agents join how work is divided, figures separated, handovers made and learning tasks reserved.",
  "chapters": [
   18
  ],
  "location": "18_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 18
 },
 {
  "name": "Managerial craft programme",
  "kind": "method",
  "id_prefix": null,
  "activity": "Leadership",
  "purpose": "Keeps judgement needed to oversee drafting systems: hand-made plans in reserved periods, drafting first, seeded-error drills.",
  "chapters": [
   19
  ],
  "location": "19_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 21
 },
 {
  "name": "Writing a decision-rights file with the representatives",
  "kind": "method",
  "id_prefix": null,
  "activity": "Delegation",
  "purpose": "Produces decision-rights.yaml so every class of management decision has a decider, ceiling and stop right.",
  "chapters": [
   20
  ],
  "location": "20_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Classifying a system under the AI Act and recording it",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assessment",
  "purpose": "Establishes whether a system that manages people is prohibited, high-risk or neither, in a record a works council or court can follow.",
  "chapters": [
   21
  ],
  "location": "21_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [
   1
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Checking for solely automated decisions (GDPR Art. 22)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Assessment",
  "purpose": "Establishes which outputs feed Art. 22 decisions, whether a person meaningfully decides, and builds the human decision point and explanation.",
  "chapters": [
   22
  ],
  "location": "22_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [
   5,
   141,
   143
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 0
 },
 {
  "name": "Drafting a works agreement for a continuously changing AI system",
  "kind": "method",
  "id_prefix": null,
  "activity": "Co-determination",
  "purpose": "Writes an agreement governing the life of an AI boss using change classes.",
  "chapters": [
   23
  ],
  "location": "23_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Writing tender requirements for management systems in a public authority",
  "kind": "method",
  "id_prefix": null,
  "activity": "Procurement",
  "purpose": "Writes specifications, award criteria and contract conditions and verifies them before acceptance.",
  "chapters": [
   24
  ],
  "location": "24_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 4
 },
 {
  "name": "Introducing Management Decision Records for one system",
  "kind": "method",
  "id_prefix": null,
  "activity": "Records",
  "purpose": "Makes one system produce validated MDRs as a by-product of operation, readable by four readers.",
  "chapters": [
   25
  ],
  "location": "25_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [
   219
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Setting up an oversight-quality metric",
  "kind": "method",
  "id_prefix": null,
  "activity": "Oversight",
  "purpose": "Establishes a metric showing whether oversight is real (override rate, seeded-error catch rate, review time) without evaluating overseers.",
  "chapters": [
   26
  ],
  "location": "26_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Building an appeal path",
  "kind": "method",
  "id_prefix": null,
  "activity": "Contestability",
  "purpose": "Gives every affected worker a route from contest to correction naming who answers, by when and with what authority.",
  "chapters": [
   27
  ],
  "location": "27_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 22
 },
 {
  "name": "Writing and testing a worker information notice",
  "kind": "method",
  "id_prefix": null,
  "activity": "Transparency",
  "purpose": "Produces a notice workers can read and act on, tested with them and kept true as the system changes.",
  "chapters": [
   28
  ],
  "location": "28_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 5
 },
 {
  "name": "Writing a role charter and time budget for a line manager",
  "kind": "method",
  "id_prefix": null,
  "activity": "Leadership",
  "purpose": "Gives a line manager written decision rights per function and a time budget protecting M4 and M5.",
  "chapters": [
   29
  ],
  "location": "29_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 21
 },
 {
  "name": "Quarterly review with the representatives",
  "kind": "method",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Shared quarterly view of what has been delegated, decided and contested and whether oversight held.",
  "chapters": [
   30
  ],
  "location": "30_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Reviewing against the anti-pattern checklist",
  "kind": "method",
  "id_prefix": null,
  "activity": "Experience",
  "purpose": "Establishes from records which anti-patterns an organisation shows and gives each a remedy, owner and date.",
  "chapters": [
   31
  ],
  "location": "31_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 3
 },
 {
  "name": "Turning a year's records into a 24-month plan",
  "kind": "method",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Produces a prioritised plan the board can fund, representatives review and an auditor check.",
  "chapters": [
   32
  ],
  "location": "32_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Seeded-error testing of oversight",
  "kind": "method",
  "id_prefix": null,
  "activity": "Oversight",
  "purpose": "Mixes known-faulty cases into proposals to measure whether reviewers catch them.",
  "chapters": [
   16,
   19,
   26
  ],
  "location": "16_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Appears in text rather than as a separate guide.",
  "book": 7,
  "tools_chapter": 19
 },
 {
  "name": "Counterfactual explanation",
  "kind": "method",
  "id_prefix": null,
  "activity": "Contestability",
  "purpose": "States the smallest input change that would have produced a different outcome to help a person understand and contest a decision.",
  "chapters": [
   27,
   22
  ],
  "location": "27_*.md (Practical guide)",
  "has_full_template": false,
  "language": null,
  "sources": [
   143,
   141
  ],
  "mention": "described",
  "notes": "Appears in text rather than as a separate guide.",
  "book": 7,
  "tools_chapter": 0
 },
 {
  "name": "Model Context Protocol (MCP)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agent plumbing",
  "purpose": "Protocol connecting model applications to servers exposing tools and context; spec requires user consent for data access.",
  "chapters": [
   17
  ],
  "location": "17_orchestrators.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   11
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 20
 },
 {
  "name": "Agent2Agent Protocol (A2A)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agent plumbing",
  "purpose": "Protocol for agent-to-agent tasking, whose launch example is a hiring workflow.",
  "chapters": [
   17
  ],
  "location": "17_orchestrators.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   80
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 20
 },
 {
  "name": "OAuth 2.0 Token Exchange (RFC 8693)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agent plumbing",
  "purpose": "Distinguishes impersonation from delegation; actor claim records the chain of acting parties.",
  "chapters": [
   17
  ],
  "location": "17_orchestrators.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   10
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 20
 },
 {
  "name": "JSON Schema 2020-12",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Records",
  "purpose": "Describes structure that MDRs and profiles are validated against in the pipeline.",
  "chapters": [
   25,
   "A"
  ],
  "location": "see chapters",
  "has_full_template": false,
  "language": null,
  "sources": [
   219
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 5
 },
 {
  "name": "ISO 45003",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Safety",
  "purpose": "Guidelines for managing psychosocial risks at work, relied on in work-environment assessments.",
  "chapters": [
   24
  ],
  "location": "see chapters",
  "has_full_template": false,
  "language": null,
  "sources": [
   73
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 8
 },
 {
  "name": "Karasek demand-control model",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Safety",
  "purpose": "Model locating mental strain where high demands meet low decision latitude; used to assess pace systems.",
  "chapters": [
   2,
   6,
   11,
   14
  ],
  "location": "see chapters",
  "has_full_template": false,
  "language": null,
  "sources": [
   93
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 0
 },
 {
  "name": "Job Demands-Resources model",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Safety",
  "purpose": "Model adding resources such as support and feedback to explain strain.",
  "chapters": [
   2,
   11
  ],
  "location": "see chapters",
  "has_full_template": false,
  "language": null,
  "sources": [
   106
  ],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 0
 },
 {
  "name": "Mermaid",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Diagram language used for the book's figures.",
  "chapters": [],
  "location": "see chapters",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Named in 37_about_the_author.md as part of the series pipeline.",
  "book": 7,
  "tools_chapter": 4
 },
 {
  "name": "YAML",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Records",
  "purpose": "Format in which all the book's artefacts are kept under version control.",
  "chapters": [
   "A"
  ],
  "location": "see chapters",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 7,
  "tools_chapter": 5
 },
 {
  "name": "Pandoc, MkDocs, GitHub Actions",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Publishing pipeline named in About the Author.",
  "chapters": [],
  "location": "see chapters",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Named in 37_about_the_author.md as part of the series pipeline.",
  "book": 7,
  "tools_chapter": 5
 },
 {
  "name": "scripts/toc_definition.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Holds the table of contents and regenerates book_index.json, mkdocs nav and BOOK_REQUIREMENTS.md chapter list.",
  "chapters": [
   "B"
  ],
  "location": "scripts/toc_definition.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/generate_outlines.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Regenerates chapter briefs in BOOK_BLUEPRINT.md and outline files.",
  "chapters": [
   "B"
  ],
  "location": "scripts/generate_outlines.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/format_citations.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Derives citation labels from the bibliography.",
  "chapters": [
   "B"
  ],
  "location": "scripts/format_citations.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/renumber_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Keeps the bibliography numbered 1..N without gaps or uncited entries.",
  "chapters": [
   "B"
  ],
  "location": "scripts/renumber_sources.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_mermaid_diagrams.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Renders and validates diagrams.",
  "chapters": [
   "B"
  ],
  "location": "scripts/check_mermaid_diagrams.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/audit_references.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Audits citations against docs/36_references.md.",
  "chapters": [],
  "location": "scripts/audit_references.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies cited URLs and ISBNs.",
  "chapters": [],
  "location": "scripts/verify_sources.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_doc_numbering.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates chapter numbering.",
  "chapters": [],
  "location": "scripts/check_doc_numbering.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/build_sources_section.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Writes a chapter's Sources list from the bibliography.",
  "chapters": [],
  "location": "scripts/build_sources_section.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/update_reference_backlinks.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Refreshes 'Referenced in' annotations.",
  "chapters": [],
  "location": "scripts/update_reference_backlinks.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_branding.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates diagram brand compliance.",
  "chapters": [],
  "location": "scripts/validate_diagram_branding.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_elements.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Checks diagrams have at most 15 elements.",
  "chapters": [],
  "location": "scripts/validate_diagram_elements.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_figure_captions.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Checks figure captions start with uppercase.",
  "chapters": [],
  "location": "scripts/validate_figure_captions.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_heading_capitalization.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Checks headings start with uppercase.",
  "chapters": [],
  "location": "scripts/validate_heading_capitalization.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/analyze_chapter_lengths.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Analyses chapter length distribution.",
  "chapters": [],
  "location": "scripts/analyze_chapter_lengths.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_environment.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies toolchain versions.",
  "chapters": [],
  "location": "scripts/verify_environment.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "hooks/bracketed_spans.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "MkDocs hook rendering Pandoc bracketed spans as anchors.",
  "chapters": [],
  "location": "hooks/bracketed_spans.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "generate_book.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Book generation entry point.",
  "chapters": [],
  "location": "generate_book.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "generate_presentation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates PowerPoint presentation from chapters.",
  "chapters": [],
  "location": "generate_presentation.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "generate_whitepapers.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates whitepaper versions from chapters.",
  "chapters": [],
  "location": "generate_whitepapers.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "build_all_orchestrator.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Orchestrates all deliverable builds.",
  "chapters": [],
  "location": "build_all_orchestrator.py",
  "has_full_template": false,
  "language": "python",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "docs/build_book.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds PDF, EPUB, DOCX with Pandoc.",
  "chapters": [],
  "location": "docs/build_book.sh",
  "has_full_template": false,
  "language": "other",
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 7,
  "tools_chapter": null
 },
 {
  "name": "Blue team function inventory / function map",
  "kind": "artefact",
  "id_prefix": "team/function-map.yaml",
  "activity": "Definition",
  "purpose": "Maps who performs each of B1 to B5, with which tools, and which parts are automated.",
  "chapters": [
   2,
   "B.1"
  ],
  "location": "02_what_the_blue_team_does.md ; 30_appendix_a_code_examples.md Worked example: A function map as code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B entry B.1",
  "book": 8,
  "tools_chapter": 7
 },
 {
  "name": "Team charter",
  "kind": "artefact",
  "id_prefix": "team/charter.yaml",
  "activity": "Definition",
  "purpose": "States the blue team's mandate, decision rights and autonomy level per function and action class.",
  "chapters": [
   4,
   "B.2"
  ],
  "location": "04_the_transformed_blue_team_defined.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Hansa Mutual's team charter given as worked example in the chapter; Appendix B entry B.2",
  "book": 8,
  "tools_chapter": 18
 },
 {
  "name": "Delegation profile",
  "kind": "artefact",
  "id_prefix": "DLG-*",
  "activity": "Definition",
  "purpose": "Sets the degree of delegation (Level 0 to 4) per function and action class with reversibility ceilings.",
  "chapters": [
   4,
   "B.2"
  ],
  "location": "04_the_transformed_blue_team_defined.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Worked examples for Hansa Mutual and Nordvik Region in Chapter 4; Appendix B entry B.2",
  "book": 8,
  "tools_chapter": 18
 },
 {
  "name": "Delegation register for the blue team",
  "kind": "artefact",
  "id_prefix": "DLG-*",
  "activity": "Records",
  "purpose": "Holds every delegation profile in one register with reversibility tests, ceiling and review-date checks.",
  "chapters": [
   4,
   "B.3"
  ],
  "location": "04_the_transformed_blue_team_defined.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Appendix B entry B.3",
  "book": 8,
  "tools_chapter": 18
 },
 {
  "name": "Pressure register",
  "kind": "artefact",
  "id_prefix": "PRS-*",
  "activity": "Definition",
  "purpose": "Records the pressures on the team (adversary AI, telemetry, talent) with evidence labelled observable, expected or speculation.",
  "chapters": [
   3
  ],
  "location": "03_the_pressure_on_the_blue_team.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Worked example for Hansa Mutual group SOC; prefix PRS-* appears once",
  "book": 8,
  "tools_chapter": 7
 },
 {
  "name": "Intelligence record",
  "kind": "artefact",
  "id_prefix": "INTEL-*",
  "activity": "Anticipate",
  "purpose": "Records an intelligence item and traces it to a hunt and a detection requirement.",
  "chapters": [
   5
  ],
  "location": "05_anticipate.md ; 30_appendix_a_code_examples.md Chapter 5: Anticipate",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "INTEL-HM-0142",
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Weekly intelligence-to-detection routine",
  "kind": "artefact",
  "id_prefix": "intel/routine.yaml",
  "activity": "Anticipate",
  "purpose": "Configures a weekly routine that turns intelligence into hunts and detection requirements.",
  "chapters": [
   5
  ],
  "location": "05_anticipate.md ; 30_appendix_a_code_examples.md Practical guide: Setting up a weekly intelligence-to-detection routine",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Detection record",
  "kind": "artefact",
  "id_prefix": "DET-*",
  "activity": "Detection engineering",
  "purpose": "Defines a detection with logic, sources, ATT&CK mapping, tests, owner and review date.",
  "chapters": [
   6,
   "B.4"
  ],
  "location": "06_detection_engineering_as_code.md ; 30_appendix_a_code_examples.md Chapter 6: Detect",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Examples DET-HM-0455 and first record at Nordvik (DET-NR-*); Appendix B entry B.4",
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Closure policy",
  "kind": "artefact",
  "id_prefix": "CLOSE-*",
  "activity": "Triage",
  "purpose": "Sets which alert classes AI may close, on what evidence, with what sampling and stop conditions.",
  "chapters": [
   7,
   "B.5"
  ],
  "location": "07_triage_transformed.md ; 30_appendix_a_code_examples.md Chapter 7: Triage Transformed",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CLOSE-HM-SOC; triage/closure-policy.yaml; Appendix B entry B.5",
  "book": 8,
  "tools_chapter": 5
 },
 {
  "name": "Case record",
  "kind": "artefact",
  "id_prefix": "CASE-*",
  "activity": "Investigation",
  "purpose": "Records evidence, queries, reasoning and who or what reached each conclusion so the case is reproducible.",
  "chapters": [
   8,
   "B.6"
  ],
  "location": "08_investigation_and_forensics.md ; 30_appendix_a_code_examples.md Chapter 8: Investigate",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CASE-HM-1207; Appendix B entry B.6",
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Hunt record",
  "kind": "artefact",
  "id_prefix": "HNT-*",
  "activity": "Threat hunting",
  "purpose": "Records a hunt's hypothesis, data, queries, result and coverage statement, with a conversion target.",
  "chapters": [
   9,
   "B.7"
  ],
  "location": "09_threat_hunting_transformed.md ; 30_appendix_a_code_examples.md Chapter 9: Threat Hunting Transformed",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "HNT-HM-0031; also HNT-NR-*; Appendix B entry B.7",
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Playbook manifest",
  "kind": "artefact",
  "id_prefix": "PBK-*",
  "activity": "Response",
  "purpose": "Codifies a response with trigger, corroboration, action class, approvals, rollback and stop path.",
  "chapters": [
   10,
   "B.8"
  ],
  "location": "10_response_transformed.md ; 30_appendix_a_code_examples.md Chapter 10: Respond",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "PBK-HM-ISOLATE-01; Appendix B entry B.8",
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Post-incident review",
  "kind": "artefact",
  "id_prefix": "PIR-*",
  "activity": "Learning",
  "purpose": "Records findings, owners, changes and the re-test that closes each finding.",
  "chapters": [
   11,
   "B.9"
  ],
  "location": "11_the_learning_loop.md ; 30_appendix_a_code_examples.md Chapter 11: Learn",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "PIR-HM-0455; Appendix B entry B.9",
  "book": 8,
  "tools_chapter": 13
 },
 {
  "name": "Finding register",
  "kind": "artefact",
  "id_prefix": "FND-*",
  "activity": "Learning / Security assurance",
  "purpose": "Holds findings from reviews, drills and red-team exercises with severity, control and re-test date.",
  "chapters": [
   11,
   15,
   25
  ],
  "location": "15_defending_the_defenders_ai.md ; 30_appendix_a_code_examples.md Worked example: A red-team finding recorded in the finding register (illustrative)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "FND-HM-0455-*, FND-HM-2027-014",
  "book": 8,
  "tools_chapter": 7
 },
 {
  "name": "Analyst AI-use log (AI use record)",
  "kind": "artefact",
  "id_prefix": "AI-use log",
  "activity": "AI use",
  "purpose": "Records per step the route, usage mode, data class, purpose and checks of an analyst's AI use in a case.",
  "chapters": [
   12
  ],
  "location": "12_the_analysts_own_use_of_ai.md ; 30_appendix_a_code_examples.md Chapter 12: The Analyst's Own Use of AI (Artefact 1)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Analyst AI-use policy",
  "kind": "artefact",
  "id_prefix": "team/ai-use-policy.yaml",
  "activity": "AI use",
  "purpose": "Routes data classes to models and fixes what is logged for the analysts' use of AI.",
  "chapters": [
   12,
   "B.10"
  ],
  "location": "12_the_analysts_own_use_of_ai.md ; 30_appendix_a_code_examples.md Worked example: AI-use policy for the group SOC",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B entry B.10",
  "book": 8,
  "tools_chapter": 5
 },
 {
  "name": "One-page acceptable-use sheet for analysts",
  "kind": "artefact",
  "id_prefix": "AUS-*",
  "activity": "AI use",
  "purpose": "Short sheet of what analysts may and may not paste into assistants, with an unassisted-case share.",
  "chapters": [
   12,
   23
  ],
  "location": "12_the_analysts_own_use_of_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "AUS-NR-SOC-01; Practical guide in Chapter 12",
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Mandate manifest for a SOC agent",
  "kind": "artefact",
  "id_prefix": "MND-*",
  "activity": "Agents",
  "purpose": "Sets tasks, tools, data, levels, approvals, budget and expiry for a SOC agent.",
  "chapters": [
   13,
   "B.11"
  ],
  "location": "13_an_ai_agent_team_for_the_soc.md ; 30_appendix_a_code_examples.md Worked example: mandate manifest MND-HM-SOC-02",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Builds on mandate manifest of Book 6; Appendix B entry B.11",
  "book": 8,
  "tools_chapter": 18
 },
 {
  "name": "Permission manifest",
  "kind": "artefact",
  "id_prefix": "permission manifest",
  "activity": "Agents",
  "purpose": "Technical ceiling on tools and action classes per agent identity (from earlier volumes).",
  "chapters": [
   13,
   15
  ],
  "location": "13_an_ai_agent_team_for_the_soc.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Defined in AI Platform and Security Ch 19 and AI Red Team Ch 18; this book adapts it as containment profile",
  "book": 8,
  "tools_chapter": 20
 },
 {
  "name": "Containment profile",
  "kind": "artefact",
  "id_prefix": "CP-*",
  "activity": "Security of SOC AI",
  "purpose": "Permission manifest written for a SOC agent: tools, action classes, targets, stops, evaluated by the policy decision point.",
  "chapters": [
   13,
   15
  ],
  "location": "15_defending_the_defenders_ai.md ; 30_appendix_a_code_examples.md Worked example: Containment profile CP-HM-SOC-01 (illustrative)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CP-HM-SOC-01",
  "book": 8,
  "tools_chapter": 20
 },
 {
  "name": "Review protocol and oversight report",
  "kind": "artefact",
  "id_prefix": "OQM-*",
  "activity": "Oversight",
  "purpose": "Sets review tiers, seeded-incident rates and proposal caps and reports oversight quality quarterly.",
  "chapters": [
   14,
   20,
   21,
   "B.12"
  ],
  "location": "14_verifying_what_the_ai_concludes.md ; 30_appendix_a_code_examples.md Worked example: Review protocol and oversight report",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "reviews/protocol/soc-tiers.yaml; report OQM-HM-SOC-01; Appendix B entry B.12",
  "book": 8,
  "tools_chapter": 8
 },
 {
  "name": "Pre-production checklist for SOC AI",
  "kind": "artefact",
  "id_prefix": "checklist",
  "activity": "Security of SOC AI",
  "purpose": "Ten questions on inputs, permissions, stop and exit before a new SOC AI capability goes live.",
  "chapters": [
   15,
   "B.13"
  ],
  "location": "15_defending_the_defenders_ai.md ; 30_appendix_a_code_examples.md Practical guide: A pre-production checklist for a new SOC AI capability",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Appendix B entry B.13",
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Provider annex for AI visibility",
  "kind": "artefact",
  "id_prefix": "MS-2",
  "activity": "Sourcing",
  "purpose": "Contract annex that makes a managed provider's AI visible: levels, actions, evidence, sampling, audit, notice of change.",
  "chapters": [
   16,
   "B.14"
  ],
  "location": "16_operating_models.md ; 30_appendix_a_code_examples.md Worked example: Annex MS-2 to NR-2025-044",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Annex MS-1 (paging and detection content ownership) is referred to but not given as a template; Appendix B entry B.14",
  "book": 8,
  "tools_chapter": 9
 },
 {
  "name": "Role charter",
  "kind": "artefact",
  "id_prefix": "ROLE-*",
  "activity": "Roles",
  "purpose": "States mandate, decision rights and ceilings for a blue team role.",
  "chapters": [
   17,
   "B.15"
  ],
  "location": "17_team_design_and_roles.md ; 30_appendix_a_code_examples.md Worked example: Role charter ROLE-HM-SOC-LEAD",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "ROLE-HM-SOC-LEAD, ROLE-NR-SEC-DET; Appendix B entry B.15",
  "book": 8,
  "tools_chapter": 21
 },
 {
  "name": "Role map",
  "kind": "artefact",
  "id_prefix": "roles map",
  "activity": "Roles",
  "purpose": "Map of roles and seams drawn in a day for a team.",
  "chapters": [
   17
  ],
  "location": "17_team_design_and_roles.md ; 30_appendix_a_code_examples.md Practical guide: Drawing the role map for your team in a day",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 0
 },
 {
  "name": "Decision-rights table",
  "kind": "artefact",
  "id_prefix": "DRF-*",
  "activity": "Decisions",
  "purpose": "Names who may take each containment, disclosure and stop decision and within what time, tested in a tabletop.",
  "chapters": [
   18,
   "B.16"
  ],
  "location": "18_decision_rights_and_escalation.md ; 30_appendix_a_code_examples.md Worked example: Decision-rights file and a tabletop result",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "team/decision-rights.yaml; DRF-NR-SOC-01; Appendix B entry B.16",
  "book": 8,
  "tools_chapter": 20
 },
 {
  "name": "Incident clock (reporting-clock profile)",
  "kind": "artefact",
  "id_prefix": "CLK-*",
  "activity": "Regulation",
  "purpose": "Lists reporting deadlines and owners from the moment of awareness, generating a timeline.",
  "chapters": [
   19,
   26,
   "B.17"
  ],
  "location": "19_regulation_as_constraint.md ; 30_appendix_a_code_examples.md Worked example: A reporting-clock profile",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CLK-HM-01; Appendix B entry B.17",
  "book": 8,
  "tools_chapter": 13
 },
 {
  "name": "Board page for the blue team",
  "kind": "artefact",
  "id_prefix": "reporting/blue-team-page.yaml",
  "activity": "Measurement",
  "purpose": "One page of speed, coverage, judgement and learning with at most three decisions.",
  "chapters": [
   20,
   "B.18"
  ],
  "location": "20_measuring_the_transformed_blue_team.md ; 30_appendix_a_code_examples.md Worked example: reporting/blue-team-page.yaml",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B entry B.18",
  "book": 8,
  "tools_chapter": 14
 },
 {
  "name": "Works agreement clause for SOC tooling",
  "kind": "artefact",
  "id_prefix": "KBV-*",
  "activity": "People",
  "purpose": "Clause on SOC tooling, AI-use log and rates never reported by name, agreed with employee representatives.",
  "chapters": [
   21
  ],
  "location": "21_the_analyst_at_work.md ; 30_appendix_a_code_examples.md Worked example: Works agreement clause for SOC tooling",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "KBV-IT-2024 annex, AIDR-0779",
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Fatigue and on-call review",
  "kind": "artefact",
  "id_prefix": "review",
  "activity": "People",
  "purpose": "Five questions on load, on-call and review volume with agreed responses, each quarter.",
  "chapters": [
   21,
   "B.19"
  ],
  "location": "21_the_analyst_at_work.md ; 30_appendix_a_code_examples.md Practical guide: A fatigue and on-call review every quarter",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Appendix B entry B.19",
  "book": 8,
  "tools_chapter": 13
 },
 {
  "name": "Competence framework SOC-CF",
  "kind": "artefact",
  "id_prefix": "SOC-CF",
  "activity": "People",
  "purpose": "Eight domains, 24 identifiers (12 at Nordvik as SOC-CF-NR), four levels with and without the assistant.",
  "chapters": [
   22
  ],
  "location": "22_competences_training_and_exercises.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Mapped to ECSF and SFIA via extension_reason fields",
  "book": 8,
  "tools_chapter": 21
 },
 {
  "name": "Competence record",
  "kind": "artefact",
  "id_prefix": "CMP-*",
  "activity": "People",
  "purpose": "Records judgement exercised and the exercise that showed it, as personal data.",
  "chapters": [
   22,
   "B.20"
  ],
  "location": "22_competences_training_and_exercises.md ; 30_appendix_a_code_examples.md Worked example: competence record CMP-NR-04",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B entry B.20",
  "book": 8,
  "tools_chapter": 21
 },
 {
  "name": "Competence conditions on autonomy",
  "kind": "artefact",
  "id_prefix": "competence/conditions.yaml",
  "activity": "People",
  "purpose": "Makes agent autonomy ceilings depend on evidenced human competence.",
  "chapters": [
   22
  ],
  "location": "22_competences_training_and_exercises.md ; 30_appendix_a_code_examples.md Worked example: competence conditions on autonomy",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 21
 },
 {
  "name": "Apprenticeship record",
  "kind": "artefact",
  "id_prefix": "APP-*",
  "activity": "People",
  "purpose": "Development record for a junior analyst, owned by the apprentice, with attempt-first use of the assistant.",
  "chapters": [
   23
  ],
  "location": "23_keeping_the_craft_and_making_new_analysts.md ; 30_appendix_a_code_examples.md Worked example: apprenticeship record for a junior analyst at Hansa Mutual",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "APP-HM-2027-01/02",
  "book": 8,
  "tools_chapter": 21
 },
 {
  "name": "Craft programme and craft register",
  "kind": "artefact",
  "id_prefix": "craft register",
  "activity": "People",
  "purpose": "Twelve-month plan with randomised unassisted share, seeded incidents, rotation, degraded-mode drills and a register of classes needing supervision.",
  "chapters": [
   23,
   "B.21"
  ],
  "location": "23_keeping_the_craft_and_making_new_analysts.md ; 30_appendix_a_code_examples.md Practical guide: Setting up a craft programme",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Appendix B entry B.21",
  "book": 8,
  "tools_chapter": 21
 },
 {
  "name": "Horizon register",
  "kind": "artefact",
  "id_prefix": "HZN-*",
  "activity": "Outlook",
  "purpose": "Lists trends labelled observable, expected or speculation with triggers.",
  "chapters": [
   24,
   "B.22"
  ],
  "location": "24_the_future_of_the_blue_team.md ; 30_appendix_a_code_examples.md Worked example: Horizon register HZN-HM-BT-01 (illustrative)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "HZN-HM-BT-01, HZN-NR-BT-01; Appendix B entry B.22",
  "book": 8,
  "tools_chapter": 23
 },
 {
  "name": "Anti-pattern record and checklist",
  "kind": "artefact",
  "id_prefix": "AP-*",
  "activity": "Review",
  "purpose": "Tests a team against seven anti-patterns and records remedies.",
  "chapters": [
   25,
   "B.23"
  ],
  "location": "25_case_studies_and_anti_patterns.md ; 30_appendix_a_code_examples.md Worked example: Anti-pattern record AP-HM-SOC-01 (illustrative)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B entry B.23",
  "book": 8,
  "tools_chapter": 3
 },
 {
  "name": "Year-in-review register",
  "kind": "artefact",
  "id_prefix": "year-in-review register",
  "activity": "Review",
  "purpose": "Register built from records, not memory, summarising a year.",
  "chapters": [
   26
  ],
  "location": "26_a_year_on_the_blue_team.md ; 30_appendix_a_code_examples.md Worked example: A year-in-review register",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 7
 },
 {
  "name": "Two-year plan",
  "kind": "artefact",
  "id_prefix": "PLAN-*",
  "activity": "Planning",
  "purpose": "Turns conclusions into six measures with owners and review dates.",
  "chapters": [
   27,
   "B.24"
  ],
  "location": "27_conclusions_for_nordvik_and_hansa.md ; 30_appendix_a_code_examples.md Worked example: the two plans as code",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "PLAN-NR-BT-2027, PLAN-HM-BT-2027 (plans/blue-team-2027-2029.yaml); Appendix B entry B.24",
  "book": 8,
  "tools_chapter": 0
 },
 {
  "name": "Horizon statement",
  "kind": "artefact",
  "id_prefix": "HZN-BT-AUTHOR-2036",
  "activity": "Outlook",
  "purpose": "Author's labelled projection to 2036.",
  "chapters": [
   28
  ],
  "location": "28_conclusion.md ; 30_appendix_a_code_examples.md Worked example: The author's horizon statement",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 23
 },
 {
  "name": "Final test",
  "kind": "artefact",
  "id_prefix": "reviews/final-test-2027.yaml",
  "activity": "Review",
  "purpose": "Test of the thesis against the organisations' records.",
  "chapters": [
   28
  ],
  "location": "28_conclusion.md ; 30_appendix_a_code_examples.md Nordvik Region and Hansa Mutual (Chapter 28)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 5
 },
 {
  "name": "Ninety-day plan",
  "kind": "artefact",
  "id_prefix": "plan",
  "activity": "Planning",
  "purpose": "One-page plan for the first ninety days.",
  "chapters": [
   28
  ],
  "location": "28_conclusion.md ; 30_appendix_a_code_examples.md Practical guide: A one-page plan for the first ninety days",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 0
 },
 {
  "name": "Evidence manifest",
  "kind": "artefact",
  "id_prefix": "EVD-*",
  "activity": "Evidence",
  "purpose": "Evidence manifest cited in the Nordvik end-of-book records.",
  "chapters": [
   27,
   28
  ],
  "location": "27_conclusions_for_nordvik_and_hansa.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "EVD-NR-2027-*; check whether defined",
  "book": 8,
  "tools_chapter": 5
 },
 {
  "name": "First inventory of AI in the team",
  "kind": "artefact",
  "id_prefix": "inventory",
  "activity": "Definition",
  "purpose": "Inventory of AI that already takes part in the team's work.",
  "chapters": [
   1
  ],
  "location": "01_introduction.md ; 30_appendix_a_code_examples.md Practical guide: A first inventory of the AI that already takes part in a team's work",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 7
 },
 {
  "name": "scripts/toc_definition.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Holds the table of contents and regenerates book_index.json, the MkDocs nav and the chapter list in BOOK_REQUIREMENTS.md.",
  "chapters": [
   "Appendix B"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "scripts/generate_outlines.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Regenerates chapter briefs in BOOK_BLUEPRINT.md and outline files.",
  "chapters": [
   "Appendix B"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "scripts/format_citations.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Derives citation labels from the bibliography.",
  "chapters": [
   "Appendix B"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "scripts/renumber_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Keeps the bibliography numbered 1..N without gaps or uncited entries.",
  "chapters": [
   "Appendix B"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_mermaid_diagrams.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Renders and validates Mermaid diagrams against PNGs.",
  "chapters": [
   "Appendix B"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "scripts/audit_references.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Audits citations against the bibliography.",
  "chapters": [
   "README"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Verifies URLs and ISBNs of sources.",
  "chapters": [
   "README"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_doc_numbering.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Checks chapter numbering.",
  "chapters": [
   "README"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "scripts/update_reference_backlinks.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Updates bibliography backlinks.",
  "chapters": [
   "README"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_environment.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Checks the toolchain against locked versions.",
  "chapters": [
   "README"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "docs/build_book.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Builds PDF, EPUB and DOCX with Pandoc.",
  "chapters": [
   "README"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "generate_presentation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Generates the presentation.",
  "chapters": [
   "README"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "generate_whitepapers.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Generates whitepapers.",
  "chapters": [
   "README"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "build_all_orchestrator.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing engine",
  "purpose": "Coordinates all generators.",
  "chapters": [
   "README"
  ],
  "location": "README.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 8,
  "tools_chapter": null
 },
 {
  "name": "MITRE ATT&CK",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Detection engineering",
  "purpose": "Technique identifiers for describing adversary behaviour and mapping detections.",
  "chapters": [
   1,
   2,
   5,
   6,
   7,
   8,
   9,
   10,
   11,
   12,
   14,
   15,
   20,
   22,
   24,
   25,
   26,
   30
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   9
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 10
 },
 {
  "name": "MITRE ATLAS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security of SOC AI",
  "purpose": "Technique identifiers against AI systems, e.g. AML.T0051 prompt injection.",
  "chapters": [
   1,
   5,
   15,
   25,
   26
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   10
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 10
 },
 {
  "name": "Sigma",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Detection engineering",
  "purpose": "Open YAML signature format for detections, converted to SIEM query languages.",
  "chapters": [
   2,
   6,
   9,
   30
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   27
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "STIX 2.1 and TAXII 2.1",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Anticipate",
  "purpose": "Threat-intelligence exchange format and protocol.",
  "chapters": [
   2,
   5,
   11
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   22
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "SIEM",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Detection and investigation",
  "purpose": "Collects logs, runs detections, raises alerts, supports search.",
  "chapters": [
   2,
   6,
   7
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "EDR",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Detection and response",
  "purpose": "Records endpoint activity and can isolate a host.",
  "chapters": [
   2,
   8,
   10
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "SOAR",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Response",
  "purpose": "Orchestrates enrichment and response playbooks.",
  "chapters": [
   2,
   7,
   10
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Case management and ticketing",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Investigation",
  "purpose": "Holds alerts, cases, evidence references and audit trail.",
  "chapters": [
   2
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Threat-intelligence platform",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Anticipate",
  "purpose": "Holds indicators and reports and exchanges them in standard formats.",
  "chapters": [
   2,
   5
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "EPSS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Anticipate",
  "purpose": "Estimates likelihood of vulnerability exploitation.",
  "chapters": [
   5
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   23
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "CISA Known Exploited Vulnerabilities catalogue (KEV)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Anticipate",
  "purpose": "Lists vulnerabilities known to be exploited.",
  "chapters": [
   5
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   24
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "European Vulnerability Database (EUVD)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Anticipate",
  "purpose": "European vulnerability coverage and context.",
  "chapters": [
   5
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   25
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "NIST CSF 2.0",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Framework",
  "purpose": "Framework whose six Functions the book maps the B1-B5 functions to.",
  "chapters": [
   1,
   2,
   8,
   10,
   11
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   17
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 8
 },
 {
  "name": "NIST incident response CSF 2.0 community profile (SP 800-61 Rev. 3)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Response",
  "purpose": "Incident response profile used as frame.",
  "chapters": [
   2,
   8,
   10,
   11
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   19
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 13
 },
 {
  "name": "OWASP Top 10 for LLM Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security of SOC AI",
  "purpose": "Risk vocabulary for LLM applications incl. prompt injection.",
  "chapters": [
   8,
   15
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   13
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for Agentic Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security of SOC AI",
  "purpose": "Shared vocabulary for agent failure modes.",
  "chapters": [
   9,
   10,
   15
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   14
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 10
 },
 {
  "name": "ECSF (ENISA)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "Role profile framework mapped to the book's competence framework.",
  "chapters": [
   22
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   77
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 21
 },
 {
  "name": "SFIA 9",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "Skills and competency framework mapped to the book's competence framework.",
  "chapters": [
   22
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [
   78
  ],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 21
 },
 {
  "name": "Mermaid",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Diagram syntax and CLI used for the book's figures.",
  "chapters": [
   "README"
  ],
  "location": "various",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 8,
  "tools_chapter": 4
 },
 {
  "name": "Seeded-incident programme",
  "kind": "method",
  "id_prefix": null,
  "activity": "Oversight",
  "purpose": "Known incidents or errors seeded into queues to measure whether reviewers and AI catch them.",
  "chapters": [
   14,
   20,
   22,
   23
  ],
  "location": "14_verifying_what_the_ai_concludes.md#practical-guide-starting-a-seeded-incident-programme",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 19
 },
 {
  "name": "Independent reproduction and critique agent",
  "kind": "method",
  "id_prefix": null,
  "activity": "Oversight",
  "purpose": "Review that does not start from the AI's answer; reproduces findings and uses a critique agent.",
  "chapters": [
   14
  ],
  "location": "14_verifying_what_the_ai_concludes.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 19
 },
 {
  "name": "Soundness criteria for a security conclusion",
  "kind": "method",
  "id_prefix": null,
  "activity": "Oversight",
  "purpose": "Criteria a conclusion must meet before it is accepted.",
  "chapters": [
   14
  ],
  "location": "14_verifying_what_the_ai_concludes.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 8
 },
 {
  "name": "Five checks before an AI-assisted case is closed",
  "kind": "method",
  "id_prefix": null,
  "activity": "Investigation",
  "purpose": "Five-step closure check for AI-assisted cases.",
  "chapters": [
   8
  ],
  "location": "08_investigation_and_forensics.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Four-week hunt cycle",
  "kind": "method",
  "id_prefix": null,
  "activity": "Threat hunting",
  "purpose": "Hypothesis-driven hunt cycle ending in detection conversion.",
  "chapters": [
   9
  ],
  "location": "09_threat_hunting_transformed.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Reviewing an AI-drafted detection",
  "kind": "method",
  "id_prefix": null,
  "activity": "Detection engineering",
  "purpose": "Procedure for reviewing a drafted detection.",
  "chapters": [
   6
  ],
  "location": "06_detection_engineering_as_code.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Taking a supplier-default rule into the repository",
  "kind": "method",
  "id_prefix": null,
  "activity": "Detection engineering",
  "purpose": "Procedure for bringing vendor detections under version control.",
  "chapters": [
   6
  ],
  "location": "06_detection_engineering_as_code.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 9
 },
 {
  "name": "Setting the ceiling for a response action",
  "kind": "method",
  "id_prefix": null,
  "activity": "Response",
  "purpose": "Procedure for choosing the maximum autonomy level of an action class.",
  "chapters": [
   10
  ],
  "location": "10_response_transformed.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 13
 },
 {
  "name": "Stop-path drill",
  "kind": "method",
  "id_prefix": null,
  "activity": "Response",
  "purpose": "Timed drill of the stop path outside the system it stops.",
  "chapters": [
   10,
   15,
   20,
   25
  ],
  "location": "10_response_transformed.md#practical-guide-drilling-the-stop-path",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 19
 },
 {
  "name": "Blameless review in 90 minutes",
  "kind": "method",
  "id_prefix": null,
  "activity": "Learning",
  "purpose": "Facilitated post-incident review format.",
  "chapters": [
   11
  ],
  "location": "11_the_learning_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 13
 },
 {
  "name": "Purple loop",
  "kind": "method",
  "id_prefix": null,
  "activity": "Learning",
  "purpose": "Joint red-blue loop reusing exercises and injected tests.",
  "chapters": [
   11
  ],
  "location": "11_the_learning_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 14
 },
 {
  "name": "Canaries",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security of SOC AI",
  "purpose": "Decoy tickets, credentials and tools that reveal a manipulated agent.",
  "chapters": [
   15
  ],
  "location": "15_defending_the_defenders_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 20
 },
 {
  "name": "Red teaming the SOC's AI",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security of SOC AI",
  "purpose": "Authorised campaigns that test the ceiling of SOC agents.",
  "chapters": [
   15
  ],
  "location": "15_defending_the_defenders_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 11
 },
 {
  "name": "Introducing a SOC agent in four steps",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Staged introduction of an agent.",
  "chapters": [
   13
  ],
  "location": "13_an_ai_agent_team_for_the_soc.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 12
 },
 {
  "name": "Degraded-mode drill",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents / People",
  "purpose": "Working with AI off or untrusted, in four degraded states.",
  "chapters": [
   13,
   23
  ],
  "location": "13_an_ai_agent_team_for_the_soc.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 18
 },
 {
  "name": "Tested one-day switch-off",
  "kind": "method",
  "id_prefix": null,
  "activity": "Sourcing",
  "purpose": "Exit test of provider's AI or service in a day.",
  "chapters": [
   16
  ],
  "location": "16_operating_models.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 5
 },
 {
  "name": "Tabletop with decision-rights table",
  "kind": "method",
  "id_prefix": null,
  "activity": "Decisions",
  "purpose": "Tests ten incident decisions in a tabletop.",
  "chapters": [
   18
  ],
  "location": "18_decision_rights_and_escalation.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 3
 },
 {
  "name": "Replacing closure-rate target with three measures and gaming check",
  "kind": "method",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Measure speed, coverage, judgement and learning with a gaming check.",
  "chapters": [
   20
  ],
  "location": "20_measuring_the_transformed_blue_team.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 14
 },
 {
  "name": "Half-day exercise assessment",
  "kind": "method",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "Assessing a team in an exercise and writing records.",
  "chapters": [
   22
  ],
  "location": "22_competences_training_and_exercises.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 14
 },
 {
  "name": "Unassisted practice (randomised share)",
  "kind": "method",
  "id_prefix": null,
  "activity": "People",
  "purpose": "Randomised share of work done without the assistant.",
  "chapters": [
   12,
   23
  ],
  "location": "23_keeping_the_craft_and_making_new_analysts.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 3
 },
 {
  "name": "Patch velocity as a service level",
  "kind": "method",
  "id_prefix": null,
  "activity": "Anticipate",
  "purpose": "Measured time to patch with exposure classes combining EPSS, KEV, EUVD and asset context.",
  "chapters": [
   5
  ],
  "location": "05_anticipate.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 15
 },
 {
  "name": "Observable, expected, speculation labelling",
  "kind": "method",
  "id_prefix": null,
  "activity": "Outlook",
  "purpose": "Labels every statement about the future with one of three evidence labels.",
  "chapters": [
   3,
   24,
   28
  ],
  "location": "24_the_future_of_the_blue_team.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 23
 },
 {
  "name": "Anti-pattern review in two hours",
  "kind": "method",
  "id_prefix": null,
  "activity": "Review",
  "purpose": "Review of a team against seven anti-patterns.",
  "chapters": [
   25
  ],
  "location": "25_case_studies_and_anti_patterns.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 3
 },
 {
  "name": "Constructive debate in four steps",
  "kind": "method",
  "id_prefix": null,
  "activity": "Analysis",
  "purpose": "Case for concern, case for calm, where positions meet, what can be done.",
  "chapters": [
   7,
   21,
   23,
   24
  ],
  "location": "07_triage_transformed.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 23
 },
 {
  "name": "Autonomy matched to reversibility (Levels 0-4)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Delegation",
  "purpose": "Degrees of delegation per function with Level 4 never for irreversible containment.",
  "chapters": [
   1,
   4,
   10
  ],
  "location": "04_the_transformed_blue_team_defined.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 18
 },
 {
  "name": "Building the incident clock",
  "kind": "method",
  "id_prefix": null,
  "activity": "Regulation",
  "purpose": "Procedure to build the reporting clock.",
  "chapters": [
   19
  ],
  "location": "19_regulation_as_constraint.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 13
 },
 {
  "name": "Year-in-review from records",
  "kind": "method",
  "id_prefix": null,
  "activity": "Review",
  "purpose": "Write the year from records.",
  "chapters": [
   26
  ],
  "location": "26_a_year_on_the_blue_team.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 0
 },
 {
  "name": "Turning a conclusion into a plan",
  "kind": "method",
  "id_prefix": null,
  "activity": "Planning",
  "purpose": "Procedure from conclusion to measured plan.",
  "chapters": [
   27
  ],
  "location": "27_conclusions_for_nordvik_and_hansa.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 8,
  "tools_chapter": 0
 },
 {
  "name": "Inventory of AI in testing and in detection",
  "kind": "artefact",
  "id_prefix": "AIINV-*",
  "activity": "Definition",
  "purpose": "One-page inventory of where AI is used in testing and detection in the loop.",
  "chapters": [
   1,
   "B.1"
  ],
  "location": "31_appendix_a_code_examples.md#Inventory of AI in testing and in detection (AIINV-NR-2028-01)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "AI Decision Record for the loop (audit committee / executive board questions)",
  "kind": "artefact",
  "id_prefix": "AIDR-08xx",
  "activity": "Governance",
  "purpose": "Decision record answering a board-level question about the loop; AIDR-0800 to 0849 Nordvik, 0850 to 0899 Hansa.",
  "chapters": [
   1,
   19,
   28
  ],
  "location": "31_appendix_a_code_examples.md#The audit committee's question as a decision record (AIDR-0800)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "Testing-forms register",
  "kind": "artefact",
  "id_prefix": "TFR-*",
  "activity": "Definition",
  "purpose": "Register classifying the testing forms an organisation already does, as baseline before the loop.",
  "chapters": [
   2
  ],
  "location": "31_appendix_a_code_examples.md#Testing-forms registers for both organisations (TFR-NR-01, TFR-HM-01)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 7
 },
 {
  "name": "Decay estimate",
  "kind": "artefact",
  "id_prefix": "DCY-*",
  "activity": "Measurement",
  "purpose": "Estimate of how fast detections decay between tests.",
  "chapters": [
   3
  ],
  "location": "31_appendix_a_code_examples.md#Decay estimate for three detections (DCY-HM-2028-01)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Loop charter",
  "kind": "artefact",
  "id_prefix": "LOOP-*",
  "activity": "Definition",
  "purpose": "Minimum charter of the loop with mandate and delegation profile.",
  "chapters": [
   4,
   "B.2"
  ],
  "location": "31_appendix_a_code_examples.md#Loop charter and delegation profile (LOOP-NR-2028-01)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 18
 },
 {
  "name": "Loop delegation profile",
  "kind": "artefact",
  "id_prefix": "DLG-*",
  "activity": "Definition",
  "purpose": "Degree of delegation (Level 0 to 4) per stage P1 to P5 and action class.",
  "chapters": [
   4,
   14,
   "B.2"
  ],
  "location": "31_appendix_a_code_examples.md#Loop delegation profile (DLG-HM-LOOP-01)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 18
 },
 {
  "name": "Priority list",
  "kind": "artefact",
  "id_prefix": "PRI-*",
  "activity": "Targeting",
  "purpose": "Priority ATT&CK/ATLAS techniques (20 to 40) per service, with rationale.",
  "chapters": [
   5,
   17
  ],
  "location": "31_appendix_a_code_examples.md#Priority list for the benefits-triage service (PRI-NR-2028-01)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 10
 },
 {
  "name": "Scenario record",
  "kind": "artefact",
  "id_prefix": "SCN-*",
  "activity": "Targeting",
  "purpose": "Scenario with technique set, source, expected outcome per layer, safety class and owner.",
  "chapters": [
   5,
   "B.3"
  ],
  "location": "31_appendix_a_code_examples.md#Scenario record SCN-NR-0001 (Nordvik Region)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 0
 },
 {
  "name": "Rules-of-engagement manifest",
  "kind": "artefact",
  "id_prefix": "RoE-*",
  "activity": "Authorisation",
  "purpose": "Machine-readable authority, scope, window, blast radius, data handling, consent and stop path enforced by a policy decision point outside the agent.",
  "chapters": [
   6,
   "B.4"
  ],
  "location": "31_appendix_a_code_examples.md#Rules-of-engagement manifest RoE-NR-2027-001",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "Safety-class table",
  "kind": "artefact",
  "id_prefix": "SCT-*",
  "activity": "Authorisation",
  "purpose": "Table assigning scenarios to safety classes with allowed environments and controls.",
  "chapters": [
   6
  ],
  "location": "31_appendix_a_code_examples.md#Safety-class table SCT-HM-2027-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 20
 },
 {
  "name": "Emulation plan",
  "kind": "artefact",
  "id_prefix": "EMU-*",
  "activity": "Emulation",
  "purpose": "Sequences scenarios into a campaign with scope, window and abort conditions.",
  "chapters": [
   7,
   8,
   13,
   "B.5"
  ],
  "location": "31_appendix_a_code_examples.md#Emulation plan EMU-NR-2027-02",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "Continuous emulation pipeline definition",
  "kind": "artefact",
  "id_prefix": "HM-SEC-004 pipeline",
  "activity": "Pipeline",
  "purpose": "Pipeline definition with triggers, environments, variation and gates for continuous emulation.",
  "chapters": [
   8,
   "B.6"
  ],
  "location": "31_appendix_a_code_examples.md#Pipeline definition for HM-SEC-004",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "Expectation sheet",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Detection owner's sealed expectation of outcomes per layer, written before the log is shown.",
  "chapters": [
   9
  ],
  "location": "31_appendix_a_code_examples.md#Expectation sheet",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Purple session record",
  "kind": "artefact",
  "id_prefix": "PRP-*",
  "activity": "Observation",
  "purpose": "Record of a purple session: expectations, outcomes, decisions and findings raised.",
  "chapters": [
   9,
   "B.7"
  ],
  "location": "31_appendix_a_code_examples.md#Purple session record PRP-NR-2027-02",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Finding record",
  "kind": "artefact",
  "id_prefix": "FND-*",
  "activity": "Observation",
  "purpose": "Finding with outcome class and one of five states, routed to a change.",
  "chapters": [
   9,
   10,
   13,
   "B.8"
  ],
  "location": "31_appendix_a_code_examples.md#Finding record and the five finding states (FND-NR-2027-011)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 0
 },
 {
  "name": "Change record",
  "kind": "artefact",
  "id_prefix": "CHG-*",
  "activity": "Improvement",
  "purpose": "Change added by P4 for an accepted finding with owner, due date and review.",
  "chapters": [
   10,
   "B.9"
  ],
  "location": "31_appendix_a_code_examples.md#Finding and change record at Hansa Mutual (FND-HM-2028-007, CHG-HM-2028-007)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 16
 },
 {
  "name": "Regression case",
  "kind": "artefact",
  "id_prefix": "REG-*",
  "activity": "Verification",
  "purpose": "Closed finding kept as repeatable test with variants, negative control and cadence.",
  "chapters": [
   11,
   "B.10"
  ],
  "location": "31_appendix_a_code_examples.md#Regression case REG-NR-0004",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Evidence manifest",
  "kind": "artefact",
  "id_prefix": "EVD-*",
  "activity": "Verification",
  "purpose": "Signed, versioned re-test result with telemetry references, reviewer and expiry.",
  "chapters": [
   11,
   16,
   "B.11"
  ],
  "location": "31_appendix_a_code_examples.md#Evidence manifest EVD-NR-2028-0003",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 5
 },
 {
  "name": "Verification status behind a board page",
  "kind": "artefact",
  "id_prefix": "BTP-*",
  "activity": "Reporting",
  "purpose": "Computed verification status that sits behind a board page line.",
  "chapters": [
   11
  ],
  "location": "31_appendix_a_code_examples.md#Verification status behind a board page (BTP-HM-2027-Q3)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "Detection record for AI agents",
  "kind": "artefact",
  "id_prefix": "DET-*",
  "activity": "Detection engineering",
  "purpose": "Detection record (e.g. agent exceeding permission ceiling) with ATLAS tags, positive and negative tests.",
  "chapters": [
   12,
   "B.12"
  ],
  "location": "31_appendix_a_code_examples.md#Detection record DET-HM-0561",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Seeded-incident register",
  "kind": "artefact",
  "id_prefix": "(EMU-HM-2028-03)",
  "activity": "Testing the defenders' AI",
  "purpose": "Register of seeded incidents for testing an investigation agent.",
  "chapters": [
   13,
   "B.13"
  ],
  "location": "31_appendix_a_code_examples.md#Seeded-incident register for the investigation agent (EMU-HM-2028-03)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Injected-test schedule",
  "kind": "artefact",
  "id_prefix": "(annex MS-2)",
  "activity": "Testing the defenders' AI",
  "purpose": "Schedule of injected tests against a managed provider's AI under a contract annex.",
  "chapters": [
   13,
   22,
   "B.13"
  ],
  "location": "31_appendix_a_code_examples.md#Injected-test schedule under annex MS-2",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 5
 },
 {
  "name": "Mandate manifest for emulation agent",
  "kind": "artefact",
  "id_prefix": "MND-*-EMU-*",
  "activity": "Agents",
  "purpose": "Bounds tasks, tools, data, identity, levels, budget, expiry and accountable person of a loop agent.",
  "chapters": [
   14,
   "B.14"
  ],
  "location": "31_appendix_a_code_examples.md#Mandate manifest MND-HM-EMU-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 18
 },
 {
  "name": "Delegation profile for the loop (Nordvik)",
  "kind": "artefact",
  "id_prefix": "DLG-NR-EMU-*",
  "activity": "Agents",
  "purpose": "Nordvik delegation profile as code for the loop agents.",
  "chapters": [
   14
  ],
  "location": "31_appendix_a_code_examples.md#Delegation profile DLG-NR-EMU-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 18
 },
 {
  "name": "Seeded-gap record",
  "kind": "artefact",
  "id_prefix": "SGP-*",
  "activity": "Independence",
  "purpose": "Record of a deliberately seeded gap or error used to prove that a check detects it.",
  "chapters": [
   15,
   "B.15"
  ],
  "location": "31_appendix_a_code_examples.md#Seeded-gap record SGP-HM-2028-003",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Independence statement",
  "kind": "artefact",
  "id_prefix": "IND-*",
  "activity": "Independence",
  "purpose": "Statement of model, data, authorship, vendor and time separation between tester, tested and checker.",
  "chapters": [
   15,
   "B.15"
  ],
  "location": "31_appendix_a_code_examples.md#Independence statement IND-HM-2028-Q1",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Provider annex amendment (independence)",
  "kind": "artefact",
  "id_prefix": "MS-2-IND-*",
  "activity": "Independence",
  "purpose": "Contract annex clauses on independence of provider testing.",
  "chapters": [
   15,
   22,
   "B.22"
  ],
  "location": "31_appendix_a_code_examples.md#Provider annex amendment (MS-2-IND-1, MS-2-IND-2)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Findings policy",
  "kind": "artefact",
  "id_prefix": "POL-*-FND-*",
  "activity": "Security",
  "purpose": "Classification and access policy for the findings register of record.",
  "chapters": [
   16,
   "B.16"
  ],
  "location": "31_appendix_a_code_examples.md#Findings policy POL-NR-FND-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 5
 },
 {
  "name": "Coverage record",
  "kind": "artefact",
  "id_prefix": "COV-*",
  "activity": "Coverage",
  "purpose": "Per technique and environment: what was tested, when, how, outcome and evidence expiry.",
  "chapters": [
   17,
   "B.17"
  ],
  "location": "31_appendix_a_code_examples.md#Coverage record COV-HM-0112",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Coverage-status rule file",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Coverage",
  "purpose": "Rules the pipeline evaluates to compute coverage status (verified, expired, failed, asserted, untested).",
  "chapters": [
   17
  ],
  "location": "31_appendix_a_code_examples.md#Coverage-status rule file",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Coverage page",
  "kind": "artefact",
  "id_prefix": "(PRI-NR-2028-01)",
  "activity": "Coverage",
  "purpose": "Computed coverage page per priority list with counts and age distribution.",
  "chapters": [
   17,
   18
  ],
  "location": "31_appendix_a_code_examples.md#Coverage page PRI-NR-2028-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Measure catalogue",
  "kind": "artefact",
  "id_prefix": "MSC-LOOP-*",
  "activity": "Measurement",
  "purpose": "Catalogue of loop measures (cycle time, finding half-life, re-test pass rate) with definition and gaming risks.",
  "chapters": [
   18
  ],
  "location": "31_appendix_a_code_examples.md#Measure catalogue MSC-LOOP-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 7
 },
 {
  "name": "Board page for the loop",
  "kind": "artefact",
  "id_prefix": "LPG-*",
  "activity": "Measurement",
  "purpose": "One-page quarterly board report on the loop.",
  "chapters": [
   18,
   "B.18"
  ],
  "location": "31_appendix_a_code_examples.md#Board page LPG-HM-2028-Q1",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "Operating-model decision",
  "kind": "artefact",
  "id_prefix": "AIDR-0820",
  "activity": "Governance",
  "purpose": "Decision record choosing an operating model (bought, run, hybrid) with exit criteria.",
  "chapters": [
   19
  ],
  "location": "31_appendix_a_code_examples.md#Operating-model decision AIDR-0820",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "Role charter",
  "kind": "artefact",
  "id_prefix": "ROLE-*",
  "activity": "Roles",
  "purpose": "Charter for loop roles such as purple team coordinator and exercise controller.",
  "chapters": [
   19,
   "B.19"
  ],
  "location": "31_appendix_a_code_examples.md#Role charter ROLE-HM-SEC-PRP",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 21
 },
 {
  "name": "Decision-rights file",
  "kind": "artefact",
  "id_prefix": "DRF-*",
  "activity": "Decisions",
  "purpose": "Who may authorise, change scope, stop, accept risk and declare coverage.",
  "chapters": [
   20,
   "B.20"
  ],
  "location": "31_appendix_a_code_examples.md#Decision-rights file DRF-NR-LOOP-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 20
 },
 {
  "name": "Tabletop record",
  "kind": "artefact",
  "id_prefix": "TTX-*",
  "activity": "Decisions",
  "purpose": "Record of a tabletop testing decision rights, e.g. an emulation that becomes an incident.",
  "chapters": [
   20,
   "B.20"
  ],
  "location": "31_appendix_a_code_examples.md#Tabletop record TTX-NR-2028-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 3
 },
 {
  "name": "Risk acceptance with expiry",
  "kind": "artefact",
  "id_prefix": "(FND-*, risk accepted)",
  "activity": "Decisions",
  "purpose": "Finding in state risk accepted with named acceptor, expiry and review.",
  "chapters": [
   20,
   10
  ],
  "location": "31_appendix_a_code_examples.md#Risk acceptance with an expiry (FND-HM-2028-011)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 7
 },
 {
  "name": "Obligation register",
  "kind": "artefact",
  "id_prefix": "OBL-*",
  "activity": "Regulation",
  "purpose": "Maps legal obligations (DORA, TLPT, NIS 2, AI Act, GDPR) to loop controls and evidence.",
  "chapters": [
   21,
   "B.21"
  ],
  "location": "31_appendix_a_code_examples.md#Obligation register OBL-HM-2028-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "Provider annex clause on testing",
  "kind": "artefact",
  "id_prefix": "MS-2-TST-*",
  "activity": "Boundaries",
  "purpose": "Contract clause giving the right to test across the provider boundary.",
  "chapters": [
   22,
   "B.22"
  ],
  "location": "31_appendix_a_code_examples.md#Provider annex clause MS-2-TST-1",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 5
 },
 {
  "name": "Consent and notice protocol",
  "kind": "artefact",
  "id_prefix": "CNP-*",
  "activity": "Boundaries",
  "purpose": "Protocol for consent and notice for tests that cross a provider boundary.",
  "chapters": [
   22
  ],
  "location": "31_appendix_a_code_examples.md#Consent and notice protocol CNP-NR-2028-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 22
 },
 {
  "name": "Sector information-sharing protocol",
  "kind": "artefact",
  "id_prefix": "SHP-*",
  "activity": "Boundaries",
  "purpose": "Protocol for sharing results in sector exercises without exposing sensitive detail (uses TLP).",
  "chapters": [
   22
  ],
  "location": "31_appendix_a_code_examples.md#Sector information-sharing protocol SHP-HM-2028-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Purple session charter",
  "kind": "artefact",
  "id_prefix": "PSC-*",
  "activity": "People",
  "purpose": "Blameless ground rules for a purple session.",
  "chapters": [
   23,
   "B.23"
  ],
  "location": "31_appendix_a_code_examples.md#Session charter PSC-NR-2028-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Exercise-information notice",
  "kind": "artefact",
  "id_prefix": "EIN-*",
  "activity": "People",
  "purpose": "Notice to staff exposed to exercises, agreed with representatives.",
  "chapters": [
   23
  ],
  "location": "31_appendix_a_code_examples.md#Exercise-information notice EIN-NR-2027-002",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Joint scorecard",
  "kind": "artefact",
  "id_prefix": "SCR-*",
  "activity": "People",
  "purpose": "Shared red/blue scorecard measuring yield rather than winning.",
  "chapters": [
   23
  ],
  "location": "31_appendix_a_code_examples.md#Joint scorecard SCR-HM-2028-Q1",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 0
 },
 {
  "name": "Competence record",
  "kind": "artefact",
  "id_prefix": "CMP-*",
  "activity": "People",
  "purpose": "Competences for scenario design, emulation, detection engineering, observation, exercise control and evidence.",
  "chapters": [
   24,
   "B.24"
  ],
  "location": "31_appendix_a_code_examples.md#Competence record CMP-NR-21",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 21
 },
 {
  "name": "Learning path",
  "kind": "artefact",
  "id_prefix": "LP-*",
  "activity": "People",
  "purpose": "Apprenticeship/learning path for red-craft skills.",
  "chapters": [
   24
  ],
  "location": "31_appendix_a_code_examples.md#Learning path LP-HM-RED-2028-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 21
 },
 {
  "name": "Horizon register",
  "kind": "artefact",
  "id_prefix": "HZN-*",
  "activity": "Outlook",
  "purpose": "Trends labelled observable, expected or speculation with review date.",
  "chapters": [
   25,
   "B.25"
  ],
  "location": "31_appendix_a_code_examples.md#Horizon register HZN-NR-PL-01",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 23
 },
 {
  "name": "Anti-pattern record",
  "kind": "artefact",
  "id_prefix": "AP-*",
  "activity": "Review",
  "purpose": "Record of an anti-pattern found in a loop with early signs and remedy.",
  "chapters": [
   26,
   "B.26"
  ],
  "location": "31_appendix_a_code_examples.md#Anti-pattern record AP-HM-LOOP-04",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 3
 },
 {
  "name": "validate_artefacts.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Validation",
  "purpose": "Python script in Appendix A that loads every YAML and JSON block, and checks the closure rule, expiry and the Level 4 ban; exit status 1 on failure.",
  "chapters": [
   4,
   11,
   17,
   "A"
  ],
  "location": "31_appendix_a_code_examples.md#Validation script",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Provided as a code block to be saved by the reader; not a file in scripts/.",
  "book": 9,
  "tools_chapter": 18
 },
 {
  "name": "Purple loop inventory",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "Maps who performs P1 to P5 today, with which tools, and which parts are automated.",
  "chapters": [
   4,
   "B.1"
  ],
  "location": "appendix_templates_and_tools.md#B.1",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Change-routing table",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Improvement",
  "purpose": "Routes an accepted finding to detection, control, playbook or mandate change, or to a recorded decision that none is justified.",
  "chapters": [
   10,
   "B.9"
  ],
  "location": "appendix_templates_and_tools.md#B.9",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 18
 },
 {
  "name": "Continuous emulation schedule and variation policy",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Pipeline",
  "purpose": "Sets what runs, where, when and with what variation.",
  "chapters": [
   8,
   "B.6"
  ],
  "location": "appendix_templates_and_tools.md#B.6",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "Detection checklist for AI systems and agents",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "AI systems",
  "purpose": "Telemetry and detections needed for tool misuse, anomalous retrieval and permission-ceiling breaches.",
  "chapters": [
   12,
   "B.12"
  ],
  "location": "appendix_templates_and_tools.md#B.12",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Seeded-incident test plan",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Testing the defenders' AI",
  "purpose": "Plans seeded incidents and injected tests for SOC agents, playbooks and a provider's AI.",
  "chapters": [
   13,
   "B.13"
  ],
  "location": "appendix_templates_and_tools.md#B.13",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Independence checklist",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "Tests three layers of independence: five kinds of separation, the incentive rule and the three proofs.",
  "chapters": [
   15,
   "B.15"
  ],
  "location": "appendix_templates_and_tools.md#B.15",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Tier-0 checklist for the findings register and emulation agents",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Controls for classification, access, segregation, supply chain and handling of findings in hosted AI tools.",
  "chapters": [
   16,
   "B.16"
  ],
  "location": "appendix_templates_and_tools.md#B.16",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 20
 },
 {
  "name": "Testing authorisation and legal-basis checklist",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Regulation",
  "purpose": "Checks DORA, TIBER-EU, NIS 2, AI Act, GDPR, criminal-law and employee-representative requirements before an exercise.",
  "chapters": [
   21,
   "B.21"
  ],
  "location": "appendix_templates_and_tools.md#B.21",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 20
 },
 {
  "name": "Anti-pattern checklist",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Review",
  "purpose": "Checks the loop against the eight anti-patterns AP-*.",
  "chapters": [
   26,
   "B.26"
  ],
  "location": "appendix_templates_and_tools.md#B.26",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 3
 },
 {
  "name": "Two-year plan",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Planning",
  "purpose": "Turns the book's conclusions into measures with owners and review date (PLAN-* and an AIDR).",
  "chapters": [
   28,
   "B.27"
  ],
  "location": "appendix_templates_and_tools.md#B.27",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 7
 },
 {
  "name": "Outcome table",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Seven outcome classes: prevented, detected, alerted but not triaged, triaged but not acted on, missed, no telemetry, not tested.",
  "chapters": [
   9,
   "B.8"
  ],
  "location": "appendix_templates_and_tools.md#B.8",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Described in Appendix B; template given as description, partly illustrated in chapter practical guide.",
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Exercise decision-rights table",
  "kind": "artefact",
  "id_prefix": "DRF-*",
  "activity": "Decisions",
  "purpose": "B.20 table naming who may authorise, change scope, stop, accept residual finding, declare covered.",
  "chapters": [
   20,
   "B.20"
  ],
  "location": "appendix_templates_and_tools.md#B.20",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Mandate manifest (series)",
  "kind": "artefact",
  "id_prefix": "MND-*",
  "activity": "Agents",
  "purpose": "Mandate manifest of earlier volumes extended here to emulation and loop agents.",
  "chapters": [
   6,
   14
  ],
  "location": "06_rules_of_engagement_and_safe_emulation.md",
  "has_full_template": false,
  "language": "yaml",
  "sources": [
   89,
   90,
   94
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 18
 },
 {
  "name": "Independence checklist for supervisors and boards",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "Short checklist a supervisor or board can apply to independence claims.",
  "chapters": [
   15
  ],
  "location": "15_independence.md#An independence checklist for supervisors and boards",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Annual loop calendar",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Planning",
  "purpose": "Template for an annual loop calendar derived from the case year.",
  "chapters": [
   27
  ],
  "location": "27_a_year_in_the_loop.md#Worked example: An annual loop calendar for each organisation",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Board decisions for the management body / AIDR-0849, AIDR-0899",
  "kind": "artefact",
  "id_prefix": "AIDR-0849, AIDR-0899",
  "activity": "Planning",
  "purpose": "Two-year loop plan written as decision records.",
  "chapters": [
   28
  ],
  "location": "28_conclusions_for_nordvik_and_hansa.md#Worked example: AIDR-0849 and AIDR-0899",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 7
 },
 {
  "name": "Heat map replaced by coverage records",
  "kind": "method",
  "id_prefix": null,
  "activity": "Coverage",
  "purpose": "Practical guide to replace a technique heat map with coverage records that carry age and expiry.",
  "chapters": [
   17
  ],
  "location": "17_coverage_as_a_claim.md#Practical guide: Replacing a technique heat map with coverage records that carry age and expiry",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "CSF profile kept as code",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Coverage",
  "purpose": "NIST CSF 2.0 profile referencing coverage-record identifiers and computed status by reference.",
  "chapters": [
   17,
   3
  ],
  "location": "17_coverage_as_a_claim.md#A CSF profile kept as code",
  "has_full_template": false,
  "language": null,
  "sources": [
   24,
   90
  ],
  "mention": "described",
  "notes": "Introduced in AI Red Team Chapter 3.",
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "scripts/toc_definition.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Holds the table of contents and regenerates book_index.json, MkDocs nav and the chapter list in BOOK_REQUIREMENTS.md.",
  "chapters": [
   "B"
  ],
  "location": "README.md / scripts/toc_definition.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/generate_outlines.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Regenerates chapter briefs in BOOK_BLUEPRINT.md and outline files for chapters not yet written.",
  "chapters": [
   "B"
  ],
  "location": "README.md / scripts/generate_outlines.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/format_citations.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Derives citation labels from the bibliography.",
  "chapters": [
   "B"
  ],
  "location": "README.md / scripts/format_citations.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/renumber_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Keeps the bibliography numbered 1..N without gaps or uncited entries.",
  "chapters": [
   "B"
  ],
  "location": "README.md / scripts/renumber_sources.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_mermaid_diagrams.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Renders and validates Mermaid diagrams against committed PNGs.",
  "chapters": [
   "B"
  ],
  "location": "README.md / scripts/check_mermaid_diagrams.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Listed in Appendix B 'Repository tools'.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/audit_references.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Audits chapter citations against the bibliography.",
  "chapters": [],
  "location": "README.md / scripts/audit_references.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies cited URLs and ISBNs.",
  "chapters": [],
  "location": "README.md / scripts/verify_sources.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_doc_numbering.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Checks chapter numbering consistency.",
  "chapters": [],
  "location": "README.md / scripts/check_doc_numbering.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/update_reference_backlinks.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Updates back-links from bibliography entries to chapters.",
  "chapters": [],
  "location": "README.md / scripts/update_reference_backlinks.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_figure_captions.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates figure captions.",
  "chapters": [],
  "location": "README.md / scripts/validate_figure_captions.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_heading_capitalization.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates heading capitalisation.",
  "chapters": [],
  "location": "README.md / scripts/validate_heading_capitalization.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_branding.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates diagram branding.",
  "chapters": [],
  "location": "README.md / scripts/validate_diagram_branding.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_elements.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates diagram elements.",
  "chapters": [],
  "location": "README.md / scripts/validate_diagram_elements.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/analyze_chapter_lengths.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Analyses chapter lengths.",
  "chapters": [],
  "location": "README.md / scripts/analyze_chapter_lengths.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/build_sources_section.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds the Sources section of chapters.",
  "chapters": [],
  "location": "README.md / scripts/build_sources_section.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/merge_new_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Merges new source entries (sources_new/) into the bibliography.",
  "chapters": [],
  "location": "README.md / scripts/merge_new_sources.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_environment.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies toolchain versions against BOOK_REQUIREMENTS.md.",
  "chapters": [],
  "location": "README.md / scripts/verify_environment.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/navigation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Resolves ordered chapter list from mkdocs.yml.",
  "chapters": [],
  "location": "README.md / scripts/navigation.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "scripts/source_keys.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Source key helper for the bibliography.",
  "chapters": [],
  "location": "README.md / scripts/source_keys.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "docs/build_book.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds PDF, EPUB and DOCX with Pandoc and XeLaTeX.",
  "chapters": [],
  "location": "README.md / docs/build_book.sh",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "generate_book.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates the manuscript book.",
  "chapters": [],
  "location": "README.md / generate_book.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "generate_presentation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates the presentation.",
  "chapters": [],
  "location": "README.md / generate_presentation.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "generate_whitepapers.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates whitepapers.",
  "chapters": [],
  "location": "README.md / generate_whitepapers.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "build_all_orchestrator.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Orchestrates all generators.",
  "chapters": [],
  "location": "README.md / build_all_orchestrator.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "build_release.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Full release pipeline.",
  "chapters": [],
  "location": "README.md / build_release.sh",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "hooks/bracketed_spans.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "MkDocs hook rendering Pandoc bracketed spans such as bibliography anchors.",
  "chapters": [],
  "location": "README.md / hooks/bracketed_spans.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Found in repository, not described in the manuscript.",
  "publishing_engine": true,
  "book": 9,
  "tools_chapter": null
 },
 {
  "name": "MITRE ATT&CK",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vocabulary",
  "purpose": "Technique knowledge base used to tag scenarios, detections and coverage.",
  "chapters": [
   1,
   2,
   5,
   9,
   17
  ],
  "location": "chapters 1, 2, 5, 9, 17",
  "has_full_template": false,
  "language": null,
  "sources": [
   17
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 10
 },
 {
  "name": "MITRE ATLAS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vocabulary",
  "purpose": "Technique knowledge base for attacks on AI-enabled systems, used to tag scenarios and agent detections.",
  "chapters": [
   5,
   12,
   13
  ],
  "location": "chapters 5, 12, 13",
  "has_full_template": false,
  "language": null,
  "sources": [
   18
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 10
 },
 {
  "name": "MITRE D3FEND",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vocabulary",
  "purpose": "Vocabulary of defensive countermeasures so a scenario can state which countermeasure it exercises.",
  "chapters": [
   5
  ],
  "location": "chapters 5",
  "has_full_template": false,
  "language": null,
  "sources": [
   19
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 10
 },
 {
  "name": "Atomic Red Team",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Emulation",
  "purpose": "Open library of small tests mapped to ATT&CK techniques; basis for the Nordvik atomic-test subset.",
  "chapters": [
   1,
   2,
   8,
   19
  ],
  "location": "chapters 1, 2, 8, 19",
  "has_full_template": false,
  "language": null,
  "sources": [
   32
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "MITRE Caldera",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Emulation",
  "purpose": "Open-source platform that automates adversary emulation, built on ATT&CK.",
  "chapters": [
   1,
   2,
   8,
   19
  ],
  "location": "chapters 1, 2, 8, 19",
  "has_full_template": false,
  "language": null,
  "sources": [
   33,
   37
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "Sigma",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Detection engineering",
  "purpose": "Open generic detection rule format; rules carry technique tags and positive/negative tests.",
  "chapters": [
   5,
   10
  ],
  "location": "chapters 5, 10",
  "has_full_template": false,
  "language": null,
  "sources": [
   30
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "STIX and TAXII",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Intelligence exchange",
  "purpose": "OASIS formats for structured exchange of technique references.",
  "chapters": [
   5,
   22
  ],
  "location": "chapters 5, 22",
  "has_full_template": false,
  "language": null,
  "sources": [
   27
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Traffic Light Protocol (TLP 2.0)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Information sharing",
  "purpose": "FIRST protocol for marking sharing restrictions, used in sector sharing.",
  "chapters": [
   22
  ],
  "location": "chapters 22",
  "has_full_template": false,
  "language": null,
  "sources": [
   48
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 3
 },
 {
  "name": "ATT&CK Navigator",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Coverage",
  "purpose": "Open-source web application for annotating ATT&CK matrices with layers.",
  "chapters": [
   17
  ],
  "location": "chapters 17",
  "has_full_template": false,
  "language": null,
  "sources": [
   45
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 10
 },
 {
  "name": "Top ATT&CK Techniques",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Targeting",
  "purpose": "CTID ranked technique list with prevalence, choke points and actionability for building a priority list.",
  "chapters": [
   5
  ],
  "location": "chapters 5",
  "has_full_template": false,
  "language": null,
  "sources": [
   31
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 10
 },
 {
  "name": "Summiting the Pyramid",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Detection engineering",
  "purpose": "CTID method scoring robustness and precision of detection signals; used to qualify visibility in coverage.",
  "chapters": [
   17
  ],
  "location": "chapters 17",
  "has_full_template": false,
  "language": null,
  "sources": [
   44
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "OpenTelemetry GenAI semantic conventions",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Telemetry",
  "purpose": "Shared conventions for spans, metrics and events from generative AI clients and MCP.",
  "chapters": [
   12
  ],
  "location": "chapters 12",
  "has_full_template": false,
  "language": null,
  "sources": [
   35
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 15
 },
 {
  "name": "OWASP Top 10 for LLM Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vocabulary",
  "purpose": "Risk list used with ATLAS to choose scenarios for LLM systems.",
  "chapters": [
   12,
   16
  ],
  "location": "chapters 12, 16",
  "has_full_template": false,
  "language": null,
  "sources": [
   21
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for Agentic Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Vocabulary",
  "purpose": "Risk list for agentic applications (tool misuse, identity and privilege abuse).",
  "chapters": [
   12,
   16
  ],
  "location": "chapters 12, 16",
  "has_full_template": false,
  "language": null,
  "sources": [
   22
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 10
 },
 {
  "name": "NIST Cybersecurity Framework 2.0",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Framework",
  "purpose": "Framework whose profile can be kept as code over coverage records.",
  "chapters": [
   17
  ],
  "location": "chapters 17",
  "has_full_template": false,
  "language": null,
  "sources": [
   24
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "NIST Cyber AI Profile",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Framework",
  "purpose": "NIST profile for AI used as context for AI in the loop.",
  "chapters": [
   17
  ],
  "location": "chapters 17",
  "has_full_template": false,
  "language": null,
  "sources": [
   25
  ],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "TIBER-EU",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Framework",
  "purpose": "ECB framework for threat-intelligence-based red teaming, incl. Purple Teaming Guidance and procurement guidance.",
  "chapters": [
   2,
   7,
   20,
   21
  ],
  "location": "chapters 2, 7, 20, 21",
  "has_full_template": false,
  "language": null,
  "sources": [
   20,
   34,
   39,
   50
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "CBEST",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Framework",
  "purpose": "Bank of England threat-intelligence-led assessment framework.",
  "chapters": [
   2,
   21
  ],
  "location": "chapters 2, 21",
  "has_full_template": false,
  "language": null,
  "sources": [
   42
  ],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "security.txt (RFC 9116)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Disclosure",
  "purpose": "File format for vulnerability disclosure contacts.",
  "chapters": [
   22
  ],
  "location": "chapters 22",
  "has_full_template": false,
  "language": null,
  "sources": [
   49
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Principles of Chaos Engineering / Security Chaos Engineering",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Verification",
  "purpose": "Practice of continuous experiments; referenced for continuous verification.",
  "chapters": [
   8,
   11,
   15
  ],
  "location": "chapters 8, 11, 15",
  "has_full_template": false,
  "language": null,
  "sources": [
   76,
   77,
   78
  ],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Breach-and-attack simulation (BAS)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Emulation",
  "purpose": "Commercial class of tools that run simulated attacks continuously.",
  "chapters": [
   2
  ],
  "location": "chapters 2",
  "has_full_template": false,
  "language": null,
  "sources": [
   81,
   108
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "MITRE Engenuity CTID",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Programme",
  "purpose": "Centre publishing Top ATT&CK Techniques and Summiting the Pyramid.",
  "chapters": [
   5,
   17
  ],
  "location": "chapters 5, 17",
  "has_full_template": false,
  "language": null,
  "sources": [
   31,
   44
  ],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 10
 },
 {
  "name": "NIST SP 800-115",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Testing method",
  "purpose": "Technical guide to information security testing and assessment.",
  "chapters": [
   2
  ],
  "location": "chapters 2",
  "has_full_template": false,
  "language": null,
  "sources": [
   36
  ],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "NIST SP 800-55 Measurement Guide",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Guide for selecting and developing information security measures.",
  "chapters": [
   18
  ],
  "location": "chapters 18",
  "has_full_template": false,
  "language": null,
  "sources": [
   46,
   47
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "ECSF and SFIA",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Competence",
  "purpose": "ENISA European Cybersecurity Skills Framework and SFIA used for the competence framework.",
  "chapters": [
   19,
   24
  ],
  "location": "chapters 19, 24",
  "has_full_template": false,
  "language": null,
  "sources": [
   102,
   103
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 21
 },
 {
  "name": "DORA (DevOps Research and Assessment) four key metrics",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Software delivery metrics used as an analogy for loop measures.",
  "chapters": [
   3
  ],
  "location": "chapters 3",
  "has_full_template": false,
  "language": null,
  "sources": [
   43
  ],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 15
 },
 {
  "name": "CISA KEV and EUVD",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Intelligence",
  "purpose": "Known-exploited-vulnerabilities catalogue and European Vulnerability Database used as intelligence for targeting.",
  "chapters": [
   5,
   22
  ],
  "location": "chapters 5, 22",
  "has_full_template": false,
  "language": null,
  "sources": [
   28,
   29
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Model Context Protocol (MCP)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agent tooling",
  "purpose": "Protocol for agent tool access; subject of telemetry conventions.",
  "chapters": [
   12
  ],
  "location": "chapters 12",
  "has_full_template": false,
  "language": null,
  "sources": [
   35
  ],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 20
 },
 {
  "name": "SIEM",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Detection",
  "purpose": "Security information and event management, the detection layer under test.",
  "chapters": [
   9,
   12
  ],
  "location": "chapters 9, 12",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Mermaid",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Diagram language used for the book's figures.",
  "chapters": [
   "33"
  ],
  "location": "chapters 33",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 4
 },
 {
  "name": "Pandoc, XeLaTeX, MkDocs, GitHub Actions",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Publishing toolchain of the book.",
  "chapters": [
   "33"
  ],
  "location": "chapters 33",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 5
 },
 {
  "name": "Microsoft, AWS and Google Cloud penetration-testing rules",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Boundaries",
  "purpose": "Published provider rules of engagement for testing customer environments.",
  "chapters": [
   22
  ],
  "location": "chapters 22",
  "has_full_template": false,
  "language": null,
  "sources": [
   79,
   83,
   84
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "Zero Trust Architecture (NIST SP 800-207)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Framework",
  "purpose": "Architecture used for the policy decision point outside the agent.",
  "chapters": [
   6,
   14
  ],
  "location": "chapters 6, 14",
  "has_full_template": false,
  "language": null,
  "sources": [
   26
  ],
  "mention": "passing",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "Purple loop (P1 Target, P2 Emulate, P3 Observe, P4 Improve, P5 Verify)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Loop",
  "purpose": "The book's five-stage loop practised as a recurring process.",
  "chapters": [
   4
  ],
  "location": "04_the_purple_loop_defined.md#The five stages",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Closure rule",
  "kind": "method",
  "id_prefix": null,
  "activity": "Verification",
  "purpose": "A finding closes only when re-test and variant pass, evidence is attached and a named person signs with an age.",
  "chapters": [
   4,
   11
  ],
  "location": "11_verify.md#The closure rule",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 5
 },
 {
  "name": "Independence principle (five separations, one rule, three proofs)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "Procedure testing model, data, authorship, vendor, time separation; incentive rule; held-out scenarios, seeded gaps, reproduction by a person.",
  "chapters": [
   4,
   15
  ],
  "location": "15_independence.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Held-out scenarios",
  "kind": "method",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "Scenarios kept away from detection authors to detect leakage and overfitting.",
  "chapters": [
   15
  ],
  "location": "15_independence.md#Held-out scenarios",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Seeded gaps",
  "kind": "method",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "Deliberately introduced gaps to prove a check can find them.",
  "chapters": [
   15
  ],
  "location": "15_independence.md#Seeded gaps",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Reproduction by a person",
  "kind": "method",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "A person reproduces a result before it is accepted.",
  "chapters": [
   15
  ],
  "location": "15_independence.md#Reproduction by a person",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Expectation first",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Detection owner writes and seals expectations before seeing results.",
  "chapters": [
   9
  ],
  "location": "09_observe.md#Expectation first",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Outcome taxonomy",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Seven-class classification of emulation outcomes.",
  "chapters": [
   9
  ],
  "location": "09_observe.md#The outcome taxonomy",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "Purple session (blameless, expectations first)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Running a session in which red and blue read the result together.",
  "chapters": [
   9,
   23
  ],
  "location": "09_observe.md#Practical guide: Running a purple session in which expectations are written before results are shown",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Priority technique list (20 to 40 techniques)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Targeting",
  "purpose": "Building a first priority list from intelligence and ranked technique lists.",
  "chapters": [
   5
  ],
  "location": "05_target.md#Practical guide: Building a first priority list of 20 to 40 techniques",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Scope as code / policy decision point enforcement",
  "kind": "method",
  "id_prefix": null,
  "activity": "Authorisation",
  "purpose": "Writing RoE so a policy decision point outside the agent enforces scope and stop.",
  "chapters": [
   6
  ],
  "location": "06_rules_of_engagement_and_safe_emulation.md#Scope as code",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 5
 },
 {
  "name": "Safety classes for scenarios",
  "kind": "method",
  "id_prefix": null,
  "activity": "Authorisation",
  "purpose": "Classifying scenarios by safety to bound where they may run.",
  "chapters": [
   6
  ],
  "location": "06_rules_of_engagement_and_safe_emulation.md#Safety classes for scenarios",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 20
 },
 {
  "name": "Continuous emulation with variation",
  "kind": "method",
  "id_prefix": null,
  "activity": "Pipeline",
  "purpose": "Triggers, cadence and variation to avoid overfitting.",
  "chapters": [
   8
  ],
  "location": "08_emulate_continuously.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "Coverage as a claim (status, evidence age, expiry, honest not tested)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Coverage",
  "purpose": "Replace heat maps with records carrying age and expiry.",
  "chapters": [
   17
  ],
  "location": "17_coverage_as_a_claim.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Finding-to-change decision",
  "kind": "method",
  "id_prefix": null,
  "activity": "Improvement",
  "purpose": "Writing a decision a second person can reproduce.",
  "chapters": [
   10
  ],
  "location": "10_improve.md#Practical guide: Writing a finding-to-change decision that a second person can reproduce",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 0
 },
 {
  "name": "Turning a closed finding into a regression case",
  "kind": "method",
  "id_prefix": null,
  "activity": "Verification",
  "purpose": "Variants and cadence for a regression case.",
  "chapters": [
   11
  ],
  "location": "11_verify.md#Practical guide: Turning a closed finding into a regression case with variants and a cadence",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 14
 },
 {
  "name": "Test-to-change ratio estimate",
  "kind": "method",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Estimating a team's test-to-change ratio.",
  "chapters": [
   3
  ],
  "location": "03_the_pressure_on_the_loop.md#Practical guide: Estimating a team's test-to-change ratio",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 5
 },
 {
  "name": "Classifying existing testing",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "Classifying the testing a team already does.",
  "chapters": [
   2
  ],
  "location": "02_what_the_loop_did_before.md#Practical guide: Classifying the testing a team already does",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 7
 },
 {
  "name": "Designing a board page that cannot be gamed",
  "kind": "method",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Board page design against Goodhart effects.",
  "chapters": [
   18
  ],
  "location": "18_measuring_the_loop.md#Practical guide: Designing a board page for the loop that cannot be improved by running more scenarios",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 15
 },
 {
  "name": "Operating-model decision with exit criteria",
  "kind": "method",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Choosing between four operating models.",
  "chapters": [
   19
  ],
  "location": "19_operating_models_and_team_design.md#Practical guide: Choosing an operating model with a decision record and exit criteria",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "Tabletop of decision rights",
  "kind": "method",
  "id_prefix": null,
  "activity": "Decisions",
  "purpose": "Testing decision rights in a tabletop.",
  "chapters": [
   20
  ],
  "location": "20_decision_rights_and_the_white_team.md#Practical guide: Writing decision rights for the loop and testing them in a tabletop",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 3
 },
 {
  "name": "Mapping obligation to control and evidence",
  "kind": "method",
  "id_prefix": null,
  "activity": "Regulation",
  "purpose": "Mapping a legal obligation to a loop control.",
  "chapters": [
   21
  ],
  "location": "21_regulation_as_constraint.md#Practical guide: Mapping a legal obligation to a loop control and its evidence",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 8
 },
 {
  "name": "Consent and notice for provider-crossing tests",
  "kind": "method",
  "id_prefix": null,
  "activity": "Boundaries",
  "purpose": "Writing a consent and notice protocol.",
  "chapters": [
   22
  ],
  "location": "22_across_boundaries.md#Practical guide: Writing a consent and notice protocol for a test that crosses a provider boundary",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 22
 },
 {
  "name": "Red apprenticeship route",
  "kind": "method",
  "id_prefix": null,
  "activity": "People",
  "purpose": "Designing an apprenticeship route surviving automation.",
  "chapters": [
   24
  ],
  "location": "24_competences_and_keeping_the_red_craft.md#Practical guide: Designing an apprenticeship route that survives automation of routine e",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 21
 },
 {
  "name": "Observable, expected, speculation labelling",
  "kind": "method",
  "id_prefix": null,
  "activity": "Outlook",
  "purpose": "Label every statement about the future with one of three labels.",
  "chapters": [
   1,
   25
  ],
  "location": "25_the_future_of_the_loop.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 23
 },
 {
  "name": "Debate in four steps",
  "kind": "method",
  "id_prefix": null,
  "activity": "Method",
  "purpose": "Case for concern, case for calm, where positions meet, what can be done, verdict.",
  "chapters": [
   8,
   15,
   24,
   25
  ],
  "location": "08_emulate_continuously.md#The debate",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Independence review of a loop",
  "kind": "method",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "Running an independence review.",
  "chapters": [
   15
  ],
  "location": "15_independence.md#Practical guide: Running an independence review of a loop",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 19
 },
 {
  "name": "Writing a two-year loop plan",
  "kind": "method",
  "id_prefix": null,
  "activity": "Planning",
  "purpose": "Plan as a decision record.",
  "chapters": [
   28
  ],
  "location": "28_conclusions_for_nordvik_and_hansa.md#Practical guide: Writing a two-year loop plan as a decision record",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 4
 },
 {
  "name": "Annual loop calendar",
  "kind": "method",
  "id_prefix": null,
  "activity": "Planning",
  "purpose": "Using the case year as a template.",
  "chapters": [
   27
  ],
  "location": "27_a_year_in_the_loop.md#Practical guide: Using the year as a template for an annual loop calendar",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Horizon register practice",
  "kind": "method",
  "id_prefix": null,
  "activity": "Outlook",
  "purpose": "Keeping a horizon register.",
  "chapters": [
   25
  ],
  "location": "25_the_future_of_the_loop.md#Practical guide: Keeping a horizon register for the loop",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 23
 },
 {
  "name": "Classifying and segregating a findings register",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Practical guide for the findings register.",
  "chapters": [
   16
  ],
  "location": "16_defending_the_loops_ai.md#Practical guide: Classifying and segregating a findings register",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 7
 },
 {
  "name": "Mandate manifest writing for emulation runner",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Practical guide.",
  "chapters": [
   14
  ],
  "location": "14_an_ai_agent_team_for_the_loop.md#Practical guide: Writing a mandate manifest for an emulation runner",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 18
 },
 {
  "name": "Detection record for agent over permission ceiling",
  "kind": "method",
  "id_prefix": null,
  "activity": "Detection engineering",
  "purpose": "Practical guide.",
  "chapters": [
   12
  ],
  "location": "12_purple_for_ai_systems_and_agents.md#Practical guide: Writing a detection record for an agent that exceeds its permission ceiling",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Injected-test clause for managed-service contract",
  "kind": "method",
  "id_prefix": null,
  "activity": "Testing the defenders' AI",
  "purpose": "Practical guide.",
  "chapters": [
   13
  ],
  "location": "13_testing_the_defenders_ai.md#Practical guide: Writing an injected-test clause for a managed-service contract",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 9
 },
 {
  "name": "Emulation plan giving ground truth without the plan",
  "kind": "method",
  "id_prefix": null,
  "activity": "Emulation",
  "purpose": "Practical guide.",
  "chapters": [
   7
  ],
  "location": "07_emulate.md#Practical guide: Writing an emulation plan that gives the blue team ground truth without giving it the plan",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "Recognising early signs of anti-patterns",
  "kind": "method",
  "id_prefix": null,
  "activity": "Review",
  "purpose": "Loop review practical guide.",
  "chapters": [
   26
  ],
  "location": "26_case_studies_and_anti_patterns.md#Practical guide: Recognising the early signs in a loop review",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 3
 },
 {
  "name": "Blameless session ground rules",
  "kind": "method",
  "id_prefix": null,
  "activity": "People",
  "purpose": "Practical guide.",
  "chapters": [
   23
  ],
  "location": "23_red_and_blue_as_people.md#Practical guide: Setting ground rules for a blameless purple session",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 0
 },
 {
  "name": "Delegation profile writing",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "Practical guide.",
  "chapters": [
   4
  ],
  "location": "04_the_purple_loop_defined.md#Practical guide: Writing a delegation profile for a loop",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 18
 },
 {
  "name": "Continuous emulation trigger and cadence choice",
  "kind": "method",
  "id_prefix": null,
  "activity": "Pipeline",
  "purpose": "Practical guide.",
  "chapters": [
   8
  ],
  "location": "08_emulate_continuously.md#Practical guide: Choosing triggers and cadence for a continuous emulation pipeline",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 11
 },
 {
  "name": "One-page inventory of AI in testing and detection",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "Practical guide.",
  "chapters": [
   1
  ],
  "location": "01_introduction.md#Practical guide: A one-page inventory of AI in testing and in detection",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 12
 },
 {
  "name": "Goodhart's law awareness",
  "kind": "method",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Guard against measures that become targets.",
  "chapters": [
   8,
   18
  ],
  "location": "18_measuring_the_loop.md#Goodhart and the loop",
  "has_full_template": false,
  "language": null,
  "sources": [
   80,
   82
  ],
  "mention": "described",
  "notes": null,
  "book": 9,
  "tools_chapter": 21
 },
 {
  "name": "Service record with dependencies and blast radius",
  "kind": "artefact",
  "id_prefix": "SVC-*",
  "activity": "Definition",
  "purpose": "States the service, its tier, owner, objectives, dependencies, blast radius, recovery evidence and unknowns, in version control beside the service's infrastructure code.",
  "chapters": [
   "3",
   "Appendix B.1"
  ],
  "location": "appendix_templates_and_tools.md#B.1; 03_the_pressure_on_operations.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Worked example SVC-HM-001; no separate Appendix A entry",
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Delegation profile",
  "kind": "artefact",
  "id_prefix": "DLG-*",
  "activity": "Definition / delegation",
  "purpose": "States for one agent and one service what it may do per action class and level, how much of the autonomy budget is kept, what verifies it and who stops it.",
  "chapters": [
   "4",
   "22",
   "Appendix A.18",
   "Appendix B.2"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-dlg; appendix_templates_and_tools.md#B.2",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Worked examples DLG-HM-OPS-001 (ch4), DLG-HM-OPS-02 (ch22)",
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Decision-rights file with checker",
  "kind": "artefact",
  "id_prefix": "DLG-*",
  "activity": "Decision rights",
  "purpose": "Assigns each decision of a bad night a holder, two deputies, response time, evidence standard, record and AI ceiling, and a checker enforces the rules the file must satisfy.",
  "chapters": [
   "22",
   "Appendix A.18"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-dlg",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Python checker plus YAML file (Nordvik Region version smaller)",
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Operations mandate summary",
  "kind": "artefact",
  "id_prefix": "MND-*",
  "activity": "Definition",
  "purpose": "One-page summary of who and what may act on one service (agents, mode, function, accountable people), summarising the mandate manifest.",
  "chapters": [
   "1"
  ],
  "location": "01_introduction.md (Worked example)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Summarises MND-NR-OPS-003",
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Service level objective record",
  "kind": "artefact",
  "id_prefix": "SLO-*",
  "activity": "Observation",
  "purpose": "Records what users are promised and how it is measured, alerted on (burn-rate) and evidenced, including the budget policy and the evidence that the alerts work.",
  "chapters": [
   "5",
   "13",
   "Appendix A.1",
   "Appendix B.3"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-slo; 05_observe.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "SLO-HM-004, SLO-NR-002; includes an OpenTelemetry collector fragment for SVC-NR-002",
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Quality, restraint and freshness objectives for an AI service",
  "kind": "artefact",
  "id_prefix": "SLO-*",
  "activity": "AI service operation",
  "purpose": "Extends a service level objective record with quality indicators (suffix -Q) that the offline gate and canary of a model change use.",
  "chapters": [
   "13",
   "Appendix A.9"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-mdl",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Extends SLO-HM-002",
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Alert-correlation policy",
  "kind": "artefact",
  "id_prefix": "ACP-*",
  "activity": "Observation",
  "purpose": "Sets per alert class what an observability or correlation layer may group, suppress or page, what it may never suppress, sampling by a person and the seeded-miss rates that freeze its promotion.",
  "chapters": [
   "6",
   "Appendix A.2",
   "Appendix B.4"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-acp",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Appendix B calls it 'Correlation policy and noise budget'; ACP-HM-2028-01",
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Alert-correlation evaluation record",
  "kind": "artefact",
  "id_prefix": "EVL-*",
  "activity": "Observation",
  "purpose": "Reports a trial of a correlation policy against a golden incident set, with seeded alerts, precision and recall per alert class and noise budget.",
  "chapters": [
   "6",
   "Appendix A.2"
  ],
  "location": "06_observe_with_ai.md (Worked example: evaluation record)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "EVL-HM-2028-03 against golden set GLD-HM-2028-01",
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Golden incident set",
  "kind": "artefact",
  "id_prefix": "GLD-*",
  "activity": "Observation",
  "purpose": "A set of replayed past and seeded episodes used to test a correlation or incident tool.",
  "chapters": [
   "6"
  ],
  "location": "06_observe_with_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Named in the evaluation record; no separate template",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Incident record",
  "kind": "artefact",
  "id_prefix": "INC-*",
  "activity": "Diagnosis",
  "purpose": "Single account of an incident: clocks, timeline, hypotheses by author, the assistant's contributions and decisions with their holders.",
  "chapters": [
   "7",
   "Appendix A.3",
   "Appendix B.5"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-inc; 07_diagnose.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "INC-HM-2028-0871",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "AI incident record with clock sheet",
  "kind": "artefact",
  "id_prefix": "INC-*",
  "activity": "AI incident handling",
  "purpose": "Adds to the incident record the classes of AI incident, the stop outside the system, evidence preserved before change and one clock per regime with owner and state.",
  "chapters": [
   "14",
   "Appendix A.10"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-aii",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "INC-NR-2028-0163",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Clock sheet",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "AI incident handling",
  "purpose": "One-page per-service record stating, for each regime, whether it applies, who owns the clock, where the report goes and the limits.",
  "chapters": [
   "14",
   "Appendix A.10"
  ],
  "location": "14_incidents_involving_ai.md; 33_appendix_a_code_examples.md#appendix-a-aii",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Change class and change record",
  "kind": "artefact",
  "id_prefix": "CHG-*",
  "activity": "Change",
  "purpose": "Change class states what may be released without a person in the path; the record carries author, reconciler, computed class, plan summary, independent approvers, tested rollback and verification.",
  "chapters": [
   "8",
   "13",
   "Appendix A.4",
   "Appendix B.6"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-chg; 08_change.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CHG-HM-*, CHG-NR-*; ch2 also shows a ticket-era vs code-era record pair",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Change gate policy",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Rego gate that computes the change class from the plan, requires an independent named approver for agent-authored change and refuses release outside the window.",
  "chapters": [
   "8",
   "Appendix A.4"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-chg",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": "Illustrative",
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Ticket-era and code-era change record comparison",
  "kind": "artefact",
  "id_prefix": "CHG-*",
  "activity": "Change",
  "purpose": "Two illustrative change records showing the shape of each era of operating models.",
  "chapters": [
   "2"
  ],
  "location": "02_what_operations_did_before.md (Worked example)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Not a template for production; uses fictional ServiceHub",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Reconciler sync policy",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Argo CD project, ApplicationSet and sync policy that confine a state engine (repositories, destinations, roles, sync windows) and set what it may do on its own.",
  "chapters": [
   "8",
   "Appendix A.21",
   "Appendix B.6"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-syn; 08_change.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Argo CD specific; annotation keys are the book's convention",
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Progressive-delivery policy",
  "kind": "artefact",
  "id_prefix": "ROL-*",
  "activity": "Change safely",
  "purpose": "Defines rings, bake times, stop conditions and stop path for one service and names the verifier independent of author, pipeline and telemetry path.",
  "chapters": [
   "9",
   "Appendix A.5"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-pdl",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "ROL-HM-001; includes illustrative Rego and SQL",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Rollout with independent analysis template",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Change safely",
  "purpose": "Argo Rollouts Rollout and cluster-scoped analysis template that read their verdict from an independent verifier.",
  "chapters": [
   "9",
   "Appendix A.22"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-ana",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Response shape of the verifier is the book's own",
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Freeze calendar",
  "kind": "artefact",
  "id_prefix": "FRZ-*",
  "activity": "Change safely",
  "purpose": "Calendar of freezes with holders who may authorise an exception, conditions and record.",
  "chapters": [
   "9"
  ],
  "location": "09_change_safely.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "FRZ-HM-2028 referred to; no separate template",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Runbook manifest",
  "kind": "artefact",
  "id_prefix": "RBK-*",
  "activity": "Restoration",
  "purpose": "Makes a runbook executable under a bound: preconditions, dry run, action, independent verification, failure path, who may stop it and when last exercised.",
  "chapters": [
   "10",
   "Appendix A.6",
   "Appendix B.7"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-rbk",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "RBK-HM-0007",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "First-ten-actions remediation catalogue",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Restoration",
  "purpose": "Table of ten first runbook actions with class, ceiling per organisation and conditions, plus the actions not delegated.",
  "chapters": [
   "10"
  ],
  "location": "10_restore.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Table in chapter",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Eleven action classes and ceilings",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Definition / delegation",
  "purpose": "Table of eleven action classes (read ... restore-overwrite) with reversibility and default ceiling per level.",
  "chapters": [
   "4"
  ],
  "location": "04_the_operations_loop_defined.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Basis of DLG-*",
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Capacity record",
  "kind": "artefact",
  "id_prefix": "CAP-*",
  "activity": "Sustain",
  "purpose": "Turns a forecast into a proposal: backtest, uplift for under-coverage, guardrails capacity may not be cut below and the approving person.",
  "chapters": [
   "11",
   "Appendix A.7"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-cap",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CAP-HM-2028-014",
  "book": 10,
  "tools_chapter": 17
 },
 {
  "name": "Cost-and-latency budget",
  "kind": "artefact",
  "id_prefix": "CAP-*",
  "activity": "AI service economics",
  "purpose": "Holds capacity, unit cost, objectives, fallback ladder and stop for an AI service, with per-run, daily and monthly cost limits.",
  "chapters": [
   "15",
   "Appendix A.11"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-bud",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CAP-HM-AI-001, CAP-NR-AI-*; prefix is the capacity-record family",
  "book": 10,
  "tools_chapter": 17
 },
 {
  "name": "Post-incident review",
  "kind": "artefact",
  "id_prefix": "PIR-*",
  "activity": "Learning",
  "purpose": "States who took part, how the timeline was drafted and verified, independent accounts written before the session, contributing conditions with evidence and what AI did.",
  "chapters": [
   "12",
   "Appendix A.8",
   "Appendix B.8"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-pir",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "PIR-HM-2027-0833",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Problem record",
  "kind": "artefact",
  "id_prefix": "PRB-*",
  "activity": "Learning",
  "purpose": "Tracks each action from a review to verified closure; a small closure rule can run in a pipeline and reopens an action when a risk acceptance expires.",
  "chapters": [
   "12",
   "Appendix A.8",
   "Appendix B.8"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-pir",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Includes a Python closure rule",
  "book": 10,
  "tools_chapter": 7
 },
 {
  "name": "Action closure rule",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Learning",
  "purpose": "Small Python rule that closes an action only on a passing re-test and reopens it when a risk acceptance expires.",
  "chapters": [
   "12",
   "Appendix A.8"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-pir",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 7
 },
 {
  "name": "Model-change record",
  "kind": "artefact",
  "id_prefix": "CHG-*",
  "activity": "AI service operation",
  "purpose": "A model change as a normal change with offline gate, shadow, canary and ramp, graded by a party that does not run the change.",
  "chapters": [
   "13",
   "Appendix A.9"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-mdl",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Provider retirement of a pinned snapshot",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Mandate manifest for an operations agent",
  "kind": "artefact",
  "id_prefix": "MND-*",
  "activity": "Agents",
  "purpose": "Bounds an agent's scope, action classes and levels, approvals, credentials, budgets, breakers, separation of duties, prohibitions, verification, memory and stop path.",
  "chapters": [
   "1",
   "16",
   "18",
   "Appendix A.12",
   "Appendix B.9"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-mnd",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "MND-NR-OPS-003, MND-HM-OPS-001; with Rego decision point",
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Mandate policy decision point rule",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Rego rule showing the decision point outside the agent that enforces the mandate by level.",
  "chapters": [
   "16",
   "Appendix A.12"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-mnd",
  "has_full_template": true,
  "language": "rego",
  "sources": [],
  "mention": "described",
  "notes": "Illustrative",
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Promotion and demotion policy",
  "kind": "artefact",
  "id_prefix": "PRM-*",
  "activity": "Agents",
  "purpose": "States the evidence needed to raise an agent's level (shadow, offline, seeded, stop) and the events that lower it at once.",
  "chapters": [
   "16",
   "Appendix A.12",
   "Appendix B.10"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-mnd",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "PRM-HM-OPS-001",
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Observer manifest",
  "kind": "artefact",
  "id_prefix": "OBS-*",
  "activity": "Independence",
  "purpose": "Declares the probes, heartbeat and stop path that verify an agent's actions and the independence of the observer in model, data, authorship, credential, failure domain and time.",
  "chapters": [
   "4",
   "17",
   "Appendix A.13",
   "Appendix B.11"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-obs",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "OBS-HM-0001, OBS-NR-0001",
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Seeded-fault record",
  "kind": "artefact",
  "id_prefix": "SDF-*",
  "activity": "Independence",
  "purpose": "Records a deliberately introduced, authorised and scoped fault to test whether the agent's verification and the independent probe notice it.",
  "chapters": [
   "17",
   "Appendix A.13",
   "Appendix B.12"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-obs",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "SDF-HM-2028-002",
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Agent permission manifest and refusals",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Classifies what an agent reads by who can write it and states deny-by-default refusals that hold at every level, with a replayable decision log.",
  "chapters": [
   "18",
   "Appendix A.14"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-pdp",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "Rego and JSON decision log; Rego untested against an engine per the book",
  "book": 10,
  "tools_chapter": 20
 },
 {
  "name": "Tier-0 checklist for the operator's AI",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Controls for remediation agents, runbook libraries, observability pipelines and configuration maps: classification, access, segregation, supply chain, content classes and the ceiling suite.",
  "chapters": [
   "18",
   "Appendix B.13"
  ],
  "location": "appendix_templates_and_tools.md#B.13",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 20
 },
 {
  "name": "Restore-test record and resilience register row",
  "kind": "artefact",
  "id_prefix": "RST-*",
  "activity": "Resilience",
  "purpose": "Records a restore, failover or exit test with scenario, objective, measured time and point, independent verification, attestation and effect on the claim.",
  "chapters": [
   "19",
   "24",
   "Appendix A.15",
   "Appendix B.14"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-rst",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "RST-HM-2027-004 (failed), RST-NR-2029-001 (exit); Python status function derives claim state",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Resilience register",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Register of every recoverability claim with six derived statuses (verified, expired, implemented but unverified, failed, asserted, untested), derived from the latest test record.",
  "chapters": [
   "4",
   "19",
   "29",
   "Appendix A.15",
   "Appendix B.14",
   "Appendix B.20"
  ],
  "location": "19_resilience_as_a_claim.md",
  "has_full_template": true,
  "language": "python",
  "sources": [],
  "mention": "described",
  "notes": "Status function in Appendix A.15",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Metric definition catalogue",
  "kind": "artefact",
  "id_prefix": "MET-*",
  "activity": "Measurement",
  "purpose": "Defines each metric with the decision it informs, population, clock, source, subject and known misuse; a report function shows a metric without a mean.",
  "chapters": [
   "20",
   "Appendix A.16"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-met",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "MET-HM-0003, MET-HM-0009; Python report function",
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Role charter for the operations conductor",
  "kind": "artefact",
  "id_prefix": "ROLE-*",
  "activity": "Roles",
  "purpose": "Fixes the mandate, decision rights, independence and competence conditions of an operations conductor and what is never delegated.",
  "chapters": [
   "21",
   "Appendix A.17",
   "Appendix B.15"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-role",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "ROLE-HM-OPS-001",
  "book": 10,
  "tools_chapter": 21
 },
 {
  "name": "Operations annex to a managed-service contract",
  "kind": "artefact",
  "id_prefix": "OPA-*",
  "activity": "Contracts",
  "purpose": "Annex stating what a provider's AI does, change notice, transparency and exit-test terms so the customer can check them.",
  "chapters": [
   "21",
   "24"
  ],
  "location": "24_across_boundaries.md (Worked example); 21_operating_models.md",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "OPA-NR-SD-01",
  "book": 10,
  "tools_chapter": 9
 },
 {
  "name": "Register-of-information entry",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Contracts",
  "purpose": "Operations-side register entry for an ICT arrangement (managed model service of Cloud B) with DORA Article 28 fields.",
  "chapters": [
   "24"
  ],
  "location": "24_across_boundaries.md (Worked example)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "HM-PROC-CLB-2028-04",
  "book": 10,
  "tools_chapter": 7
 },
 {
  "name": "Exit-test record",
  "kind": "artefact",
  "id_prefix": "RST-*",
  "activity": "Resilience",
  "purpose": "Restore-test record of kind exit for moving a service to a second provider, with objective and quality gate.",
  "chapters": [
   "24"
  ],
  "location": "24_across_boundaries.md (Worked example)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "RST-NR-2029-001; status failed",
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Regulation-to-control mapping record",
  "kind": "artefact",
  "id_prefix": "RCM-*",
  "activity": "Regulation",
  "purpose": "One row per control with the instruments it serves, owner (second line), evidence age and review dates.",
  "chapters": [
   "23"
  ],
  "location": "23_regulation_as_constraint.md (Worked example)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "RCM-HM-OPS-2028-01",
  "book": 10,
  "tools_chapter": 8
 },
 {
  "name": "On-call charter",
  "kind": "artefact",
  "id_prefix": "ONC-*",
  "activity": "People",
  "purpose": "Sets coverage, response targets, noise budget, rest after call-out, escalation, handover and attribution of agent actions, agreed with employee representatives.",
  "chapters": [
   "25",
   "Appendix A.19",
   "Appendix B.16"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-onc",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "ONC-NR-2029-01",
  "book": 10,
  "tools_chapter": 21
 },
 {
  "name": "Competence record",
  "kind": "artefact",
  "id_prefix": "CMP-*",
  "activity": "People",
  "purpose": "Records competences shown in assisted and unassisted form, with exercise, assessors, permitted and prohibited uses, readers and a development plan.",
  "chapters": [
   "26",
   "Appendix A.20",
   "Appendix B.17"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-cmp",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CMP-HM-OPS-007",
  "book": 10,
  "tools_chapter": 21
 },
 {
  "name": "Drill-year plan",
  "kind": "artefact",
  "id_prefix": "PLAN-*",
  "activity": "People",
  "purpose": "Fixes cadence of tabletop, manual run and seeded-error exercises with agents off over a year.",
  "chapters": [
   "26",
   "Appendix A.20"
  ],
  "location": "33_appendix_a_code_examples.md#appendix-a-cmp",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "PLAN-NR-OPS-2029-01",
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Dark-day record",
  "kind": "artefact",
  "id_prefix": "DKD-*",
  "activity": "People",
  "purpose": "Record of a scheduled exercise in which agents are off and operators run services manually.",
  "chapters": [
   "26",
   "29"
  ],
  "location": "26_competences_and_keeping_the_craft.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "DKD-HM-2028-Q4; described, template not separate",
  "book": 10,
  "tools_chapter": 14
 },
 {
  "name": "Competence framework OPS-CF",
  "kind": "artefact",
  "id_prefix": "OPS-CF",
  "activity": "People",
  "purpose": "Hansa Mutual's five-area competence framework (SY, VF, MO, AU, JU) with thirteen identifiers and evidence type.",
  "chapters": [
   "26"
  ],
  "location": "26_competences_and_keeping_the_craft.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Table in chapter",
  "book": 10,
  "tools_chapter": 21
 },
 {
  "name": "Stop drill record",
  "kind": "artefact",
  "id_prefix": "STOP-*",
  "activity": "Independence",
  "purpose": "Drill that stops a running agent while the platform is degraded, with time measured against a target.",
  "chapters": [
   "4",
   "10",
   "14",
   "16",
   "17",
   "20",
   "22",
   "26",
   "29",
   "31"
  ],
  "location": "04_the_operations_loop_defined.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "STOP-HM-ITOPS-2027-Q1-01 (17 min against 5); described, not a template",
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Horizon register",
  "kind": "artefact",
  "id_prefix": "HZN-*",
  "activity": "Foresight",
  "purpose": "Register of trends labelled observable, expected or speculation, each tied to a decision, a posture and review triggers.",
  "chapters": [
   "27"
  ],
  "location": "27_the_future_of_operations.md (Worked example)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "HZN-HM-OPS-01",
  "book": 10,
  "tools_chapter": 23
 },
 {
  "name": "Anti-pattern record",
  "kind": "artefact",
  "id_prefix": "AP-*",
  "activity": "Learning",
  "purpose": "Record of a named anti-pattern in an organisation's own estate with functions, status, decision and review date.",
  "chapters": [
   "28"
  ],
  "location": "28_case_studies_and_anti_patterns.md (Worked example)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "AP-HM-OPS-05, AP-NR-OPS-08",
  "book": 10,
  "tools_chapter": 3
 },
 {
  "name": "Year ledger",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Management",
  "purpose": "Extract of the register of events and claims for a year, each with date, measurement and state.",
  "chapters": [
   "29"
  ],
  "location": "29_a_year_in_operations.md (Worked example)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 7
 },
 {
  "name": "Twelve-month operations plan",
  "kind": "artefact",
  "id_prefix": "OPL-*",
  "activity": "Management",
  "purpose": "Plan with milestones, tests scheduled and owner for each organisation's next twelve months.",
  "chapters": [
   "30"
  ],
  "location": "30_conclusions_for_nordvik_and_hansa.md (Worked example)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "OPL-NR-2029-01, OPL-HM-2029-*",
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Operations charter",
  "kind": "artefact",
  "id_prefix": "CHR-*",
  "activity": "Management",
  "purpose": "Plain statement of what the organisation could show for one service on a given day: accountable people, objective, recovery, evidence.",
  "chapters": [
   "31"
  ],
  "location": "31_conclusion.md (Worked example)",
  "has_full_template": true,
  "language": "yaml",
  "sources": [],
  "mention": "described",
  "notes": "CHR-NR-OPS-01",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Autonomy-budget review checklist",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Review",
  "purpose": "Checklist for reviewing consumption of a class's autonomy budget.",
  "chapters": [
   "4",
   "Appendix B.18"
  ],
  "location": "appendix_templates_and_tools.md#B.18",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Observer review checklist",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Review",
  "purpose": "Checklist for reviewing an observer manifest against the independence tests.",
  "chapters": [
   "17",
   "Appendix B.19"
  ],
  "location": "appendix_templates_and_tools.md#B.19",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Quarterly resilience register review checklist",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Review",
  "purpose": "Checklist for the quarterly review of the resilience register.",
  "chapters": [
   "19",
   "Appendix B.20"
  ],
  "location": "appendix_templates_and_tools.md#B.20",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Sync-policy review checklist",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Review",
  "purpose": "Eleven-point checklist for reviewing a reconciler sync policy before it is switched on.",
  "chapters": [
   "8",
   "Appendix B.21"
  ],
  "location": "appendix_templates_and_tools.md#B.21",
  "has_full_template": true,
  "language": "md",
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Board paper outline",
  "kind": "artefact",
  "id_prefix": null,
  "activity": "Management",
  "purpose": "Outline of one paper stating the question, evidence, decisions requested and indicators for the next paper.",
  "chapters": [
   "30"
  ],
  "location": "30_conclusions_for_nordvik_and_hansa.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide",
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "AI Decision Record",
  "kind": "artefact",
  "id_prefix": "AIDR-0900 to AIDR-0999",
  "activity": "Governance",
  "purpose": "Numbered decision records (Nordvik AIDR-0900-0949, Hansa AIDR-0950-0999) that the book's worked examples cite as the decision behind each artefact.",
  "chapters": [
   "1",
   "30"
  ],
  "location": "30_conclusions_for_nordvik_and_hansa.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Series artefact; used throughout, not templated here",
  "book": 10,
  "tools_chapter": 7
 },
 {
  "name": "Practical guide: Inventorying where AI already takes part in operating a service",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "One-page record per Tier 1 service listing every tool in the operating chain that contains AI, with mode, highest action class, owner and stop.",
  "chapters": [
   "1"
  ],
  "location": "01_introduction.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 7
 },
 {
  "name": "Practical guide: Classifying the practices a team has",
  "kind": "method",
  "id_prefix": null,
  "activity": "Operating models",
  "purpose": "One-page classification deciding per practice whether to keep, automate, change owner or retire it before AI is introduced.",
  "chapters": [
   "2"
  ],
  "location": "02_what_operations_did_before.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 7
 },
 {
  "name": "Practical guide: Drawing a dependency-and-blast-radius map in an afternoon",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "Produces for one Tier 1 service a record of dependencies, dependants, blast radius and recovery evidence.",
  "chapters": [
   "3"
  ],
  "location": "03_the_pressure_on_operations.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Practical guide: Writing a delegation profile for one service",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition / delegation",
  "purpose": "Produces a delegation profile stating what one agent may do on one service, the budget kept, the verifier and the stop.",
  "chapters": [
   "4"
  ],
  "location": "04_the_operations_loop_defined.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Practical guide: Writing an SLO from a user journey",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Produces a reviewed objective record with burn-rate alert, owner and test in about two working weeks of part-time effort.",
  "chapters": [
   "5"
  ],
  "location": "05_observe.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Practical guide: Drawing up an alert-correlation policy",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Gives a correlation or noise-reduction feature a mandate, suppression ceiling, sampling rate and stop condition before it acts.",
  "chapters": [
   "6"
  ],
  "location": "06_observe_with_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Practical guide: Running an incident with an assistant",
  "kind": "method",
  "id_prefix": null,
  "activity": "Diagnosis",
  "purpose": "Procedure for running an incident with an AI assistant while keeping human hypotheses first, clocks and decisions recorded.",
  "chapters": [
   "7"
  ],
  "location": "07_diagnose.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Practical guide: Defining standard change classes that an agent may author and a pipeline may release",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Defines a class of change an agent may draft and a pipeline release without per-instance human approval, and keeps it honest over time.",
  "chapters": [
   "8"
  ],
  "location": "08_change.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Practical guide: Setting stop conditions for a staged rollout with a second system evaluating them",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change safely",
  "purpose": "Gives every Tier 1 service a rollout in which a system other than the releaser decides from evidence whether the change spreads.",
  "chapters": [
   "9"
  ],
  "location": "09_change_safely.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Practical guide: Writing a runbook so that a machine may run it",
  "kind": "method",
  "id_prefix": null,
  "activity": "Restoration",
  "purpose": "Produces a runbook manifest that a policy decision point can enforce, an agent execute and a person audit.",
  "chapters": [
   "10"
  ],
  "location": "10_restore.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Practical guide: Setting guardrails for a rightsizing agent",
  "kind": "method",
  "id_prefix": null,
  "activity": "Sustain",
  "purpose": "Gives a cost or capacity agent a mandate that saves money without removing the margin recovery depends on.",
  "chapters": [
   "11"
  ],
  "location": "11_sustain_capacity_cost_energy.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Practical guide: Running a review with an AI-drafted timeline and a human-written analysis",
  "kind": "method",
  "id_prefix": null,
  "activity": "Learning",
  "purpose": "Holds a post-incident review using a machine-drafted timeline without letting it determine the analysis, ending in owned, re-tested actions.",
  "chapters": [
   "12"
  ],
  "location": "12_sustain_problems_and_learning.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Practical guide: Defining quality objectives and a rollback for an AI service",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI service operation",
  "purpose": "Gives an AI service the objectives, release path and way back a conventional service has.",
  "chapters": [
   "13"
  ],
  "location": "13_operating_ai_systems.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Practical guide: Building a clock sheet for a service in scope of more than one regime",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI incident handling",
  "purpose": "Produces before the first incident a one-page record of which reporting clocks may open, their owners and recipients.",
  "chapters": [
   "14"
  ],
  "location": "14_incidents_involving_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Practical guide: Setting a cost-and-latency budget for an AI service with a stop condition",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI service economics",
  "purpose": "Gives an AI service a budget bounding cost, latency and quality together, with a stop that works when the service does not.",
  "chapters": [
   "15"
  ],
  "location": "15_the_economics_of_ai_operations.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Practical guide: Writing a mandate manifest for a runbook-runner agent",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Gives a runbook-runner agent the smallest useful mandate in a form a policy decision point enforces and a supervisor can read.",
  "chapters": [
   "16"
  ],
  "location": "16_an_ai_agent_team_for_operations.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Practical guide: Specifying an observer",
  "kind": "method",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "Gives each Tier 1 service function an agent acts on an observer meeting the three tests, recorded in an observer manifest and re-shown on a fixed cycle.",
  "chapters": [
   "17"
  ],
  "location": "17_the_observer_principle.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Practical guide: Writing a permission manifest and deny-by-default policy for a remediation agent",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Writes the smallest permission manifest for a remediation agent and a policy that refuses everything else.",
  "chapters": [
   "18"
  ],
  "location": "18_defending_the_operators_ai.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 20
 },
 {
  "name": "Practical guide: Running a restore test and writing the claim it supports",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Produces a dated, attested, measured result for one recoverability claim and writes the claim so it can be re-tested and expired.",
  "chapters": [
   "19"
  ],
  "location": "19_resilience_as_a_claim.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Practical guide: Writing a metric definition with intended use and misuse notes",
  "kind": "method",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Produces per measure a definition stating decision, clocks, source, reporting form and known misuse.",
  "chapters": [
   "20"
  ],
  "location": "20_measuring_operations.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 23
 },
 {
  "name": "Practical guide: Adding an operations annex to a managed-service contract",
  "kind": "method",
  "id_prefix": null,
  "activity": "Operating models",
  "purpose": "States what the provider's AI does, lets the customer check it and gives notice of change.",
  "chapters": [
   "21"
  ],
  "location": "21_operating_models.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 9
 },
 {
  "name": "Practical guide: Choosing an operating model by service criticality and sovereignty",
  "kind": "method",
  "id_prefix": null,
  "activity": "Operating models",
  "purpose": "Decides per service who runs it and at what delegation ceiling, recorded with exit criteria.",
  "chapters": [
   "21"
  ],
  "location": "21_operating_models.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 9
 },
 {
  "name": "Practical guide: Building a decision-right matrix for the first ten decisions of a bad night",
  "kind": "method",
  "id_prefix": null,
  "activity": "Decision rights",
  "purpose": "Produces a decision-rights file with holder, two deputies, response time, evidence standard, record and AI ceiling per decision, and shows the stop right works out of hours.",
  "chapters": [
   "22"
  ],
  "location": "22_decision_rights_and_the_incident_commander.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Practical guide: Turning an article into a control with an owner and evidence",
  "kind": "method",
  "id_prefix": null,
  "activity": "Regulation",
  "purpose": "Converts a duty in an instrument into a control, owner and evidence artefact that a supervisor can inspect.",
  "chapters": [
   "23"
  ],
  "location": "23_regulation_as_constraint.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Practical guide: Writing the operational transparency and exit-test annex to a cloud or managed contract",
  "kind": "method",
  "id_prefix": null,
  "activity": "Contracts",
  "purpose": "Turns provider duties into testable terms and proves the exit before it is needed.",
  "chapters": [
   "24"
  ],
  "location": "24_across_boundaries.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 9
 },
 {
  "name": "Practical guide: Drafting an on-call charter with the works council",
  "kind": "method",
  "id_prefix": null,
  "activity": "People",
  "purpose": "Produces an on-call charter agreed with employee representatives before the rota or an AI operations tool changes.",
  "chapters": [
   "25"
  ],
  "location": "25_operators_as_people.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 22
 },
 {
  "name": "Practical guide: Planning a drill year with agents off",
  "kind": "method",
  "id_prefix": null,
  "activity": "People",
  "purpose": "Gives a team a year of drills that keep manual operation, verification and judgement evidenced at a small-team cost.",
  "chapters": [
   "26"
  ],
  "location": "26_competences_and_keeping_the_craft.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Practical guide: Keeping a horizon register for operations",
  "kind": "method",
  "id_prefix": null,
  "activity": "Foresight",
  "purpose": "Holds the organisation's view of the future in a reviewably wrong form and ties each trend to a decision.",
  "chapters": [
   "27"
  ],
  "location": "27_the_future_of_operations.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 23
 },
 {
  "name": "Practical guide: Reading a post-incident report with the five functions",
  "kind": "method",
  "id_prefix": null,
  "activity": "Learning",
  "purpose": "Turns a public or internal post-incident report into a short comparable record of mechanism by operations function.",
  "chapters": [
   "28"
  ],
  "location": "28_case_studies_and_anti_patterns.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Practical guide: Monthly review of the operations loop",
  "kind": "method",
  "id_prefix": null,
  "activity": "Management",
  "purpose": "One-hour monthly review turning the loop's records into decisions.",
  "chapters": [
   "29"
  ],
  "location": "29_a_year_in_operations.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 3
 },
 {
  "name": "Practical guide: Board paper outline",
  "kind": "method",
  "id_prefix": null,
  "activity": "Management",
  "purpose": "One paper stating question, evidence, decisions requested and indicators.",
  "chapters": [
   "30"
  ],
  "location": "30_conclusions_for_nordvik_and_hansa.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Practical guide: Five things on Monday and the first week",
  "kind": "method",
  "id_prefix": null,
  "activity": "Management",
  "purpose": "First week of work producing five written records and a gap list to show what the organisation can prove.",
  "chapters": [
   "31"
  ],
  "location": "31_conclusion.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": "Practical guide section with purpose, roles, steps, interval and definition of done",
  "book": 10,
  "tools_chapter": 0
 },
 {
  "name": "Operations loop (O1 Observe, O2 Diagnose, O3 Change, O4 Restore, O5 Sustain)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Framework",
  "purpose": "The five operations functions that organise every chapter and against which cases and controls are classified.",
  "chapters": [
   "1",
   "4"
  ],
  "location": "04_the_operations_loop_defined.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 7
 },
 {
  "name": "Autonomy budget",
  "kind": "method",
  "id_prefix": null,
  "activity": "Delegation",
  "purpose": "Tolerance for faulty actions per window and Level 3 class, with review at 70 per cent and demotion one level at 100 per cent, counted by the observer.",
  "chapters": [
   "4",
   "10",
   "15",
   "20"
  ],
  "location": "04_the_operations_loop_defined.md#the-budget",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Setting a delegation ceiling (reversibility, blast radius, evidence)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Delegation",
  "purpose": "The ceiling for an action class is the lowest of four written answers, covering reversibility, blast radius and evidence.",
  "chapters": [
   "4"
  ],
  "location": "04_the_operations_loop_defined.md#how-a-ceiling-is-set",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Level 4 prohibitions",
  "kind": "method",
  "id_prefix": null,
  "activity": "Delegation",
  "purpose": "Four cases in which Level 4 Autonomous is never used (irreversible production data, outside window/freeze, disabling observation or stop path, deciding about a named person's access to work).",
  "chapters": [
   "4",
   "10",
   "19"
  ],
  "location": "04_the_operations_loop_defined.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Observer principle (independence, dependence and stop tests)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "Applied as three tests: verification independent of action, observer not dependent on the observed system, stop path working when the platform does not.",
  "chapters": [
   "1",
   "4",
   "17"
  ],
  "location": "17_the_observer_principle.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   55
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Six kinds of independence",
  "kind": "method",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "Model, data, authorship, credential, failure domain and time, each with its shared dependency, control and evidence.",
  "chapters": [
   "17"
  ],
  "location": "17_the_observer_principle.md#six-kinds-of-independence",
  "has_full_template": false,
  "language": null,
  "sources": [
   103,
   104,
   105
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Seeded faults and seeded errors",
  "kind": "method",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "Deliberately introduced, authorised fault tested against the agent's and the observer's detection.",
  "chapters": [
   "6",
   "14",
   "17",
   "26"
  ],
  "location": "17_the_observer_principle.md#seeded-faults",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Dead-man's switch / heartbeat",
  "kind": "method",
  "id_prefix": null,
  "activity": "Independence",
  "purpose": "An always-firing signal received outside the platform so that silence raises an alarm.",
  "chapters": [
   "4",
   "17",
   "28"
  ],
  "location": "17_the_observer_principle.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   263
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Resilience as a claim (six parts, derived statuses, evidence age)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "A recoverability claim has subject, scenario, objective, result, date and expiry, with status derived by rule and expiry by clock and by condition.",
  "chapters": [
   "4",
   "19"
  ],
  "location": "19_resilience_as_a_claim.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   42,
   239
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Restore test (kinds and default clocks)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Five kinds of restore test with what each proves and default clocks of 90, 180 or 365 days.",
  "chapters": [
   "10",
   "19"
  ],
  "location": "19_resilience_as_a_claim.md#kinds-of-restore-test",
  "has_full_template": false,
  "language": null,
  "sources": [
   42,
   71
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Rebuild from declared state",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Test that the estate can be recreated from repository and secrets store.",
  "chapters": [
   "19"
  ],
  "location": "19_resilience_as_a_claim.md#rebuild-from-declared-state",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 20
 },
 {
  "name": "Game day and chaos experiment",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Experiment with hypothesis, scope and blast radius, abort criteria, stop path outside the system and independent result.",
  "chapters": [
   "19",
   "26",
   "29"
  ],
  "location": "19_resilience_as_a_claim.md#game-days-and-chaos-experiments",
  "has_full_template": false,
  "language": null,
  "sources": [
   239,
   240
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 14
 },
 {
  "name": "Game day with the agents off / dark day",
  "kind": "method",
  "id_prefix": null,
  "activity": "People",
  "purpose": "Exercise in which operators run services manually with the agent platform unavailable.",
  "chapters": [
   "19",
   "26",
   "29"
  ],
  "location": "26_competences_and_keeping_the_craft.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   42,
   233
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 14
 },
 {
  "name": "Backup 3-2-1 rule and immutability",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Copies kept in separate media and sites with an immutable copy, tested by restore.",
  "chapters": [
   "10",
   "19"
  ],
  "location": "10_restore.md#the-last-line",
  "has_full_template": false,
  "language": null,
  "sources": [
   71,
   254
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Exit test",
  "kind": "method",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Test of leaving a provider within a stated time and quality gate.",
  "chapters": [
   "24"
  ],
  "location": "24_across_boundaries.md#exit-and-switching",
  "has_full_template": false,
  "language": null,
  "sources": [
   16
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Service level objective and error budget",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Objective for a user-journey indicator with error budget over a window.",
  "chapters": [
   "5",
   "20"
  ],
  "location": "05_observe.md#indicators-objectives-and-error-budgets",
  "has_full_template": false,
  "language": null,
  "sources": [
   241,
   243
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Burn-rate alerting",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Multi-window alerting on the speed at which the error budget is consumed.",
  "chapters": [
   "5",
   "Appendix A.1"
  ],
  "location": "05_observe.md#burn-rate-alerting",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Four golden signals",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Latency, traffic, errors and saturation as a checklist for a user-facing system.",
  "chapters": [
   "5"
  ],
  "location": "05_observe.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 3
 },
 {
  "name": "Observability as code",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Objectives and alerts versioned in Git, reviewed like code and read by the alerting system.",
  "chapters": [
   "5"
  ],
  "location": "05_observe.md#observability-as-code",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Dependency-and-blast-radius mapping",
  "kind": "method",
  "id_prefix": null,
  "activity": "Definition",
  "purpose": "Mapping what a service depends on and what depends on it, with recovery evidence.",
  "chapters": [
   "3"
  ],
  "location": "03_the_pressure_on_operations.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Reading evidence in three grades",
  "kind": "method",
  "id_prefix": null,
  "activity": "Research method",
  "purpose": "Grading evidence by its source and sampling before relying on it.",
  "chapters": [
   "3"
  ],
  "location": "03_the_pressure_on_operations.md#reading-the-evidence-three-grades",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Noise budget",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Allowed number of pages per rota used to judge a correlation layer.",
  "chapters": [
   "6",
   "Appendix A.2"
  ],
  "location": "06_observe_with_ai.md#the-noise-budget",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Golden incident sets and precision/recall per alert class",
  "kind": "method",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Evaluating a correlation or detection tool on replayed episodes with precision and recall per alert class and sampling of what was held back.",
  "chapters": [
   "6"
  ],
  "location": "06_observe_with_ai.md#evaluation",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Second-hypothesis rule / designing against anchoring",
  "kind": "method",
  "id_prefix": null,
  "activity": "Diagnosis",
  "purpose": "Human hypotheses recorded before the assistant's ranking is released, with a second hypothesis required, to counter automation bias and anchoring.",
  "chapters": [
   "7"
  ],
  "location": "07_diagnose.md#designing-against-anchoring",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Incident record as a state machine",
  "kind": "method",
  "id_prefix": null,
  "activity": "Diagnosis",
  "purpose": "Incident lifecycle states gate action, modelled on service-management platforms.",
  "chapters": [
   "7"
  ],
  "location": "07_diagnose.md#the-record-as-a-state-machine",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Incident command",
  "kind": "method",
  "id_prefix": null,
  "activity": "Diagnosis",
  "purpose": "Incident commander role with declare, handover and deputies, decisions and stop right.",
  "chapters": [
   "7",
   "22"
  ],
  "location": "22_decision_rights_and_the_incident_commander.md#the-incident-commander",
  "has_full_template": false,
  "language": null,
  "sources": [
   132,
   133,
   275,
   276
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Policy as code in the change path",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Gate evaluating a plan with policy and computing change class from the diff.",
  "chapters": [
   "8"
  ],
  "location": "08_change.md#policy-as-code-in-the-path",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Provenance record for changes",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Record of author, tool, model and reviewers for each change including agent-authored change.",
  "chapters": [
   "8"
  ],
  "location": "08_change.md#provenance",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Standard, normal and emergency change",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "ITIL-style change classes adapted to machine-authored change.",
  "chapters": [
   "2",
   "8"
  ],
  "location": "08_change.md#standard-normal-and-emergency-change",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 0
 },
 {
  "name": "GitOps (OpenGitOps principles)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Desired state versioned, pulled automatically and continuously reconciled.",
  "chapters": [
   "2",
   "4",
   "8",
   "16",
   "17",
   "19"
  ],
  "location": "08_change.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   55
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Reconciler as a change actor",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Treat state engines as change actors with sync policy classed by the autonomy budget.",
  "chapters": [
   "8",
   "17",
   "18"
  ],
  "location": "08_change.md#the-reconciler-is-a-change-actor",
  "has_full_template": false,
  "language": null,
  "sources": [
   154
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Classifying drift and choosing a response",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Choose a response to drift by drift class.",
  "chapters": [
   "8"
  ],
  "location": "08_change.md#classifying-drift-and-choosing-a-response",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Progressive delivery (rings, canaries, bake time)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change safely",
  "purpose": "Staged exposure with bake times and stop conditions.",
  "chapters": [
   "9",
   "13"
  ],
  "location": "09_change_safely.md#progressive-delivery",
  "has_full_template": false,
  "language": null,
  "sources": [
   246
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Feature flags",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change safely",
  "purpose": "Decouple release from exposure with toggles.",
  "chapters": [
   "9"
  ],
  "location": "09_change_safely.md#feature-flags",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Cell-based architecture",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change safely",
  "purpose": "Limit blast radius by deploying in independent cells.",
  "chapters": [
   "9"
  ],
  "location": "09_change_safely.md#cells",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 4
 },
 {
  "name": "Freezes and blast-radius budgets",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change safely",
  "purpose": "Calendar freezes with named exception holders and per-change limits on exposure.",
  "chapters": [
   "9"
  ],
  "location": "09_change_safely.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Rollback safety",
  "kind": "method",
  "id_prefix": null,
  "activity": "Change safely",
  "purpose": "Check that a rollback is possible before release.",
  "chapters": [
   "9"
  ],
  "location": "09_change_safely.md#rollback-and-what-it-requires",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Remediation tiers",
  "kind": "method",
  "id_prefix": null,
  "activity": "Restoration",
  "purpose": "Four tiers from notify to autonomous execution by who performs and who approves.",
  "chapters": [
   "10"
  ],
  "location": "10_restore.md#remediation-tiers",
  "has_full_template": false,
  "language": null,
  "sources": [
   223
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Safe execution of runbooks (idempotency, retry budget, back-off)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Restoration",
  "purpose": "Idempotency keys, retry limits with jitter, rate limit per target, precondition re-read and compensation steps.",
  "chapters": [
   "10",
   "17"
  ],
  "location": "10_restore.md#the-shared-failure-retry-storms-and-duplicate-effects",
  "has_full_template": false,
  "language": null,
  "sources": [
   203,
   204,
   205,
   255,
   292
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Capacity forecasting with backtest",
  "kind": "method",
  "id_prefix": null,
  "activity": "Sustain",
  "purpose": "Forecast as a distribution, backtested, with uplift for under-coverage.",
  "chapters": [
   "11"
  ],
  "location": "11_sustain_capacity_cost_energy.md#capacity-planning",
  "has_full_template": false,
  "language": null,
  "sources": [
   256,
   257
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 17
 },
 {
  "name": "Remediation windows by maintenance group and patch-velocity measure",
  "kind": "method",
  "id_prefix": null,
  "activity": "Sustain",
  "purpose": "Window for vulnerability remediation by maintenance group, with patch velocity measured without gaming.",
  "chapters": [
   "11"
  ],
  "location": "11_sustain_capacity_cost_energy.md#remediation-windows-for-vulnerabilities",
  "has_full_template": false,
  "language": null,
  "sources": [
   44,
   45,
   46,
   47,
   68
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Blameless, evidence-based review",
  "kind": "method",
  "id_prefix": null,
  "activity": "Learning",
  "purpose": "Review of contributing conditions rather than a single cause, with independent accounts before the session.",
  "chapters": [
   "12"
  ],
  "location": "12_sustain_problems_and_learning.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   259,
   260
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Knowledge hygiene",
  "kind": "method",
  "id_prefix": null,
  "activity": "Learning",
  "purpose": "Ownership, review dates and verification of operational knowledge with retirement.",
  "chapters": [
   "12"
  ],
  "location": "12_sustain_problems_and_learning.md#knowledge-hygiene",
  "has_full_template": false,
  "language": null,
  "sources": [
   261
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 0
 },
 {
  "name": "Model-change release path (shadow, canary, ramp) with pinning and fallbacks",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI service operation",
  "purpose": "Release a model change as a normal change with offline gate, shadow, canary and ramp, pinned versions and fallbacks.",
  "chapters": [
   "13"
  ],
  "location": "13_operating_ai_systems.md#canarying-a-model",
  "has_full_template": false,
  "language": null,
  "sources": [
   145,
   146,
   147,
   148
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Four classes of AI incident and containment ladder",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI incident handling",
  "purpose": "Classification of AI incidents with a stop practised outside the system.",
  "chapters": [
   "14"
  ],
  "location": "14_incidents_involving_ai.md#four-classes",
  "has_full_template": false,
  "language": null,
  "sources": [
   62,
   63,
   91
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 20
 },
 {
  "name": "Fallback ladder",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI service economics",
  "purpose": "Ordered fallbacks for an AI service that degrade instead of halting.",
  "chapters": [
   "15"
  ],
  "location": "15_the_economics_of_ai_operations.md#fallbacks",
  "has_full_template": false,
  "language": null,
  "sources": [
   280
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 0
 },
 {
  "name": "Cost per outcome as a distribution",
  "kind": "method",
  "id_prefix": null,
  "activity": "AI service economics",
  "purpose": "Report unit cost per outcome as a distribution not a mean.",
  "chapters": [
   "15"
  ],
  "location": "15_the_economics_of_ai_operations.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   280,
   281,
   283
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 17
 },
 {
  "name": "Skills as versioned files",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Agent skills kept as reviewed, versioned files.",
  "chapters": [
   "16"
  ],
  "location": "16_an_ai_agent_team_for_operations.md#skills-as-versioned-files",
  "has_full_template": false,
  "language": null,
  "sources": [
   96
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Agent promotion, shadow period and demotion",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Move agents up levels on evidence after shadow and down on defined events.",
  "chapters": [
   "16"
  ],
  "location": "16_an_ai_agent_team_for_operations.md#promotion-shadow-period-and-demotion",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "Agent proposes through the desired-state repository",
  "kind": "method",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Preferred path in which an agent proposes a pull request and the reconciler applies it.",
  "chapters": [
   "16"
  ],
  "location": "16_an_ai_agent_team_for_operations.md#agents-and-state-engines",
  "has_full_template": false,
  "language": null,
  "sources": [
   55
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "Break-glass",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Emergency access procedure with recording and expiry.",
  "chapters": [
   "18",
   "29"
  ],
  "location": "18_defending_the_operators_ai.md#break-glass",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 0
 },
 {
  "name": "Signed runbooks and input provenance",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Sign runbooks and classify inputs by who can write them.",
  "chapters": [
   "18"
  ],
  "location": "18_defending_the_operators_ai.md#signed-runbooks-and-input-provenance",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Testing the ceiling",
  "kind": "method",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Suite of cases showing the agent cannot exceed its permission ceiling.",
  "chapters": [
   "18"
  ],
  "location": "18_defending_the_operators_ai.md#testing-the-ceiling",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Four key metrics",
  "kind": "method",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Deployment frequency, lead time, change failure rate and time to restore as used by the DevOps Research and Assessment programme.",
  "chapters": [
   "20"
  ],
  "location": "20_measuring_operations.md#the-four-key-metrics",
  "has_full_template": false,
  "language": null,
  "sources": [
   251,
   267,
   268
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Time to restore as a distribution",
  "kind": "method",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Report restore time as a distribution, not a mean.",
  "chapters": [
   "20",
   "Appendix A.16"
  ],
  "location": "20_measuring_operations.md#time-to-restore-the-mean-and-the-distribution",
  "has_full_template": false,
  "language": null,
  "sources": [
   269
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 8
 },
 {
  "name": "Operating model options",
  "kind": "method",
  "id_prefix": null,
  "activity": "Operating models",
  "purpose": "Options from in-house SRE to sovereign operators and hybrids.",
  "chapters": [
   "21"
  ],
  "location": "21_operating_models.md#the-options",
  "has_full_template": false,
  "language": null,
  "sources": [
   270,
   273
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 9
 },
 {
  "name": "Four owners",
  "kind": "method",
  "id_prefix": null,
  "activity": "Operating models",
  "purpose": "Ownership split in operations with AI.",
  "chapters": [
   "21"
  ],
  "location": "21_operating_models.md#ownership-four-owners",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 0
 },
 {
  "name": "Decision rights (six fields)",
  "kind": "method",
  "id_prefix": null,
  "activity": "Decision rights",
  "purpose": "Holder, deputies, response time, evidence, record and ceiling per decision.",
  "chapters": [
   "22"
  ],
  "location": "22_decision_rights_and_the_incident_commander.md#six-fields",
  "has_full_template": false,
  "language": null,
  "sources": [
   277
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 3
 },
 {
  "name": "Regulation-to-control mapping",
  "kind": "method",
  "id_prefix": null,
  "activity": "Regulation",
  "purpose": "Turn each article into a control with owner and evidence.",
  "chapters": [
   "23"
  ],
  "location": "23_regulation_as_constraint.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   2,
   3
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 8
 },
 {
  "name": "Operational transparency and exit-test annex",
  "kind": "method",
  "id_prefix": null,
  "activity": "Contracts",
  "purpose": "Contract terms for provider change notice, transparency and exit.",
  "chapters": [
   "24"
  ],
  "location": "24_across_boundaries.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   16,
   23
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 8
 },
 {
  "name": "Manual-practice clause",
  "kind": "method",
  "id_prefix": null,
  "activity": "People",
  "purpose": "Clause guaranteeing manual practice of operations skills.",
  "chapters": [
   "26"
  ],
  "location": "26_competences_and_keeping_the_craft.md#the-manual-practice-clause",
  "has_full_template": false,
  "language": null,
  "sources": [
   217,
   233
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 3
 },
 {
  "name": "Competence with and without the assistant",
  "kind": "method",
  "id_prefix": null,
  "activity": "People",
  "purpose": "Assess competence shown with and without assistant, counting the lower.",
  "chapters": [
   "26"
  ],
  "location": "26_competences_and_keeping_the_craft.md",
  "has_full_template": false,
  "language": null,
  "sources": [
   67,
   219,
   220
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 21
 },
 {
  "name": "Observable, expected, speculation labelling",
  "kind": "method",
  "id_prefix": null,
  "activity": "Foresight",
  "purpose": "Every future statement carries one of three labels.",
  "chapters": [
   "3",
   "9",
   "15",
   "18",
   "27",
   "28"
  ],
  "location": "27_the_future_of_operations.md",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 23
 },
 {
  "name": "Eight anti-patterns",
  "kind": "method",
  "id_prefix": null,
  "activity": "Learning",
  "purpose": "Eight named failure patterns (green dashboard, self-healing mask, shared-blind-spot verifier, unowned runbook, god credential, dead-man's switch that never fires, first ring skipped, claim at wrong scale).",
  "chapters": [
   "28"
  ],
  "location": "28_case_studies_and_anti_patterns.md#eight-anti-patterns",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 3
 },
 {
  "name": "Constructive debate in four steps",
  "kind": "method",
  "id_prefix": null,
  "activity": "Research method",
  "purpose": "Case for concern, case for calm, where positions meet and what can be done, before a verdict.",
  "chapters": [
   "10",
   "17",
   "26",
   "27"
  ],
  "location": "10_restore.md#the-debate",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 23
 },
 {
  "name": "Cognitive forcing functions",
  "kind": "method",
  "id_prefix": null,
  "activity": "Diagnosis",
  "purpose": "Design interventions that force reflection and reduce overreliance.",
  "chapters": [
   "7"
  ],
  "location": "07_diagnose.md#designing-against-anchoring",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 0
 },
 {
  "name": "OpenTelemetry",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Vendor-neutral instrumentation standard for traces, metrics and logs; collector processors minimise personal data before telemetry leaves the service.",
  "chapters": [
   "3",
   "5",
   "8",
   "13",
   "24",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   49,
   50,
   51
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "OpenTelemetry Semantic Conventions for Generative AI",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI service observation",
  "purpose": "Common attribute names for telemetry of AI clients and agents, useful in the agent run log.",
  "chapters": [
   "13",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   61
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "OpenSLO",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Open specification for describing service level objectives in YAML as a vendor-neutral format.",
  "chapters": [
   "5"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   52
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Prometheus Operator Watchdog alert",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Always-firing alert whose absence at an external receiver shows the alerting pipeline is broken; basis of the observer heartbeat.",
  "chapters": [
   "2",
   "17",
   "29",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   263
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Prometheus",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Metrics system referred to through Watchdog alert and Flux/Argo CD metrics.",
  "chapters": [
   "17",
   "29",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   181,
   185,
   263
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Grafana Labs observability survey",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Observation",
  "purpose": "Vendor survey cited as evidence on observability cost and tooling, not as a tool to use.",
  "chapters": [
   "3"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   119
  ],
  "mention": "passing",
  "notes": "Survey, not a tool; cited as evidence",
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Kubernetes",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Platform",
  "purpose": "Container orchestration whose controllers, probes, autoscaling and validating admission policy implement self-healing and declared state.",
  "chapters": [
   "2",
   "4",
   "8",
   "9",
   "10",
   "16",
   "17",
   "18",
   "32",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   57,
   153,
   175,
   176,
   177,
   189,
   305
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 6
 },
 {
  "name": "Kubernetes Validating Admission Policy",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "In-cluster admission policy used as a gate in front of state engines.",
  "chapters": [
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   189
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Kubernetes Horizontal Pod Autoscaler",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Capacity",
  "purpose": "Controller that scales replicas by metrics; conflicts with GitOps replica fields.",
  "chapters": [
   "10",
   "17"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   177
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 23
 },
 {
  "name": "KEDA",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Capacity",
  "purpose": "Event-driven autoscaler whose admission webhooks prevent two ScaledObjects targeting one workload.",
  "chapters": [
   "17"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   178
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 17
 },
 {
  "name": "Argo CD",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Pull-based GitOps reconciler with sync policy, sync windows, projects, source integrity verification and disaster recovery; protected as Tier 0.",
  "chapters": [
   "8",
   "9",
   "10",
   "16",
   "17",
   "18",
   "19",
   "32",
   "Appendix A",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   154,
   155,
   156,
   157,
   158,
   159,
   179,
   180,
   181,
   182,
   183,
   184,
   190,
   191,
   192
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Flux",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Pull-based GitOps reconciler with Kustomization, suspend, tenant lockdown and GitRepository.",
  "chapters": [
   "8",
   "9",
   "16",
   "17",
   "18",
   "32",
   "Appendix A",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   160,
   161,
   185,
   186,
   193,
   194
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Argo Rollouts",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Change safely",
  "purpose": "Progressive-delivery controller with analysis, abort and verification, used with an independent verifier's verdict.",
  "chapters": [
   "8",
   "9",
   "32",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   169,
   170,
   202
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Flagger",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Change safely",
  "purpose": "Progressive-delivery operator for Kubernetes.",
  "chapters": [
   "8",
   "9",
   "32",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   171
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Kargo",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Change safely",
  "purpose": "Promotion tool with stages and verification.",
  "chapters": [
   "8",
   "9",
   "32",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   172,
   173,
   174
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Terraform",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Infrastructure-as-code tool; plan, refresh-only drift detection, state treated as sensitive, Terraform Policy.",
  "chapters": [
   "8",
   "18",
   "19",
   "32",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   162,
   163,
   187,
   198
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 6
 },
 {
  "name": "OpenTofu",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Open-source Terraform-compatible tool with state and plan encryption.",
  "chapters": [
   "8",
   "18",
   "19",
   "32",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   164,
   188,
   197
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 6
 },
 {
  "name": "Crossplane",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Reconciles cloud resources through Kubernetes objects.",
  "chapters": [
   "8",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   165,
   196
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 6
 },
 {
  "name": "Google Config Connector",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Cloud-provider controller that manages cloud resources as Kubernetes objects.",
  "chapters": [
   "8"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   166
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 6
 },
 {
  "name": "Temporal",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Restoration",
  "purpose": "Durable-execution workflow engine for multi-step runbooks and human-in-the-loop agent approvals; replay and idempotent activities.",
  "chapters": [
   "8",
   "10",
   "16",
   "32",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   109,
   199,
   200,
   306,
   307
  ],
  "mention": "described",
  "notes": "Regex also matches the word temporal",
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Argo Workflows",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Restoration",
  "purpose": "Container-based workflow engine on Kubernetes for runbook execution.",
  "chapters": [
   "8",
   "10",
   "32",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   201,
   308
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "Camunda Zeebe",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Restoration",
  "purpose": "Workflow engine whose at-least-once job delivery requires idempotent workers.",
  "chapters": [
   "10"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   309
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "Ansible and Event-Driven Ansible",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Restoration",
  "purpose": "Configuration management with idempotent operations; Event-Driven Ansible rulebooks with throttle for event storms.",
  "chapters": [
   "2",
   "10"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   294,
   310
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 0
 },
 {
  "name": "Open Policy Agent and Rego",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Policy",
  "purpose": "Policy engine and language used for policy decision points outside the agent platform and for checks on infrastructure plans.",
  "chapters": [
   "8",
   "18",
   "Appendix A",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   56,
   65
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "SLSA",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Supply chain",
  "purpose": "Supply-chain levels specification for build provenance and source integrity.",
  "chapters": [
   "8",
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   54,
   66
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 5
 },
 {
  "name": "OpenGitOps principles",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Change",
  "purpose": "Principles that desired state is versioned, pulled automatically and continuously reconciled.",
  "chapters": [
   "2",
   "4",
   "8",
   "16",
   "17",
   "19",
   "32"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   55
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 16
 },
 {
  "name": "SPIFFE",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Workload identity specification (SVID) giving each agent a short-lived identity of its own.",
  "chapters": [
   "8",
   "16",
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   94
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 20
 },
 {
  "name": "Model Context Protocol (MCP)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Protocol for agent tools; security best practices on audience and scope.",
  "chapters": [
   "8",
   "16",
   "18",
   "32"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   93
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 20
 },
 {
  "name": "Argo CD MCP server",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Open-source MCP server giving a model-driven agent access to Argo CD; MCP_READ_ONLY disables write tools.",
  "chapters": [
   "16",
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   106,
   110
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 20
 },
 {
  "name": "Kubernetes MCP server",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Open-source MCP server for Kubernetes with read_only and denied_resources best-effort guardrails.",
  "chapters": [
   "16"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   107
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 20
 },
 {
  "name": "Flux MCP Server",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "MCP server for Flux Operator; read-only flag defaults to false.",
  "chapters": [
   "8",
   "16",
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   108,
   111,
   206,
   207,
   208
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 20
 },
 {
  "name": "Anthropic Agent Skills",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Skills as versioned files for agents.",
  "chapters": [
   "16",
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   96
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "OWASP Top 10 for LLM Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Risk categories for LLM applications.",
  "chapters": [
   "15",
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   36
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 10
 },
 {
  "name": "OWASP Top 10 for Agentic Applications",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Checklist of risk categories to review an agent's tool set against.",
  "chapters": [
   "15",
   "16",
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   37
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 10
 },
 {
  "name": "MITRE ATT&CK",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Adversary technique identifiers used to describe threats against the operator's agents and estate.",
  "chapters": [
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   33
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 10
 },
 {
  "name": "MITRE ATLAS",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Adversarial threat landscape for AI systems (indirect prompt injection, agent tool invocation).",
  "chapters": [
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   34
  ],
  "mention": "described",
  "notes": "Identifiers checked against data release 5.6.0",
  "book": 10,
  "tools_chapter": 10
 },
 {
  "name": "CWE-117 Improper Output Neutralization for Logs",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Weakness class for log injection.",
  "chapters": [
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   64
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 10
 },
 {
  "name": "NIST AI RMF",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Risk management framework for AI.",
  "chapters": [
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   38
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 8
 },
 {
  "name": "NIST Cybersecurity Framework 2.0",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Governance",
  "purpose": "Framework to which the five operations functions are mapped.",
  "chapters": [
   "1",
   "4",
   "19",
   "32"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   40
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 8
 },
 {
  "name": "NIST SP 800-184 Guide for Cybersecurity Event Recovery",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Guidance on recovery exercises and tests.",
  "chapters": [
   "10",
   "19"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   42
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "NIST SP 800-61 / incident response recommendations",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Diagnosis",
  "purpose": "NIST incident response guidance.",
  "chapters": [
   "7",
   "12"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   41
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "NIST SP 800-207 Zero Trust Architecture",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Zero trust architecture reference.",
  "chapters": [
   "16",
   "18"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   43
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 8
 },
 {
  "name": "NIST SP 800-53",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Security",
  "purpose": "Security and privacy control catalogue.",
  "chapters": [
   "8"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   53
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 8
 },
 {
  "name": "Exploit Prediction Scoring System (EPSS)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Sustain",
  "purpose": "Score for likelihood of exploitation, used to set remediation windows.",
  "chapters": [
   "11"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   44
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 12
 },
 {
  "name": "CISA Known Exploited Vulnerabilities catalogue",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Sustain",
  "purpose": "Catalogue of exploited vulnerabilities used to set remediation windows.",
  "chapters": [
   "11"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   45
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 12
 },
 {
  "name": "European Vulnerability Database (EUVD)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Sustain",
  "purpose": "EU vulnerability database.",
  "chapters": [
   "11"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   46
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 12
 },
 {
  "name": "TIBER-EU",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Threat intelligence-based ethical red teaming framework; boundary with game days.",
  "chapters": [
   "19",
   "24"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   35
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 11
 },
 {
  "name": "ISO/IEC 20000-1",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Service management",
  "purpose": "Service management system standard.",
  "chapters": [
   "1",
   "2",
   "32"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   48
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 8
 },
 {
  "name": "ITIL 4",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Service management",
  "purpose": "Service management practice framework from which change classes and practices are taken.",
  "chapters": [
   "1",
   "2",
   "4",
   "32"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   121,
   122
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 3
 },
 {
  "name": "FinOps Framework",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Cost",
  "purpose": "Practice framework for cloud cost management and its AI working-group paper.",
  "chapters": [
   "4",
   "11",
   "15",
   "16",
   "32",
   "Appendix A"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   59,
   283
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 17
 },
 {
  "name": "Software Carbon Intensity (SCI) specification",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Energy",
  "purpose": "Green Software Foundation specification (ISO/IEC 21031) for carbon intensity of software.",
  "chapters": [
   "15"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   287
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 17
 },
 {
  "name": "ECSF, SFIA and e-CF",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "People",
  "purpose": "Skills frameworks to which the OPS-CF competence framework is mapped.",
  "chapters": [
   "26"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   67,
   219,
   220
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 21
 },
 {
  "name": "Team Topologies",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Operating models",
  "purpose": "Team types and interaction modes, including platform team as X-as-a-Service.",
  "chapters": [
   "2",
   "21"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   116,
   270
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 6
 },
 {
  "name": "SPACE framework of developer productivity",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Framework of developer productivity dimensions, cited on metrics about people.",
  "chapters": [
   "20",
   "25"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   230
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "DORA research programme and four key metrics",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Measurement",
  "purpose": "Research programme and its software delivery performance metrics.",
  "chapters": [
   "1",
   "2",
   "3",
   "8",
   "9",
   "20",
   "21",
   "22",
   "27",
   "31",
   "32"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   113,
   117,
   138,
   251,
   267,
   268,
   274
  ],
  "mention": "described",
  "notes": "Not the DORA regulation",
  "book": 10,
  "tools_chapter": 15
 },
 {
  "name": "Site Reliability Engineering practice (Google SRE books)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Operating models",
  "purpose": "Source of SLO, error budget, toil, postmortem and incident command practices.",
  "chapters": [
   "1",
   "2",
   "3",
   "4",
   "5",
   "6",
   "7",
   "9",
   "10",
   "11",
   "12",
   "16",
   "20",
   "21",
   "25",
   "26",
   "27",
   "28",
   "29",
   "31",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   112,
   241,
   242,
   243,
   244,
   245,
   252,
   253,
   258,
   259
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 3
 },
 {
  "name": "PagerDuty incident response guide",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Incident command",
  "purpose": "Published guide describing the incident commander as final decision maker, with handover.",
  "chapters": [
   "22"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   275
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "ServiceNow incident state model",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Service management",
  "purpose": "Incident lifecycle states used as model for gating action.",
  "chapters": [
   "7"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   209,
   210
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Jira Service Management",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Service management",
  "purpose": "Default statuses of incident lifecycle used as comparison.",
  "chapters": [
   "7"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   211
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "National Incident Management System (NIMS)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Incident command",
  "purpose": "Incident command system reference.",
  "chapters": [
   "22"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   276
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "State Chart XML (SCXML)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Diagnosis",
  "purpose": "W3C state machine notation cited for the incident record.",
  "chapters": [
   "7"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   212
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Knowledge-Centered Service (KCS)",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Learning",
  "purpose": "Practice for keeping knowledge current (Evolve Loop).",
  "chapters": [
   "12"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   261
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 3
 },
 {
  "name": "Principles of Chaos Engineering",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Resilience",
  "purpose": "Experiment method with steady-state hypothesis.",
  "chapters": [
   "1",
   "9",
   "10",
   "12",
   "17",
   "19"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   238,
   239,
   240
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 14
 },
 {
  "name": "ITBench",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Diagnosis",
  "purpose": "Benchmark of AI agents on real-world IT automation tasks.",
  "chapters": [
   "7",
   "10",
   "26",
   "27",
   "31"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   225
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "RCAEval and OpenRCA benchmarks",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Diagnosis",
  "purpose": "Benchmarks for root cause analysis.",
  "chapters": [
   "7",
   "27",
   "31"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   128,
   129
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 19
 },
 {
  "name": "AWS DevOps Agent",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Agents",
  "purpose": "Vendor operations agent announced as generally available.",
  "chapters": [
   "27",
   "31"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   291
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 18
 },
 {
  "name": "AI Incident Database",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI incident handling",
  "purpose": "Catalogue of AI incidents used for published-incident references.",
  "chapters": [
   "14"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   91,
   92
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "OECD AI incident definitions and reporting framework",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI incident handling",
  "purpose": "Definitions and common reporting framework for AI incidents.",
  "chapters": [
   "14"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   62,
   63
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 13
 },
 {
  "name": "Cloud Sovereignty Framework",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Contracts",
  "purpose": "European Commission framework for assessing sovereignty of cloud services.",
  "chapters": [
   "24"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   23
  ],
  "mention": "described",
  "notes": null,
  "book": 10,
  "tools_chapter": 9
 },
 {
  "name": "vLLM",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI service economics",
  "purpose": "Inference serving system cited for serving cost and capacity.",
  "chapters": [
   "15"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   281
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 17
 },
 {
  "name": "FrugalGPT",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "AI service economics",
  "purpose": "Approach for lowering LLM cost via cascades.",
  "chapters": [
   "15"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [
   280
  ],
  "mention": "passing",
  "notes": null,
  "book": 10,
  "tools_chapter": 17
 },
 {
  "name": "Mermaid",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Diagram-as-code tool used to render the book's diagrams.",
  "chapters": [
   "35"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Repository tooling, ch35",
  "book": 10,
  "tools_chapter": 4
 },
 {
  "name": "Pandoc, XeLaTeX and MkDocs",
  "kind": "third-party",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Book and website toolchain named in About the Author.",
  "chapters": [
   "35",
   "Appendix B"
  ],
  "location": null,
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": "Repository tooling, ch35",
  "book": 10,
  "tools_chapter": 0
 },
 {
  "name": "scripts/toc_definition.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Single definition of the table of contents; --write regenerates book_index.json, the mkdocs nav and the BOOK_REQUIREMENTS.md chapter list.",
  "chapters": [
   "Appendix B"
  ],
  "location": "scripts/toc_definition.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/generate_outlines.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Regenerates chapter briefs in BOOK_BLUEPRINT.md, part introductions and outline chapter files.",
  "chapters": [
   "Appendix B"
  ],
  "location": "scripts/generate_outlines.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/outline_data.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Working outline: chapter briefs for the book.",
  "chapters": [],
  "location": "scripts/outline_data.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/source_keys.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Maps descriptive keys in the outline data to bibliography source numbers.",
  "chapters": [],
  "location": "scripts/source_keys.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/format_citations.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Keeps inline citations in the form (ID, author, year) linked to the bibliography.",
  "chapters": [
   "Appendix B"
  ],
  "location": "scripts/format_citations.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/renumber_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Merges duplicate bibliography entries and renumbers sources 1..N without gaps or uncited entries.",
  "chapters": [
   "Appendix B"
  ],
  "location": "scripts/renumber_sources.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/merge_new_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Merges sources_new/chapter_NN.md entries into docs/34_references.md.",
  "chapters": [],
  "location": "scripts/merge_new_sources.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/update_reference_backlinks.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Refreshes the Referenced-in annotations of the bibliography.",
  "chapters": [],
  "location": "scripts/update_reference_backlinks.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/build_sources_section.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Writes or refreshes a chapter's Sources list from the bibliography.",
  "chapters": [],
  "location": "scripts/build_sources_section.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/audit_references.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Audits citation deviations across chapters.",
  "chapters": [],
  "location": "scripts/audit_references.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_sources.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies cited URLs and ISBNs.",
  "chapters": [],
  "location": "scripts/verify_sources.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_doc_numbering.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates numbering of chapter files.",
  "chapters": [],
  "location": "scripts/check_doc_numbering.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/check_mermaid_diagrams.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Renders and validates Mermaid diagrams against committed PNGs.",
  "chapters": [
   "Appendix B"
  ],
  "location": "scripts/check_mermaid_diagrams.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "described",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/render_diagram.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Renders one Mermaid source to PNG with the book's settings.",
  "chapters": [],
  "location": "scripts/render_diagram.sh",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_branding.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates diagram brand compliance.",
  "chapters": [],
  "location": "scripts/validate_diagram_branding.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_diagram_elements.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates that diagrams have at most 15 elements.",
  "chapters": [],
  "location": "scripts/validate_diagram_elements.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_figure_captions.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates that figure captions start with Figure.",
  "chapters": [],
  "location": "scripts/validate_figure_captions.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/validate_heading_capitalization.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Validates that headings start with uppercase.",
  "chapters": [],
  "location": "scripts/validate_heading_capitalization.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/analyze_chapter_lengths.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Measures chapter lengths and flags variance from the average.",
  "chapters": [],
  "location": "scripts/analyze_chapter_lengths.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/verify_environment.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Verifies local tooling matches pinned versions.",
  "chapters": [],
  "location": "scripts/verify_environment.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "scripts/navigation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Resolves the ordered chapter list from mkdocs.yml.",
  "chapters": [],
  "location": "scripts/navigation.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "generate_book.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds book content from the chapter list.",
  "chapters": [],
  "location": "generate_book.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "generate_presentation.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates a PowerPoint presentation from the chapters.",
  "chapters": [],
  "location": "generate_presentation.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "generate_whitepapers.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates whitepaper HTML versions of chapters.",
  "chapters": [],
  "location": "generate_whitepapers.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "build_all_orchestrator.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Coordinates all deliverable builds.",
  "chapters": [],
  "location": "build_all_orchestrator.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "build_release.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Generates all deliverables into the release folder.",
  "chapters": [],
  "location": "build_release.sh",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "docs/build_book.sh",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "Builds PDF, EPUB and DOCX with Pandoc.",
  "chapters": [],
  "location": "docs/build_book.sh",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 },
 {
  "name": "hooks/bracketed_spans.py",
  "kind": "own-tool",
  "id_prefix": null,
  "activity": "Publishing",
  "purpose": "MkDocs hook rendering Pandoc bracketed spans as HTML anchors.",
  "chapters": [],
  "location": "hooks/bracketed_spans.py",
  "has_full_template": false,
  "language": null,
  "sources": [],
  "mention": "passing",
  "notes": null,
  "publishing_engine": true,
  "book": 10,
  "tools_chapter": null
 }
]
