analysis/tracing: add canary requirement and test links - #581
Nikhil2206 wants to merge 11 commits into
Conversation
Remove the newly authored comp_req__analysis_tracing__canary_integrity and its requirements/index.rst; this PR should not introduce a new component requirement. Keep the architecture doc and docs bundle wiring in place, and leave the tests' RecordProperty traceability metadata (including the PartiallyVerifies reference) untouched for a future PR to properly connect once the requirement is authored.
Add score/analysis:docs bundle (mount_at baselibs/components/analysis) so score/analysis/tracing:docs has a valid attach point, matching the score/language parent/child mount pattern. This fixes the docs-verify CI failure (mounts.attach_to_missing / toc.not_included). Restore comp_req__analysis_tracing__canary_integrity and its requirements/index.rst, which a prior commit deleted while leaving all 24 canary_wrapper_test.cpp PartiallyVerifies links pointing at it. Per the requirements-management skill, linked tests must point at an existing comp_req.
|
Documentation preview for this pull request is available at: |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The normative requirement overstates configurability, and the PR’s requirement ID, metadata claims, and linked issue are inconsistent with the changes.
Review effort: Balanced
Findings: 1
Open (4)
What changed in this PR
Adds requirements traceability and documentation integration for the Analysis Tracing canary wrapper.
Changes:
- Defines the canary-integrity component requirement and architecture.
- Links 24 canary tests with verification metadata.
- Wires Analysis Tracing documentation into the root bundle.
| File | Description |
|---|---|
score/analysis/tracing/docs/requirements/index.rst |
Defines the canary requirement. |
score/analysis/tracing/docs/index.rst |
Adds the component documentation entry point. |
score/analysis/tracing/docs/architecture/index.rst |
Defines the architecture component. |
score/analysis/tracing/common/canary_wrapper/test/canary_wrapper_test.cpp |
Adds requirement metadata to 24 tests. |
score/analysis/tracing/BUILD |
Creates the tracing documentation bundle. |
score/analysis/docs/index.rst |
Adds the analysis documentation root. |
score/analysis/BUILD |
Creates the analysis documentation bundle. |
docs/baselibs/components/index.rst |
Lists Analysis Tracing in the component overview. |
BUILD |
Mounts the new documentation bundles. |
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| :tags: inspected | ||
| :satisfied_by: comp__baselibs_analysis_tracing[version==1] | ||
|
|
||
| The Analysis Tracing component shall wrap arbitrary data with configurable start and end canary values, detect corruption of either canary during data access, and report corrupted data as unavailable. |
| "bundle": "//score/analysis:docs", | ||
| "mount_at": "baselibs/components/analysis", |
| RecordProperty("Description", | ||
| "Check that corrupting only the start canary is rejected while the end canary remains valid."); | ||
| RecordProperty("TestType", "fault-injection"); | ||
| RecordProperty("DerivationTechnique", "equivalence-classes"); |
| ======================= | ||
|
|
||
| .. comp_req:: Canary-Protected Data Integrity | ||
| :id: comp_req__analysis_tracing__canary_integrity |
| :reqtype: Functional | ||
| :security: YES | ||
| :safety: ASIL_B | ||
| :derived_from: feat_req__com__data_corruption[version==1] |
There was a problem hiding this comment.
Introducing a component requirement for analysis/tracing is fine, but it's not fine to link to some feature requirement of communication. I think we should introduce a proper feature requirement in baselibs.
@hoppe-and-dreams, what's your opinion?
There was a problem hiding this comment.
Yes, the Tracing topic is a bit scattered (it has parts in baselibs, parts in com and parts in logging). But since we defined clear APIs/work splits the requriments should also be split along those lines.
Looping in @andreapefe what's the status of bringing the tracing requirements?
There was a problem hiding this comment.
Bringing the full tracing requirements into SCORE has been postponed until Jan 2027.
We could think of bringing in the baselibs subset which only concerns the public API earlier if necessary.
In any case, the requirements here are not really matching my expectation in terms of content.
@4og and @Nikhil2206 we can sync on what exactly you need when and see what we can provide, then create a specific task out of it.
- Narrow the canary requirement wording to the supported 32-bit/64-bit widths instead of claiming configurable canary values (values are fixed private constants in canary_wrapper.h). - Correct DerivationTechnique to boundary-values for the three boundary-validity tests (single-canary and both-canary edge cases). - Remove :tags: inspected per review request.
|
@Nikhil2206 please check the review findings |
|
Closing per discussion with @anmittag and @andreapf853 — the canary wrapper isn't part of the public interface anymore and is slated for removal, so a standalone requirement for it isn't the right path forward. Proper feature + component requirements for |


Summary
#554
Author the missing
analysis/tracingcomponent requirement and link all 24 canary wrapper tests to it.The requirement covers canary-protected data integrity: wrapping arbitrary data with configurable canaries, detecting corruption at either boundary, and reporting corrupted data as unavailable.
Changes
comp_req__analysis_tracing__canary_protected_data_integrity.analysis/tracingdocumentation bundle and root component wiring.RecordPropertymetadata to all 24 canary wrapper tests.Traceability
All tests use
PartiallyVerifies,Description,TestType, andDerivationTechnique. Deliberately corrupted canary tests usefault-injection; boundary-validity cases useboundary-values.The requirement derives from
feat_req__com__data_corruption[version==1], which requires protection against corruption of data consumed by higher-criticality partners.