compliance: EU AI Act conformance pass — Art. 15(5), Art. 27 FRIA, Digital Omnibus - #3
Merged
Merged
Conversation
added 2 commits
September 9, 2026 01:53
…ital Omnibus) Full re-audit of the compliance layer against Regulation (EU) 2024/1689 as amended by the Digital Omnibus (Regulation (EU) 2026/1744), plus multi-source cross-check (EUR-Lex, artificialintelligenceact.eu, CEN-CENELEC JTC 21). Citation fixes - Cybersecurity is Art. 15(5), not 15(4) (15(4) = robustness / feedback loops in the enacted text). Corrected across credential_vault, manifest, backbone and ~10 doc files. BatchNode state-isolation stays at 15(4) — that one really is robustness. Least privilege reframed as a proportionate supporting measure. - Docs still said "Art. 9 FRIA" / "24h-72h" / "Recital 12" — synced to the Aug-2025 code fixes and to the enacted text. New capability - Article27FRIANode: the actual Art. 27 deployer Fundamental Rights Impact Assessment. Scope-gated on deployer_class (PUBLIC_BODY / PRIVATE_PUBLIC_SERVICE / CREDIT_SCORING / LIFE_HEALTH_INSURANCE); generates and completeness-checks the 27(1)(a)-(f) template, records the Art. 27(3) authority-notification duty and an Art. 27(4) DPIA cross-reference; as_markdown() -> fria_art27.md. FundamentalRightsImpactNode stays as the Art. 9(2)(a) runtime screen; the two are now clearly separated everywhere. Human oversight - no more structural rubber-stamp - HumanJuryNode.human_decision_provider (additive): a real out-of-band decision (web form / Slack / API / resume_human_decision) that keeps the validated + AuthorityLedger path without needing a TTY. - Backbone jury default flipped auto_first_choice -> always_human. With no provider and no TTY the jury HALTS by design. The showcase's _mock_inputs now builds a simulated reviewer provider, with a loud DEMO banner. Digital Omnibus - ProhibitedPracticeGuard: added NCII and CSAM categories (Art. 5, applicable 2 Dec 2026; include_omnibus_categories=False to disable). - Timeline updated repo-wide: standalone Annex III high-risk obligations apply from 2 Dec 2027; Annex I embedded from 2 Aug 2028; Art. 5 / GPAI / Art. 50 unaffected. README badge "Ready Aug 2026" -> "evidence infrastructure"; dropped the "First EU AI Act-Ready" tagline. Precision / downscoping - SyntheticMarkerNode: METADATA = Art. 50(2) machine-readable; VISIBLE = Art. 50(1)/(4) human disclosure (was mis-lumped as 50(2)). Version string no longer hardcoded. - IncidentReporterNode: HIGH no longer pinned to the 240h "death" deadline; conservative 48h/360h ceiling + all three Art. 73 legal deadlines + provider_must_confirm_applicable_paragraph on every record. - BiasFilterNode / manifest / IncidentReporter / SupplierAgreementRegistry: claims scoped to what the code does (keyword gate, Annex IV Sec.2(b), PMM evidence not the PMM plan, FOSS carve-out - Lar itself is outside Art. 25(4)). Showcase + tests - 22_eu_ai_act_finance_showcase.py rewritten: 26 rows, Omnibus panel, DEMO-mode note, LAR_SHOWCASE_MODEL env override. Verified 24/24 runtime checks pass. - New tests/unit/test_compliance_conformance_fixes.py (23 tests) locking in every fix. Full suite green. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Deploying lar with
|
| Latest commit: |
a7e95ee
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://12c7398c.lar-4v4.pages.dev |
| Branch Preview URL: | https://compliance-eu-ai-act-conform.lar-4v4.pages.dev |
Matches snath-website. Was a vague "~24" / stale "20" across README and docs/index.md. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Full re-audit of
src/lar/compliance/against Regulation (EU) 2024/1689 as amended by the Digital Omnibus, Regulation (EU) 2026/1744 (in force 27 Jul 2026), cross-checked against EUR-Lex, artificialintelligenceact.eu, and the CEN-CENELEC JTC 21 work programme. The Aug-2025 citation pass fixed the code but never propagated to the docs, one systemic article-number error was still live, and the whole corpus pre-dates the Omnibus.Framing throughout: "covered" = a runtime hook fires and/or an evidence artifact is produced. It is not a conformity assessment and does not by itself discharge the obligation. Lár is a component in the Art. 25 value chain, not the provider.
Citation fixes
credential_vault.py,manifest.py,backbone.pyand ~10 doc files.prompt_injection_guard.pyalready had it right.BatchNodestate-isolation inmanifest.pydeliberately stays at 15(4) — that one really is robustness. Least privilege reframed as a proportionate supporting measure (aligned with prEN 18282), not verbatim 15(5) text.New capability —
Article27FRIANodeThe actual Article 27 deployer Fundamental Rights Impact Assessment (the named FRIA), distinct from
FundamentalRightsImpactNode(the Art. 9(2)(a) runtime screen). Scope-gated ondeployer_class(PUBLIC_BODY/PRIVATE_PUBLIC_SERVICE/CREDIT_SCORING= Annex III 5(b) /LIFE_HEALTH_INSURANCE= 5(c)); generates and completeness-checks the 27(1)(a)–(f) template, records the Art. 27(3) authority-notification duty and an Art. 27(4) DPIA cross-reference, and exportsfria_art27.mdviaas_markdown(). The backbone wires it forFINANCE;run.py/showcase emit the artifact. Lár generates and checks the template — it does not perform the assessment.Human oversight — no more structural rubber-stamp
HumanJuryNode.human_decision_provider(additive): a real out-of-band decision (web form / Slack / API /resume_human_decision) that keeps the validated +AuthorityLedgerpath without needing a TTY.auto_first_choice→always_human. With no provider and no TTY the jury HALTS by design. The showcase's_mock_inputsnow builds a simulated reviewer provider behind a loud DEMO banner, so the flagship artifact no longer demonstrates auto-approval.Digital Omnibus (Reg (EU) 2026/1744)
ProhibitedPracticeGuard: addedNCIIandCSAMheuristic categories (Art. 5, applicable 2 Dec 2026;include_omnibus_categories=Falseto disable).paper-compliance-mapping.mdandeu-ai-act-deep-dive.md.Precision / downscoping
SyntheticMarkerNode:METADATA= Art. 50(2) machine-readable;VISIBLE= Art. 50(1)/(4) human disclosure (was mis-lumped under 50(2)). Version string no longer hardcoded.IncidentReporterNode:HIGHno longer pinned to the 240h "death" deadline (a false legal classification); conservative 48h/360h ceiling plusart_73_legal_deadlines(all three paragraphs) andprovider_must_confirm_applicable_paragraphon every record.BiasFilterNode→ "runtime keyword gate; supports, does not satisfy, prEN 18283 / Art. 10(2)(f)-(g)". Manifest "Annex IV" → "Annex IV §2(b) components inventory".IncidentReporter"operationalises Art. 72" → "supports; the PMM plan is still a provider deliverable".SupplierAgreementRegistrygains the FOSS carve-out note (Lár itself — Apache-2.0, non-GPAI — is outside Art. 25(4)).Showcase + tests
examples/compliance/22_eu_ai_act_finance_showcase.pyrewritten: 26 rows (added M = Art. 27 FRIA, N = NCII/CSAM, O = both Art. 50 markings), all citations corrected, Omnibus timeline panel, DEMO-mode note,LAR_SHOWCASE_MODELenv override (defaultollama/phi4:latest).tests/unit/test_compliance_conformance_fixes.py— 23 tests locking in 15(5),Article27FRIANode(scope / completeness / strict / markdown),human_decision_provider, NCII/CSAM, 50(2)-vs-50(1)/(4), and incident-deadline honesty.Verification
main + this branchall pass, including the 23 new ones.Scope
This PR contains only the EU AI Act conformance work. The repo owner's in-progress checkpoint / executor / adaptive / logger changes on
mainare untouched and remain uncommitted there.src/lar/node.pyhere carries just thehuman_decision_provideraddition.🤖 Generated with Claude Code