L.O.B.S.T.E.R.

Lightweight Open BMW Software Traceability Evidence Report
✔ !

Overview

Coverage

Category Ratio Coverage OK Items Total Items
Use Cases 62.5% 62.50% 5 8
System Requirements 100.0% 100.00% 6 6
Software Requirements 100.0% 100.00% 5 5
System Tests 100.0% 100.00% 7 7
Software Tests 100.0% 100.00% 11 11

Tracing policy

LOBSTER Tracing Policy n_1cf7e301510c711b73d2b182b9dcf084 Use Cases n_419cfc02b324dc7d8faefa90ed608fb0 System Requirements n_1cf7e301510c711b73d2b182b9dcf084->n_419cfc02b324dc7d8faefa90ed608fb0 n_9d273bd32c1fceb91b7d6a4d40e98bdd Software Requirements n_419cfc02b324dc7d8faefa90ed608fb0->n_9d273bd32c1fceb91b7d6a4d40e98bdd n_3f7ae1d4bec7e6d318ef39c7a7dcaa65 System Tests n_419cfc02b324dc7d8faefa90ed608fb0->n_3f7ae1d4bec7e6d318ef39c7a7dcaa65 n_c4738e043501e27ee3ef08d6a4883d27 Software Tests n_9d273bd32c1fceb91b7d6a4d40e98bdd->n_c4738e043501e27ee3ef08d6a4883d27

Filtering

Item Filters

Show Issues

Filter

Issues

Detailed report

Requirements and Specification

Use Cases

lobster/use_cases.trlc
TRLC Usecase UseCases.List_Ok_Items
As a traceability manager I want the traceability report to list items that
fulfill the tracing policy, and how they do so,
so that I can decide whether to release my product.

Example:
If the tracing policy is: Tests --(trace to)--> Requirements,
then the report shall list all tests that link to at least one requirement,
and the report shall list all linked requirements per test.

The use case applies to the reverse direction as well.
Issues:
  • missing reference to System Requirements
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.List_Not_Ok_Items
As a traceability manager I want the traceability report to list items that
are not covered by other items, where coverage rules are specified by the
tracing policy,
so that I can identify gaps in the coverage.

Example:
If the tracing policy is: Tests --(trace to)--> Requirements,
then the report shall list all tests that do not link to any requirement.

The use case applies to the reverse direction as well.
Issues:
  • missing reference to System Requirements
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.Item_Coverage
As a traceability manager I want the traceability report to show the fraction
of the number of items in one level (of the tracing policy)
which fulfill the tracing policy,
divided by the total number of items in that level (of the tracing policy).
The fraction shall be shown as percentage.

Example:
If the tracing policy is: Tests --(trace to)--> Requirements,
then the report shall show the fraction of requirements which are covered by at
least one test, divided by the total number of requirements.
Issues:
  • missing reference to System Requirements
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.CI_Build_Gate
As a CI administrator I want a tool that inspects a generated traceability
report and exits with a non-zero return code whenever at least one item
is not fully traced,
AND printing each problem in a compiler-message style,
CI pipeline can catch broken traceability automatically.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.Failure_On_Invalid_Input
As a CI administrator
I want that the tool exits with a non-zero return code whenever it encounters
invalid input
so that the CI pipeline can catch invalid input automatically.
Traces to:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.Bazel_Wrapped_Tool_Execution
As a CI administrator I want to invoke LOBSTER tools through Bazel commands
(e.g. "bazel run //:lobster-ci-report -- <FILE>") instead of calling the
underlying Python scripts directly, and I want a relative path typed on the
command line to be resolved against the directory from which I invoked Bazel,
even though Bazel itself executes the tool from a different working directory.
Traces to:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.Tool_Usability
As a user of LOBSTER I want to have a good usability and standard
command-line ergonomics, like built-in help or automatic creation of output
destinations,
so that using the tools is intuitive and seamless in scripts and interactive
use.
Traces to:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.CI_Report_Coverage_Summary
As a requirements manager I want to see the per-level traceability
coverage percentage printed directly to the console when checking a
LOBSTER report, without having to generate or open an HTML report.
Traces to:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC

System Requirements

