fix(ms-ai-architect): RX-REG-KB M13 artikkelnr. — 5 AI Act-siteringer rettet mot EUR-Lex [skip-docs]

Kryssmodell-review akse 3 (M13): governance-refene bar feil AI Act-artikkelnummer.
Hver rettet mot EUR-Lex CELEX:32024R1689 / AI Act Explorer (verifisert 2026-07-15):

- Art. 71 -> 49 (registreringsplikt; 71 = EU-databasen som entitet):
  conformity-assessment L177/271/320, ms-tools-mapping L234
- Art. 72 -> 73 (alvorlige hendelser = "Reporting of Serious Incidents";
  72 = post-market monitoring, beholdt der det faktisk betyr monitoring):
  ms-tools-mapping L52/247
- Art. 83 -> 3(23)/43(4) (vesentlig endring: def = 3(23), ny samsvarsvurdering = 43(4);
  83 = "Formal non-compliance"): conformity-assessment L126, transparency-notices L295
- Annex III 5(d) -> 5(c) (livs-/helseforsikring; 5(d) = noedanrop):
  fria-template L37, deployer-obligations L86
- Art. 12(2) -> 19(1) (6-mnd loggretensjon = "Automatically generated logs";
  12 = record-keeping-kapabilitet): provider-obligations L179/326

Last updated-bump 2026-02 -> 2026-07-15: ms-tools-mapping, transparency-notices.
TDD: lint section 7 (5 nye) failing foer fiks, groenn etter. Suite 830/830 exit 0.
Restanse (frist-klynge): conformity L177 "2. august 2026" staar igjen for M13-frister.

Kilder: artificialintelligenceact.eu/article/{3,19,43,49,71,72,73}/ + /annex/3/
This commit is contained in:
Kjell Tore Guttormsen 2026-07-15 07:16:28 +02:00
commit ddbe4954e0
7 changed files with 64 additions and 14 deletions

View file

@ -130,3 +130,53 @@ for (const f of ['ai-act-provider-obligations.md', 'ai-act-fria-template.md', 'a
assert.ok(read(f).includes('Nkom'), 'Nkom (koordinerende markedstilsynsmyndighet) must be named');
});
}
// --- 7. M13 article-number citations (EUR-Lex CELEX:32024R1689 / AI Act Explorer, verified 2026-07-15) ---
// Ground truth this session (RX-REG-KB Økt 2, cluster «artikkelnr.»):
// - Registration duty = Art. 49 ("Registration"). Art. 71 is the EU DATABASE entity
// ("EU Database for High-Risk AI Systems Listed in Annex III"). Lines describing the ACT
// of registering must cite Art. 49, not Art. 71.
// - Serious-incident reporting = Art. 73 ("Reporting of Serious Incidents"). Art. 72 is
// post-market monitoring — correct where it means monitoring, wrong for incidents.
// - Substantial modification: definition = Art. 3(23); new-conformity trigger = Art. 43(4).
// Art. 83 is "Formal non-compliance" — never a substantial-modification citation.
// - Annex III 5(c) = risk assessment & pricing in life and health insurance (5(d) = emergency dispatch).
// - Six-month log retention = Art. 19(1) ("Automatically generated logs"); Art. 12 is the
// record-keeping capability, not the retention duration.
test('conformity-assessment: registration act = Art. 49; substantial-mod def = Art. 3(23)', () => {
const md = read('ai-act-conformity-assessment.md');
assert.ok(!/\(Art\. 71\)/.test(md), 'registration act cites Art. 49, not the Art. 71 database entity');
assert.ok(!/substantial modification, Art\. 83\)/.test(md), 'substantial-mod definition = Art. 3(23), not Art. 83');
assert.ok(/\(Art\. 49\)/.test(md), 'Art. 49 registration citation present');
assert.ok(/Art\. 3\(23\)/.test(md), 'Art. 3(23) substantial-mod definition present');
});
test('microsoft-tools-mapping: serious incidents = Art. 73; registration = Art. 49', () => {
const md = read('ai-act-microsoft-tools-mapping.md');
assert.ok(!/\*\*Art\. 72\*\* Alvorlige hendelser/.test(md), 'serious incidents = Art. 73, not Art. 72');
assert.ok(!/alvorlig-hendelse-rapportering \(Art\. 72\)/.test(md), 'serious-incident reporting = Art. 73');
assert.ok(!/\(Art\. 71\)/.test(md), 'registration act = Art. 49, not Art. 71');
assert.ok(/Art\. 73/.test(md), 'Art. 73 serious-incident citation present');
});
test('transparency-notices: substantial-mod re-conformity = Art. 43(4)', () => {
const md = read('ai-act-transparency-notices.md');
assert.ok(!/"vesentlig" \(Art\. 83\)/.test(md), 're-conformity on substantial mod = Art. 43(4), not Art. 83');
assert.ok(/Art\. 43\(4\)/.test(md), 'Art. 43(4) present');
});
test('fria-template + deployer-obligations: insurance = Annex III 5(c), not 5(d)', () => {
for (const f of ['ai-act-fria-template.md', 'ai-act-deployer-obligations.md']) {
const md = read(f);
assert.ok(!/Annex III pkt\. 5\(d\)/.test(md), `${f}: life/health insurance = Annex III 5(c), not 5(d)`);
assert.ok(/Annex III pkt\. 5\(c\)/.test(md), `${f}: Annex III 5(c) present`);
}
});
test('provider-obligations: six-month log retention = Art. 19(1), not Art. 12', () => {
const md = read('ai-act-provider-obligations.md');
assert.ok(!/Art\. 12\(2\) krever minst 6 måneder/.test(md), 'retention duration = Art. 19(1), not Art. 12(2)');
assert.ok(!/6-måneder minimum \(Art\. 12\)/.test(md), '6-month minimum retention = Art. 19(1), not Art. 12');
assert.ok(/Art\. 19\(1\)/.test(md), 'Art. 19(1) retention citation present');
});