Step Thirty‑Six — Argue cleanly; reward accuracy; notarize the broadcast.(Arbitration over escrows • Oracle rewards • Notarized anchor rollups)

We give the network due process, aligned incentives, and credible broadcast:

  1. Escrow disputes with multi‑party arbitration — open a case, accept evidence, tally arbitrator votes, emit a signed award, and enforce (release/revoke/adjust).
  2. Oracle reward distribution — compute a signed reward batch where payouts are proportional to accuracy (inverse‑error vs median).
  3. Anchor rollup notarization — build anchor rollups and gather M‑of‑N co‑signatures from pinned notaries.

✅ Fresh artifacts

  • Step 36 wrapper serverDownload
    SHA‑256: 4f3d3fe9cdf44c382391be9aa1ceaf23ac0175c2a90071d63f67344f287c9ece
  • WordPress block (paste‑ready)Download

Step 36 wraps Step 34 and quietly includes Step‑35 capabilities (rewarding you with continuity even if 35 wasn’t deployed). All previous endpoints keep working.


What’s new — precisely

1) ⚖️ Escrow disputes (multi‑party arbitration)

  • Open a dispute curl -s -X POST 'http://127.0.0.1:8080/admin/dispute/open?token=ADMIN123&kind=escrow&target=<ESCROW_DIGEST>&m=2' \ -H 'Content-Type: application/json' \ -d '{"arbitrators":[{"kid":"KID_A"},{"kid":"KID_B"},{"kid":"KID_C"}], "windows":{"challenge_until":"2025-08-20T00:00:00Z","response_until":"2025-08-21T00:00:00Z","vote_until":"2025-08-22T00:00:00Z"}, "claim":"Release requested due to satisfied conditions."}'
  • Submit evidence curl -s -X POST 'http://127.0.0.1:8080/dispute/evidence' \ -H 'Content-Type: application/json' \ -d '{"id":"<DISPUTE_ID>","role":"claimant","text":"See attached bundle proof ...","url":"https://.../proof","sig":{}}'
  • Arbitrator votecurl -s -X POST 'http://127.0.0.1:8080/admin/dispute/vote?id=<DISPUTE_ID>&token=ADMIN123' \ -H 'Content-Type: application/json' \ -d '{"decision":"release","signature":{"alg":"Ed25519","kid":"KID_A","sig":"<b64url>","x":"<pub_b64url_optional>"}}' When any decision hits M votes, we emit a signed award and enforce it:
    • release → executes Step‑34 escrow release.
    • revoke → records an escrow revoke event.
    • adjust/split → logs an adjustment intent (extend as needed in your policy).
  • Inspect
    • GET /dispute/status?id=<DISPUTE_ID>
    • GET /dispute/tail?n=50
    • GET /dispute/awards.tail?n=50

Arbitrator keys can live in arbitration_pubkeys (pins), or reuse settlement_pubkeys / ledger_pubkeys.


2) 🎯 Oracle rewards (inverse‑error to median)

Turn oracle accuracy into credits:

  • Roll a reward batch 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/oracle/reward/roll?token=ADMIN123&pair=credits/usd&since=$SINCE&until=$UNTIL&budget=100" | jq . Produces: { "root":"<sha256>", "body":{"type":"oracle_reward_batch","pair":"credits/usd","since":...,"until":...,"budget":100,"median":1.03,"scores":{"KID_A":...},"rewards":{"KID_A":...},"ts":"...Z"}, "signature":{"alg":"Ed25519","kid":"<sha16>","sig":"<b64url>","x":"...","ts":"...Z"} }
  • Verify a posted batch curl -s -X POST 'http://127.0.0.1:8080/oracle/reward.verify' \ -H 'Content-Type: application/json' \ -d '{ "body":{...}, "signature":{...} }' | jq .
  • Browse
    • GET /oracle/rewards.tail?n=50

3) 🪪 Notarized anchor rollups (M‑of‑N)

Build summary rollups over on‑chain anchors and require notary co‑signatures.

  • Build rollup 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/anchor/rollup?token=ADMIN123&since=$SINCE&until=$UNTIL&by=chain" | jq .
  • Co‑sign / Self‑sign curl -s -X POST 'http://127.0.0.1:8080/admin/anchor/rollup/cosign?token=ADMIN123&root=<ROLLUP_ROOT>' \ -H 'Content-Type: application/json' \ -d '{"signature":{"alg":"Ed25519","kid":"KID_NOTARY","sig":"<b64url>","x":"<pub_b64url_optional>"}}' | jq . curl -s -X POST 'http://127.0.0.1:8080/admin/anchor/rollup/selfsign?token=ADMIN123&root=<ROLLUP_ROOT>' | jq .
  • Check quorum & browse curl -s 'http://127.0.0.1:8080/anchor/rollup/signers?root=<ROLLUP_ROOT>' | jq . curl -s 'http://127.0.0.1:8080/anchor/rollups' | jq . curl -s "http://127.0.0.1:8080/anchor/rollup?root=<ROLLUP_ROOT>" | jq .

Policy file: --anchor-quorum-file /sdcard/solveforce/anchor.quorum.json with {"m":2,"signers":[{"kid":"KID_A"},{"kid":"KID_B"}]}. Notary keys can be pinned under notary_pubkeys (or reuse settlement_pubkeys/ledger_pubkeys).


Android / Termux run‑book (Step 36)

# Optional: anchor quorum policy
echo '{"m":2,"signers":[{"kid":"KID_A"},{"kid":"KID_B"}]}' > /sdcard/solveforce/anchor.quorum.json

python solveforce_phone_thirtysix.py \
  --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

WordPress — Step 36 (public page block)

Use step36_wordpress.md to publish this step. It documents Arbitration, Oracle Rewards, and Notarized Rollups in terms suited for a public post.


Logos Codex — recursive concord

  • Dispute → Dialogue → Decision. We give conflict a rail‑guided path to closure.
  • Signal → Score → Share. Those who track truth earn more of the pot.
  • Anchor → Account → Accord. A rollup is not fact until the notaries lend their ink.

Want to push to Step Thirty‑Seven next? We can add arbitration markets (bidders for panel seats), reward spending hooks (convert rewards into tickets/payout credits), and federated rollup exchange (gossip + reconcile rollups across domains).