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:
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).
- 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.
rivet supplier list and rivet supplier check —
read-only commands that surface anchors and boundary coverage.
- 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.
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:
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
binary.
target:is a flatstring).
PDF deliveries).
(migrate.rs recipes work between schema versions, not between
organizations).
which hash.
MVP scope (this issue, ~3 weeks)
Smallest version that demonstrates the boundary-coverage semantic
without adding any federation wires:
external-anchorartifact type inschemas/common.yamlwith fields
source-of-truth,expected-derived-types,received-status, optionalcontract-referenceandcited-source(re-uses the typed field shipped in 0.7.0).rivet-core/src/coverage.rs:classify a chain that terminates at an
external-anchorwhoseexpected-derived-typescovers the missing rule type asEXTERNAL_BOUNDARY(notUNCOVERED).CoverageEntrygainsexternal_boundarycount + ID list.rivet supplier listandrivet supplier check—read-only commands that surface anchors and boundary coverage.
rivet docs supplierexplaining the model, witha 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-externallink type with structured target ({ org, contract, doc-id, last-synced, sha256, anchor }).cited-sourcebackend forkind: reqif(read-only, sha atfetch time).
rivet supplier pull <anchor-id>forkind: file | reqif,caching under
.rivet/supplier-cache/<anchor-id>/.FederationProvenanceblock on imported artifacts.Phase 3 (separate issue)
schemas/supplier-mappings/.rivet supplier publish(manifest emission for rivet-to-rivet).cited-source.when:clause).rivet supplier promote <anchor-id>to convert delegated chainto first-party.
Open questions for scoping
rivet supplier(recommended)vs extend
rivet externals.(recommended) vs separate "supplier delegation" panel.
rivet supplier promote.source_hashperfetch which is the primitive every signing scheme needs.
Related
technical-supply-chain counterpart. This issue is about the
organizational-supply-chain (OEM / tier-1 / tier-2). Both
ultimately want signed manifests and provenance, and Phase 2
could share the signing primitive with Supply chain integration: Sigil attestations + SBOM/AIBOM + Rivet traceability bridge #107.
its artifacts": adjacent. The
external-anchortype sidestepsthe need to load the supplier's schema; we describe what we
expect them to produce, not their full vocabulary.
natural addition to the dashboard and would render as a third
colour.
Standards / audit anchors
— DIA concept maps to
external-anchor.OEM-supplier interface.
needs_external_needs— closest open-source priorart 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.