A Counterparty Performance Rating for On-Chain AI Agents
by PokoBlue · @PokoBlue99 · May 2026 Live at caliber.poko.blue
Current version: v2.4.0 · Active on Arc Testnet from 2026-10-21. Both v2.3.0 and v2.4.0 attestations verify on-chain:
RatingVerifieraccepts the current methodology version and the immediately previous one. That overlap has no end date, though each attestation still expires at its ownvalidUntil(see §Versioning). Lineage: v2.0.1 (2026-05-24, first public version) → v2.1.0 (2026-06-14) → v2.2.0 (2026-10-10) → v2.3.0 (2026-10-16) → v2.4.0 (2026-10-21). Earlier versions (v1.x and internal-review v2.0) live in §Appendix F for audit only.
TL;DR
The Caliber Rating rates AI agents on Arc based on what they've actually done on-chain — jobs completed, jobs disputed, who paid them, how fast they delivered, who vouches for them. Everything comes from public events on Arc (ERC-8004 + ERC-8183). No vibes. No off-chain noise. If you can read our table below, you can audit any rating we publish.
Why This Exists
Arc is filling up with AI agents. Some are great. Some are sketchy. Some are brand new and haven't proven anything yet.
If you're about to fund an escrow, hire an agent for a job, or let one act on your behalf — you want a quick read on whether this thing actually delivers.
That's what Caliber rates. Not whether an agent is "smart." Not whether it has a cool name. Just: based on its on-chain track record, how likely is it to do the job?
What We Look At (The Core Table)
This is the foundation. Everything in our rating traces back to one of these signals. If you understand this table, you understand the whole system.
| What happens on-chain | What it tells us | What we use it for |
|---|---|---|
| Job created (ERC-8183) | Agent is participating in the market | Activity rate |
| Job funded (ERC-8183) | Someone trusted this agent enough to lock USDC into escrow for them | Inbound reputation |
| Deliverable submitted (ERC-8183) | Agent actually did the work and pushed it back on-chain | Throughput |
| Evaluation accepted ✅ (ERC-8183) | A counterparty said "yes, this delivered" | Success event |
| Evaluation rejected / disputed ❌ (ERC-8183) | A counterparty said "no, this didn't deliver" | Failure event |
| Deadline passed, escrow refundable ❌ (ERC-8183) | Nobody accepted the work in time; anyone may now hand the escrow back to the client | Failure event — counted from the deadline, whether or not the refund has been claimed |
| Settled in USDC (ERC-8183) | The money actually moved | Realized value |
| Reputation attestation (ERC-8004) | Someone on Arc vouched for this agent | Network endorsement |
| Validation event (ERC-8004) | Agent verified a credential | Identity strength |
| USDC transfer, native or ERC-20 | Whom the provider has paid | Leaving out provider-controlled jobs (v2.2.0) |
| Time between events | How fast and consistent the agent is | Operational reliability |
| Counterparty mix | Whether the agent has many clients or just one | Concentration risk |
A few things this table is honest about
- We rate what's observable. No off-chain promises, marketing, or Twitter clout factors in. If it didn't emit an event, we don't see it.
- Performance is two-sided. A "success" requires a counterparty to accept the work. A "failure" requires one to reject it. We're rating the agent, but the data is jointly produced.
- Settlement is the truth signal. Until USDC actually moves, the value is just promised, not realized. We track all three states but anchor our economic metrics to settled value only.
What this table can't tell us
- Whether the work was actually good. If the evaluator was sloppy and accepted bad work, that's a "success" in our data. We inherit evaluator noise.
- Whether the agent is one person, a team, or pure code. Doesn't matter for the rating, but worth saying.
- Whether the counterparty is high-quality. A high-volume agent serving sketchy evaluators looks the same as one serving rigorous ones — for now. We'll fix this later.
How the Rating Gets Built
Three steps, left to right. Each step builds on the previous; each step is documented and reproducible.
fig. 1 — rating pipeline
- completion_rate ratio
- dispute_rate ratio
- delivery_latency_p50 seconds
- delivery_latency_cv unitless
- unique_counterparties count
- unique_validators count
- counterparty_hhi index
- settled_usdc_volume usdc
- self_deal_share ratio
Credibility weighting
Blends agent record with population mean. Small samples pull toward average. Actuarial method, 1960s.
inputs: completion_rate, dispute_rate
output: smoothed reliability score
Forward-looking estimate
Recency-weighted probability of next-job success. Skips jobs still in progress. Returns one probability.
inputs: completion_rate, dispute_rate (recency)
output: p̂
Risk flags
Disclosed heuristics: concentration, sybil pattern and a volume anomaly push the agent to Watch; 90 days idle makes it Dormant.
inputs: top_client_share, unique_clients, top_validator_share, unique_validators, self_deal_share
output: boolean per heuristic
weights revised in public · changes ship as methodology v(n+1)
The table below is the same diagram in copy-pasteable form for accessibility and indexing.
| Step 01 · Foundation | Step 02 · Transformation | Step 03 · Output |
|---|---|---|
| The features | The math | The rating |
| deterministic summaries | three techniques, each disclosed | tier + score + confidence |
| Raw on-chain events summarised per agent. Run the same SQL against the same node, get the same numbers. No predictions yet — just what happened. | Statistics on top of the features. Each technique does specific work and is documented in the methodology — no ensembles, no black boxes. | A signed, methodology-versioned attestation. Never one number alone — the tier states what's been observed, the score quantifies it, the interval declares how sure we are. |
Step 01 — features (deterministic):
| name | type |
|---|---|
completion_rate | ratio |
dispute_rate | ratio |
delivery_latency_p50 | seconds |
delivery_latency_cv | unitless |
settled_usdc_volume | usdc |
unique_counterparties | count |
unique_validators | count |
counterparty_hhi | index |
self_deal_share | ratio |
Step 02 — math (three techniques):
- 2.1 Credibility weighting — blends agent record with population mean. Small samples pulled toward average. Actuarial method, 1960s.
- 2.2 Forward-looking estimate — recency-weighted probability of next-job success. Skips jobs still in progress. Returns one probability.
- 2.3 Risk flags — disclosed heuristics: concentration, sybil pattern and a volume anomaly push the agent to the Watch tier; 90 days without activity makes it Dormant (see the flag table).
Step 03 — output (example):
tier ● Silver describes observed behaviour, not predicted default
score 78 / 100 weighted composite of Step 02 outputs
range 75 – 80 reliability part, 90% under this method's own assumptions
confidence low set by the number of completed jobs
Score composition (weighted sum of Step 02 outputs; revised in public):
| 50% smoothed reliability | 25% forward estimate | 15% network | 10% latency |
|---|
Each step builds on the last. The detail of each step is below.
Step 1: Turn events into features
We take the raw events from the table and summarize them per agent. Things like:
- Completion rate — how often does this agent's work get accepted?
- Dispute rate — how often does it get rejected?
- Speed — how long between funding and delivery? Is it consistent or all over the place?
- Volume — how much USDC has actually settled through this agent?
- Network reach — how many different counterparties? How many different validators?
- Concentration — is this agent mostly serving one client, or spread across many?
All of this is just summarizing what happened. No predictions yet. No magic. If you ran the same SQL against the same node, you'd get the same numbers.
The engine reads each agent's jobs created in the last 30 days and its feedback from the last 30 days, both measured in blocks, and every validation it has received. An agent registered fewer than 14 days ago, or with fewer than 5 of these in total, is not rated: it has no tier, and its page says why. An agent's age is from its registration date; where the index holds no date, from its registration block, counted back from the chain head at Arc's 0.5-second block time (from v2.3.0; before it, the fallback used 1 second per block from the newest registration, which doubled such an agent's age). Validator diversity and the validator-concentration flag read every feedback record and validation the agent has ever received, and cross-chain presence reads the owner's agents on other chains as they are when the rating is computed. Feedback published by Caliber Factor's own outcome contracts is left out of the feedback count, feedback volume and the validator figures (Appendix F, 25 September 2026).
From v2.4.0, Caliber's own agents are not rated, and a job whose client is Caliber's own counts toward no agent's rating. "Caliber's own" means the wallets on Caliber's own-wallet lists and every labelled Caliber test or demo account. Such an agent's page says it is one of Caliber's own test agents and not rated, and no attestation is signed for it. The volume-anomaly and dormancy flags still read every job the agent was provider for, Caliber clients' included: they measure activity, not evidence. The formula, weights, tier gates and confidence cutoffs are unchanged.
Provider-controlled jobs (v2.2.0). A completed job is left out of an agent's evidence when the provider could have controlled its outcome: (a) its evaluator, the address that approved the work, is the provider itself; (b) its evaluator received USDC from the provider in an earlier block than the one in which the job completed; or (c) its client is not the provider and received USDC from the provider in an earlier block than the one in which the job completed.
What "provider" means. It is the address the job pays; on Arc, that is the agent's owner.
What counts as a transfer. Any USDC transfer of more than zero counts, native or ERC-20, at any earlier time. A transfer of zero is not counted: anyone can make one appear to come from any address. It can be a payment for something else, so (b) and (c) are deliberately broad. They see only a direct transfer from the provider's own address; money sent through another wallet or a contract is not traced.
Where the data comes from. On Arc, every USDC movement, native or ERC-20, emits one Transfer event from the system address 0xfffffffffffffffffffffffffffffffffffffffe. Caliber copies the provider's outgoing transfers into its own index, read today from the Arc testnet explorer. It is refreshed each day before the rating run. Where a provider's outgoing transfers have not all been read (its history was cut off, or a transfer came after the last daily read), (b) and (c) apply to what was read. A gap can only leave a job counted; it never leaves one out.
What leaving out means. A job left out is removed from every input the engine derives from jobs: completion_rate, dispute_rate, delivery latency (p50 and cv), settled_usdc_volume, unique_counterparties, counterparty_hhi and self_deal_share (Step 1); the forward-looking estimate (Step 2.2); the interaction count and the confidence line; and the job-based flags. It is as though the job had not been recorded.
What is not affected: jobs that did not complete (rejected and expired jobs still count against the agent whoever controlled them, and open jobs are treated as before); feedback; validations. A job whose client is the provider itself stays subject to the sybil-pattern flag as before. It is left out only when (a) or (b) also holds.
Step 2: Apply the math
Three techniques. Each does specific work.
1. Smoothing for small samples.
Here's a common trap: Agent A has 4 jobs, all successes (100%). Agent B has 200 jobs, 180 successes (90%).
Naive ranking says A is better. Reality says B has actually proven something and A might just be lucky.
We fix this by blending each agent's individual record with the population average, weighted by how much data we have. New agents with thin history get pulled toward the average. Agents with long history get to stand on their own record.
The technique is called credibility weighting. Insurance actuaries have used it since the 1960s. It's the right tool for sparse data.
2. Forward-looking estimate.
A backward-looking completion rate is fine, but you actually want to know: what's the chance the next job goes well?
So we run a model that:
- Weights recent jobs more than old ones
- Skips jobs that are still in progress: only finished jobs count
You get one probability, with no range of its own. How much data stands behind it is the confidence line (§How sure we are). We don't pretend to know more than we do.
3. Risk flags.
Statistics assume nobody's gaming the system. On-chain, that's not safe. So we add some heuristic flags on top:
| Flag | When it fires |
|---|---|
| Concentration: Counterparty | More than 80% of jobs from a single client AND fewer than 3 unique clients |
| Concentration: Validator | More than 80% of the agent's feedback records and validations come from a single address AND fewer than 3 addresses gave them. Read from every feedback record and validation the agent has ever received, not only the last 30 days; feedback published by Caliber Factor's own outcome contracts is left out (Appendix F, 25 September 2026) |
| Sybil pattern | Self-deal share > 30% of jobs AND fewer than 5 unique clients. The flag requires self-dealing to dominate the behavior, not just appear once. Full graph cycle detection is not part of the rating; Caliber Factor's Gate 2 runs a funding-graph search for advances. |
| Volume anomaly | At least 10 jobs created in the last 30 days AND more than 10 times the agent's own rate before them. That rate is the jobs it was provider for that were created before those 30 days, divided by the days it had been registered before them, times 30. Both counts read every job the agent has been provider for, provider-controlled jobs included: this flag measures activity, not evidence. It needs at least 30 days and at least 1 job before the 30 days, so an agent with no past to compare with is not flagged. Read over the agent's whole history on on-chain time (block numbers; days from block numbers at Arc's 0.5-second block time). From v2.3.0; v2.2.0 did not apply it, and as run under v2.1.0 it fired on age alone past 300 days (Appendix F) |
| Dormancy | No job as provider created or completed, no feedback (Caliber Factor's own outcome records left out) and no validation requested or answered for 90 days, read over the agent's whole history on on-chain time. It applies to an agent that passes the rating's gates, which is then rated Dormant instead of its tier; an idle agent that does not pass them is simply not rated. From v2.3.0; before it the engine read only the last 30 days and so never saw 90 days without activity |
These are rules, not models. We disclose every one. If any of the first four fires, the agent is pushed to the Watch tier regardless of its other numbers. Dormancy outranks them: a dormant agent is rated Dormant.
Step 3: The actual rating
What you see on the site is always three things together — never one in isolation.
The tier
| Tier | What it means | Score | Production min jobs | Testnet min jobs (v2.0.1) |
|---|---|---|---|---|
| 🥇 Gold | Strong track record, no red flags | 80–100 | 50+ | 2+ |
| 🥈 Silver | Reliable, decent sample | 75–79 | 20+ | 2+ |
| 🥉 Bronze | Looks promising, limited history | 50–74 | 5+ | 1+ |
| ◯ Pending | Not enough data yet | <50 or insufficient jobs | <5 | <1 |
| ⚠ Watch | Risk flag triggered | Any | Any | Any |
| 💤 Dormant | No job, feedback or validation for 90 days (the flag table) | Any (not a quality tier) | Any | Any |
Why two columns: the production min-jobs values (50/20/5) are the methodology's intended bar — they require a real track record before assigning a quality tier. Arc Testnet has not yet accumulated enough genuine agent-to-agent commerce for those thresholds to populate meaningfully. The testnet values (2/2/1) are an interim calibration so the system is demonstrably operational from day one. As real economic activity accumulates, the testnet column will be retired and the production thresholds activated. See §Appendix F · Calibration history for the schedule.
We don't use AAA/AA/BBB letter grades on purpose. Those grades come from credit rating agencies and carry decades of meaning about default probability that we cannot back up with this data. The medal scheme is intentional: Gold > Silver > Bronze is a hierarchy every culture recognises at a glance, with no inherited semantics about probability of default.
The score
A number from 0–100. It's a weighted combination of:
- 50% — smoothed completion reliability (Step 2.1)
- 25% — forward-looking success probability (Step 2.2)
- 15% — network endorsement (validator diversity, attestations, net of adverse evidence)
- 10% — operational reliability (latency consistency)
These weights are our starting point. We'll adjust as we get more data and we'll publish every change.
Adverse evidence (v2.1.0). The network-endorsement sub-score is built from three components, each capped: validator diversity (up to 50 points, +10 per unique validator), feedback volume (up to 30 points), and cross-chain presence (up to 20 points). As of v2.1.0, the feedback-volume component is computed net of adverse evidence: a negative validator observation — an on-chain feedback_events record with score < 50, such as a signed conformance breach — subtracts 40 positive-feedback-equivalents for each adverse observation before the 30-point cap is applied. Concretely:
net_feedback = max(0, positive_feedback_count − 40 × adverse_feedback_count)
feedback_score = min(30, net_feedback)
The net is floored at 0, so the sub-score never goes negative. Because the feedback-volume component caps at 30 points, a weight of 40 means a single verified adverse observation zeroes out an agent's entire accumulated feedback-volume credit — producing a visible score drop and a tier_down when the agent sits near a tier floor. The rationale: a signed, on-chain-attested breach of a pre-agreed delivery spec is a strong, deliberate adverse signal — categorically heavier than casual positive sentiment, because it is a counterparty putting their signature behind "this agent did not deliver what was agreed." A thumbs-up is cheap; a signed breach is not.
How sure we are
Every rating ships with a confidence line. Things like:
- "High confidence — based on 247 completed jobs over 9 months"
- "Moderate confidence — based on 31 completed jobs"
- "Low confidence — only 6 jobs observed; score anchored to population average"
- "Watch flag: concentration on single counterparty"
This isn't optional. If you hit our API, you get the score AND the confidence in the same response. Anyone hiding their confidence level is selling you something.
The score range
From v2.3.0, every rating with at least one finished job in the window carries a score range: the uncertainty in the reliability part of the score, on the jobs observed so far, at 90% under this method's own assumptions. It comes from the same smoothing as the score. Step 2.1 counts the population's completion rate as 20 jobs' worth of evidence and adds the agent's own completed and failed jobs. The smoothed reliability is the middle of the resulting distribution (a Beta distribution), and the range is its 5th to 95th percentile, carried through the reliability's 50% weight. The forward estimate, network and latency are held at their values. The range is given in whole points.
The tier is assigned on the score, not on the range, and nothing that reads a tier, such as Caliber Factor's agent-quality gate, reads the range. A range that reaches across a tier floor says the tier could differ on the record so far. Because the population counts as 20 jobs, a short record's range carries that assumption as well as the agent's own jobs. An agent with no finished job in the window has no range: a missing range means no evidence, not certainty. The range is published with the score in the rating API and in each rating's JSON and markdown. It is not part of the signed attestation.
Reproduce Anything
The whole point of doing this on-chain is that you don't have to trust us. You can rebuild any rating yourself.
Here's what you need:
- An Arc node — self-hosted or RPC provider
- The contract addresses for ERC-8004 and ERC-8183, and the USDC
Transferevents from the system address0xfff…fffe(v2.2.0) - Our feature definitions (the methodology paper documents every input)
- Our math — the formulas in this paper (Caliber's own implementation is private; the paper is the specification)
- Our rating composition rules from Step 3
We publish today:
- ✅ Raw event data via the public API
- ✅ Computed features per agent (factor breakdown in every rating response)
- ✅ The composition weights (50/25/15/10 — documented above)
- ✅ Final ratings with every component broken out
- ✅ Methodology version stamped on every API response
Source code: the methodology paper is licensed CC BY 4.0 and published on this site. Contract source is verified on the Arc Testnet explorer for each contract Caliber deploys; the per-agent splitters are created by the splitter factory, whose verified source includes the splitter's (checked 1 October 2026). The engine, indexer, web app and SDK are private; the former public repository is archived. The Caliber brand and the canonical issuer signing key (0xbF017698BB2c936D54a74DCABF68Df42800bAA84) are reserved — only attestations signed by the canonical signer are recognised by the deployed RatingVerifier as "Caliber ratings."
If you run the same inputs against your own implementation and get a different rating, we want to hear about it. That's the point.
The Attestation Primitive
The product is the attestation, not just the rating.
Caliber publishes every rating as a signed EIP-712 attestation that any contract on Arc can verify and consume. The rating describes an agent's track record; the attestation makes that description composable into on-chain logic. Any contract on the chain can read a signed Caliber claim and do something with it — gate access, require collateral, weight a vote, route payments, set fees, condition disbursements.
This is what makes Caliber a trust primitive rather than a dashboard. We compute and sign; the network builds on top.
What the attestation carries
Each EIP-712 RatingAttestation carries: the agent's chain + on-chain ID + wallet address, the tier (0–5 enum), the score (0–100), the interaction count, the flags bitfield, the methodology version, a freshness window, and a replay-protection nonce. A contract that verifies the signature against the published Caliber signer key knows the claim is current, complete, and untampered.
Reference implementations
We built two reference contracts to show what consuming an attestation can look like:
RatingGateway— a thin wrapper over ERC-8183createJob()that refuses jobs whose providers fall below a caller-chosen tier threshold (or trigger blocking flags). This is access gating: the application decides who is allowed to participate.CaliberEscrow— a tier-stepped performance-bond escrow. Agents lock USDC collateral when accepting a gated job, sized by their tier. The bond returns on completion or slashes to the original client on rejection/expiry. This is commitment device: the application creates an additional consequence for failure beyond the ERC-8183 protocol's default refund.
These are examples, not the methodology's outputs. Other contracts can consume the same attestation differently — and we expect they will. A staking module could weight votes by tier. A marketplace could set listing fees inversely to tier. A payment router could disburse to Gold agents at lower latency. The attestation is the primitive; the integrations are open-ended.
A note on bonds vs. rating
A bond is a commitment device, not a rating signal. The tier already tells you what the agent has shown. The bond creates a different thing: an actual consequence the agent's wallet feels when they fail. These do related but distinct work. ERC-8183 escrow already refunds the client's budget on rejection — the bond addresses something the budget refund doesn't, the agent's lack of personal downside otherwise.
Bond rates are configurable on-chain (admin-set, event-logged, capped at 50% of budget). They are an editorial market-design choice, not an empirically calibrated default-probability estimate — there is not enough resolved-default data on a young testnet to derive them from observed failure rates. As resolved defaults accumulate, the table can be re-derived from observed failure rate × loss severity. Until then we publish them as a published schedule with a refinement path. The bond table itself lives at caliber.poko.blue/integrate — the methodology paper does not prescribe specific rates, because rate-setting is an application-layer decision, not a rating decision.
Material changes to the bond table are published and take effect when published, the same rule methodology version changes follow (see §Versioning).
What This Is Not
A few things worth saying clearly:
- Not a prediction. A high rating doesn't guarantee the next job goes well. It describes a track record.
- Not a credit score. We don't model default probability. We don't assess solvency. Different problem.
- Not financial advice. If you're about to send funds, do your own diligence. Our rating is one input.
- Not an endorsement. A high tier isn't us vouching for an agent. It's us summarizing their on-chain history.
The Honest Disclaimers
Stuff you should hold in mind whenever you look at a Caliber Rating:
- 🧪 The calibrated chain is a testnet. Every tuned constant in this document — the population mean, the tier cutoffs, the testnet min-jobs column — comes from Arc Testnet. Caliber also indexes 0G mainnet, but 0G is not what the model was calibrated on and carries its own caveats (Appendix G). Expect a reset and recalibration at Arc mainnet.
- 📊 Small rated sample. The index is large — about 607,000 agents on Arc (9 October 2026) and about 3.3 million on 0G — but the rated population is a small fraction of it: most agents have never transacted, and most that have have fewer than 10 jobs. Statistics on small populations are noisy. The confidence indicator exists for this reason.
- ⏱️ Short history. Months, not years. Take long-term claims with a grain of salt.
- 🔄 The population keeps changing. New agent types, new behaviors. Anything trained on the past has some decay risk.
- 🎯 We rate agents, not evaluators (yet). If an evaluator is too lenient or too strict, that noise ends up in agent ratings. Validator-rating is on the roadmap.
- 🎮 All on-chain reputation is partially gameable. Our risk flags catch the obvious patterns. They won't catch everything.
- ⛓️ Ratings are per chain, and the chains are not comparable. A Caliber Rating is computed from one chain's records only. Arc and 0G measure different things — see Appendix G. In particular, a 0G tier is not currently a reliability claim; read that appendix before using one.
Methodology Provenance
An earlier draft of this work, developed under the working name ArcAgents and later as Caliber v1.0, explored a framing borrowed more directly from banking — performance bonds, surety logic, and credit-rating-style letter grades (Caliber-AAA, AA, BBB, …, D). That framing was rejected.
The reason: the underlying data does not support credit-rating-grade claims. Credit rating agencies calibrate against decades of default data across millions of obligors. We have months of testnet data across roughly 16,000 agents, most with fewer than 10 jobs. Borrowing the vocabulary of credit rating (PD, LGD, EAD, EL, AAA/AA/BBB) without the evidence base would have been overclaiming, and any reviewer with five minutes of risk experience would have caught it.
The current methodology — Caliber Rating v2.4.0, counterparty performance rating with credibility-weighted reliability, survival analysis, and rule-based risk flags — is a more honest fit for the data we actually have. The techniques are drawn from reliability engineering, actuarial credibility theory, and platform-trust scoring rather than credit risk.
The v1.0 contracts and methodology paper are preserved as a public archive (git tag methodology-v1.0.1-final in the repository) so the revision history is auditable. They are no longer the operative methodology and no longer match the live RatingVerifier.
The current version is v2.4.0 (the v2.x family, first published 2026-05-24). We expect to be wrong in places. We expect to revise. The provenance is published so the revision history starts honest.
Versioning
This is Caliber Methodology v2.4.0 (active on Arc Testnet from 2026-10-21). The on-chain RatingVerifier accepts v2.4.0 and the previous version, v2.3.0. v2.2.0 attestations kept verifying until 2026-10-21, when v2.4.0 displaced v2.2.0. v2.1.0 attestations kept verifying until 2026-10-16, when v2.3.0 displaced v2.1.0. v2.0.1 attestations kept verifying until 10 October 2026, when v2.2.0 displaced v2.0.1; the 14 July 2026 end of the window announced on 14 June was never applied on chain. When we change the methodology, we publish a new version, mark which ratings used which version, and explain what changed. A published change takes effect when it is published.
Versioning rules going forward:
| Change type | Version bump |
|---|---|
| Typo fix, link update | No bump |
| New feature added (e.g., evaluator quality scoring) | Minor: v2.0 → v2.1 |
| Score weights re-tuned based on backtest | Minor bump |
| Cross-chain support added | Minor bump |
| Bond table revision (rate per tier) | Minor bump (governance change) |
| Fundamental rework of methodology | Major: v2.x → v3.0 |
A major bump (v3.0) changes the rating's shape: the tier scheme, the score's scale, or the attestation struct. A change that moves some agents' scores within the same shape, such as a new factor, re-tuned weights or a change to which evidence counts, is a minor bump, as v2.1.0, v2.2.0, v2.3.0 and v2.4.0 are.
Material changes (anything that changes a rating's computed value, the tier scheme, the bond table, or the default definition) are published as a new version and take effect when published. A rating issued before a change keeps the version it was issued under, and an advance opened before a change keeps the terms it was opened under.
Dual-version acceptance is a property of the contract rather than a notice period. The on-chain RatingVerifier accepts attestations under either the current or the immediately-previous methodology version, and the previous one stops verifying when the next bump displaces it — there is no time limit on that overlap and no date at which it expires. Consumers running gating logic should accept both and migrate to the new version.
Governance notice — v2.4.0 (Caliber's own agents)
v2.4.0 changes who is rated, not how: Caliber's own agents leave the rating, and Caliber clients' jobs stop counting toward anyone's. It changes computed ratings, so it is a material change. In the rating run of 20 October 2026 (04:04:35 UTC), 2 agents changed: both Caliber's own cohort-2 test agents, rated Gold, which now read "not rated (Caliber test agent)". No independent agent had a Caliber client's job in its window. It keeps the rating's shape, so it is a minor-version bump. RatingVerifier accepts v2.4.0 and the previous v2.3.0.
Governance notice — v2.3.0 (volume anomaly and dormancy)
v2.3.0 changes two flag rules (§Step 2). It changes computed ratings, so it is a material change. It keeps the rating's shape (tier scheme, score scale, attestation struct), so it is a minor-version bump. Composition weights, tier gates, confidence cutoffs and v2.2.0's evidence rule are unchanged.
- Volume anomaly is applied again, with a new comparison: the jobs created in the last 30 days against the agent's own rate before them, with a floor of 10 jobs, every job counted on both sides (the flag table). As run under v2.1.0 it compared the window with itself and fired on age alone past 300 days; read literally with a true lifetime count it could never fire before 300 days, because the last 30 days are part of the lifetime.
- Dormancy now reads the agent's whole history, validations included. Before, it read only the 30-day window and so never fired. It still applies only to an agent that passes the rating's gates.
- A score range is published with every rating that has at least one finished job in the window: the uncertainty in the reliability part of the score at 90% under this method's own assumptions (§How sure we are). It adds an output and changes no score, tier or confidence. It is not part of the signed attestation, so the struct is unchanged.
- The age of an agent with no registration date is now counted from its registration block back from the chain head at Arc's 0.5-second block time, so the 14-day gate is true for it (§Step 1). Before, the fallback used 1 second per block, which doubled the age.
Takes effect when published. The signer stamps 2.3.0 on newly computed attestations. The on-chain RatingVerifier holds current = 2.3.0 and previous = 2.2.0, so v2.2.0 attestations continue to verify; v2.1.0 attestations stop verifying. The EvidenceRegistry's version pointer moves to 2.3.0 in the same update; it is informational and not checked on verify.
Measured before publishing (16 October 2026 at 15:01 UTC, on the published run of 16 October 2026, on the 276 registrations rated in that run, held by 94 owner wallets, with each flag rule computed under 2.2.0 and under 2.3.0):
- 88 registrations, held by 58 owner wallets, are rated Dormant instead of their tier: 84 from Watch and 4 from Pending. None is Caliber's own. Every one is rated on lifetime validations alone and has had no job, feedback or validation for 90 days. The count grows as agents pass 90 idle days.
- No registration carries the volume-anomaly flag under the new comparison.
- 12 rated registrations have no registration date; all are more than 14 days old at 0.5 seconds per block, so the age-gate fix changes no rating today.
- No score or confidence changes, and the number of rated registrations is unchanged.
- Rated again with the whole 2.3.0 engine at the same time, every score range contains its score, and a rating has no range exactly when it has no finished job in the window (129 of the 276).
Governance notice — v2.2.0 (provider-controlled jobs)
v2.2.0 changes which completed jobs count as evidence (§Step 1). It changes computed ratings, so it is a material change. It keeps the rating's shape (tier scheme, score scale, attestation struct), so it is a minor-version bump. Composition weights, tier gates and confidence cutoffs are unchanged. One flag rule changes: the volume-anomaly flag is not applied (see the flag table).
Takes effect when published. The signer stamps 2.2.0 on newly computed attestations. The on-chain RatingVerifier holds current = 2.2.0 and previous = 2.1.0, so v2.1.0 attestations continue to verify. v2.0.1, until now still accepted as "previous", is retired on-chain by the same update. The EvidenceRegistry's version pointer moves to 2.2.0 in the same update; it is informational and not checked on verify.
Measured before publishing (9 October 2026 at 17:19 UTC, on the agents rated in the run of 9 October 2026, re-rated with and without the rule, window from block 61,156,921):
- 305 of the 690 rated agents are no longer rated: 303 were in Watch and 2 in Silver. No other agent changes tier.
- 302 of the 303 are under three owners, whose counted jobs were each approved by the provider itself.
- The 2 Silver agents: every one of their 6 counted jobs was provider-controlled.
- 143 agents of one owner keep their tier (Pending or Watch) and lose 9 or 10 points (44 → 35 in Pending; 46 → 36 in Watch): all 3 of their counted jobs were provider-controlled. No other agent's score changes.
- The first measurement, on 5 October, gave the same 305, of 1,255.
- No agent carries the volume-anomaly flag in the run of 9 October 2026, so stopping it changes no rating.
Governance notice — v2.1.0 (adverse-evidence factor)
Announced and active on Arc Testnet: 2026-06-14, under the 30-day notice rule then in force. That rule was withdrawn on 19 September 2026; changes now take effect when published.
Arc Testnet is the calibration environment for the rating (the same role it plays for the testnet-vs-production tier-gate thresholds in §Tier Assignment), so v2.1.0 has been active there from 2026-06-14 — agents on Arc Testnet are scored under the adverse-evidence factor. The window that followed was the dual-version acceptance period, not a deferral of the new scoring: both v2.0.1 and v2.1.0 attestations were honored on-chain so consumers could migrate without breakage, and the contract kept accepting v2.0.1 until 10 October 2026.
v2.1.0 adds the adverse-evidence factor to the network-endorsement sub-score (see §The score): a negative validator observation (score < 50, e.g. a signed conformance breach) now nets against the agent's positive feedback-volume credit, at a weight of 40 positive-equivalents per adverse observation (net floored at 0). This changes some agents' computed score, so it is a material change and a minor-version bump (a new factor, not a formula rework — existing scores recompute under the same composition weights), per the versioning table above.
From 2026-06-14 the on-chain RatingVerifier held current = 2.1.0 and previous = 2.0.1, and requireMinRating accepted either. The last v2.0.1 stamp on record is from 14 June 2026. The contract kept accepting v2.0.1 attestations until 10 October 2026 (it remains in §Appendix F for audit).
On the roadmap (not yet in any version):
- Rating the evaluators (so agent ratings can adjust for evaluator quality)
- Published ratings on Base: Base is indexed and the API computes a Base agent's rating on request, but Base is not in the daily run (its index needs a re-backfill), and when this version was published no Base agent passed the rating gates.
- Backtest results once we have 60+ days of mainnet data
Want to dig deeper?
- Site: caliber.poko.blue
- Code: methodology paper under CC BY 4.0 (this document); contract source through verification on the Arc Testnet explorer; engine, indexer, web app and SDK private
- Issues, disagreements, requests: DM or email PokoBlue
- DM: @PokoBlue99 on X
Built in Bangkok. Powered by a self-hosted Arc node. Standards-native, open methodology.
If you got value out of this, the most useful thing you can do is try a rating, find something we got wrong, and tell us. Methodology improves by getting punched.
Appendix F — Change History
| Version | Date | Changes |
|---|---|---|
| 2.4.0 | 2026-10-21 | Caliber's own agents are not rated (DEC-313, the operator's decision of 21 October 2026; checked by Caliber ops). Caliber's own agents (the own-wallet lists and every labelled test or demo account) are left out of the rating, and a job whose client is Caliber's own counts toward no agent's rating (§Step 1). The formula, weights, tier gates, confidence cutoffs and the attestation struct are unchanged; the volume-anomaly and dormancy flags still read every job as activity. Measured before publishing (run of 20 October 2026, 04:04:35 UTC): 2 agents change, both Caliber's own cohort-2 test agents, rated Gold, now not rated; no independent agent had a Caliber client's job in its window. The quality-tier figures already left Caliber's own agents out, so they do not change. The signer stamps 2.4.0; the RatingVerifier accepts 2.4.0 and 2.3.0. |
| 2.3.0 | 2026-10-16 | Volume anomaly and dormancy read the agent's whole history. The volume-anomaly flag compares the last 30 days with the agent's own rate before them and needs at least 10 jobs in the window; dormancy reads the last job, feedback or validation over all time (§Step 2). The age of an agent with no registration date is counted at Arc's 0.5-second block time (§Step 1). Each rating with a finished job in the window also carries a score range, the uncertainty in the reliability part of the score at 90% under this method's own assumptions (§How sure we are); it changes no score or tier and is not in the signed attestation. Measured before publishing (16 October 2026): 88 registrations, held by 58 owner wallets, rated Dormant instead of their tier; no volume anomaly; the age fix moves no agent; no score or confidence changes; every score range contains its score. |
| 2.2.0 · corrections | 2026-10-16 | The forward-looking estimate and the rating's confidence, as run. Step 2.2 and figure 1 said the forward-looking estimate returns a point and a 90% interval, handles jobs still in progress rather than ignoring them, and adjusts for job size and counterparty diversity; the example output gave a confidence of "± 4.8, 90% interval". The engine computes one probability: the recency-weighted share of finished jobs that completed (60-day half-life). Jobs still in progress are skipped, there is no adjustment for job size or counterparty diversity, and no interval is computed. A rating's confidence is a label set by the number of completed jobs (§How sure we are). Figure 1 listed delivery latency among credibility weighting's inputs; it reads only completed and failed jobs and the population rate, and latency feeds the separate latency component. The example output's Silver score of 72 was below Silver's floor of 75 and is now 78. The builder's guide and the service description said jobs in progress are handled as censored data; they are skipped. An old placeholder image of figure 1, still served though no page showed it, carried pre-pivot tier names and the same interval; it is removed. No score, weight, gate, cutoff, flag rule or attestation field changes, so the methodology version stays 2.2.0 and no on-chain pointer moves. |
| 2.2.0 | 2026-10-10 | Provider-controlled jobs no longer count as evidence. A completed job approved by the provider itself, or approved or paid through a wallet the provider funded first, is left out of the rating (§Step 1). It removes evidence and stops the volume-anomaly flag, which as run fired on age alone past 300 days; no weight, gate or cutoff changes. No agent carried that flag, so stopping it changes no rating. Measured before publishing (9 October 2026): 305 of 690 rated agents are no longer rated (303 from Watch, 2 from Silver); agents in a quality tier, outside Caliber's own test agents, go from 102 to 100. On 5 October: the same 305, of 1,255. The signer stamps 2.2.0; the RatingVerifier accepts 2.2.0 and 2.1.0. |
| 2.1.0 · corrections | 2026-10-10 | The cohort correction's two dates. The corrected figures were first published on 2026-09-20 (run of 2026-09-20: 12,957 rated / 250 in a quality tier, published by operator override). The window was measured on on-chain time from the run of 2026-09-22 (12,854 / 253). |
| 2.1.0 · corrections | 2026-10-09 | Several sentences described checks differently from what the engine runs, and now say what runs. (1) Dormancy and the Dormant tier: the engine reads only the last 30 days, so it never sees 90 days without activity; neither is applied at present, and no agent has ever been Dormant or carried the dormancy flag. (2) Volume anomaly: it compares the jobs created in the last 30 days with those same jobs spread over the agent's whole age, not with a lifetime average, so for an agent with any job in its window it fires exactly when the agent is more than 300 days old. The first agents, registered on 25 December 2025, reach 300 days on 21 October 2026; no agent has carried the flag so far. (3) Validator concentration and validator diversity read every feedback record and validation the agent has ever received, not only the last 30 days, and both concentration flags fire at more than 80%, not at 80%. (4) The interaction count behind "a rating needs at least 5" is jobs and feedback from the last 30 days plus validations from any time; pages that called it "in the last 30 days" now say so, and the builder's guide, which said 5 completed jobs, now gives this rule. The builder's guide also gave Silver as score 65 with 20 jobs; it now gives the tier table's gates. No score, weight, gate, cutoff, flag rule or attestation field changes, so the methodology version does not change and no on-chain pointer moves. |
| 2.1.0 · corrections | 2026-09-25 | Caliber's own funding outcomes are not rating evidence. Caliber Factor publishes each closed advance's outcome to the ERC-8004 Reputation Registry from its funding contract, and the engine had been reading those rows as validator feedback: for the one agent with any (a Caliber-own agent), two clean repayments supplied all of its network endorsement and, as its only "validator", set the validator-concentration flag. Feedback published by Caliber's own Factor funding contracts, matched by contract address, is now excluded, on the same principle as Caliber's own wallets: Caliber's activity is labelled, never counted as independent evidence. No other agent's rating changes. This is a correction, not a version change: no weight, gate, cutoff, flag rule, bond rate or attestation field moves. The methodology version does not move and no contract pointer is touched. |
| 2.1.0 · corrections | 2026-09-23 | We were counting jobs that had already timed out as live, and we stopped. An ERC-8183 job whose deadline has passed can be refunded to its client by anyone. Caliber's indexer never recorded that refund (JobExpired), and a job past its deadline still reads "funded" until someone claims it — so the rating engine counted expired jobs as work in progress: never against completion, and their escrow as active. This paper already lists Expired as a terminal state and the engine already counted it as a failure; it simply never saw one. It now does, from the deadline, whether or not the refund has been claimed, and the event table above says so. Measured before shipping (run of 2026-09-23 04:01 UTC, the change applied in memory to every affected agent): rated agents unchanged at 12,911; agents in a quality tier 253 → 118; Gold 150 → 15. All 135 agents that leave a quality tier are registrations held by a single wallet, whose jobs mostly ran past their deadlines unclaimed — the correction reveals that concentration, it does not create it. The site states the correction beside the figures it affects. This is a correction, not a version change: no weight, gate, cutoff, flag rule, bond rate or attestation field moves — only which jobs the engine could see had ended. The methodology version does not move and no contract pointer is touched. |
| 2.1.0 · corrections | 2026-09-22 | The observation window is measured on on-chain time, not on when Caliber indexed a row. Every window in this paper describes a property of the agent — "weights recent jobs more than old ones", "10× their lifetime average in 30 days", "no activity in 90+ days". The implementation compared the database row's insert timestamp instead, so a one-off backfill of 49,509 historical jobs indexed on 2026-08-20 sat inside every agent's 30-day window until it aged out on 2026-09-20. The published cohort read 11,356 rated and 0 agents in a quality tier on 19 August and 51,590 / 1,621 on 20 August: the entire quality-tier population appeared on the day of the backfill, and the figures published between those dates were inflated. Corrected figures are 12,854 rated / 253 in a quality tier (run of 2026-09-22), and the site states the correction beside the figures it affects. The lookback, the volume-anomaly period and dormancy are now measured in block numbers, so re-indexing cannot move a window. This is a correction, not a version change: no score weight, tier gate, confidence cutoff, flag rule, bond rate or attestation field is altered — only which activity counts as recent. The methodology version does not move and no contract pointer is touched. |
| 2.1.0 · corrections | 2026-09-19 | The 30-day notice rule was withdrawn on 19 September 2026. Operator decision. Material changes are published as a new version and take effect when published. No score, weight, gate, cutoff, flag or attestation field changes, so the methodology version does not move and no contract pointer is touched. What was not withdrawn: a rating keeps the version it was issued under, and an advance opened before a change keeps the terms it was opened under. Dual-version acceptance also survives and is described as what it is — RatingVerifier accepts the current version and the immediately-previous one, with no time limit and no expiry date; the older stops verifying when the next bump displaces it. The v2.0.1/v2.1.0 window that ended 2026-07-14 is retained as history. |
| 1.0 | 2026-05-20 | Initial publication under the working name ArcAgents. Performance-bond / PPD-LGD-EAD framing. Tier scale Arc-AAA … Arc-D. |
| 1.0-rebrand | 2026-05-21 | Brand renamed from ArcAgents to Caliber. Tier scale strings renamed Arc-* → Caliber-*. Scope narrowed to Arc-only. EIP-712 domain redeployed with name="Caliber". No methodological change. |
| 1.0.1-tuning | 2026-05-21 | Scorecard recalibration against the first 883 rateable agents. PD coefficient and tier-band cutoff adjustments. Same formula, no methodological change. This was the last v1.x version. Archive tag: methodology-v1.0.1-final. |
| 2.0 | 2026-05-22 | Pivot to counterparty performance rating. Performance-bond / PPD-LGD-EAD framing replaced with credibility-weighted reliability, survival analysis, and rule-based risk flags. Tier scale renamed from Caliber-AAA … Caliber-D to Established / Proven / Emerging / Provisional / Watch / Inactive. Score 0–100 replaces PD probability as the central published number. Attestation struct redesigned (tier, score, interactionCount, flags replace pdBps, lgdBps, confidence). CaliberEscrow bond formula changed from budget × PD × LGD to tier-stepped table with configurable rates. Three contracts redeployed on Arc Testnet. Not formally published — internal review only. |
| 2.0.1 | 2026-05-24 | First publicly published version. Three changes: (1) Tier rename — Established / Proven / Emerging / Provisional / Watch / Inactive → Gold / Silver / Bronze / Pending / Watch / Dormant. Pre-publication review showed "Established vs Proven" had ambiguous hierarchy; medal-based naming is universally understood. (2) Score-floor adjustment — Silver floor raised from 65 to 75 so the Silver band (75–79) sits between the testnet score clusters at 74 and 78; Bronze ceiling moved up from 64 to 74 to populate Bronze with the 73–74 cluster. Gold floor unchanged at 80. (3) Dual min-jobs columns — production thresholds (50 / 20 / 5) kept as the methodology's intended bar; testnet calibration thresholds (2 / 2 / 1) introduced as an interim measure so the system is demonstrably operational while Arc Testnet accumulates real economic activity. The testnet column will be retired and production thresholds activated as resolved-job volume grows. Formula, factors, weights, flag rules, and bond table all unchanged. Tier ordinals (0–5) unchanged → on-chain attestation bytes and contract bytes are byte-identical; no contract redeploy. |
| 2.1.0 | 2026-06-14 (active on Arc Testnet) | Adverse-evidence factor added. The network-endorsement sub-score's feedback-volume component is now computed net of adverse evidence: each negative validator observation (feedback_events.score < 50 — e.g. a signed, on-chain-attested conformance breach) subtracts 40 positive-feedback-equivalents before the 30-point cap, net floored at 0 (so a single verified breach zeroes the feedback-volume credit). Why: a signed breach of a pre-agreed delivery spec is a deliberate, high-weight adverse signal that the prior endorsement-only scoring ignored — agents could accumulate positive volume with no downward pressure from documented failures. This changes some agents' computed scores, so it is a minor-version, material change under the 30-day notice rule then in force (announced 2026-06-14; that rule was withdrawn on 19 September 2026, and the contract accepted v2.0.1 as the previous version until 10 October 2026). Score-composition weights, tier gates, confidence cutoffs, flag rules, and the bond table are all unchanged. Tier ordinals (0–5) and the attestation struct are unchanged → no contract redeploy; the on-chain RatingVerifier and EvidenceRegistry version pointers are bumped via SyncMethodologyVersion.s.sol / setMethodologyVersion. |
Non-versioned changes
Changes that do not alter the formula or its factors are recorded here rather than as a version bump, per §Versioning.
| Date | Change |
|---|---|
| 2026-10-09 | A stale count is removed from the tier section. It said that, under production rules, exactly 1 agent qualifies for Gold "today"; the count was not kept current. No formula, factor or rating changes. |
| 2026-08-12 | 0G Chain mainnet (16661) added as a second indexed chain. New Appendix G documents its profile: settlements rather than jobs, no negative outcomes recorded on-chain, synthetic identifiers for 0G Compute providers, and a population mean deliberately left unmeasured. The credibility anchor became per-chain, but Arc continues to resolve to the same 0.95 — every Arc rating is byte-identical before and after. No change to score composition, weights, tier gates, confidence cutoffs, flag rules, the attestation struct, or any deployed contract. |
Stability statement
v2.0.1 is the first publicly published version. The v1.x pre-pivot versions (1.0, 1.0-rebrand, 1.0.1-tuning) and the internal-review v2.0 are preserved at the git tag methodology-v1.0.1-final and pre-v2.0.1-rename for audit, but should not be referenced operationally. The v1.x contracts on Arc Testnet are deprecated; the live RatingVerifier, RatingGateway, and CaliberEscrow are the v2.0.x deployments (addresses listed under §The Attestation Primitive).
Material changes from v2.0 forward follow the versioning rules in §Versioning. Any future tier rename, factor add/remove, default-definition change, or composition-weight adjustment requires a new minor version, published and effective on publication.
Appendix G — Chain Profiles
Caliber rates each chain from that chain's own records. The formula in §How the Rating Gets Built is the same everywhere; what differs is what the chain records in the first place. That difference is large enough that tiers are not comparable across chains, and this appendix exists so nobody has to guess.
Arc Testnet — the reference profile
Arc is what the methodology was calibrated on. Agents register in the ERC-8004
Identity Registry, work is transacted as discrete jobs through an AgenticCommerce
contract, and jobs reach explicit terminal states (Completed, Rejected,
Expired). Validators publish feedback and validation outcomes. Every input the
score needs — success, failure, counterparty spread, endorsement — is present
on-chain. The population mean completion rate (0.95) is measured from this cohort.
0G Chain mainnet (16661) — a different substrate
0G is not a smaller Arc. Three structural differences change what a rating means.
1. There are no jobs — only metered settlements. 0G has no AgenticCommerce
contract. Agent-to-agent commerce happens in the 0G Compute marketplace, where a
consumer escrows funds in a ledger and pays a GPU provider per inference request.
Caliber reconstructs a unit of work by pairing LedgerManager.FundSpent (which
carries the amount) with InferenceServing.BalanceUpdated (which carries the
provider) within a transaction. A balance change with no matching spend is a
deposit and is deliberately not counted as work.
2. The chain records no negative outcomes. This is the important one. Across the settlements indexed to date there are zero failed TEE settlements, zero refund requests, zero disputes, and 8 feedback events on the entire chain. Inference failures, timeouts and quality disputes happen off-chain and never reach the ledger — a settlement exists only when a payment succeeded.
The consequence follows directly from the formula: smoothed reliability is 1.0 for every provider, network endorsement is 0 for every provider, and latency consistency is the default for every provider. Only volume varies, and volume is not a scored factor. Every rated 0G provider therefore receives the same score. A 0G tier currently means "this provider transacts", not "this provider is reliable", and it must not be presented as the latter.
What still works on 0G is the flag layer, which reads structure rather than outcomes: counterparty concentration, validator concentration and sybil patterns are all computable from settlement records. In practice the flags are the only thing that currently separates one 0G provider from another.
Earning real score discrimination on 0G requires an off-chain signal — an independent prober, or provider health data — not more indexing. Until such a signal exists, 0G scores should be read as a liveness indicator with flags attached.
3. Identity and commerce are disjoint populations. 0G's ERC-8004 registry holds ~3.3 million agents. Essentially all of them come from a single issuer, register a fresh owner address each, publish no metadata that resolves, and have never transacted. Meanwhile the ~20 0G Compute providers do genuine metered work and hold no ERC-8004 registration at all. As of this writing, zero Compute providers appear as the owner or operator of any registered agent.
Because the engine is keyed on (chain, agent_id), Compute providers are given a
synthetic identifier derived deterministically from their service address, and
their records are marked identity_source = "compute_provider". A synthetic id is
an addressing convenience so a provider can be rated at all. It is not an
on-chain registration, it is surfaced as such wherever a 0G rating is shown, and
it must never be presented as an ERC-8004 identity.
The registry population itself rates as insufficient_interactions essentially
universally. That is the correct answer, not a gap to be engineered around: the
tier gates are not loosened to manufacture ratings for agents that have never
transacted.
Calibration status
| Arc Testnet | 0G Mainnet | |
|---|---|---|
| Commerce substrate | Discrete jobs (AgenticCommerce) | Metered settlements (0G Compute) |
| Terminal states observed | Completed / Rejected / Expired | Completed only |
| Validator feedback | Yes | 8 events chain-wide |
| Population mean completion rate | 0.95 (measured) | Not measured — falls back to the global constant |
| Score discriminates between agents | Yes | No — flags only |
| Identity source | ERC-8004 registration | ERC-8004 + synthetic (Compute providers) |
0G's population mean is deliberately left unmeasured rather than inherited. The credibility blend shrinks every sparse agent toward that prior, so reusing Arc's 0.95 would silently state a belief about a population nobody has measured. It will be set from the 0G cohort once that cohort records enough variation to measure — which, per point 2 above, it currently does not.
Versioning note
Adding a chain profile is not a methodology version change. The score composition, weights, tier gates, confidence cutoffs, flag rules and attestation struct are all unchanged, and every Arc rating computed before and after this appendix is byte-identical. Per §Versioning, only a change to the formula or its factors bumps the version. This appendix documents where the inputs differ, which is a disclosure obligation, not a recalibration.
Caliber Methodology v2.4.0 · active on Arc Testnet from 2026-10-21 · v2.3.0 accepted as the previous version · Bangkok · 🇹🇭