Public handbook · CAT documentation 1.0

The receipt is public.
The machinery is not the promise.

This handbook explains the public contract an independent reader needs to inspect a CAT receipt: its fields, verification rules, trust states and limits. It deliberately excludes operator infrastructure and secret-handling details because none of those should be required to verify the public record.

Public record

Enough detail to verify independently. No private keys, wallet holdings, internal controls, deployment topology, environment values or operational runbooks are published here.

Article 01Orientation

Start with what CAT can actually prove.

CAT means Court Attestation & Transparency. CAT v1 is a strict, content-addressed receipt for one opted-in JudgeCat case. It lets a verifier determine whether the presented record matches the signed record and whether the signer was trusted for that record at the relevant time.

A valid CAT v1 receipt can show

  • The exact case data covered by the receipt.
  • The public wallet reference and evidence digest filed.
  • The consent scope and validity window recorded.
  • Whether the content-derived ID and digest match.
  • Whether the issuer and transparency state satisfy the published rules.

It cannot show

  • Who the human behind a wallet is.
  • That a joke, opinion or allegation is objectively true.
  • That a wallet is safe, solvent or creditworthy.
  • That goods were delivered or an agreement was performed.
  • That a receipt is legally binding in any jurisdiction.
Plain English: CAT verifies a filed record. It does not turn that record into identity, truth, credit, custody or a court order.
Article 02Protocol model

Four layers. One honest answer.

A receipt moves through four conceptual layers. Keeping them separate prevents a polished case card from being mistaken for cryptographic proof, or a working signature from being mistaken for official trust.

  1. Presentation

    Case card

    The readable JudgeCat verdict. Its design can change without changing the receipt beneath it.

  2. Record

    Canonical receipt

    A closed, versioned JSON object containing the exact public facts and consent scope being filed.

  3. Proof

    Domain-bound signature

    A detached signature over the canonical receipt under the CAT receipt-signing domain.

  4. Trust

    Registry plus transparency state

    Public history establishes whether the signer was authorised and the exact issuance was committed at the required time.

EnvelopeSchemaDigestSignatureTrust historyExact state
The verifier must complete the chain before showing a trusted result.
Article 03CAT v1 receipt

The signed object is deliberately small.

CAT v1 accepts a closed behavioural-receipt shape. Unknown fields are not silently accepted. A separate proof object transports the signature without rewriting the immutable receipt.

Envelope shape · illustrativeOpen exact schema ↗
{
  "receipt": {
    "protocol": { "name": "CAT", "version": "1.0.0" },
    "case": { "caseId": "…", "verdict": "…" },
    "subject": { "wallet": "…", "network": "solana" },
    "evidence": { "digest": "sha256:…" },
    "consent": { "scope": ["public_case_receipt"] },
    "validity": { "issuedAt": "…", "expiresAt": "…" },
    "receiptId": "cat:…"
  },
  "proof": {
    "algorithm": "Ed25519",
    "issuerKeyId": "cat-key:…",
    "digest": "sha256:…",
    "signature": "…"
  }
}
Top-level receipt responsibilities
FieldWhat it fixesWhat it must not imply
protocolName and semantic schema version.Compatibility with unknown future versions.
caseThe specific JudgeCat filing and verdict record.Objective truth or legal judgment.
subjectA public wallet reference and network.Human identity or wallet ownership history.
evidenceA digest that binds the filed evidence record.That undisclosed data was independently audited.
consentThe published use scope and restrictions.Consent for unrelated reuse or scoring.
validityIssue time, expiry and optional supersession pointer.Perpetual validity.
receiptIdA deterministic identifier derived from the receipt content.A database sequence or personal identifier.
Current status: this schema is published, but CAT v1 production issuance is off. The public issuer registry is an unsigned, empty draft—there is no official production issuer to trust today.
Article 04Verification

Verify the record, then verify the authority.

An independent verifier should follow the public contract in order and stop on failure. It must never replace a precise failure with a reassuring green tick.

  1. 1

    Parse under strict limits

    Accept the documented envelope shape only. Reject malformed input, unsupported versions and unknown receipt fields.

  2. 2

    Validate the schema

    Check required fields, formats, enumerations and closed-object rules against the exact versioned schema.

  3. 3

    Recreate the canonical receipt

    Apply the documented canonical JSON rules so every conforming implementation reaches the same bytes.

  4. 4

    Recompute identifiers

    Recreate the content-derived receipt ID and SHA-256 digest, then compare both without substitution.

  5. 5

    Verify the domain-bound signature

    Verify the detached Ed25519 proof over the CAT-specific signing message—not a screenshot, rendered card or bare digest.

  6. 6

    Resolve trust and lifecycle

    Check the public issuer history, validity window, transparency commitment, withdrawal and supersession state.

  7. 7

    Return the exact result

    Display verified, historical, draft, unknown, invalid or another documented state without collapsing them together.

