Lineage and manifests¶
Canonical hashes identify content; parent IDs identify transformations; merged IDs and source references identify deduplication inputs. These fields remain machine readable across rendering.
What a manifest records¶
PackManifest.to_dict() contains:
schema_versionandlibrary_version;requested budget and accounted total;
token-profile ID, fingerprint, and
estimatedflag;boundary name;
selected item IDs, token costs, retention, and content hashes;
exclusions and reason codes;
dedupe representatives, original IDs, sources, merge decisions, and metadata conflicts;
truncation hashes, direction, and token changes.
audit = pack.manifest.to_dict()
for selected in audit["selected"]:
print(selected["id"], selected["tokens"], selected["retention"])
for excluded in audit["excluded"]:
print(excluded["id"], excluded["reason"])
Transformation lineage¶
redact() and truncation create a new payload and content hash. They add the prior item ID to parent_ids; truncation also records the original hash in its manifest entry. dedupe() keeps the representative ID and records every source ID in merged_from_ids.
The content hash is a content identity, not a trust proof or digital signature. Two items can have the same payload hash while carrying different roles or provenance, which is why dedupe merges policy fields conservatively.
Storage guidance¶
Persist the manifest beside the model request only when audit requirements permit it. It can contain source URIs, content hashes, item IDs, and metadata conflict values. Apply the same tenant isolation, retention, encryption, and access controls used for the request itself.
Manifests from 0.x releases include a schema version but are not guaranteed to retain serialization compatibility across minor versions. See Migration guide.