diff --git a/core/dr-pipeline/src/sidecar.rs b/core/dr-pipeline/src/sidecar.rs index f70d91c..6f83616 100644 --- a/core/dr-pipeline/src/sidecar.rs +++ b/core/dr-pipeline/src/sidecar.rs @@ -1727,6 +1727,24 @@ mod tests { assert!(!restored.is_neutral()); } + /// TRACES: FR-PLG-8 + /// FR-PLG-8's preservation clause, and only that clause. + /// + /// The requirement opens by saying the sidecar "already preserves lines it + /// does not understand verbatim and writes them back untouched", and that + /// the property "is now load-bearing and shall be treated as such". This is + /// the test that makes it load-bearing rather than incidental. + /// + /// **It is weaker than the requirement's stated acceptance criterion**, + /// which is that the re-saved file be *byte-identical* to the original. + /// This asserts `contains`. The two halves of that criterion exist + /// separately — `writing_the_same_state_twice_is_byte_identical` proves + /// byte identity for content this build understands, and this proves + /// survival for content it does not — and nothing yet joins them into the + /// one claim FR-PLG-8 makes. Everything else the requirement asks for + /// (aggregated alerts, the export gate, rendering without rather than + /// guessing) is unbuilt, which is why the tag is on these two tests and + /// not on the module. #[test] fn an_unknown_operation_survives_a_round_trip() { // The data-loss case that matters: a device running an older build @@ -1742,6 +1760,13 @@ mod tests { ); } + /// TRACES: FR-PLG-8 + /// The other half of preservation: kept in the file, kept out of the edit. + /// + /// "Render without, never render a guess" is a separate clause, and this is + /// not it — that one is about a *recognised* operation whose plugin is + /// missing. This is the narrower claim that an unparsed line cannot reach + /// the graph by accident, which is what makes preserving it safe. #[test] fn an_unknown_operation_does_not_reach_the_graph() { let text = "drsc 1\n\n[version u1]\nname = Default\nrevision = 1\nmodified = 0\n\