lobster/tools/core/ci_report/requirements/system_requirements.trlc
TRLC System_requirement core_ci_report_req.Ci_Report_Prints_Compiler_Style_Errors
IF the given LOBSTER report contains at least one item whose tracing status
is neither OK nor JUSTIFIED,
THEN the tool SHALL print one line per associated message to STDOUT in the
format "<file>:<line>:<column>: lobster error: <message>"
AND SHALL exit with a non-zero return code.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement core_ci_report_req.Ci_Report_Exits_Zero_When_Fully_Traced
IF every item in the given LOBSTER report has tracing status OK or JUSTIFIED
(including the case of zero items),
THEN the tool SHALL print nothing to STDOUT
AND SHALL exit with return code 0.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement core_ci_report_req.Ci_Report_Default_Report_File
IF no report file is given on the command line,
THEN the tool SHALL use "report.lobster" in the current working directory
as the report file.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement core_ci_report_req.Ci_Report_Missing_Report_File
IF the report file, whether given explicitly or defaulted (see
[[Ci_Report_Default_Report_File]]), does not exist,
THEN the tool SHALL print an error message to STDERR identifying whether no
file was specified or which file was not found,
AND SHALL exit with a non-zero return code.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement core_ci_report_req.Ci_Report_Show_Coverage_Flag
IF the command line flag "--show-coverage" is given,
THEN the tool SHALL additionally print one line per report level to STDOUT
in the format "coverage: <level>: <percentage>% (<covered> of <total> items)",
reflecting the coverage value already stored in the given LOBSTER report file.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement core_ci_report_req.Relative_Bazel_Path_Resolution
IF a relative report file path is given AND the environment variable
"BUILD_WORKING_DIRECTORY" is set,
THEN the tool SHALL resolve that path relative to the directory named by
"BUILD_WORKING_DIRECTORY" instead of the current working directory.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC

Software Requirements

lobster/tools/core/ci_report/requirements/software_requirements.trlc
TRLC Software_requirement core_ci_report_req.Resolve_Report_Path_Uses_Build_Working_Directory
IF the given report path is relative AND the environment variable
"BUILD_WORKING_DIRECTORY" is set,
THEN the function SHALL return the path joined onto the directory named
by that environment variable,
OTHERWISE it SHALL return the path unchanged.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement core_ci_report_req.Report_Errors_For_Untraced_Items
The function "report_errors_for_untraced_items" SHALL emit an error (via
report.mh.error) for each message of every item in the given report whose
tracing status is neither OK nor JUSTIFIED,
AND SHALL emit no error for an item whose tracing status is OK or JUSTIFIED.

Note: This is what causes "report.mh.errors" to be non-zero IF AND ONLY IF
at least one item is not fully traced, including the case of a report with
zero items (zero errors emitted).
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement core_ci_report_req.Default_Report_File_Argument
The command line argument "lobster_report" of "CiReportTool" SHALL have the
default value "report.lobster", so that it is used IF no report file is
given on the command line.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement core_ci_report_req.Ensure_Report_File_Exists_Raises_On_Missing_File
The function "ensure_report_file_exists" SHALL raise an argument parser
error (leading to program exit) with a message naming the given report file,
IF that file does not exist AND was given explicitly (i.e. is not the
unmodified default value "report.lobster"),
OTHERWISE (file does not exist AND is still the default value) it SHALL
raise an argument parser error stating that a report file must be specified.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement core_ci_report_req.Format_Coverage_Lines
The function "format_coverage_lines" SHALL return one formatted string per
report level, in the format
"coverage: <level>: <percentage>% (<covered> of <total> items)",
reflecting the coverage value already stored in the given report.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC

Implementation

Verification and Validation

System Tests

tests_system/lobster_ci_report/test_missing_input.py
PyUnit Test test_missing_input.InvalidCiReportTest.test_missing_report_file_explicit:13
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_missing_input.InvalidCiReportTest.test_missing_default_report_file:24
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
tests_system/lobster_ci_report/test_output.py
PyUnit Test test_output.ValidCiReportTest.test_all_items_fully_traced:20
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_output.ValidCiReportTest.test_zero_items:39
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_output.ValidCiReportTest.test_default_report_file:56
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_output.ValidCiReportTest.test_show_coverage_flag_not_fully_traced:75
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_output.ValidCiReportTest.test_relative_path_resolved_against_build_working_directory:98
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC

Software Tests

tests_unit/lobster_ci_report/test_ci_report.py
PyUnit Test test_ci_report.ResolveReportPathTests.test_absolute_path_ignored_even_with_env_set:53
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_ci_report.ResolveReportPathTests.test_relative_path_resolved_against_build_working_directory:61
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_ci_report.ResolveReportPathTests.test_relative_path_unchanged_without_env_var:69
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_ci_report.DefaultReportFileArgumentTests.test_default_value_is_report_lobster:80
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_ci_report.EnsureReportFileExistsTests.test_raises_on_missing_explicit_file:96
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_ci_report.EnsureReportFileExistsTests.test_raises_on_missing_default_file:109
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_ci_report.EnsureReportFileExistsTests.test_does_not_raise_when_file_exists:122
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_ci_report.ReportErrorsForUntracedItemsTests.test_emits_error_for_each_message_of_untraced_items:132
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_ci_report.ReportErrorsForUntracedItemsTests.test_emits_nothing_for_fully_traced_items:152
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_ci_report.ReportErrorsForUntracedItemsTests.test_emits_nothing_for_zero_items:165
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_ci_report.FormatCoverageLinesTests.test_formats_one_line_per_level:177
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC

LOBSTER Version: 1.1.0-dev