#!/usr/bin/env python3
"""Fix incomplete ISO 27002 control references in Dutch markdown files."""

import os
import re

base = "/Users/rico/src/iso27diy-corp/Corpus/Standards/ISO-27002-OST/ISO27002-NL-2022"

# Each fix: (filename, old_substring, new_substring)
# Old substring must be unique within the file.
fixes = [
    # ─── 4.1 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_4.1_BT Hoofdstukken.md",
     "attributen (zie 4 kan gebruiken",
     "attributen (zie 4.2) kan gebruiken"),

    # ─── 5.22 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_5.22_BT Monitoren, beoordelen en het beheren van wijzigingen van leveranciersdiensten.md",
     "worden onderhouden (zie 5, 5, 5, 5, 8)",
     "worden onderhouden (zie 5.24, 5.26, 5.29, 5.30, 8.14)"),

    # ─── 5.23 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_5.23_BT Informatiebeveiliging voor het gebruik van clouddiensten.md",
     "door externe partijen geleverde diensten beheert (zie 5 en 5)",
     "door externe partijen geleverde diensten beheert (zie 5.19 en 5.20)"),

    # ─── 5.24 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_5.24_BT Plannen en voorbereiden van het beheer van informatiebeveiligingsincidenten.md",
     "inbegrip van een contactpunt (zie 6;",
     "inbegrip van een contactpunt (zie 6.8)"),
    ("ISO_27002_2022_NL_5.24_BT Plannen en voorbereiden van het beheer van informatiebeveiligingsincidenten.md",
     "het monitoren (zie 8 en 8), detecteren (zie 8), classificeren (zie 5), analyseren en melden (zie 6 van informatiebeveiligingsgebeurtenissen",
     "het monitoren (zie 8.15 en 8.16), detecteren (zie 8.16), classificeren (zie 5.25), analyseren en melden (zie 6.8) van informatiebeveiligingsgebeurtenissen"),
    ("ISO_27002_2022_NL_5.24_BT Plannen en voorbereiden van het beheer van informatiebeveiligingsincidenten.md",
     "reactie en escalatie (zie 5), volgens het type",
     "reactie en escalatie (zie 5.26), volgens het type"),
    ("ISO_27002_2022_NL_5.24_BT Plannen en voorbereiden van het beheer van informatiebeveiligingsincidenten.md",
     "(zie 5en 5;",
     "(zie 5.5 en 5.6)"),
    ("ISO_27002_2022_NL_5.24_BT Plannen en voorbereiden van het beheer van informatiebeveiligingsincidenten.md",
     "het behandelen van bewijs (zie 5)",
     "het behandelen van bewijs (zie 5.28)"),

    # ─── 5.26 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_5.26_BT Reageren op informatiebeveiligingsincidenten.md",
     "vereiste competentie (zie 5) behoort te reageren",
     "vereiste competentie (zie 5.24) behoort te reageren"),
    ("ISO_27002_2022_NL_5.26_BT Reageren op informatiebeveiligingsincidenten.md",
     "bewijs verzamelen (zie 5)",
     "bewijs verzamelen (zie 5.28)"),
    ("ISO_27002_2022_NL_5.26_BT Reageren op informatiebeveiligingsincidenten.md",
     "bedrijfscontinuïteitsplannen in te roepen (zie 5 en 5)",
     "bedrijfscontinuïteitsplannen in te roepen (zie 5.29 en 5.30)"),
    ("ISO_27002_2022_NL_5.26_BT Reageren op informatiebeveiligingsincidenten.md",
     "forensische analyse van de informatiebeveiliging uitvoeren (zie 5)",
     "forensische analyse van de informatiebeveiliging uitvoeren (zie 5.28)"),
    ("ISO_27002_2022_NL_5.26_BT Reageren op informatiebeveiligingsincidenten.md",
     "gecommuniceerd volgens gedefinieerde procedures (zie 5)",
     "gecommuniceerd volgens gedefinieerde procedures (zie 5.24)"),

    # ─── 5.27 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_5.27_BT Leren van informatiebeveiligingsincidenten.md",
     "incidentscenario's en -procedures, te verbeteren\n\n(zie 5)",
     "incidentscenario's en -procedures, te verbeteren\n\n(zie 5.24)"),
    ("ISO_27002_2022_NL_5.27_BT Leren van informatiebeveiligingsincidenten.md",
     "bewustwording en training van gebruikers (zie 6 te verbeteren",
     "bewustwording en training van gebruikers (zie 6.3) te verbeteren"),

    # ─── 5.31 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_5.31_BT Wettelijke, statutaire, regelgevende en contractuele eisen.md",
     "contracten met leveranciers (zie 5)",
     "contracten met leveranciers (zie 5.20)"),

    # ─── 5.33 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_5.33_BT Beschermen van registraties.md",
     "bewaarperiode van de registraties (zie 8)",
     "bewaarperiode van de registraties (zie 8.24)"),

    # ─── 5.35 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_5.35_BT Onafhankelijke beoordeling van informatiebeveiliging.md",
     "onderwerpspecifieke beleidsregels (zie 5], behoort",
     "onderwerpspecifieke beleidsregels (zie 5.1)], behoort"),

    # ─── 5.36 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_5.36_BT Naleving van beleid, regels en normen voor informatiebeveiliging.md",
     "onafhankelijke beoordelingen uitvoeren (zie 5) wanneer",
     "onafhankelijke beoordelingen uitvoeren (zie 5.35) wanneer"),

    # ─── 5.37 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_5.37_BT Gedocumenteerde bedieningsprocedures.md",
     "back-up (zie 8) en veerkracht",
     "back-up (zie 8.13) en veerkracht"),
    ("ISO_27002_2022_NL_5.37_BT Gedocumenteerde bedieningsprocedures.md",
     "gebruik van systeemhulpmiddelen (zie 8)]",
     "gebruik van systeemhulpmiddelen (zie 8.18)]"),
    ("ISO_27002_2022_NL_5.37_BT Gedocumenteerde bedieningsprocedures.md",
     "behandelen van opslagmedia (zie 7 en 7)",
     "behandelen van opslagmedia (zie 7.10 en 7.14)"),
    ("ISO_27002_2022_NL_5.37_BT Gedocumenteerde bedieningsprocedures.md",
     "systeemlogbestanden (zie 8 en 8) en",
     "systeemlogbestanden (zie 8.15 en 8.16) en"),
    ("ISO_27002_2022_NL_5.37_BT Gedocumenteerde bedieningsprocedures.md",
     "videobewakingssystemen (zie 7;",
     "videobewakingssystemen (zie 7.4)"),
    ("ISO_27002_2022_NL_5.37_BT Gedocumenteerde bedieningsprocedures.md",
     "prestaties en beveiliging (zie 8en 8)",
     "prestaties en beveiliging (zie 8.6 en 8.16)"),

    # ─── 6.2 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_6.2_BT Arbeidsovereenkomst.md",
     "tot informatie en andere gerelateerde bedrijfsmiddelen (zie 6;",
     "tot informatie en andere gerelateerde bedrijfsmiddelen (zie 6.6)"),
    ("ISO_27002_2022_NL_6.2_BT Arbeidsovereenkomst.md",
     "wetgeving inzake gegevensbescherming (zie 5 en 5)]",
     "wetgeving inzake gegevensbescherming (zie 5.31 en 5.34)]"),
    ("ISO_27002_2022_NL_6.2_BT Arbeidsovereenkomst.md",
     "de beveiligingseisen van de organisatie veronachtzaamt\n\n(zie 6.",
     "de beveiligingseisen van de organisatie veronachtzaamt\n\n(zie 6.4)"),
    ("ISO_27002_2022_NL_6.2_BT Arbeidsovereenkomst.md",
     "na het einde van het dienstverband van kracht te blijven (zie 6.",
     "na het einde van het dienstverband van kracht te blijven (zie 6.5)"),

    # ─── 6.4 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_6.4_BT Disciplinaire procedure.md",
     "schending van het informatiebeveiligingsbeleid heeft voorgedaan (zie 5)",
     "schending van het informatiebeveiligingsbeleid heeft voorgedaan (zie 5.1)"),

    # ─── 6.6 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_6.6_BT Vertrouwelijkheids- of geheimhoudingsovereenkomsten.md",
     "rechtsgebied waarop deze van toepassing zijn (zie 5, 5, 5, 5)",
     "rechtsgebied waarop deze van toepassing zijn (zie 5.31, 5.32, 5.33, 5.34)"),

    # ─── 6.7 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_6.7_BT Werken op afstand.md",
     "melden van informatiebeveiligingsgebeurtenissen (zie 6;",
     "melden van informatiebeveiligingsgebeurtenissen (zie 6.8)"),

    # ─── 7.2 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_7.2_BT Fysieke toegangsbeveiliging.md",
     "bijwerken en intrekken van autorisaties te omvatten (zie 5)",
     "bijwerken en intrekken van autorisaties te omvatten (zie 5.18)"),
    ("ISO_27002_2022_NL_7.2_BT Fysieke toegangsbeveiliging.md",
     "alle logbestanden (zie 5) en gevoelige authenticatie-informatie",
     "alle logbestanden (zie 5.33) en gevoelige authenticatie-informatie"),

    # ─── 7.9 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_7.9_BT Beveiligen van bedrijfsmiddelen buiten het terrein.md",
     "audittraject te onderhouden (zie 5)",
     "audittraject te onderhouden (zie 5.33)"),
    ("ISO_27002_2022_NL_7.9_BT Beveiligen van bedrijfsmiddelen buiten het terrein.md",
     "fysiek monitoren van de beveiliging (zie 7;",
     "fysiek monitoren van de beveiliging (zie 7.4)"),
    ("ISO_27002_2022_NL_7.9_BT Beveiligen van bedrijfsmiddelen buiten het terrein.md",
     "beschermen tegen fysieke dreigingen en dreigingen van buitenaf (zie 7;",
     "beschermen tegen fysieke dreigingen en dreigingen van buitenaf (zie 7.5)"),

    # ─── 7.10 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_7.10_BT Opslagmedia.md",
     "gegevens wissen of opslagmedia formatteren (zie 8)",
     "gegevens wissen of opslagmedia formatteren (zie 8.10)"),
    ("ISO_27002_2022_NL_7.10_BT Opslagmedia.md",
     "vernietigd in plaats van te worden gerepareerd of verwijderd (zie 7)",
     "vernietigd in plaats van te worden gerepareerd of verwijderd (zie 7.14)"),

    # ─── 7.13 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_7.13_BT Onderhoud van apparatuur.md",
     "buiten het gebouw en/of terrein (zie 7 toepassen indien",
     "buiten het gebouw en/of terrein (zie 7.9) toepassen indien"),
    ("ISO_27002_2022_NL_7.13_BT Onderhoud van apparatuur.md",
     "veilig verwijderen of hergebruiken van apparatuur (zie 7)",
     "veilig verwijderen of hergebruiken van apparatuur (zie 7.14)"),

    # ─── 8.1 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.1_BT 'User endpoint devices'.md",
     "analyse van het gedrag van de eindgebruiker (zie 8)",
     "analyse van het gedrag van de eindgebruiker (zie 8.16)"),
    ("ISO_27002_2022_NL_8.1_BT 'User endpoint devices'.md",
     "via configuratiebeheer (zie 8 of geautomatiseerde instrumenten",
     "via configuratiebeheer (zie 8.9) of geautomatiseerde instrumenten"),

    # ─── 8.2 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.2_BT Speciale toegangsrechten.md",
     "autorisatieprocedure die in overeenstemming is met het relevante onderwerpspecifieke beleid inzake toegangsbeveiliging (zie 5)",
     "autorisatieprocedure die in overeenstemming is met het relevante onderwerpspecifieke beleid inzake toegangsbeveiliging (zie 5.15)"),
    ("ISO_27002_2022_NL_8.2_BT Speciale toegangsrechten.md",
     "overeenkomstig het onderwerpspecifieke beleid inzake toegangsbeveiliging (zie 5) (d",
     "overeenkomstig het onderwerpspecifieke beleid inzake toegangsbeveiliging (zie 5.15) (d"),
    ("ISO_27002_2022_NL_8.2_BT Speciale toegangsrechten.md",
     "nog altijd in aanmerking komen voor het werken met speciale toegangsrechten (zie 5)",
     "nog altijd in aanmerking komen voor het werken met speciale toegangsrechten (zie 5.18)"),
    ("ISO_27002_2022_NL_8.2_BT Speciale toegangsrechten.md",
     "authenticatie-informatie van dergelijke identiteiten (zie 5)",
     "authenticatie-informatie van dergelijke identiteiten (zie 5.17)"),

    # ─── 8.4 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.4_BT Toegangsbeveiliging op broncode.md",
     "procedures voor wijzigingsbeheer (zie 8) toepassen",
     "procedures voor wijzigingsbeheer (zie 8.32) toepassen"),

    # ─── 8.7 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.7_BT Bescherming tegen malware.md",
     "back-uppen van gegevens en software (waaronder zowel online als offline back-up) en het herstellen ervan (zie 8)",
     "back-uppen van gegevens en software (waaronder zowel online als offline back-up) en het herstellen ervan (zie 8.13)"),
    ("ISO_27002_2022_NL_8.7_BT Bescherming tegen malware.md",
     "alle gebruikers bewustmaken of trainen (zie 6 hoe zij",
     "alle gebruikers bewustmaken of trainen (zie 6.3) hoe zij"),

    # ─── 8.8 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.8_BT Beheer van technische kwetsbaarheden.md",
     "desbetreffende contracten (zie 5)",
     "desbetreffende contracten (zie 5.20)"),
    ("ISO_27002_2022_NL_8.8_BT Beheer van technische kwetsbaarheden.md",
     "opgenomen in beveiligde codering (zie 8)",
     "opgenomen in beveiligde codering (zie 8.28)"),
    ("ISO_27002_2022_NL_8.8_BT Beheer van technische kwetsbaarheden.md",
     "beheersmaatregelen in verband met wijzigingsbeheer (zie 8) of door",
     "beheersmaatregelen in verband met wijzigingsbeheer (zie 8.32) of door"),
    ("ISO_27002_2022_NL_8.8_BT Beheer van technische kwetsbaarheden.md",
     "incidentprocedures te volgen (zie 5)",
     "incidentprocedures te volgen (zie 5.26)"),
    ("ISO_27002_2022_NL_8.8_BT Beheer van technische kwetsbaarheden.md",
     "netwerken (zie 8 t/m 8)",
     "netwerken (zie 8.20 t/m 8.22)"),
    ("ISO_27002_2022_NL_8.8_BT Beheer van technische kwetsbaarheden.md",
     "technische kwetsbaarheden (zie 5)oor bepaalde clouddiensten",
     "technische kwetsbaarheden (zie 5.23). Voor bepaalde clouddiensten"),
    ("ISO_27002_2022_NL_8.8_BT Beheer van technische kwetsbaarheden.md",
     "processen en procedures van wijzigingsbeheer (zie 8)",
     "processen en procedures van wijzigingsbeheer (zie 8.32)"),

    # ─── 8.9 ───────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.9_BT Configuratiebeheer.md",
     "verifiëren dat aan licentie-eisen is voldaan (zie 5)",
     "verifiëren dat aan licentie-eisen is voldaan (zie 5.32)"),
    ("ISO_27002_2022_NL_8.9_BT Configuratiebeheer.md",
     "wijzigingsbeheerproces te volgen (zie 8)onfiguratieregistraties",
     "wijzigingsbeheerproces te volgen (zie 8.32). Configuratieregistraties"),

    # ─── 8.12 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.12_BT Voorkomen van gegevenslekken (Data leakage prevention).md",
     "beleid inzake toegangscontrole en veilig documentenbeheer (zie 5 en 5)",
     "beleid inzake toegangscontrole en veilig documentenbeheer (zie 5.15 en 5.37)"),

    # ─── 8.13 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.13_BT Back-up van informatie.md",
     "incidentrespons- en bedrijfscontinuïteits- plannen (zie 5)it",
     "incidentrespons- en bedrijfscontinuïteits- plannen (zie 5.30). Dit"),
    ("ISO_27002_2022_NL_8.13_BT Back-up van informatie.md",
     "het wissen van informatie (zie 8) in of op opslagmedia",
     "het wissen van informatie (zie 8.10) in of op opslagmedia"),

    # ─── 8.14 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.14_BT Redundantie van informatieverwerkende faciliteiten.md",
     "gereedheid van ICT voor bedrijfscontinuïteit (zie 5), vooral",
     "gereedheid van ICT voor bedrijfscontinuïteit (zie 5.30), vooral"),

    # ─── 8.15 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.15_BT Logging.md",
     "gesynchroniseerde tijdsbronnen hebben (zie 8), aangezien",
     "gesynchroniseerde tijdsbronnen hebben (zie 8.17), aangezien"),
    ("ISO_27002_2022_NL_8.15_BT Logging.md",
     "verzamelen en bewaren van bewijsmateriaal (zie 5)",
     "verzamelen en bewaren van bewijsmateriaal (zie 5.28)"),
    ("ISO_27002_2022_NL_8.15_BT Logging.md",
     "technieken voor het maskeren van gegevens (zie 8) voor informatie",
     "technieken voor het maskeren van gegevens (zie 8.11) voor informatie"),
    ("ISO_27002_2022_NL_8.15_BT Logging.md",
     "bescherming van de privacy behoren passende maatregelen te worden genomen (zie 5)",
     "bescherming van de privacy behoren passende maatregelen te worden genomen (zie 5.34)"),
    ("ISO_27002_2022_NL_8.15_BT Logging.md",
     "geautomatiseerde monitorsystemen (zie 8) die geconsolideerde rapporten",
     "geautomatiseerde monitorsystemen (zie 8.16) die geconsolideerde rapporten"),

    # ─── 8.16 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.16_BT Monitoren van activiteiten.md",
     "kwetsbaarheden en monitoren (zie 5)r behoren procedures",
     "kwetsbaarheden en monitoren (zie 5.36). Er behoren procedures"),
    ("ISO_27002_2022_NL_8.16_BT Monitoren van activiteiten.md",
     "informatiebeveiliging tot het minimum te beperken (zie 5)r behoren ook",
     "informatiebeveiliging tot het minimum te beperken (zie 5.26). Er behoren ook"),
    ("ISO_27002_2022_NL_8.16_BT Monitoren van activiteiten.md",
     "informatie en analyses over dreigingen (zie 5;",
     "informatie en analyses over dreigingen (zie 5.7)"),

    # ─── 8.18 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.18_BT Gebruik van speciale systeemhulpmiddelen.md",
     "gebruikers dat praktisch haalbaar is (zie 8;",
     "gebruikers dat praktisch haalbaar is (zie 8.2)"),

    # ─── 8.19 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.19_BT Installeren van software op operationele systemen.md",
     "passende beheerdersrechten (zie 8;",
     "passende beheerdersrechten (zie 8.2)"),
    ("ISO_27002_2022_NL_8.19_BT Installeren van software op operationele systemen.md",
     "na uitgebreide en geslaagde tests (zie 8 en 8)",
     "na uitgebreide en geslaagde tests (zie 8.8 en 8.29)"),
    ("ISO_27002_2022_NL_8.19_BT Installeren van software op operationele systemen.md",
     "activiteiten van de leverancier behoren te worden gemonitord (zie 5)",
     "activiteiten van de leverancier behoren te worden gemonitord (zie 5.22)"),

    # ─── 8.20 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.20_BT Beveiliging netwerkcomponenten.md",
     "met de ICT-systemen, al naargelang de situatie (zie 5;",
     "met de ICT-systemen, al naargelang de situatie (zie 5.3)"),
    ("ISO_27002_2022_NL_8.20_BT Beveiliging netwerkcomponenten.md",
     "te beschermen (zie 5, 8, 5 en 6r kunnen ook",
     "te beschermen (zie 5.14, 8.24, 5.34 en 6.7). Er kunnen ook"),
    ("ISO_27002_2022_NL_8.20_BT Beveiliging netwerkcomponenten.md",
     "mogelijk te maken (zie 8 en 8)",
     "mogelijk te maken (zie 8.15 en 8.16)"),

    # ─── 8.22 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.22_BT Netwerksegmentatie.md",
     "onderwerpspecifieke toegangsbeveiligingsbeleid (zie 5), de toegangseisen",
     "onderwerpspecifieke toegangsbeveiligingsbeleid (zie 5.15), de toegangseisen"),
    ("ISO_27002_2022_NL_8.22_BT Netwerksegmentatie.md",
     "netwerkbeheersmaatregelen (zie 8), alvorens toegang",
     "netwerkbeheersmaatregelen (zie 8.20), alvorens toegang"),

    # ─── 8.23 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.23_BT Toepassen van webfilters.md",
     "websites die volgens informatie en analyses over dreigingen kwaadaardig zijn (zie 5;",
     "websites die volgens informatie en analyses over dreigingen kwaadaardig zijn (zie 5.7)"),

    # ─── 8.24 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.24_BT Gebruik van cryptografie.md",
     "het aanmaken van sleutels (zie 8)",
     "het aanmaken van sleutels (zie 8.24)"),
    ("ISO_27002_2022_NL_8.24_BT Gebruik van cryptografie.md",
     "grensoverschrijdende stromen van versleutelde informatie (zie 5)",
     "grensoverschrijdende stromen van versleutelde informatie (zie 5.31)"),
    ("ISO_27002_2022_NL_8.24_BT Gebruik van cryptografie.md",
     "leveranciers van cryptografische diensten (bijvet een certificerende instantie) behoort aansprakelijkheid, betrouwbaarheid van dienstverlening en responstijden voor dienstverlening te omvatten (zie 5)",
     "leveranciers van cryptografische diensten (bijvet een certificerende instantie) behoort aansprakelijkheid, betrouwbaarheid van dienstverlening en responstijden voor dienstverlening te omvatten (zie 5.20)"),

    # ─── 8.25 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "scheiding van ontwikkel-, test- en productieomgevingen (zie 8)",
     "scheiding van ontwikkel-, test- en productieomgevingen (zie 8.31)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "beveiliging in de softwareontwikkelmethodiek (zie 8 en 8)",
     "beveiliging in de softwareontwikkelmethodiek (zie 8.27 en 8.28)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "richtlijnen voor beveiligde codering voor elke programmeertaal die wordt gebruikt (zie 8)",
     "richtlijnen voor beveiligde codering voor elke programmeertaal die wordt gebruikt (zie 8.28)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "beveiligingseisen tijdens de specificatie- en ontwerpfase (zie 5;",
     "beveiligingseisen tijdens de specificatie- en ontwerpfase (zie 5.8)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "beveiligingscontrolepunten in projecten (zie 5;",
     "beveiligingscontrolepunten in projecten (zie 5.8)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "penetratietests\n\n(zie 8)",
     "penetratietests\n\n(zie 8.29)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "beveiligde bewaarplaatsen voor broncode en configuratie (zie 8en 8;",
     "beveiligde bewaarplaatsen voor broncode en configuratie (zie 8.4 en 8.9)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "beveiliging in het versiebeheer (zie 8)",
     "beveiliging in het versiebeheer (zie 8.9)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "de vereiste kennis van en opleiding in de beveiliging van toepassingen (zie 8)",
     "de vereiste kennis van en opleiding in de beveiliging van toepassingen (zie 8.28)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "kwetsbaarheden te voorkomen, te vinden en te repareren\n\n(zie 8)",
     "kwetsbaarheden te voorkomen, te vinden en te repareren\n\n(zie 8.8)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "toekomstige licentieproblemen te voorkomen (zie 5)",
     "toekomstige licentieproblemen te voorkomen (zie 5.32)"),
    ("ISO_27002_2022_NL_8.25_BT Beveiligen tijdens de ontwikkelcyclus.md",
     "regels van de organisatie voor veilig ontwikkelen (zie 8)",
     "regels van de organisatie voor veilig ontwikkelen (zie 8.30)"),

    # ─── 8.26 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.26_BT Toepassingsbeveiligingseisen.md",
     "authenticatie (zie 5, 8en\n\n8]",
     "authenticatie (zie 5.17, 8.5 en 8.2)]"),
    ("ISO_27002_2022_NL_8.26_BT Toepassingsbeveiligingseisen.md",
     "toepassing van cryptografie (zie 8), waarbij wettelijke eisen in aanmerking worden genomen (zie 5 t/m 5, zie in het bijzonder 5 voor wetgeving betreffende cryptografie)",
     "toepassing van cryptografie (zie 8.24), waarbij wettelijke eisen in aanmerking worden genomen (zie 5.31 t/m 5.36, zie in het bijzonder 5.31 voor wetgeving betreffende cryptografie)"),
    ("ISO_27002_2022_NL_8.26_BT Toepassingsbeveiligingseisen.md",
     "'least privilege' (minste rechten) en dynamische toegangsbeveiligingstechnieken (zie 5, 5 en 8it omvat",
     "'least privilege' (minste rechten) en dynamische toegangsbeveiligingstechnieken (zie 5.15, 5.18 en 8.2); het omvat"),
    ("ISO_27002_2022_NL_8.26_BT Toepassingsbeveiligingseisen.md",
     "contextuele informatie zoals authenticatie-informatie (zie 5), gebruikersidentiteiten (zie 5), gegevens over het 'endpoint device' van de gebruiker, en gegevensclassificatie (zie 5)",
     "contextuele informatie zoals authenticatie-informatie (zie 5.17), gebruikersidentiteiten (zie 5.16), gegevens over het 'endpoint device' van de gebruiker, en gegevensclassificatie (zie 5.12)"),
    ("ISO_27002_2022_NL_8.26_BT Toepassingsbeveiligingseisen.md",
     "authenticatie-informatie (zie 5) en gebruikersidentiteiten (5), gegevens over het 'endpoint device' van de gebruiker, en gegevensclassificatie (zie 5), bijvoorbeeld krachtige authenticatie (bijv. multifactor, zie 8) afdwingen",
     "authenticatie-informatie (zie 5.17) en gebruikersidentiteiten (zie 5.16), gegevens over het 'endpoint device' van de gebruiker, en gegevensclassificatie (zie 5.12), bijvoorbeeld krachtige authenticatie (bijv. multifactor, zie 8.5) afdwingen"),

    # ─── 8.27 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.27_BT Veilige systeemarchitectuur en technische uitgangspunten.md",
     "'least privilege' (minste rechten) en dynamische toegangsbeveiligingstechnieken (zie 5, 5 en 8it omvat",
     "'least privilege' (minste rechten) en dynamische toegangsbeveiligingstechnieken (zie 5.15, 5.18 en 8.2); het omvat"),
    ("ISO_27002_2022_NL_8.27_BT Veilige systeemarchitectuur en technische uitgangspunten.md",
     "authenticatie-informatie (zie 5), gebruikersidentiteiten (zie 5), gegevens over het 'endpoint device' van de gebruiker, en gegevensclassificatie (zie 5)",
     "authenticatie-informatie (zie 5.17), gebruikersidentiteiten (zie 5.16), gegevens over het 'endpoint device' van de gebruiker, en gegevensclassificatie (zie 5.12)"),
    ("ISO_27002_2022_NL_8.27_BT Veilige systeemarchitectuur en technische uitgangspunten.md",
     "authenticatie-informatie (zie 5) en gebruikersidentiteiten (5), gegevens over het 'endpoint device' van de gebruiker, en gegevensclassificatie (zie 5), bijvoorbeeld krachtige authenticatie (bijv. multifactor, zie 8) afdwingen",
     "authenticatie-informatie (zie 5.17) en gebruikersidentiteiten (zie 5.16), gegevens over het 'endpoint device' van de gebruiker, en gegevensclassificatie (zie 5.12), bijvoorbeeld krachtige authenticatie (bijv. multifactor, zie 8.5) afdwingen"),

    # ─── 8.28 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.28_BT Veilig coderen.md",
     "te worden getest (zie 8)et procedures voor het statisch testen",
     "te worden getest (zie 8.29). Met procedures voor het statisch testen"),
    ("ISO_27002_2022_NL_8.28_BT Veilig coderen.md",
     "kwetsbaarheden in de informatiebeveiliging te worden opgepakt (zie 8;",
     "kwetsbaarheden in de informatiebeveiliging te worden opgepakt (zie 8.8)"),

    # ─── 8.29 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.29_BT Testen van de beveiliging tijdens ontwikkeling en acceptatie.md",
     "authenticatie van gebruikers (zie 8, toegangsbeperking (zie 8 en het gebruik van cryptografie (zie 8)",
     "authenticatie van gebruikers (zie 8.5), toegangsbeperking (zie 8.3) en het gebruik van cryptografie (zie 8.24)"),
    ("ISO_27002_2022_NL_8.29_BT Testen van de beveiliging tijdens ontwikkeling en acceptatie.md",
     "veilig coderen (zie 8)",
     "veilig coderen (zie 8.28)"),
    ("ISO_27002_2022_NL_8.29_BT Testen van de beveiliging tijdens ontwikkeling en acceptatie.md",
     "beveiligde configuraties (zie 8 8 en 8) waaronder",
     "beveiligde configuraties (zie 8.9, 8.20 en 8.21) waaronder"),
    ("ISO_27002_2022_NL_8.29_BT Testen van de beveiliging tijdens ontwikkeling en acceptatie.md",
     "contracten met de leverancier behoren de vastgestelde beveiligingseisen te zijn opgenomen (zie 5)oor",
     "contracten met de leverancier behoren de vastgestelde beveiligingseisen te zijn opgenomen (zie 5.20). Voor"),
    ("ISO_27002_2022_NL_8.29_BT Testen van de beveiliging tijdens ontwikkeling en acceptatie.md",
     "de tests betrouwbaar zijn (zie 8)",
     "de tests betrouwbaar zijn (zie 8.31)"),

    # ─── 8.30 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.30_BT Uitbestede systeemontwikkeling.md",
     "intellectuele-eigendomsrechten in verband met de uitbestede inhoud (zie 5)",
     "intellectuele-eigendomsrechten in verband met de uitbestede inhoud (zie 5.32)"),
    ("ISO_27002_2022_NL_8.30_BT Uitbestede systeemontwikkeling.md",
     "beveiligde ontwikkel-, coderings- en testpraktijken (zie 8 t/m 8)",
     "beveiligde ontwikkel-, coderings- en testpraktijken (zie 8.25 t/m 8.29)"),
    ("ISO_27002_2022_NL_8.30_BT Uitbestede systeemontwikkeling.md",
     "acceptatietests voor de kwaliteit en nauwkeurigheid van de leveringen (zie 8)",
     "acceptatietests voor de kwaliteit en nauwkeurigheid van de leveringen (zie 8.29)"),
    ("ISO_27002_2022_NL_8.30_BT Uitbestede systeemontwikkeling.md",
     "beveiligingseisen voor de ontwikkelomgeving (zie 8)",
     "beveiligingseisen voor de ontwikkelomgeving (zie 8.31)"),

    # ─── 8.31 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.31_BT Scheiding van ontwikkel-, test- en productieomgevingen.md",
     "voordat ze in productiesystemen worden toegepast (zie 8)",
     "voordat ze in productiesystemen worden toegepast (zie 8.29)"),
    ("ISO_27002_2022_NL_8.31_BT Scheiding van ontwikkel-, test- en productieomgevingen.md",
     "(zie 8 voor het beschermen van testinformatie)",
     "(zie 8.33) voor het beschermen van testinformatie"),
    ("ISO_27002_2022_NL_8.31_BT Scheiding van ontwikkel-, test- en productieomgevingen.md",
     "productiegegevens in ontwikkel- en testomgevingen (8)",
     "productiegegevens in ontwikkel- en testomgevingen (zie 8.33)"),

    # ─── 8.32 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.32_BT Wijzigingsbeheer.md",
     "tests en de aanvaarding van tests voor de veranderingen (zie 8)",
     "tests en de aanvaarding van tests voor de veranderingen (zie 8.29)"),
    ("ISO_27002_2022_NL_8.32_BT Wijzigingsbeheer.md",
     "bedieningsdocumentatie (zie 5) en gebruikersprocedures",
     "bedieningsdocumentatie (zie 5.37) en gebruikersprocedures"),
    ("ISO_27002_2022_NL_8.32_BT Wijzigingsbeheer.md",
     "gescheiden is van de productie- als van de ontwikkelomgevingen (zie 8)ierdoor",
     "gescheiden is van de productie- als van de ontwikkelomgevingen (zie 8.31). Hierdoor"),

    # ─── 8.33 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.33_BT Testgegevens.md",
     "in de ontwikkel- en testomgevingen te worden gekopieerd (zie 8)",
     "in de ontwikkel- en testomgevingen te worden gekopieerd (zie 8.31)"),
    ("ISO_27002_2022_NL_8.33_BT Testgegevens.md",
     "deze te verwijderen of te maskeren (zie 8) bij gebruik voor testen",
     "deze te verwijderen of te maskeren (zie 8.11) bij gebruik voor testen"),
    ("ISO_27002_2022_NL_8.33_BT Testgegevens.md",
     "operationele gegevens naar behoren uit een testomgeving wissen (zie 8) onmiddellijk",
     "operationele gegevens naar behoren uit een testomgeving wissen (zie 8.10) onmiddellijk"),

    # ─── 8.34 ──────────────────────────────────────────────────────────────
    ("ISO_27002_2022_NL_8.34_BT Bescherming van informatiesystemen tijdens audits.md",
     "vijf voorbeelden van het gebruik van deze attributen zijn (zie 4:",
     "vijf voorbeelden van het gebruik van deze attributen zijn (zie 4.2):"),
]

