You've already forked lv-civdef-drone-threat-public-address
Import UAPF package
348 lines
13 KiB
YAML
348 lines
13 KiB
YAML
kind: uapf.resources.mapping
|
|
version: "0.3.0"
|
|
|
|
# ===========================================================================
|
|
# HOW TO READ THIS FILE
|
|
# ---------------------------------------------------------------------------
|
|
# UAPF separates the *logic* of a process (the BPMN / DMN / CMMN cornerstones)
|
|
# from the *resources* that execute it (institutions, systems, AI agents).
|
|
# This file is that binding layer.
|
|
#
|
|
# targets - every institution, system or agent that can do work here.
|
|
# bindings - one row per executable element in the three cornerstones.
|
|
# Each row names the element, says which target performs it,
|
|
# and in which execution mode.
|
|
#
|
|
# Each binding carries:
|
|
# element - "<cornerstone>.<kind>:<id>" e.g. bpmn.task:Task_DispatchBroadcast
|
|
# label - the human label as it appears in the diagram, so a reader can
|
|
# point at a box on the canvas and find its row here.
|
|
# targetId - the single primary target that performs the element.
|
|
# mode - manual : a person performs it, no automation
|
|
# assisted : a system/AI proposes, a person approves
|
|
# supervised : a system performs it, a person monitors
|
|
# autonomous : a system performs it without per-call review
|
|
#
|
|
# Consulted / informed parties (RACI C and I) are NOT bindings; they are in
|
|
# docs/02-raci.md. Endpoints and credentials below are ILLUSTRATIVE draft
|
|
# placeholders.
|
|
# ===========================================================================
|
|
|
|
legend:
|
|
cornerstones:
|
|
bpmn: bpmn/drone-threat-public-address.bpmn
|
|
dmn: dmn/air-threat-decisions.dmn
|
|
cmmn: cmmn/field-response-investigation.cmmn
|
|
element_kinds:
|
|
bpmn.task: A BPMN activity (plain, business-rule or user task).
|
|
dmn.decision: A DMN decision evaluated by a BPMN business-rule task.
|
|
cmmn.humanTask: A discretionary human task inside the investigation case.
|
|
modes: [manual, assisted, supervised, autonomous]
|
|
|
|
# ---------------------------------------------------------------------------
|
|
targets:
|
|
- id: nbs.air-surveillance
|
|
type: system_api
|
|
name: NBS air-surveillance & radar network
|
|
description: Detection and tracking feed for airborne objects near the eastern border.
|
|
capabilities: [lv.gov.civdef.air_surveillance_feed]
|
|
endpoint: "https://surveillance.mil.lv/api/v1"
|
|
authentication: {method: mtls}
|
|
availability: {schedule: always, timezone: Europe/Riga}
|
|
|
|
- id: nbs.joint-staff
|
|
type: human_role
|
|
name: NBS Joint Staff (Apvienotais stabs), operational duty
|
|
description: >-
|
|
Holds air-threat classification, public-notification request and
|
|
interception authorisation authority. The decision owner of this process.
|
|
availability: {schedule: always, timezone: Europe/Riga}
|
|
|
|
- id: nbs.air-defence
|
|
type: human_role
|
|
name: NBS air-defence units (pretgaisa aizsardziba)
|
|
description: Ground-based air defence; executes or coordinates interception.
|
|
|
|
- id: vugd.duty
|
|
type: human_role
|
|
name: VUGD operational duty / 112 (State Fire and Rescue Service)
|
|
description: Receives 112 calls; executes site fire and rescue response.
|
|
|
|
- id: vugd.cell-broadcast
|
|
type: system_api
|
|
name: Cell-broadcast system (sunu apraide), operated by VUGD
|
|
description: >-
|
|
Public early-warning cell-broadcast platform. The 40-minute dispatch
|
|
delay to Rezekne on 7 May 2026 is the failure this package addresses.
|
|
capabilities: [lv.gov.civdef.cell_broadcast]
|
|
endpoint: "https://cb.vugd.gov.lv/api/v1"
|
|
authentication: {method: api_key, configRef: secrets/vugd-cell-broadcast}
|
|
availability: {schedule: always, timezone: Europe/Riga}
|
|
|
|
- id: vp.duty
|
|
type: human_role
|
|
name: State Police (Valsts policija) operational duty
|
|
description: Scene security, cordon and public order at incident sites.
|
|
|
|
- id: nmpd.duty
|
|
type: human_role
|
|
name: Emergency Medical Service (NMPD) operational duty
|
|
description: Casualty assessment and pre-hospital medical response.
|
|
|
|
- id: kvc
|
|
type: human_role
|
|
name: Crisis Management Centre (Krizes vadibas centrs)
|
|
description: Cross-institutional crisis coordination, escalation and after-action review.
|
|
|
|
- id: iem.duty
|
|
type: human_role
|
|
name: Ministry of the Interior (Iekslietu ministrija) duty
|
|
description: Interior-sector coordination across VP, VUGD and the State Border Guard.
|
|
|
|
- id: am
|
|
type: human_role
|
|
name: Ministry of Defence (Aizsardzibas ministrija)
|
|
description: Public communication, origin attribution oversight, algorithm governance.
|
|
|
|
- id: municipal.civil-protection
|
|
type: human_role
|
|
name: Municipal civil-protection commissions (cooperation territories)
|
|
description: Local civil-protection response and resident enquiry handling.
|
|
|
|
- id: nato.bap
|
|
type: external_party
|
|
name: NATO Baltic Air Policing
|
|
description: Allied air-policing detachment; executes air interception when tasked.
|
|
|
|
- id: agent.threat-assessment
|
|
type: ai_agent
|
|
name: Civil-defence threat-assessment assistant
|
|
description: >-
|
|
AI assistant that recommends object classification and air-threat
|
|
severity. Advisory only; never authorises action (see guardrails).
|
|
capabilities: [ai.classify, ai.complete]
|
|
endpoint: "mcp://agents/civdef-threat-assessment"
|
|
authentication: {method: did}
|
|
|
|
- id: mcp.osint-monitor
|
|
type: mcp_tool
|
|
name: OSINT / disinformation monitoring MCP tool
|
|
description: Surfaces and classifies disinformation about the incident.
|
|
capabilities: [ai.classify]
|
|
endpoint: "mcp://lv-civdef/osint-monitor"
|
|
authentication: {method: oauth2, configRef: secrets/osint-monitor-oauth}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
bindings:
|
|
|
|
# ---- BPMN process tasks ----
|
|
- element: "bpmn.task:Task_TrackObject"
|
|
label: "Establish & maintain object track"
|
|
targetId: nbs.air-surveillance
|
|
mode: supervised
|
|
requiredCapabilities: [lv.gov.civdef.air_surveillance_feed]
|
|
contract: {timeout: "continuous"}
|
|
|
|
- element: "bpmn.task:Task_ClassifyObject"
|
|
label: "Classify object [Object classification]"
|
|
targetId: agent.threat-assessment
|
|
mode: assisted
|
|
requiredCapabilities: [ai.classify]
|
|
notes: "AI proposes the object class; NBS Air Surveillance confirms."
|
|
|
|
- element: "bpmn.task:Task_AssessSeverity"
|
|
label: "Assess air-threat severity [Air-threat severity]"
|
|
targetId: nbs.joint-staff
|
|
mode: assisted
|
|
notes: "AI severity recommendation; NBS Joint Staff confirms the threat level."
|
|
|
|
- element: "bpmn.task:Task_LogAndMonitor"
|
|
label: "Log & monitor (no public alert)"
|
|
targetId: nbs.air-surveillance
|
|
mode: supervised
|
|
|
|
- element: "bpmn.task:Task_DetermineUrgency"
|
|
label: "Determine notification urgency & SLA [Notification urgency]"
|
|
targetId: nbs.joint-staff
|
|
mode: assisted
|
|
notes: "Output broadcastSlaSeconds becomes the timer on Task_DispatchBroadcast."
|
|
|
|
- element: "bpmn.task:Task_DetermineBroadcast"
|
|
label: "Determine cell-broadcast scope [Cell-broadcast scope]"
|
|
targetId: nbs.joint-staff
|
|
mode: assisted
|
|
notes: "VARAM consulted on the cell-broadcast platform; templates are pre-typed (GAP G3)."
|
|
|
|
- element: "bpmn.task:Task_AuthorizeBroadcast"
|
|
label: "Authorize public broadcast"
|
|
targetId: nbs.joint-staff
|
|
mode: manual
|
|
contract: {timeout: "PT3M"}
|
|
fallback: {escalationPath: [kvc], onTimeout: escalate}
|
|
notes: >-
|
|
GAP G2: in the AS-IS algorithm this authority is the single point of
|
|
failure. The KVC escalation path is a proposed v0.3 fallback authority,
|
|
not yet institutionally agreed.
|
|
|
|
- element: "bpmn.task:Task_DispatchBroadcast"
|
|
label: "Dispatch public cell-broadcast"
|
|
targetId: vugd.cell-broadcast
|
|
mode: autonomous
|
|
requiredCapabilities: [lv.gov.civdef.cell_broadcast]
|
|
contract:
|
|
timeout: "from-decision:broadcastSlaSeconds"
|
|
retries: {maxAttempts: 2, backoffMs: 2000}
|
|
notes: >-
|
|
The non-interrupting SLA-breach boundary timer fires if dispatch is not
|
|
confirmed within broadcastSlaSeconds and triggers Task_EscalateSla.
|
|
|
|
- element: "bpmn.task:Task_EscalateSla"
|
|
label: "Escalate SLA breach to Crisis Mgmt"
|
|
targetId: kvc
|
|
mode: manual
|
|
notes: "Runs only when the SLA boundary timer fires; this is the Rezekne safeguard."
|
|
|
|
- element: "bpmn.task:Task_NotifyAgencies"
|
|
label: "Notify KVC, IeM & municipal commissions"
|
|
targetId: nbs.joint-staff
|
|
mode: assisted
|
|
notes: "KVC, IeM and municipal commissions are informed parties."
|
|
|
|
- element: "bpmn.task:Task_AuthorizeInterception"
|
|
label: "Authorize interception [Interception authorization]"
|
|
targetId: nbs.joint-staff
|
|
mode: manual
|
|
notes: "Decision logic gates engagement on positive hostile ID and safety (GAP G7)."
|
|
|
|
- element: "bpmn.task:Task_GroundEngage"
|
|
label: "Ground air-defence engagement"
|
|
targetId: nbs.air-defence
|
|
mode: manual
|
|
|
|
- element: "bpmn.task:Task_RequestBAP"
|
|
label: "Request NATO BAP engagement"
|
|
targetId: nato.bap
|
|
mode: manual
|
|
notes: "Cross-pool message flow; NATO BAP executes air interception when tasked."
|
|
|
|
- element: "bpmn.task:Task_MaintainTrack"
|
|
label: "Maintain track & monitor"
|
|
targetId: nbs.air-surveillance
|
|
mode: supervised
|
|
|
|
- element: "bpmn.task:Task_AssessStandDown"
|
|
label: "Assess stand-down criteria [Stand-down & all-clear]"
|
|
targetId: nbs.joint-staff
|
|
mode: assisted
|
|
|
|
- element: "bpmn.task:Task_AllClearBroadcast"
|
|
label: "Dispatch all-clear broadcast"
|
|
targetId: vugd.cell-broadcast
|
|
mode: autonomous
|
|
requiredCapabilities: [lv.gov.civdef.cell_broadcast]
|
|
contract: {timeout: "PT30S"}
|
|
|
|
- element: "bpmn.task:Task_HandToInvestigation"
|
|
label: "Open field-response & investigation case"
|
|
targetId: kvc
|
|
mode: manual
|
|
notes: "Instantiates the CMMN case Case_FieldResponseInvestigation."
|
|
|
|
# ---- DMN decisions ----
|
|
- element: "dmn.decision:Decision_ObjectClassification"
|
|
label: "Object classification & confidence"
|
|
targetId: agent.threat-assessment
|
|
mode: assisted
|
|
requiredCapabilities: [ai.classify]
|
|
|
|
- element: "dmn.decision:Decision_AirThreatSeverity"
|
|
label: "Air-threat severity"
|
|
targetId: nbs.joint-staff
|
|
mode: assisted
|
|
|
|
- element: "dmn.decision:Decision_NotificationUrgency"
|
|
label: "Notification urgency & SLA"
|
|
targetId: nbs.joint-staff
|
|
mode: supervised
|
|
notes: "Deterministic table; NBS Joint Staff may override the SLA tier upward."
|
|
|
|
- element: "dmn.decision:Decision_CellBroadcastScope"
|
|
label: "Cell-broadcast scope & message"
|
|
targetId: nbs.joint-staff
|
|
mode: supervised
|
|
|
|
- element: "dmn.decision:Decision_InterceptionAuthorization"
|
|
label: "Interception authorization"
|
|
targetId: nbs.joint-staff
|
|
mode: manual
|
|
notes: "Evaluated as decision support; the engage outcome still requires manual command authority."
|
|
|
|
- element: "dmn.decision:Decision_StandDownCriteria"
|
|
label: "Stand-down & all-clear"
|
|
targetId: nbs.joint-staff
|
|
mode: supervised
|
|
|
|
# ---- CMMN case human tasks ----
|
|
- element: "cmmn.humanTask:HT_DebrisLocalisation"
|
|
label: "Localise crash / debris site"
|
|
targetId: nbs.joint-staff
|
|
mode: manual
|
|
notes: "State Police and municipal commissions support localisation."
|
|
|
|
- element: "cmmn.humanTask:HT_FireSuppression"
|
|
label: "Fire suppression at impact site"
|
|
targetId: vugd.duty
|
|
mode: manual
|
|
|
|
- element: "cmmn.humanTask:HT_SceneSecurity"
|
|
label: "Establish scene cordon & security"
|
|
targetId: vp.duty
|
|
mode: manual
|
|
|
|
- element: "cmmn.humanTask:HT_CasualtyResponse"
|
|
label: "Casualty assessment & medical response"
|
|
targetId: nmpd.duty
|
|
mode: manual
|
|
|
|
- element: "cmmn.humanTask:HT_MunicipalEnquiries"
|
|
label: "Handle resident enquiries (112 / municipal)"
|
|
targetId: municipal.civil-protection
|
|
mode: manual
|
|
|
|
- element: "cmmn.humanTask:HT_DebrisCollection"
|
|
label: "Collect & catalogue debris"
|
|
targetId: nbs.joint-staff
|
|
mode: manual
|
|
|
|
- element: "cmmn.humanTask:HT_TechnicalExam"
|
|
label: "Technical examination of the UAV"
|
|
targetId: nbs.joint-staff
|
|
mode: assisted
|
|
requiredCapabilities: [ai.classify]
|
|
notes: "AI may assist component analysis; conclusions are human-confirmed."
|
|
|
|
- element: "cmmn.humanTask:HT_OriginAttribution"
|
|
label: "Origin attribution analysis"
|
|
targetId: nbs.joint-staff
|
|
mode: assisted
|
|
notes: "Ministry of Defence consulted; AI may assist but never attributes autonomously."
|
|
|
|
- element: "cmmn.humanTask:HT_DisinfoMonitor"
|
|
label: "Monitor & counter disinformation"
|
|
targetId: mcp.osint-monitor
|
|
mode: assisted
|
|
requiredCapabilities: [ai.classify]
|
|
notes: "Disinformation surfaced via MCP tool; a human reviews before any correction."
|
|
|
|
- element: "cmmn.humanTask:HT_PressBriefing"
|
|
label: "Public press briefing"
|
|
targetId: am
|
|
mode: manual
|
|
notes: "KVC consulted; public communication requires human authorship per guardrails."
|
|
|
|
- element: "cmmn.humanTask:HT_AfterAction"
|
|
label: "Inter-institutional after-action review"
|
|
targetId: kvc
|
|
mode: manual
|
|
notes: "Ministry of Defence accountable; feeds algorithm revision."
|