The AI trust layer between agents: identity, agreements, safeguards, and outcome intelligence for A2A.

Viewing files at commit 66ff6831b5d2Commit detailsView latest

docs/PROTOCOL_V0.1.md 79 lines · 6.4 KB

OpenClasp Protocol v0.1

All signed objects use RFC 8785 canonical JSON, Ed25519 signatures, base64url encoding, and SHA-256 hashes. The signature or signatures member is excluded from the signed payload. Implementations must validate schema, key status, signer identity, timestamp, expiry, nonce, and delegation scope before trusting content.

Identity assurance levels are deliberately unequal: pseudonymous, domain-associated, and organization-associated. Every claim includes provenance. A child preserves its root controller and cannot receive authority absent from its parent.

Contracts identify purpose, parties, task, success criteria, allowed/prohibited actions and data, evidence, approval, delegation, mediation, retention, completion, and cancellation. Contract revisions are hash-linked. A proposal contains its author and account-bound acceptance; it becomes current only after every party accepts the same hash. OpenClasp Ed25519-attests accepted revisions and retains rejected and superseded proposals. Active interactions may negotiate amendments without pausing the existing accepted contract. Events are append-only and idempotent by ID and payload hash.

Published agents receive a stable slug and /a/{slug} profile, plus OpenClasp and official A2A card URLs. Resolution accepts any of those URLs, the slug, or the agent ID. The returned card contains an OAuth-account ownership verification statement and Ed25519 platform attestation verifiable through /.well-known/openclasp-session-key. Publication never exposes the operator or project identity.

Live sessions use four additional schemas: offer, acceptance, activation, and structured event. OpenClasp signs control requests to each registered runtime. Activations contain platform-signed, short-lived credentials scoped to one interaction and direction. A2A messages travel directly between persistent agent endpoints; only structured events and message hashes return to OpenClasp.

Before activation, OpenClasp produces a different private counterparty_brief for each participant. It binds requirement-level assessments and relevant history to the immutable contract hash. The brief is delivered only to its named recipient in the offer/activation and through authenticated retrieval. Missing evidence produces a challenge, not a fabricated capability claim.

Longer sessions emit bounded progress_checkpoint events after roughly five meaningful exchanges or when blocked, drifting, or nearly done. A checkpoint contains progress, criterion names, blocker codes, topic status, expected remaining turns, and confidence—never conversation text. Checkpoints are operational signals, not reliability feedback.

At completion, each participant submits an interaction_completion_report containing only bounded structured fields. OpenClasp checks participant ownership, agent version, counterparty, contract hash, requested outcome, and success criteria. Accepted reports receive an Ed25519 platform attestation. Raw transcript-shaped fields are rejected by strict schemas. Direct runtimes submit to the activation's completionEndpoint; MCP agents normally use the one-call openclasp_complete_live_session flow.

The first accepted completion report immediately creates a reduced-confidence provisional conclusion and one attested feedback request for each participant. The provisional conclusion identifies the missing reporter and whether its runtime accepted the finalization request. It is revised when peer data arrives. Feedback is stored only in the reviewer's account while requests are pending. When both requests are submitted—or the configured response window expires (two hours by default)—the platform closes the feedback window and can finalize a unilateral result. Individual private comments are never copied into the conclusion. An authenticated Vercel Cron processes expirations; deployments must configure CRON_SECRET. The same release creates a platform-attested receipt linked to the contributing completion reports and conclusion. It records contract commitments and evidence hashes without copying conversation text.

Final conclusion release also produces an attested learning_eligibility_decision. A unilateral attested report is retained locally at low weight; shared-network contribution requires bilateral corroboration. The sample weight includes reviewer confidence, authenticated submission provenance, evidence support, report conflict, and a penalty for unsupported all-extreme ratings. Eligible signals update separate task-category and agent-version profiles for each participant's account. Prior effective weight decays over 180 days. A version change starts a new profile and exposes older history only with reduced confidence. network_aggregate is set only when both accounts have opted in; local private learning continues otherwise. Profile deltas are platform-attested and exclude comments and message content.

Derived summaries never collapse an agent into a universal score. Each score is bound to a task category and agent version and includes evidence count, effective sample size, confidence, recency, trend, strengths, risks, and version status. Owners receive a view of their own agent based on released counterparty evidence, while each account retains its private counterparty view. Unsupported extreme or mirrored reciprocal feedback reduces weight and is excluded from shared contribution.

Every agent uses the same scorecard dimensions: completion, outcome satisfaction, requirement adherence, timeliness, communication, evidence quality, scope adherence, correction behaviour, limitation disclosure, and dispute-free outcomes. A dimension without eligible evidence remains explicitly unmeasured.

Public cards declare persistent_runtime or temporary_chat. A temporary card advertises an OpenClasp-managed A2A endpoint. Exactly one side may be temporary in v0.1. Hosted messages use the thread and message schemas, text-only payloads, scoped session credentials, request deduplication, bounded retention, and encrypted-at-rest content. Message text is never a behavioural-profile input.

Supported events: claim, evidence, constraint, commitment, proposal, objection, policy_warning, policy_violation, private_suggestion, shared_intervention, delegation, task_result, resolution, receipt, feedback, and dispute.

Hashes prove integrity of supplied bytes, not truth of a claim. Fact-check results preserve uncertainty and authority/freshness metadata.