Context
Eclipse SCORE's docs-as-code tooling cannot express conditional validation rules like "if status == valid then mitigated_by is mandatory" (docs-as-code #180). Their schema-based approach only supports static field requirements.
Problem
Safety-critical traceability requires constraints that depend on artifact state. Examples:
- A requirement with
status: approved must have a non-empty verification-criteria field
- An artifact with
safety: ASIL_B must have mitigated_by links
- A
cybersecurity-goal with risk-level: high must have at least one cybersecurity-req satisfying it
Current Rivet validation checks required fields and link cardinality statically per-type. There's no way to express "field X is required when field Y has value Z."
Proposed approach
Extend schema YAML with conditional validation rules:
conditional-rules:
- name: approved-requires-verification-criteria
when:
field: status
equals: approved
then:
required-fields: [verification-criteria]
- name: asil-requires-mitigation
when:
field: safety
matches: "ASIL_.*"
then:
required-links: [mitigated_by]
Rivet artifacts
References
Context
Eclipse SCORE's docs-as-code tooling cannot express conditional validation rules like "if status == valid then mitigated_by is mandatory" (docs-as-code #180). Their schema-based approach only supports static field requirements.
Problem
Safety-critical traceability requires constraints that depend on artifact state. Examples:
status: approvedmust have a non-emptyverification-criteriafieldsafety: ASIL_Bmust havemitigated_bylinkscybersecurity-goalwithrisk-level: highmust have at least onecybersecurity-reqsatisfying itCurrent Rivet validation checks required fields and link cardinality statically per-type. There's no way to express "field X is required when field Y has value Z."
Proposed approach
Extend schema YAML with conditional validation rules:
Rivet artifacts
References