Traceability Matrix

Features

ID

Title

Feature Flag

Requirements

Implemented by

FEAT_ALARMS

Alarm Monitoring

Alarms

API_ALARMS_ACKNOWLEDGE; API_ALARMS_HEALTH; API_ALARMS_LIST; API_ALARMS_LIST_FLEET; API_ALARMS_STREAM; API_ALARMS_STREAM_FLEET; API_ALARMS_WS

FEAT_AUTH

Authentication and Authorization

REQ_SEC_AUTH; REQ_SEC_HEADERS; REQ_SEC_PLC_ACCESS; REQ_SEC_WRITE_AUTH

FEAT_DEVICE_INFO

Device Info

DeviceInfo

API_DEVICE_INFO; API_DEVICE_STATE

FEAT_ETHERCAT

EtherCAT Diagnostics

EtherCatDiagnostics

API_ETHERCAT_HUB; API_ETHERCAT_MASTER_DETAIL; API_ETHERCAT_MASTERS_LIST; API_ETHERCAT_RESET_ERROR_COUNTERS; API_ETHERCAT_SLAVE_DETAIL; API_ETHERCAT_SLAVES_LIST; API_ETHERCAT_SYNCUNITS; API_ETHERCAT_TOPOLOGY

FEAT_ETHERCAT_COE

EtherCAT CoE Object Dictionary

EtherCatCoe

API_ETHERCAT_COE_READ

FEAT_FILES

File Access

Files

API_FILES_LIST; API_FILES_READ; API_FILES_WRITE

FEAT_FLAGS

Feature Flags

REQ_MCP_FEATURE_GATE

FEAT_HEALTH

Health Probes

API_ALARMS_HEALTH; API_HEALTH_LIVE; API_HEALTH_READY

FEAT_LIFECYCLE

Lifecycle Control

Lifecycle

API_LIFECYCLE_RESET; API_LIFECYCLE_START; API_LIFECYCLE_STOP

FEAT_MCP

MCP Server for AI-Assisted Diagnostics

Mcp

REQ_MCP_AUTH; REQ_MCP_FEATURE_GATE; REQ_MCP_PLC_ACCESS; REQ_MCP_SERVICE_REUSE

API_MCP_ENDPOINT

FEAT_MULTI_PLC

Multi-PLC Support

REQ_SEC_PLC_ACCESS

API_PLCS_LIST; API_PLCS_STATUS

FEAT_NOTIFICATIONS

Real-time Notifications

Notifications

API_NOTIFICATIONS_SSE; API_NOTIFICATIONS_WS

FEAT_RATE_LIMITING

Rate Limiting

API_LIFECYCLE_RESET; API_LIFECYCLE_START; API_LIFECYCLE_STOP

FEAT_RPC

Method Invocation (RPC)

Rpc

API_RPC_INVOKE

FEAT_SIMULATION

Scenario Simulation

Simulation

API_SIM_PAUSE; API_SIM_RESET; API_SIM_RUN; API_SIM_STATE; API_SIM_STEP

FEAT_SYMBOLS

Symbol Browsing

Symbols

API_SYMBOLS_BROWSE; API_SYMBOLS_INFO; API_SYMBOLS_SEARCH

FEAT_TYPE_METADATA

Type Metadata

TypeMetadata

API_TYPES_ENUM_MEMBERS

FEAT_VARIABLES

Variable Read/Write

Variables

REQ_SEC_SYMBOL_GUARD; REQ_SEC_VALUE_CONSTRAINTS

API_VARIABLES_BATCH_READ; API_VARIABLES_BATCH_WRITE; API_VARIABLES_CONSTRAINTS; API_VARIABLES_READ; API_VARIABLES_WRITE

Requirements

ID

Title

Priority

Satisfies

Implemented by

REQ_MCP_AUTH

MCP endpoint must enforce authentication

high

FEAT_MCP

API_MCP_ENDPOINT

REQ_MCP_FEATURE_GATE

MCP must be feature-gated

medium

FEAT_FLAGS; FEAT_MCP

API_MCP_ENDPOINT

REQ_MCP_PLC_ACCESS

MCP must respect PLC access claims

high

FEAT_MCP

API_MCP_ENDPOINT

