1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[]
= "contextgraph-types"
= "Context Graph Protocol wire types: context frames, queries, capabilities, provenance. MIT, zero deps beyond serde — publishable to crates.io independently of any stella code."
= true
= true
= true
= true
= true
= true
= "https://docs.rs/contextgraph-types"
= "README.md"
= ["contextgraph", "context", "protocol", "agents", "llm"]
= ["encoding", "api-bindings"]
# Overrides the workspace default (publish = false) — this crate is the
# industry-facing artifact meant to be published on its own (issue #19).
= true
[]
# Off by default so the crate's "zero dependencies beyond serde" promise holds
# for the pure wire consumer. `ProvenanceAttestation` and `RecordAttestation`
# themselves always compile — only the hashing and signature checking need real
# cryptography.
= []
# Frame-layer provenance attestation (`SPEC.md` §6.5, ADR 0010). Its preimage is
# a length-prefixed encoding of typed fields, so it needs no JSON canonicalizer.
= ["dep:sha2", "dep:ed25519-dalek"]
# Record-layer content addressing (lifecycle profile LH1, ADR 0017):
# `record_hash` over the RFC 8785 (JCS) canonicalization of a record. A record
# is an open-ended JSON document, so this half genuinely needs a conforming
# canonicalizer and a JSON value model — which is why it is a feature of its own
# rather than a widening of `attestation`, and why a frame-only consumer never
# pays for it.
= ["dep:sha2", "dep:serde_json", "dep:serde_json_canonicalizer"]
# Record-layer attestation (profile LC3, ADR 0017): a detached Ed25519 signature
# over a `record_hash`. Implies `attestation` because the two layers share one
# verdict vocabulary and one hex/digest parser.
= ["record-hash", "attestation"]
[]
= true
= { = true, = true }
= { = true, = true }
= { = true, = true }
# RFC 8785 (JCS), delegated rather than hand-rolled. JCS number serialization is
# ECMAScript `Number::toString`, whose exponent thresholds and shortest-round-trip
# digit selection are precisely where reimplementations diverge silently; this
# crate routes them through `ryu-js`, the Boa engine's ECMAScript formatter.
= { = true, = true }
[]
= true
[]
# docs.rs renders the attestation surface; ordinary builds still opt in.
= true