1607c89459
Deterministic reasoning layer ON TOP of the Legal Knowledge Graph (obligation
registry) and the Compliance Execution Graph (control mapping/evidence). Answers
which regulations apply to a concrete product, which obligations follow, whether
the customer's implementation covers them, and whether a customer interpretation
is too narrow/broad/plausible.
- ProductProfile with tri-state facts (Optional[bool]=None => uncertain, never
false security); safe predicate evaluator (no eval).
- 6 regulation triggers (CRA/MaschinenVO/RED/EMV/DataAct/NIS2) with missing-fact
prompts; 24 obligation scope rules.
- CRA obligation_ids RE-USED verbatim from the registry (93 ids) — never re-minted
(control_uuid trap); Machine/Data-Act flagged proposed=True.
- required_evidence constrained to the framework-agnostic shared evidence catalog;
capabilities echo the planned Obligation->Capability layer.
- Overlap groups (CRA<->MaschinenVO cyber-safety) + evidence-for-multiple (USP).
- 4 endpoints POST /reasoning/{scope,obligations,implementation-assessment,
interpretation-assessment}; thin handlers, registered in api/__init__.py.
- 22 tests (5 machine-builder scenarios + 10 acceptance questions). No DB
migration, no RAG, no new controls.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
28 lines
919 B
Python
28 lines
919 B
Python
"""Regulatory Reasoning Engine.
|
|
|
|
A deterministic reasoning layer ON TOP of the Legal Knowledge Graph (obligation
|
|
registry) and the Compliance Execution Graph (control mapping / evidence). It
|
|
answers, for a concrete product: which regulations apply, which obligations
|
|
follow, whether the customer's implementation covers them, and whether a
|
|
customer interpretation is legally sound.
|
|
|
|
No new RAG, no new controls, no DB schema changes — scope & reasoning metamodel
|
|
only (spec §14).
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from .claim_normalizer import normalize_claim
|
|
from .implementation_engine import assess_implementation
|
|
from .interpretation_engine import assess_interpretation
|
|
from .obligation_engine import derive_obligations
|
|
from .scope_engine import discover_scope
|
|
|
|
__all__ = [
|
|
"discover_scope",
|
|
"derive_obligations",
|
|
"normalize_claim",
|
|
"assess_implementation",
|
|
"assess_interpretation",
|
|
]
|