Operational Risk Management — POC

ORM Coach — Solution Architecture (POC)

An ORM-only slice of the proven Risk Data Explorer stack. ORM Coach embeds operational-risk expertise in OneORM workflows: consistent, explainable, context-aware guidance at the point of work, grounded in approved OneORM data. It advises and challenges but never makes the accountable decision (BR-3).

RUS-001 · Design Effectiveness Quality Gate

A single design-quality gate over a control: design quality, risk–control linkage, judgment/exception challenge, evidence-by-design, and historical failure/finding intelligence.

Open View workflow DAG

RUS-006 · Guided Control Self-Assessment

Guides the accountable user step-by-step through the execution and evidence checks derived from the documented control design.

Open View workflow DAG

US_I_OE_04 · Reporting OE / Issues

One AI-assisted workflow: classification support, root-cause guidance, structured reporting and actionable recommendations from a single entry point.

Open View workflow DAG

Workflows are data, not code

Each use case's guided flow is an editable DAG in app/Data/workflows/<use_case>.yaml, loaded, validated and rendered by the generic workflow_engine.py. The engine binds a tool set per step (generic tools ∪ the step's tools − denies) and resolves form fields from a single source (orm_forms), so adding a use case is a YAML file plus a persona — not new Python. Inspect or edit any workflow visually at /workflow/<use_case>. See the new-use-case authoring guide for the full recipe.

How it fits together

flowchart TB subgraph Browser["Browser (per use-case page)"] UI["Chat UI + activity panel
+ on-screen form (SSE)"] MSAL["MSAL.js
Auth Code + PKCE"] end subgraph App["FastAPI app (app.py)"] MW["BearerTokenMiddleware
(OBO assertion capture)"] ROUTES["/uc/<use_case> · /api/chat (SSE)
/workflow/<use_case> designer"] AGENT["orm_agent.stream_orm_agent
tool-loop + use-case persona"] end subgraph WF["Workflow layer (data-defined)"] YAML["Data/workflows/<uc>.yaml
editable DAG"] ENGINE["workflow_engine.py
load · validate · Mermaid · per-step tool bind"] REG["tool_registry.py
every agent tool by name"] SCHEMAS["orm_forms · standards · workflow_contracts
fields · gates · payload schemas"] end subgraph LLM["Atlantis gateway"] RESP["Azure OpenAI
Responses API"] end subgraph Data["OneORM data plane (ORM scope)"] TOOLS["orm_cat_* · orm_ref_* · orm_get_/find_*
orm_db_run_sql (read-only guard)"] DB[("OneORM Azure SQL
orm-dwh (np / p)")] end UI -->|question| ROUTES MSAL -->|Bearer + X-LLM-Token + X-SQL/ADO/ARM-Token
secretless browser passthrough| MW MW --> ROUTES ROUTES --> AGENT YAML --> ENGINE REG --> ENGINE SCHEMAS --> ENGINE ENGINE -->|active-step tool binding| AGENT AGENT <-->|stream + tool calls| RESP AGENT -->|bound tools| TOOLS TOOLS --> DB TOOLS -. snapshot .-> DB AGENT -->|answer_delta / tool_result / form_fill / workflow_step| UI

Grounding principle (BR-3)

Stack components

ComponentRoleSource
atlantis.pyAzure OpenAI (Responses API) gateway clientreused
resource_connector.pyMSAL / OBO auth, Azure SQL connectorreused
sql_db.pyRead-only SQL executor + guardreused
sql_catalog.py + orm_catalog.pyOneORM metadata / source toolsreused
db_tools.pyLive orm_db_run_sql tooltrimmed to ORM
workflow_engine.pyGeneric YAML workflow-DAG engine: load, validate, Mermaid, per-step tool bindingnew
tool_registry.pyCentral registry — every agent tool by name + schemanew
orm_forms.pyForm field schemas (single source) + orm_fill_formnew
orm_reference.pyLive reference tools (people, RCSAs, enums, impacts)new
orm_templates.pyFast-path fetch & comparable-case toolsnew
standards.pyTargeted Standard lookups + mandatory-field gatesnew
workflow_contracts.pyStructured step-payload contracts (Pydantic)new
orm_agent.pyORM-only tool-loop + 3 use-case personasnew
app.py + templatesRouted pages, SSE chat, workflow designer, architecturenew