Problem
A verifier has no normative way to require conditions on who issued a chain it accepts.
- The EvidenceView manifest spine is
(BodyAddress, WireVariantID) pairs and carries no issuer axis.
- A decision profile is
{ID, RequiredScopes[]} — it can only require scopes, so the "what a verifier requires" layer is under-provisioned for issuer identity.
SOURCE_CREDENTIAL_ATTESTATION@1 counts authenticity (n/n), not identity, so it cannot be reused for issuer requirements.
Direction (decided)
- Add the axis on the generic side (this catalog); domain profiles supply only the value source (the domain's trust anchor). Issuer conditions belong to the policy/decision layer (
claims.contract.distinct-from-profile).
- Do not add issuer to the manifest: the issuer is deterministically derivable from the body-addressed chain, so a manifest field would be redundant and a breaking change to
EvidenceViewID.
Required predicates
- chain origin is X
- X appears somewhere in the chain
- every issuer in the chain is within a trust set
- no issuer outside X (only-X)
Open questions
- Name and shape of the vector-exposed field (array in spine order?).
- Assumptions above predate the 2026-08 purpose-first rebuild (D013 EvidenceView / manifest extension) — re-verify against current
main before starting.
Problem
A verifier has no normative way to require conditions on who issued a chain it accepts.
(BodyAddress, WireVariantID)pairs and carries no issuer axis.{ID, RequiredScopes[]}— it can only require scopes, so the "what a verifier requires" layer is under-provisioned for issuer identity.SOURCE_CREDENTIAL_ATTESTATION@1counts authenticity (n/n), not identity, so it cannot be reused for issuer requirements.Direction (decided)
claims.contract.distinct-from-profile).EvidenceViewID.Required predicates
Open questions
mainbefore starting.