# Also fix the Compleet.md with the same substitutions (using same unique context strings)
compleet_file = "ISO 27002_2022_NL_Compleet.md"
compleet_fixes = [(compleet_file, old, new) for (_, old, new) in fixes]

all_fixes = fixes + compleet_fixes

# Apply fixes
results = {"applied": [], "not_found": [], "ambiguous": []}

for (fname, old, new) in all_fixes:
    fpath = os.path.join(base, fname)
    if not os.path.exists(fpath):
        results["not_found"].append(f"FILE NOT FOUND: {fname}")
        continue
    with open(fpath, "r", encoding="utf-8") as f:
        content = f.read()
    count = content.count(old)
    if count == 0:
        results["not_found"].append(f"NOT FOUND in {fname}: {repr(old[:60])}")
    elif count > 1:
        results["ambiguous"].append(f"AMBIGUOUS ({count}x) in {fname}: {repr(old[:60])}")
        # Apply anyway since these fixes are semantically correct for all occurrences
        new_content = content.replace(old, new)
        with open(fpath, "w", encoding="utf-8") as f:
            f.write(new_content)
        results["applied"].append(f"{fname}: {count}x {repr(old[:40])} -> {repr(new[:40])}")
    else:
        new_content = content.replace(old, new)
        with open(fpath, "w", encoding="utf-8") as f:
            f.write(new_content)
        results["applied"].append(f"{fname}: {repr(old[:40])} -> {repr(new[:40])}")

print(f"\n=== APPLIED ({len(results['applied'])}) ===")
for r in results["applied"]:
    print(r)

print(f"\n=== NOT FOUND ({len(results['not_found'])}) ===")
for r in results["not_found"]:
    print(r)

print(f"\n=== AMBIGUOUS ({len(results['ambiguous'])}) ===")
for r in results["ambiguous"]:
    print(r)