Conceptual verifierLanguage-neutral pseudocode
assert schema(envelope.receipt, version = "1.0.0")
canonical = canonicalise(envelope.receipt)
assert deriveReceiptId(canonical without receiptId) == receipt.receiptId
assert sha256(canonical) == proof.digest
assert verifyDomainSignature(canonical, proof)

trust = resolveIssuerHistory(proof.issuerKeyId, receipt.validity)
log   = locateExactIssuance(receipt.receiptId, proof.digest)
state = combine(trust, log, expiry, withdrawal, supersession)

return exactState(state)

The reference verifier is available at /cat-protocol#verifyReceipt. Canonicalisation rules and interoperability vectors remain part of the versioned public protocol contract; this handbook does not publish an operator runbook.

Article 05Trust states

“Signature works” is only one check.

CAT exposes distinct states so downstream software can describe what it actually knows. Integrators should preserve these labels and explanations.

verified

Cryptography, current issuer authority, exact log commitment and lifecycle checks all pass.

verified_historical

The receipt remains valid under documented historical key and timing rules.

draft

The structure may be valid, but required signing material is absent. It is not verified.

untrusted_signer

The proof may be cryptographically valid, but the public trust registry does not authorize that signer.

unlogged_receipt

The expected exact issuance commitment is missing from the verified transparency history.

compromised_issuer

The issuer history does not preserve this receipt under the published compromise timing rules.

revoked_issuer

The issuer was revoked at the time relevant to this receipt.

invalid

Schema, identifier, digest, signature or another required check failed.

expired

The receipt passed its filed validity window.

withdrawn

The application records that the opted-in public receipt was withdrawn.

superseded

A later receipt explicitly replaced this version.

Safe UI rule: reserve the green “verified” treatment for a result that satisfies the complete published trust model. A self-signature or unknown key is not official merely because the maths works.
Article 06Lifecycle & versions

Receipts are immutable. Their status can change.

A signed receipt is never rewritten in place. Corrections create a new receipt; public lifecycle information explains what happened to the old one.

  1. Opt in

    The wallet holder is shown the public nature and scope before filing.

  2. File

    Strict receipt fields produce one content-derived identifier.

  3. Issue

    An authorized issuer may attach the domain-bound proof only when production gates are open.

  4. Verify

    Anyone can independently recompute the public checks.

  5. Withdraw

    The application records a withdrawn presentation state; copies already held by others cannot be erased.

  6. Supersede

    A correction creates a new receipt that names the earlier receipt it replaces.

  7. Expire

    The record remains historical, but the verifier stops describing it as currently valid.

Versioning rules for integrators

  • Use the schema URL and semantic version declared by the receipt.
  • Do not guess how to interpret an unsupported major version.
  • Fetch or pin the exact published schema your integration accepts.
  • Treat the Authority v2 draft as a different envelope—not an extension of CAT v1.
  • Preserve unknown future verification states safely rather than assuming success.
Article 07Separate experiment

CAT Authority records two wallets approving the same public proposal.

CAT Authority is a separate v2-draft pilot. Wallet A signs a role-bound message for one immutable proposal. Wallet B reviews that same proposal and countersigns under a separate counterparty role. The public docket can then show whether both proofs match the exact filed proposal.

Wallet A

Propose

Files public terms and signs only the proposer message.

Wallet B

Review & countersign

Sees the filed proposal and signs only the counterparty message.

Anyone

Verify

Recomputes proposal, wallet, role and proof checks.

What the pilot records

  • Two public wallet addresses.
  • One immutable public proposal.
  • Two distinct role-bound message signatures.
  • Creation, expiry and verification state.

What the pilot does not do

  • Create or request a transaction.
  • Move, custody or escrow funds.
  • Identify either human.
  • Compel delivery, payment or performance.
  • Arbitrate a disagreement.
Truthful status: Authority is experimental, public, devnet-labelled and off-chain. It is not CAT v1 production issuance. JudgeCat never holds funds.
Article 08Public interfaces

Schemas and state are inspectable at stable public paths.

These interfaces form the public integration surface. API responses remain the source of current machine-readable state; this handbook explains how to interpret them.

