Sphinx-Needs

Analysis

@startuml

' Nodes definition 

file "<size:12>Artifact</size>\n**Sphinx-Needs**\n**needs.json file**\n<size:10>ART_SN_NEEDS_JSON</size>" as ART_SN_NEEDS_JSON [[../tools/sphinx-needs/artifacts.html#ART_SN_NEEDS_JSON]] #LightBlue
rectangle "<size:12>Feature</size>\n**Read**\n**Traceability**\n**objects in**\n**Sphinx-Needs**\n<size:10>FE_SN_READ</size>" as FE_SN_READ [[../tools/sphinx-needs/features.html#FE_SN_READ]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Syntax errors**\n**in rst/md files**\n**cause**\n**Traceability**\n**objects to be**\n**ignored**\n<size:10>ER_SN_SYN_ER</size>" as ER_SN_SYN_ER [[../tools/sphinx-needs/features.html#ER_SN_SYN_ER]] #Pink
rectangle "<size:12>Fault</size>\n**Missing**\n**external**\n**needs.json file**\n<size:10>ER_SN_JSON_NOT_FOUND</size>" as ER_SN_JSON_NOT_FOUND [[../tools/sphinx-needs/features.html#ER_SN_JSON_NOT_FOUND]] #Pink
rectangle "<size:12>Fault</size>\n**Corrupted**\n**external**\n**needs.json file**\n<size:10>ER_SN_JSON_CORRUPTED</size>" as ER_SN_JSON_CORRUPTED [[../tools/sphinx-needs/features.html#ER_SN_JSON_CORRUPTED]] #Pink
rectangle "<size:12>Fault</size>\n**Authentication**\n**issues with**\n**needsservice**\n<size:10>ER_SN_SER_AUTH</size>" as ER_SN_SER_AUTH [[../tools/sphinx-needs/features.html#ER_SN_SER_AUTH]] #Pink
rectangle "<size:12>Fault</size>\n**Invalid meta-**\n**data in rst/md**\n**files leads to**\n**ignored**\n**Traceability**\n**objects**\n<size:10>ER_SN_DATA_INVALID</size>" as ER_SN_DATA_INVALID [[../tools/sphinx-needs/features.html#ER_SN_DATA_INVALID]] #Pink
rectangle "<size:12>Fault</size>\n**Programmatic**\n**errors in**\n**rst/md files**\n**result in**\n**ignored**\n**Traceability**\n**objects**\n<size:10>ER_SN_CODE_ERR</size>" as ER_SN_CODE_ERR [[../tools/sphinx-needs/features.html#ER_SN_CODE_ERR]] #Pink
rectangle "<size:12>Fault</size>\n**Invalid or**\n**incorrect**\n**filters used**\n**for external**\n**needs.json**\n<size:10>ER_SN_JSON_FILTER</size>" as ER_SN_JSON_FILTER [[../tools/sphinx-needs/features.html#ER_SN_JSON_FILTER]] #Pink
rectangle "<size:12>Fault</size>\n**External**\n**service**\n**unreachable by**\n**needsservice**\n<size:10>ER_SN_SER_DOWN</size>" as ER_SN_SER_DOWN [[../tools/sphinx-needs/features.html#ER_SN_SER_DOWN]] #Pink
rectangle "<size:12>Fault</size>\n**needsservice**\n**unable to**\n**process data**\n**from external**\n**service**\n<size:10>ER_SN_SER_INVALID</size>" as ER_SN_SER_INVALID [[../tools/sphinx-needs/features.html#ER_SN_SER_INVALID]] #Pink
}
rectangle "<size:12>Feature</size>\n**Display**\n**Traceability**\n**objects content**\n**in Sphinx-Needs**\n<size:10>FE_SN_CONTENT_RENDER</size>" as FE_SN_CONTENT_RENDER [[../tools/sphinx-needs/features.html#FE_SN_CONTENT_RENDER]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Content**\n**contains syntax**\n**errors**\n<size:10>ER_SN_CONTENT_SYNTAX</size>" as ER_SN_CONTENT_SYNTAX [[../tools/sphinx-needs/features.html#ER_SN_CONTENT_SYNTAX]] #Pink
}
rectangle "<size:12>Feature</size>\n**Assign meta-**\n**data to**\n**Traceability**\n**objects in**\n**Sphinx-Needs**\n<size:10>FE_SN_SET_META</size>" as FE_SN_SET_META [[../tools/sphinx-needs/features.html#FE_SN_SET_META]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Dynamic**\n**functions**\n**return invalid**\n**meta-data**\n<size:10>ER_SN_DYN_INVALID</size>" as ER_SN_DYN_INVALID [[../tools/sphinx-needs/features.html#ER_SN_DYN_INVALID]] #Pink
rectangle "<size:12>Fault</size>\n**Dynamic**\n**functions**\n**return wrong**\n**meta-data**\n<size:10>ER_SN_DYN_WRONG</size>" as ER_SN_DYN_WRONG [[../tools/sphinx-needs/features.html#ER_SN_DYN_WRONG]] #Pink
rectangle "<size:12>Fault</size>\n**Sphinx-Needs**\n**data not valid**\n<size:10>ER_SN_META_INVALID</size>" as ER_SN_META_INVALID [[../tools/sphinx-needs/features.html#ER_SN_META_INVALID]] #Pink
rectangle "<size:12>Fault</size>\n**Sphinx-Needs**\n**data is not**\n**process-**\n**compliant**\n<size:10>ER_SN_META_NOT_COMPLIANT</size>" as ER_SN_META_NOT_COMPLIANT [[../tools/sphinx-needs/features.html#ER_SN_META_NOT_COMPLIANT]] #Pink
}
rectangle "<size:12>Feature</size>\n**Establish links**\n**between**\n**Traceability**\n**objects in**\n**Sphinx-Needs**\n<size:10>FE_SN_LINK</size>" as FE_SN_LINK [[../tools/sphinx-needs/features.html#FE_SN_LINK]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Back-links are**\n**not set**\n<size:10>ER_SN_LINKS_NO_BACK</size>" as ER_SN_LINKS_NO_BACK [[../tools/sphinx-needs/features.html#ER_SN_LINKS_NO_BACK]] #Pink
rectangle "<size:12>Fault</size>\n**Internal target**\n**link is not**\n**found**\n<size:10>ER_SN_LINKS_NO_TARGET</size>" as ER_SN_LINKS_NO_TARGET [[../tools/sphinx-needs/features.html#ER_SN_LINKS_NO_TARGET]] #Pink
rectangle "<size:12>Fault</size>\n**External needs**\n**not found**\n<size:10>ER_SN_LINKS_NO_EXT</size>" as ER_SN_LINKS_NO_EXT [[../tools/sphinx-needs/features.html#ER_SN_LINKS_NO_EXT]] #Pink
rectangle "<size:12>Fault</size>\n**External needs**\n**corrupted**\n<size:10>ER_SN_LINKS_EXT_COR</size>" as ER_SN_LINKS_EXT_COR [[../tools/sphinx-needs/features.html#ER_SN_LINKS_EXT_COR]] #Pink
rectangle "<size:12>Fault</size>\n**Links missing**\n<size:10>ER_SN_LINKS_MISSING</size>" as ER_SN_LINKS_MISSING [[../tools/sphinx-needs/features.html#ER_SN_LINKS_MISSING]] #Pink
}
rectangle "<size:12>Feature</size>\n**Generate object**\n**representation**\n**in Sphinx-Needs**\n<size:10>FE_SN_DOCTREE</size>" as FE_SN_DOCTREE [[../tools/sphinx-needs/features.html#FE_SN_DOCTREE]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Meta-data**\n**missing**\n<size:10>ER_SN_LAY_META_MIS</size>" as ER_SN_LAY_META_MIS [[../tools/sphinx-needs/features.html#ER_SN_LAY_META_MIS]] #Pink
rectangle "<size:12>Fault</size>\n**Wrong meta-data**\n**is used**\n<size:10>ER_SN_LAY_META_WRONG</size>" as ER_SN_LAY_META_WRONG [[../tools/sphinx-needs/features.html#ER_SN_LAY_META_WRONG]] #Pink
}
rectangle "<size:12>Feature</size>\n**Export**\n**needs.json file**\n**using Sphinx-**\n**Needs**\n<size:10>FE_SN_JSON</size>" as FE_SN_JSON [[../tools/sphinx-needs/features.html#FE_SN_JSON]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Objects missing**\n**in needs.json**\n<size:10>ER_SN_JSON_MIS</size>" as ER_SN_JSON_MIS [[../tools/sphinx-needs/features.html#ER_SN_JSON_MIS]] #Pink
rectangle "<size:12>Fault</size>\n**Traceability**\n**objects meta-**\n**data corrupted**\n<size:10>ER_SN_JSON_COR</size>" as ER_SN_JSON_COR [[../tools/sphinx-needs/features.html#ER_SN_JSON_COR]] #Pink
rectangle "<size:12>Fault</size>\n**Traceability**\n**objects links**\n**corrupted**\n<size:10>ER_SN_JSON_LINKS_COR</size>" as ER_SN_JSON_LINKS_COR [[../tools/sphinx-needs/features.html#ER_SN_JSON_LINKS_COR]] #Pink
rectangle "<size:12>Fault</size>\n**Traceability**\n**objects content**\n**corrupted**\n<size:10>ER_SN_JSON_CONTENT_COR</size>" as ER_SN_JSON_CONTENT_COR [[../tools/sphinx-needs/features.html#ER_SN_JSON_CONTENT_COR]] #Pink
}
rectangle "<size:12>Feature</size>\n**Apply dynamic**\n**functions for**\n**meta-data**\n**computation**\n<size:10>FE_SN_DYN_FUNC</size>" as FE_SN_DYN_FUNC [[../tools/sphinx-needs/features.html#FE_SN_DYN_FUNC]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Function gets**\n**not executed**\n<size:10>ER_SN_DYN_NO_EXEC</size>" as ER_SN_DYN_NO_EXEC [[../tools/sphinx-needs/features.html#ER_SN_DYN_NO_EXEC]] #Pink
rectangle "<size:12>Fault</size>\n**Function**\n**returns invalid**\n**value**\n<size:10>ER_SN_DYN_INVALID2</size>" as ER_SN_DYN_INVALID2 [[../tools/sphinx-needs/features.html#ER_SN_DYN_INVALID2]] #Pink
rectangle "<size:12>Fault</size>\n**Function**\n**returns wrong**\n**calculated**\n**values**\n<size:10>ER_SN_DYN_WRONG_CALC</size>" as ER_SN_DYN_WRONG_CALC [[../tools/sphinx-needs/features.html#ER_SN_DYN_WRONG_CALC]] #Pink
rectangle "<size:12>Fault</size>\n**Function**\n**returns no**\n**value**\n<size:10>ER_SN_DYN_NO_VALUE</size>" as ER_SN_DYN_NO_VALUE [[../tools/sphinx-needs/features.html#ER_SN_DYN_NO_VALUE]] #Pink
}
rectangle "<size:12>Feature</size>\n**Extend page**\n**content with**\n**templates in**\n**Sphinx-Needs**\n<size:10>FE_SN_TEMPLATE_PAGE</size>" as FE_SN_TEMPLATE_PAGE [[../tools/sphinx-needs/features.html#FE_SN_TEMPLATE_PAGE]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Template file**\n**not found**\n<size:10>ER_SN_TEMPLATE_FILE_NOT_FOUND</size>" as ER_SN_TEMPLATE_FILE_NOT_FOUND [[../tools/sphinx-needs/features.html#ER_SN_TEMPLATE_FILE_NOT_FOUND]] #Pink
rectangle "<size:12>Fault</size>\n**Template file**\n**is not a valid**\n**Jinja2 template**\n<size:10>ER_SN_TEMPLATE_FILE_INVALID</size>" as ER_SN_TEMPLATE_FILE_INVALID [[../tools/sphinx-needs/features.html#ER_SN_TEMPLATE_FILE_INVALID]] #Pink
rectangle "<size:12>Fault</size>\n**Template file**\n**contains syntax**\n**errors**\n<size:10>ER_SN_TEMPLATE_FILE_SYNTAX</size>" as ER_SN_TEMPLATE_FILE_SYNTAX [[../tools/sphinx-needs/features.html#ER_SN_TEMPLATE_FILE_SYNTAX]] #Pink
}
rectangle "<size:12>Feature</size>\n**Enhance Need**\n**content using**\n**templates in**\n**Sphinx-Needs**\n<size:10>FE_SN_TEMPLATE_NEED</size>" as FE_SN_TEMPLATE_NEED [[../tools/sphinx-needs/features.html#FE_SN_TEMPLATE_NEED]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Template file**\n**not found**\n<size:10>ER_SN_TEMPLATE_NEED_FILE_NOT_FOUND</size>" as ER_SN_TEMPLATE_NEED_FILE_NOT_FOUND [[../tools/sphinx-needs/features.html#ER_SN_TEMPLATE_NEED_FILE_NOT_FOUND]] #Pink
rectangle "<size:12>Fault</size>\n**Template file**\n**is not a valid**\n**Jinja2 template**\n<size:10>ER_SN_TEMPLATE_NEED_FILE_INVALID</size>" as ER_SN_TEMPLATE_NEED_FILE_INVALID [[../tools/sphinx-needs/features.html#ER_SN_TEMPLATE_NEED_FILE_INVALID]] #Pink
rectangle "<size:12>Fault</size>\n**Template file**\n**contains syntax**\n**errors**\n<size:10>ER_SN_TEMPLATE_NEED_FILE_SYNTAX</size>" as ER_SN_TEMPLATE_NEED_FILE_SYNTAX [[../tools/sphinx-needs/features.html#ER_SN_TEMPLATE_NEED_FILE_SYNTAX]] #Pink
}
rectangle "<size:12>Feature</size>\n**Definable need**\n**types**\n<size:10>FE_SPHINX_NEEDS_DEFINABLE_TYPES</size>" as FE_SPHINX_NEEDS_DEFINABLE_TYPES [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_DEFINABLE_TYPES]] #Gold
rectangle "<size:12>Feature</size>\n**Customizable**\n**need fields**\n<size:10>FE_SPHINX_NEEDS_CUSTOMIZABLE_OPTIONS</size>" as FE_SPHINX_NEEDS_CUSTOMIZABLE_OPTIONS [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_CUSTOMIZABLE_OPTIONS]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Invalid field**\n**used in a need**\n<size:10>ER_SN_INVALID_OPTION</size>" as ER_SN_INVALID_OPTION [[../tools/sphinx-needs/features.html#ER_SN_INVALID_OPTION]] #Pink
rectangle "<size:12>Fault</size>\n**Field value**\n**does not match**\n**declared schema**\n<size:10>ER_SN_INVALID_OPTION_VALUE</size>" as ER_SN_INVALID_OPTION_VALUE [[../tools/sphinx-needs/features.html#ER_SN_INVALID_OPTION_VALUE]] #Pink
rectangle "<size:12>Fault</size>\n**Field value is**\n**not allowed**\n<size:10>ER_SN_OPTION_NOT_ALLOWED</size>" as ER_SN_OPTION_NOT_ALLOWED [[../tools/sphinx-needs/features.html#ER_SN_OPTION_NOT_ALLOWED]] #Pink
}
rectangle "<size:12>Feature</size>\n**Customizable**\n**link types**\n<size:10>FE_SPHINX_NEEDS_CUSTOMIZABLE_LINKS</size>" as FE_SPHINX_NEEDS_CUSTOMIZABLE_LINKS [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_CUSTOMIZABLE_LINKS]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Invalid link**\n**type used in a**\n**need**\n<size:10>ER_SN_INVALID_LINK_TYPE</size>" as ER_SN_INVALID_LINK_TYPE [[../tools/sphinx-needs/features.html#ER_SN_INVALID_LINK_TYPE]] #Pink
rectangle "<size:12>Fault</size>\n**Link target**\n**value violates**\n**link schema**\n<size:10>ER_SN_INVALID_LINK_TYPE_VALUE</size>" as ER_SN_INVALID_LINK_TYPE_VALUE [[../tools/sphinx-needs/features.html#ER_SN_INVALID_LINK_TYPE_VALUE]] #Pink
}
rectangle "<size:12>Feature</size>\n**Automatic ID**\n**generation**\n<size:10>FE_SPHINX_NEEDS_AUTO_ID</size>" as FE_SPHINX_NEEDS_AUTO_ID [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_AUTO_ID]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**ID generation**\n**failed**\n<size:10>ER_SN_ID_GENERATION_FAILED</size>" as ER_SN_ID_GENERATION_FAILED [[../tools/sphinx-needs/features.html#ER_SN_ID_GENERATION_FAILED]] #Pink
rectangle "<size:12>Fault</size>\n**ID already**\n**exists**\n<size:10>ER_SN_ID_ALREADY_EXISTS</size>" as ER_SN_ID_ALREADY_EXISTS [[../tools/sphinx-needs/features.html#ER_SN_ID_ALREADY_EXISTS]] #Pink
rectangle "<size:12>Fault</size>\n**ID format is**\n**invalid**\n<size:10>ER_SN_ID_FORMAT_INVALID</size>" as ER_SN_ID_FORMAT_INVALID [[../tools/sphinx-needs/features.html#ER_SN_ID_FORMAT_INVALID]] #Pink
rectangle "<size:12>Fault</size>\n**ID length is**\n**invalid**\n<size:10>ER_SN_ID_LENGTH_INVALID</size>" as ER_SN_ID_LENGTH_INVALID [[../tools/sphinx-needs/features.html#ER_SN_ID_LENGTH_INVALID]] #Pink
}
rectangle "<size:12>Feature</size>\n**Manual ID**\n**assignment**\n<size:10>FE_SPHINX_NEEDS_MANUAL_ID</size>" as FE_SPHINX_NEEDS_MANUAL_ID [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_MANUAL_ID]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Manual ID**\n**already exists**\n<size:10>ER_SN_MANUAL_ID_EXISTS</size>" as ER_SN_MANUAL_ID_EXISTS [[../tools/sphinx-needs/features.html#ER_SN_MANUAL_ID_EXISTS]] #Pink
rectangle "<size:12>Fault</size>\n**Manual ID**\n**format is**\n**invalid**\n<size:10>ER_SN_MANUAL_ID_FORMAT_INVALID</size>" as ER_SN_MANUAL_ID_FORMAT_INVALID [[../tools/sphinx-needs/features.html#ER_SN_MANUAL_ID_FORMAT_INVALID]] #Pink
rectangle "<size:12>Fault</size>\n**Manual ID**\n**length is**\n**invalid**\n<size:10>ER_SN_MANUAL_ID_LENGTH_INVALID</size>" as ER_SN_MANUAL_ID_LENGTH_INVALID [[../tools/sphinx-needs/features.html#ER_SN_MANUAL_ID_LENGTH_INVALID]] #Pink
}
rectangle "<size:12>Feature</size>\n**Need status**\n**enforcement**\n<size:10>FE_SPHINX_NEEDS_STATUS_ENFORCEMENT</size>" as FE_SPHINX_NEEDS_STATUS_ENFORCEMENT [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_STATUS_ENFORCEMENT]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Invalid status**\n**used in a need**\n<size:10>ER_SN_INVALID_STATUS</size>" as ER_SN_INVALID_STATUS [[../tools/sphinx-needs/features.html#ER_SN_INVALID_STATUS]] #Pink
}
rectangle "<size:12>Feature</size>\n**Tagging support**\n<size:10>FE_SPHINX_NEEDS_TAGGING</size>" as FE_SPHINX_NEEDS_TAGGING [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_TAGGING]] #Gold
rectangle "<size:12>Feature</size>\n**In-content need**\n**parts for**\n**granular**\n**references**\n<size:10>FE_SPHINX_NEEDS_NEED_PARTS</size>" as FE_SPHINX_NEEDS_NEED_PARTS [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_NEED_PARTS]] #Gold
rectangle "<size:12>Feature</size>\n**Unique ID**\n**enforcement and**\n**checks**\n<size:10>FE_SPHINX_NEEDS_UNIQUE_ID_ENFORCEMENT</size>" as FE_SPHINX_NEEDS_UNIQUE_ID_ENFORCEMENT [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_UNIQUE_ID_ENFORCEMENT]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Duplicate ID is**\n**not detected**\n<size:10>ER_SN_DUPLICATE_ID</size>" as ER_SN_DUPLICATE_ID [[../tools/sphinx-needs/features.html#ER_SN_DUPLICATE_ID]] #Pink
}
rectangle "<size:12>Feature</size>\n**Display needs**\n**in a filterable**\n**table**\n**(needtable)**\n<size:10>FE_SPHINX_NEEDS_DIRECTIVE_NEEDTABLE</size>" as FE_SPHINX_NEEDS_DIRECTIVE_NEEDTABLE [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_DIRECTIVE_NEEDTABLE]] #Gold
rectangle "<size:12>Feature</size>\n**Render a**\n**PlantUML flow**\n**diagram of**\n**needs**\n**(needflow)**\n<size:10>FE_SPHINX_NEEDS_DIRECTIVE_NEEDFLOW</size>" as FE_SPHINX_NEEDS_DIRECTIVE_NEEDFLOW [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_DIRECTIVE_NEEDFLOW]] #Gold
rectangle "<size:12>Feature</size>\n**Create a pie**\n**chart based on**\n**need statistics**\n**(needpie)**\n<size:10>FE_SPHINX_NEEDS_DIRECTIVE_NEEDPIE</size>" as FE_SPHINX_NEEDS_DIRECTIVE_NEEDPIE [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_DIRECTIVE_NEEDPIE]] #Gold
rectangle "<size:12>Feature</size>\n**Create a bar**\n**chart based on**\n**need statistics**\n**(needbar)**\n<size:10>FE_SPHINX_NEEDS_DIRECTIVE_NEEDBAR</size>" as FE_SPHINX_NEEDS_DIRECTIVE_NEEDBAR [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_DIRECTIVE_NEEDBAR]] #Gold
rectangle "<size:12>Feature</size>\n**Import needs**\n**from an**\n**external JSON**\n**file**\n**(needimport)**\n<size:10>FE_SPHINX_NEEDS_DIRECTIVE_NEEDIMPORT</size>" as FE_SPHINX_NEEDS_DIRECTIVE_NEEDIMPORT [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_DIRECTIVE_NEEDIMPORT]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Importing needs**\n**is not**\n**completed**\n<size:10>ER_SN_IMPORT_NOT_COMPLETED</size>" as ER_SN_IMPORT_NOT_COMPLETED [[../tools/sphinx-needs/features.html#ER_SN_IMPORT_NOT_COMPLETED]] #Pink
rectangle "<size:12>Fault</size>\n**Importing needs**\n**is not valid**\n<size:10>ER_SN_IMPORT_NOT_VALID</size>" as ER_SN_IMPORT_NOT_VALID [[../tools/sphinx-needs/features.html#ER_SN_IMPORT_NOT_VALID]] #Pink
rectangle "<size:12>Fault</size>\n**Importing needs**\n**is not**\n**accessible**\n<size:10>ER_SN_IMPORT_NOT_ACCESSIBLE</size>" as ER_SN_IMPORT_NOT_ACCESSIBLE [[../tools/sphinx-needs/features.html#ER_SN_IMPORT_NOT_ACCESSIBLE]] #Pink
}
rectangle "<size:12>Feature</size>\n**Modify existing**\n**needs in bulk**\n**(needextend)**\n<size:10>FE_SPHINX_NEEDS_DIRECTIVE_NEEDEXTEND</size>" as FE_SPHINX_NEEDS_DIRECTIVE_NEEDEXTEND [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_DIRECTIVE_NEEDEXTEND]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Bulk**\n**modification of**\n**needs is not**\n**completed**\n<size:10>ER_SN_EXTEND_NOT_COMPLETED</size>" as ER_SN_EXTEND_NOT_COMPLETED [[../tools/sphinx-needs/features.html#ER_SN_EXTEND_NOT_COMPLETED]] #Pink
rectangle "<size:12>Fault</size>\n**Bulk**\n**modification**\n**failes silently**\n<size:10>ER_SN_EXTEND_FAIL_SILENTLY</size>" as ER_SN_EXTEND_FAIL_SILENTLY [[../tools/sphinx-needs/features.html#ER_SN_EXTEND_FAIL_SILENTLY]] #Pink
rectangle "<size:12>Fault</size>\n**Bulk**\n**modification of**\n**needs is not**\n**valid**\n<size:10>ER_SN_EXTEND_NOT_VALID</size>" as ER_SN_EXTEND_NOT_VALID [[../tools/sphinx-needs/features.html#ER_SN_EXTEND_NOT_VALID]] #Pink
}
rectangle "<size:12>Feature</size>\n**Direct linking**\n**between needs**\n**using IDs**\n<size:10>FE_SPHINX_NEEDS_LINKING_DIRECT</size>" as FE_SPHINX_NEEDS_LINKING_DIRECT [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_LINKING_DIRECT]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Link target not**\n**found**\n<size:10>ER_SN_LINK_TARGET_NOT_FOUND</size>" as ER_SN_LINK_TARGET_NOT_FOUND [[../tools/sphinx-needs/features.html#ER_SN_LINK_TARGET_NOT_FOUND]] #Pink
rectangle "<size:12>Fault</size>\n**Link target is**\n**not valid**\n<size:10>ER_SN_LINK_TARGET_NOT_VALID</size>" as ER_SN_LINK_TARGET_NOT_VALID [[../tools/sphinx-needs/features.html#ER_SN_LINK_TARGET_NOT_VALID]] #Pink
}
rectangle "<size:12>Feature</size>\n**Bidirectional**\n**link tracking**\n<size:10>FE_SPHINX_NEEDS_LINKING_BIDIRECTIONAL</size>" as FE_SPHINX_NEEDS_LINKING_BIDIRECTIONAL [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_LINKING_BIDIRECTIONAL]] #Gold
rectangle "<size:12>Feature</size>\n**Dead link**\n**detection and**\n**warnings**\n<size:10>FE_SPHINX_NEEDS_LINKING_DEAD_LINK_DETECTION</size>" as FE_SPHINX_NEEDS_LINKING_DEAD_LINK_DETECTION [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_LINKING_DEAD_LINK_DETECTION]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Dead link not**\n**detected**\n<size:10>ER_SN_DEAD_LINK_NOT_DETECTED</size>" as ER_SN_DEAD_LINK_NOT_DETECTED [[../tools/sphinx-needs/features.html#ER_SN_DEAD_LINK_NOT_DETECTED]] #Pink
rectangle "<size:12>Fault</size>\n**Dead link false**\n**positive**\n<size:10>ER_SN_DEAD_LINK_FALSE_POSITIVE</size>" as ER_SN_DEAD_LINK_FALSE_POSITIVE [[../tools/sphinx-needs/features.html#ER_SN_DEAD_LINK_FALSE_POSITIVE]] #Pink
}
rectangle "<size:12>Feature</size>\n**Conditional**\n**link evaluation**\n**(NeedLink, pars**\n**e_conditions)**\n<size:10>FE_SN_LINK_CONDITIONS</size>" as FE_SN_LINK_CONDITIONS [[../tools/sphinx-needs/features.html#FE_SN_LINK_CONDITIONS]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Condition**\n**expression**\n**parse error**\n<size:10>ER_SN_LINK_COND_PARSE</size>" as ER_SN_LINK_COND_PARSE [[../tools/sphinx-needs/features.html#ER_SN_LINK_COND_PARSE]] #Pink
rectangle "<size:12>Fault</size>\n**Condition**\n**evaluates to**\n**the wrong**\n**result**\n<size:10>ER_SN_LINK_COND_EVAL_WRONG</size>" as ER_SN_LINK_COND_EVAL_WRONG [[../tools/sphinx-needs/features.html#ER_SN_LINK_COND_EVAL_WRONG]] #Pink
rectangle "<size:12>Fault</size>\n**Condition hides**\n**a safety-**\n**relevant link**\n<size:10>ER_SN_LINK_COND_HIDES_SAFE</size>" as ER_SN_LINK_COND_HIDES_SAFE [[../tools/sphinx-needs/features.html#ER_SN_LINK_COND_HIDES_SAFE]] #Pink
rectangle "<size:12>Fault</size>\n**Condition opt-**\n**in missing**\n<size:10>ER_SN_LINK_COND_NOT_PARSED</size>" as ER_SN_LINK_COND_NOT_PARSED [[../tools/sphinx-needs/features.html#ER_SN_LINK_COND_NOT_PARSED]] #Pink
}
rectangle "<size:12>Feature</size>\n**Legacy**\n**constraint**\n**checking (needs**\n**_constraints)**\n<size:10>FE_SPHINX_NEEDS_DYNAMIC_CONSTRAINTS</size>" as FE_SPHINX_NEEDS_DYNAMIC_CONSTRAINTS [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_DYNAMIC_CONSTRAINTS]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Constraint not**\n**checked during**\n**build**\n<size:10>ER_SN_CONSTRAINT_NOT_CHECKED</size>" as ER_SN_CONSTRAINT_NOT_CHECKED [[../tools/sphinx-needs/features.html#ER_SN_CONSTRAINT_NOT_CHECKED]] #Pink
rectangle "<size:12>Fault</size>\n**Constraint**\n**check fails**\n**silently**\n<size:10>ER_SN_CONSTRAINT_FAIL_SILENTLY</size>" as ER_SN_CONSTRAINT_FAIL_SILENTLY [[../tools/sphinx-needs/features.html#ER_SN_CONSTRAINT_FAIL_SILENTLY]] #Pink
rectangle "<size:12>Fault</size>\n**Constraint**\n**check runs with**\n**wrong data**\n<size:10>ER_SN_CONSTRAINT_WRONG_DATA</size>" as ER_SN_CONSTRAINT_WRONG_DATA [[../tools/sphinx-needs/features.html#ER_SN_CONSTRAINT_WRONG_DATA]] #Pink
rectangle "<size:12>Fault</size>\n**Constraint**\n**check runs with**\n**incomplete data**\n<size:10>ER_SN_CONSTRAINT_INCOMPLETE_DATA</size>" as ER_SN_CONSTRAINT_INCOMPLETE_DATA [[../tools/sphinx-needs/features.html#ER_SN_CONSTRAINT_INCOMPLETE_DATA]] #Pink
rectangle "<size:12>Fault</size>\n**Constraint**\n**check runs with**\n**invalid data**\n<size:10>ER_SN_CONSTRAINT_INVALID_DATA</size>" as ER_SN_CONSTRAINT_INVALID_DATA [[../tools/sphinx-needs/features.html#ER_SN_CONSTRAINT_INVALID_DATA]] #Pink
}
rectangle "<size:12>Feature</size>\n**Declarative**\n**schema**\n**validation of**\n**needs**\n<size:10>FE_SN_SCHEMA_VALIDATION</size>" as FE_SN_SCHEMA_VALIDATION [[../tools/sphinx-needs/features.html#FE_SN_SCHEMA_VALIDATION]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Schema**\n**validation**\n**silently**\n**disabled**\n<size:10>ER_SN_SCHEMA_DISABLED</size>" as ER_SN_SCHEMA_DISABLED [[../tools/sphinx-needs/features.html#ER_SN_SCHEMA_DISABLED]] #Pink
rectangle "<size:12>Fault</size>\n**Schema**\n**definition**\n**itself is**\n**invalid**\n<size:10>ER_SN_SCHEMA_INVALID</size>" as ER_SN_SCHEMA_INVALID [[../tools/sphinx-needs/features.html#ER_SN_SCHEMA_INVALID]] #Pink
rectangle "<size:12>Fault</size>\n**Schema**\n**``select`` does**\n**not match the**\n**intended needs**\n<size:10>ER_SN_SCHEMA_SELECT_WRONG</size>" as ER_SN_SCHEMA_SELECT_WRONG [[../tools/sphinx-needs/features.html#ER_SN_SCHEMA_SELECT_WRONG]] #Pink
rectangle "<size:12>Fault</size>\n**Schema**\n**violation not**\n**surfaced in**\n**build**\n<size:10>ER_SN_SCHEMA_NOT_REPORTED</size>" as ER_SN_SCHEMA_NOT_REPORTED [[../tools/sphinx-needs/features.html#ER_SN_SCHEMA_NOT_REPORTED]] #Pink
rectangle "<size:12>Fault</size>\n**Schema**\n**violation**\n**wrongly**\n**suppressed via**\n**severity**\n<size:10>ER_SN_SCHEMA_WRONG_SEVERITY</size>" as ER_SN_SCHEMA_WRONG_SEVERITY [[../tools/sphinx-needs/features.html#ER_SN_SCHEMA_WRONG_SEVERITY]] #Pink
rectangle "<size:12>Fault</size>\n**Network**\n**validation**\n**misses indirect**\n**links**\n<size:10>ER_SN_SCHEMA_NETWORK_MISS</size>" as ER_SN_SCHEMA_NETWORK_MISS [[../tools/sphinx-needs/features.html#ER_SN_SCHEMA_NETWORK_MISS]] #Pink
}
rectangle "<size:12>Feature</size>\n**Typed need**\n**fields with**\n**JSON-Schema**\n**validation**\n<size:10>FE_SN_TYPED_FIELDS</size>" as FE_SN_TYPED_FIELDS [[../tools/sphinx-needs/features.html#FE_SN_TYPED_FIELDS]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Schema type**\n**mismatch not**\n**detected**\n<size:10>ER_SN_TYPED_FIELD_TYPE_MISS</size>" as ER_SN_TYPED_FIELD_TYPE_MISS [[../tools/sphinx-needs/features.html#ER_SN_TYPED_FIELD_TYPE_MISS]] #Pink
rectangle "<size:12>Fault</size>\n**Enum constraint**\n**not enforced**\n<size:10>ER_SN_TYPED_FIELD_ENUM_MISS</size>" as ER_SN_TYPED_FIELD_ENUM_MISS [[../tools/sphinx-needs/features.html#ER_SN_TYPED_FIELD_ENUM_MISS]] #Pink
rectangle "<size:12>Fault</size>\n**Range**\n**constraint not**\n**enforced**\n<size:10>ER_SN_TYPED_FIELD_RANGE_MISS</size>" as ER_SN_TYPED_FIELD_RANGE_MISS [[../tools/sphinx-needs/features.html#ER_SN_TYPED_FIELD_RANGE_MISS]] #Pink
}
rectangle "<size:12>Feature</size>\n**Typed link**\n**schemas**\n**(cardinality**\n**and targeting)**\n<size:10>FE_SN_TYPED_LINK_SCHEMA</size>" as FE_SN_TYPED_LINK_SCHEMA [[../tools/sphinx-needs/features.html#FE_SN_TYPED_LINK_SCHEMA]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Link**\n**cardinality not**\n**enforced**\n<size:10>ER_SN_TYPED_LINK_CARD_MISS</size>" as ER_SN_TYPED_LINK_CARD_MISS [[../tools/sphinx-needs/features.html#ER_SN_TYPED_LINK_CARD_MISS]] #Pink
rectangle "<size:12>Fault</size>\n**Typed link**\n**accepts wrong**\n**target type**\n<size:10>ER_SN_TYPED_LINK_TARGET_WRONG</size>" as ER_SN_TYPED_LINK_TARGET_WRONG [[../tools/sphinx-needs/features.html#ER_SN_TYPED_LINK_TARGET_WRONG]] #Pink
}
rectangle "<size:12>Feature</size>\n**Configuration**\n**via conf.py or**\n**an external**\n**TOML file**\n<size:10>FE_SPHINX_NEEDS_CONFIG_FILES</size>" as FE_SPHINX_NEEDS_CONFIG_FILES [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_CONFIG_FILES]] #Gold
rectangle "<size:12>Feature</size>\n**Customizable**\n**layouts for**\n**need**\n**presentation**\n<size:10>FE_SPHINX_NEEDS_CONFIG_LAYOUTS</size>" as FE_SPHINX_NEEDS_CONFIG_LAYOUTS [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_CONFIG_LAYOUTS]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Layout leads to**\n**incorrect**\n**rendering**\n<size:10>ER_SN_LAYOUT_INCORRECT_RENDERING</size>" as ER_SN_LAYOUT_INCORRECT_RENDERING [[../tools/sphinx-needs/features.html#ER_SN_LAYOUT_INCORRECT_RENDERING]] #Pink
rectangle "<size:12>Fault</size>\n**Layout leads to**\n**missing**\n**information**\n<size:10>ER_SN_LAYOUT_MISSING_INFO</size>" as ER_SN_LAYOUT_MISSING_INFO [[../tools/sphinx-needs/features.html#ER_SN_LAYOUT_MISSING_INFO]] #Pink
rectangle "<size:12>Fault</size>\n**Layout leads to**\n**incorrect**\n**information**\n<size:10>ER_SN_LAYOUT_INCORRECT_INFO</size>" as ER_SN_LAYOUT_INCORRECT_INFO [[../tools/sphinx-needs/features.html#ER_SN_LAYOUT_INCORRECT_INFO]] #Pink
}
rectangle "<size:12>Feature</size>\n**JSON builder to**\n**export all need**\n**data**\n<size:10>FE_SPHINX_NEEDS_EXPORT_JSON</size>" as FE_SPHINX_NEEDS_EXPORT_JSON [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_EXPORT_JSON]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Exporting**\n**needs.json**\n**fails silently**\n<size:10>ER_SN_EXPORT_JSON_FAIL_SILENTLY</size>" as ER_SN_EXPORT_JSON_FAIL_SILENTLY [[../tools/sphinx-needs/features.html#ER_SN_EXPORT_JSON_FAIL_SILENTLY]] #Pink
rectangle "<size:12>Fault</size>\n**Exported**\n**needs.json file**\n**is not valid**\n<size:10>ER_SN_EXPORT_JSON_NOT_VALID</size>" as ER_SN_EXPORT_JSON_NOT_VALID [[../tools/sphinx-needs/features.html#ER_SN_EXPORT_JSON_NOT_VALID]] #Pink
rectangle "<size:12>Fault</size>\n**Exported**\n**needs.json file**\n**is corrupted**\n<size:10>ER_SN_EXPORT_JSON_CORRUPTED</size>" as ER_SN_EXPORT_JSON_CORRUPTED [[../tools/sphinx-needs/features.html#ER_SN_EXPORT_JSON_CORRUPTED]] #Pink
}
rectangle "<size:12>Feature</size>\n**Link conditions**\n**exported to**\n**needs.json**\n<size:10>FE_SN_JSON_LINK_CONDITIONS</size>" as FE_SN_JSON_LINK_CONDITIONS [[../tools/sphinx-needs/features.html#FE_SN_JSON_LINK_CONDITIONS]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Link conditions**\n**missing in**\n**needs.json**\n<size:10>ER_SN_JSON_LINK_COND_MISSING</size>" as ER_SN_JSON_LINK_COND_MISSING [[../tools/sphinx-needs/features.html#ER_SN_JSON_LINK_COND_MISSING]] #Pink
rectangle "<size:12>Fault</size>\n**Exported link**\n**conditions**\n**differ from**\n**runtime**\n**evaluation**\n<size:10>ER_SN_JSON_LINK_COND_DRIFT</size>" as ER_SN_JSON_LINK_COND_DRIFT [[../tools/sphinx-needs/features.html#ER_SN_JSON_LINK_COND_DRIFT]] #Pink
}
rectangle "<size:12>Feature</size>\n**Permalink**\n**generation to**\n**specific need**\n**objects**\n<size:10>FE_SPHINX_NEEDS_EXPORT_PERMALINKS</size>" as FE_SPHINX_NEEDS_EXPORT_PERMALINKS [[../tools/sphinx-needs/features.html#FE_SPHINX_NEEDS_EXPORT_PERMALINKS]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Permalink**\n**generation**\n**fails silently**\n<size:10>ER_SN_PERMALINK_FAIL_SILENTLY</size>" as ER_SN_PERMALINK_FAIL_SILENTLY [[../tools/sphinx-needs/features.html#ER_SN_PERMALINK_FAIL_SILENTLY]] #Pink
rectangle "<size:12>Fault</size>\n**Permalink is**\n**not valid**\n<size:10>ER_SN_PERMALINK_NOT_VALID</size>" as ER_SN_PERMALINK_NOT_VALID [[../tools/sphinx-needs/features.html#ER_SN_PERMALINK_NOT_VALID]] #Pink
rectangle "<size:12>Fault</size>\n**Permalink links**\n**to non-existing**\n**need**\n<size:10>ER_SN_PERMALINK_NON_EXISTING</size>" as ER_SN_PERMALINK_NON_EXISTING [[../tools/sphinx-needs/features.html#ER_SN_PERMALINK_NON_EXISTING]] #Pink
rectangle "<size:12>Fault</size>\n**Permalink links**\n**to wrong need**\n<size:10>ER_SN_PERMALINK_WRONG_NEED</size>" as ER_SN_PERMALINK_WRONG_NEED [[../tools/sphinx-needs/features.html#ER_SN_PERMALINK_WRONG_NEED]] #Pink
}
node "<size:12>Tool</size>\n**Sphinx-Needs**\n<size:10>TOOL_SN</size>" as TOOL_SN [[../tools/sphinx-needs/index.html#TOOL_SN]] #0fbcf9
rectangle "<size:12>Restriction</size>\n**Do not use**\n**dynamic**\n**functions**\n<size:10>CHECK_SN_NO_DYN</size>" as CHECK_SN_NO_DYN [[../tools/sphinx-needs/restrictions.html#CHECK_SN_NO_DYN]] #Orange
rectangle "<size:12>Restriction</size>\n**Warning to**\n**Error**\n<size:10>RE_SN_WARNINGS</size>" as RE_SN_WARNINGS [[../tools/sphinx-needs/restrictions.html#RE_SN_WARNINGS]] #Orange
rectangle "<size:12>Restriction</size>\n**Clean full**\n**build**\n<size:10>RE_SN_CLEAN</size>" as RE_SN_CLEAN [[../tools/sphinx-needs/restrictions.html#RE_SN_CLEAN]] #Orange
rectangle "<size:12>Restriction</size>\n**Use declarative**\n**schema**\n**validation**\n**instead of need**\n**s_constraints**\n<size:10>RE_SN_USE_SCHEMA</size>" as RE_SN_USE_SCHEMA [[../tools/sphinx-needs/restrictions.html#RE_SN_USE_SCHEMA]] #Orange
rectangle "<size:12>Restriction</size>\n**Use severity**\n**"violation" for**\n**safety-relevant**\n**schema rules**\n<size:10>RE_SN_SCHEMA_VIOLATION</size>" as RE_SN_SCHEMA_VIOLATION [[../tools/sphinx-needs/restrictions.html#RE_SN_SCHEMA_VIOLATION]] #Orange
rectangle "<size:12>Restriction</size>\n**Type every**\n**extra field via**\n**needs.fields**\n**schema**\n<size:10>RE_SN_TYPE_FIELDS</size>" as RE_SN_TYPE_FIELDS [[../tools/sphinx-needs/restrictions.html#RE_SN_TYPE_FIELDS]] #Orange
rectangle "<size:12>Restriction</size>\n**Declare**\n**cardinality on**\n**safety-relevant**\n**link types**\n<size:10>RE_SN_LINK_CARDINALITY</size>" as RE_SN_LINK_CARDINALITY [[../tools/sphinx-needs/restrictions.html#RE_SN_LINK_CARDINALITY]] #Orange
rectangle "<size:12>Restriction</size>\n**Export link**\n**conditions in**\n**needs.json**\n<size:10>RE_SN_JSON_LINK_COND</size>" as RE_SN_JSON_LINK_COND [[../tools/sphinx-needs/restrictions.html#RE_SN_JSON_LINK_COND]] #Orange

' Connection definition 

FE_SN_READ -[#333333]-> TOOL_SN
FE_SN_CONTENT_RENDER -[#333333]-> TOOL_SN
FE_SN_SET_META -[#333333]-> TOOL_SN
FE_SN_LINK -[#333333]-> TOOL_SN
FE_SN_DOCTREE -[#333333]-> TOOL_SN
FE_SN_JSON -[#333333]-> TOOL_SN
FE_SN_DYN_FUNC -[#333333]-> TOOL_SN
FE_SN_TEMPLATE_PAGE -[#333333]-> TOOL_SN
FE_SN_TEMPLATE_NEED -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_DEFINABLE_TYPES -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_CUSTOMIZABLE_OPTIONS -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_CUSTOMIZABLE_LINKS -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_AUTO_ID -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_MANUAL_ID -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_STATUS_ENFORCEMENT -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_TAGGING -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_NEED_PARTS -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_UNIQUE_ID_ENFORCEMENT -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_DIRECTIVE_NEEDTABLE -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_DIRECTIVE_NEEDFLOW -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_DIRECTIVE_NEEDPIE -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_DIRECTIVE_NEEDBAR -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_DIRECTIVE_NEEDIMPORT -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_DIRECTIVE_NEEDEXTEND -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_LINKING_DIRECT -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_LINKING_BIDIRECTIONAL -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_LINKING_DEAD_LINK_DETECTION -[#333333]-> TOOL_SN
FE_SN_LINK_CONDITIONS -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_DYNAMIC_CONSTRAINTS -[#333333]-> TOOL_SN
FE_SN_SCHEMA_VALIDATION -[#333333]-> TOOL_SN
FE_SN_TYPED_FIELDS -[#333333]-> TOOL_SN
FE_SN_TYPED_LINK_SCHEMA -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_CONFIG_FILES -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_CONFIG_LAYOUTS -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_EXPORT_JSON -[#333333]-> TOOL_SN
FE_SN_JSON_LINK_CONDITIONS -[#333333]-> TOOL_SN
FE_SPHINX_NEEDS_EXPORT_PERMALINKS -[#333333]-> TOOL_SN
CHECK_SN_NO_DYN -[#FA8072]-> ER_SN_DYN_INVALID
CHECK_SN_NO_DYN -[#FA8072]-> ER_SN_DYN_WRONG
RE_SN_WARNINGS -[#FA8072]-> ER_SN_DATA_INVALID
RE_SN_USE_SCHEMA -[#FA8072]-> ER_SN_CONSTRAINT_NOT_CHECKED
RE_SN_USE_SCHEMA -[#FA8072]-> ER_SN_CONSTRAINT_FAIL_SILENTLY
RE_SN_USE_SCHEMA -[#FA8072]-> ER_SN_CONSTRAINT_WRONG_DATA
RE_SN_USE_SCHEMA -[#FA8072]-> ER_SN_CONSTRAINT_INCOMPLETE_DATA
RE_SN_USE_SCHEMA -[#FA8072]-> ER_SN_CONSTRAINT_INVALID_DATA
RE_SN_SCHEMA_VIOLATION -[#FA8072]-> ER_SN_SCHEMA_WRONG_SEVERITY
RE_SN_SCHEMA_VIOLATION -[#FA8072]-> ER_SN_SCHEMA_NOT_REPORTED
RE_SN_TYPE_FIELDS -[#FA8072]-> ER_SN_TYPED_FIELD_TYPE_MISS
RE_SN_TYPE_FIELDS -[#FA8072]-> ER_SN_TYPED_FIELD_ENUM_MISS
RE_SN_TYPE_FIELDS -[#FA8072]-> ER_SN_TYPED_FIELD_RANGE_MISS
RE_SN_TYPE_FIELDS -[#FA8072]-> ER_SN_INVALID_OPTION_VALUE
RE_SN_LINK_CARDINALITY -[#FA8072]-> ER_SN_TYPED_LINK_CARD_MISS
RE_SN_JSON_LINK_COND -[#FA8072]-> ER_SN_JSON_LINK_COND_MISSING

@enduml

ID

Title

Type

ART_SN_NEEDS_JSON

Sphinx-Needs needs.json file

artifact

CHECK_SN_NO_DYN

Do not use dynamic functions

restriction

ER_SN_CODE_ERR

Programmatic errors in rst/md files result in ignored Traceability objects

fault

ER_SN_CONSTRAINT_FAIL_SILENTLY

Constraint check fails silently

fault

ER_SN_CONSTRAINT_INCOMPLETE_DATA

Constraint check runs with incomplete data

fault

ER_SN_CONSTRAINT_INVALID_DATA

Constraint check runs with invalid data

fault

ER_SN_CONSTRAINT_NOT_CHECKED

Constraint not checked during build

fault

ER_SN_CONSTRAINT_WRONG_DATA

Constraint check runs with wrong data

fault

ER_SN_CONTENT_SYNTAX

Content contains syntax errors

fault

ER_SN_DATA_INVALID

Invalid meta-data in rst/md files leads to ignored Traceability objects

fault

ER_SN_DEAD_LINK_FALSE_POSITIVE

Dead link false positive

fault

ER_SN_DEAD_LINK_NOT_DETECTED

Dead link not detected

fault

ER_SN_DUPLICATE_ID

Duplicate ID is not detected

fault

ER_SN_DYN_INVALID

Dynamic functions return invalid meta-data

fault

ER_SN_DYN_INVALID2

Function returns invalid value

fault

ER_SN_DYN_NO_EXEC

Function gets not executed

fault

ER_SN_DYN_NO_VALUE

Function returns no value

fault

ER_SN_DYN_WRONG

Dynamic functions return wrong meta-data

fault

ER_SN_DYN_WRONG_CALC

Function returns wrong calculated values

fault

ER_SN_EXPORT_JSON_CORRUPTED

Exported needs.json file is corrupted

fault

ER_SN_EXPORT_JSON_FAIL_SILENTLY

Exporting needs.json fails silently

fault

ER_SN_EXPORT_JSON_NOT_VALID

Exported needs.json file is not valid

fault

ER_SN_EXTEND_FAIL_SILENTLY

Bulk modification failes silently

fault

ER_SN_EXTEND_NOT_COMPLETED

Bulk modification of needs is not completed

fault

ER_SN_EXTEND_NOT_VALID

Bulk modification of needs is not valid

fault

ER_SN_ID_ALREADY_EXISTS

ID already exists

fault

ER_SN_ID_FORMAT_INVALID

ID format is invalid

fault

ER_SN_ID_GENERATION_FAILED

ID generation failed

fault

ER_SN_ID_LENGTH_INVALID

ID length is invalid

fault

ER_SN_IMPORT_NOT_ACCESSIBLE

Importing needs is not accessible

fault

ER_SN_IMPORT_NOT_COMPLETED

Importing needs is not completed

fault

ER_SN_IMPORT_NOT_VALID

Importing needs is not valid

fault

ER_SN_INVALID_LINK_TYPE

Invalid link type used in a need

fault

ER_SN_INVALID_LINK_TYPE_VALUE

Link target value violates link schema

fault

ER_SN_INVALID_OPTION

Invalid field used in a need

fault

ER_SN_INVALID_OPTION_VALUE

Field value does not match declared schema

fault

ER_SN_INVALID_STATUS

Invalid status used in a need

fault

ER_SN_JSON_CONTENT_COR

Traceability objects content corrupted

fault

ER_SN_JSON_COR

Traceability objects meta-data corrupted

fault

ER_SN_JSON_CORRUPTED

Corrupted external needs.json file

fault

ER_SN_JSON_FILTER

Invalid or incorrect filters used for external needs.json

fault

ER_SN_JSON_LINK_COND_DRIFT

Exported link conditions differ from runtime evaluation

fault

ER_SN_JSON_LINK_COND_MISSING

Link conditions missing in needs.json

fault

ER_SN_JSON_LINKS_COR

Traceability objects links corrupted

fault

ER_SN_JSON_MIS

Objects missing in needs.json

fault

ER_SN_JSON_NOT_FOUND

Missing external needs.json file

fault

ER_SN_LAY_META_MIS

Meta-data missing

fault

ER_SN_LAY_META_WRONG

Wrong meta-data is used

fault

ER_SN_LAYOUT_INCORRECT_INFO

Layout leads to incorrect information

fault

ER_SN_LAYOUT_INCORRECT_RENDERING

Layout leads to incorrect rendering

fault

ER_SN_LAYOUT_MISSING_INFO

Layout leads to missing information

fault

ER_SN_LINK_COND_EVAL_WRONG

Condition evaluates to the wrong result

fault

ER_SN_LINK_COND_HIDES_SAFE

Condition hides a safety-relevant link

fault

ER_SN_LINK_COND_NOT_PARSED

Condition opt-in missing

fault

ER_SN_LINK_COND_PARSE

Condition expression parse error

fault

ER_SN_LINK_TARGET_NOT_FOUND

Link target not found

fault

ER_SN_LINK_TARGET_NOT_VALID

Link target is not valid

fault

ER_SN_LINKS_EXT_COR

External needs corrupted

fault

ER_SN_LINKS_MISSING

Links missing

fault

ER_SN_LINKS_NO_BACK

Back-links are not set

fault

ER_SN_LINKS_NO_EXT

External needs not found

fault

ER_SN_LINKS_NO_TARGET

Internal target link is not found

fault

ER_SN_MANUAL_ID_EXISTS

Manual ID already exists

fault

ER_SN_MANUAL_ID_FORMAT_INVALID

Manual ID format is invalid

fault

ER_SN_MANUAL_ID_LENGTH_INVALID

Manual ID length is invalid

fault

ER_SN_META_INVALID

Sphinx-Needs data not valid

fault

ER_SN_META_NOT_COMPLIANT

Sphinx-Needs data is not process-compliant

fault

ER_SN_OPTION_NOT_ALLOWED

Field value is not allowed

fault

ER_SN_PERMALINK_FAIL_SILENTLY

Permalink generation fails silently

fault

ER_SN_PERMALINK_NON_EXISTING

Permalink links to non-existing need

fault

ER_SN_PERMALINK_NOT_VALID

Permalink is not valid

fault

ER_SN_PERMALINK_WRONG_NEED

Permalink links to wrong need

fault

ER_SN_SCHEMA_DISABLED

Schema validation silently disabled

fault

ER_SN_SCHEMA_INVALID

Schema definition itself is invalid

fault

ER_SN_SCHEMA_NETWORK_MISS

Network validation misses indirect links

fault

ER_SN_SCHEMA_NOT_REPORTED

Schema violation not surfaced in build

fault

ER_SN_SCHEMA_SELECT_WRONG

Schema ``select`` does not match the intended needs

fault

ER_SN_SCHEMA_WRONG_SEVERITY

Schema violation wrongly suppressed via severity

fault

ER_SN_SER_AUTH

Authentication issues with needsservice

fault

ER_SN_SER_DOWN

External service unreachable by needsservice

fault

ER_SN_SER_INVALID

needsservice unable to process data from external service

fault

ER_SN_SYN_ER

Syntax errors in rst/md files cause Traceability objects to be ignored

fault

ER_SN_TEMPLATE_FILE_INVALID

Template file is not a valid Jinja2 template

fault

ER_SN_TEMPLATE_FILE_NOT_FOUND

Template file not found

fault

ER_SN_TEMPLATE_FILE_SYNTAX

Template file contains syntax errors

fault

ER_SN_TEMPLATE_NEED_FILE_INVALID

Template file is not a valid Jinja2 template

fault

ER_SN_TEMPLATE_NEED_FILE_NOT_FOUND

Template file not found

fault

ER_SN_TEMPLATE_NEED_FILE_SYNTAX

Template file contains syntax errors

fault

ER_SN_TYPED_FIELD_ENUM_MISS

Enum constraint not enforced

fault

ER_SN_TYPED_FIELD_RANGE_MISS

Range constraint not enforced

fault

ER_SN_TYPED_FIELD_TYPE_MISS

Schema type mismatch not detected

fault

ER_SN_TYPED_LINK_CARD_MISS

Link cardinality not enforced

fault

ER_SN_TYPED_LINK_TARGET_WRONG

Typed link accepts wrong target type

fault

FE_SN_CONTENT_RENDER

Display Traceability objects content in Sphinx-Needs

feature

FE_SN_DOCTREE

Generate object representation in Sphinx-Needs

feature

FE_SN_DYN_FUNC

Apply dynamic functions for meta-data computation

feature

FE_SN_JSON

Export needs.json file using Sphinx-Needs

feature

FE_SN_JSON_LINK_CONDITIONS

Link conditions exported to needs.json

feature

FE_SN_LINK

Establish links between Traceability objects in Sphinx-Needs

feature

FE_SN_LINK_CONDITIONS

Conditional link evaluation (NeedLink, parse_conditions)

feature

FE_SN_READ

Read Traceability objects in Sphinx-Needs

feature

FE_SN_SCHEMA_VALIDATION

Declarative schema validation of needs

feature

FE_SN_SET_META

Assign meta-data to Traceability objects in Sphinx-Needs

feature

FE_SN_TEMPLATE_NEED

Enhance Need content using templates in Sphinx-Needs

feature

FE_SN_TEMPLATE_PAGE

Extend page content with templates in Sphinx-Needs

feature

FE_SN_TYPED_FIELDS

Typed need fields with JSON-Schema validation

feature

FE_SN_TYPED_LINK_SCHEMA

Typed link schemas (cardinality and targeting)

feature

FE_SPHINX_NEEDS_AUTO_ID

Automatic ID generation

feature

FE_SPHINX_NEEDS_CONFIG_FILES

Configuration via conf.py or an external TOML file

feature

FE_SPHINX_NEEDS_CONFIG_LAYOUTS

Customizable layouts for need presentation

feature

FE_SPHINX_NEEDS_CUSTOMIZABLE_LINKS

Customizable link types

feature

FE_SPHINX_NEEDS_CUSTOMIZABLE_OPTIONS

Customizable need fields

feature

FE_SPHINX_NEEDS_DEFINABLE_TYPES

Definable need types

feature

FE_SPHINX_NEEDS_DIRECTIVE_NEEDBAR

Create a bar chart based on need statistics (needbar)

feature

FE_SPHINX_NEEDS_DIRECTIVE_NEEDEXTEND

Modify existing needs in bulk (needextend)

feature

FE_SPHINX_NEEDS_DIRECTIVE_NEEDFLOW

Render a PlantUML flow diagram of needs (needflow)

feature

FE_SPHINX_NEEDS_DIRECTIVE_NEEDIMPORT

Import needs from an external JSON file (needimport)

feature

FE_SPHINX_NEEDS_DIRECTIVE_NEEDPIE

Create a pie chart based on need statistics (needpie)

feature

FE_SPHINX_NEEDS_DIRECTIVE_NEEDTABLE

Display needs in a filterable table (needtable)

feature

FE_SPHINX_NEEDS_DYNAMIC_CONSTRAINTS

Legacy constraint checking (needs_constraints)

feature

FE_SPHINX_NEEDS_EXPORT_JSON

JSON builder to export all need data

feature

FE_SPHINX_NEEDS_EXPORT_PERMALINKS

Permalink generation to specific need objects

feature

FE_SPHINX_NEEDS_LINKING_BIDIRECTIONAL

Bidirectional link tracking

feature

FE_SPHINX_NEEDS_LINKING_DEAD_LINK_DETECTION

Dead link detection and warnings

feature

FE_SPHINX_NEEDS_LINKING_DIRECT

Direct linking between needs using IDs

feature

FE_SPHINX_NEEDS_MANUAL_ID

Manual ID assignment

feature

FE_SPHINX_NEEDS_NEED_PARTS

In-content need parts for granular references

feature

FE_SPHINX_NEEDS_STATUS_ENFORCEMENT

Need status enforcement

feature

FE_SPHINX_NEEDS_TAGGING

Tagging support

feature

FE_SPHINX_NEEDS_UNIQUE_ID_ENFORCEMENT

Unique ID enforcement and checks

feature

RE_SN_CLEAN

Clean full build

restriction

RE_SN_JSON_LINK_COND

Export link conditions in needs.json

restriction

RE_SN_LINK_CARDINALITY

Declare cardinality on safety-relevant link types

restriction

RE_SN_SCHEMA_VIOLATION

Use severity "violation" for safety-relevant schema rules

restriction

RE_SN_TYPE_FIELDS

Type every extra field via needs.fields schema

restriction

RE_SN_USE_SCHEMA

Use declarative schema validation instead of needs_constraints

restriction

RE_SN_WARNINGS

Warning to Error

restriction

TOOL_SN

Sphinx-Needs

tool

../../_images/need_pie_53399.svg
✅ Compliance statistics

Features without faults: 9 / 37

Faults without a mitigation: 75 / 91

Restrictions without fault: 1 / 8

Checks without fault: 0 / 0