REQ_MCP_SERVICE_REUSE

MCP must reuse existing service layer

medium

FEAT_MCP

SPEC_MCP_RESOURCES; SPEC_MCP_TOOLS

REQ_SEC_AUTH

All endpoints must require authentication

high

FEAT_AUTH

REQ_SEC_HEADERS

Security response headers must be applied

medium

FEAT_AUTH

REQ_SEC_PLC_ACCESS

PLC access must be restricted by claims

high

FEAT_AUTH; FEAT_MULTI_PLC

API_ALARMS_LIST_FLEET; API_ALARMS_STREAM_FLEET

REQ_SEC_SYMBOL_GUARD

Symbol writes must be validated

high

FEAT_VARIABLES

API_VARIABLES_BATCH_WRITE; API_VARIABLES_WRITE

REQ_SEC_VALUE_CONSTRAINTS

Value constraints must be enforced on writes

medium

FEAT_VARIABLES

API_VARIABLES_BATCH_WRITE; API_VARIABLES_CONSTRAINTS; API_VARIABLES_WRITE

REQ_SEC_WRITE_AUTH

Write operations must enforce WriteAccess policy

high

FEAT_AUTH

API_ALARMS_ACKNOWLEDGE; API_ETHERCAT_RESET_ERROR_COUNTERS; API_FILES_WRITE; API_RPC_INVOKE; API_VARIABLES_BATCH_WRITE; API_VARIABLES_WRITE

Endpoints

ID

Method

Route

Policy

Implements

API_ALARMS_LIST_FLEET

GET

/api/alarms

ReadAccess

FEAT_ALARMS; REQ_SEC_PLC_ACCESS

API_ALARMS_STREAM_FLEET

SSE

/api/alarms/stream

ReadAccess

FEAT_ALARMS; REQ_SEC_PLC_ACCESS

API_PLCS_LIST

GET

/api/plcs

Authenticated

FEAT_MULTI_PLC

API_ALARMS_LIST

GET

/api/plcs/{plcId}/alarms

ReadAccess

FEAT_ALARMS

API_ALARMS_STREAM

SSE

/api/plcs/{plcId}/alarms/stream

ReadAccess

FEAT_ALARMS

API_ALARMS_WS

WS

/api/plcs/{plcId}/alarms/ws

ReadAccess

FEAT_ALARMS

API_ALARMS_ACKNOWLEDGE

POST

/api/plcs/{plcId}/alarms/{key}/acknowledge

WriteAccess

FEAT_ALARMS; REQ_SEC_WRITE_AUTH

API_VARIABLES_CONSTRAINTS

GET

/api/plcs/{plcId}/constraints/{symbolPath}

ReadAccess

FEAT_VARIABLES; REQ_SEC_VALUE_CONSTRAINTS

API_DEVICE_INFO

GET

/api/plcs/{plcId}/device/info

ReadAccess

FEAT_DEVICE_INFO

API_DEVICE_STATE

GET

/api/plcs/{plcId}/device/state

ReadAccess

FEAT_DEVICE_INFO

API_ETHERCAT_MASTERS_LIST

GET

/api/plcs/{plcId}/ethercat/masters

ReadAccess

FEAT_ETHERCAT

API_ETHERCAT_MASTER_DETAIL

GET

/api/plcs/{plcId}/ethercat/masters/{masterId}

ReadAccess

FEAT_ETHERCAT

API_ETHERCAT_SLAVES_LIST

GET

/api/plcs/{plcId}/ethercat/masters/{masterId}/slaves

ReadAccess

FEAT_ETHERCAT

API_ETHERCAT_SLAVE_DETAIL

GET

/api/plcs/{plcId}/ethercat/masters/{masterId}/slaves/{address}

ReadAccess

FEAT_ETHERCAT

API_ETHERCAT_COE_READ

GET

/api/plcs/{plcId}/ethercat/masters/{masterId}/slaves/{address}/coe/{index}/{subIndex}

ReadAccess

FEAT_ETHERCAT_COE

API_ETHERCAT_RESET_ERROR_COUNTERS

POST

/api/plcs/{plcId}/ethercat/masters/{masterId}/slaves/{address}/reset-error-counters

WriteAccess

FEAT_ETHERCAT; REQ_SEC_WRITE_AUTH

