MCP Server
Active
1
0
Files

112 lines
3.6 KiB
YAML

kind: uapf.algorithm.card
id: algo.incident_triage.evaluate_dmn
version: 1.0.0
name: DMN decision evaluator
intent: |
Wraps a DMN 1.3 decision-table evaluation as a callable UAPF-IP
capability. The triage BPMN invokes the three DMN tables in this
package (priority, ownership, routing) natively via businessRuleTask;
this card describes the dmn.evaluate@1 capability for cases where the
same evaluation is needed outside the BPMN runtime (operator manual
re-evaluation, batch backfill, regression testing).
Engine-internal DMN evaluation and this capability call return the
same output for the same input — that property is the only thing
this card asserts.
algorithm_kind: rule_table
io:
inputs:
- id: package_id
type: string
documentation: UAPF package id whose dmn/ cornerstone holds the table.
- id: decision_id
type: string
constraints:
enum: [priority, ownership, routing]
documentation: Which DMN decision to evaluate in this package.
- id: inputs
type: object
documentation: |
Decision-input columns as a flat object. For priority:
{severity, service_tier, ai_suggested_priority, classification}.
For ownership: {classification, host_domain, source}.
For routing: {classification, priority, ownership}.
outputs:
- id: output
type: object
documentation: |
Object with the decision-output columns. priority -> {priority}.
ownership -> {ownership}. routing -> {group_slug}.
- id: hit_rule_ids
type: array
documentation: Rule ids that matched (FIRST hit-policy produces 1; ANY may produce N).
- id: hit_policy
type: string
constraints:
enum: [FIRST, UNIQUE, ANY, PRIORITY, OUTPUT_ORDER, COLLECT, RULE_ORDER]
implementation:
type: external
medium: mcp_tool
uri: uapf-ip://capability/dmn.evaluate@1
hash: sha256:0000000000000000000000000000000000000000000000000000000000000000
runtime:
capability: dmn.evaluate@1
note: |
Host-fulfilled UAPF-IP capability. The OpenITSM host reads the
DMN file from the package's dmn/ cornerstone and applies the
DMN 1.3 hit-policy semantics. Same decision artifact, same
output as the in-process engine evaluation.
determinism: deterministic
side_effects: pure
complexity:
typical_latency_ms: 5
max_latency_ms: 5000
failure_mode: |
Throws if the requested package_id is not loaded by the runtime, or
if the named decision_id is not present in that package's dmn/
directory. Triage callers fall back to safe defaults (P4, lvrtc,
helpdesk-l1) so the case still completes.
owners:
- type: team
id: openitsm-stewards
contact: stewards@openitsm.algomation.io
lifecycle:
status: draft
tests:
- name: priority-critical-tier1
description: |
The priority table should rule P1 for a critical+tier_1 input
regardless of AI suggestion.
inputs:
package_id: "lv.itsm.incident.triage"
decision_id: "priority"
inputs:
severity: "critical"
service_tier: "tier_1"
ai_suggested_priority: "P3"
classification: "network.outage.link_down"
expected_outputs:
output:
priority: "P1"
hit_policy: "FIRST"
- name: routing-security-to-soc
description: |
Routing of a security.incident at P1 should land on soc-l2.
inputs:
package_id: "lv.itsm.incident.triage"
decision_id: "routing"
inputs:
classification: "security.incident"
priority: "P1"
ownership: "lvrtc"
expected_outputs:
output:
group_slug: "soc-l2"
hit_policy: "FIRST"