The hackathon multiplier is earned only when a judge can see a stack doing real work in the demo, serving the product's actual function. This document maps each claimed stack to the exact moment it runs and the command that runs it.
The credit engine has no state of its own. Every score is recalled from Sibyl
Memory, and meritor wipe collapses the whole system to 0-trust. See the README.
What a judge sees: a PLATINUM counterparty, recalled from memory in a fresh
session, is approved at 0% collateral, and Meritor releases the principal on Base.
The confirmed transaction hash is written back to memory as a LOAN_DISBURSED
event and resolves on Basescan on screen.
Qualifying action: an executed onchain USDC transfer (a contract interaction plus a wallet operation - two of the four actions the rules name).
# one-time: fund the settlement wallet on Base Sepolia
# ETH for gas + USDC to disburse, at https://faucet.circle.com
# address is printed by: grep BASE_PRIVATE_KEY .env then derive, or:
python -c "from eth_account import Account; import os,dotenv; dotenv.load_dotenv(); \
print(Account.from_key(os.environ['BASE_PRIVATE_KEY']).address)"
# release the approved principal to a counterparty, live on Base Sepolia
python -m meritor.cli request 0xALPHA 50 --settle 0x<counterparty-address>The settler refuses to broadcast on the wrong chain and never fabricates a hash:
with no key, no funds, or an unreachable RPC it returns DRY_RUN with the reason.
Networks (verified live): Base Sepolia 84532 (https://sepolia.base.org),
Base mainnet 8453 (https://mainnet.base.org). USDC has 6 decimals on both;
Circle's canonical addresses are built in.
Optional premium path (x402): the x402 v2 Python SDK (pip install "x402[httpx]") settles on the public Base Sepolia facilitator. Meritor's product
framing - agents paying to pull a counterparty's premium credit report - is a
natural x402 use, but a plain settlement already qualifies, so x402 is an
enhancement, not the qualifying action.
What a judge sees: Meritor dispatches a job on the Agent Commerce Protocol; when it completes, that outcome is written to memory as an SLA credit event - which is where the recalled reliability score comes from in the first place.
Qualifying action: a transacting ACP agent (a created + funded job), or at minimum a registered agent Meritor genuinely dispatches to.
# one-time auth (opens app.virtuals.io; free)
npx acp configure
npx acp agent create # provisions the agent's onchain wallet (first cost gate)
npx acp agent add-signer # P256 signer, browser-approved
# dispatch a real job; its completion becomes a credit event
python -m meritor.cli acp-job 0xALPHA --offering risk-audit --budget 10Toolchain reality:
- The Python ACP SDK (
virtuals-acp) is abandoned - pinned below Python 3.13 and built on a primitive ACP v2 removed. The maintained path is@virtuals-protocol/acp-cli(Node ≥ 20.19), wrapped as a subprocess. IS_TESTNET=trueexposes Base Sepolia (84532) inacp chain list, but its auth frontend (app-dev.virtuals.io) is behind HTTP Basic Auth not issued to participants. Mainnet auth (app.virtuals.io) is open. Ask in Discord whether teams get testnet dev credentials; otherwise the ACP job runs on mainnet.--mockruns the full job lifecycle offline for testing and for a demo take that does not depend on a funded ACP wallet. A mock run is clearly labelled as such and must not be presented as a live settlement.
"+15% for the first, +10% for the second, capped at x1.25."
Ordinal, not per-partner: whichever stack a judge verifies first is the +15%.
Additive on the published table (1 → x1.15, 2 → x1.25), confirmed by the
site's own worked example (82 × 1.25 = 102.5). Sibyl is mandatory and is never
a multiplier.