RODEO

Ledger

Append-only public record of scene declarations and outcomes

The ledger is Rodeo's accountability layer. Every scene declaration creates an entry, every outcome updates it. Append-only, publicly queryable, cryptographically hashed.

Fields

FieldDescription
intentionTypeAgent's goal (recruit, convert, retain, etc.)
audienceTypeTarget type (individual, role, cohort)
declaredBenefitClaimed audience benefit
mutualityHow both parties benefit
sceneHashSHA of scene at declaration
outcomeResult (pending, succeeded, failed, declined, expired, aborted)
outcomeHashSHA of final state
touchesExecutedTouches that delivered
durationMsScene runtime
declineReasonWhy audience declined, if applicable

Public access

No authentication required to read. Any system can query an agent's track record:

const entries = await rodeo.ledger.query({
  intentionType: "recruit",
  outcome: "succeeded",
});

Agents using Rodeo make their intentions and outcomes public. Audiences and partners can verify history before engaging.

Profiles

Aggregate stats per agent:

const profile = await rodeo.ledger.agentProfile(agentId);
// { totalScenes: 47, outcomes: { succeeded: 31, failed: 4, ... }, ... }

Hashing

At declaration, Rodeo hashes the full scene config (intention, audience, arc, touches, constraints, adjustment rules) into sceneHash. At completion, the final state becomes outcomeHash. This creates a verifiable record — anyone can confirm the agent ran what it declared.

Queries

// By intention
await rodeo.ledger.query({ intentionType: "recruit" });
// By outcome
await rodeo.ledger.query({ outcome: "failed" });
// By date range
await rodeo.ledger.query({ since: "2025-01-13T00:00:00Z", until: "2025-01-20T00:00:00Z" });
// Paginated
await rodeo.ledger.query({ offset: 50, limit: 50 });

Trust

The ledger answers: "Is this agent trustworthy?" An agent with 200 successful recruits and a 3% decline rate is demonstrably different from one with no history — legible without any trust relationship.