Skip to content

docs: Polarion and ReqIF export fidelity analysis#169

Merged
avrabe merged 1 commit intomainfrom
docs/polarion-reqif-fidelity
Apr 21, 2026
Merged

docs: Polarion and ReqIF export fidelity analysis#169
avrabe merged 1 commit intomainfrom
docs/polarion-reqif-fidelity

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented Apr 21, 2026

Summary

  • Field-by-field fidelity table for rivet's Artifact model vs Polarion REST API and ReqIF 1.2.
  • Honest scorecard: neither path is lossless today; ReqIF drops provenance unconditionally and corrupts non-string fields values through Rust Debug coercion.
  • Ranked next steps: fix the Debug-form coercion bug, emit provenance as custom ReqIF attributes, add a round-trip fidelity oracle, then build the direct Polarion REST adapter behind a feature flag.

Key findings

  • rivet-core/src/reqif.rs:968-970 writes format!("{other:?}") for any non-string value in fields — silent corruption, not just LOSSY.
  • provenance field is never emitted by the ReqIF adapter (all export sites set provenance: None).
  • tags are joined with , on export and split on , on import with no escaping — any tag containing a comma breaks round-trip.
  • No existing Polarion code in the repo; no rivet-core/tests/fidelity_*.rs exists today.

Recommendation

Support both paths but document the delta. Path 1 (direct Polarion REST) is the audit-grade option once implemented; Path 2 (ReqIF) remains the tool-agnostic interop option (DOORS, Jama, Cameo, StrictDoc). Going rivet → ReqIF → Polarion-import is weird specifically because it runs a file-interchange standard through a proprietary importer when a direct API is one HTTP hop away.

Test plan

Refs: REQ-025, FEAT-001

Field-by-field analysis of rivet's Artifact model against Polarion REST
and ReqIF 1.2, with round-trip test strategy and ranked next steps.
Highlights ReqIF Debug-form coercion bug for non-string fields and the
unconditional loss of provenance on export.

Refs: REQ-025, FEAT-001
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Rivet Criterion Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 49bc395 Previous: 60d728a Ratio
store_lookup/1000 25089 ns/iter (± 63) 19280 ns/iter (± 48) 1.30
diff/1000 716559 ns/iter (± 7087) 584274 ns/iter (± 2706) 1.23
query/100 751 ns/iter (± 3) 619 ns/iter (± 1) 1.21
query/1000 6705 ns/iter (± 38) 5174 ns/iter (± 14) 1.30

This comment was automatically generated by workflow using github-action-benchmark.

@avrabe avrabe merged commit a8ac559 into main Apr 21, 2026
13 checks passed
@avrabe avrabe deleted the docs/polarion-reqif-fidelity branch April 21, 2026 19:43
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 21, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant