You've already forked mi-apmainas-parvaldiba
Import UAPF package
Exchange governance v0.1.0 - Node Profile v0.2 Part II as executable UAPF
BPMN admission (AL0 -> AL2), four DMN decision tables and a CMMN case for suspension, withdrawal and appeal. The three rules that answer structural objections structurally: - 17.2 circularity is a precondition, not a warning (avota-neatkariba). A participant cannot be the source of its own admission evidence, including where it commercially supplies company-register data. - 15 adverse decisions fail closed: exhaustive grounds, 30-day notice, cure, 5-working-day emergency review, two distinct officers, conflict-free appeal. - 6.4 a legally significant answer is never T0. Not an AI system (Reg. (EU) 2024/1689 Art. 3(1), Recital 12) - it does not infer. It is the governance of one, and therefore in MIC sandbox scope. resources/mappings.yaml traces every clause to its artefact and names the two gaps the model cannot close alone.
This commit is contained in:
41
resources/guardrails.yaml
Normal file
41
resources/guardrails.yaml
Normal file
@@ -0,0 +1,41 @@
|
||||
# Non-normative supplementary file. UAPF does not cornerstone guardrails;
|
||||
# they live under resources/ as a host-readable policy snapshot of the
|
||||
# normative rules in the AI LV Exchange MCP Node Profile v0.2, Part II.
|
||||
authority: lv.pppa.scheme-authority
|
||||
version: "0.1.0"
|
||||
profile: "AI LV Exchange MCP Node Profile v0.2"
|
||||
|
||||
separation_of_powers:
|
||||
- "PPPA does NOT attest to legal facts. It relies on Uznemumu registrs and records what it relied on, and the date. The output of admission is a reliance statement, not an attestation (14.2)."
|
||||
- "PPPA verifies only what is technically reproducible: domain control and key control. Anyone may re-run either challenge and obtain the same answer (14.2)."
|
||||
- "A technical service provider acquires no trust authority by supplying software or infrastructure (14)."
|
||||
- "The Conformity Assessor function MUST be separated from the Scheme Authority before the Exchange leaves sandbox status, or before it admits its third participant, whichever is first (14.1)."
|
||||
|
||||
circularity:
|
||||
- "A participant MUST NOT be the source of the evidence used to admit it (17.2)."
|
||||
- "Legal facts MUST come from Uznemumu registrs, never from the applicant's own data or products - including where the applicant is itself a commercial provider of company-register data (17.2)."
|
||||
- "This is enforced in dmn/avota-neatkariba.dmn as a precondition, not as a warning. The default rule rejects."
|
||||
|
||||
assurance:
|
||||
- "AL0 is self-declared and MUST NOT be presented as verified or accredited (6.1, 17)."
|
||||
- "AL0 can never be accredited. No credential is issued below AL2."
|
||||
- "Assurance level (how thoroughly the participant was verified) and access tier (what the service demands) are different axes and MUST NOT be conflated (6)."
|
||||
|
||||
access:
|
||||
- "The tier is set by the consequence of relying on the answer, not by the secrecy of the datum. A legally significant verification is never T0 (6.4)."
|
||||
- "MCPF L2 is where the challenge endpoint appears. A node serving T1 at L1 has an identity claim and no identity proof (6.3)."
|
||||
- "Fail-closed: an unrecognised tier resolves to T3 requirements, not T0."
|
||||
|
||||
adverse_decisions:
|
||||
- "The grounds in 15.1 are exhaustive. No other ground is valid."
|
||||
- "No single individual may withdraw or suspend accreditation. Two distinct authorised PPPA officers are required (15.4)."
|
||||
- "Ordinary withdrawal requires 30 days written notice and a cure period (15.2)."
|
||||
- "Emergency suspension is narrow: confirmed key compromise or an active security incident affecting federation trust. It MUST be reasoned in writing and reviewed within 5 working days (15.3)."
|
||||
- "Appeal goes to a body excluding any person with a commercial interest in the participant's node or in a competing implementation (15.5)."
|
||||
- "Every precondition is checked BEFORE any side effect. Where a side effect is unavoidable, it runs fail-closed: the credential is revoked first, so a later failure leaves the participant untrusted rather than trusted."
|
||||
|
||||
eu_ai_act:
|
||||
classification: "Not an AI system. This package is deterministic governance - rules defined by natural persons, executed without inference. Regulation (EU) 2024/1689 Art. 3(1) and Recital 12."
|
||||
scope: "In scope of the MIC regulatory sandbox because it governs admission to the trust and identity plane of the Process-as-Code AI system, which is the declared AI system."
|
||||
human_oversight: "Every adverse decision has at least two mandatory human tasks (the two-officer decision, and the appeal). No adverse decision is ever automated."
|
||||
logging: "Each decision emits a signed CloudEvent. The onboarding record MUST state which checks PPPA performed, which external sources it used, which claims PPPA makes, and which remain the participant's responsibility (17.1)."
|
||||
36
resources/mappings.yaml
Normal file
36
resources/mappings.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
kind: uapf.resource.mappings
|
||||
version: "0.1.0"
|
||||
description: |
|
||||
Traceability from the normative text of the AI LV Exchange MCP Node Profile
|
||||
v0.2 to the executable artefact that implements it. Anyone reading the profile
|
||||
can find the code; anyone reading the code can find the clause.
|
||||
|
||||
profile_to_artefact:
|
||||
- clause: "6.1 Assurance levels AL0..AL3"
|
||||
artefact: dmn/noteikt-ticamibas-limeni.dmn
|
||||
- clause: "6.3 Minimum requirements matrix (T0..T3)"
|
||||
artefact: dmn/piekluves-limena-prasibas.dmn
|
||||
- clause: "6.4 Legally significant data is never T0"
|
||||
artefact: dmn/piekluves-limena-prasibas.dmn#T0_escalated_legally_significant
|
||||
- clause: "14.2 Verified facts vs relied-upon facts"
|
||||
artefact: dmn/avota-neatkariba.dmn
|
||||
- clause: "17.2 Circularity is excluded, not merely flagged"
|
||||
artefact: dmn/avota-neatkariba.dmn#N1_cirkularitate_pieteicejs, dmn/avota-neatkariba.dmn#N2_cirkularitate_produkts
|
||||
- clause: "17 Onboarding AL0 -> AL1 -> AL2 -> AL3"
|
||||
artefact: bpmn/dalibnieka-uznemsana.bpmn
|
||||
- clause: "15.1 Exhaustive grounds"
|
||||
artefact: dmn/atsaukuma-pamatojums.dmn#W2_nezinams_pamats
|
||||
- clause: "15.2 Notice and cure"
|
||||
artefact: dmn/atsaukuma-pamatojums.dmn#W6_atsaukums_bez_30d, dmn/atsaukuma-pamatojums.dmn#W7_atsaukums_bez_noversanas
|
||||
- clause: "15.3 Emergency suspension, 5-working-day review"
|
||||
artefact: dmn/atsaukuma-pamatojums.dmn#W3_arkartas_bez_parskatisanas, cmmn/akreditacijas-atsaukums.cmmn#stage_arkartas
|
||||
- clause: "15.4 Two-officer decision"
|
||||
artefact: dmn/atsaukuma-pamatojums.dmn#W1_nav_divas_amatpersonas, cmmn/akreditacijas-atsaukums.cmmn#ht_divi
|
||||
- clause: "15.5 Conflict-free appeal"
|
||||
artefact: cmmn/akreditacijas-atsaukums.cmmn#stage_apelacija
|
||||
- clause: "8.4 Cascading loss of recognition"
|
||||
artefact: cmmn/akreditacijas-atsaukums.cmmn#ms_speka
|
||||
|
||||
known_gaps:
|
||||
- "The two-officer check is modelled as a boolean input (divasAtseviskasAmatpersonas). DMN cannot compare two identifiers, so the distinctness of the officers MUST be enforced by the host before the table is evaluated. PPPA-Registry does this with a DB CHECK constraint."
|
||||
- "avota-neatkariba takes precomputed booleans (avotsIrPieteicejs, avotsIrPieteicejaProdukts). The host resolves the evidence source DID and compares it to the applicant DID; the table cannot."
|
||||
49
resources/schemas/reliance-statement.schema.json
Normal file
49
resources/schemas/reliance-statement.schema.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://pppa.lv/schemas/reliance-statement-v0.2.json",
|
||||
"title": "Reliance statement",
|
||||
"description": "The output of admission (Node Profile v0.2, 14.2). PPPA does not attest; it records what it relied on and what it verified.",
|
||||
"type": "object",
|
||||
"required": ["participantId", "assuranceLevel", "reliedUpon", "verified", "issuedAt"],
|
||||
"properties": {
|
||||
"participantId": { "type": "string", "description": "did:web of the participant node" },
|
||||
"organisationName": { "type": "string" },
|
||||
"registrationNumber": { "type": "string", "pattern": "^[0-9]{11}$" },
|
||||
"assuranceLevel": { "enum": ["AL0", "AL1", "AL2", "AL3"] },
|
||||
"profileVersion": { "type": "string" },
|
||||
"mcpfLevel": { "enum": ["L1", "L2", "L3"] },
|
||||
"reliedUpon": {
|
||||
"type": "array",
|
||||
"description": "Legal facts. PPPA relies; it never attests.",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["fact", "source", "sourceDate"],
|
||||
"properties": {
|
||||
"fact": { "enum": ["legalExistence", "representationRights", "signatoryIdentity"] },
|
||||
"source": { "type": "string", "description": "e.g. Uznemumu registrs; never the applicant or its products" },
|
||||
"sourceDate": { "type": "string", "format": "date" },
|
||||
"sourceIsApplicant": { "const": false },
|
||||
"sourceIsApplicantProduct": { "const": false }
|
||||
}
|
||||
}
|
||||
},
|
||||
"verified": {
|
||||
"type": "array",
|
||||
"description": "Technical facts. Reproducible by anyone.",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["fact", "method", "verifiedAt"],
|
||||
"properties": {
|
||||
"fact": { "enum": ["domainControl", "keyControl"] },
|
||||
"method": { "enum": ["dns-txt-challenge", "mcpf-challenge-endpoint"] },
|
||||
"subject": { "type": "string" },
|
||||
"verifiedAt": { "type": "string", "format": "date-time" },
|
||||
"evidenceRef": { "type": "string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"issuedAt": { "type": "string", "format": "date-time" },
|
||||
"statement": { "type": "string", "description": "Human-readable form, in Latvian." }
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
Reference in New Issue
Block a user