← Azure home Onboarding Privacy Terms AI Act

Operational Risk & GO / CAUTION / NO-GO Methodology

Last updated: 2026-07-16 Status: Living technical reference (decision-support only)

Operator

Diogo Botelho Moniz

Trading as

Azure AI Weather

A FrontSea Intelligence product

Portugal

Contact: contact@azureai.pt

Related: MODEL_REGISTRY.md (RISK-001, CONF-001) · VERSIONING_POLICY.md · AI_SYSTEM_CARD.md · AI_ACT_COMPLIANCE.md · docs/README.md


Purpose

This document describes how Azure computes the Operational Risk Index and the GO / CAUTION / NO-GO advisory layer shown in Skipper and Black Box replay. These outputs support human planning; they do not control vessels or replace skipper judgement.


Architecture overview

Weather & marine inputs (IPMA, OpenWeather, ERA5 patterns, IoT station, tides, storm index)
        ↓
Decision graph (deterministic weighted nodes)
        ↓
operational_risk (0–1) + confidence (0–1)
        ↓
evaluate_go_nogo() — ternary advisory status
        ↓
Skipper UI / Black Box recording / optional LLM narrative (Insight)

The numeric risk score is computed deterministically. Skipper Insight and home chat may use an LLM to *explain* fused context; the LLM does not set GO/NO-GO thresholds.


Operational Risk Index

Implementation: decision_graph/nodes/risk_nodes.py, orchestrated via services/marine_service.py and decision_graph/builder.py.

Formula:

operational_risk = 0.40 × wind_risk + 0.30 × sea_risk + 0.30 × instability_risk

Each sub-risk is normalized to approximately 0–1 based on fused wind, sea state, and atmospheric instability inputs from the marine stack.

Sea discomfort (period-aware): core/operational_severity.py adjusts wave discomfort using swell/wave period — longer-period swell is treated as more manageable than short chop at the same height.


Confidence Score

Registry ID: CONF-001 — see MODEL_REGISTRY.md.

Implementation: confidence/confidence_engine.py via decision_graph/nodes/confidence_nodes.py

What Confidence means

Confidence represents the quality and consistency of available information (regional coverage, forecast horizon, source agreement).

PointExplanation
Low confidenceDoes not necessarily indicate dangerous conditions
Low confidence meansGreater uncertainty within the available environmental information
IndependenceOperational Risk and Confidence are independent indicators

When confidence is below ~0.45, the GO/NO-GO layer records a low_confidence factor so users treat the advisory with extra caution — without interpreting low confidence as “unsafe sea state.”

Formula (v1): weighted combination of regional coverage, forecast hours ahead, and source spread — see CONF-001 in MODEL_REGISTRY.md.

Governance summary: AI_ACT_COMPLIANCE.md §3.1.


GO / CAUTION / NO-GO thresholds

Single source of truth: skipper/go_nogo.py — function evaluate_go_nogo().

StatusConditions (simplified)
NO-GOoperational_risk ≥ 0.72 or storm label in severe / storm / high
CAUTIONoperational_risk ≥ 0.52 or uncomfortable/rough/dangerous sea regime or storm_probability ≥ 0.55
GOOtherwise

Rationale strings (advisory):

These are planning envelopes, not legal or regulatory clearance to sail.


Storm engine & ERA5 patterns

Registry IDs: STORM-001, ERA5-PT-001, ERA5-GL-001 — full specs in MODEL_REGISTRY.md.

ComponentRole
services/storm_engine.pyStorm Severity Index (SSI); optional classifier when model deployed
services/era5_service.pyPortugal-local ERA5 K-means pattern clustering (historical climatology)
services/era5_global_service.pyGlobal ERA5 regime clustering

ERA5 outputs describe historical pattern affinity (e.g. nortada, calm coastal). They inform context and narrative; they are not live observations.


Human oversight hooks


Limitations


Version management

Registry ID: RISK-001 (azure_v2_core_1.0).

Full policy: VERSIONING_POLICY.md. Change history: MODEL_CHANGELOG.md.

Risk weights and GO/CAUTION/NO-GO thresholds are versioned in source control. Changes require code review and regression tests (tests/test_skipper_go_nogo.py, tests/test_operational_severity.py).

Deployed .pkl models (ERA5, storm) are updated manually by the development team; Black Box does not auto-train or auto-promote models.