1
0

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:
PPPA
2026-07-12 17:11:41 +00:00
commit 64ecc3f48d
24 changed files with 1118 additions and 0 deletions

41
resources/guardrails.yaml Normal file
View 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
View 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."

View 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
}