Skip to content

0.12.0: every venue in one table, the journey as calls, one sale stop by stop - #6

Merged
MaciejBaj merged 1 commit into
moonbeam-foundation:mainfrom
yawningmonsoon:v0.12-venues
Nov 8, 2026
Merged

MaciejBaj merged 1 commit into
moonbeam-foundation:mainfrom
yawningmonsoon:v0.12-venues

Conversation

@yawningmonsoon

Copy link
Copy Markdown
Contributor

Prepares 0.12.0: the SDK in line with every venue and journey feature the Moonbeam product ships, and paired 1:1 with the Studio's sale tour. Not published, not tagged. Publishing waits for the owner's yes.

What changes

  • VENUES / venues(t?, { agent? }) in ./market: the ten markets of the product's market register. Each row has what a seller does there, how it is listed (list-step, venue-account, registry), the SDK call per step, and each step's state as the register reads it. The states come from a snapshot of the register (src/market/venues-register.json, scripts/gen-venues.mjs --from <business-agent.json>, npm run check:venues); the SDK never sets one. Mapping: live/proven → live, partial → partial, self_test → self-test, claimed/contradicted → not yet, none (no such step on that market) → n/a. With a transport, venues() adds market (each market's own status and week of money, GET /venues) and agentListing (one agent on the list step, GET /list/:id). A failed read is named in unread and never upgrades a state.
  • The journey as calls: listOn, listStatus, listIdOf, pauseListing, resumeListing, delistListing (needs { confirm: id }), register8004Calls (the listing's export.erc8004 inlined as a data: URI of at most 2048 chars; register(agentURI) unsigned, signer = your wallet), usage, tenantKeys, planOffers (reads the 402 answer and sends no key and no create_key), agentSales (the sale run's by_agent slice; its URL comes from salesUrl or MOONBEAM_SALES_URL), olasRequest.
  • SALE_STOPS: 17 stops, each with exactly one SDK call. The new reads are saleLedger, payoutQueues, vaultPolicy (strips vault addresses), claimablePayouts and saleRecord.
  • README: the "Why cross-list" volume table is gone. It now leads with an "Every venue" table and "One sale, stop by stop" (116 lines). Detail is in docs/VENUES.md. Also new: npx moonbeam venues and examples/70-every-venue.mjs.
  • Version 0.12.0, CHANGELOG.

Stable field names (the Studio reads these)

SaleStop: id, order, label, studio, call, module (market | resale | cli), fn, route (null = offline), needs (offline | free | key), hop (live | partial | missing | null).

Venue: id, name, marketId, does, listedBy, howListed, entry { cost, done }, and list / take / settle / paid, each { state, register, says, read_on, call }. VenueLive adds market { name, status, usd_7d } and agentListing.

# stop id call route needs
1 studio npx moonbeam workflows offline offline
2 offer-in market.searchSellers GET /match/search free
3 classify market.checkAgent POST /onboard/diagnose key
4 listed market.publishListing POST /agent-listings/:id/publish key
5 quote resale.quoteSale offline offline
6 edges market.layerListings GET /listings free
7 hired market.hirePlan POST /settle key
8 delivered market.handOver POST /handshake key
9 graded market.composeGrade POST /judge/compose key
10 settled market.jobRecord GET /settle/:id free
11 legs resale.legsByName offline offline
12 accrued market.saleLedger GET /resale free
13 split market.payoutQueues GET /pipe/queues free
14 vault market.vaultPolicy GET /vault/policy free
15 paid market.claimablePayouts GET /pipe/claimable free
16 recorded market.saleRecord GET /root free
17 usage market.keyStanding GET /access/key key

Checks

  • npm run check exits 0: typecheck, build, 773 tests passed (9 skipped), pins, check:workflows (7 in step), check:venues (10 markets, read on 2026-11-07), check:diagrams.
  • npm pack --dry-run: 0.12.0, 339 files, 1.8 MB.
  • A test asserts every stop has exactly one call and that the call is really exported. Another holds the README and docs/VENUES.md to the table. The public-text guard now also covers docs/VENUES.md.

Verified live (2026-11-08, against the layer, read only)

  • venues(t, { agent: '8453:1170141' }): markets read 2026-11-08T11:40:58Z; x402 400,544.75 USD in 7 days. That agent is listed on erc8004, mcp_registry and a2a_registry.
  • listStatus → lst_8339b4f9b0f5e5ab, all three listed, fee 0 (LIST_FEE_v1).
  • planOffers: 1 USDC top-up; plans builder 99, team 199, protocol 299 USDC per 30 days; 5 networks.
  • saleLedger (776 routes), payoutQueues (read, sign, settle, ack), vaultPolicy (11 vaults, 0 addresses in the answer), claimablePayouts (0), saleRecord (69 chains), agentSales('mcp.digest') (14 sales, all through x402-base), jobRecord on a Base settlement.
  • On a key: usage (month, tenant), tenantKeys, keyStanding, layerListings.

Not run live: listOn, pause/resume/delist and register8004Calls. They write or build on a member's own listing, so they are covered by fake-transport tests only.

🤖 Generated with Claude Code

… by stop

- VENUES / venues() in ./market: the ten markets of the product's market register, what a seller does on each, how it is
  listed, the SDK call per step (list, take, settle, paid) and each step's state as the register reads it (live, partial,
  self-test, not yet, n/a). States come from a register snapshot (scripts/gen-venues.mjs, npm run check:venues).
- The journey: listOn, listStatus, listIdOf, pauseListing, resumeListing, delistListing, register8004Calls, usage,
  tenantKeys, planOffers, agentSales, olasRequest. Nothing signs or pays.
- SALE_STOPS: the Studio's 17-stop sale tour paired 1:1 with the SDK; new reads saleLedger, payoutQueues, vaultPolicy,
  claimablePayouts, saleRecord.
- README leads with the venue table and the sale's stops; docs/VENUES.md holds the detail; npx moonbeam venues;
  examples/70-every-venue.mjs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaciejBaj
MaciejBaj merged commit ace8a48 into moonbeam-foundation:main Nov 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants