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)**
|
||||
**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`.
|
||||
|
||||
Reference in New Issue
Block a user