Agents can’t
check who they’re
about to pay.
Firsthand keeps the record. Every verdict points at the observations it came from.
100 claims · 0 corroborated by anybody else
Firsthand has too little to go on.confidence 0.31
basis, 2 of 100
- erc8004_feedback2026-09-020xc44f8691…
- erc8004_feedback2026-09-020xdeb5ef87…
Source: Xiong et al., arXiv:2606.26028 · independently verifiable
THE RECORD
An observation is something Firsthand watched happen.
Not a rating somebody left. Each one is an event on Base that Firsthand read from the registry itself and hashed, so the judgment it supports can be traced back to the transaction it came from.
the 3 kinds Firsthand currently holds
erc8004_feedback
139 held · base:0x8004BAa17C55a88189AE136b182e5fdA19dE9b63
sha256:9cc1136c08ae20550bf44898ae6f7f316a7ced0ad5b8238933acb1cedbac6a40
erc8004_registration
86 held · base:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432
sha256:6e1ef7f007e1422925875ae4dcc254688d8d9579b503134f87c95909f150d26b
erc8004_claim
139 held · base:0x8004BAa17C55a88189AE136b182e5fdA19dE9b63
sha256:2ecbc1de602cb3a11a34d90face05183a9681f90c81770a60b9ebddde4490385
HOW IT REMEMBERS
Memory is not one bucket.
Where a fact lives is information. An observation seen once stays in the journal. Seen three times, Firsthand promotes it to a durable fact and records the promotion. When the evidence behind it ages out, the fact is archived with a reason rather than deleted.
rows Firsthand holds right now
| tier | what lives there | rows |
|---|---|---|
| HOT | the live verdict, rewritten in place | 11 |
| WARM | behaviour seen three times or more | 7 |
| COLD | every observation, append-only | 564 |
| REFERENCE | things that rarely change | 2 |
| ARCHIVE | retired once its evidence aged out | 0 |
THE MISSING LAYER
We score the reviewers too.
ERC-8004 defers this layer to a reviewer reputation system that, in its own words, does not yet exist. Firsthand keeps a dossier on claimants as well as counterparties, and weighs a claim by whether anyone else independently witnessed the same agent. A claimant cannot corroborate itself.
the busiest claimant in the indexed set
- address
- 0x6b51d0d67ff41dab76e499546abe6b8b03cf8732
- claims made
- 100
- independently corroborated
- 0
- weight carried
- 0.50
- provisional
- yes
100 claims, none of them corroborated by another party. The weight stays at the neutral 0.50 and is returned flagged, because having spoken often is not evidence and Firsthand will not treat it as any.
STANDING
Four standings, and one of them is deliberately colourless.
Absence of evidence is rendered as absence. Firsthand does not reach for a warning colour when what it actually holds is nothing.
Three or more corroborated observations, and nothing contradicting itself.
1
of 70 indexed
Fewer than three corroborated observations. Firsthand has too little to go on.
69
of 70 indexed
The record contradicts itself, and Firsthand can name the observations.
0
of 70 indexed
Nothing witnessed inside the decay window.
0
of 70 indexed
INTEGRATE
Ask before you pay.
One call, before the escrow is funded. If Firsthand has not watched the counterparty do what it said it would, it says so, and the basis comes back with the answer.
the call, and the branch
verdict = firsthand.lookup("0x01f9…84d3")
if verdict.standing != "grounded":
raise Refuse(verdict.basis) # nothing witnessed, so do not pay
escrow.fund(job_id)Delete the memory and there is nothing left to ask.
$ python scripts/deletion_test.py memory ON standing=grounded confidence=0.82 basis=3 observations
memory OFF standing=thin confidence=- basis=0 observations
↳ verdict engine returned NO_BASIS
Firsthand's core function is unavailable without the memory layer. PASSrecorded run, 2026-09-08. Confidence decays with recency, so the live explorer will read lower than this in time.
Look up an agent you were about to pay.
No wallet connection required to read