Stamp

Conformance

BAP-728 forbids claiming conformance without published, reproducible results. Here they are, test by test, including the ones Stamp does not meet.

The claim

ProfileNone claimed in full. Stamp provides the lifecycle registry and discovery pieces of the Core Agent profile.
ModulesCORE 0.4 (registry side), DISC 0.4, SCHEMA 0.4 (A.1–A.3), CONF 0.4. Not implemented: A2A, RT, VERIFY, COMM.
AssessmentSelf-attested by the Stamp authors. No independent assessor.
Spec revisionBAP-728 and ALP v0.4-draft at bnb-chain/BEPs commit a12e7e03; file hashes in the manifest.
Networks testedBSC testnet (chain 97): every on-chain edge and refusal, live. BSC mainnet (chain 56): registration, wallet binding and the full handshake against the showcase agent, live. Plus a local mainnet fork for the adversarial cases.
Date21 October 2026

Core Agent matrix

IDScenarioStatusHow
CORE-01Owner wallet used as the agent wallet; missing approvalPartialContract refuses an owner-as-wallet record (unit + fork test). Explicit owner approval of the policy is enforced by the Issue flow, not the contract.
CORE-02Register exactly once, wallet read backMetRecord opens once; the wallet snapshot is read from ERC-8004 in the same call. The Issue flow reads the wallet back after binding.
CORE-03Identity created, wallet proof fails, retryPartialThe Issue flow journals the agent ID and resumes against it. A real retry test on mainnet is pending.
CORE-04Activation payment fails or is unfinalizedAgent sideNeeds the agent's signer and payment rail. Stamp records the claim; it does not move money.
CORE-05Real payment finalized and credited, then ACTIVEAgent sideSame. The controller attaches payment and receipt as evidence.
CORE-06Retried operation, changed request, competing sequenceMetUnit tests: original result returned, IdempotencyConflict on change, StaleSequence for the loser.
CORE-07Suspension races a payment and a taskAgent sideGate serialization lives in the agent runtime.
CORE-08Revive a retired agent by any routeMetUnit, fuzz and fork tests: no edge, re-bind, re-register or transfer leaves RETIRED.
CORE-09Owner or wallet changes while ACTIVEMetController frozen, anyone can suspend, re-bind raises the epoch. Round-trip transfers are caught by the verifier's event scan.
CORE-10Retirement with pending authorizationsAgent sideRevoking allowances and signatures is the operator's job; the record stays terminal.
PAY-01 … PAY-06Signer policy, caps, reservations, clockNot providedStamp ships no signer. These belong to whatever wallet stack runs the agent.
DISC-01Valid identity, descriptor and fresh handshakeMetContract verifyHandshake plus the Verify page; proven on a BSC mainnet fork with the reference server.
DISC-02Replay, expiry, wrong audience or chain, stale epoch, altered descriptorMetUnit tests on the contract and 15 adversarial cases against the reference server.
DISC-03Directory says ACTIVE, chain says otherwiseMetEvery page reads the chain record; the directory is labelled as a hint.
BSC-01Reorg before finality, RPCs disagreePartialFinality rule declared in the manifest; ops scripts check the 'finalized' tag. The website does not yet cross-check two RPCs.
BSC-02Upstream proxy upgraded or ABI digest changedMetManifest pins the ERC-8004 implementation and its code hash; Verify fails if the proxy slot changes.
SCHEMA-01A.1 to A.8 shape validationPartialA.1, A.2 and A.3 are validated with the unmodified schema. A.4 to A.8 are not produced by Stamp.

"Agent side" means the requirement applies to the software that runs the agent and holds its key. A registry cannot satisfy it on the agent's behalf, and Stamp does not pretend to.

Other profiles

Portable Runtime (RT-01 to RT-05), A2A (A2A-01, A2A-02), Certified Toolchain (VERIFY-01 to 03) and Commerce (COMM-01 to 08) are not implemented. The authority epoch in the registry is the hook a runtime's fencing service would use for RT, and nothing more.

Reproduce

# contract: unit, fuzz and review regressions
forge test

# against the live ERC-8004 registry on a mainnet fork
forge test --match-contract Fork --fork-url https://bsc-dataseed.bnbchain.org

# end to end on a fork: deploy, register, bind, record, serve, verify, attack
anvil --fork-url https://bsc-dataseed.bnbchain.org --chain-id 56 --hardfork cancun --block-time 1
node ops/deploy.mjs --vai && node ops/demo-agent.mjs --vai --activate
node kit/server.mjs --insecure-local & node kit/verify.mjs --insecure-local && node kit/negative.mjs --insecure-local