Requirements Traceability
Test case → requirement mapping
ID |
Title |
Suite |
Status |
Depends On |
Verifies |
|---|---|---|---|---|---|
commit reseals external write |
safe_data |
active |
CONFIG_SAFE_DATA_ALLOW_UNCHECKED_COMMIT |
||
concurrent access is serialised |
safe_data |
active |
|||
detects corruption |
safe_data |
active |
|||
double fault unrecoverable |
safe_data |
active |
CONFIG_SAFE_DATA_REDUNDANT |
||
fault handler events |
safe_data |
active |
|||
fault reaction |
safe_data_fault |
active |
|||
init and verify |
safe_data |
active |
|||
lock from isr asserts |
safe_data_fault |
active |
CONFIG_ASSERT |
||
lock timeout is bounded and reported |
safe_data |
active |
CONFIG_SAFE_DATA_LOCK_TIMEOUT_MS > 0; CONFIG_SAFE_DATA_LOCKING |
||
null args |
safe_data |
active |
|||
read roundtrip |
safe_data |
active |
|||
reduced api surface |
safe_data |
active |
|||
section scope |
safe_data |
active |
CONFIG_SAFE_DATA_GNU_EXTENSIONS |
||
selftest |
safe_data |
active |
CONFIG_SAFE_DATA_SELFTEST |
||
stale tag recovers |
safe_data |
draft |
CONFIG_SAFE_DATA_REDUNDANT |
||
stats count events |
safe_data |
active |
CONFIG_SAFE_DATA_STATS |
||
update abort keeps integrity |
safe_data |
active |
|||
update clamps positive mutator return |
safe_data |
active |
|||
update commits |
safe_data |
active |
|||
verify repair fixes in place |
safe_data |
active |
CONFIG_SAFE_DATA_REDUNDANT |
||
write observes overwritten corruption |
safe_data |
active |
CONFIG_SAFE_DATA_WRITE_CHECKS_OLD; CONFIG_SAFE_DATA_STATS |
||
write reseals |
safe_data |
obsolete |
Covered requirements
Requirements with at least one test case linked to them.
ID |
Title |
Verifies Back |
|---|---|---|
Sealing on initialisation |
||
Argument validation |
||
Pure verification |
TC_SAFE_DATA_DETECTS_CORRUPTION; TC_SAFE_DATA_INIT_AND_VERIFY |
|
In-place repair under mutual exclusion |
||
Validated read |
||
Atomic sealed write |
||
Transactional read-modify-write |
TC_SAFE_DATA_UPDATE_ABORT_KEEPS_INTEGRITY; TC_SAFE_DATA_UPDATE_COMMITS |
|
Mutator contract enforcement |
||
Single-copy fault recovery |
TC_SAFE_DATA_DETECTS_CORRUPTION; TC_SAFE_DATA_STALE_TAG_RECOVERS; TC_SAFE_DATA_VERIFY_REPAIR_FIXES_IN_PLACE |
|
Double-fault detection |
||
Configurable unrecoverable-fault reaction |
TC_SAFE_DATA_FAULT_HANDLER_EVENTS; TC_SAFE_DATA_FAULT_REACTION |
|
Integrity-event statistics |
||
Fault-handler registration and event reporting |
||
Bounded lock acquisition |
||
No ISR-context locking |
||
Serialised access — no torn snapshots |
||
Integrity-mechanism self-test |
||
Write may not silently mask corruption |
||
Reduced API surface at the Strict level |
||
Scoped access block |
||
Unchecked commit |
Coverage gaps
Requirements not yet covered by any test case.
ID |
Title |
|---|---|
Compile-time payload guards |
Implementation → requirement
API symbols (impl needs from the API Traceability) and the requirements
they satisfy (@satisfies in include/safe_data/safe_data.h). A
requirement that constrains the whole API (argument validation, fault
reaction, bounded locking, the ISR check, serialised access, the reduced API
surface) is traced to each public symbol that contains the behaviour:
ID |
Title |
Depends On |
Satisfies |
|---|---|---|---|
SAFE_COMMIT |
defined(CONFIG_SAFE_DATA_ALLOW_UNCHECKED_COMMIT) |
||
SAFE_CONTAINER_DEFINE |
|||
safe_data_commit |
defined(CONFIG_SAFE_DATA_ALLOW_UNCHECKED_COMMIT) |
SD-REQ-002; SD-REQ-014; SD-REQ-015; SD-REQ-016; SD-REQ-020; SD-REQ-022 |
|
safe_data_fault_handler |
|||
safe_data_fault_handler_register |
|||
safe_data_init |
|||
safe_data_read |
|||
safe_data_selftest |
defined(CONFIG_SAFE_DATA_SELFTEST) |
||
safe_data_stats_get |
|||
safe_data_update |
SD-REQ-002; SD-REQ-007; SD-REQ-008; SD-REQ-014; SD-REQ-015; SD-REQ-016 |
||
safe_data_verify |
|||
safe_data_verify_repair |
|||
safe_data_write |
SD-REQ-002; SD-REQ-006; SD-REQ-014; SD-REQ-015; SD-REQ-016; SD-REQ-018 |
||
SAFE_SECTION |
defined(CONFIG_SAFE_DATA_GNU_EXTENSIONS) |
Requirements satisfied by an API symbol:
ID |
Title |
Satisfies Back |
|---|---|---|
Sealing on initialisation |
||
Argument validation |
IMPL-safe_data_commit; IMPL-safe_data_init; IMPL-safe_data_read; IMPL-safe_data_stats_get; IMPL-safe_data_update; IMPL-safe_data_verify; IMPL-safe_data_verify_repair; IMPL-safe_data_write |
|
Pure verification |
||
In-place repair under mutual exclusion |
||
Validated read |
||
Atomic sealed write |
||
Transactional read-modify-write |
||
Mutator contract enforcement |
||
Single-copy fault recovery |
||
Double-fault detection |
||
Configurable unrecoverable-fault reaction |
IMPL-safe_data_fault_handler; IMPL-safe_data_verify; IMPL-safe_data_verify_repair |
|
Integrity-event statistics |
||
Fault-handler registration and event reporting |
||
Bounded lock acquisition |
IMPL-safe_data_commit; IMPL-safe_data_read; IMPL-safe_data_update; IMPL-safe_data_write; IMPL-SAFE_SECTION |
|
No ISR-context locking |
IMPL-safe_data_commit; IMPL-safe_data_read; IMPL-safe_data_update; IMPL-safe_data_write; IMPL-SAFE_SECTION |
|
Serialised access — no torn snapshots |
IMPL-safe_data_commit; IMPL-safe_data_read; IMPL-safe_data_update; IMPL-safe_data_write; IMPL-SAFE_SECTION |
|
Integrity-mechanism self-test |
||
Write may not silently mask corruption |
||
Compile-time payload guards |
||
Reduced API surface at the Strict level |
||
Scoped access block |
||
Unchecked commit |
Requirements that no API symbol satisfies:
No needs passed the filters