You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Create dataclass to represent DecisionTable selection #800
We need a pydantic dataclass to represent an SSVC selection from a DecisionTable object. A selection object requires at least one mapping row derived from a DecisionTable.mapping but could be any size between 1 and the full set of mappings in the DecisionTable (indicating no input information is available).
In order to keep this task constrained from getting too large, resolving this issue just requires creating the dataclass so we can represent the data. Creation of tools to take decision point value combinations as input and reduce a Decision Table to a selection can be handled in a future issue.
Note
There is already a prototype selection schema that is relevant, although we should not feel strictly bound by it in resolving this issue. Compatibility would be nice but is not required.
The decision point selection object was significantly updated in #821
That object is specifically geared toward representing a set of selections drawn from a set of decision points.
However, the DecisionTable object is more about selecting rows from the mapping value. That's a bit different from what's in ssvc.selection. So I think this is going to wind up being something different from ssvc.selection
This leads us to a few side effect notes on any implementation of the current issue:
A DecisionTable downselect object must not require full input coverage, because that defeats the purpose of being a downselect.
Every item in a downselect object mapping must be present in the parent DecisionTable object from which it is derived.
We'd probably want some sort of converter method to go from a DecisionTable to the downselect object.
That converter might handle CVSS v4 QSR specially, by explicitly removing the "invalid" rows from the mapping (i.e., the rows where EQ3=L and EQ6=H). These would be unreachable by any rational input for the EQ sets anyway.
Activity
ahouseholder commentedon Jul 29, 2025
The decision point selection object was significantly updated in #821
That object is specifically geared toward representing a set of selections drawn from a set of decision points.
However, the
DecisionTableobject is more about selecting rows from themappingvalue. That's a bit different from what's inssvc.selection. So I think this is going to wind up being something different fromssvc.selectionahouseholder commentedon Aug 13, 2025
While creating the CVSS v4 MacroVector → QSR
DecisionTable, we ran across a conflict between two requirements:DecisionTableobjects must fully map all inputDecisionPointValuecombinationsThis leads us to a few side effect notes on any implementation of the current issue:
DecisionTabledownselect object must not require full input coverage, because that defeats the purpose of being a downselect.DecisionTableto thedownselectobject.mapping(i.e., the rows whereEQ3=L and EQ6=H). These would be unreachable by any rational input for the EQ sets anyway.