CAT Protocol public references
Method & pathPurposeStatus
GET /protocol/cat/receipt/v1Exact CAT v1 receipt JSON Schema.Published
GET /protocol/cat/issuer-registry/v1Issuer history and revocation schema.Published
GET /protocol/cat/transparency/v1Transparency-chain entry schema.Published
GET /api/cat-protocol/issuersCurrent public registry document and root state.Live · empty
GET /api/cat-protocol/transparencyPublic application transparency chain and head.Live
POST /api/cat-protocol/verifyStateless verification of a supplied CAT v1 envelope.Live
GET /protocol/cat/authority/v2-draftExperimental Authority proposal schema.Draft pilot
GET /protocol/cat/exchange/v0.1-draftExperimental fee-aware direct-settlement docket schema.Draft.2 simulator
POST /api/cat-protocol/exchange/simulateRuns one generated exact-match or failure scenario, including atomic service-fee evidence. No real transfer or fee.Live simulator
Browser integration · CAT v1 verifierPublic endpoint
const response = await fetch("https://judgecat.app/api/cat-protocol/verify", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ envelope })
});

const result = await response.json();
if (!response.ok) throw new Error(result.error || "Verification failed");

renderExactState(result.status, result.checks);

Treat public endpoints as rate-limited internet services: validate inputs locally where practical, handle non-success responses, cache only public schemas appropriately and never treat network failure as verification success.

Article 09Privacy & threat boundary

Public receipts require public-eyed consent.

CAT minimises the signed record, but it cannot make public information private. A user should understand exactly what will be published before signing or opting in.

Privacy

Publish the minimum

Do not place names, addresses, delivery details, private messages, secret material or unnecessary personal data inside public receipt fields.

Consent

Scope is not a blank cheque

Use the recorded scope only for its stated purpose. Do not silently repurpose CAT receipts into identity, credit or universal reputation profiles.

Replay

Keep signatures in their domain

A CAT receipt proof, Authority proposer proof, counterparty proof, login message and wallet transaction are different actions. Never substitute one for another.

Presentation

Screenshots are exhibits, not proof

Always verify the exact envelope. A copied image, green badge or shortened summary can be altered or detached from its lifecycle state.

Availability

Failure is not validity

If the verifier, trust registry or lifecycle record cannot be reached, display an unavailable state. Do not assume the last convenient answer.

Authority

Two keys are not two identities

Bilateral wallet signatures show control of the signing keys at that moment. They do not identify, vet or legally bind the humans behind them.

Operational boundary

Some details should remain irrelevant to public verification.

Operator infrastructure, private-key handling, internal abuse controls, deployment layout, private configuration and incident runbooks are intentionally outside this handbook. The public verification contract must stand without relying on those details.

Article 10Integration guide

Ship the verifier, not a trust shortcut.

A conforming integration should be conservative: accept only versions it understands, preserve exact states and make the limits visible beside the result.

Public integration checklist

  • Pin an accepted schema version and reject unsupported major versions.
  • Validate the closed receipt object before computing identifiers or signatures.
  • Verify receipt ID, digest and the domain-bound proof independently.
  • Resolve issuer authority and exact transparency commitment for the relevant time.
  • Check expiry, withdrawal and supersession whenever displaying current status.
  • Render the exact documented state; never turn unknown or unavailable into verified.
  • Show the subject wallet, consent scope and protocol limits in human-readable form.
  • Keep CAT v1 and Authority v2-draft envelopes separate.
  • Do not use CAT as identity, credit, custody, escrow or legal-enforceability proof.
Article 11Questions

Frequently entered into evidence.

Does a CAT receipt prove a wallet belongs to a person?

No. It proves facts about a specific public receipt and, when valid, its issuer state. It does not identify the human controlling the subject wallet.

Can I trust any receipt with a valid Ed25519 signature?

No. A signature can be mathematically valid while the signer is unknown, revoked, compromised or outside its authorized period. CAT checks the complete public trust and lifecycle state.

Is CAT v1 production issuance live?

No. The public issuer registry is currently unsigned and empty. The verifier and schemas are live; official production issuance is off.

Does CAT Authority send a transaction or charge a fee?

No. The current pilot requests role-bound off-chain message signatures only. It creates no transaction, moves no funds and gives JudgeCat no custody.

Can CAT Authority prove an agreement was completed?

No. It can show that two controlling keys signed the same filed proposal. It does not prove identity, delivery, payment, legal enforceability or performance.

Is CAT Exchange available?

The deterministic v0.1 evidence simulator is available. It uses generated wallets and transfers only. Real wallet authorization, payment inspection, dispatch, escrow, refunds and dispute handling are not live.

Does CAT Exchange charge the displayed 0.001 SOL fee?

No. The current simulator files and verifies the fee as a generated signed term but creates no transaction and collects nothing. A future real pilot would disclose the seller amount, service-fee recipient, exact fee and buyer total before either wallet signs.

Why are infrastructure and secret-management details absent?

They are not part of the public verification contract and publishing them would add risk without helping an independent verifier. Public schemas, algorithms, states and interfaces remain documented.