Skip to content

release(v0.13.2): ReqIF interchange completeness + export polish#334

Merged
avrabe merged 2 commits into
mainfrom
fix/export-reqif-findings-v0.13.2
May 28, 2026
Merged

release(v0.13.2): ReqIF interchange completeness + export polish#334
avrabe merged 2 commits into
mainfrom
fix/export-reqif-findings-v0.13.2

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 28, 2026

Summary

Ships the three contained findings from the v0.13.1 export-format end-to-end test, fixes a pre-existing date-bomb test, and files the rest as tracked REQs. Driven by /pulseengine-feature-loop (traceability leads → oracle-gated code+tests → release).

Implemented (v0.13.2)

  • REQ-104 — ReqIF export emits a SPECIFICATION + SPEC-HIERARCHY (one entry per SPEC-OBJECT, referencing a SPECIFICATION-TYPE). Importers (DOORS/Polarion/codeBeamer) need this for a navigable outline; some reject a hierarchy-less file. Object/relation payload unchanged (797 objects + 1551 relations on the rivet corpus — round-trip preserved).
  • REQ-103rivet import-results --format reqif <file> brings a ReqIF file back into rivet artifacts. parse_reqif existed in rivet-core but was reachable only via the supplier-pull cache, so the DOORS/Polarion round-trip was export-only.
  • REQ-102gherkin now advertised in rivet export --help + the unsupported-format error (was accepted but undocumented).

Test stabilisation

  • cited_source_integration::check_sources_strict_audit_gate hardcoded a last-checked date that aged past the 30-day staleness threshold — the "clean fixture passes" assertion started failing once >30 days elapsed (pre-existing, surfaced now). Fixture generates a fresh ISO-8601 timestamp at test time.

Regression guards added

  • rivet-core: test_export_emits_specification_hierarchy, test_reqif_roundtrip_preserves_artifacts_and_links.
  • rivet-cli: export_reqif_roundtrip.rs--help lists gherkin; exported ReqIF has SPECIFICATION + SPEC-HIERARCHY; import-results --format reqif round-trips via the binary.

Filed for next minor (NOT implemented here)

REQ Finding Why deferred
REQ-105 HTML export absolute server-route links (href="/artifacts/X", no .html) → broken static/sub-path nav regression-risky link-rewriting + serve-module decoupling
REQ-106 serve variant view reports bound_artifact_count: 0 (doesn't self-pass --binding) serve subsystem; user-reported
REQ-107 sequence/mapping field values render as Rust Debug shared rendering; user-reported
REQ-108 serve external-artifact nav (prefix:ID) + shortcut-link contrast serve subsystem; user-reported
REQ-109 variant scoping for documents design question

Test plan

  • cargo test --workspace — green (60 result-groups, 0 failures)
  • rivet validate — PASS
  • rivet docs check — PASS
  • Manual round-trip: export reqif (797/1551) → import reqif (797/1551)
  • CI

Implements: REQ-102, REQ-103, REQ-104

🤖 Generated with Claude Code

Ships the three contained findings from the v0.13.1 export-format
end-to-end test, fixes a pre-existing date-bomb test, and files the
remaining findings as tracked REQs.

Implemented (REQ-102/103/104):
- ReqIF export now emits a SPECIFICATION + SPEC-HIERARCHY document
  tree (one SPEC-HIERARCHY per SPEC-OBJECT, referencing a
  SPECIFICATION-TYPE). Importers (DOORS/Polarion/codeBeamer) need this
  to render a navigable outline; some reject a hierarchy-less file.
  Object/relation payload unchanged — round-trip preserved.
- `rivet import-results --format reqif <file>` brings a ReqIF file
  back into rivet artifacts (DOORS/Polarion round-trip was
  export-only; parse_reqif existed but was reachable only via the
  supplier-pull cache). Reports artifact + link counts.
- `gherkin` now advertised in `rivet export --help` + the
  unsupported-format error message (was accepted but undocumented).

Test stabilisation:
- cited_source_integration::check_sources_strict_audit_gate hardcoded
  a `last-checked` date that aged past the 30-day staleness threshold,
  flipping the "clean fixture passes" assertion to fail once >30 days
  elapsed. The fixture now generates a fresh ISO-8601 timestamp at
  test time (inline civil-date algorithm, no chrono/jiff dep).

Tests added (regression guards):
- rivet-core: test_export_emits_specification_hierarchy,
  test_reqif_roundtrip_preserves_artifacts_and_links.
- rivet-cli: export_reqif_roundtrip.rs — export --help lists gherkin;
  export reqif has SPECIFICATION + SPEC-HIERARCHY; import-results
  --format reqif round-trips artifacts + links via the binary.

Filed for the next minor (not implemented here — regression-risk /
different subsystem):
- REQ-105 HTML export absolute-link decoupling from the serve module.
- REQ-106 serve variant view passes --binding (bound_artifact_count: 0).
- REQ-107 sequence/mapping field values render as Debug output.
- REQ-108 serve external-artifact navigation + shortcut-link contrast.
- REQ-109 variant scoping for documents (design question).

Full workspace test suite green.

Implements: REQ-102, REQ-103, REQ-104
Refs: REQ-005, REQ-007
Verifies: REQ-102, REQ-103, REQ-104

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 28, 2026

📐 Rivet artifact delta

Change Count
Added 8
Removed 0
Modified 0
Downstream impacted (depth ≤ 5) 0

Graph

graph LR
  REQ_102["REQ-102"]:::added
  REQ_103["REQ-103"]:::added
  REQ_104["REQ-104"]:::added
  REQ_105["REQ-105"]:::added
  REQ_106["REQ-106"]:::added
  REQ_107["REQ-107"]:::added
  REQ_108["REQ-108"]:::added
  REQ_109["REQ-109"]:::added
  classDef added fill:#d4edda,stroke:#28a745,color:#155724
  classDef removed fill:#f8d7da,stroke:#dc3545,color:#721c24
  classDef modified fill:#fff3cd,stroke:#ffc107,color:#856404
  classDef overflow fill:#e2e3e5,stroke:#6c757d,color:#495057,stroke-dasharray: 3 3
Loading
Added
  • REQ-102
  • REQ-103
  • REQ-104
  • REQ-105
  • REQ-106
  • REQ-107
  • REQ-108
  • REQ-109

📎 Full HTML dashboard attached as workflow artifact rivet-delta-pr-334download from the workflow run.

Posted by rivet-delta workflow. The graph shows only changed artifacts; open the HTML dashboard (above) for full context.

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: 6f15d5d Previous: 1ebd25e Ratio
validate/10000 19313842 ns/iter (± 1673446) 15202058 ns/iter (± 1741822) 1.27

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

@codecov
Copy link
Copy Markdown

codecov Bot commented May 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe avrabe merged commit 0d5c308 into main May 28, 2026
21 of 40 checks passed
@avrabe avrabe deleted the fix/export-reqif-findings-v0.13.2 branch May 28, 2026 19:51
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