ISO 42001 AIMS and inventory

Task 6228 · Done · Coder · created · updated

Part of epic 6213. Child C7 of 9. Depends on C4 (`trust.md`, whose ISO 42001 line this child flips) and C6 (`tools/iso_crosswalk.py`, generalized for a control list). ## Original requirement (verbatim) > "Identify which security and compliance certifications Jaah's competitors have — SOC 2, HIPAA, ISO 27001, etc. — and close the gap. Without breaking anything :)" **R3 — ISO/IEC 42001:2023 (AI management system) readiness** (verbatim): AIMS scope (same boundary), AI policy, AI system inventory (the fleet runners, review lane, support chat — every place Jaah uses a model), AI risk assessment and AI system impact assessment, Annex A (42001) applicability statement with pointers, crosswalk to existing controls, owner actions. ## Scope (architecture §3.5 ISO 42001) - `docs/compliance/iso42001-aims.md`: AIMS scope (boundary = pointer, same as ISO 27001/SOC 2), AI policy, roles, AI risk assessment method, AI system impact assessment, AI system inventory. - **Inventory must name every model-using surface**, at least: shared client `apps/api/app/llm_client.py` (Anthropic and DeepSeek); support chat `support_agent/turn.py`; site chat `site_chat/turn.py`; operator dashboard `operator_dashboard/digest.py` and `review.py`; PR review lane `pr_review/verdict.py`; `session_summary.py`, `task_title.py`, `task_retag.py`; `task_classifier.py`; `org_slug.py`; project memory `project_memory/model.py`, `search.py`, `curate.py`; `trigger_preflight_model.py`; `live_cast/evaluate.py`; Gemini embeddings `support_kb/embeddings.py` + callers `index.py`, `search.py`, `site_crawl.py` and the project-memory search; fleet runners on nodes `apps/jaahd/agent_providers.py` (claude, codex, gemini, deepseek, antigravity, incl. Bedrock launch `bedrock_launch.py`); key probes `apps/api/app/agent_providers.py`. **Re-grep at build time** (`anthropic|messages\.create|generativelanguage|support_llm|knob_llm|make_client|openai` plus the jaahd provider table) and add anything newer. - `docs/compliance/iso42001-soa.md`: Annex A (42001) controls A.2–A.10 with applicability, justification, pointers (and to ISO 27001 SoA / SOC 2 rows where they overlap — pointer, not prose); `ISO42-OA-*` owner-actions section; `R-ISO42-*` risk rows in `docs/compliance/risk-register.md` with score/treatment/owner. - Extend `tools/iso_crosswalk.py` with the 42001 control list (and an inventory check asserting each listed path exists); wire the 42001 run into the gate. - Compliance index rows; flip `docs/compliance/public/trust.md` line "ISO/IEC 42001 — planned" to "ISO/IEC 42001 — readiness", internal pointer → `iso42001-soa.md`. Credentials & reach: AC3, AC7, AC11 | nothing beyond the worktree (`tools/check_context.py`, `tools/iso_crosswalk.py`, grep, `./dc check full`) | **verified** (worktree-only). AC-X2 | runner's own forge login via `jaah-forge` | **verified**. Out of scope: Do NOT change any model-using code or provider behaviour; documents only (plus the checker). Do NOT contract an auditor or sign. Epic-wide (PRD §6, verbatim): "**Do not** obtain, buy, sign or contract anything; **do not** contact outside parties. Those are owner actions only. **Do not** claim any certification as held (trust page, security page, marketing, PRs). **Do not** start FedRAMP, PCI, TISAX, Cyber Essentials, ISO 27017/27018/27701 or CSA STAR work. **Do not** widen the audit boundary to dev; **do not** alter existing controls' behaviour (MFA, sessions, retention, IAM) to satisfy ISO — record a gap row instead unless the change is clearly non-breaking and additive. **Do not** copy SOC 2 policy prose into ISO documents — pointer per row (single-home); no parallel policy set. **Do not** put instance data (people, account ids) in reusable docs — `portfolio/projects/jaah.md` only." Done means: - AC7 (R3) AI system inventory names every model-using surface found in the code (fleet runners, review lane, support chat, any other `anthropic`/`openai` client) — none missing. → verify: grep the API/daemon for model clients; each is in the inventory. (Cite the grep command and that every hit file is listed.) - AC3 (R1/R3) Every ISO gap row has a risk-register id with score/treatment/owner; every human-only step has an owner-action id listed in one owner-action section (no duplication with the SOC 2/HIPAA lists — pointers where shared). → verify: grep each gap id in risk-register.md. - 42001 SoA: every Annex A control row has applicability + justification + resolving pointer, no blank/TBD — oracle: `tools/iso_crosswalk.py` 42001 run passes in the gate; `python3 tools/check_context.py` green. - AC11 for the flipped ISO 42001 line: no status claims a certificate not issued → cross-checked vs `iso42001-soa.md`. - AC-X1 (A3) Nothing breaks: `./dc check full` green on every PR. → verify: gate output. - AC-X2 (A3) Every PR's Jaah Deploy succeeds on dev. → verify: GitHub deploy run status.

Outcome

ISO 42001 AIMS, full AI inventory and SoA (38 Annex A) added, plus 4 R-ISO42 risks and a crosswalk gate check; trust line moved to Readiness. PR #5411 merged; dev deploy passed on re-deploy. Full gate green except one host-env guard test. Follow-ups named in report.

Pull request

Artifacts

Activity

  • Draft
  • Ready
  • Runner started
  • Runner ended (done)