ProvenLogEvent. Events follow a versioned schema (v1.0) designed for forward compatibility.
Event structure
Field reference
Identity fields
Source fields
Action fields
Timing fields
Integrity fields (server-assigned)
Dimension fields
Action types
Labels vs Metadata
Both are key-value pairs included in the hash chain, but they serve different purposes:
Use labels for values you need to filter on, scope policies to, or group in dashboards — for example
env, dept, loan_id, or user_id. Use metadata for informational fields you want hashed into the audit record but don’t need to query — model name, SDK version, prompt token counts, etc.
Label context
Labels are short identifiers (e.g.loan_id = "LN-2024-4821"), but dashboards often need richer information — the borrower name, the loan amount, the origination date. Label context lets you attach that business data to a label value so it can appear alongside events in the UI without being stored on every event.
Both SDKs expose a set_context / setContext method that sends a fire-and-forget PUT to store the context:
(label_key, label_value) and upserted — calling set_context again for the same pair replaces the previous data. Transport errors are logged as warnings and never raise, so context pushes won’t interrupt your agent.
See the Python SDK and TypeScript SDK guides for full usage details.
Validation
ProvenLog uses best-effort validation. Only a missingagent_id is fatal — all other issues are stored as validation_warnings on the event. The philosophy: audit gaps are worse than imperfect records.