Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [tsf-dev] Storing TSF `Statement` information in a more structured way

Thanks John,

I have two comments / observations / suggestions.

1/

In many cases we want to write a Statement and also write Explanation_text, which allows us to expand on the Statement with further test explanation, example, etc.

The current single test-field approach required that the first Statement is in an object type normative.

The Explanation_text can be the test in a 2nd object type non-normative.

A link is then required to link the 2nd object to the first.

A problem with this, other that the 3x entity multiplication (1st object, 2nd object, link) is that people read the !st Object and ignore the linked explanation!

A preferred solution is to allow two text fields per object:

Statement: (required)

Explanation: (optional)

I could go further, and suggest that we define types for Objects, and each Object type can include additional attributes. The type of an object - Statement, Argument, Evidence becoming a stated type, rather than an accident of use. See https://gitlab.com/CodethinkLabs/trustable/trustable/-/work_items/387

2.

You have Child Link(s). Would a Parent Link be a better alternative? Are we more likely to work top down, so adding a child is only adding a new child node with a link to its parent? 1 file changed.

The tooling then doing the work of collecting the list of children for a given parent?

I would also like us to name the relationship and allow different types of Link. This will allow a meaning to be placed on a link.

On 18/05/2026 15:14, John Horsley via tsf-dev wrote:
Having (attempted) to use TSF on a couple of projects recently I have some proposals, that it would be good to get some feedback on, about what information we should be storing in relation to TSF `Statements` and in my opinion it should be stored as close to the 'Statement' as possible i.e. in the same file. This inclusion of a 'tooling-managed' section brings the relevant tool generated information closer to the Statements (meaning reviewing diffs is easier as more of the context is visible) as well as keeping the separation of tooling vs human managed content visible.

The following proposal is not intended to define the implementation details, and should not be file format specific (there is no reason multiple different file formats e.g. YAML, TOML, etc could not be supported in the tooling).

The `Statement` file **should** include the following properties:

- statement (required)
  - this should be explicitly defined, rather than the 'left over text' as it is currently

- references (optional)
    - should be constrained to pre-defined classes, initial suggestion for available classes:
        - context: defined in a file (or inline text)
        - rebuttal (or fallacy?): defined in a file (or inline text)
        - misbehaviour: defined in a file (or inline text)
        - evidence:
            - for SME type validation: defined in a file (or inline text)
            - for 'automated' validation: defined location of the generated file.                 - a placeholder should be generated if the validator has not run                 - should contain (at least) the log output of the validator run

- assessment (required)
    - validation (required):
        - type (required): None or SME or `validator name`
        - configuration (optional): for automated validation only
    - confidence (optional): to align with current 'scoring' this should be the numeric confidence that the Statement is`true`, attributed to an SME (or SMEs)         - for 'SME' type, stored in git based on the supplied reference content         - for 'validator' type, generated at `validation` based on the validator tooling and output     - (not stored in git) verdict:  True or False, generated with `validation` of the graph         - if evidence type is `SME` the verdict should be `True` if the referenced evidence is available in the trudag context, `False` otherwise         - if evidence type is `validator` the validator should provide this

- tooling-managed:
    - `state` of the associated content (allows tooling to assess what has changed), out of date content should cause an error in graph linting:
        - individually stored based on the defined content:
            - Statement
            - References:
                - pointer to the stored `state` for each reference (should be stored centrally as multiple statements might use the same reference)                 - combined `state` of all references (means that it is clear the references have changed when `diffing` the file)
            - Assessment config:
                - pointer to the stored `state` for validator (should be centrally stored as multiple statements might use the same validator)                 - combined `state` of the assessment `configuration` and the validator `state`
            - Child Links
            - Total:

                - combined state of 'Statement', 'References', 'Assessment config' and 'Child Links'


The `Statement` file **should not** include the following properties, currently defined as YML `frontmatter` in the Markdown files:

- normative
    - I have seen 'non-normative' files used to preface a group of statements with a summary, if this is required functionality then there should be a dedicated approach for this rather than abusing the `doorstop` legacy 'non-normative' option.
- level & publish
    - better to have a 'nav' like approach that defines this at a graph level for the publishing
- evidence
    - amalgamated into `assessment` property
- score

    - amalgamated into `assessment` property



Regards,


John Horsley

Codethink Ltd

_______________________________________________
tsf-dev mailing list
tsf-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://accounts.eclipse.org

--
Gavin McCall
Head of Functional Safety
Codethink Ltd

Codethink delivers cutting edge open source design, development and
integration services from embedded stack software to advanced ux

http://codethink.co.uk

We respect your privacy.
See https://www.codethink.co.uk/privacy.html



Back to the top