Skip to content

STPA control-actions embedded in controllers no longer extracted as artifacts #130

@avrabe

Description

@avrabe

Summary

Control actions defined inline within controllers: entries in STPA YAML are no longer extracted as standalone control-action artifacts. This is a regression — the same YAML produced 19 control-action artifacts in an earlier rivet version (PR pulseengine/loom#61, merged 2026-03-22) but produces 0 in rivet 0.3.0.

Reproduction

In pulseengine/loom, safety/stpa/control-structure.yaml defines controllers with inline control actions:

controllers:
  - id: CTRL-1
    name: Parser
    type: automated
    control-actions:
      - ca: CA-1
        target: CP-1
        action: Parse operator into Instruction variant
      - ca: CA-2
        target: CTRL-3
        action: Report unsupported instructions in function

Seven controllers define a total of 19 control actions (CA-1 through CA-19).

$ rivet list --type control-action
0 artifacts

Expected: 19 control-action artifacts extracted, with issued-by links to their parent controllers and acts-on links to their targets.

Context

When PR pulseengine/loom#61 was merged, rivet stats reported 185 total artifacts including 19 control-actions. The current count is 144 — exactly 22 missing UCAs (see rivet#129) + 19 missing control-actions = 41 missing.

The control-action artifact type in the STPA schema expects:

  • yaml-section: control-actions (top-level section)
  • Required fields: action (string)
  • Required links: source (issued-by → controller), target (acts-on → controlled-process/controller)

The inline format inside controllers provides all the necessary data (ca = ID, action = description, target = acts-on target) but is not being parsed into standalone artifacts.

Expected Behavior

Either:

  1. Extract inline control actions from controller entries as standalone artifacts (as was done previously)
  2. Document that control actions must be in a separate control-actions: top-level section
  3. Warn when controller entries have control-actions: fields that aren't being extracted

Related

Environment

  • rivet 0.3.0 (f43c442 feat/parallel-improvements 2026-04-07)
  • Project: pulseengine/loom

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions