Skip to content

Cross-org / supplier traceability: external-anchor + boundary-coverage MVP #253

@avrabe

Description

@avrabe

Problem

Rivet's traceability today is single-organization. As soon as a chain
crosses into a supplier's repo (or a non-rivet ALM tool), the link
goes dangling, coverage looks red, and the auditor cannot
distinguish "we forgot to satisfy this" from "the supplier owns
what's downstream"
. The user's framing:

Imagine a project involving several hardware and implementations
and spawning from several variations along the way as in-house. At
the same time I might have the topic that some of my components
are also to be used by someone else which might have a different
idea how the fields are mapped or even how this is being tracked
at all. How would we as of today prove an overall status of this
when e.g. saying we start from the top one and would like to get
all the linkage down to the smallest one or possibly have to say
"until here, and then an external provides me this and I can't
further link to their requirements" (think supplier management).

Design doc

Full research note (competitor survey, ISO 26262 / ASPICE pointers,
sphinx-needs / OSLC / ReqIF / AUTOSAR comparison, six-element design
proposal, open questions) lives at
docs/design/cross-org-supplier-traceability.md.

What's missing today

  • No notion of "the chain ends here intentionally" — coverage is
    binary.
  • No structured external link target (today's target: is a flat
    string).
  • No federation handshake for non-rivet suppliers (ReqIF / OSLC /
    PDF deliveries).
  • No field-mapping recipe at the artifact-import boundary
    (migrate.rs recipes work between schema versions, not between
    organizations).
  • No provenance trail recording who delivered what, when, with
    which hash.

MVP scope (this issue, ~3 weeks)

Smallest version that demonstrates the boundary-coverage semantic
without adding any federation wires:

  1. external-anchor artifact type in schemas/common.yaml
    with fields source-of-truth, expected-derived-types,
    received-status, optional contract-reference and
    cited-source (re-uses the typed field shipped in 0.7.0).
  2. Three-state coverage in rivet-core/src/coverage.rs:
    classify a chain that terminates at an external-anchor whose
    expected-derived-types covers the missing rule type as
    EXTERNAL_BOUNDARY (not UNCOVERED). CoverageEntry gains
    external_boundary count + ID list.
  3. rivet supplier list and rivet supplier check
    read-only commands that surface anchors and boundary coverage.
  4. Doc topic rivet docs supplier explaining the model, with
    a worked example (an OEM with one in-house and one supplier-
    delegated chain).

That alone makes the auditor story honest: "47 satisfied,
6 delegated to acme (boundary), 2 genuinely uncovered."

Phase 2 (separate issue)

  • derives-from-external link type with structured target ({ org, contract, doc-id, last-synced, sha256, anchor }).
  • cited-source backend for kind: reqif (read-only, sha at
    fetch time).
  • rivet supplier pull <anchor-id> for kind: file | reqif,
    caching under .rivet/supplier-cache/<anchor-id>/.
  • FederationProvenance block on imported artifacts.

Phase 3 (separate issue)

  • Field-mapping recipes in schemas/supplier-mappings/.
  • rivet supplier publish (manifest emission for rivet-to-rivet).
  • OSLC / Polarion backends for cited-source.
  • Variant-aware anchors (when: clause).
  • rivet supplier promote <anchor-id> to convert delegated chain
    to first-party.

Open questions for scoping

  • Subcommand placement: new top-level rivet supplier (recommended)
    vs extend rivet externals.
  • Coverage display: single 100% sum with three colours
    (recommended) vs separate "supplier delegation" panel.
  • Anchor lifecycle: never auto-delete; require explicit
    rivet supplier promote.
  • Authentication: defer to Phase 2; MVP records source_hash per
    fetch which is the primitive every signing scheme needs.

Related

Standards / audit anchors

  • ISO 26262 Part 8 §5 (Interfaces within distributed development)
    — DIA concept maps to external-anchor.
  • ASPICE PAM 4.0 SUP.10 / SUP.8 — change & config across the
    OEM-supplier interface.
  • OSLC Configuration Management — Phase 3 wire format candidate.
  • ReqIF + Automotive ReqIF Implementation Guide — Phase 2 wire.
  • sphinx-needs needs_external_needs — closest open-source prior
    art for "read-only federated needs".

Refs: REQ-020 (cross-repo links), REQ-025 (adapters), FEAT-001
(interop surface). Candidate new requirements:
REQ-NEW-supplier-anchor, REQ-NEW-boundary-coverage.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions