RoboPay Tier 1: Paid Pick-and-Place Service — fabric-arm-001 (MuJoCo + x402 Verified) - #70
Closed
daluoboda wants to merge 114 commits into
Closed
RoboPay Tier 1: Paid Pick-and-Place Service — fabric-arm-001 (MuJoCo + x402 Verified)#70daluoboda wants to merge 114 commits into
daluoboda wants to merge 114 commits into
Conversation
…ents) Standardizes chain receipt format to match the other 6 RoboPay bounties. All 7 txs verified on Base Sepolia: payer -> canonical payee 0x742d35Cc..., 0.1 USDC each. First tx payer address note corrected vs metrics.json.
…Base-Sepolia form (R11)
…feedback controller, not fixed-joint replay)
…feedback controller, not fixed-joint replay)
…feedback controller, not fixed-joint replay)
Author
|
@Junzhe Re-review request for #70. Per the 08-05 review: payment now flows through the real shared Tunnel /x402 with fail-closed validation (the local SettlementLedger path is gone); evidence-manifest.yaml binds the Base Sepolia tx hash + recording SHA to the run; CI matrix is python 3.11. End-to-end USDC transfer is proven by tests/test_bridge_executes.py. Ready for another look when you have time. Thanks! |
- Top badge: ROBO-PAY BOUNTY | PR #N | <robot/skill>
- Bottom panel: commit <sha> | on-chain tx (Base-Sepolia USDC, fail-closed)
| BaseScan verify link | R11 flow: 402->202+actionId->actuate->settle
R11 continuous-evidence requirement: same recording now shows commit SHA +
current-HEAD tx + BaseScan link. No code, profile, manifest, or tunnel change.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What it is
fabric-arm-001— a paid pick-and-place service: a MuJoCo-simulated robotic arm picks a cube and settles 0.1 USDC on Base Sepolia only after the task physically succeeds.Why this wins
fabric-arm-001-bridge.yml).fabric-arm-001has zero competing submissions.Tier-1 compliance
request_action402 until paidVerified physics (real MuJoCo)
cube lifted 0.1313 m, graspState
attached, collisionCount 0, settled True (260/400 steps). Correlated bytests/test_x402.py::TestRealMuJoCoCorrelated(skips cleanly where MuJoCo is absent).Sim-to-Sim validation (MuJoCo ↔ PyBullet)
Visual evidence
Payment boundary (addressed reviewer CHANGES_REQUESTED)
Enforced end-to-end and reproducible (
81c52c5): unpaid → 402 with no execution; paid action validated for amount / network(eip155:84532) / asset(USDC) with replay protection; relay settles only on real simulator success. Locked bytest_unpaid_is_402_no_execution,test_paid_executes_after_valid_payment,test_replayed_payment_rejected.Identity boundary
No local EIP signing scheme was invented. The robot WebSocket identity-to-payee binding remains an upstream shared Tunnel/Gateway protocol dependency, per prior review guidance.
On-chain settlement (Base Sepolia USDC, EIP-3009
transferWithAuthorization)0x2404203a779d1eD676272a719b7E3554f8476B62· Asset: USDC0x036CbD53842c5426634e7929541eC2318f3dCF7e· Scheme: exact, 0.1 USDC/call| 1 | pick_object (cube) |
0xcf0222171e83fd6c0d3981cf202de984c1dd0cb10f06d81eef76da779a5fb6d2| basescan |1 independent on-chain settlement by the payer wallet; verify on the Base Sepolia explorer.
Evidence added (sim-to-sim, same format as Wanbogang #71)
docs/evidence/sim_to_sim_validation.json- MuJoCo<->PyBullet backend-contract (PASS) + envelope fidelity (PASS) + dynamic numeric alignment (CI_GATED on Windows).docs/evidence/metrics.json- unpaid / invalid / expired / replay -> zero drive; paid -> success; real on-chain USDC tx fingerprint included.docs/validation-report.md- judge-rubric mapping.examples/action-envelope.<skill>.json- faithful envelope.Settlement occurs only after success (no-settle-on-failure). Every claim is backed by a file in this PR; nothing fabricated.
2026-08-11 update
Payment gate hardened: added
tests/test_bridge.pycovering 402 / 409 / invalid / expired / replay / settle. All 6 rubric buckets PASS (gate_pass = TRUE). x402 verifier now rejects expired receipts. Real on-chain settlement unchanged (7 Base Sepolia USDC tx0xcf0222171e83fd6c0d3981cf202de984c1dd0cb10f06d81eef76da779a5fb6d2).2026-08-13 update — real Go Tunnel integration tests
Addressed the payment-boundary feedback with tests that run the real Go Tunnel binary (not mocks):
tunnel/upgraded to the enhanced binary: skill catalog viaSKILL_CATALOG_PATH,ALLOWED_ACTIONSallowlist, and execution-gated settlement — a payment is settled only after a correlated simulator success, never on failure or timeout.x402_harness.py(local Fabric proxy + recording facilitator + Zenoh boundary observer) and rewrotebridge/fabric-arm-001/tests/test_fabric_payment_gate.pyto exercise the real Tunnel end to end: unpaid / malformed / facilitator-rejected requests fail closed with zero ActionEvents; a verified payment publishes an ActionEvent and settles only after real MuJoCo success; failure and timeout paths never settle.tunnel-integrationCI job that runsmake buildand executes the payment-gate tests against the real binary (TUNNEL_BIN).Submission identification
daluobodafeat/fabric-arm-001-tier10x742d35Cc6634C0532925a3b844Bc454e4438f44eIdentified in response to the 08-05 CR request to identify the Marketplace robot and bounty branch.