API_ETHERCAT_SYNCUNITS

GET

/api/plcs/{plcId}/ethercat/masters/{masterId}/syncunits

ReadAccess

FEAT_ETHERCAT

API_ETHERCAT_TOPOLOGY

GET

/api/plcs/{plcId}/ethercat/masters/{masterId}/topology

ReadAccess

FEAT_ETHERCAT

API_ETHERCAT_HUB

WS

/api/plcs/{plcId}/ethercat/ws

ReadAccess

FEAT_ETHERCAT

API_FILES_READ

GET

/api/plcs/{plcId}/files/{path}

ReadAccess

FEAT_FILES

API_FILES_WRITE

PUT

/api/plcs/{plcId}/files/{path}

WriteAccess

FEAT_FILES; REQ_SEC_WRITE_AUTH

API_FILES_LIST

GET

/api/plcs/{plcId}/files?dir={path}

ReadAccess

FEAT_FILES

API_LIFECYCLE_RESET

POST

/api/plcs/{plcId}/lifecycle/reset

LifecycleAccess

FEAT_LIFECYCLE; FEAT_RATE_LIMITING

API_LIFECYCLE_START

POST

/api/plcs/{plcId}/lifecycle/start

LifecycleAccess

FEAT_LIFECYCLE; FEAT_RATE_LIMITING

API_LIFECYCLE_STOP

POST

/api/plcs/{plcId}/lifecycle/stop

LifecycleAccess

FEAT_LIFECYCLE; FEAT_RATE_LIMITING

API_RPC_INVOKE

POST

/api/plcs/{plcId}/methods/{methodPath}

WriteAccess

FEAT_RPC; REQ_SEC_WRITE_AUTH

API_NOTIFICATIONS_SSE

SSE

/api/plcs/{plcId}/notifications/sse?symbols={symbolPath}

ReadAccess

FEAT_NOTIFICATIONS

API_NOTIFICATIONS_WS

WS

/api/plcs/{plcId}/notifications/ws

ReadAccess

FEAT_NOTIFICATIONS

API_SIM_PAUSE

POST

/api/plcs/{plcId}/sim/pause

LifecycleAccess

FEAT_SIMULATION

API_SIM_RESET

POST

/api/plcs/{plcId}/sim/reset

LifecycleAccess

FEAT_SIMULATION

API_SIM_RUN

POST

/api/plcs/{plcId}/sim/run

LifecycleAccess

FEAT_SIMULATION

API_SIM_STATE

GET

/api/plcs/{plcId}/sim/state

LifecycleAccess

FEAT_SIMULATION

API_SIM_STEP

POST

/api/plcs/{plcId}/sim/step?cycles={n}

LifecycleAccess

FEAT_SIMULATION

API_PLCS_STATUS

GET

/api/plcs/{plcId}/status

Authenticated

FEAT_MULTI_PLC

API_SYMBOLS_BROWSE

GET

/api/plcs/{plcId}/symbols

ReadAccess

FEAT_SYMBOLS

API_SYMBOLS_INFO

GET

/api/plcs/{plcId}/symbols/{symbolPath}

ReadAccess

FEAT_SYMBOLS

API_SYMBOLS_SEARCH

GET

/api/plcs/{plcId}/symbols?search={pattern}&flat={bool}

ReadAccess

FEAT_SYMBOLS

API_TYPES_ENUM_MEMBERS

GET

/api/plcs/{plcId}/types/{typeName}/enum-members

ReadAccess

FEAT_TYPE_METADATA

API_VARIABLES_BATCH_WRITE

PUT

/api/plcs/{plcId}/variables

WriteAccess

FEAT_VARIABLES; REQ_SEC_SYMBOL_GUARD; REQ_SEC_VALUE_CONSTRAINTS; REQ_SEC_WRITE_AUTH

API_VARIABLES_READ

GET

/api/plcs/{plcId}/variables/{symbolPath}

ReadAccess

FEAT_VARIABLES

API_VARIABLES_WRITE

PUT

/api/plcs/{plcId}/variables/{symbolPath}

WriteAccess

FEAT_VARIABLES; REQ_SEC_SYMBOL_GUARD; REQ_SEC_VALUE_CONSTRAINTS; REQ_SEC_WRITE_AUTH

