Step Thirty‑Seven — Seat the panel; spend the rewards; trade the rollups.(Arbitration market • Reward spending hooks • Federated rollup exchange)

We give the system a market for judgment, a currency for merit, and a gossip layer for proof.


✅ Fresh artifacts

  • Step 37 wrapper serverDownload
    SHA‑256: 066602156968089091b2398aba5a8a9d3611150e366a69bc01b830b5a0878b18
  • WordPress block (paste‑ready)Download

Step 37 wraps Step 36 (which carried forward 35→34→…→18). All earlier endpoints keep working.


What’s new — precisely

⚖️ Arbitration market (bids → selection → settlement)
  • Place a bid(any authenticated reader)
    POST /dispute/market/bid { "id":"<DISPUTE_ID>", "kid":"<KID>", "bond":10, "fee":5, "sig":{"alg":"Ed25519","kid":"<KID>","sig":"<b64url>"}, "lock":true } The signature covers {"op":"bid","id","kid","bond","fee"}.
    If lock=true, we debit the bond from the bidder’s rewards credits (introduced below) and log the lock.
  • Review bidsGET /dispute/market/bids?id=<DISPUTE_ID>
  • Select winners(admin)
    POST /admin/dispute/market/select?token=…&id=<ID>&m=2&budget=20&mode=score|random
    • score = bond / fee (descending; tie-break by lower fee).
    • random= draw weighted by bond.
      Produces a select event with the winners list and total_fee.
  • Settle(admin)
    POST /admin/dispute/market/settle?token=…&id=<ID>&result=award|cancel
    • Refunds all bonds to credits.
    • If result=award, pays each winner’s fee into credits.
      Use with Step‑36 arbitration: after you open a dispute, run a market to seat its panel.

  • 🎟️ Reward spending hooks (oracle rewards → credits → vouchers)
    • Redeem an oracle reward batch → credits
      POST /rewards/redeem{ "batch":{"root":"<sha256>","body":{...},"signature":{...}}, "kid":"<KID>", "claim_sig":{"alg":"Ed25519","kid":"<KID>","sig":"<b64url>"} }
      • We verify the batch (Step‑36 signer).
      • We verify the claimer controls <KID>: signature over {"op":"redeem","root","kid"} using pinned oracle_pubkeys (fallback to settlement/ledger pins).
      • Idempotent: rejects duplicate redemption for the same root+kid.
      • On success, credits amount = body.rewards[KID].
  • Spend credits → signed voucher
    POST /rewards/spend{"kid":"<KID>","amount":10,"purpose":"tickets","memo":"panel seat bond","sig":{...}}
    • Verifies the spend intent signed by <KID> over {"op":"spend","kid","amount","purpose"}.
    • Debits balance and returns: {"voucher":{"body":{"type":"reward_spend_voucher",...},"signature":{...}}}
    • Use purpose:"tickets" to top up a ticketing pool, or "payout" to request a cashout process.
  • Check credit state
    GET /rewards/balance?kid=<KID>
    GET /rewards/credits.tail?n=50

  • 🔁 Federated rollup exchange (FX)
    • Peers config
      Provide --rollup-peers-file /sdcard/solveforce/rollup.peers.json: [ {"url":"https://peer-a.example","headers":["Authorization: Bearer …"]}, {"url":"https://peer-b.example"} ] View with: GET /fx/peers.
    • Pull remote rollups(admin)
      POST /admin/fx/pull?token=…&since=…&until=…
      • Fetches each peer’s /anchor/rollups and individual /anchor/rollup?root=….
      • Verifies each rollup using pinned notary_pubkeys (fallback to settlement/ledger pins).
      • Stores verified objects under audit/fx/remote/<host>/.
        Inspect: GET /fx/rollups.remote.
  • Reconcile(admin)
    POST /admin/fx/reconcile?token=…&since=…&until=…&by=chain
    • Emits a signed federated_rollup_summary counting local vs. remote rollups in window.
    • The summary is persisted to audit/fx/fed-summary-*.json.

  • Android / Termux run‑book (Step 37)

    # Optional: peers file
    cat > /sdcard/solveforce/rollup.peers.json <<'JSON'
    [
      {"url":"https://peer-a.example","headers":["Authorization: Bearer XYZ"]},
      {"url":"https://peer-b.example"}
    ]
    JSON
    
    python solveforce_phone_thirtyseven.py \
      --rollup-peers-file /sdcard/solveforce/rollup.peers.json \
      --anchor-quorum-file /sdcard/solveforce/anchor.quorum.json \
      --pins-file /sdcard/solveforce/pins.json \
      --ledger-quorum-file /sdcard/solveforce/ledger.quorum.json \
      --clearing-policy-file /sdcard/solveforce/clearing.policy.json \
      --discovery-dod-enable \
      --discovery-dod-source https://directory1.example.com/solveforce/peers.json \
      --discovery-dod-jwks   https://directory1.example.com/jwks.json \
      --quorum-auto-enable \
      --quorum-policy-file /sdcard/solveforce/quorum.policies.json \
      --attest-enable \
      --attest-url https://your-site.tld/wp-json/solveforce/v1/attest \
      --attest-header "Authorization: Bearer <WP_TOKEN>" \
      --host 0.0.0.0 --port 8080 \
      --plugins-dir ~/solveforce/plugins \
      --auth-mode protected \
      --auth-token READER1:reader \
      --allow-admin --admin-token ADMIN123 \
      --schema-ed25519-secret-file /sdcard/solveforce/schema.ed25519.seed \
      --schema-signing-secret-file /sdcard/solveforce/schema.hmac.key \
      --audit-dir ./audit \
      --mirror-enable \
      --mirror-target-url https://your-site.tld/wp-json/solveforce/v1/notary \
      --mirror-header "Authorization: Bearer <WP_TOKEN>" \
      --allow-query-token --open-ui
    

    “Show me” sequences

    A) Run an arbitration market for a dispute

    # 1) Candidate bids  — assumes <KID_A> has pinned pubkey and credits for bond
    curl -s -X POST 'http://127.0.0.1:8080/dispute/market/bid' \
      -H 'Content-Type: application/json' \
      -d '{"id":"<DISPUTE_ID>","kid":"KID_A","bond":10,"fee":5,"sig":{"alg":"Ed25519","kid":"KID_A","sig":"<b64url>"},"lock":true}' | jq .
    
    # 2) Admin selects 2 winners (score mode)
    curl -s -X POST 'http://127.0.0.1:8080/admin/dispute/market/select?token=ADMIN123&id=<DISPUTE_ID>&m=2&budget=20&mode=score' | jq .
    
    # 3) After the case concludes, settle (award)
    curl -s -X POST 'http://127.0.0.1:8080/admin/dispute/market/settle?token=ADMIN123&id=<DISPUTE_ID>&result=award' | jq .
    

    B) Redeem rewards and spend for tickets

    # Redeem a batch (produced by Step-36 admin/oracle/reward/roll)
    curl -s -X POST 'http://127.0.0.1:8080/rewards/redeem' \
      -H 'Content-Type: application/json' \
      -d '{"batch":{...},"kid":"KID_ORACLE","claim_sig":{"alg":"Ed25519","kid":"KID_ORACLE","sig":"<b64url>"}}' | jq .
    
    # Spend credits into a voucher for tickets
    curl -s -X POST 'http://127.0.0.1:8080/rewards/spend' \
      -H 'Content-Type: application/json' \
      -d '{"kid":"KID_ORACLE","amount":10,"purpose":"tickets","memo":"monthly validator pass","sig":{"alg":"Ed25519","kid":"KID_ORACLE","sig":"<b64url>"}}' | jq .
    
    # Check balance and ledger tail
    curl -s 'http://127.0.0.1:8080/rewards/balance?kid=KID_ORACLE' | jq .
    curl -s 'http://127.0.0.1:8080/rewards/credits.tail?n=20' | jq .
    

    C) Gossip and reconcile rollups

    # Pull remote rollups from your peer list
    curl -s -X POST 'http://127.0.0.1:8080/admin/fx/pull?token=ADMIN123' | jq .
    
    # Reconcile a federated summary over the past 24h
    SINCE=$(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)
    UNTIL=$(date -u +%Y-%m-%dT%H:%M:%SZ)
    curl -s -X POST "http://127.0.0.1:8080/admin/fx/reconcile?token=ADMIN123&since=$SINCE&until=$UNTIL&by=chain" | jq .
    
    # View what you’ve collected
    curl -s 'http://127.0.0.1:8080/fx/rollups.remote' | jq .
    

    WordPress — Step 37 (public page block)

    Paste from step37_wordpress.md to publish this step transparently.


    Logos Codex — recursive economy, squared

    • Seat → Hear → Settle.A fair panel should be earned, not appointed.
    • Work → Reward → Spend.Truth earns credit; credit funds the next act.
    • Gossip → Verify → Accord.We trade proofs like letters of marque—signed, inspectable, reconciled.

    Call the next turn when ready. For Step Thirty‑Eight, I propose: voucher redemption into real payouts/tickets (pluggable backends), peer reputation across FX, and market‑priced arbitration with dynamic slashing.

    Key terms in plain language

    Open a term for a concise explanation of language used on this page.

    Broadband

    A general term for always-on, high-speed Internet access. Broadband can be delivered over fiber, cable, DSL, fixed wireless, cellular, or satellite networks.

    Cloud Computing

    Computing resources—such as applications, servers, storage, or databases—delivered from remote infrastructure and scaled as requirements change.

    Cybersecurity

    The practices and controls used to protect identities, devices, networks, applications, and data from unauthorized access, disruption, or manipulation.

    Identity and Access Management (IAM)

    The systems and policies that determine who a user is, what resources they may access, and how that access is authenticated and reviewed.

    API

    An application programming interface is a defined way for software systems to exchange data or request functions from one another.

    Artificial Intelligence (AI)

    Software designed to perform tasks involving prediction, classification, generation, reasoning, or decision support. Business use still requires clear data, governance, security, and human accountability.