jcp-cite: retrieval provenance — a checkable record of what an agent READ #32
Loading…
Reference in a new issue
No description provided.
Delete branch "jcp/cite"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A recent survey of agent platforms established the shape: they log actions, not sources. A workspace agent's audit trail records that it posted a report or updated a row — and records nothing about the documents it read to decide. The incumbents document this exclusion in their own words ("Recording what an agent did during a specific run is not included"). Citations, where they exist, are convenience links: a URL in rendered output, unbound to the answer, unsigned, unaffected if the referent changes or is deleted.
This crate makes a citation checkable — three properties, each a method, each drawn from a gap the field documented against its own interest:
verify_source()fails → verifiably dangling rather than silently pointing at whatever is there now. A URL cannot do this; a hash can.verify_answer()pins the answer likewise.unreadable_by()names exactly which sources a reader is not cleared to open — because an agent reads under its own grants, not its invoker's, so a citation can legitimately point at content the reader cannot see. Name the gap, don't hand over a link that fails (or wrongly works).It carries the retrieval's joules, so grounding an answer is accounted like any other work.
The composition (the point)
A
Citationis content-addressed and its id is the retrieval frame'spayload_hash, so thejcp/2receipt (SPEC §8, #23) commits it:Tested end to end: the sealed receipt's
payload_hashequals the citation's id and cannot be swapped. This is the concrete payoff of thepayload_hashbump landing first.Example output
New crate, additive — no change to existing crates beyond the workspace member list. 44 suites green, clippy clean.