Skip to content

iso-audit

Status: milestone A + B + grootste deel C gemerged. Vier sources (Drive, Nextcloud, Planning, Jira), één Sink (Drive), twee Notifiers (Slack, Email) en beide modes (autonoom, integer) draaien. Het portaal draait in productie en heeft volledige runs afgemaakt. Resterend werk: eerste end-to-end integer-run als M-C §3.6 acceptatie, daarna v1.0.0-tag.

Pluggable ISO 9001 + 27001 audit-pipeline met drie protocol-lagen (sources, sinks, notifiers) en twee runmodes (autonoom, integer).

Wat het doet

Bewijs verzamelen. Documenten uit Google Drive of Nextcloud (PDF, Office, OpenDocument, tekstformaten — met de dekking per run in de audit-trail: gezien, gelezen, en per reden overgeslagen), planning uit Sheets, opvolgpunten uit Jira.

Classificeren tegen de norm. Per document en clausule een oordeel met onderbouwing, kosten en modelversie in de trail. De auditor triageert; het tool beslist niet.

Bevragen zonder oordeel. De vraagassistent antwoordt uitsluitend uit wat er is ingelezen, met een verwijzing per bewering — en toont niets dat niet na te trekken is. De clausule-agent legt per clausule het verwachte bewijs naast het gevondene, en stelt géén triage-status voor.

Gaten benoemen. Waar geen documentbewijs is, stelt het tool een interview voor: per ontbrekend artefact één vraag naar de vindplaats.

Wat het niet doet: oordelen namens de auditor, zijn eigen output als bewijs tellen, of iets tonen dat niet naar een bron te herleiden is.

Vóór een build: preflight

uv run python scripts/preflight.py --config-root <audits-map>   # elke component
uv run python scripts/preflight.py --component drive            # één component
uv run python scripts/preflight.py --met-api                    # inclusief de betaalde checks

Per component één keer het echte pad aflopen, tegen de echte bronnen. Dat vult een gat dat de testsuite niet kan vullen: op 21 augustus 2026 zijn vijf defecten in productie gevonden die alle 1159 tests groen lieten, omdat ze pas optreden tegen echte data of in de echte procesvorm.

Gegenereerde bestanden

De norm-DB die de memo-bouwer leest is een export uit iso_audit.data.normteksten en wordt niet met de hand bijgehouden:

uv run python scripts/genereer-norm-db.py            # schrijf examples/norms/*.yaml
uv run python scripts/genereer-norm-db.py --check    # faal als de export achterloopt

De --check-variant staat in de testsuite. Tot 24 augustus 2026 werd deze export met de hand overgetypt en bevatte hij 13 van de 121 clausules — zonder foutmelding, met twee verkeerde antwoorden tot gevolg: de memo weigerde, en de norm van bijna de helft van de bevindingen werd verkeerd afgeleid.

Quick start

git clone https://github.com/MWest2020/iso-audit.git
cd iso-audit
uv sync --dev
uv run iso-audit --help

De CLI biedt pipeline, doctor en setup-template subcommands. Drie verplichte flags: --source, --mode, en (bij --mode integer) --notifier. Env-var-fallback voor cron — zie ARCHITECTURE.md §"Configuratie".

Architectuur

sources/  →  pipeline  →  modes  →  notifiers (integer)
                  ↓
                sinks  (publicatie)

Volledig plaatje in ARCHITECTURE.md. Het waarom in docs/explanation/missie.md. Sessie-status en volgende- stap in MEMORY.md.

Documentatie

Management-auditmemo

iso-audit memo genereert de management-one-pager (HTML + PDF) uit de findings-dataset: alleen de NC's en verbeterpunten die een managementbesluit vragen, met genormeerde citaten, voorbehouden, action-tables en de status van eerder geconstateerde NC's. Multi-tenant via profielen; normen als user-pointed plug-in (de repo bevat geen norm-content).

# Profiel aanmaken (interactief) of een bestaande YAML gebruiken:
uv run iso-audit profile new
uv run iso-audit profile validate <slug>

# Memo genereren uit de findings-dataset:
uv run iso-audit memo \
  --profile <slug-of-pad> \
  --findings findings.json \
  --memo-input memo-input.yaml \
  --historical-ncs historical_ncs.yaml \
  --norms <pad-naar-norm-DB> \
  --output output/memo

Werkend voorbeeld in examples/auditmemo/ (+ NL- voorbeeld-norm-DB in examples/norms/). De officiële (en Engelstalige) norm-teksten levert de gebruiker zelf aan — de tool verzint nooit een norm-citaat.

Ontwikkeling

uv run pytest                        # tests
uv run ruff check .                  # lint
uv run ruff format --check .         # format-check
uv run mypy --strict src             # type-check
uv run bandit -r src                 # security
uv run pre-commit run --all-files    # alles

CI draait dezelfde vijf jobs parallel op elke PR.

Bijdragen

PRs zijn welkom. Voor nieuwe Source- of Notifier-adapters: gebruik de respectievelijke issue-templates onder .github/ISSUE_TEMPLATE/ — die forceren de protocol-conformance-checklist.

OpenSpec-workflow voor substantiële wijzigingen: zie CLAUDE.md.

Licentie

EUPL-1.2 (European Union Public Licence) — een copyleft open-source-licentie, sterk verankerd in de Europese publieke sector. Zie LICENSE voor de volledige tekst.

About

ISO 9001/27001 audit pipeline — sources/sinks/notifiers protocol-driven (refactor van Ops_to_Biz/audit/)

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages