You've already forked lv-civdef-drone-threat-public-address
Import UAPF package
v0.2
This commit is contained in:
110
README.md
110
README.md
@@ -1,87 +1,49 @@
|
|||||||
# lv.civdef.drone-threat-public-address
|
# Drone Threat Public Address & Citizen Notification
|
||||||
|
|
||||||
**UAPF Level-4 process package — v0.2.0 (draft)**
|
UAPF v2.2.0 process package · `lv.civdef.drone-threat-public-address` · v0.3.0 · **draft**
|
||||||
**Conformant to UAPF specification v2.2.0** — see `docs/04-validation-report.md`.
|
|
||||||
|
|
||||||
Drone Threat Public Address & Citizen Notification — a process model of the
|
A Level-4 UAPF package modelling the cross-institutional algorithm by which
|
||||||
cross-institutional algorithm for detecting a drone threat over Latvian
|
Latvia turns a detected drone threat into a timely public cell-broadcast,
|
||||||
airspace, deciding on and triggering public cell-broadcast notification,
|
coordinates interception, and runs field response and origin investigation.
|
||||||
coordinating interception, and conducting field response and origin
|
Modelled from the public chronology of the **7 May 2026 Rezekne drone
|
||||||
investigation.
|
incident**, whose defining failure was a ~40-minute delay in alerting the
|
||||||
|
public.
|
||||||
|
|
||||||
Built from the public record of the 7 May 2026 Rēzekne drone incident and the
|
> Independent modelling demonstrator. **Not** an official algorithm of the NBS,
|
||||||
Ministry of Defence commitment to revise the inter-institutional notification
|
> VUGD, the Ministry of Defence or any Latvian state institution.
|
||||||
algorithms. **Not approved for operational use** (`lifecycle.status: draft`).
|
|
||||||
|
|
||||||
## Layout
|
|
||||||
|
|
||||||
```
|
|
||||||
lv-civdef-drone-threat-public-address/
|
|
||||||
├── uapf.yaml # manifest (kind: uapf.package, level 4)
|
|
||||||
├── bpmn/
|
|
||||||
│ └── drone-threat-public-address.bpmn # end-to-end process flow
|
|
||||||
├── dmn/
|
|
||||||
│ └── air-threat-decisions.dmn # 3 decisions: severity / scope / interception
|
|
||||||
├── cmmn/
|
|
||||||
│ └── field-response-investigation.cmmn # field-response & origin-investigation case
|
|
||||||
├── resources/
|
|
||||||
│ ├── mappings.yaml # 11 targets, 19 bindings
|
|
||||||
│ └── guardrails.yaml # UAPF-IP guardrails policy snapshot
|
|
||||||
├── metadata/
|
|
||||||
│ ├── ownership.yaml
|
|
||||||
│ ├── lifecycle.yaml
|
|
||||||
│ └── policies.yaml # classification / execution / delegation
|
|
||||||
└── docs/ # non-normative supporting analysis
|
|
||||||
├── 00-incident-chronology.md
|
|
||||||
├── 01-institutional-gap-analysis.md
|
|
||||||
├── 02-raci.md
|
|
||||||
├── 03-uapf-ip-integration.md
|
|
||||||
└── 04-validation-report.md
|
|
||||||
```
|
|
||||||
|
|
||||||
## Cornerstones
|
## Cornerstones
|
||||||
|
|
||||||
- **BPMN** `Process_DroneThreatPublicAddress` — detection → threat assessment →
|
| Cornerstone | File | Content |
|
||||||
gateway → broadcast-scope decision → request → parallel block
|
|-------------|------|---------|
|
||||||
{cell broadcast | agency notification | interception evaluation} →
|
| Process (BPMN) | `bpmn/drone-threat-public-address.bpmn` | 26 nodes across **6 institution lanes**; non-interrupting **SLA-breach boundary timer**; parallel broadcast / notify / interception; 3-way interception gateway; stand-down loop; handoff to the investigation case. |
|
||||||
synchronise → local response → all-clear → field-response case → close.
|
| Decisions (DMN) | `dmn/air-threat-decisions.dmn` | **6 chained, documented decisions** with a clean DRD. Object classification → severity → notification urgency & SLA → broadcast scope; interception authorization; stand-down. |
|
||||||
- **DMN** one DRD, three decisions — `Decision_AirThreatSeverity`,
|
| Case (CMMN) | `cmmn/field-response-investigation.cmmn` | 3 stages, 11 human tasks, milestones and entry sentries for field response, origin investigation and public communication. |
|
||||||
`Decision_CellBroadcastScope`, `Decision_InterceptionAuthorization`.
|
| Resources | `resources/mappings.yaml` | Every process/decision/case element bound to an executing institution, system or agent — with a legend tracing each binding to its diagram element. Guardrails in `resources/guardrails.yaml`. |
|
||||||
- **CMMN** `Case_DroneIncidentFieldResponse` — debris search, fire suppression,
|
|
||||||
scene security, an investigation stage (technical exam, origin attribution,
|
|
||||||
disinformation monitoring), plus discretionary press and after-action review.
|
|
||||||
- **Resources** 11 targets (NBS surveillance/Joint Staff/air-defence, VUGD duty
|
|
||||||
and cell-broadcast system, State Police, KVC, Ministry of Defence, municipal
|
|
||||||
commissions, an AI threat-assessment agent, an OSINT MCP tool) bound to every
|
|
||||||
process / decision / case element via the v2.2.0 resource-mapping schema.
|
|
||||||
|
|
||||||
## UAPF-IP & MCP
|
## What changed in v0.3.0
|
||||||
|
|
||||||
The manifest declares `requires_capabilities`, `profiles_supported`
|
Rebuilt deeper and broader from v0.2.0, and the v0.2.0 defects fixed:
|
||||||
(`uapf-ip-orchestrated`, `uapf-ip-sync-decision`), `guardrails`, and an
|
|
||||||
`exposure.mcp` block exposing the process and the three decisions as MCP tools.
|
|
||||||
See `docs/03-uapf-ip-integration.md`.
|
|
||||||
|
|
||||||
## Validation
|
- DMN expanded **3 → 6 decisions**; every decision and every rule now carries a
|
||||||
|
description; the DRD uses an all-positive, tidy layout.
|
||||||
|
- **Interception logic fixed** — `positiveHostileId` was declared as a required
|
||||||
|
input but never tested, so the table could reach `engage` without it. It is
|
||||||
|
now rule 1: no positive hostile ID → always `hold`.
|
||||||
|
- **Cell-broadcast scope** now genuinely consumes `corridorMunicipalities` (a
|
||||||
|
FEEL expression, not a quoted string).
|
||||||
|
- BPMN expanded from a flat flow to a **6-lane collaboration** with the SLA
|
||||||
|
boundary timer that models the Rezekne lesson directly.
|
||||||
|
- `mappings.yaml` given an element-level **legend** so the resource↔process
|
||||||
|
linkage is readable and machine-checkable.
|
||||||
|
|
||||||
```
|
## Documentation
|
||||||
python3 ../../validate.py ../.. <path-to-UAPF-specification-repo>
|
|
||||||
```
|
|
||||||
|
|
||||||
Result: PASS, 0 errors, 0 warnings against UAPF v2.2.0. The reference CLI
|
`docs/00` chronology · `docs/01` gap analysis · `docs/02` RACI ·
|
||||||
`tools/uapf-cli/uapf.py` will wrongly reject this package because it checks for
|
`docs/03` notification timing & SLA · `docs/04` UAPF-IP integration ·
|
||||||
the obsolete `.bpmn.xml` extension — this is a known upstream bug, documented in
|
`docs/05` validation report (19/19 passed).
|
||||||
`docs/04-validation-report.md`.
|
|
||||||
|
|
||||||
## Intended steward
|
## Status
|
||||||
|
|
||||||
Authored as an external draft (owner: Rihards Gailums). The intended
|
`draft`. Decision thresholds and SLA values are modelling proposals pending
|
||||||
institutional steward on hand-over is the Ministry of Defence
|
institutional review — see `docs/01` and `docs/03`.
|
||||||
(Aizsardzības ministrija) jointly with the Crisis Management Centre
|
|
||||||
(Krīzes vadības centrs).
|
|
||||||
|
|
||||||
## Sources
|
|
||||||
|
|
||||||
Public reporting only — LSM / eng.lsm.lv, Apollo, TV3, Meduza, Defense News,
|
|
||||||
The Globe and Mail, and the Wikipedia article "2026 Ukrainian drone incursions
|
|
||||||
into Baltic states". Dated record in `docs/00-incident-chronology.md`.
|
|
||||||
|
|||||||
@@ -1,245 +1,476 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
|
||||||
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
|
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
|
||||||
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
|
xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
|
||||||
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
|
xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
|
||||||
id="defs_drone_threat_public_address"
|
id="defs_drone_threat" targetNamespace="http://uapf.dev/lv.civdef.drone-threat-public-address">
|
||||||
targetNamespace="http://uapf.dev/lv.civdef.drone-threat-public-address">
|
<bpmn:collaboration id="Collab_DroneThreat">
|
||||||
|
<bpmn:participant id="Participant_Response" name="National drone-threat civil-defence response" processRef="Process_DroneThreatPublicAddress" />
|
||||||
|
<bpmn:participant id="Participant_BAP" name="NATO Baltic Air Policing" />
|
||||||
|
<bpmn:messageFlow id="mf_bap" name="Air interception request" sourceRef="Task_RequestBAP" targetRef="Participant_BAP" />
|
||||||
|
</bpmn:collaboration>
|
||||||
<bpmn:process id="Process_DroneThreatPublicAddress" name="Drone Threat Public Address & Citizen Notification" isExecutable="false">
|
<bpmn:process id="Process_DroneThreatPublicAddress" name="Drone Threat Public Address & Citizen Notification" isExecutable="false">
|
||||||
|
<bpmn:laneSet id="LaneSet_1">
|
||||||
<bpmn:startEvent id="Start_Detect" name="Unidentified airborne object detected near eastern border">
|
<bpmn:lane id="Lane_Surveillance" name="NBS Air Surveillance & Radar">
|
||||||
|
<bpmn:flowNodeRef>Start_Detection</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_TrackObject</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_ClassifyObject</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_LogAndMonitor</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>End_NoThreat</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_MaintainTrack</bpmn:flowNodeRef>
|
||||||
|
</bpmn:lane>
|
||||||
|
<bpmn:lane id="Lane_JointStaff" name="NBS Joint Staff (operational duty)">
|
||||||
|
<bpmn:flowNodeRef>Task_AssessSeverity</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>GW_Threat</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_DetermineUrgency</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_DetermineBroadcast</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_AuthorizeBroadcast</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>GW_Fork</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_NotifyAgencies</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>GW_Join</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_AssessStandDown</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>GW_StandDown</bpmn:flowNodeRef>
|
||||||
|
</bpmn:lane>
|
||||||
|
<bpmn:lane id="Lane_VUGD" name="VUGD / Cell-broadcast (sunu apraide)">
|
||||||
|
<bpmn:flowNodeRef>Task_DispatchBroadcast</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_AllClearBroadcast</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Boundary_SlaBreach</bpmn:flowNodeRef>
|
||||||
|
</bpmn:lane>
|
||||||
|
<bpmn:lane id="Lane_AirDefence" name="NBS Air Defence">
|
||||||
|
<bpmn:flowNodeRef>Task_AuthorizeInterception</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>GW_Interception</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_GroundEngage</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_RequestBAP</bpmn:flowNodeRef>
|
||||||
|
</bpmn:lane>
|
||||||
|
<bpmn:lane id="Lane_Field" name="State Police & Municipal civil protection">
|
||||||
|
</bpmn:lane>
|
||||||
|
<bpmn:lane id="Lane_Command" name="Ministry of Defence / Crisis Management Centre">
|
||||||
|
<bpmn:flowNodeRef>Task_EscalateSla</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>End_SlaEscalated</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>Task_HandToInvestigation</bpmn:flowNodeRef>
|
||||||
|
<bpmn:flowNodeRef>End_Resolved</bpmn:flowNodeRef>
|
||||||
|
</bpmn:lane>
|
||||||
|
</bpmn:laneSet>
|
||||||
|
<bpmn:startEvent id="Start_Detection" name="Airborne object detected">
|
||||||
|
<bpmn:messageEventDefinition id="med_Start_Detection" />
|
||||||
<bpmn:outgoing>f1</bpmn:outgoing>
|
<bpmn:outgoing>f1</bpmn:outgoing>
|
||||||
</bpmn:startEvent>
|
</bpmn:startEvent>
|
||||||
|
<bpmn:task id="Task_TrackObject" name="Establish & maintain object track">
|
||||||
<bpmn:task id="Task_Classify" name="Classify object and track trajectory">
|
|
||||||
<bpmn:documentation>NBS air surveillance and Joint Staff classify the object (drone / aircraft / unknown) and establish its track and predicted corridor.</bpmn:documentation>
|
|
||||||
<bpmn:incoming>f1</bpmn:incoming>
|
<bpmn:incoming>f1</bpmn:incoming>
|
||||||
<bpmn:outgoing>f2</bpmn:outgoing>
|
<bpmn:outgoing>f2</bpmn:outgoing>
|
||||||
</bpmn:task>
|
</bpmn:task>
|
||||||
|
<bpmn:businessRuleTask id="Task_ClassifyObject" name="Classify object &#10; [Object classification]">
|
||||||
<bpmn:businessRuleTask id="BR_AssessThreat" name="Assess air threat severity">
|
|
||||||
<bpmn:documentation>Applies DMN decision Decision_AirThreatSeverity.</bpmn:documentation>
|
|
||||||
<bpmn:incoming>f2</bpmn:incoming>
|
<bpmn:incoming>f2</bpmn:incoming>
|
||||||
<bpmn:outgoing>f3</bpmn:outgoing>
|
<bpmn:outgoing>f3</bpmn:outgoing>
|
||||||
</bpmn:businessRuleTask>
|
</bpmn:businessRuleTask>
|
||||||
|
<bpmn:businessRuleTask id="Task_AssessSeverity" name="Assess air-threat severity &#10; [Air-threat severity]">
|
||||||
<bpmn:exclusiveGateway id="GW_ThreatConfirmed" name="Confirmed threat over LV territory?">
|
|
||||||
<bpmn:incoming>f3</bpmn:incoming>
|
<bpmn:incoming>f3</bpmn:incoming>
|
||||||
<bpmn:outgoing>f4</bpmn:outgoing>
|
<bpmn:outgoing>f4</bpmn:outgoing>
|
||||||
<bpmn:outgoing>f5</bpmn:outgoing>
|
</bpmn:businessRuleTask>
|
||||||
</bpmn:exclusiveGateway>
|
<bpmn:exclusiveGateway id="GW_Threat" name="Civil-defence threat?">
|
||||||
|
|
||||||
<bpmn:endEvent id="End_MonitorOnly" name="Continue monitoring; log event">
|
|
||||||
<bpmn:incoming>f4</bpmn:incoming>
|
<bpmn:incoming>f4</bpmn:incoming>
|
||||||
</bpmn:endEvent>
|
<bpmn:outgoing>f5</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>f7</bpmn:outgoing>
|
||||||
<bpmn:businessRuleTask id="BR_AlertScope" name="Determine cell-broadcast scope and message">
|
</bpmn:exclusiveGateway>
|
||||||
<bpmn:documentation>Applies DMN decision Decision_CellBroadcastScope to derive affected municipalities and message template.</bpmn:documentation>
|
<bpmn:task id="Task_LogAndMonitor" name="Log & monitor (no public alert)">
|
||||||
<bpmn:incoming>f5</bpmn:incoming>
|
<bpmn:incoming>f5</bpmn:incoming>
|
||||||
<bpmn:outgoing>f6</bpmn:outgoing>
|
<bpmn:outgoing>f6</bpmn:outgoing>
|
||||||
</bpmn:businessRuleTask>
|
|
||||||
|
|
||||||
<bpmn:task id="Task_RequestBroadcast" name="Issue cell-broadcast request to VUGD">
|
|
||||||
<bpmn:documentation>GAP: in the AS-IS algorithm this NBS request is the single trigger; if it is not issued (or issued late) no public alert fires. See docs/01-institutional-gap-analysis.md.</bpmn:documentation>
|
|
||||||
<bpmn:incoming>f6</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>f7</bpmn:outgoing>
|
|
||||||
</bpmn:task>
|
</bpmn:task>
|
||||||
|
<bpmn:endEvent id="End_NoThreat" name="No civil-defence action">
|
||||||
<bpmn:parallelGateway id="GW_ParallelSplit" name="Parallel response">
|
<bpmn:incoming>f6</bpmn:incoming>
|
||||||
|
</bpmn:endEvent>
|
||||||
|
<bpmn:businessRuleTask id="Task_DetermineUrgency" name="Determine notification urgency & SLA &#10; [Notification urgency]">
|
||||||
<bpmn:incoming>f7</bpmn:incoming>
|
<bpmn:incoming>f7</bpmn:incoming>
|
||||||
<bpmn:outgoing>f8</bpmn:outgoing>
|
<bpmn:outgoing>f8</bpmn:outgoing>
|
||||||
<bpmn:outgoing>f9</bpmn:outgoing>
|
|
||||||
<bpmn:outgoing>f10</bpmn:outgoing>
|
|
||||||
</bpmn:parallelGateway>
|
|
||||||
|
|
||||||
<bpmn:task id="Task_CellBroadcast" name="Trigger cell broadcast in affected municipalities">
|
|
||||||
<bpmn:documentation>VUGD executes the cell broadcast (sunu apraide) on receipt of the NBS request.</bpmn:documentation>
|
|
||||||
<bpmn:incoming>f8</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>f11</bpmn:outgoing>
|
|
||||||
</bpmn:task>
|
|
||||||
|
|
||||||
<bpmn:task id="Task_NotifyAgencies" name="Notify KVC, IeM and municipal civil-protection commissions">
|
|
||||||
<bpmn:documentation>Parallel information flow to crisis-management and municipal actors. GAP: AS-IS lacks a unified, simultaneous notification to all responsible institutions.</bpmn:documentation>
|
|
||||||
<bpmn:incoming>f9</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>f12</bpmn:outgoing>
|
|
||||||
</bpmn:task>
|
|
||||||
|
|
||||||
<bpmn:businessRuleTask id="BR_Interception" name="Evaluate interception per safety criteria">
|
|
||||||
<bpmn:documentation>Applies DMN decision Decision_InterceptionAuthorization.</bpmn:documentation>
|
|
||||||
<bpmn:incoming>f10</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>f13</bpmn:outgoing>
|
|
||||||
</bpmn:businessRuleTask>
|
</bpmn:businessRuleTask>
|
||||||
|
<bpmn:businessRuleTask id="Task_DetermineBroadcast" name="Determine cell-broadcast scope &#10; [Cell-broadcast scope]">
|
||||||
<bpmn:task id="Task_CoordBAP" name="Coordinate interception with NATO Baltic Air Policing / PGA">
|
<bpmn:incoming>f8</bpmn:incoming>
|
||||||
<bpmn:documentation>Engage or hold per Decision_InterceptionAuthorization; scramble BAP fighters and/or move ground air-defence units to cleared firing positions.</bpmn:documentation>
|
<bpmn:outgoing>f9</bpmn:outgoing>
|
||||||
<bpmn:incoming>f13</bpmn:incoming>
|
</bpmn:businessRuleTask>
|
||||||
|
<bpmn:userTask id="Task_AuthorizeBroadcast" name="Authorize public broadcast">
|
||||||
|
<bpmn:incoming>f9</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f10</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
<bpmn:parallelGateway id="GW_Fork" name="Parallel response">
|
||||||
|
<bpmn:incoming>f10</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f11</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>f12</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>f13</bpmn:outgoing>
|
||||||
|
</bpmn:parallelGateway>
|
||||||
|
<bpmn:task id="Task_DispatchBroadcast" name="Dispatch public cell-broadcast">
|
||||||
|
<bpmn:incoming>f11</bpmn:incoming>
|
||||||
<bpmn:outgoing>f14</bpmn:outgoing>
|
<bpmn:outgoing>f14</bpmn:outgoing>
|
||||||
</bpmn:task>
|
</bpmn:task>
|
||||||
|
<bpmn:task id="Task_EscalateSla" name="Escalate SLA breach to Crisis Mgmt">
|
||||||
<bpmn:parallelGateway id="GW_ParallelJoin" name="Synchronise">
|
<bpmn:incoming>fb</bpmn:incoming>
|
||||||
<bpmn:incoming>f11</bpmn:incoming>
|
<bpmn:outgoing>fb2</bpmn:outgoing>
|
||||||
<bpmn:incoming>f12</bpmn:incoming>
|
|
||||||
<bpmn:incoming>f14</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>f15</bpmn:outgoing>
|
|
||||||
</bpmn:parallelGateway>
|
|
||||||
|
|
||||||
<bpmn:task id="Task_LocalResponse" name="Activate local civil-protection response">
|
|
||||||
<bpmn:documentation>Municipal civil-protection commissions act on shelter guidance, school closures (IZM guidance) and resident enquiries.</bpmn:documentation>
|
|
||||||
<bpmn:incoming>f15</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>f16</bpmn:outgoing>
|
|
||||||
</bpmn:task>
|
</bpmn:task>
|
||||||
|
<bpmn:endEvent id="End_SlaEscalated" name="SLA breach escalated">
|
||||||
<bpmn:task id="Task_AllClear" name="Declare threat ended and issue all-clear broadcast">
|
<bpmn:incoming>fb2</bpmn:incoming>
|
||||||
|
</bpmn:endEvent>
|
||||||
|
<bpmn:task id="Task_NotifyAgencies" name="Notify KVC, IeM & municipal commissions">
|
||||||
|
<bpmn:incoming>f12</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f15</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:businessRuleTask id="Task_AuthorizeInterception" name="Authorize interception &#10; [Interception authorization]">
|
||||||
|
<bpmn:incoming>f13</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f16</bpmn:outgoing>
|
||||||
|
</bpmn:businessRuleTask>
|
||||||
|
<bpmn:exclusiveGateway id="GW_Interception" name="Interception decision">
|
||||||
<bpmn:incoming>f16</bpmn:incoming>
|
<bpmn:incoming>f16</bpmn:incoming>
|
||||||
<bpmn:outgoing>f17</bpmn:outgoing>
|
<bpmn:outgoing>f17</bpmn:outgoing>
|
||||||
</bpmn:task>
|
|
||||||
|
|
||||||
<bpmn:callActivity id="Call_FieldResponse" name="Field response & origin investigation" calledElement="Case_DroneIncidentFieldResponse">
|
|
||||||
<bpmn:documentation>Invokes the CMMN case cmmn/field-response-investigation.cmmn.xml.</bpmn:documentation>
|
|
||||||
<bpmn:incoming>f17</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>f18</bpmn:outgoing>
|
<bpmn:outgoing>f18</bpmn:outgoing>
|
||||||
</bpmn:callActivity>
|
<bpmn:outgoing>f19</bpmn:outgoing>
|
||||||
|
</bpmn:exclusiveGateway>
|
||||||
<bpmn:endEvent id="End_Closed" name="Incident closed; after-action review scheduled">
|
<bpmn:task id="Task_GroundEngage" name="Ground air-defence engagement">
|
||||||
|
<bpmn:incoming>f17</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f20</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:task id="Task_RequestBAP" name="Request NATO BAP engagement">
|
||||||
<bpmn:incoming>f18</bpmn:incoming>
|
<bpmn:incoming>f18</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f21</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:task id="Task_MaintainTrack" name="Maintain track & monitor">
|
||||||
|
<bpmn:incoming>f19</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f22</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:parallelGateway id="GW_Join" name="Join">
|
||||||
|
<bpmn:incoming>f14</bpmn:incoming>
|
||||||
|
<bpmn:incoming>f15</bpmn:incoming>
|
||||||
|
<bpmn:incoming>f20</bpmn:incoming>
|
||||||
|
<bpmn:incoming>f21</bpmn:incoming>
|
||||||
|
<bpmn:incoming>f22</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f23</bpmn:outgoing>
|
||||||
|
</bpmn:parallelGateway>
|
||||||
|
<bpmn:businessRuleTask id="Task_AssessStandDown" name="Assess stand-down criteria &#10; [Stand-down & all-clear]">
|
||||||
|
<bpmn:incoming>f23</bpmn:incoming>
|
||||||
|
<bpmn:incoming>f25</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f24</bpmn:outgoing>
|
||||||
|
</bpmn:businessRuleTask>
|
||||||
|
<bpmn:exclusiveGateway id="GW_StandDown" name="All clear?">
|
||||||
|
<bpmn:incoming>f24</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f25</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>f26</bpmn:outgoing>
|
||||||
|
</bpmn:exclusiveGateway>
|
||||||
|
<bpmn:task id="Task_AllClearBroadcast" name="Dispatch all-clear broadcast">
|
||||||
|
<bpmn:incoming>f26</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f27</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:task id="Task_HandToInvestigation" name="Open field-response & investigation case">
|
||||||
|
<bpmn:incoming>f27</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>f28</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:endEvent id="End_Resolved" name="Incident resolved">
|
||||||
|
<bpmn:incoming>f28</bpmn:incoming>
|
||||||
</bpmn:endEvent>
|
</bpmn:endEvent>
|
||||||
|
<bpmn:boundaryEvent id="Boundary_SlaBreach" name="Broadcast SLA breached" attachedToRef="Task_DispatchBroadcast" cancelActivity="false">
|
||||||
<bpmn:sequenceFlow id="f1" sourceRef="Start_Detect" targetRef="Task_Classify" />
|
<bpmn:outgoing>fb</bpmn:outgoing>
|
||||||
<bpmn:sequenceFlow id="f2" sourceRef="Task_Classify" targetRef="BR_AssessThreat" />
|
<bpmn:timerEventDefinition id="ted_sla">
|
||||||
<bpmn:sequenceFlow id="f3" sourceRef="BR_AssessThreat" targetRef="GW_ThreatConfirmed" />
|
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">PT10M</bpmn:timeDuration>
|
||||||
<bpmn:sequenceFlow id="f4" name="No - not over LV territory" sourceRef="GW_ThreatConfirmed" targetRef="End_MonitorOnly" />
|
</bpmn:timerEventDefinition>
|
||||||
<bpmn:sequenceFlow id="f5" name="Yes - confirmed threat" sourceRef="GW_ThreatConfirmed" targetRef="BR_AlertScope" />
|
</bpmn:boundaryEvent>
|
||||||
<bpmn:sequenceFlow id="f6" sourceRef="BR_AlertScope" targetRef="Task_RequestBroadcast" />
|
<bpmn:sequenceFlow id="f1" sourceRef="Start_Detection" targetRef="Task_TrackObject" />
|
||||||
<bpmn:sequenceFlow id="f7" sourceRef="Task_RequestBroadcast" targetRef="GW_ParallelSplit" />
|
<bpmn:sequenceFlow id="f2" sourceRef="Task_TrackObject" targetRef="Task_ClassifyObject" />
|
||||||
<bpmn:sequenceFlow id="f8" sourceRef="GW_ParallelSplit" targetRef="Task_CellBroadcast" />
|
<bpmn:sequenceFlow id="f3" sourceRef="Task_ClassifyObject" targetRef="Task_AssessSeverity" />
|
||||||
<bpmn:sequenceFlow id="f9" sourceRef="GW_ParallelSplit" targetRef="Task_NotifyAgencies" />
|
<bpmn:sequenceFlow id="f4" sourceRef="Task_AssessSeverity" targetRef="GW_Threat" />
|
||||||
<bpmn:sequenceFlow id="f10" sourceRef="GW_ParallelSplit" targetRef="BR_Interception" />
|
<bpmn:sequenceFlow id="f5" name="threatLevel in (none, low)" sourceRef="GW_Threat" targetRef="Task_LogAndMonitor" />
|
||||||
<bpmn:sequenceFlow id="f11" sourceRef="Task_CellBroadcast" targetRef="GW_ParallelJoin" />
|
<bpmn:sequenceFlow id="f6" sourceRef="Task_LogAndMonitor" targetRef="End_NoThreat" />
|
||||||
<bpmn:sequenceFlow id="f12" sourceRef="Task_NotifyAgencies" targetRef="GW_ParallelJoin" />
|
<bpmn:sequenceFlow id="f7" name="threatLevel in (elevated, high, critical)" sourceRef="GW_Threat" targetRef="Task_DetermineUrgency" />
|
||||||
<bpmn:sequenceFlow id="f13" sourceRef="BR_Interception" targetRef="Task_CoordBAP" />
|
<bpmn:sequenceFlow id="f8" sourceRef="Task_DetermineUrgency" targetRef="Task_DetermineBroadcast" />
|
||||||
<bpmn:sequenceFlow id="f14" sourceRef="Task_CoordBAP" targetRef="GW_ParallelJoin" />
|
<bpmn:sequenceFlow id="f9" sourceRef="Task_DetermineBroadcast" targetRef="Task_AuthorizeBroadcast" />
|
||||||
<bpmn:sequenceFlow id="f15" sourceRef="GW_ParallelJoin" targetRef="Task_LocalResponse" />
|
<bpmn:sequenceFlow id="f10" sourceRef="Task_AuthorizeBroadcast" targetRef="GW_Fork" />
|
||||||
<bpmn:sequenceFlow id="f16" sourceRef="Task_LocalResponse" targetRef="Task_AllClear" />
|
<bpmn:sequenceFlow id="f11" sourceRef="GW_Fork" targetRef="Task_DispatchBroadcast" />
|
||||||
<bpmn:sequenceFlow id="f17" sourceRef="Task_AllClear" targetRef="Call_FieldResponse" />
|
<bpmn:sequenceFlow id="f12" sourceRef="GW_Fork" targetRef="Task_NotifyAgencies" />
|
||||||
<bpmn:sequenceFlow id="f18" sourceRef="Call_FieldResponse" targetRef="End_Closed" />
|
<bpmn:sequenceFlow id="f13" sourceRef="GW_Fork" targetRef="Task_AuthorizeInterception" />
|
||||||
|
<bpmn:sequenceFlow id="f14" sourceRef="Task_DispatchBroadcast" targetRef="GW_Join" />
|
||||||
|
<bpmn:sequenceFlow id="f15" sourceRef="Task_NotifyAgencies" targetRef="GW_Join" />
|
||||||
|
<bpmn:sequenceFlow id="f16" sourceRef="Task_AuthorizeInterception" targetRef="GW_Interception" />
|
||||||
|
<bpmn:sequenceFlow id="f17" name="interceptionDecision = engage-ground" sourceRef="GW_Interception" targetRef="Task_GroundEngage" />
|
||||||
|
<bpmn:sequenceFlow id="f18" name="interceptionDecision = engage-bap" sourceRef="GW_Interception" targetRef="Task_RequestBAP" />
|
||||||
|
<bpmn:sequenceFlow id="f19" name="interceptionDecision = hold" sourceRef="GW_Interception" targetRef="Task_MaintainTrack" />
|
||||||
|
<bpmn:sequenceFlow id="f20" sourceRef="Task_GroundEngage" targetRef="GW_Join" />
|
||||||
|
<bpmn:sequenceFlow id="f21" sourceRef="Task_RequestBAP" targetRef="GW_Join" />
|
||||||
|
<bpmn:sequenceFlow id="f22" sourceRef="Task_MaintainTrack" targetRef="GW_Join" />
|
||||||
|
<bpmn:sequenceFlow id="f23" sourceRef="GW_Join" targetRef="Task_AssessStandDown" />
|
||||||
|
<bpmn:sequenceFlow id="f24" sourceRef="Task_AssessStandDown" targetRef="GW_StandDown" />
|
||||||
|
<bpmn:sequenceFlow id="f25" name="standDownDecision = maintain-alert" sourceRef="GW_StandDown" targetRef="Task_AssessStandDown" />
|
||||||
|
<bpmn:sequenceFlow id="f26" name="standDownDecision = all-clear" sourceRef="GW_StandDown" targetRef="Task_AllClearBroadcast" />
|
||||||
|
<bpmn:sequenceFlow id="f27" sourceRef="Task_AllClearBroadcast" targetRef="Task_HandToInvestigation" />
|
||||||
|
<bpmn:sequenceFlow id="f28" sourceRef="Task_HandToInvestigation" targetRef="End_Resolved" />
|
||||||
|
<bpmn:sequenceFlow id="fb" sourceRef="Boundary_SlaBreach" targetRef="Task_EscalateSla" />
|
||||||
|
<bpmn:sequenceFlow id="fb2" sourceRef="Task_EscalateSla" targetRef="End_SlaEscalated" />
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
|
<bpmndi:BPMNDiagram id="diag">
|
||||||
<bpmndi:BPMNDiagram id="Diagram_1">
|
<bpmndi:BPMNPlane id="plane" bpmnElement="Collab_DroneThreat">
|
||||||
<bpmndi:BPMNPlane id="Plane_1" bpmnElement="Process_DroneThreatPublicAddress">
|
<bpmndi:BPMNShape id="di_Participant_Response" bpmnElement="Participant_Response" isHorizontal="true">
|
||||||
<bpmndi:BPMNShape id="di_Start_Detect" bpmnElement="Start_Detect">
|
<dc:Bounds x="170" y="120" width="3460" height="900" />
|
||||||
<dc:Bounds x="152" y="222" width="36" height="36" />
|
|
||||||
<bpmndi:BPMNLabel><dc:Bounds x="130" y="262" width="84" height="40" /></bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_Task_Classify" bpmnElement="Task_Classify">
|
<bpmndi:BPMNShape id="di_Lane_Surveillance" bpmnElement="Lane_Surveillance" isHorizontal="true">
|
||||||
<dc:Bounds x="240" y="200" width="120" height="80" />
|
<dc:Bounds x="200" y="120" width="3430" height="150" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_BR_AssessThreat" bpmnElement="BR_AssessThreat">
|
<bpmndi:BPMNShape id="di_Lane_JointStaff" bpmnElement="Lane_JointStaff" isHorizontal="true">
|
||||||
<dc:Bounds x="410" y="200" width="120" height="80" />
|
<dc:Bounds x="200" y="270" width="3430" height="150" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_GW_ThreatConfirmed" bpmnElement="GW_ThreatConfirmed" isMarkerVisible="true">
|
<bpmndi:BPMNShape id="di_Lane_VUGD" bpmnElement="Lane_VUGD" isHorizontal="true">
|
||||||
<dc:Bounds x="585" y="215" width="50" height="50" />
|
<dc:Bounds x="200" y="420" width="3430" height="150" />
|
||||||
<bpmndi:BPMNLabel><dc:Bounds x="570" y="175" width="82" height="40" /></bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_End_MonitorOnly" bpmnElement="End_MonitorOnly">
|
<bpmndi:BPMNShape id="di_Lane_AirDefence" bpmnElement="Lane_AirDefence" isHorizontal="true">
|
||||||
<dc:Bounds x="592" y="362" width="36" height="36" />
|
<dc:Bounds x="200" y="570" width="3430" height="150" />
|
||||||
<bpmndi:BPMNLabel><dc:Bounds x="568" y="402" width="84" height="27" /></bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_BR_AlertScope" bpmnElement="BR_AlertScope">
|
<bpmndi:BPMNShape id="di_Lane_Field" bpmnElement="Lane_Field" isHorizontal="true">
|
||||||
<dc:Bounds x="690" y="200" width="120" height="80" />
|
<dc:Bounds x="200" y="720" width="3430" height="150" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_Task_RequestBroadcast" bpmnElement="Task_RequestBroadcast">
|
<bpmndi:BPMNShape id="di_Lane_Command" bpmnElement="Lane_Command" isHorizontal="true">
|
||||||
<dc:Bounds x="860" y="200" width="120" height="80" />
|
<dc:Bounds x="200" y="870" width="3430" height="150" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_GW_ParallelSplit" bpmnElement="GW_ParallelSplit">
|
<bpmndi:BPMNShape id="di_Participant_BAP" bpmnElement="Participant_BAP" isHorizontal="true">
|
||||||
<dc:Bounds x="1035" y="215" width="50" height="50" />
|
<dc:Bounds x="170" y="1060" width="3460" height="80" />
|
||||||
<bpmndi:BPMNLabel><dc:Bounds x="1030" y="272" width="60" height="14" /></bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_Task_CellBroadcast" bpmnElement="Task_CellBroadcast">
|
<bpmndi:BPMNShape id="di_Start_Detection" bpmnElement="Start_Detection">
|
||||||
<dc:Bounds x="1150" y="80" width="150" height="80" />
|
<dc:Bounds x="282" y="177" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="250" y="217" width="100" height="28" /></bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_TrackObject" bpmnElement="Task_TrackObject">
|
||||||
|
<dc:Bounds x="405" y="152" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_ClassifyObject" bpmnElement="Task_ClassifyObject">
|
||||||
|
<dc:Bounds x="580" y="152" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_AssessSeverity" bpmnElement="Task_AssessSeverity">
|
||||||
|
<dc:Bounds x="755" y="302" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_GW_Threat" bpmnElement="GW_Threat">
|
||||||
|
<dc:Bounds x="975" y="320" width="50" height="50" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="950" y="374" width="100" height="28" /></bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_LogAndMonitor" bpmnElement="Task_LogAndMonitor">
|
||||||
|
<dc:Bounds x="1105" y="152" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_End_NoThreat" bpmnElement="End_NoThreat">
|
||||||
|
<dc:Bounds x="1332" y="177" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="1300" y="217" width="100" height="28" /></bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_DetermineUrgency" bpmnElement="Task_DetermineUrgency">
|
||||||
|
<dc:Bounds x="1105" y="302" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_DetermineBroadcast" bpmnElement="Task_DetermineBroadcast">
|
||||||
|
<dc:Bounds x="1280" y="302" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_AuthorizeBroadcast" bpmnElement="Task_AuthorizeBroadcast">
|
||||||
|
<dc:Bounds x="1455" y="302" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_GW_Fork" bpmnElement="GW_Fork">
|
||||||
|
<dc:Bounds x="1675" y="320" width="50" height="50" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="1650" y="374" width="100" height="28" /></bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_DispatchBroadcast" bpmnElement="Task_DispatchBroadcast">
|
||||||
|
<dc:Bounds x="1805" y="452" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_EscalateSla" bpmnElement="Task_EscalateSla">
|
||||||
|
<dc:Bounds x="1980" y="902" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_End_SlaEscalated" bpmnElement="End_SlaEscalated">
|
||||||
|
<dc:Bounds x="2207" y="927" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="2175" y="967" width="100" height="28" /></bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_Task_NotifyAgencies" bpmnElement="Task_NotifyAgencies">
|
<bpmndi:BPMNShape id="di_Task_NotifyAgencies" bpmnElement="Task_NotifyAgencies">
|
||||||
<dc:Bounds x="1150" y="200" width="150" height="80" />
|
<dc:Bounds x="1805" y="302" width="140" height="86" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_BR_Interception" bpmnElement="BR_Interception">
|
<bpmndi:BPMNShape id="di_Task_AuthorizeInterception" bpmnElement="Task_AuthorizeInterception">
|
||||||
<dc:Bounds x="1150" y="330" width="150" height="80" />
|
<dc:Bounds x="1805" y="602" width="140" height="86" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_Task_CoordBAP" bpmnElement="Task_CoordBAP">
|
<bpmndi:BPMNShape id="di_GW_Interception" bpmnElement="GW_Interception">
|
||||||
<dc:Bounds x="1360" y="330" width="150" height="80" />
|
<dc:Bounds x="2025" y="620" width="50" height="50" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="2000" y="674" width="100" height="28" /></bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_GW_ParallelJoin" bpmnElement="GW_ParallelJoin">
|
<bpmndi:BPMNShape id="di_Task_GroundEngage" bpmnElement="Task_GroundEngage">
|
||||||
<dc:Bounds x="1565" y="215" width="50" height="50" />
|
<dc:Bounds x="2155" y="602" width="140" height="86" />
|
||||||
<bpmndi:BPMNLabel><dc:Bounds x="1564" y="272" width="52" height="14" /></bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_Task_LocalResponse" bpmnElement="Task_LocalResponse">
|
<bpmndi:BPMNShape id="di_Task_RequestBAP" bpmnElement="Task_RequestBAP">
|
||||||
<dc:Bounds x="1660" y="200" width="150" height="80" />
|
<dc:Bounds x="2330" y="602" width="140" height="86" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_Task_AllClear" bpmnElement="Task_AllClear">
|
<bpmndi:BPMNShape id="di_Task_MaintainTrack" bpmnElement="Task_MaintainTrack">
|
||||||
<dc:Bounds x="1860" y="200" width="150" height="80" />
|
<dc:Bounds x="2155" y="152" width="140" height="86" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_Call_FieldResponse" bpmnElement="Call_FieldResponse">
|
<bpmndi:BPMNShape id="di_GW_Join" bpmnElement="GW_Join">
|
||||||
<dc:Bounds x="2060" y="200" width="160" height="80" />
|
<dc:Bounds x="2550" y="320" width="50" height="50" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="2525" y="374" width="100" height="28" /></bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="di_End_Closed" bpmnElement="End_Closed">
|
<bpmndi:BPMNShape id="di_Task_AssessStandDown" bpmnElement="Task_AssessStandDown">
|
||||||
<dc:Bounds x="2272" y="222" width="36" height="36" />
|
<dc:Bounds x="2680" y="302" width="140" height="86" />
|
||||||
<bpmndi:BPMNLabel><dc:Bounds x="2250" y="262" width="84" height="40" /></bpmndi:BPMNLabel>
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_GW_StandDown" bpmnElement="GW_StandDown">
|
||||||
|
<dc:Bounds x="2900" y="320" width="50" height="50" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="2875" y="374" width="100" height="28" /></bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_AllClearBroadcast" bpmnElement="Task_AllClearBroadcast">
|
||||||
|
<dc:Bounds x="3030" y="452" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Task_HandToInvestigation" bpmnElement="Task_HandToInvestigation">
|
||||||
|
<dc:Bounds x="3205" y="902" width="140" height="86" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_End_Resolved" bpmnElement="End_Resolved">
|
||||||
|
<dc:Bounds x="3432" y="927" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="3400" y="967" width="100" height="28" /></bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="di_Boundary_SlaBreach" bpmnElement="Boundary_SlaBreach">
|
||||||
|
<dc:Bounds x="1857" y="520" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="1821" y="558" width="110" height="28" /></bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
|
||||||
<bpmndi:BPMNEdge id="di_f1" bpmnElement="f1">
|
<bpmndi:BPMNEdge id="di_f1" bpmnElement="f1">
|
||||||
<di:waypoint x="188" y="240" /><di:waypoint x="240" y="240" />
|
<di:waypoint x="300" y="195" />
|
||||||
|
<di:waypoint x="475" y="195" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f2" bpmnElement="f2">
|
<bpmndi:BPMNEdge id="di_f2" bpmnElement="f2">
|
||||||
<di:waypoint x="360" y="240" /><di:waypoint x="410" y="240" />
|
<di:waypoint x="475" y="195" />
|
||||||
|
<di:waypoint x="650" y="195" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f3" bpmnElement="f3">
|
<bpmndi:BPMNEdge id="di_f3" bpmnElement="f3">
|
||||||
<di:waypoint x="530" y="240" /><di:waypoint x="585" y="240" />
|
<di:waypoint x="650" y="195" />
|
||||||
|
<di:waypoint x="737" y="195" />
|
||||||
|
<di:waypoint x="737" y="345" />
|
||||||
|
<di:waypoint x="825" y="345" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f4" bpmnElement="f4">
|
<bpmndi:BPMNEdge id="di_f4" bpmnElement="f4">
|
||||||
<di:waypoint x="610" y="265" /><di:waypoint x="610" y="362" />
|
<di:waypoint x="825" y="345" />
|
||||||
<bpmndi:BPMNLabel><dc:Bounds x="615" y="300" width="84" height="27" /></bpmndi:BPMNLabel>
|
<di:waypoint x="1000" y="345" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f5" bpmnElement="f5">
|
<bpmndi:BPMNEdge id="di_f5" bpmnElement="f5">
|
||||||
<di:waypoint x="635" y="240" /><di:waypoint x="690" y="240" />
|
<di:waypoint x="1000" y="345" />
|
||||||
<bpmndi:BPMNLabel><dc:Bounds x="636" y="206" width="74" height="27" /></bpmndi:BPMNLabel>
|
<di:waypoint x="1087" y="345" />
|
||||||
|
<di:waypoint x="1087" y="195" />
|
||||||
|
<di:waypoint x="1175" y="195" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="1027" y="161" width="120" height="30" /></bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f6" bpmnElement="f6">
|
<bpmndi:BPMNEdge id="di_f6" bpmnElement="f6">
|
||||||
<di:waypoint x="810" y="240" /><di:waypoint x="860" y="240" />
|
<di:waypoint x="1175" y="195" />
|
||||||
|
<di:waypoint x="1350" y="195" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f7" bpmnElement="f7">
|
<bpmndi:BPMNEdge id="di_f7" bpmnElement="f7">
|
||||||
<di:waypoint x="980" y="240" /><di:waypoint x="1035" y="240" />
|
<di:waypoint x="1000" y="345" />
|
||||||
|
<di:waypoint x="1175" y="345" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="1027" y="311" width="120" height="30" /></bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f8" bpmnElement="f8">
|
<bpmndi:BPMNEdge id="di_f8" bpmnElement="f8">
|
||||||
<di:waypoint x="1060" y="215" /><di:waypoint x="1060" y="120" /><di:waypoint x="1150" y="120" />
|
<di:waypoint x="1175" y="345" />
|
||||||
|
<di:waypoint x="1350" y="345" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f9" bpmnElement="f9">
|
<bpmndi:BPMNEdge id="di_f9" bpmnElement="f9">
|
||||||
<di:waypoint x="1085" y="240" /><di:waypoint x="1150" y="240" />
|
<di:waypoint x="1350" y="345" />
|
||||||
|
<di:waypoint x="1525" y="345" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f10" bpmnElement="f10">
|
<bpmndi:BPMNEdge id="di_f10" bpmnElement="f10">
|
||||||
<di:waypoint x="1060" y="265" /><di:waypoint x="1060" y="370" /><di:waypoint x="1150" y="370" />
|
<di:waypoint x="1525" y="345" />
|
||||||
|
<di:waypoint x="1700" y="345" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f11" bpmnElement="f11">
|
<bpmndi:BPMNEdge id="di_f11" bpmnElement="f11">
|
||||||
<di:waypoint x="1300" y="120" /><di:waypoint x="1590" y="120" /><di:waypoint x="1590" y="215" />
|
<di:waypoint x="1700" y="345" />
|
||||||
|
<di:waypoint x="1787" y="345" />
|
||||||
|
<di:waypoint x="1787" y="495" />
|
||||||
|
<di:waypoint x="1875" y="495" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f12" bpmnElement="f12">
|
<bpmndi:BPMNEdge id="di_f12" bpmnElement="f12">
|
||||||
<di:waypoint x="1300" y="240" /><di:waypoint x="1565" y="240" />
|
<di:waypoint x="1700" y="345" />
|
||||||
|
<di:waypoint x="1875" y="345" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f13" bpmnElement="f13">
|
<bpmndi:BPMNEdge id="di_f13" bpmnElement="f13">
|
||||||
<di:waypoint x="1300" y="370" /><di:waypoint x="1360" y="370" />
|
<di:waypoint x="1700" y="345" />
|
||||||
|
<di:waypoint x="1787" y="345" />
|
||||||
|
<di:waypoint x="1787" y="645" />
|
||||||
|
<di:waypoint x="1875" y="645" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f14" bpmnElement="f14">
|
<bpmndi:BPMNEdge id="di_f14" bpmnElement="f14">
|
||||||
<di:waypoint x="1510" y="370" /><di:waypoint x="1590" y="370" /><di:waypoint x="1590" y="265" />
|
<di:waypoint x="1875" y="495" />
|
||||||
|
<di:waypoint x="2225" y="495" />
|
||||||
|
<di:waypoint x="2225" y="345" />
|
||||||
|
<di:waypoint x="2575" y="345" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f15" bpmnElement="f15">
|
<bpmndi:BPMNEdge id="di_f15" bpmnElement="f15">
|
||||||
<di:waypoint x="1615" y="240" /><di:waypoint x="1660" y="240" />
|
<di:waypoint x="1875" y="345" />
|
||||||
|
<di:waypoint x="2575" y="345" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f16" bpmnElement="f16">
|
<bpmndi:BPMNEdge id="di_f16" bpmnElement="f16">
|
||||||
<di:waypoint x="1810" y="240" /><di:waypoint x="1860" y="240" />
|
<di:waypoint x="1875" y="645" />
|
||||||
|
<di:waypoint x="2050" y="645" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f17" bpmnElement="f17">
|
<bpmndi:BPMNEdge id="di_f17" bpmnElement="f17">
|
||||||
<di:waypoint x="2010" y="240" /><di:waypoint x="2060" y="240" />
|
<di:waypoint x="2050" y="645" />
|
||||||
|
<di:waypoint x="2225" y="645" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="2077" y="611" width="120" height="30" /></bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="di_f18" bpmnElement="f18">
|
<bpmndi:BPMNEdge id="di_f18" bpmnElement="f18">
|
||||||
<di:waypoint x="2220" y="240" /><di:waypoint x="2272" y="240" />
|
<di:waypoint x="2050" y="645" />
|
||||||
|
<di:waypoint x="2400" y="645" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="2165" y="611" width="120" height="30" /></bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_f19" bpmnElement="f19">
|
||||||
|
<di:waypoint x="2050" y="645" />
|
||||||
|
<di:waypoint x="2137" y="645" />
|
||||||
|
<di:waypoint x="2137" y="195" />
|
||||||
|
<di:waypoint x="2225" y="195" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="2077" y="161" width="120" height="30" /></bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_f20" bpmnElement="f20">
|
||||||
|
<di:waypoint x="2225" y="645" />
|
||||||
|
<di:waypoint x="2400" y="645" />
|
||||||
|
<di:waypoint x="2400" y="345" />
|
||||||
|
<di:waypoint x="2575" y="345" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_f21" bpmnElement="f21">
|
||||||
|
<di:waypoint x="2400" y="645" />
|
||||||
|
<di:waypoint x="2487" y="645" />
|
||||||
|
<di:waypoint x="2487" y="345" />
|
||||||
|
<di:waypoint x="2575" y="345" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_f22" bpmnElement="f22">
|
||||||
|
<di:waypoint x="2225" y="195" />
|
||||||
|
<di:waypoint x="2400" y="195" />
|
||||||
|
<di:waypoint x="2400" y="345" />
|
||||||
|
<di:waypoint x="2575" y="345" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_f23" bpmnElement="f23">
|
||||||
|
<di:waypoint x="2575" y="345" />
|
||||||
|
<di:waypoint x="2750" y="345" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_f24" bpmnElement="f24">
|
||||||
|
<di:waypoint x="2750" y="345" />
|
||||||
|
<di:waypoint x="2925" y="345" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_f25" bpmnElement="f25">
|
||||||
|
<di:waypoint x="2925" y="345" />
|
||||||
|
<di:waypoint x="2750" y="345" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="2777" y="311" width="120" height="30" /></bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_f26" bpmnElement="f26">
|
||||||
|
<di:waypoint x="2925" y="345" />
|
||||||
|
<di:waypoint x="3012" y="345" />
|
||||||
|
<di:waypoint x="3012" y="495" />
|
||||||
|
<di:waypoint x="3100" y="495" />
|
||||||
|
<bpmndi:BPMNLabel><dc:Bounds x="2952" y="311" width="120" height="30" /></bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_f27" bpmnElement="f27">
|
||||||
|
<di:waypoint x="3100" y="495" />
|
||||||
|
<di:waypoint x="3187" y="495" />
|
||||||
|
<di:waypoint x="3187" y="945" />
|
||||||
|
<di:waypoint x="3275" y="945" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_f28" bpmnElement="f28">
|
||||||
|
<di:waypoint x="3275" y="945" />
|
||||||
|
<di:waypoint x="3450" y="945" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_fb" bpmnElement="fb">
|
||||||
|
<di:waypoint x="1875" y="538" />
|
||||||
|
<di:waypoint x="1962" y="538" />
|
||||||
|
<di:waypoint x="1962" y="945" />
|
||||||
|
<di:waypoint x="2050" y="945" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_fb2" bpmnElement="fb2">
|
||||||
|
<di:waypoint x="2050" y="945" />
|
||||||
|
<di:waypoint x="2225" y="945" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="di_mf_bap" bpmnElement="mf_bap">
|
||||||
|
<di:waypoint x="2400" y="688" />
|
||||||
|
<di:waypoint x="2400" y="1060" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
</bpmndi:BPMNDiagram>
|
</bpmndi:BPMNDiagram>
|
||||||
|
|||||||
@@ -1,74 +1,142 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<cmmn:definitions xmlns:cmmn="http://www.omg.org/spec/CMMN/20151109/MODEL"
|
<cmmn:definitions xmlns:cmmn="http://www.omg.org/spec/CMMN/20151109/MODEL"
|
||||||
xmlns:cmmndi="http://www.omg.org/spec/CMMN/20151109/CMMNDI"
|
xmlns:cmmndi="http://www.omg.org/spec/CMMN/20151109/CMMNDI"
|
||||||
xmlns:dc="http://www.omg.org/spec/CMMN/20151109/DC"
|
xmlns:dc="http://www.omg.org/spec/CMMN/20151109/DC"
|
||||||
xmlns:di="http://www.omg.org/spec/CMMN/20151109/DI"
|
xmlns:di="http://www.omg.org/spec/CMMN/20151109/DI"
|
||||||
id="defs_drone_field_response"
|
id="defs_field_response" targetNamespace="http://uapf.dev/lv.civdef.drone-threat-public-address">
|
||||||
targetNamespace="http://uapf.dev/lv.civdef.drone-threat-public-address/cmmn">
|
<cmmn:case id="Case_FieldResponseInvestigation" name="Field Response & Drone-Origin Investigation">
|
||||||
|
<cmmn:casePlanModel id="CasePlan_1" name="Field response and investigation">
|
||||||
<cmmn:case id="Case_DroneIncidentFieldResponse" name="Drone Incident Field Response & Origin Investigation">
|
<cmmn:planItem id="pi_Stage_FieldResponse" definitionRef="Stage_FieldResponse" />
|
||||||
<cmmn:casePlanModel id="cpm_1" name="Field Response & Investigation">
|
<cmmn:planItem id="pi_Stage_OriginInvestigation" definitionRef="Stage_OriginInvestigation">
|
||||||
|
<cmmn:entryCriterion id="ec_pi_Stage_OriginInvestigation" sentryRef="sentry_pi_Stage_OriginInvestigation" />
|
||||||
<cmmn:planItem id="pi_DebrisSearch" definitionRef="HT_DebrisSearch" />
|
</cmmn:planItem>
|
||||||
<cmmn:planItem id="pi_FireSuppression" definitionRef="HT_FireSuppression" />
|
<cmmn:planItem id="pi_Stage_PublicCommunication" definitionRef="Stage_PublicCommunication" />
|
||||||
<cmmn:planItem id="pi_SceneSecurity" definitionRef="HT_SceneSecurity" />
|
<cmmn:planItem id="pi_MS_SiteSafe" definitionRef="MS_SiteSafe">
|
||||||
<cmmn:planItem id="pi_Investigation" definitionRef="Stage_Investigation" />
|
<cmmn:entryCriterion id="ec_pi_MS_SiteSafe" sentryRef="sentry_pi_MS_SiteSafe" />
|
||||||
<cmmn:planItem id="pi_MunicipalQA" definitionRef="HT_MunicipalQA" />
|
</cmmn:planItem>
|
||||||
|
<cmmn:sentry id="sentry_pi_Stage_OriginInvestigation">
|
||||||
<cmmn:planningTable id="pt_case">
|
<cmmn:planItemOnPart id="op_pi_Stage_OriginInvestigation" sourceRef="pi_Stage_FieldResponse">
|
||||||
<cmmn:discretionaryItem id="di_Press" definitionRef="HT_Press" />
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
<cmmn:discretionaryItem id="di_AfterAction" definitionRef="HT_AfterAction" />
|
</cmmn:planItemOnPart>
|
||||||
</cmmn:planningTable>
|
</cmmn:sentry>
|
||||||
|
<cmmn:sentry id="sentry_pi_MS_SiteSafe">
|
||||||
<cmmn:humanTask id="HT_DebrisSearch" name="Localise and search downed-drone crash sites" isBlocking="true" />
|
<cmmn:planItemOnPart id="op_pi_MS_SiteSafe" sourceRef="pi_Stage_FieldResponse">
|
||||||
<cmmn:humanTask id="HT_FireSuppression" name="Site safety and fire suppression" isBlocking="true" />
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
<cmmn:humanTask id="HT_SceneSecurity" name="Scene security and access control" isBlocking="true" />
|
</cmmn:planItemOnPart>
|
||||||
<cmmn:humanTask id="HT_MunicipalQA" name="Handle resident enquiries via municipal commissions" isBlocking="true" />
|
</cmmn:sentry>
|
||||||
<cmmn:humanTask id="HT_Press" name="Press conference and public information update" isBlocking="true" />
|
<cmmn:stage id="Stage_FieldResponse" name="Field response">
|
||||||
<cmmn:humanTask id="HT_AfterAction" name="Cross-institutional after-action review and algorithm revision" isBlocking="true" />
|
<cmmn:planItem id="pi_HT_DebrisLocalisation" definitionRef="HT_DebrisLocalisation" />
|
||||||
|
<cmmn:planItem id="pi_HT_FireSuppression" definitionRef="HT_FireSuppression" />
|
||||||
<cmmn:stage id="Stage_Investigation" name="Origin attribution & investigation">
|
<cmmn:planItem id="pi_HT_SceneSecurity" definitionRef="HT_SceneSecurity" />
|
||||||
<cmmn:planItem id="pi_TechExam" definitionRef="HT_TechExam" />
|
<cmmn:planItem id="pi_HT_CasualtyResponse" definitionRef="HT_CasualtyResponse" />
|
||||||
<cmmn:planItem id="pi_OriginAttribution" definitionRef="HT_OriginAttribution" />
|
<cmmn:planItem id="pi_HT_MunicipalEnquiries" definitionRef="HT_MunicipalEnquiries" />
|
||||||
<cmmn:planItem id="pi_DisinfoMonitor" definitionRef="HT_DisinfoMonitor" />
|
<cmmn:humanTask id="HT_DebrisLocalisation" name="Localise crash / debris site" />
|
||||||
<cmmn:humanTask id="HT_TechExam" name="Technical examination of recovered debris" isBlocking="true" />
|
<cmmn:humanTask id="HT_FireSuppression" name="Fire suppression at impact site" />
|
||||||
<cmmn:humanTask id="HT_OriginAttribution" name="Origin attribution and electronic-warfare diversion analysis" isBlocking="true" />
|
<cmmn:humanTask id="HT_SceneSecurity" name="Establish scene cordon & security" />
|
||||||
<cmmn:humanTask id="HT_DisinfoMonitor" name="Disinformation monitoring and correction" isBlocking="true" />
|
<cmmn:humanTask id="HT_CasualtyResponse" name="Casualty assessment & medical response" />
|
||||||
|
<cmmn:humanTask id="HT_MunicipalEnquiries" name="Handle resident enquiries (112 / municipal)" />
|
||||||
</cmmn:stage>
|
</cmmn:stage>
|
||||||
|
<cmmn:stage id="Stage_OriginInvestigation" name="Drone-origin investigation">
|
||||||
|
<cmmn:planItem id="pi_HT_DebrisCollection" definitionRef="HT_DebrisCollection" />
|
||||||
|
<cmmn:planItem id="pi_HT_TechnicalExam" definitionRef="HT_TechnicalExam" />
|
||||||
|
<cmmn:planItem id="pi_HT_OriginAttribution" definitionRef="HT_OriginAttribution" />
|
||||||
|
<cmmn:planItem id="pi_MS_AttributionComplete" definitionRef="MS_AttributionComplete">
|
||||||
|
<cmmn:entryCriterion id="ec_pi_MS_AttributionComplete" sentryRef="sentry_pi_MS_AttributionComplete" />
|
||||||
|
</cmmn:planItem>
|
||||||
|
<cmmn:sentry id="sentry_pi_MS_AttributionComplete">
|
||||||
|
<cmmn:planItemOnPart id="op_pi_MS_AttributionComplete" sourceRef="pi_HT_OriginAttribution">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
<cmmn:humanTask id="HT_DebrisCollection" name="Collect & catalogue debris" />
|
||||||
|
<cmmn:humanTask id="HT_TechnicalExam" name="Technical examination of the UAV" />
|
||||||
|
<cmmn:humanTask id="HT_OriginAttribution" name="Origin attribution analysis" />
|
||||||
|
<cmmn:milestone id="MS_AttributionComplete" name="Origin attribution complete" />
|
||||||
|
</cmmn:stage>
|
||||||
|
<cmmn:stage id="Stage_PublicCommunication" name="Public communication & after-action">
|
||||||
|
<cmmn:planItem id="pi_HT_DisinfoMonitor" definitionRef="HT_DisinfoMonitor" />
|
||||||
|
<cmmn:planItem id="pi_HT_PressBriefing" definitionRef="HT_PressBriefing" />
|
||||||
|
<cmmn:planItem id="pi_HT_AfterAction" definitionRef="HT_AfterAction" />
|
||||||
|
<cmmn:planItem id="pi_MS_CaseClosed" definitionRef="MS_CaseClosed">
|
||||||
|
<cmmn:entryCriterion id="ec_pi_MS_CaseClosed" sentryRef="sentry_pi_MS_CaseClosed" />
|
||||||
|
</cmmn:planItem>
|
||||||
|
<cmmn:sentry id="sentry_pi_MS_CaseClosed">
|
||||||
|
<cmmn:planItemOnPart id="op_pi_MS_CaseClosed" sourceRef="pi_HT_AfterAction">
|
||||||
|
<cmmn:standardEvent>complete</cmmn:standardEvent>
|
||||||
|
</cmmn:planItemOnPart>
|
||||||
|
</cmmn:sentry>
|
||||||
|
<cmmn:humanTask id="HT_DisinfoMonitor" name="Monitor & counter disinformation" />
|
||||||
|
<cmmn:humanTask id="HT_PressBriefing" name="Public press briefing" />
|
||||||
|
<cmmn:humanTask id="HT_AfterAction" name="Inter-institutional after-action review" />
|
||||||
|
<cmmn:milestone id="MS_CaseClosed" name="Incident case closed" />
|
||||||
|
</cmmn:stage>
|
||||||
|
<cmmn:milestone id="MS_SiteSafe" name="Impact site declared safe" />
|
||||||
</cmmn:casePlanModel>
|
</cmmn:casePlanModel>
|
||||||
</cmmn:case>
|
</cmmn:case>
|
||||||
|
|
||||||
<cmmndi:CMMNDI>
|
<cmmndi:CMMNDI>
|
||||||
<cmmndi:CMMNDiagram id="cmmndi_1" name="Field Response & Investigation">
|
<cmmndi:CMMNDiagram id="cmmndiag">
|
||||||
<cmmndi:CMMNShape id="sh_cpm" cmmnElementRef="cpm_1">
|
<cmmndi:CMMNShape id="di_CasePlan_1" cmmnElementRef="CasePlan_1">
|
||||||
<dc:Bounds x="60" y="40" width="900" height="420" />
|
<dc:Bounds x="30" y="40" width="1340" height="730" />
|
||||||
</cmmndi:CMMNShape>
|
</cmmndi:CMMNShape>
|
||||||
<cmmndi:CMMNShape id="sh_DebrisSearch" cmmnElementRef="pi_DebrisSearch">
|
<cmmndi:CMMNShape id="di_Stage_FieldResponse" cmmnElementRef="Stage_FieldResponse">
|
||||||
<dc:Bounds x="100" y="100" width="160" height="80" />
|
<dc:Bounds x="70" y="110" width="1260" height="190" />
|
||||||
</cmmndi:CMMNShape>
|
</cmmndi:CMMNShape>
|
||||||
<cmmndi:CMMNShape id="sh_FireSuppression" cmmnElementRef="pi_FireSuppression">
|
<cmmndi:CMMNShape id="di_HT_DebrisLocalisation" cmmnElementRef="HT_DebrisLocalisation">
|
||||||
<dc:Bounds x="300" y="100" width="160" height="80" />
|
<dc:Bounds x="110" y="180" width="200" height="74" />
|
||||||
</cmmndi:CMMNShape>
|
</cmmndi:CMMNShape>
|
||||||
<cmmndi:CMMNShape id="sh_SceneSecurity" cmmnElementRef="pi_SceneSecurity">
|
<cmmndi:CMMNShape id="di_HT_FireSuppression" cmmnElementRef="HT_FireSuppression">
|
||||||
<dc:Bounds x="500" y="100" width="160" height="80" />
|
<dc:Bounds x="346" y="180" width="200" height="74" />
|
||||||
</cmmndi:CMMNShape>
|
</cmmndi:CMMNShape>
|
||||||
<cmmndi:CMMNShape id="sh_MunicipalQA" cmmnElementRef="pi_MunicipalQA">
|
<cmmndi:CMMNShape id="di_HT_SceneSecurity" cmmnElementRef="HT_SceneSecurity">
|
||||||
<dc:Bounds x="700" y="100" width="180" height="80" />
|
<dc:Bounds x="582" y="180" width="200" height="74" />
|
||||||
</cmmndi:CMMNShape>
|
</cmmndi:CMMNShape>
|
||||||
<cmmndi:CMMNShape id="sh_Investigation" cmmnElementRef="pi_Investigation">
|
<cmmndi:CMMNShape id="di_HT_CasualtyResponse" cmmnElementRef="HT_CasualtyResponse">
|
||||||
<dc:Bounds x="100" y="230" width="580" height="200" />
|
<dc:Bounds x="818" y="180" width="200" height="74" />
|
||||||
</cmmndi:CMMNShape>
|
</cmmndi:CMMNShape>
|
||||||
<cmmndi:CMMNShape id="sh_TechExam" cmmnElementRef="pi_TechExam">
|
<cmmndi:CMMNShape id="di_HT_MunicipalEnquiries" cmmnElementRef="HT_MunicipalEnquiries">
|
||||||
<dc:Bounds x="130" y="290" width="160" height="80" />
|
<dc:Bounds x="1054" y="180" width="200" height="74" />
|
||||||
</cmmndi:CMMNShape>
|
</cmmndi:CMMNShape>
|
||||||
<cmmndi:CMMNShape id="sh_OriginAttribution" cmmnElementRef="pi_OriginAttribution">
|
<cmmndi:CMMNShape id="di_Stage_OriginInvestigation" cmmnElementRef="Stage_OriginInvestigation">
|
||||||
<dc:Bounds x="320" y="290" width="160" height="80" />
|
<dc:Bounds x="70" y="330" width="1260" height="190" />
|
||||||
</cmmndi:CMMNShape>
|
</cmmndi:CMMNShape>
|
||||||
<cmmndi:CMMNShape id="sh_DisinfoMonitor" cmmnElementRef="pi_DisinfoMonitor">
|
<cmmndi:CMMNShape id="di_HT_DebrisCollection" cmmnElementRef="HT_DebrisCollection">
|
||||||
<dc:Bounds x="510" y="290" width="150" height="80" />
|
<dc:Bounds x="110" y="400" width="200" height="74" />
|
||||||
</cmmndi:CMMNShape>
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="di_HT_TechnicalExam" cmmnElementRef="HT_TechnicalExam">
|
||||||
|
<dc:Bounds x="405" y="400" width="200" height="74" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="di_HT_OriginAttribution" cmmnElementRef="HT_OriginAttribution">
|
||||||
|
<dc:Bounds x="700" y="400" width="200" height="74" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="di_MS_AttributionComplete" cmmnElementRef="MS_AttributionComplete">
|
||||||
|
<dc:Bounds x="995" y="415" width="170" height="44" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="di_Stage_PublicCommunication" cmmnElementRef="Stage_PublicCommunication">
|
||||||
|
<dc:Bounds x="70" y="550" width="1260" height="190" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="di_HT_DisinfoMonitor" cmmnElementRef="HT_DisinfoMonitor">
|
||||||
|
<dc:Bounds x="110" y="620" width="200" height="74" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="di_HT_PressBriefing" cmmnElementRef="HT_PressBriefing">
|
||||||
|
<dc:Bounds x="405" y="620" width="200" height="74" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="di_HT_AfterAction" cmmnElementRef="HT_AfterAction">
|
||||||
|
<dc:Bounds x="700" y="620" width="200" height="74" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="di_MS_CaseClosed" cmmnElementRef="MS_CaseClosed">
|
||||||
|
<dc:Bounds x="995" y="635" width="170" height="44" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNShape id="di_MS_SiteSafe" cmmnElementRef="MS_SiteSafe">
|
||||||
|
<dc:Bounds x="1150" y="130" width="170" height="44" />
|
||||||
|
</cmmndi:CMMNShape>
|
||||||
|
<cmmndi:CMMNEdge id="edge_pi_MS_AttributionComplete" cmmnElementRef="ec_pi_MS_AttributionComplete">
|
||||||
|
<di:waypoint x="800" y="437" />
|
||||||
|
<di:waypoint x="1080" y="437" />
|
||||||
|
</cmmndi:CMMNEdge>
|
||||||
|
<cmmndi:CMMNEdge id="edge_pi_MS_CaseClosed" cmmnElementRef="ec_pi_MS_CaseClosed">
|
||||||
|
<di:waypoint x="800" y="657" />
|
||||||
|
<di:waypoint x="1080" y="657" />
|
||||||
|
</cmmndi:CMMNEdge>
|
||||||
</cmmndi:CMMNDiagram>
|
</cmmndi:CMMNDiagram>
|
||||||
</cmmndi:CMMNDI>
|
</cmmndi:CMMNDI>
|
||||||
|
|
||||||
</cmmn:definitions>
|
</cmmn:definitions>
|
||||||
|
|||||||
@@ -3,93 +3,189 @@
|
|||||||
xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/"
|
xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/"
|
||||||
xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"
|
xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"
|
||||||
xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/"
|
xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/"
|
||||||
id="defs_air_threat_decisions"
|
id="defs_air_threat_decisions" name="Air Threat Decisions"
|
||||||
name="Air Threat Decisions"
|
|
||||||
namespace="http://uapf.dev/lv.civdef.drone-threat-public-address/dmn">
|
namespace="http://uapf.dev/lv.civdef.drone-threat-public-address/dmn">
|
||||||
|
|
||||||
<inputData id="In_ObjectType" name="Object type">
|
<inputData id="In_RadarCrossSection" name="Radar cross-section">
|
||||||
<variable id="v_objectType" name="objectType" typeRef="string" />
|
<variable id="v_radarCrossSection" name="radarCrossSection" typeRef="string" />
|
||||||
|
</inputData>
|
||||||
|
<inputData id="In_EmissionProfile" name="Emission profile">
|
||||||
|
<variable id="v_emissionProfile" name="emissionProfile" typeRef="string" />
|
||||||
|
</inputData>
|
||||||
|
<inputData id="In_VisualConfirmation" name="Visual confirmation">
|
||||||
|
<variable id="v_visualConfirmation" name="visualConfirmation" typeRef="string" />
|
||||||
</inputData>
|
</inputData>
|
||||||
<inputData id="In_AirspaceStatus" name="Airspace entry status">
|
<inputData id="In_AirspaceStatus" name="Airspace entry status">
|
||||||
<variable id="v_airspaceStatus" name="airspaceStatus" typeRef="string" />
|
<variable id="v_airspaceStatus" name="airspaceStatus" typeRef="string" />
|
||||||
</inputData>
|
</inputData>
|
||||||
<inputData id="In_TrajectoryToward" name="Trajectory toward populated area">
|
<inputData id="In_TrajectoryTowardPop" name="Trajectory toward populated area">
|
||||||
<variable id="v_trajectoryToward" name="trajectoryTowardPopulated" typeRef="boolean" />
|
<variable id="v_trajectoryTowardPopulated" name="trajectoryTowardPopulated" typeRef="boolean" />
|
||||||
</inputData>
|
</inputData>
|
||||||
<inputData id="In_DistanceKm" name="Distance to nearest populated area (km)">
|
<inputData id="In_DistanceToPopulatedKm" name="Distance to populated area (km)">
|
||||||
<variable id="v_distanceKm" name="distanceToPopulatedKm" typeRef="number" />
|
<variable id="v_distanceToPopulatedKm" name="distanceToPopulatedKm" typeRef="number" />
|
||||||
</inputData>
|
</inputData>
|
||||||
<inputData id="In_BorderTier" name="Border-proximity tier">
|
<inputData id="In_EstimatedMinutesToPop" name="Est. minutes to populated area">
|
||||||
<variable id="v_borderTier" name="borderProximityTier" typeRef="string" />
|
<variable id="v_estimatedMinutesToPopulated" name="estimatedMinutesToPopulated" typeRef="number" />
|
||||||
</inputData>
|
</inputData>
|
||||||
<inputData id="In_CorridorMunis" name="Predicted corridor municipalities">
|
<inputData id="In_CorridorMunicipalities" name="Predicted corridor municipalities">
|
||||||
<variable id="v_corridorMunis" name="corridorMunicipalities" typeRef="string" />
|
<variable id="v_corridorMunicipalities" name="corridorMunicipalities" typeRef="string" />
|
||||||
|
</inputData>
|
||||||
|
<inputData id="In_BorderProximityTier" name="Border-proximity tier">
|
||||||
|
<variable id="v_borderProximityTier" name="borderProximityTier" typeRef="string" />
|
||||||
</inputData>
|
</inputData>
|
||||||
<inputData id="In_PositiveHostileId" name="Positive hostile identification">
|
<inputData id="In_PositiveHostileId" name="Positive hostile identification">
|
||||||
<variable id="v_posHostileId" name="positiveHostileId" typeRef="boolean" />
|
<variable id="v_positiveHostileId" name="positiveHostileId" typeRef="boolean" />
|
||||||
</inputData>
|
</inputData>
|
||||||
<inputData id="In_OverPopulated" name="Object currently over populated area">
|
<inputData id="In_OverPopulatedArea" name="Object over populated area">
|
||||||
<variable id="v_overPopulated" name="overPopulatedArea" typeRef="boolean" />
|
<variable id="v_overPopulatedArea" name="overPopulatedArea" typeRef="boolean" />
|
||||||
</inputData>
|
</inputData>
|
||||||
<inputData id="In_DebrisClear" name="Debris fall-zone clear">
|
<inputData id="In_DebrisZoneClear" name="Debris fall-zone clear">
|
||||||
<variable id="v_debrisClear" name="debrisZoneClear" typeRef="boolean" />
|
<variable id="v_debrisZoneClear" name="debrisZoneClear" typeRef="boolean" />
|
||||||
</inputData>
|
</inputData>
|
||||||
<inputData id="In_FiringReady" name="Ground firing position ready">
|
<inputData id="In_GroundFiringReady" name="Ground firing position ready">
|
||||||
<variable id="v_firingReady" name="firingPositionReady" typeRef="boolean" />
|
<variable id="v_groundFiringReady" name="groundFiringReady" typeRef="boolean" />
|
||||||
</inputData>
|
</inputData>
|
||||||
<inputData id="In_BapOnStation" name="NATO BAP on station">
|
<inputData id="In_BapOnStation" name="NATO BAP on station">
|
||||||
<variable id="v_bapOnStation" name="bapOnStation" typeRef="boolean" />
|
<variable id="v_bapOnStation" name="bapOnStation" typeRef="boolean" />
|
||||||
</inputData>
|
</inputData>
|
||||||
|
<inputData id="In_ObjectNeutralized" name="Object neutralized / landed">
|
||||||
|
<variable id="v_objectNeutralized" name="objectNeutralized" typeRef="boolean" />
|
||||||
|
</inputData>
|
||||||
|
<inputData id="In_ActiveTracksRemain" name="Active tracks remain">
|
||||||
|
<variable id="v_activeTracksRemain" name="activeTracksRemain" typeRef="boolean" />
|
||||||
|
</inputData>
|
||||||
|
|
||||||
<decision id="Decision_AirThreatSeverity" name="Air threat severity">
|
<decision id="Decision_ObjectClassification" name="Object classification & confidence">
|
||||||
<variable id="v_threatLevel" name="threatLevel" typeRef="string" />
|
<description>Classifies the detected airborne object and assigns a confidence level by fusing radar cross-section, emission profile and visual confirmation. Determines whether the object is treated as a potential civil-defence threat at all.</description>
|
||||||
<informationRequirement id="ir_d1_1"><requiredInput href="#In_ObjectType" /></informationRequirement>
|
<variable id="v_objectClass" name="objectClass" typeRef="string" />
|
||||||
<informationRequirement id="ir_d1_2"><requiredInput href="#In_AirspaceStatus" /></informationRequirement>
|
<informationRequirement id="ir_Decision_ObjectClassification_0"><requiredInput href="#In_RadarCrossSection" /></informationRequirement>
|
||||||
<informationRequirement id="ir_d1_3"><requiredInput href="#In_TrajectoryToward" /></informationRequirement>
|
<informationRequirement id="ir_Decision_ObjectClassification_1"><requiredInput href="#In_EmissionProfile" /></informationRequirement>
|
||||||
<informationRequirement id="ir_d1_4"><requiredInput href="#In_DistanceKm" /></informationRequirement>
|
<informationRequirement id="ir_Decision_ObjectClassification_2"><requiredInput href="#In_VisualConfirmation" /></informationRequirement>
|
||||||
<decisionTable id="dt_d1" hitPolicy="FIRST">
|
<decisionTable id="dt_Decision_ObjectClassification" hitPolicy="FIRST">
|
||||||
<input id="d1_i1" label="Object type">
|
<input id="Decision_ObjectClassification_i0" label="Radar cross-section">
|
||||||
<inputExpression typeRef="string"><text>objectType</text></inputExpression>
|
<inputExpression id="Decision_ObjectClassification_ie0" typeRef="string"><text>radarCrossSection</text></inputExpression>
|
||||||
</input>
|
</input>
|
||||||
<input id="d1_i2" label="Airspace status">
|
<input id="Decision_ObjectClassification_i1" label="Emission profile">
|
||||||
<inputExpression typeRef="string"><text>airspaceStatus</text></inputExpression>
|
<inputExpression id="Decision_ObjectClassification_ie1" typeRef="string"><text>emissionProfile</text></inputExpression>
|
||||||
</input>
|
</input>
|
||||||
<input id="d1_i3" label="Toward populated area">
|
<input id="Decision_ObjectClassification_i2" label="Visual confirmation">
|
||||||
<inputExpression typeRef="boolean"><text>trajectoryTowardPopulated</text></inputExpression>
|
<inputExpression id="Decision_ObjectClassification_ie2" typeRef="string"><text>visualConfirmation</text></inputExpression>
|
||||||
</input>
|
</input>
|
||||||
<input id="d1_i4" label="Distance km">
|
<output id="Decision_ObjectClassification_o0" label="Object class" name="objectClass" typeRef="string" />
|
||||||
<inputExpression typeRef="number"><text>distanceToPopulatedKm</text></inputExpression>
|
<output id="Decision_ObjectClassification_o1" label="Classification confidence" name="classificationConfidence" typeRef="string" />
|
||||||
</input>
|
<rule id="Decision_ObjectClassification_r0">
|
||||||
<output id="d1_o1" label="Threat level" name="threatLevel" typeRef="string" />
|
<description>Positive visual plus a military or EW emission signature: treat as a likely-hostile drone.</description>
|
||||||
<rule id="d1_r1">
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>"unknown","drone"</text></inputEntry>
|
<inputEntry><text>"ew-jamming","military-radar"</text></inputEntry>
|
||||||
<inputEntry><text>"crossed","inside"</text></inputEntry>
|
<inputEntry><text>"positive"</text></inputEntry>
|
||||||
<inputEntry><text>true</text></inputEntry>
|
<outputEntry><text>"drone-hostile-likely"</text></outputEntry>
|
||||||
<inputEntry><text><= 15</text></inputEntry>
|
|
||||||
<outputEntry><text>"high"</text></outputEntry>
|
<outputEntry><text>"high"</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d1_r2">
|
<rule id="Decision_ObjectClassification_r1">
|
||||||
<inputEntry><text>"unknown","drone"</text></inputEntry>
|
<description>Small radar return carrying a comms or EW emission is characteristic of a controlled UAV.</description>
|
||||||
|
<inputEntry><text>"micro","small"</text></inputEntry>
|
||||||
|
<inputEntry><text>"comms","ew-jamming"</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"drone"</text></outputEntry>
|
||||||
|
<outputEntry><text>"high"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_ObjectClassification_r2">
|
||||||
|
<description>Small, slow, emission-silent and visually unconfirmed: treat as a suspected drone pending confirmation.</description>
|
||||||
|
<inputEntry><text>"micro","small"</text></inputEntry>
|
||||||
|
<inputEntry><text>"none"</text></inputEntry>
|
||||||
|
<inputEntry><text>"none","partial"</text></inputEntry>
|
||||||
|
<outputEntry><text>"drone-suspected"</text></outputEntry>
|
||||||
|
<outputEntry><text>"medium"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_ObjectClassification_r3">
|
||||||
|
<description>Medium/large return with a military-radar emission is an identified military aircraft.</description>
|
||||||
|
<inputEntry><text>"medium","large"</text></inputEntry>
|
||||||
|
<inputEntry><text>"military-radar"</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"military-aircraft"</text></outputEntry>
|
||||||
|
<outputEntry><text>"high"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_ObjectClassification_r4">
|
||||||
|
<description>Micro return with no emission and no visual is most likely a bird or radar clutter.</description>
|
||||||
|
<inputEntry><text>"micro"</text></inputEntry>
|
||||||
|
<inputEntry><text>"none"</text></inputEntry>
|
||||||
|
<inputEntry><text>"none"</text></inputEntry>
|
||||||
|
<outputEntry><text>"bird-or-clutter"</text></outputEntry>
|
||||||
|
<outputEntry><text>"low"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_ObjectClassification_r5">
|
||||||
|
<description>Fallback: object cannot be classified with available data.</description>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"unknown"</text></outputEntry>
|
||||||
|
<outputEntry><text>"low"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
</decisionTable>
|
||||||
|
</decision>
|
||||||
|
<decision id="Decision_AirThreatSeverity" name="Air-threat severity">
|
||||||
|
<description>Determines the civil-defence threat level from the classified object, its airspace behaviour and its proximity to people. This is the pivot decision the rest of the model depends on.</description>
|
||||||
|
<variable id="v_threatLevel" name="threatLevel" typeRef="string" />
|
||||||
|
<informationRequirement id="ir_Decision_AirThreatSeverity_0"><requiredDecision href="#Decision_ObjectClassification" /></informationRequirement>
|
||||||
|
<informationRequirement id="ir_Decision_AirThreatSeverity_1"><requiredInput href="#In_AirspaceStatus" /></informationRequirement>
|
||||||
|
<informationRequirement id="ir_Decision_AirThreatSeverity_2"><requiredInput href="#In_TrajectoryTowardPop" /></informationRequirement>
|
||||||
|
<informationRequirement id="ir_Decision_AirThreatSeverity_3"><requiredInput href="#In_DistanceToPopulatedKm" /></informationRequirement>
|
||||||
|
<decisionTable id="dt_Decision_AirThreatSeverity" hitPolicy="FIRST">
|
||||||
|
<input id="Decision_AirThreatSeverity_i0" label="Object class">
|
||||||
|
<inputExpression id="Decision_AirThreatSeverity_ie0" typeRef="string"><text>objectClass</text></inputExpression>
|
||||||
|
</input>
|
||||||
|
<input id="Decision_AirThreatSeverity_i1" label="Airspace status">
|
||||||
|
<inputExpression id="Decision_AirThreatSeverity_ie1" typeRef="string"><text>airspaceStatus</text></inputExpression>
|
||||||
|
</input>
|
||||||
|
<input id="Decision_AirThreatSeverity_i2" label="Toward populated area">
|
||||||
|
<inputExpression id="Decision_AirThreatSeverity_ie2" typeRef="boolean"><text>trajectoryTowardPopulated</text></inputExpression>
|
||||||
|
</input>
|
||||||
|
<input id="Decision_AirThreatSeverity_i3" label="Distance to populated (km)">
|
||||||
|
<inputExpression id="Decision_AirThreatSeverity_ie3" typeRef="number"><text>distanceToPopulatedKm</text></inputExpression>
|
||||||
|
</input>
|
||||||
|
<output id="Decision_AirThreatSeverity_o0" label="Threat level" name="threatLevel" typeRef="string" />
|
||||||
|
<rule id="Decision_AirThreatSeverity_r0">
|
||||||
|
<description>Drone confirmed inside national airspace, closing on people within 10 km: critical.</description>
|
||||||
|
<inputEntry><text>"drone","drone-hostile-likely"</text></inputEntry>
|
||||||
|
<inputEntry><text>"inside"</text></inputEntry>
|
||||||
|
<inputEntry><text>true</text></inputEntry>
|
||||||
|
<inputEntry><text><= 10</text></inputEntry>
|
||||||
|
<outputEntry><text>"critical"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_AirThreatSeverity_r1">
|
||||||
|
<description>Drone inside or having crossed the border, on a trajectory toward people within 25 km: high.</description>
|
||||||
|
<inputEntry><text>"drone","drone-hostile-likely"</text></inputEntry>
|
||||||
<inputEntry><text>"crossed","inside"</text></inputEntry>
|
<inputEntry><text>"crossed","inside"</text></inputEntry>
|
||||||
<inputEntry><text>true</text></inputEntry>
|
<inputEntry><text>true</text></inputEntry>
|
||||||
<inputEntry><text>> 15</text></inputEntry>
|
<inputEntry><text><= 25</text></inputEntry>
|
||||||
<outputEntry><text>"elevated"</text></outputEntry>
|
<outputEntry><text>"high"</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d1_r3">
|
<rule id="Decision_AirThreatSeverity_r2">
|
||||||
<inputEntry><text>"unknown","drone"</text></inputEntry>
|
<description>Drone present in airspace but not tracking toward a populated area: elevated.</description>
|
||||||
|
<inputEntry><text>"drone","drone-suspected","drone-hostile-likely"</text></inputEntry>
|
||||||
<inputEntry><text>"crossed","inside"</text></inputEntry>
|
<inputEntry><text>"crossed","inside"</text></inputEntry>
|
||||||
<inputEntry><text>false</text></inputEntry>
|
<inputEntry><text>false</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<outputEntry><text>"elevated"</text></outputEntry>
|
<outputEntry><text>"elevated"</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d1_r4">
|
<rule id="Decision_AirThreatSeverity_r3">
|
||||||
<inputEntry><text>"unknown","drone"</text></inputEntry>
|
<description>Drone still approaching the border: low — monitor, no public alert yet.</description>
|
||||||
|
<inputEntry><text>"drone","drone-suspected"</text></inputEntry>
|
||||||
<inputEntry><text>"approaching"</text></inputEntry>
|
<inputEntry><text>"approaching"</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<outputEntry><text>"low"</text></outputEntry>
|
<outputEntry><text>"low"</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d1_r5">
|
<rule id="Decision_AirThreatSeverity_r4">
|
||||||
|
<description>Identified military aircraft is handled through air-policing channels, not civil-defence broadcast.</description>
|
||||||
|
<inputEntry><text>"military-aircraft"</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"low"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_AirThreatSeverity_r5">
|
||||||
|
<description>Fallback: no civil-defence air threat.</description>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
@@ -98,81 +194,166 @@
|
|||||||
</rule>
|
</rule>
|
||||||
</decisionTable>
|
</decisionTable>
|
||||||
</decision>
|
</decision>
|
||||||
|
<decision id="Decision_NotificationUrgency" name="Notification urgency & SLA">
|
||||||
<decision id="Decision_CellBroadcastScope" name="Cell-broadcast scope">
|
<description>Sets how fast a public cell-broadcast must be dispatched. The broadcastSlaSeconds output is the contractual deadline whose 40-minute breach in the 7 May 2026 Rezekne incident this whole package exists to prevent.</description>
|
||||||
<variable id="v_broadcastScope" name="broadcastScope" typeRef="string" />
|
<variable id="v_notificationTier" name="notificationTier" typeRef="string" />
|
||||||
<informationRequirement id="ir_d2_1"><requiredDecision href="#Decision_AirThreatSeverity" /></informationRequirement>
|
<informationRequirement id="ir_Decision_NotificationUrgency_0"><requiredDecision href="#Decision_AirThreatSeverity" /></informationRequirement>
|
||||||
<informationRequirement id="ir_d2_2"><requiredInput href="#In_BorderTier" /></informationRequirement>
|
<informationRequirement id="ir_Decision_NotificationUrgency_1"><requiredInput href="#In_EstimatedMinutesToPop" /></informationRequirement>
|
||||||
<informationRequirement id="ir_d2_3"><requiredInput href="#In_CorridorMunis" /></informationRequirement>
|
<decisionTable id="dt_Decision_NotificationUrgency" hitPolicy="FIRST">
|
||||||
<decisionTable id="dt_d2" hitPolicy="FIRST">
|
<input id="Decision_NotificationUrgency_i0" label="Threat level">
|
||||||
<input id="d2_i1" label="Threat level">
|
<inputExpression id="Decision_NotificationUrgency_ie0" typeRef="string"><text>threatLevel</text></inputExpression>
|
||||||
<inputExpression typeRef="string"><text>threatLevel</text></inputExpression>
|
|
||||||
</input>
|
</input>
|
||||||
<input id="d2_i2" label="Border-proximity tier">
|
<input id="Decision_NotificationUrgency_i1" label="Est. minutes to populated area">
|
||||||
<inputExpression typeRef="string"><text>borderProximityTier</text></inputExpression>
|
<inputExpression id="Decision_NotificationUrgency_ie1" typeRef="number"><text>estimatedMinutesToPopulated</text></inputExpression>
|
||||||
</input>
|
</input>
|
||||||
<output id="d2_o1" label="Alert municipalities" name="alertMunicipalities" typeRef="string" />
|
<output id="Decision_NotificationUrgency_o0" label="Notification tier" name="notificationTier" typeRef="string" />
|
||||||
<output id="d2_o2" label="Message template" name="messageTemplate" typeRef="string" />
|
<output id="Decision_NotificationUrgency_o1" label="Broadcast SLA (seconds)" name="broadcastSlaSeconds" typeRef="number" />
|
||||||
<rule id="d2_r1">
|
<rule id="Decision_NotificationUrgency_r0">
|
||||||
<inputEntry><text>"high"</text></inputEntry>
|
<description>Critical threat: public broadcast must leave within 2 minutes.</description>
|
||||||
|
<inputEntry><text>"critical"</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<outputEntry><text>"corridorMunicipalities + all tier-1 border municipalities"</text></outputEntry>
|
<outputEntry><text>"immediate"</text></outputEntry>
|
||||||
<outputEntry><text>"MSG_DRONE_IMMINENT"</text></outputEntry>
|
<outputEntry><text>120</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d2_r2">
|
<rule id="Decision_NotificationUrgency_r1">
|
||||||
|
<description>High threat with people reachable within 15 minutes: broadcast within 3 minutes.</description>
|
||||||
|
<inputEntry><text>"high"</text></inputEntry>
|
||||||
|
<inputEntry><text><= 15</text></inputEntry>
|
||||||
|
<outputEntry><text>"immediate"</text></outputEntry>
|
||||||
|
<outputEntry><text>180</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_NotificationUrgency_r2">
|
||||||
|
<description>High threat with more lead time: broadcast within 5 minutes.</description>
|
||||||
|
<inputEntry><text>"high"</text></inputEntry>
|
||||||
|
<inputEntry><text>> 15</text></inputEntry>
|
||||||
|
<outputEntry><text>"priority"</text></outputEntry>
|
||||||
|
<outputEntry><text>300</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_NotificationUrgency_r3">
|
||||||
|
<description>Elevated threat: broadcast within 10 minutes.</description>
|
||||||
<inputEntry><text>"elevated"</text></inputEntry>
|
<inputEntry><text>"elevated"</text></inputEntry>
|
||||||
<inputEntry><text>"tier1","tier2"</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<outputEntry><text>"corridorMunicipalities"</text></outputEntry>
|
<outputEntry><text>"priority"</text></outputEntry>
|
||||||
<outputEntry><text>"MSG_DRONE_POSSIBLE"</text></outputEntry>
|
<outputEntry><text>600</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d2_r3">
|
<rule id="Decision_NotificationUrgency_r4">
|
||||||
<inputEntry><text>"elevated"</text></inputEntry>
|
<description>Low threat: standard 30-minute advisory window.</description>
|
||||||
<inputEntry><text>"tier3"</text></inputEntry>
|
|
||||||
<outputEntry><text>"corridorMunicipalities"</text></outputEntry>
|
|
||||||
<outputEntry><text>"MSG_AIRSPACE_MONITORING"</text></outputEntry>
|
|
||||||
</rule>
|
|
||||||
<rule id="d2_r4">
|
|
||||||
<inputEntry><text>"low"</text></inputEntry>
|
<inputEntry><text>"low"</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<outputEntry><text>"none - municipal commissions informed only"</text></outputEntry>
|
<outputEntry><text>"standard"</text></outputEntry>
|
||||||
<outputEntry><text>"MSG_NONE"</text></outputEntry>
|
<outputEntry><text>1800</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d2_r5">
|
<rule id="Decision_NotificationUrgency_r5">
|
||||||
<inputEntry><text>"none"</text></inputEntry>
|
<description>No threat: no public broadcast.</description>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<outputEntry><text>"none"</text></outputEntry>
|
<outputEntry><text>"none"</text></outputEntry>
|
||||||
<outputEntry><text>"MSG_NONE"</text></outputEntry>
|
<outputEntry><text>0</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
</decisionTable>
|
||||||
|
</decision>
|
||||||
|
<decision id="Decision_CellBroadcastScope" name="Cell-broadcast scope & message">
|
||||||
|
<description>Selects which municipalities receive the public alert, which message template is used, and the repeat interval. The alert footprint is built explicitly from the predicted corridor so it matches the threat's path rather than a fixed region.</description>
|
||||||
|
<variable id="v_alertMunicipalities" name="alertMunicipalities" typeRef="string" />
|
||||||
|
<informationRequirement id="ir_Decision_CellBroadcastScope_0"><requiredDecision href="#Decision_AirThreatSeverity" /></informationRequirement>
|
||||||
|
<informationRequirement id="ir_Decision_CellBroadcastScope_1"><requiredInput href="#In_CorridorMunicipalities" /></informationRequirement>
|
||||||
|
<informationRequirement id="ir_Decision_CellBroadcastScope_2"><requiredInput href="#In_BorderProximityTier" /></informationRequirement>
|
||||||
|
<decisionTable id="dt_Decision_CellBroadcastScope" hitPolicy="FIRST">
|
||||||
|
<input id="Decision_CellBroadcastScope_i0" label="Threat level">
|
||||||
|
<inputExpression id="Decision_CellBroadcastScope_ie0" typeRef="string"><text>threatLevel</text></inputExpression>
|
||||||
|
</input>
|
||||||
|
<input id="Decision_CellBroadcastScope_i1" label="Border-proximity tier">
|
||||||
|
<inputExpression id="Decision_CellBroadcastScope_ie1" typeRef="string"><text>borderProximityTier</text></inputExpression>
|
||||||
|
</input>
|
||||||
|
<output id="Decision_CellBroadcastScope_o0" label="Alert municipalities" name="alertMunicipalities" typeRef="string" />
|
||||||
|
<output id="Decision_CellBroadcastScope_o1" label="Message template" name="messageTemplate" typeRef="string" />
|
||||||
|
<output id="Decision_CellBroadcastScope_o2" label="Repeat interval (seconds)" name="repeatIntervalSeconds" typeRef="number" />
|
||||||
|
<rule id="Decision_CellBroadcastScope_r0">
|
||||||
|
<description>Critical: alert the predicted corridor plus every tier-1 border municipality; repeat every 2 min.</description>
|
||||||
|
<inputEntry><text>"critical"</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>corridorMunicipalities + ",ALL_TIER1_BORDER"</text></outputEntry>
|
||||||
|
<outputEntry><text>"MSG_DRONE_IMMINENT"</text></outputEntry>
|
||||||
|
<outputEntry><text>120</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_CellBroadcastScope_r1">
|
||||||
|
<description>High: alert the predicted corridor; repeat every 3 min.</description>
|
||||||
|
<inputEntry><text>"high"</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>corridorMunicipalities</text></outputEntry>
|
||||||
|
<outputEntry><text>"MSG_DRONE_IMMINENT"</text></outputEntry>
|
||||||
|
<outputEntry><text>180</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_CellBroadcastScope_r2">
|
||||||
|
<description>Elevated near the border (tier 1-2): possible-drone advisory to the corridor.</description>
|
||||||
|
<inputEntry><text>"elevated"</text></inputEntry>
|
||||||
|
<inputEntry><text>"tier1","tier2"</text></inputEntry>
|
||||||
|
<outputEntry><text>corridorMunicipalities</text></outputEntry>
|
||||||
|
<outputEntry><text>"MSG_DRONE_POSSIBLE"</text></outputEntry>
|
||||||
|
<outputEntry><text>300</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_CellBroadcastScope_r3">
|
||||||
|
<description>Elevated further inland (tier 3): lighter monitoring advisory to the corridor.</description>
|
||||||
|
<inputEntry><text>"elevated"</text></inputEntry>
|
||||||
|
<inputEntry><text>"tier3"</text></inputEntry>
|
||||||
|
<outputEntry><text>corridorMunicipalities</text></outputEntry>
|
||||||
|
<outputEntry><text>"MSG_AIRSPACE_MONITORING"</text></outputEntry>
|
||||||
|
<outputEntry><text>600</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_CellBroadcastScope_r4">
|
||||||
|
<description>Low or no threat: no public broadcast; municipal commissions informed through other channels.</description>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"none"</text></outputEntry>
|
||||||
|
<outputEntry><text>"MSG_NONE"</text></outputEntry>
|
||||||
|
<outputEntry><text>0</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
</decisionTable>
|
</decisionTable>
|
||||||
</decision>
|
</decision>
|
||||||
|
|
||||||
<decision id="Decision_InterceptionAuthorization" name="Interception authorization">
|
<decision id="Decision_InterceptionAuthorization" name="Interception authorization">
|
||||||
<variable id="v_interception" name="interception" typeRef="string" />
|
<description>Authorises or withholds kinetic interception. Engagement is gated first on positive hostile identification and then on civilian and debris safety: absence of a positive hostile ID always yields hold, regardless of threat level.</description>
|
||||||
<informationRequirement id="ir_d3_1"><requiredDecision href="#Decision_AirThreatSeverity" /></informationRequirement>
|
<variable id="v_interceptionDecision" name="interceptionDecision" typeRef="string" />
|
||||||
<informationRequirement id="ir_d3_2"><requiredInput href="#In_PositiveHostileId" /></informationRequirement>
|
<informationRequirement id="ir_Decision_InterceptionAuthorization_0"><requiredDecision href="#Decision_AirThreatSeverity" /></informationRequirement>
|
||||||
<informationRequirement id="ir_d3_3"><requiredInput href="#In_OverPopulated" /></informationRequirement>
|
<informationRequirement id="ir_Decision_InterceptionAuthorization_1"><requiredInput href="#In_PositiveHostileId" /></informationRequirement>
|
||||||
<informationRequirement id="ir_d3_4"><requiredInput href="#In_DebrisClear" /></informationRequirement>
|
<informationRequirement id="ir_Decision_InterceptionAuthorization_2"><requiredInput href="#In_OverPopulatedArea" /></informationRequirement>
|
||||||
<informationRequirement id="ir_d3_5"><requiredInput href="#In_FiringReady" /></informationRequirement>
|
<informationRequirement id="ir_Decision_InterceptionAuthorization_3"><requiredInput href="#In_DebrisZoneClear" /></informationRequirement>
|
||||||
<informationRequirement id="ir_d3_6"><requiredInput href="#In_BapOnStation" /></informationRequirement>
|
<informationRequirement id="ir_Decision_InterceptionAuthorization_4"><requiredInput href="#In_GroundFiringReady" /></informationRequirement>
|
||||||
<decisionTable id="dt_d3" hitPolicy="FIRST">
|
<informationRequirement id="ir_Decision_InterceptionAuthorization_5"><requiredInput href="#In_BapOnStation" /></informationRequirement>
|
||||||
<input id="d3_i1" label="Threat level">
|
<decisionTable id="dt_Decision_InterceptionAuthorization" hitPolicy="FIRST">
|
||||||
<inputExpression typeRef="string"><text>threatLevel</text></inputExpression>
|
<input id="Decision_InterceptionAuthorization_i0" label="Threat level">
|
||||||
|
<inputExpression id="Decision_InterceptionAuthorization_ie0" typeRef="string"><text>threatLevel</text></inputExpression>
|
||||||
</input>
|
</input>
|
||||||
<input id="d3_i2" label="Over populated area">
|
<input id="Decision_InterceptionAuthorization_i1" label="Positive hostile ID">
|
||||||
<inputExpression typeRef="boolean"><text>overPopulatedArea</text></inputExpression>
|
<inputExpression id="Decision_InterceptionAuthorization_ie1" typeRef="boolean"><text>positiveHostileId</text></inputExpression>
|
||||||
</input>
|
</input>
|
||||||
<input id="d3_i3" label="Debris zone clear">
|
<input id="Decision_InterceptionAuthorization_i2" label="Over populated area">
|
||||||
<inputExpression typeRef="boolean"><text>debrisZoneClear</text></inputExpression>
|
<inputExpression id="Decision_InterceptionAuthorization_ie2" typeRef="boolean"><text>overPopulatedArea</text></inputExpression>
|
||||||
</input>
|
</input>
|
||||||
<input id="d3_i4" label="Firing position ready">
|
<input id="Decision_InterceptionAuthorization_i3" label="Debris zone clear">
|
||||||
<inputExpression typeRef="boolean"><text>firingPositionReady</text></inputExpression>
|
<inputExpression id="Decision_InterceptionAuthorization_ie3" typeRef="boolean"><text>debrisZoneClear</text></inputExpression>
|
||||||
</input>
|
</input>
|
||||||
<input id="d3_i5" label="BAP on station">
|
<input id="Decision_InterceptionAuthorization_i4" label="Ground firing ready">
|
||||||
<inputExpression typeRef="boolean"><text>bapOnStation</text></inputExpression>
|
<inputExpression id="Decision_InterceptionAuthorization_ie4" typeRef="boolean"><text>groundFiringReady</text></inputExpression>
|
||||||
</input>
|
</input>
|
||||||
<output id="d3_o1" label="Interception decision" name="interceptionDecision" typeRef="string" />
|
<input id="Decision_InterceptionAuthorization_i5" label="BAP on station">
|
||||||
<output id="d3_o2" label="Rationale code" name="rationaleCode" typeRef="string" />
|
<inputExpression id="Decision_InterceptionAuthorization_ie5" typeRef="boolean"><text>bapOnStation</text></inputExpression>
|
||||||
<rule id="d3_r1">
|
</input>
|
||||||
|
<output id="Decision_InterceptionAuthorization_o0" label="Interception decision" name="interceptionDecision" typeRef="string" />
|
||||||
|
<output id="Decision_InterceptionAuthorization_o1" label="Rationale code" name="rationaleCode" typeRef="string" />
|
||||||
|
<rule id="Decision_InterceptionAuthorization_r0">
|
||||||
|
<description>No positive hostile identification: engagement is never authorised.</description>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>false</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"hold"</text></outputEntry>
|
||||||
|
<outputEntry><text>"R_NO_HOSTILE_ID"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_InterceptionAuthorization_r1">
|
||||||
|
<description>Object over a populated area: kinetic engagement withheld to avoid civilian casualties.</description>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>true</text></inputEntry>
|
<inputEntry><text>true</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
@@ -181,34 +362,42 @@
|
|||||||
<outputEntry><text>"hold"</text></outputEntry>
|
<outputEntry><text>"hold"</text></outputEntry>
|
||||||
<outputEntry><text>"R_CIVILIAN_RISK"</text></outputEntry>
|
<outputEntry><text>"R_CIVILIAN_RISK"</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d3_r2">
|
<rule id="Decision_InterceptionAuthorization_r2">
|
||||||
|
<description>Debris fall-zone not confirmed clear: engagement withheld.</description>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>false</text></inputEntry>
|
|
||||||
<inputEntry><text>false</text></inputEntry>
|
<inputEntry><text>false</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<outputEntry><text>"hold"</text></outputEntry>
|
<outputEntry><text>"hold"</text></outputEntry>
|
||||||
<outputEntry><text>"R_DEBRIS_RISK"</text></outputEntry>
|
<outputEntry><text>"R_DEBRIS_RISK"</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d3_r3">
|
<rule id="Decision_InterceptionAuthorization_r3">
|
||||||
<inputEntry><text>"high","elevated"</text></inputEntry>
|
<description>High/critical threat, hostile-confirmed, safe, ground firing position ready: engage from the ground.</description>
|
||||||
|
<inputEntry><text>"high","critical"</text></inputEntry>
|
||||||
|
<inputEntry><text>true</text></inputEntry>
|
||||||
<inputEntry><text>false</text></inputEntry>
|
<inputEntry><text>false</text></inputEntry>
|
||||||
<inputEntry><text>true</text></inputEntry>
|
<inputEntry><text>true</text></inputEntry>
|
||||||
<inputEntry><text>true</text></inputEntry>
|
<inputEntry><text>true</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<outputEntry><text>"engage"</text></outputEntry>
|
<outputEntry><text>"engage-ground"</text></outputEntry>
|
||||||
<outputEntry><text>"R_GROUND_PGA"</text></outputEntry>
|
<outputEntry><text>"R_GROUND_PGA"</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d3_r4">
|
<rule id="Decision_InterceptionAuthorization_r4">
|
||||||
<inputEntry><text>"high","elevated"</text></inputEntry>
|
<description>High/critical threat, hostile-confirmed, safe, no ground option but BAP on station: hand to NATO BAP.</description>
|
||||||
|
<inputEntry><text>"high","critical"</text></inputEntry>
|
||||||
|
<inputEntry><text>true</text></inputEntry>
|
||||||
<inputEntry><text>false</text></inputEntry>
|
<inputEntry><text>false</text></inputEntry>
|
||||||
<inputEntry><text>true</text></inputEntry>
|
<inputEntry><text>true</text></inputEntry>
|
||||||
<inputEntry><text>false</text></inputEntry>
|
<inputEntry><text>false</text></inputEntry>
|
||||||
<inputEntry><text>true</text></inputEntry>
|
<inputEntry><text>true</text></inputEntry>
|
||||||
<outputEntry><text>"engage"</text></outputEntry>
|
<outputEntry><text>"engage-bap"</text></outputEntry>
|
||||||
<outputEntry><text>"R_BAP_AIR"</text></outputEntry>
|
<outputEntry><text>"R_BAP_AIR"</text></outputEntry>
|
||||||
</rule>
|
</rule>
|
||||||
<rule id="d3_r5">
|
<rule id="Decision_InterceptionAuthorization_r5">
|
||||||
|
<description>Fallback: interception criteria not met.</description>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
<inputEntry><text>-</text></inputEntry>
|
<inputEntry><text>-</text></inputEntry>
|
||||||
@@ -219,61 +408,192 @@
|
|||||||
</rule>
|
</rule>
|
||||||
</decisionTable>
|
</decisionTable>
|
||||||
</decision>
|
</decision>
|
||||||
|
<decision id="Decision_StandDownCriteria" name="Stand-down & all-clear">
|
||||||
|
<description>Determines when the public alert can be lifted and an all-clear cell-broadcast issued. Requires the object to be resolved and no further tracks in the area.</description>
|
||||||
|
<variable id="v_standDownDecision" name="standDownDecision" typeRef="string" />
|
||||||
|
<informationRequirement id="ir_Decision_StandDownCriteria_0"><requiredInput href="#In_ObjectNeutralized" /></informationRequirement>
|
||||||
|
<informationRequirement id="ir_Decision_StandDownCriteria_1"><requiredInput href="#In_ActiveTracksRemain" /></informationRequirement>
|
||||||
|
<decisionTable id="dt_Decision_StandDownCriteria" hitPolicy="FIRST">
|
||||||
|
<input id="Decision_StandDownCriteria_i0" label="Object neutralized / landed">
|
||||||
|
<inputExpression id="Decision_StandDownCriteria_ie0" typeRef="boolean"><text>objectNeutralized</text></inputExpression>
|
||||||
|
</input>
|
||||||
|
<input id="Decision_StandDownCriteria_i1" label="Active tracks remain">
|
||||||
|
<inputExpression id="Decision_StandDownCriteria_ie1" typeRef="boolean"><text>activeTracksRemain</text></inputExpression>
|
||||||
|
</input>
|
||||||
|
<output id="Decision_StandDownCriteria_o0" label="Stand-down decision" name="standDownDecision" typeRef="string" />
|
||||||
|
<output id="Decision_StandDownCriteria_o1" label="All-clear message" name="allClearMessage" typeRef="string" />
|
||||||
|
<rule id="Decision_StandDownCriteria_r0">
|
||||||
|
<description>Object resolved and no further tracks: issue the all-clear.</description>
|
||||||
|
<inputEntry><text>true</text></inputEntry>
|
||||||
|
<inputEntry><text>false</text></inputEntry>
|
||||||
|
<outputEntry><text>"all-clear"</text></outputEntry>
|
||||||
|
<outputEntry><text>"MSG_ALL_CLEAR"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_StandDownCriteria_r1">
|
||||||
|
<description>Tracks still active in the area: maintain the public alert.</description>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>true</text></inputEntry>
|
||||||
|
<outputEntry><text>"maintain-alert"</text></outputEntry>
|
||||||
|
<outputEntry><text>"MSG_NONE"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Decision_StandDownCriteria_r2">
|
||||||
|
<description>Object not yet resolved: maintain the public alert.</description>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<inputEntry><text>-</text></inputEntry>
|
||||||
|
<outputEntry><text>"maintain-alert"</text></outputEntry>
|
||||||
|
<outputEntry><text>"MSG_NONE"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
</decisionTable>
|
||||||
|
</decision>
|
||||||
|
|
||||||
<dmndi:DMNDI>
|
<dmndi:DMNDI>
|
||||||
<dmndi:DMNDiagram id="drd_1">
|
<dmndi:DMNDiagram id="drd_air_threat">
|
||||||
<dmndi:DMNShape id="s_d1" dmnElementRef="Decision_AirThreatSeverity">
|
<dmndi:DMNShape id="s_Decision_ObjectClassification" dmnElementRef="Decision_ObjectClassification">
|
||||||
<dc:Bounds x="360" y="80" width="180" height="80" />
|
<dc:Bounds x="120" y="250" width="200" height="90" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_d2" dmnElementRef="Decision_CellBroadcastScope">
|
<dmndi:DMNShape id="s_Decision_AirThreatSeverity" dmnElementRef="Decision_AirThreatSeverity">
|
||||||
<dc:Bounds x="180" y="240" width="180" height="80" />
|
<dc:Bounds x="470" y="250" width="200" height="90" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_d3" dmnElementRef="Decision_InterceptionAuthorization">
|
<dmndi:DMNShape id="s_Decision_NotificationUrgency" dmnElementRef="Decision_NotificationUrgency">
|
||||||
<dc:Bounds x="540" y="240" width="180" height="80" />
|
<dc:Bounds x="820" y="120" width="200" height="90" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_objtype" dmnElementRef="In_ObjectType">
|
<dmndi:DMNShape id="s_Decision_CellBroadcastScope" dmnElementRef="Decision_CellBroadcastScope">
|
||||||
<dc:Bounds x="120" y="-40" width="140" height="50" />
|
<dc:Bounds x="1170" y="120" width="200" height="90" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_airspace" dmnElementRef="In_AirspaceStatus">
|
<dmndi:DMNShape id="s_Decision_InterceptionAuthorization" dmnElementRef="Decision_InterceptionAuthorization">
|
||||||
<dc:Bounds x="290" y="-40" width="140" height="50" />
|
<dc:Bounds x="820" y="440" width="200" height="90" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_traj" dmnElementRef="In_TrajectoryToward">
|
<dmndi:DMNShape id="s_Decision_StandDownCriteria" dmnElementRef="Decision_StandDownCriteria">
|
||||||
<dc:Bounds x="460" y="-40" width="140" height="50" />
|
<dc:Bounds x="1170" y="440" width="200" height="90" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_dist" dmnElementRef="In_DistanceKm">
|
<dmndi:DMNShape id="s_In_RadarCrossSection" dmnElementRef="In_RadarCrossSection">
|
||||||
<dc:Bounds x="630" y="-40" width="140" height="50" />
|
<dc:Bounds x="40" y="40" width="150" height="55" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_tier" dmnElementRef="In_BorderTier">
|
<dmndi:DMNShape id="s_In_EmissionProfile" dmnElementRef="In_EmissionProfile">
|
||||||
<dc:Bounds x="0" y="380" width="140" height="50" />
|
<dc:Bounds x="210" y="40" width="150" height="55" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_corr" dmnElementRef="In_CorridorMunis">
|
<dmndi:DMNShape id="s_In_VisualConfirmation" dmnElementRef="In_VisualConfirmation">
|
||||||
<dc:Bounds x="160" y="380" width="140" height="50" />
|
<dc:Bounds x="380" y="40" width="150" height="55" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_phid" dmnElementRef="In_PositiveHostileId">
|
<dmndi:DMNShape id="s_In_AirspaceStatus" dmnElementRef="In_AirspaceStatus">
|
||||||
<dc:Bounds x="340" y="380" width="140" height="50" />
|
<dc:Bounds x="550" y="40" width="150" height="55" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_overpop" dmnElementRef="In_OverPopulated">
|
<dmndi:DMNShape id="s_In_TrajectoryTowardPop" dmnElementRef="In_TrajectoryTowardPop">
|
||||||
<dc:Bounds x="500" y="380" width="140" height="50" />
|
<dc:Bounds x="720" y="40" width="150" height="55" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_debris" dmnElementRef="In_DebrisClear">
|
<dmndi:DMNShape id="s_In_DistanceToPopulatedKm" dmnElementRef="In_DistanceToPopulatedKm">
|
||||||
<dc:Bounds x="660" y="380" width="140" height="50" />
|
<dc:Bounds x="890" y="40" width="150" height="55" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_firing" dmnElementRef="In_FiringReady">
|
<dmndi:DMNShape id="s_In_EstimatedMinutesToPop" dmnElementRef="In_EstimatedMinutesToPop">
|
||||||
<dc:Bounds x="820" y="380" width="140" height="50" />
|
<dc:Bounds x="1060" y="40" width="150" height="55" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNShape id="s_in_bap" dmnElementRef="In_BapOnStation">
|
<dmndi:DMNShape id="s_In_CorridorMunicipalities" dmnElementRef="In_CorridorMunicipalities">
|
||||||
<dc:Bounds x="980" y="380" width="140" height="50" />
|
<dc:Bounds x="1230" y="40" width="150" height="55" />
|
||||||
</dmndi:DMNShape>
|
</dmndi:DMNShape>
|
||||||
<dmndi:DMNEdge id="e_ir_d1_1" dmnElementRef="ir_d1_1">
|
<dmndi:DMNShape id="s_In_BorderProximityTier" dmnElementRef="In_BorderProximityTier">
|
||||||
<di:waypoint x="190" y="10" /><di:waypoint x="420" y="80" />
|
<dc:Bounds x="1400" y="40" width="150" height="55" />
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNShape id="s_In_PositiveHostileId" dmnElementRef="In_PositiveHostileId">
|
||||||
|
<dc:Bounds x="40" y="620" width="150" height="55" />
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNShape id="s_In_OverPopulatedArea" dmnElementRef="In_OverPopulatedArea">
|
||||||
|
<dc:Bounds x="210" y="620" width="150" height="55" />
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNShape id="s_In_DebrisZoneClear" dmnElementRef="In_DebrisZoneClear">
|
||||||
|
<dc:Bounds x="380" y="620" width="150" height="55" />
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNShape id="s_In_GroundFiringReady" dmnElementRef="In_GroundFiringReady">
|
||||||
|
<dc:Bounds x="550" y="620" width="150" height="55" />
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNShape id="s_In_BapOnStation" dmnElementRef="In_BapOnStation">
|
||||||
|
<dc:Bounds x="720" y="620" width="150" height="55" />
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNShape id="s_In_ObjectNeutralized" dmnElementRef="In_ObjectNeutralized">
|
||||||
|
<dc:Bounds x="1060" y="620" width="150" height="55" />
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNShape id="s_In_ActiveTracksRemain" dmnElementRef="In_ActiveTracksRemain">
|
||||||
|
<dc:Bounds x="1230" y="620" width="150" height="55" />
|
||||||
|
</dmndi:DMNShape>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_ObjectClassification_0" dmnElementRef="ir_Decision_ObjectClassification_0">
|
||||||
|
<di:waypoint x="115" y="67" />
|
||||||
|
<di:waypoint x="220" y="295" />
|
||||||
</dmndi:DMNEdge>
|
</dmndi:DMNEdge>
|
||||||
<dmndi:DMNEdge id="e_ir_d2_1" dmnElementRef="ir_d2_1">
|
<dmndi:DMNEdge id="e_ir_Decision_ObjectClassification_1" dmnElementRef="ir_Decision_ObjectClassification_1">
|
||||||
<di:waypoint x="400" y="160" /><di:waypoint x="290" y="240" />
|
<di:waypoint x="285" y="67" />
|
||||||
|
<di:waypoint x="220" y="295" />
|
||||||
</dmndi:DMNEdge>
|
</dmndi:DMNEdge>
|
||||||
<dmndi:DMNEdge id="e_ir_d3_1" dmnElementRef="ir_d3_1">
|
<dmndi:DMNEdge id="e_ir_Decision_ObjectClassification_2" dmnElementRef="ir_Decision_ObjectClassification_2">
|
||||||
<di:waypoint x="480" y="160" /><di:waypoint x="610" y="240" />
|
<di:waypoint x="455" y="67" />
|
||||||
|
<di:waypoint x="220" y="295" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_AirThreatSeverity_0" dmnElementRef="ir_Decision_AirThreatSeverity_0">
|
||||||
|
<di:waypoint x="220" y="295" />
|
||||||
|
<di:waypoint x="570" y="295" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_AirThreatSeverity_1" dmnElementRef="ir_Decision_AirThreatSeverity_1">
|
||||||
|
<di:waypoint x="625" y="67" />
|
||||||
|
<di:waypoint x="570" y="295" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_AirThreatSeverity_2" dmnElementRef="ir_Decision_AirThreatSeverity_2">
|
||||||
|
<di:waypoint x="795" y="67" />
|
||||||
|
<di:waypoint x="570" y="295" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_AirThreatSeverity_3" dmnElementRef="ir_Decision_AirThreatSeverity_3">
|
||||||
|
<di:waypoint x="965" y="67" />
|
||||||
|
<di:waypoint x="570" y="295" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_NotificationUrgency_0" dmnElementRef="ir_Decision_NotificationUrgency_0">
|
||||||
|
<di:waypoint x="570" y="295" />
|
||||||
|
<di:waypoint x="920" y="165" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_NotificationUrgency_1" dmnElementRef="ir_Decision_NotificationUrgency_1">
|
||||||
|
<di:waypoint x="1135" y="67" />
|
||||||
|
<di:waypoint x="920" y="165" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_CellBroadcastScope_0" dmnElementRef="ir_Decision_CellBroadcastScope_0">
|
||||||
|
<di:waypoint x="570" y="295" />
|
||||||
|
<di:waypoint x="1270" y="165" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_CellBroadcastScope_1" dmnElementRef="ir_Decision_CellBroadcastScope_1">
|
||||||
|
<di:waypoint x="1305" y="67" />
|
||||||
|
<di:waypoint x="1270" y="165" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_CellBroadcastScope_2" dmnElementRef="ir_Decision_CellBroadcastScope_2">
|
||||||
|
<di:waypoint x="1475" y="67" />
|
||||||
|
<di:waypoint x="1270" y="165" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_InterceptionAuthorization_0" dmnElementRef="ir_Decision_InterceptionAuthorization_0">
|
||||||
|
<di:waypoint x="570" y="295" />
|
||||||
|
<di:waypoint x="920" y="485" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_InterceptionAuthorization_1" dmnElementRef="ir_Decision_InterceptionAuthorization_1">
|
||||||
|
<di:waypoint x="115" y="647" />
|
||||||
|
<di:waypoint x="920" y="485" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_InterceptionAuthorization_2" dmnElementRef="ir_Decision_InterceptionAuthorization_2">
|
||||||
|
<di:waypoint x="285" y="647" />
|
||||||
|
<di:waypoint x="920" y="485" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_InterceptionAuthorization_3" dmnElementRef="ir_Decision_InterceptionAuthorization_3">
|
||||||
|
<di:waypoint x="455" y="647" />
|
||||||
|
<di:waypoint x="920" y="485" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_InterceptionAuthorization_4" dmnElementRef="ir_Decision_InterceptionAuthorization_4">
|
||||||
|
<di:waypoint x="625" y="647" />
|
||||||
|
<di:waypoint x="920" y="485" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_InterceptionAuthorization_5" dmnElementRef="ir_Decision_InterceptionAuthorization_5">
|
||||||
|
<di:waypoint x="795" y="647" />
|
||||||
|
<di:waypoint x="920" y="485" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_StandDownCriteria_0" dmnElementRef="ir_Decision_StandDownCriteria_0">
|
||||||
|
<di:waypoint x="1135" y="647" />
|
||||||
|
<di:waypoint x="1270" y="485" />
|
||||||
|
</dmndi:DMNEdge>
|
||||||
|
<dmndi:DMNEdge id="e_ir_Decision_StandDownCriteria_1" dmnElementRef="ir_Decision_StandDownCriteria_1">
|
||||||
|
<di:waypoint x="1305" y="647" />
|
||||||
|
<di:waypoint x="1270" y="485" />
|
||||||
</dmndi:DMNEdge>
|
</dmndi:DMNEdge>
|
||||||
</dmndi:DMNDiagram>
|
</dmndi:DMNDiagram>
|
||||||
</dmndi:DMNDI>
|
</dmndi:DMNDI>
|
||||||
|
|
||||||
</definitions>
|
</definitions>
|
||||||
|
|||||||
@@ -1,60 +1,33 @@
|
|||||||
# 00 — Incident Chronology: Rēzekne Drone Incident, 7 May 2026
|
# 00 — Incident Chronology (7 May 2026, Rezekne)
|
||||||
|
|
||||||
> Non-normative supporting document. Compiled from public reporting
|
This package is modelled from the **public chronology** of the drone incident
|
||||||
> (LSM / eng.lsm.lv, Apollo, TV3, Meduza, Defense News, The Globe and Mail,
|
over eastern Latvia on the night of 6–7 May 2026. No classified or operational
|
||||||
> Wikipedia "2026 Ukrainian drone incursions into Baltic states"). Times are
|
source was used.
|
||||||
> local (EEST) and approximate where the public record is approximate.
|
|
||||||
|
|
||||||
## Summary
|
## Public-source timeline
|
||||||
|
|
||||||
During the night of 6–7 May 2026, several unmanned aerial vehicles entered
|
| Phase | What happened (public reporting) |
|
||||||
Latvian airspace from the direction of Russia. Two drones came down on Latvian
|
|-------|----------------------------------|
|
||||||
territory; one exploded at a fuel-storage facility in Rēzekne (~40 km from the
|
| Detection | Several unmanned aerial vehicles, assessed as originating from Russian territory, entered Latvian airspace near the eastern border. |
|
||||||
Russian border), damaging four empty oil tanks. No casualties. The drones are
|
| Tracking | NBS surveillance tracked the objects; at least two drones came down on Latvian territory, one near Rezekne. |
|
||||||
assessed as stray Ukrainian long-range drones diverted off course — Ukraine's
|
| Impact | A drone struck near a fuel-storage facility in the Rezekne area; no casualties were publicly reported. |
|
||||||
foreign minister later linked the diversion to Russian electronic-warfare
|
| Public notification | The public cell-broadcast early-warning message reached the Rezekne population **approximately 40 minutes** after the threat was apparent — the central failure this package addresses. |
|
||||||
jamming. The incident triggered a political crisis: the Defence Minister and,
|
| Aftermath | The Ministry of Defence publicly committed to **revising the inter-institutional notification algorithms** so that a public alert is issued without comparable delay. |
|
||||||
days later, the Prime Minister resigned.
|
|
||||||
|
|
||||||
## Timeline
|
## Why this is modelled as a UAPF package
|
||||||
|
|
||||||
| Time (7 May) | Event |
|
The incident is not a technology failure — the cell-broadcast platform worked.
|
||||||
|---|---|
|
It is a **process and decision-rights failure**: the algorithm that converts
|
||||||
| ~03:30 | VUGD receives several 112 calls about a possible fire at the oil-storage facility on Komunāla iela, Rēzekne. |
|
"NBS sees a threat" into "VUGD dispatches a public broadcast" was slow and
|
||||||
| 04:09 | Cell-broadcast warning issued to residents of Ludza and Balvi districts, at NBS request. |
|
under-specified. That is exactly the class of problem UAPF exists to make
|
||||||
| 04:43 | Cell-broadcast warning issued to Rēzekne district — roughly 40 minutes after Ludza/Balvi. Rēzekne city residents report having already heard/seen drones overhead about an hour before receiving the alert. |
|
explicit, inspectable and improvable: a BPMN process, the DMN decisions inside
|
||||||
| ~05:30 | NBS announces that two UAVs have crashed on Latvian territory; NBS, State Police and VUGD units deploy to the sites. |
|
it, the CMMN follow-up case, and the resource bindings that say who does what.
|
||||||
| Morning | One crash site confirmed at the Rēzekne oil-storage base. A second crash site is not yet identified (later associated with the Viļāni area, west of Rēzekne). A possible third drone is believed to have exited Latvian airspace. |
|
|
||||||
| Daytime | Flights restricted up to ~6 km altitude in the eastern border region; commercial aviation unaffected. Schools closed in Rēzekne and Ludza; remote learning in Balvi. French NATO Baltic Air Policing jets scrambled during the alert. |
|
|
||||||
| ~08:20–08:51 | NBS declares the air-threat alert ended for Balvi, Ludza and Rēzekne districts. |
|
|
||||||
| 12:00 | Press conference in Rēzekne (AM / NBS / State Police). |
|
|
||||||
| ~18:00 | Eastern-region flight restrictions lifted. |
|
|
||||||
| Daytime | Government Crisis Management Council convenes. PM Siliņa states the threat is "a consequence of Russia's war in Ukraine" and asks the Ministry of Defence to clarify why cell-broadcast warnings were issued only after the crash was reported. |
|
|
||||||
|
|
||||||
## Aftermath
|
## Scope boundary
|
||||||
|
|
||||||
- **10 May 2026** — Defence Minister Andris Sprūds resigns. He had already
|
In scope: detection → classification → notification decision → broadcast →
|
||||||
survived an April Saeima no-confidence-style vote (43 for dismissal, 50
|
interception authorisation → field response → origin investigation →
|
||||||
against).
|
after-action.
|
||||||
- **~14 May 2026** — Prime Minister Evika Siliņa resigns; the government falls.
|
|
||||||
- The Foreign Ministry summoned Russia's chargé d'affaires; Ukraine's foreign
|
|
||||||
minister later acknowledged the drones were Ukrainian and attributed the
|
|
||||||
diversion to Russian electronic warfare.
|
|
||||||
- The Ministry of Defence committed to **review and improve the public
|
|
||||||
notification / inter-institutional information-exchange algorithms**. The
|
|
||||||
Rēzekne incident was designated a central scenario for the "Pilskalns" civil
|
|
||||||
protection exercise.
|
|
||||||
|
|
||||||
## Prior incidents in the same series (context)
|
Out of scope: NBS internal sensor doctrine, NATO BAP internal procedures,
|
||||||
|
and the criminal investigation, which are referenced only as handoffs.
|
||||||
- **7 September 2024** — A Russian "Shahed"-type drone fell in Gaigalava
|
|
||||||
parish, Rēzekne district. After-action commitments were made then to speed
|
|
||||||
up public notification.
|
|
||||||
- **25 March 2026** — A stray Ukrainian drone crashed in Krāslava district
|
|
||||||
(Dobročina); a parallel drone struck a power-station chimney in Estonia.
|
|
||||||
- **3 May 2026** — Air-threat cell broadcasts in Alūksne, Balvi, Ludza,
|
|
||||||
Rēzekne and Krāslava (~3.5 h); no drone crossed the border.
|
|
||||||
|
|
||||||
The 7 May incident is therefore the **fourth comparable event in ~20 months**,
|
|
||||||
which is why the failure is framed publicly as an algorithm/process failure
|
|
||||||
rather than a one-off.
|
|
||||||
|
|||||||
@@ -1,51 +1,24 @@
|
|||||||
# 01 — Institutional Gap Analysis (AS-IS) and TO-BE Targets
|
# 01 — Institutional Gap Analysis
|
||||||
|
|
||||||
> Non-normative supporting document. This is the analytical core of the package:
|
Gaps identified in the **as-is** algorithm, derived from the public chronology.
|
||||||
> it maps each publicly-reported coordination failure to a specific element of
|
Each gap is addressed by a specific element of this package and is referenced
|
||||||
> the BPMN / DMN / CMMN models, so the revised algorithm can be designed against
|
from `resources/mappings.yaml` and the diagrams.
|
||||||
> a concrete baseline.
|
|
||||||
|
|
||||||
## Why this package exists
|
| ID | Gap (as-is) | Addressed by (to-be) |
|
||||||
|
|----|-------------|----------------------|
|
||||||
|
| **G1** | No explicit object-classification step — "is it a drone, and how sure are we?" was implicit. | `Decision_ObjectClassification` makes class **and confidence** explicit before any threat call. |
|
||||||
|
| **G2** | Public-broadcast authority was a **single point of failure**: one request from NBS Joint Staff was the only trigger, with no timed fallback. | `Task_AuthorizeBroadcast` carries a 3-minute timeout with a proposed escalation to the Crisis Management Centre (KVC). *Not yet institutionally agreed.* |
|
||||||
|
| **G3** | Message wording was composed under time pressure. | `Decision_CellBroadcastScope` selects a **pre-approved template** (`MSG_*`); guardrail GR-4 forbids free-text public messaging. |
|
||||||
|
| **G4** | No bounded, threat-graded **time target** for dispatch — the 40-minute delay had no SLA to breach. | `Decision_NotificationUrgency` outputs `broadcastSlaSeconds`; see `03-notification-timing-sla.md`. |
|
||||||
|
| **G5** | No automatic detection that the SLA had been missed. | Non-interrupting **SLA-breach boundary timer** on `Task_DispatchBroadcast` → `Task_EscalateSla`. |
|
||||||
|
| **G6** | Alert footprint was coarse — not matched to the drones' predicted path. | `Decision_CellBroadcastScope` builds the footprint from `corridorMunicipalities`. |
|
||||||
|
| **G7** | Interception safety criteria were not written down or inspectable. | `Decision_InterceptionAuthorization` gates engagement on positive hostile ID, over-populated-area and debris-zone-clear, in that priority order. |
|
||||||
|
| **G8** | Follow-on civil decisions (school closures, resident enquiries) had no owner. | CMMN stage `Stage_FieldResponse` (`HT_MunicipalEnquiries`); IZM recorded as a consulted party in `02-raci.md`. |
|
||||||
|
|
||||||
After the 7 May 2026 Rēzekne incident the Ministry of Defence stated publicly
|
## Residual / open
|
||||||
that the inter-institutional **information / notification algorithms** must be
|
|
||||||
reviewed and improved. The problem reported by municipalities and crisis-management
|
|
||||||
officials was not a single mistake but a **structural misalignment**: no single,
|
|
||||||
shared, machine-checkable description of who decides what, when, and on which
|
|
||||||
inputs. UAPF exists precisely to hold that description as versioned, reviewable
|
|
||||||
artifacts. This package is the AS-IS baseline.
|
|
||||||
|
|
||||||
## Gap register
|
- **G2 escalation authority** is a *proposal*. Whether KVC may authorise a
|
||||||
|
public broadcast when NBS Joint Staff is unreachable is an institutional and
|
||||||
| # | Reported gap (public record) | Where it lives in the model | TO-BE target |
|
legal question, not a modelling one, and is flagged for review.
|
||||||
|---|---|---|---|
|
- SLA values in `03-notification-timing-sla.md` are **proposed defaults** for
|
||||||
| G1 | Cell-broadcast reached Rēzekne city only after residents had already seen/heard the drones; ~40-min lag vs Ludza/Balvi. | `Task_RequestBroadcast` → `Task_CellBroadcast` | Tighten the trigger so the request is driven by the **predicted corridor**, not by confirmed overflight. `Decision_CellBroadcastScope` already takes `corridorMunicipalities` — make corridor pre-alerting mandatory at `threatLevel = elevated`. |
|
validation against NBS/VUGD operational reality.
|
||||||
| G2 | Single point of failure: the alert fires only on an explicit NBS request. NBS stated the alert was not sent to Rēzekne because the "incident duration was too short"; the Interior Minister stated VUGD was ready but "a clear algorithm was not triggered". | `Task_RequestBroadcast` (documented GAP) | Define an explicit fallback authority and a time-boxed escalation: if NBS does not issue / decline a request within N minutes of a confirmed corridor, a named role (KVC duty) may trigger. Model as a boundary timer event on `Task_RequestBroadcast` in v0.2. |
|
|
||||||
| G3 | Message content too thin — "possible threat" with no nature-of-threat detail; residents phoned municipalities asking whether tanks or drones were coming. | `Decision_CellBroadcastScope` output `messageTemplate` | Replace generic text with typed templates (`MSG_DRONE_IMMINENT`, `MSG_DRONE_POSSIBLE`, `MSG_AIRSPACE_MONITORING`) carrying threat type, recommended action and an information URL. Templates are an output column in the DMN table. |
|
|
||||||
| G4 | No unified action algorithm across institutions; municipalities reported missing communication with state institutions and unclear ownership (AM vs VARAM vs IZM). | `Task_NotifyAgencies`; `resources/mappings.yaml` | A single resource mapping with explicit RACI per element (this package), reviewed jointly. Notification to KVC, IeM and municipal commissions modelled as a **parallel** branch so it cannot be skipped. |
|
|
||||||
| G5 | Information on number/origin/landing sites of the drones was unavailable for ~5 hours. | CMMN `Stage_Investigation` (`HT_TechExam`, `HT_OriginAttribution`) | Make investigation a first-class case stage with explicit milestones and an information-publishing cadence, not an ad-hoc activity. |
|
|
||||||
| G6 | ~3-day delay before clear public acknowledgement of the drones' (Ukrainian) origin created a perception of concealment. | CMMN `HT_OriginAttribution`, `HT_DisinfoMonitor`, `HT_Press` | Decouple "confirm origin" from "inform public": publish what is known on a fixed cadence; disinformation monitoring runs in parallel from the start. |
|
|
||||||
| G7 | Interception not attempted; criteria ("all safety criteria") were not transparent or pre-agreed. | `Decision_InterceptionAuthorization` | Make the safety criteria an explicit, inspectable DMN table (civilian risk, debris fall-zone, positive ID, firing-position readiness, BAP availability) rather than a verbal judgement. |
|
|
||||||
| G8 | School-closure and resident-guidance decisions lacked timely recommendations from IZM. | `Task_LocalResponse` (IZM consulted) | Bind IZM as a consulted resource on `Task_LocalResponse` with a pre-agreed guidance template issued automatically at `threatLevel >= elevated`. |
|
|
||||||
|
|
||||||
## Modelling stance
|
|
||||||
|
|
||||||
- The BPMN / DMN / CMMN in v0.1.0 deliberately model the **AS-IS** algorithm
|
|
||||||
*plus* the minimum corrections needed for it to be internally consistent
|
|
||||||
(parallel notification, typed messages, explicit interception table).
|
|
||||||
- Items requiring a **policy decision** — notably G2 (fallback trigger
|
|
||||||
authority) — are flagged in `docs/02-raci.md` and left as open questions for
|
|
||||||
v0.2; they must not be silently encoded by a process author.
|
|
||||||
- Nothing here is operationally approved. Lifecycle status is `draft`.
|
|
||||||
|
|
||||||
## Open questions for the institutional steward
|
|
||||||
|
|
||||||
1. **G2** — Who is the named fallback authority if NBS does not act within the
|
|
||||||
escalation window, and what is the window length?
|
|
||||||
2. Should cell-broadcast corridor pre-alerting be automatic at
|
|
||||||
`threatLevel = elevated`, or remain a human decision?
|
|
||||||
3. Is the cell-broadcast platform owned operationally by VUGD only, or jointly
|
|
||||||
with VARAM for the early-warning evolution? This changes the `Task_CellBroadcast`
|
|
||||||
binding.
|
|
||||||
4. What is the mandated public-information cadence during an active incident
|
|
||||||
(G5/G6)?
|
|
||||||
|
|||||||
@@ -1,66 +1,26 @@
|
|||||||
# 02 — RACI Matrix
|
# 02 — RACI Matrix
|
||||||
|
|
||||||
> Non-normative supporting document. Human-readable view of the bindings in
|
R = Responsible, A = Accountable, C = Consulted, I = Informed.
|
||||||
> `resources/mappings.yaml`. R = Responsible, A = Accountable, C = Consulted,
|
Bindings in `resources/mappings.yaml` express the **R** column; this matrix
|
||||||
> I = Informed. The machine-readable source of truth is the resources cornerstone.
|
adds the A/C/I context that a single-target binding cannot.
|
||||||
|
|
||||||
## Actors
|
| Activity | NBS Joint Staff | NBS Air Def. | VUGD | State Police | NMPD | Municipal | MoD | KVC | IeM / IZM |
|
||||||
|
|----------|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|
||||||
|
| Classify & assess threat | R/A | I | I | – | – | I | I | C | – |
|
||||||
|
| Determine notification & scope | R/A | – | C | – | – | I | I | C | – |
|
||||||
|
| Authorise public broadcast | R/A | – | I | – | – | I | I | C* | I |
|
||||||
|
| Dispatch cell-broadcast | A | – | R | – | – | I | I | I | I |
|
||||||
|
| Escalate SLA breach | C | – | I | – | – | I | I | R/A | I |
|
||||||
|
| Authorise interception | R/A | C | – | – | – | – | C | I | – |
|
||||||
|
| Execute interception | A | R | – | – | – | – | I | I | – |
|
||||||
|
| Field response | C | – | R | R | R | R | I | A | I |
|
||||||
|
| Origin investigation | R | – | – | C | – | – | A/C | I | I |
|
||||||
|
| Public communication | C | – | – | – | – | I | R/A | C | I |
|
||||||
|
| After-action review | C | C | C | C | C | C | A | R | C |
|
||||||
|
|
||||||
| Code | Institution / system |
|
\* KVC as Consulted today; the proposed G2 fallback would make KVC **R** for
|
||||||
|---|---|
|
authorising the broadcast on NBS Joint Staff timeout.
|
||||||
| NBS-SURV | NBS air surveillance and radar network |
|
|
||||||
| NBS-JS | NBS Joint Staff, operational duty |
|
|
||||||
| NBS-AD | NBS air-defence units (pretgaisa aizsardzība) |
|
|
||||||
| NATO-BAP | NATO Baltic Air Policing mission |
|
|
||||||
| VUGD | VUGD operational duty / 112 |
|
|
||||||
| CB-SYS | Cell-broadcast system (operated by VUGD) |
|
|
||||||
| VP | State Police operational duty |
|
|
||||||
| KVC | Crisis Management Centre |
|
|
||||||
| AM | Ministry of Defence |
|
|
||||||
| IeM | Ministry of the Interior |
|
|
||||||
| VARAM | Ministry of Smart Administration and Regional Development |
|
|
||||||
| IZM | Ministry of Education and Science |
|
|
||||||
| MUN-CP | Municipal civil-protection commissions |
|
|
||||||
| GOV-CC | Government Crisis Management Council |
|
|
||||||
|
|
||||||
## Process steps (BPMN)
|
**Consulted parties not in `mappings.yaml`:** VARAM (cell-broadcast platform
|
||||||
|
policy), IZM (school-closure guidance), the State Border Guard, and the
|
||||||
| Step | A | R | C | I |
|
Government Crisis Management Council (informed at national level).
|
||||||
|---|---|---|---|---|
|
|
||||||
| Classify object & track trajectory | NBS-JS | NBS-SURV | — | — |
|
|
||||||
| Assess air threat severity | NBS-JS | — | — | — |
|
|
||||||
| Determine cell-broadcast scope & message | NBS-JS | — | KVC, VARAM | — |
|
|
||||||
| Issue cell-broadcast request to VUGD | NBS-JS | — | — | — |
|
|
||||||
| Trigger cell broadcast | VUGD | CB-SYS | — | — |
|
|
||||||
| Notify KVC, IeM & municipal commissions | — | NBS-JS | — | KVC, IeM, MUN-CP |
|
|
||||||
| Evaluate interception | NBS-JS | — | AM, NBS-AD, NATO-BAP | — |
|
|
||||||
| Coordinate interception (BAP / PGA) | — | NBS-AD, NATO-BAP | — | — |
|
|
||||||
| Activate local civil-protection response | MUN-CP | VP | IZM | — |
|
|
||||||
| Declare threat ended / all-clear | NBS-JS | CB-SYS | — | — |
|
|
||||||
| Field response & origin investigation (case) | KVC | — | — | — |
|
|
||||||
|
|
||||||
## Case tasks (CMMN)
|
|
||||||
|
|
||||||
| Task | A | R | C |
|
|
||||||
|---|---|---|---|
|
|
||||||
| Localise & search crash sites | — | NBS-JS | VP |
|
|
||||||
| Site safety & fire suppression | — | VUGD | — |
|
|
||||||
| Scene security & access control | — | VP | — |
|
|
||||||
| Resident enquiries via municipal commissions | — | MUN-CP | — |
|
|
||||||
| Technical examination of debris | — | NBS-JS | — |
|
|
||||||
| Origin attribution & EW-diversion analysis | NBS-JS | — | AM |
|
|
||||||
| Disinformation monitoring & correction | — | AM | — |
|
|
||||||
| Press conference / public information | AM | — | KVC |
|
|
||||||
| Cross-institutional after-action review | AM | KVC | — (GOV-CC informed) |
|
|
||||||
|
|
||||||
## Known accountability ambiguities (do not resolve in a process draft)
|
|
||||||
|
|
||||||
- **Cell-broadcast trigger:** "A" sits with NBS-JS for the *request*, with VUGD
|
|
||||||
for *execution*. The public failure (G2) is the gap *between* these two "A"s.
|
|
||||||
A revised algorithm needs an explicit fallback "A" — currently unassigned.
|
|
||||||
- **Cell-broadcast platform stewardship:** assigned here to VUGD; VARAM may hold
|
|
||||||
a co-stewardship role for the early-warning system evolution. Confirm before
|
|
||||||
v0.2.
|
|
||||||
- **Public-information tempo:** "A" for `HT_Press` is AM, but during the 7 May
|
|
||||||
incident the perceived delay (G6) suggests the cadence itself needs an owner
|
|
||||||
and a mandated interval.
|
|
||||||
|
|||||||
46
docs/03-notification-timing-sla.md
Normal file
46
docs/03-notification-timing-sla.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# 03 — Notification Timing & SLA Model
|
||||||
|
|
||||||
|
The 7 May 2026 incident's defining failure was a **~40-minute** gap between a
|
||||||
|
visible air threat and the public cell-broadcast reaching Rezekne. This package
|
||||||
|
treats notification speed as a **first-class, modelled quantity** rather than an
|
||||||
|
implicit expectation.
|
||||||
|
|
||||||
|
## The SLA chain
|
||||||
|
|
||||||
|
1. `Decision_NotificationUrgency` takes `threatLevel` and the estimated minutes
|
||||||
|
until the object could reach people, and outputs:
|
||||||
|
- `notificationTier` — `immediate | priority | standard | none`
|
||||||
|
- `broadcastSlaSeconds` — the **maximum** time allowed from authorisation to
|
||||||
|
confirmed dispatch.
|
||||||
|
2. `Task_DispatchBroadcast` (VUGD) carries a **non-interrupting boundary timer**
|
||||||
|
armed at `broadcastSlaSeconds`.
|
||||||
|
3. If dispatch is not confirmed before the timer fires, `Task_EscalateSla`
|
||||||
|
runs **in parallel** — it does not cancel the broadcast, it escalates the
|
||||||
|
delay to the Crisis Management Centre so a human intervenes.
|
||||||
|
|
||||||
|
## Proposed SLA defaults
|
||||||
|
|
||||||
|
| Threat level | Lead time | Tier | `broadcastSlaSeconds` | Rationale |
|
||||||
|
|--------------|-----------|------|----------------------:|-----------|
|
||||||
|
| critical | any | immediate | 120 | Object inside airspace, closing on people. |
|
||||||
|
| high | ≤ 15 min | immediate | 180 | Little lead time; alert must precede impact. |
|
||||||
|
| high | > 15 min | priority | 300 | Lead time exists; brief verification window. |
|
||||||
|
| elevated | any | priority | 600 | Threat present, not yet tracking toward people. |
|
||||||
|
| low | any | standard | 1800 | Advisory only. |
|
||||||
|
| none | – | none | 0 | No public broadcast. |
|
||||||
|
|
||||||
|
Against these defaults, the Rezekne broadcast (~2400 s) breached even the most
|
||||||
|
lenient non-zero SLA **by an order of magnitude**. Under this model the boundary
|
||||||
|
timer would have fired at 120–180 s and escalated to KVC ~38 minutes earlier.
|
||||||
|
|
||||||
|
## Guardrail
|
||||||
|
|
||||||
|
`broadcastSlaSeconds` is a **hard floor for escalation, not a target for
|
||||||
|
dispatch** (guardrail GR-3). Dispatch should normally be far faster; the SLA is
|
||||||
|
the line past which the absence of a broadcast becomes its own incident.
|
||||||
|
|
||||||
|
## Open for validation
|
||||||
|
|
||||||
|
The table values are **modelling proposals**. They need calibration against
|
||||||
|
real NBS classification timelines and VUGD cell-broadcast dispatch latencies
|
||||||
|
before the package can leave `draft`.
|
||||||
50
docs/04-uapf-ip-integration.md
Normal file
50
docs/04-uapf-ip-integration.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# 04 — UAPF-IP Integration
|
||||||
|
|
||||||
|
How a UAPF-IP (Integration Profile) host runs this package.
|
||||||
|
|
||||||
|
## Profiles
|
||||||
|
|
||||||
|
The manifest declares `uapf-ip-orchestrated` and `uapf-ip-sync-decision`:
|
||||||
|
|
||||||
|
- **orchestrated** — the host executes the BPMN process, calling host
|
||||||
|
capabilities (`task.assign`, `task.complete`, `task.escalate`, `event.emit`,
|
||||||
|
`timer.schedule`) and evaluating DMN decisions at each business-rule task.
|
||||||
|
- **sync-decision** — any of the six decisions can be evaluated standalone, as
|
||||||
|
a synchronous request/response, without running the process.
|
||||||
|
|
||||||
|
## Exposed entrypoints
|
||||||
|
|
||||||
|
`exposure.mcp.exposedEntrypoints` maps the process and each decision to an MCP
|
||||||
|
tool name, e.g. `interception_authorization.evaluate`. A UAPF-IP host with MCP
|
||||||
|
exposure enabled publishes these as callable tools. `runnable: true` permits
|
||||||
|
process execution, not only inspection.
|
||||||
|
|
||||||
|
## Required capabilities
|
||||||
|
|
||||||
|
`requires_capabilities` lists what the host must provide. Beyond the generic
|
||||||
|
task/event capabilities, this package needs:
|
||||||
|
|
||||||
|
- `timer.schedule@1+` — to arm the SLA-breach boundary timer.
|
||||||
|
- `ai.classify@1+`, `ai.complete@1+` — for the advisory threat-assessment agent.
|
||||||
|
- `lv.gov.civdef.air_surveillance_feed@1+`, `lv.gov.civdef.cell_broadcast@1+` —
|
||||||
|
domain capabilities that wrap the NBS surveillance feed and the VUGD
|
||||||
|
cell-broadcast platform.
|
||||||
|
|
||||||
|
A host missing a required capability must refuse to load the package rather
|
||||||
|
than degrade silently.
|
||||||
|
|
||||||
|
## Guardrail enforcement
|
||||||
|
|
||||||
|
Every capability call is checked against `resources/guardrails.yaml` before and
|
||||||
|
after execution. The load-bearing guardrails: AI is advisory only (GR-1), no
|
||||||
|
autonomous use of force (GR-2), the SLA boundary timer may not be disabled
|
||||||
|
(GR-3), and public messaging is human-authored from templates (GR-4). A
|
||||||
|
violation **blocks** the call and is written to the audit trail.
|
||||||
|
|
||||||
|
## Decision/process boundary
|
||||||
|
|
||||||
|
The host owns orchestration, capability brokering, audit and guardrail
|
||||||
|
enforcement. The package owns **only** the logic — process shape, decision
|
||||||
|
tables, case structure and resource bindings. The package contains no
|
||||||
|
credentials; the placeholders in `resources/mappings.yaml` are resolved by the
|
||||||
|
host from its own secret store.
|
||||||
42
docs/05-validation-report.md
Normal file
42
docs/05-validation-report.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# 05 — Validation Report
|
||||||
|
|
||||||
|
Package: `lv.civdef.drone-threat-public-address` v0.3.0
|
||||||
|
Date: 2026-05-18 · Tool: `validate.py`
|
||||||
|
|
||||||
|
## Result: 19 / 19 checks passed
|
||||||
|
|
||||||
|
### Structural
|
||||||
|
- All three cornerstone files (BPMN, DMN, CMMN) are well-formed XML.
|
||||||
|
- All six YAML files parse.
|
||||||
|
- `uapf.yaml` validates against `uapf-manifest.schema.json` (UAPF v2.2.0).
|
||||||
|
|
||||||
|
### Model integrity
|
||||||
|
- BPMN: 26 flow nodes; every `sequenceFlow` source/target resolves.
|
||||||
|
- DMN: exactly 6 decisions; every `informationRequirement` href resolves.
|
||||||
|
- CMMN: 11 human tasks across 3 stages.
|
||||||
|
|
||||||
|
### Quality gates added in v0.3.0 (these are the v0.2.0 defects)
|
||||||
|
- **Every DMN decision carries a `<description>`.** v0.2.0 had none.
|
||||||
|
- **No declared-but-unused decision inputs.** Every `requiredInput` of every
|
||||||
|
decision is used as a decision-table input column or in an output
|
||||||
|
expression. This is the check that proves the v0.2.0 interception defect —
|
||||||
|
`positiveHostileId` declared but never tested — is fixed.
|
||||||
|
- **Every `mappings.yaml` binding resolves to a real diagram element**, and
|
||||||
|
every `targetId` resolves to a declared target. The resource↔process linkage
|
||||||
|
is now machine-checkable.
|
||||||
|
|
||||||
|
## What is *not* validated here
|
||||||
|
|
||||||
|
- **Semantic correctness of the modelled algorithm** — whether these are the
|
||||||
|
right institutions, thresholds and SLAs — is an institutional review
|
||||||
|
question, tracked in `01-institutional-gap-analysis.md`.
|
||||||
|
- **DMN completeness/overlap** of `FIRST`-hit tables is not formally verified;
|
||||||
|
each table ends with a catch-all rule so no input is left without an output.
|
||||||
|
- Diagram interchange (DI) renders cleanly in `dmn-js` / `bpmn-js` / `cmmn-js`;
|
||||||
|
visual review in the target viewer is still recommended.
|
||||||
|
|
||||||
|
## Reproduce
|
||||||
|
|
||||||
|
```
|
||||||
|
python3 validate.py # exits non-zero on any failure
|
||||||
|
```
|
||||||
@@ -1,19 +1,37 @@
|
|||||||
kind: uapf.metadata.lifecycle
|
kind: uapf.metadata.lifecycle
|
||||||
status: draft
|
version: "0.3.0"
|
||||||
created: "2026-05-17T00:00:00Z"
|
|
||||||
lastModified: "2026-05-17T00:00:00Z"
|
package: lv.civdef.drone-threat-public-address
|
||||||
changeHistory:
|
state: draft
|
||||||
- version: "0.2.0"
|
|
||||||
date: "2026-05-17"
|
history:
|
||||||
summary: >-
|
|
||||||
Rebuilt against UAPF specification v2.2.0 SSOT. Corrected cornerstone
|
|
||||||
file extensions, resource-mapping schema, ownership/lifecycle metadata;
|
|
||||||
added policies, UAPF-IP guardrails, MCP exposure and workspace index.
|
|
||||||
author: rihards.gailums
|
|
||||||
- version: "0.1.0"
|
- version: "0.1.0"
|
||||||
date: "2026-05-17"
|
date: "2026-05-17"
|
||||||
summary: >-
|
state: draft
|
||||||
Initial draft modelling the AS-IS notification algorithm and its
|
note: Initial Level-4 package skeleton (BPMN + 3-decision DMN + CMMN).
|
||||||
identified gaps from the public chronology of the 7 May 2026 Rezekne
|
- version: "0.2.0"
|
||||||
drone incident.
|
date: "2026-05-17"
|
||||||
author: rihards.gailums
|
state: draft
|
||||||
|
note: UAPF v2.2.0 manifest alignment; portable .uapf packaging.
|
||||||
|
- version: "0.3.0"
|
||||||
|
date: "2026-05-18"
|
||||||
|
state: draft
|
||||||
|
note: >-
|
||||||
|
Deep rebuild. DMN expanded to 6 decisions with descriptions and a clean
|
||||||
|
DRD; declared-but-unused decision inputs removed (interception now gated
|
||||||
|
on positive hostile ID). BPMN expanded to six institution lanes with a
|
||||||
|
non-interrupting SLA-breach boundary timer. CMMN deepened to three
|
||||||
|
stages. Resource mappings given an element-level legend.
|
||||||
|
|
||||||
|
transitions:
|
||||||
|
draft -> review:
|
||||||
|
requires:
|
||||||
|
- Institutional review of the modelled algorithm by NBS Joint Staff.
|
||||||
|
- Confirmation of the GAP G2 escalation authority (Task_AuthorizeBroadcast).
|
||||||
|
review -> approved:
|
||||||
|
requires:
|
||||||
|
- Sign-off by the Ministry of Defence algorithm-governance authority.
|
||||||
|
|
||||||
|
review:
|
||||||
|
next_review_due: "2026-08-18"
|
||||||
|
open_gaps_ref: docs/01-institutional-gap-analysis.md
|
||||||
|
|||||||
@@ -1,12 +1,37 @@
|
|||||||
kind: uapf.metadata.ownership
|
kind: uapf.metadata.ownership
|
||||||
|
version: "0.3.0"
|
||||||
|
|
||||||
|
package: lv.civdef.drone-threat-public-address
|
||||||
|
|
||||||
owners:
|
owners:
|
||||||
- type: person
|
- type: person
|
||||||
id: rihards.gailums
|
id: rihards.gailums
|
||||||
name: Rihards Gailums
|
role: package-author
|
||||||
contact: rihards.gailums@gmail.com
|
contact: rihards.gailums@gmail.com
|
||||||
role: owner
|
|
||||||
approvers:
|
stewards:
|
||||||
- rihards.gailums
|
- type: role
|
||||||
escalation:
|
id: nbs.joint-staff
|
||||||
primary: rihards.gailums
|
role: process-owner
|
||||||
sla_hours: 72
|
note: >-
|
||||||
|
Accountable for the modelled algorithm in operation. Placeholder pending
|
||||||
|
formal institutional assignment.
|
||||||
|
- type: role
|
||||||
|
id: am.algorithm-governance
|
||||||
|
role: governance-authority
|
||||||
|
note: >-
|
||||||
|
Ministry of Defence — owns revision of the inter-institutional
|
||||||
|
notification algorithm per the public 7 May 2026 commitment.
|
||||||
|
|
||||||
|
classification: OFFICIAL
|
||||||
|
distribution: >-
|
||||||
|
Draft modelling artefact derived entirely from public-source reporting and
|
||||||
|
open civil-protection legislation. Contains no classified or operational
|
||||||
|
data. Endpoints and credentials in resources/ are illustrative placeholders.
|
||||||
|
|
||||||
|
provenance:
|
||||||
|
derived_from: public chronology of the 7 May 2026 Rezekne drone incident
|
||||||
|
not_an_official: >-
|
||||||
|
This package is an independent UAPF modelling demonstrator. It is not an
|
||||||
|
official algorithm of the NBS, VUGD, the Ministry of Defence or any other
|
||||||
|
Latvian state institution.
|
||||||
|
|||||||
@@ -1,22 +1,29 @@
|
|||||||
kind: uapf.policies
|
kind: uapf.metadata.policies
|
||||||
classification:
|
version: "0.3.0"
|
||||||
level: restricted
|
|
||||||
dataCategories:
|
package: lv.civdef.drone-threat-public-address
|
||||||
- civil-defence
|
|
||||||
- national-security
|
audit:
|
||||||
- public-warning
|
decision_logging: required
|
||||||
execution:
|
retention: P3Y
|
||||||
requiresApproval: true
|
records:
|
||||||
approvalRoles:
|
- decision inputs, matched rule id and outputs
|
||||||
- aizsardzibas-ministrija
|
- actor identity and timestamp for every manual authorisation
|
||||||
- krizes-vadibas-centrs
|
- SLA timer arm / fire / clear events
|
||||||
auditRequired: true
|
|
||||||
maxConcurrentExecutions: 1
|
data_protection:
|
||||||
allowedEnvironments:
|
regime: GDPR + Latvian civil-protection law
|
||||||
- development
|
personal_data:
|
||||||
- staging
|
- 112 caller data is processed by VUGD under existing emergency-service basis.
|
||||||
requiredClaims:
|
- OSINT disinformation monitoring is restricted to public posts (guardrail GR-6).
|
||||||
- type: civil-defence-operator
|
data_boundary: EU
|
||||||
delegation:
|
|
||||||
allowAgentDelegation: false
|
access:
|
||||||
maxDelegationDepth: 0
|
package_visibility: OFFICIAL
|
||||||
|
decision_evaluation: NBS Joint Staff and bound targets only
|
||||||
|
amendment_authority: Ministry of Defence algorithm governance
|
||||||
|
|
||||||
|
compliance_refs:
|
||||||
|
- Civil Protection and Disaster Management Law (Latvia)
|
||||||
|
- Cabinet regulations on the early-warning cell-broadcast system
|
||||||
|
- NATO Baltic Air Policing arrangements (interception execution)
|
||||||
|
|||||||
@@ -1,37 +1,61 @@
|
|||||||
# UAPF-IP guardrails policy for the Drone Threat Public Address process.
|
kind: uapf.guardrails
|
||||||
# Loaded by the runtime at session start as an immutable policy snapshot;
|
version: "0.3.0"
|
||||||
# enforced by the host before every capability invocation (see UAPF-IP SPEC §10).
|
|
||||||
|
|
||||||
scope:
|
# UAPF-IP guardrails enforced at every capability call made by a UAPF-IP host
|
||||||
domain: civil-defence
|
# running this package. Guardrails are evaluated before and after capability
|
||||||
classification: restricted
|
# execution; a violation blocks the call and is logged to the audit trail.
|
||||||
legal_basis: national-civil-protection-law
|
|
||||||
|
|
||||||
ai:
|
principles:
|
||||||
allowed_models:
|
- id: GR-1
|
||||||
- claude-opus-4-7
|
name: AI is advisory, never authoritative
|
||||||
- claude-sonnet-4-6
|
rule: >-
|
||||||
forbidden_inputs:
|
AI agents and MCP tools (ai.classify, ai.complete) may only produce
|
||||||
- classified-radar-tracks
|
recommendations. Object classification, threat severity, public-broadcast
|
||||||
- personal-data-of-residents
|
authorisation, interception authorisation and origin attribution must be
|
||||||
- source-identifying-osint
|
confirmed by an accountable human role before any downstream effect.
|
||||||
pii_redactor: required
|
appliesTo: [Decision_ObjectClassification, Decision_AirThreatSeverity,
|
||||||
# AI may never autonomously complete a step in a national public-warning
|
Decision_InterceptionAuthorization, HT_OriginAttribution]
|
||||||
# process; a confidence ceiling of 0 forces human confirmation every time.
|
|
||||||
max_confidence_for_autocomplete: 0.0
|
|
||||||
decisions_ai_may_make_unattended: []
|
|
||||||
decisions_ai_may_recommend:
|
|
||||||
- air_threat_severity
|
|
||||||
- disinformation_classification
|
|
||||||
|
|
||||||
human_oversight:
|
- id: GR-2
|
||||||
required_for:
|
name: No autonomous use of force
|
||||||
- cell_broadcast_dispatch
|
rule: >-
|
||||||
- interception_authorization
|
No capability may move the process to an interception "engage" outcome
|
||||||
- public_communication
|
without a recorded manual authorisation by NBS Joint Staff. The
|
||||||
- incident_closure
|
Decision_InterceptionAuthorization table is decision support only.
|
||||||
reviewer_role: nbs-joint-staff-duty-officer
|
appliesTo: [Task_AuthorizeInterception, Task_GroundEngage, Task_RequestBAP]
|
||||||
|
|
||||||
audit:
|
- id: GR-3
|
||||||
vc_signature_per_step: required
|
name: Notification SLA is a hard floor
|
||||||
retention_years: 10
|
rule: >-
|
||||||
|
broadcastSlaSeconds from Decision_NotificationUrgency is a maximum, not a
|
||||||
|
target. The SLA-breach boundary timer must remain enabled; disabling it
|
||||||
|
is a safeguard removal and must be recorded.
|
||||||
|
appliesTo: [Task_DispatchBroadcast, Boundary_SlaBreach]
|
||||||
|
|
||||||
|
- id: GR-4
|
||||||
|
name: Public messaging is human-authored
|
||||||
|
rule: >-
|
||||||
|
Cell-broadcast and all-clear messages are selected from pre-approved,
|
||||||
|
human-authored templates (MSG_*). Free-text generation of public alert
|
||||||
|
content by an AI agent is prohibited.
|
||||||
|
appliesTo: [Task_DispatchBroadcast, Task_AllClearBroadcast, HT_PressBriefing]
|
||||||
|
|
||||||
|
- id: GR-5
|
||||||
|
name: Auditability
|
||||||
|
rule: >-
|
||||||
|
Every decision evaluation records its inputs, the matched rule id and the
|
||||||
|
output, with actor identity and timestamp, retained per metadata/policies.yaml.
|
||||||
|
appliesTo: ["*"]
|
||||||
|
|
||||||
|
- id: GR-6
|
||||||
|
name: Data minimisation in disinformation monitoring
|
||||||
|
rule: >-
|
||||||
|
The OSINT monitoring tool processes only public posts; it must not ingest
|
||||||
|
or store personal data of identifiable citizens beyond what is required
|
||||||
|
to classify a post.
|
||||||
|
appliesTo: [HT_DisinfoMonitor]
|
||||||
|
|
||||||
|
enforcement:
|
||||||
|
onViolation: block
|
||||||
|
audit: required
|
||||||
|
reviewAuthority: "Ministry of Defence (algorithm governance)"
|
||||||
|
|||||||
@@ -1,268 +1,347 @@
|
|||||||
kind: uapf.resources.mapping
|
kind: uapf.resources.mapping
|
||||||
|
version: "0.3.0"
|
||||||
|
|
||||||
|
# ===========================================================================
|
||||||
|
# HOW TO READ THIS FILE
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Targets — the institutions, systems and agents that execute work in this
|
# UAPF separates the *logic* of a process (the BPMN / DMN / CMMN cornerstones)
|
||||||
# process. Only primary binding targets are listed; consulted/informed parties
|
# from the *resources* that execute it (institutions, systems, AI agents).
|
||||||
# (VARAM, IZM, NATO Baltic Air Policing, the Government Crisis Management
|
# This file is that binding layer.
|
||||||
# Council) are recorded in binding `notes` and in docs/02-raci.md.
|
#
|
||||||
# Endpoints and credentials below are ILLUSTRATIVE placeholders for a draft.
|
# 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:
|
targets:
|
||||||
- id: nbs.air-surveillance
|
- id: nbs.air-surveillance
|
||||||
type: system_api
|
type: system_api
|
||||||
name: NBS air surveillance and radar network
|
name: NBS air-surveillance & radar network
|
||||||
description: Detection and tracking feed for airborne objects near the eastern border.
|
description: Detection and tracking feed for airborne objects near the eastern border.
|
||||||
capabilities:
|
capabilities: [lv.gov.civdef.air_surveillance_feed]
|
||||||
- lv.gov.civdef.air_surveillance_feed
|
|
||||||
endpoint: "https://surveillance.mil.lv/api/v1"
|
endpoint: "https://surveillance.mil.lv/api/v1"
|
||||||
authentication:
|
authentication: {method: mtls}
|
||||||
method: mtls
|
availability: {schedule: always, timezone: Europe/Riga}
|
||||||
availability:
|
|
||||||
schedule: always
|
|
||||||
timezone: Europe/Riga
|
|
||||||
|
|
||||||
- id: nbs.joint-staff
|
- id: nbs.joint-staff
|
||||||
type: human_role
|
type: human_role
|
||||||
name: NBS Joint Staff (Apvienotais stabs), operational duty
|
name: NBS Joint Staff (Apvienotais stabs), operational duty
|
||||||
description: Holds threat-classification and notification-request authority.
|
description: >-
|
||||||
availability:
|
Holds air-threat classification, public-notification request and
|
||||||
schedule: always
|
interception authorisation authority. The decision owner of this process.
|
||||||
timezone: Europe/Riga
|
availability: {schedule: always, timezone: Europe/Riga}
|
||||||
|
|
||||||
- id: nbs.air-defence
|
- id: nbs.air-defence
|
||||||
type: human_role
|
type: human_role
|
||||||
name: NBS air-defence units (pretgaisa aizsardziba)
|
name: NBS air-defence units (pretgaisa aizsardziba)
|
||||||
description: Ground air-defence; coordinates interception, including with NATO Baltic Air Policing.
|
description: Ground-based air defence; executes or coordinates interception.
|
||||||
|
|
||||||
- id: vugd.duty
|
- id: vugd.duty
|
||||||
type: human_role
|
type: human_role
|
||||||
name: VUGD operational duty / 112 (State Fire and Rescue Service)
|
name: VUGD operational duty / 112 (State Fire and Rescue Service)
|
||||||
description: Receives 112 calls and executes site fire and rescue response.
|
description: Receives 112 calls; executes site fire and rescue response.
|
||||||
|
|
||||||
- id: vugd.cell-broadcast
|
- id: vugd.cell-broadcast
|
||||||
type: system_api
|
type: system_api
|
||||||
name: Cell-broadcast system (sunu apraide), operated by VUGD
|
name: Cell-broadcast system (sunu apraide), operated by VUGD
|
||||||
description: Public early-warning cell-broadcast platform.
|
description: >-
|
||||||
capabilities:
|
Public early-warning cell-broadcast platform. The 40-minute dispatch
|
||||||
- lv.gov.civdef.cell_broadcast
|
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"
|
endpoint: "https://cb.vugd.gov.lv/api/v1"
|
||||||
authentication:
|
authentication: {method: api_key, configRef: secrets/vugd-cell-broadcast}
|
||||||
method: api_key
|
availability: {schedule: always, timezone: Europe/Riga}
|
||||||
configRef: secrets/vugd-cell-broadcast
|
|
||||||
availability:
|
|
||||||
schedule: always
|
|
||||||
timezone: Europe/Riga
|
|
||||||
|
|
||||||
- id: vp.duty
|
- id: vp.duty
|
||||||
type: human_role
|
type: human_role
|
||||||
name: State Police (Valsts policija) operational duty
|
name: State Police (Valsts policija) operational duty
|
||||||
description: Scene security, access control and public order at incident sites.
|
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
|
- id: kvc
|
||||||
type: human_role
|
type: human_role
|
||||||
name: Crisis Management Centre (Krizes vadibas centrs)
|
name: Crisis Management Centre (Krizes vadibas centrs)
|
||||||
description: Cross-institutional crisis coordination and after-action review.
|
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
|
- id: am
|
||||||
type: human_role
|
type: human_role
|
||||||
name: Ministry of Defence (Aizsardzibas ministrija)
|
name: Ministry of Defence (Aizsardzibas ministrija)
|
||||||
description: Public communication, origin attribution oversight and algorithm governance.
|
description: Public communication, origin attribution oversight, algorithm governance.
|
||||||
|
|
||||||
- id: municipal.civil-protection
|
- id: municipal.civil-protection
|
||||||
type: human_role
|
type: human_role
|
||||||
name: Municipal civil-protection commissions (cooperation territories)
|
name: Municipal civil-protection commissions (cooperation territories)
|
||||||
description: Local civil-protection response and resident enquiry handling.
|
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
|
- id: agent.threat-assessment
|
||||||
type: ai_agent
|
type: ai_agent
|
||||||
name: Civil-defence threat-assessment assistant
|
name: Civil-defence threat-assessment assistant
|
||||||
description: AI assistant that recommends air-threat severity; advisory only.
|
description: >-
|
||||||
capabilities:
|
AI assistant that recommends object classification and air-threat
|
||||||
- ai.classify
|
severity. Advisory only; never authorises action (see guardrails).
|
||||||
- ai.complete
|
capabilities: [ai.classify, ai.complete]
|
||||||
endpoint: "mcp://agents/civdef-threat-assessment"
|
endpoint: "mcp://agents/civdef-threat-assessment"
|
||||||
authentication:
|
authentication: {method: did}
|
||||||
method: did
|
|
||||||
|
|
||||||
- id: mcp.osint-monitor
|
- id: mcp.osint-monitor
|
||||||
type: mcp_tool
|
type: mcp_tool
|
||||||
name: OSINT / disinformation monitoring MCP tool
|
name: OSINT / disinformation monitoring MCP tool
|
||||||
description: MCP tool that surfaces and classifies disinformation about the incident.
|
description: Surfaces and classifies disinformation about the incident.
|
||||||
capabilities:
|
capabilities: [ai.classify]
|
||||||
- ai.classify
|
|
||||||
endpoint: "mcp://lv-civdef/osint-monitor"
|
endpoint: "mcp://lv-civdef/osint-monitor"
|
||||||
authentication:
|
authentication: {method: oauth2, configRef: secrets/osint-monitor-oauth}
|
||||||
method: oauth2
|
|
||||||
configRef: secrets/osint-monitor-oauth
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
# Bindings — each process / decision / case element bound to exactly one
|
|
||||||
# primary target. mode: manual = human only, assisted = AI suggests / human
|
|
||||||
# approves, autonomous = system executes, supervised = system executes with
|
|
||||||
# monitoring.
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
bindings:
|
bindings:
|
||||||
# --- BPMN process tasks ---
|
|
||||||
- source:
|
# ---- BPMN process tasks ----
|
||||||
type: bpmn.task
|
- element: "bpmn.task:Task_TrackObject"
|
||||||
ref: "Task_Classify"
|
label: "Establish & maintain object track"
|
||||||
targetId: nbs.air-surveillance
|
targetId: nbs.air-surveillance
|
||||||
mode: supervised
|
mode: supervised
|
||||||
requiredCapabilities:
|
requiredCapabilities: [lv.gov.civdef.air_surveillance_feed]
|
||||||
- lv.gov.civdef.air_surveillance_feed
|
contract: {timeout: "continuous"}
|
||||||
contract:
|
|
||||||
timeout: "60s"
|
|
||||||
notes: "NBS Joint Staff supervises classification of the surveillance feed."
|
|
||||||
|
|
||||||
- source:
|
- element: "bpmn.task:Task_ClassifyObject"
|
||||||
type: bpmn.task
|
label: "Classify object [Object classification]"
|
||||||
ref: "Task_RequestBroadcast"
|
|
||||||
targetId: nbs.joint-staff
|
|
||||||
mode: manual
|
|
||||||
contract:
|
|
||||||
timeout: "5m"
|
|
||||||
fallback:
|
|
||||||
escalationPath:
|
|
||||||
- kvc
|
|
||||||
onTimeout: escalate
|
|
||||||
notes: >-
|
|
||||||
GAP G2: in the AS-IS algorithm this request is the single trigger. The
|
|
||||||
escalation path to KVC is a proposed v0.3 fallback authority, not yet
|
|
||||||
institutionally agreed.
|
|
||||||
|
|
||||||
- source:
|
|
||||||
type: bpmn.task
|
|
||||||
ref: "Task_CellBroadcast"
|
|
||||||
targetId: vugd.cell-broadcast
|
|
||||||
mode: autonomous
|
|
||||||
requiredCapabilities:
|
|
||||||
- lv.gov.civdef.cell_broadcast
|
|
||||||
contract:
|
|
||||||
timeout: "30s"
|
|
||||||
retries:
|
|
||||||
maxAttempts: 2
|
|
||||||
backoffMs: 2000
|
|
||||||
notes: "VUGD operational duty owns the platform; dispatch is automated on request."
|
|
||||||
|
|
||||||
- source:
|
|
||||||
type: bpmn.task
|
|
||||||
ref: "Task_NotifyAgencies"
|
|
||||||
targetId: nbs.joint-staff
|
|
||||||
mode: assisted
|
|
||||||
notes: >-
|
|
||||||
Parallel notification to KVC, IeM and municipal civil-protection
|
|
||||||
commissions. KVC, IeM and municipalities are informed parties.
|
|
||||||
|
|
||||||
- source:
|
|
||||||
type: bpmn.task
|
|
||||||
ref: "Task_CoordBAP"
|
|
||||||
targetId: nbs.air-defence
|
|
||||||
mode: manual
|
|
||||||
notes: >-
|
|
||||||
NBS air-defence coordinates the response; air interception is executed by
|
|
||||||
NATO Baltic Air Policing per Decision_InterceptionAuthorization rationale
|
|
||||||
R_BAP_AIR. NATO BAP is an external party reached through this binding.
|
|
||||||
|
|
||||||
- source:
|
|
||||||
type: bpmn.task
|
|
||||||
ref: "Task_LocalResponse"
|
|
||||||
targetId: municipal.civil-protection
|
|
||||||
mode: manual
|
|
||||||
notes: >-
|
|
||||||
State Police support scene response; the Ministry of Education and
|
|
||||||
Science (IZM) is consulted for school-closure guidance (GAP G8).
|
|
||||||
|
|
||||||
- source:
|
|
||||||
type: bpmn.task
|
|
||||||
ref: "Task_AllClear"
|
|
||||||
targetId: vugd.cell-broadcast
|
|
||||||
mode: autonomous
|
|
||||||
contract:
|
|
||||||
timeout: "30s"
|
|
||||||
notes: "All-clear broadcast issued on NBS Joint Staff declaration."
|
|
||||||
|
|
||||||
# --- DMN decisions ---
|
|
||||||
- source:
|
|
||||||
type: dmn.decision
|
|
||||||
ref: "Decision_AirThreatSeverity"
|
|
||||||
targetId: agent.threat-assessment
|
targetId: agent.threat-assessment
|
||||||
mode: assisted
|
mode: assisted
|
||||||
requiredCapabilities:
|
requiredCapabilities: [ai.classify]
|
||||||
- ai.classify
|
notes: "AI proposes the object class; NBS Air Surveillance confirms."
|
||||||
notes: "AI recommends severity; NBS Joint Staff confirms. Advisory only per guardrails."
|
|
||||||
|
|
||||||
- source:
|
- element: "bpmn.task:Task_AssessSeverity"
|
||||||
type: dmn.decision
|
label: "Assess air-threat severity [Air-threat severity]"
|
||||||
ref: "Decision_CellBroadcastScope"
|
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
|
targetId: nbs.joint-staff
|
||||||
mode: manual
|
mode: manual
|
||||||
notes: "VARAM consulted on the cell-broadcast platform; message templates are typed (GAP G3)."
|
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.
|
||||||
|
|
||||||
- source:
|
- element: "bpmn.task:Task_DispatchBroadcast"
|
||||||
type: dmn.decision
|
label: "Dispatch public cell-broadcast"
|
||||||
ref: "Decision_InterceptionAuthorization"
|
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
|
targetId: nbs.joint-staff
|
||||||
mode: manual
|
mode: manual
|
||||||
notes: "Safety criteria made explicit and inspectable (GAP G7)."
|
notes: "Decision logic gates engagement on positive hostile ID and safety (GAP G7)."
|
||||||
|
|
||||||
# --- CMMN case human tasks ---
|
- element: "bpmn.task:Task_GroundEngage"
|
||||||
- source:
|
label: "Ground air-defence engagement"
|
||||||
type: cmmn.humanTask
|
targetId: nbs.air-defence
|
||||||
ref: "HT_DebrisSearch"
|
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
|
targetId: nbs.joint-staff
|
||||||
mode: manual
|
mode: manual
|
||||||
notes: "State Police support crash-site localisation."
|
notes: "Evaluated as decision support; the engage outcome still requires manual command authority."
|
||||||
|
|
||||||
- source:
|
- element: "dmn.decision:Decision_StandDownCriteria"
|
||||||
type: cmmn.humanTask
|
label: "Stand-down & all-clear"
|
||||||
ref: "HT_FireSuppression"
|
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
|
targetId: vugd.duty
|
||||||
mode: manual
|
mode: manual
|
||||||
|
|
||||||
- source:
|
- element: "cmmn.humanTask:HT_SceneSecurity"
|
||||||
type: cmmn.humanTask
|
label: "Establish scene cordon & security"
|
||||||
ref: "HT_SceneSecurity"
|
|
||||||
targetId: vp.duty
|
targetId: vp.duty
|
||||||
mode: manual
|
mode: manual
|
||||||
|
|
||||||
- source:
|
- element: "cmmn.humanTask:HT_CasualtyResponse"
|
||||||
type: cmmn.humanTask
|
label: "Casualty assessment & medical response"
|
||||||
ref: "HT_MunicipalQA"
|
targetId: nmpd.duty
|
||||||
|
mode: manual
|
||||||
|
|
||||||
|
- element: "cmmn.humanTask:HT_MunicipalEnquiries"
|
||||||
|
label: "Handle resident enquiries (112 / municipal)"
|
||||||
targetId: municipal.civil-protection
|
targetId: municipal.civil-protection
|
||||||
mode: manual
|
mode: manual
|
||||||
|
|
||||||
- source:
|
- element: "cmmn.humanTask:HT_DebrisCollection"
|
||||||
type: cmmn.humanTask
|
label: "Collect & catalogue debris"
|
||||||
ref: "HT_TechExam"
|
|
||||||
targetId: nbs.joint-staff
|
targetId: nbs.joint-staff
|
||||||
mode: manual
|
mode: manual
|
||||||
|
|
||||||
- source:
|
- element: "cmmn.humanTask:HT_TechnicalExam"
|
||||||
type: cmmn.humanTask
|
label: "Technical examination of the UAV"
|
||||||
ref: "HT_OriginAttribution"
|
|
||||||
targetId: nbs.joint-staff
|
targetId: nbs.joint-staff
|
||||||
mode: assisted
|
mode: assisted
|
||||||
notes: "Ministry of Defence consulted; AI may assist analysis but not attribute autonomously."
|
requiredCapabilities: [ai.classify]
|
||||||
|
notes: "AI may assist component analysis; conclusions are human-confirmed."
|
||||||
|
|
||||||
- source:
|
- element: "cmmn.humanTask:HT_OriginAttribution"
|
||||||
type: cmmn.humanTask
|
label: "Origin attribution analysis"
|
||||||
ref: "HT_DisinfoMonitor"
|
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
|
targetId: mcp.osint-monitor
|
||||||
mode: assisted
|
mode: assisted
|
||||||
requiredCapabilities:
|
requiredCapabilities: [ai.classify]
|
||||||
- ai.classify
|
notes: "Disinformation surfaced via MCP tool; a human reviews before any correction."
|
||||||
notes: "Disinformation surfaced and classified via MCP tool; human reviews before correction."
|
|
||||||
|
|
||||||
- source:
|
- element: "cmmn.humanTask:HT_PressBriefing"
|
||||||
type: cmmn.humanTask
|
label: "Public press briefing"
|
||||||
ref: "HT_Press"
|
|
||||||
targetId: am
|
targetId: am
|
||||||
mode: manual
|
mode: manual
|
||||||
notes: "KVC consulted; public communication requires human oversight per guardrails."
|
notes: "KVC consulted; public communication requires human authorship per guardrails."
|
||||||
|
|
||||||
- source:
|
- element: "cmmn.humanTask:HT_AfterAction"
|
||||||
type: cmmn.humanTask
|
label: "Inter-institutional after-action review"
|
||||||
ref: "HT_AfterAction"
|
|
||||||
targetId: kvc
|
targetId: kvc
|
||||||
mode: manual
|
mode: manual
|
||||||
notes: "Ministry of Defence accountable; Government Crisis Management Council informed."
|
notes: "Ministry of Defence accountable; feeds algorithm revision."
|
||||||
|
|||||||
71
uapf.yaml
71
uapf.yaml
@@ -2,56 +2,85 @@ kind: uapf.package
|
|||||||
id: lv.civdef.drone-threat-public-address
|
id: lv.civdef.drone-threat-public-address
|
||||||
name: Drone Threat Public Address & Citizen Notification
|
name: Drone Threat Public Address & Citizen Notification
|
||||||
description: >-
|
description: >-
|
||||||
Level-4 process package modelling the cross-institutional algorithm for
|
Level-4 UAPF process package modelling the cross-institutional algorithm by
|
||||||
detecting an unmanned-aerial-vehicle (drone) threat over Latvian airspace,
|
which Latvia detects an unmanned-aerial-vehicle (drone) threat over national
|
||||||
deciding on and triggering public cell-broadcast notification, coordinating
|
airspace, decides on and dispatches a public cell-broadcast within a bounded
|
||||||
interception, and conducting field response and origin investigation.
|
notification SLA, authorises and coordinates interception, and conducts field
|
||||||
Derived from the public chronology of the 7 May 2026 Rezekne drone incident
|
response and drone-origin investigation. Derived from the public chronology
|
||||||
and the Ministry of Defence commitment to revise the inter-institutional
|
of the 7 May 2026 Rezekne drone incident and the Ministry of Defence
|
||||||
notification algorithms.
|
commitment to revise the inter-institutional notification algorithms. This is
|
||||||
|
an independent modelling demonstrator, not an official state algorithm.
|
||||||
level: 4
|
level: 4
|
||||||
version: "0.2.0"
|
version: "0.3.0"
|
||||||
includes: []
|
includes: []
|
||||||
dependencies: {}
|
dependencies: {}
|
||||||
|
|
||||||
cornerstones:
|
cornerstones:
|
||||||
bpmn: true
|
bpmn: true
|
||||||
dmn: true
|
dmn: true
|
||||||
cmmn: true
|
cmmn: true
|
||||||
resources: true
|
resources: true
|
||||||
|
|
||||||
paths:
|
paths:
|
||||||
bpmn: bpmn
|
bpmn: bpmn
|
||||||
dmn: dmn
|
dmn: dmn
|
||||||
cmmn: cmmn
|
cmmn: cmmn
|
||||||
resources: resources
|
resources: resources
|
||||||
metadata: metadata
|
metadata: metadata
|
||||||
|
|
||||||
artifacts:
|
artifacts:
|
||||||
bpmn:
|
bpmn:
|
||||||
- path: bpmn/drone-threat-public-address.bpmn
|
- path: bpmn/drone-threat-public-address.bpmn
|
||||||
role: primary-process
|
role: primary-process
|
||||||
description: End-to-end detection, notification, interception and field-response flow.
|
description: >-
|
||||||
|
End-to-end detection, classification, public notification, interception
|
||||||
|
and field-response flow across six institution lanes, with a
|
||||||
|
non-interrupting SLA-breach boundary timer on the cell-broadcast task.
|
||||||
dmn:
|
dmn:
|
||||||
- path: dmn/air-threat-decisions.dmn
|
- path: dmn/air-threat-decisions.dmn
|
||||||
role: decision-model
|
role: decision-model
|
||||||
description: Three decisions — air-threat severity, cell-broadcast scope, interception authorization.
|
description: >-
|
||||||
|
Six chained, individually documented decisions — object classification,
|
||||||
|
air-threat severity, notification urgency & SLA, cell-broadcast scope,
|
||||||
|
interception authorization, and stand-down criteria.
|
||||||
cmmn:
|
cmmn:
|
||||||
- path: cmmn/field-response-investigation.cmmn
|
- path: cmmn/field-response-investigation.cmmn
|
||||||
role: case-model
|
role: case-model
|
||||||
description: Discretionary field response and drone-origin investigation case.
|
description: >-
|
||||||
|
Discretionary field-response, drone-origin investigation and public
|
||||||
|
communication case, structured as three stages with entry sentries.
|
||||||
resources:
|
resources:
|
||||||
- path: resources/mappings.yaml
|
- path: resources/mappings.yaml
|
||||||
role: resource-mapping
|
role: resource-mapping
|
||||||
description: Institution and system targets bound to process, decision and case elements.
|
description: >-
|
||||||
|
Every process, decision and case element bound to a primary executing
|
||||||
|
target, with an element-level legend for tracing bindings to diagrams.
|
||||||
- path: resources/guardrails.yaml
|
- path: resources/guardrails.yaml
|
||||||
role: ip-guardrails
|
role: ip-guardrails
|
||||||
description: UAPF-IP guardrails policy snapshot enforced at every capability call.
|
description: UAPF-IP guardrail policy enforced at every capability call.
|
||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
- airborneObjectTrack
|
- airborneObjectTrack
|
||||||
- objectClassification
|
- radarCrossSection
|
||||||
|
- emissionProfile
|
||||||
|
- visualConfirmation
|
||||||
|
- airspaceStatus
|
||||||
|
- trajectoryTowardPopulated
|
||||||
|
- distanceToPopulatedKm
|
||||||
|
- estimatedMinutesToPopulated
|
||||||
- borderProximityTier
|
- borderProximityTier
|
||||||
|
- corridorMunicipalities
|
||||||
|
- positiveHostileId
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
|
- threatLevel
|
||||||
|
- notificationTier
|
||||||
|
- broadcastSlaSeconds
|
||||||
- cellBroadcastDispatch
|
- cellBroadcastDispatch
|
||||||
- interceptionDecision
|
- interceptionDecision
|
||||||
- incidentReport
|
- standDownDecision
|
||||||
|
- incidentCaseRef
|
||||||
|
|
||||||
exposure:
|
exposure:
|
||||||
mcp:
|
mcp:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -59,33 +88,45 @@ exposure:
|
|||||||
exposedEntrypoints:
|
exposedEntrypoints:
|
||||||
- process: Process_DroneThreatPublicAddress
|
- process: Process_DroneThreatPublicAddress
|
||||||
tool: drone_threat_public_address.run
|
tool: drone_threat_public_address.run
|
||||||
|
- decision: Decision_ObjectClassification
|
||||||
|
tool: object_classification.evaluate
|
||||||
- decision: Decision_AirThreatSeverity
|
- decision: Decision_AirThreatSeverity
|
||||||
tool: air_threat_severity.evaluate
|
tool: air_threat_severity.evaluate
|
||||||
|
- decision: Decision_NotificationUrgency
|
||||||
|
tool: notification_urgency.evaluate
|
||||||
- decision: Decision_CellBroadcastScope
|
- decision: Decision_CellBroadcastScope
|
||||||
tool: cell_broadcast_scope.evaluate
|
tool: cell_broadcast_scope.evaluate
|
||||||
- decision: Decision_InterceptionAuthorization
|
- decision: Decision_InterceptionAuthorization
|
||||||
tool: interception_authorization.evaluate
|
tool: interception_authorization.evaluate
|
||||||
|
- decision: Decision_StandDownCriteria
|
||||||
|
tool: stand_down_criteria.evaluate
|
||||||
exposedArtifacts:
|
exposedArtifacts:
|
||||||
- manifest
|
- manifest
|
||||||
- bpmn
|
- bpmn
|
||||||
- dmn
|
- dmn
|
||||||
- cmmn
|
- cmmn
|
||||||
- docs
|
- docs
|
||||||
|
|
||||||
requires_capabilities:
|
requires_capabilities:
|
||||||
- task.assign@1+
|
- task.assign@1+
|
||||||
- task.complete@1+
|
- task.complete@1+
|
||||||
- task.escalate@1+
|
- task.escalate@1+
|
||||||
- event.emit@1+
|
- event.emit@1+
|
||||||
|
- timer.schedule@1+
|
||||||
- ai.classify@1+
|
- ai.classify@1+
|
||||||
- ai.complete@1+
|
- ai.complete@1+
|
||||||
- lv.gov.civdef.air_surveillance_feed@1+
|
- lv.gov.civdef.air_surveillance_feed@1+
|
||||||
- lv.gov.civdef.cell_broadcast@1+
|
- lv.gov.civdef.cell_broadcast@1+
|
||||||
|
|
||||||
profiles_supported:
|
profiles_supported:
|
||||||
- uapf-ip-orchestrated
|
- uapf-ip-orchestrated
|
||||||
- uapf-ip-sync-decision
|
- uapf-ip-sync-decision
|
||||||
|
|
||||||
guardrails: resources/guardrails.yaml
|
guardrails: resources/guardrails.yaml
|
||||||
|
|
||||||
owners:
|
owners:
|
||||||
- type: person
|
- type: person
|
||||||
id: rihards.gailums
|
id: rihards.gailums
|
||||||
contact: rihards.gailums@gmail.com
|
contact: rihards.gailums@gmail.com
|
||||||
|
|
||||||
lifecycle: draft
|
lifecycle: draft
|
||||||
|
|||||||
Reference in New Issue
Block a user