API_VARIABLES_BATCH_READ

GET

/api/plcs/{plcId}/variables?paths={symbolPath}

ReadAccess

FEAT_VARIABLES

API_ALARMS_HEALTH

GET

/health/alarms

Anonymous

FEAT_ALARMS; FEAT_HEALTH

API_HEALTH_LIVE

GET

/health/live

Anonymous

FEAT_HEALTH

API_HEALTH_READY

GET

/health/ready

Anonymous

FEAT_HEALTH

API_MCP_ENDPOINT

MCP

/mcp

ReadAccess

FEAT_MCP; REQ_MCP_AUTH; REQ_MCP_FEATURE_GATE; REQ_MCP_PLC_ACCESS

Endpoints without a requirement

Endpoints that trace only to a feature. Candidates for a requirement of their own.

ID

Title

Implements

API_ALARMS_HEALTH

Alarm Health Check

FEAT_ALARMS; FEAT_HEALTH

API_ALARMS_LIST

List Outstanding Alarms

FEAT_ALARMS

API_ALARMS_STREAM

Stream Alarm Transitions (SSE)

FEAT_ALARMS

API_ALARMS_WS

Stream Alarm Transitions (WebSocket / SignalR)

FEAT_ALARMS

API_DEVICE_INFO

Get Device Info

FEAT_DEVICE_INFO

API_DEVICE_STATE

Get Device State

FEAT_DEVICE_INFO

API_ETHERCAT_COE_READ

CoE Read Object

FEAT_ETHERCAT_COE

API_ETHERCAT_HUB

Real-Time Notifications (SignalR)

FEAT_ETHERCAT

API_ETHERCAT_MASTER_DETAIL

Master Detail

FEAT_ETHERCAT

API_ETHERCAT_MASTERS_LIST

List Masters

FEAT_ETHERCAT

API_ETHERCAT_SLAVE_DETAIL

Slave Detail

FEAT_ETHERCAT

API_ETHERCAT_SLAVES_LIST

List Slaves

FEAT_ETHERCAT

API_ETHERCAT_SYNCUNITS

Sync Units

FEAT_ETHERCAT

API_ETHERCAT_TOPOLOGY

Topology

FEAT_ETHERCAT

API_FILES_LIST

List Directory

FEAT_FILES

API_FILES_READ

Read File

FEAT_FILES

API_HEALTH_LIVE

Liveness Probe

FEAT_HEALTH

API_HEALTH_READY

Readiness Probe

FEAT_HEALTH

API_LIFECYCLE_RESET

Reset PLC

FEAT_LIFECYCLE; FEAT_RATE_LIMITING

API_LIFECYCLE_START

Start PLC

FEAT_LIFECYCLE; FEAT_RATE_LIMITING

API_LIFECYCLE_STOP

Stop PLC

FEAT_LIFECYCLE; FEAT_RATE_LIMITING

API_NOTIFICATIONS_SSE

Server-Sent Events (SSE)

FEAT_NOTIFICATIONS

API_NOTIFICATIONS_WS

WebSocket (SignalR)

FEAT_NOTIFICATIONS

API_PLCS_LIST

List PLCs

FEAT_MULTI_PLC

API_PLCS_STATUS

Get PLC Status

FEAT_MULTI_PLC

API_SIM_PAUSE

Pause

FEAT_SIMULATION

API_SIM_RESET

Reset

FEAT_SIMULATION

API_SIM_RUN

Run

FEAT_SIMULATION

API_SIM_STATE

Get State

FEAT_SIMULATION

API_SIM_STEP

Step

FEAT_SIMULATION

API_SYMBOLS_BROWSE

Browse Root Symbols

FEAT_SYMBOLS

API_SYMBOLS_INFO

Get Symbol Info

FEAT_SYMBOLS

API_SYMBOLS_SEARCH

Search Symbols

FEAT_SYMBOLS

API_TYPES_ENUM_MEMBERS

Resolve an Enum's Members

FEAT_TYPE_METADATA

API_VARIABLES_BATCH_READ

Batch Read

FEAT_VARIABLES

API_VARIABLES_READ

Read Variable

FEAT_VARIABLES

Flow