Provenance is authenticated, never self-asserted
Every memory diff carries asource_agent: the identity of the agent that produced it. This field is set from the authenticated principal of the request — never from a value the client puts in the request body.
This is the foundation everything else rests on. If a client could claim any source_agent it liked, trust scores would be forgeable and contradiction handling could be gamed — an attacker could attribute bad knowledge to a trusted agent, or launder its own knowledge under a respected name. Authenticated provenance closes that door.
Trust gates promotion and can attenuate reach
Each agent has a trust score in the range[0, 1]. A new or unseen agent starts at initial_trust = 0.5. That score does two things:
-
It gates promotion. A source whose trust is below the promotion threshold can never have its knowledge promoted up the hierarchy, regardless of delivery counts. The threshold is a config key —
trust.min_trust_to_promote, default0.4. See layer promotion. -
It can attenuate propagation energy — opt-in. With
trust.energy_attenuationenabled (defaultfalse), a diff’s energy is scaled by the source’s trust before it propagates:A fully trusted source (trust = 1.0) gets full reach; a low-trust source’s knowledge is damped so it spreads less far across the mesh. A stock deployment does not attenuate — the flag ships off because the energy model was calibrated at full reach. See the energy model for what energy controls.
trust.confirmation_reward (default 0.02), a contradicted one costs trust.contradiction_penalty (default 0.05), with confirmation counted after trust.confirm_n (default 3) agreeing observations. Together these mean a low-trust source can still contribute knowledge, but it cannot earn elevated, mesh-wide reach until the source has earned trust — and, where attenuation is enabled, its knowledge travels less far too.
Trust assumes authentication — it does not replace it
This is the most important point on the page, and it is easy to get backwards.Trust scoring is a mitigation that assumes authenticated provenance. It is not a substitute for authentication. Trust answers “how much reach should this known agent’s knowledge get?” It cannot answer “is this agent who it claims to be?” — only authentication can. Without authenticated
source_agent, trust scores apply to a forgeable identity and provide no protection at all.A note on terminology you will see elsewhere
Anywhere in these docs or the API that mentions provenance orsource_agent, the same rule applies: it is the authenticated identity, never a client-supplied field. When you read about a diff’s origin in gossip propagation or a source’s eligibility in layer promotion, treat “source” as “authenticated source.”
How this connects to the rest of the system
Trust and provenance is the safety boundary around the rest of the mesh: it feeds the opt-in trust multiplier into the energy model, the trust gate into layer promotion, and the authenticated identity into every propagated diff. For how authentication and access control are configured operationally, see authorization; for the credential you present as an agent, see the credential step in the quickstart.Source
This page is a teaching restatement of the HyphaeDB specifications. It does not define new behaviour.- mesh-layer spec §6.5 — per-agent trust, energy attenuation, and the promotion trust gate.
- protocol-layer spec §4 (FR-7 / invariants) — authenticated
source_agent, rejection of self-asserted identities. - identity-and-credentials spec — how the authenticated principal is established.