1
0
This commit is contained in:
2026-05-18 14:05:37 +03:00
parent 3da6362c49
commit ed1d44e94a
16 changed files with 1686 additions and 867 deletions

110
README.md
View File

@@ -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)**
**Conformant to UAPF specification v2.2.0** — see `docs/04-validation-report.md`.
UAPF v2.2.0 process package · `lv.civdef.drone-threat-public-address` · v0.3.0 · **draft**
Drone Threat Public Address & Citizen Notification — a process model of the
cross-institutional algorithm for detecting a drone threat over Latvian
airspace, deciding on and triggering public cell-broadcast notification,
coordinating interception, and conducting field response and origin
investigation.
A Level-4 UAPF package modelling the cross-institutional algorithm by which
Latvia turns a detected drone threat into a timely public cell-broadcast,
coordinates interception, and runs field response and origin investigation.
Modelled from the public chronology of the **7 May 2026 Rezekne drone
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
Ministry of Defence commitment to revise the inter-institutional notification
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
```
> Independent modelling demonstrator. **Not** an official algorithm of the NBS,
> VUGD, the Ministry of Defence or any Latvian state institution.
## Cornerstones
- **BPMN** `Process_DroneThreatPublicAddress` — detection → threat assessment
gateway → broadcast-scope decision → request → parallel block
{cell broadcast | agency notification | interception evaluation} →
synchronise → local response → all-clear → field-response case → close.
- **DMN** one DRD, three decisions — `Decision_AirThreatSeverity`,
`Decision_CellBroadcastScope`, `Decision_InterceptionAuthorization`.
- **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.
| Cornerstone | File | Content |
|-------------|------|---------|
| 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. |
| 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. |
| Case (CMMN) | `cmmn/field-response-investigation.cmmn` | 3 stages, 11 human tasks, milestones and entry sentries for field response, origin investigation and public communication. |
| 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`. |
## UAPF-IP & MCP
## What changed in v0.3.0
The manifest declares `requires_capabilities`, `profiles_supported`
(`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`.
Rebuilt deeper and broader from v0.2.0, and the v0.2.0 defects fixed:
## 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.
```
python3 ../../validate.py ../.. <path-to-UAPF-specification-repo>
```
## Documentation
Result: PASS, 0 errors, 0 warnings against UAPF v2.2.0. The reference CLI
`tools/uapf-cli/uapf.py` will wrongly reject this package because it checks for
the obsolete `.bpmn.xml` extension — this is a known upstream bug, documented in
`docs/04-validation-report.md`.
`docs/00` chronology · `docs/01` gap analysis · `docs/02` RACI ·
`docs/03` notification timing & SLA · `docs/04` UAPF-IP integration ·
`docs/05` validation report (19/19 passed).
## Intended steward
## Status
Authored as an external draft (owner: Rihards Gailums). The intended
institutional steward on hand-over is the Ministry of Defence
(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`.
`draft`. Decision thresholds and SLA values are modelling proposals pending
institutional review — see `docs/01` and `docs/03`.