@ixo/decision-oracle 0.2.21 → 0.2.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +15 -15
  2. package/dist/cron/openhands.d.ts +4 -2
  3. package/dist/cron/openhands.d.ts.map +1 -1
  4. package/dist/cron/openhands.js +21 -17
  5. package/dist/cron/openhands.js.map +1 -1
  6. package/dist/lib/ixo/blocksync/index.d.ts +11 -2
  7. package/dist/lib/ixo/blocksync/index.d.ts.map +1 -1
  8. package/dist/lib/ixo/blocksync/index.js +17 -2
  9. package/dist/lib/ixo/blocksync/index.js.map +1 -1
  10. package/dist/lib/ixo/blocksync/queries.d.ts +2 -1
  11. package/dist/lib/ixo/blocksync/queries.d.ts.map +1 -1
  12. package/dist/lib/ixo/blocksync/queries.js +19 -1
  13. package/dist/lib/ixo/blocksync/queries.js.map +1 -1
  14. package/dist/lib/ixo/blocksync/types.d.ts +11 -0
  15. package/dist/lib/ixo/blocksync/types.d.ts.map +1 -1
  16. package/dist/lib/ixo/blocksync/types.js +10 -0
  17. package/dist/lib/ixo/blocksync/types.js.map +1 -1
  18. package/dist/lib/openhands/backstop.d.ts +54 -28
  19. package/dist/lib/openhands/backstop.d.ts.map +1 -1
  20. package/dist/lib/openhands/backstop.js +147 -110
  21. package/dist/lib/openhands/backstop.js.map +1 -1
  22. package/dist/lib/openhands/chain.d.ts +2 -14
  23. package/dist/lib/openhands/chain.d.ts.map +1 -1
  24. package/dist/lib/openhands/chain.js +1 -34
  25. package/dist/lib/openhands/chain.js.map +1 -1
  26. package/dist/lib/openhands/store.d.ts +1 -0
  27. package/dist/lib/openhands/store.d.ts.map +1 -1
  28. package/dist/lib/openhands/store.js +1 -0
  29. package/dist/lib/openhands/store.js.map +1 -1
  30. package/docs/api.md +12 -7
  31. package/docs/guide.md +12 -7
  32. package/package.json +2 -9
  33. package/skills/add-openhands-support/SKILL.md +3 -2
  34. package/skills/create-oracle/SKILL.md +13 -6
  35. package/skills/decision-api-oracle/SKILL.md +4 -4
  36. package/templates/project/README.md +4 -2
  37. package/templates/project/wrangler.jsonc +9 -4
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/lib/openhands/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/lib/openhands/store.ts"],"names":[],"mappings":"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"}
package/docs/api.md CHANGED
@@ -448,11 +448,16 @@ id = the collection id):
448
448
  re-registered (an operator's pause stands).
449
449
  4. **scan** — the claims filed before the hire, started now.
450
450
 
451
- A **backstop** runs every five minutes so a lost webhook never strands an ask: it finds meta-grants
452
- whose collections are not watched yet and hires them, re-mints a watched collection whose poster
453
- raised the ceiling or whose quota fell below 50, and lifts an `engine-no-grant` pause once the
454
- chain shows quota again (at least 5 min after the last read — the engine's grant cache). Its
455
- window reads only the watched collections that can need it — never read, hired or claimed in the
451
+ A **grants feed** runs every minute so a lost webhook never strands an ask: it reads the
452
+ meta-grants made to this oracle from Blocksync (`authzGrants`, oldest block first, from the height
453
+ it stopped at — one read when nothing is new) and hires each inviting admin's open, unwatched
454
+ collections, through `admit`. Its position (`openhands_state` row `grants`) moves only after a
455
+ page's hires started, so a failed hire is retried next minute; at most 5 pages of 100 grants a
456
+ minute. Its first run starts at height 0 — Blocksync keeps live grants only, so that is a one-off
457
+ sweep of the invitations that stand today — then follows the chain forward. A **backstop** runs
458
+ every five minutes: it re-mints a watched collection whose poster raised the ceiling or whose quota
459
+ fell below 50, and lifts an `engine-no-grant` pause once the chain shows quota again (at least
460
+ 5 min after the last read — the engine's grant cache). Its window reads only the watched collections that can need it — never read, hired or claimed in the
456
461
  last day, quota below a top-up, or not read for a week — so a quiet ask costs one read a week (a
457
462
  raised ceiling on one arrives by the hire webhook, or within that week). Each
458
463
  collection gets at most three hire reruns a day from the backstop and three from the webhook, on
@@ -1629,7 +1634,7 @@ once deployed. Every value is validated by Zod at isolate start, so a bad env fa
1629
1634
  | `EVAL_ENGINE_HOSTNAME` | vars | per network | The engine you ask for decisions. A host you **call** — its `did:web` is the invocation audience. Set it for a local engine or a tunnel |
1630
1635
  | `CLAIM_BOT_URL_OVERRIDE` | `.dev.vars` | derived | Local harnesses only — the bot URL is normally derived as `https://claim.bot.<homeserver domain>` |
1631
1636
  | `IXO_CLIENT_SEQUENCE_MIN_DELAY_MS` | vars | `1000` | Read by the sequence keeper off `env`: the minimum gap between two sequence allocations |
1632
- | `ORACLE_HOSTNAME` | vars | **required** | *Your* canonical `did:web` host. Every inbound invocation's audience is pinned to this, never the request `Host`; it is also the issuer of every invocation you mint. It must equal the Custom Domain in `routes` for that env |
1637
+ | `ORACLE_HOSTNAME` | vars | **required** | *Your* canonical `did:web` host. Every inbound invocation's audience is pinned to this, never the request `Host`; it is also the issuer of every invocation you mint. It must equal the Custom Domain in `routes` for that env, or, with no `routes`, the env's `<worker>.<account>.workers.dev` host |
1633
1638
  | `ORACLE_DID` | vars | **required** | `did:ixo:<address>` — the runtime chain identity |
1634
1639
  | `ORACLE_ADDRESS` | vars | **required** | Must be the `ORACLE_SECP_MNEMONIC` wallet's address — asserted at first use, fails loud |
1635
1640
  | `ORACLE_MATRIX_USER_ID` | vars | **required** | The MXID derived from `ORACLE_DID` (cross-checked, never re-derived) |
@@ -2410,7 +2415,7 @@ trigger is handled in its own `scheduled` before it delegates to the oracle's.
2410
2415
 
2411
2416
  | Trigger | Tier | Jobs |
2412
2417
  | --- | --- | --- |
2413
- | `* * * * *` | minute | 1, 2, 4 (the resume) and 5 below; `claims-feed` (6) before the rotation `scan`; with `API_LANE` the lane's source resume, webhook deliveries and retries, review-batch emails and backlog gauges; with `openhands`, `openhands-scans` (the coalesced `/openhands/scan` calls and the scans that found nothing, three retries each, 50 a minute) |
2418
+ | `* * * * *` | minute | 1, 2, 4 (the resume) and 5 below; `claims-feed` (6) before the rotation `scan`; with `API_LANE` the lane's source resume, webhook deliveries and retries, review-batch emails and backlog gauges; with `openhands`, `openhands-scans` (the coalesced `/openhands/scan` calls and the scans that found nothing, three retries each, 50 a minute) and `openhands-grants-feed` (new meta-grants → hires) |
2414
2419
  | `*/5 * * * *` | five | `ai-cost-backfill`; with a facilitator, `payments-reconcile` and `balance-watch`; with `openhands`, `openhands-backstop` ("The OpenHands add-on", §2) |
2415
2420
  | `0 * * * *` | hour | `claims-replay` (6), 3 below; with `API_LANE` `retention` (housekeeping), `header-seal`, `review-billing-reminders`, `review-reminders`, `review-expiry`, `review-rooms`, `collection-links` |
2416
2421
 
package/docs/guide.md CHANGED
@@ -103,9 +103,12 @@ asserted against the mnemonic before the first signature: a hand-typed one that
103
103
  never signs as someone else.
104
104
 
105
105
  Also set, in `wrangler.jsonc` `vars`: `IXO_NETWORK`, and `ORACLE_HOSTNAME` — the host your
106
- `did:web` is served from (`localhost:8787` while developing). **It must equal the Custom Domain in
107
- `routes` for any environment you deploy**, because callers resolve you by fetching
108
- `https://<host>/.well-known/did.json`. And in `.dev.vars`: `UNIQUE_HMAC_KEY`, any long random
106
+ `did:web` is served from (`localhost:8787` while developing). **It must be the host each
107
+ environment you deploy is served from**, because callers resolve you by fetching
108
+ `https://<host>/.well-known/did.json`. A custom domain is optional: delete that env's `routes`
109
+ entry and the Worker is served on its free `<worker name>.<account subdomain>.workers.dev` host —
110
+ set `ORACLE_HOSTNAME` to that. With a custom domain, it must equal the Custom Domain in `routes`.
111
+ Pick the host before `oracle init` (§10): it is the oracle's identity. And in `.dev.vars`: `UNIQUE_HMAC_KEY`, any long random
109
112
  string, if the rubric you serve declares a `unique` rule.
110
113
 
111
114
  Both of these keys are, at this point, only strings in your files. `decision-oracle oracle init` (§10)
@@ -983,8 +986,9 @@ Before shipping an environment, check all four:
983
986
 
984
987
  1. the **D1 and KV ids** in that env's block are real (named envs inherit nothing — every binding
985
988
  and the whole `vars` block is redeclared per env);
986
- 2. the **Custom Domain** in `routes` equals that env's `ORACLE_HOSTNAME`, character for character —
987
- callers resolve your `did:web` by fetching it;
989
+ 2. that env's `ORACLE_HOSTNAME` is, character for character, the host it is served from — the
990
+ **Custom Domain** in `routes`, or, with no `routes`, its `workers.dev` host — callers resolve
991
+ your `did:web` by fetching it;
988
992
  3. every **secret** is set with `wrangler secret put` for that env — including
989
993
  `ORACLE_MATRIX_ACCESS_TOKEN`, the one `oracle init` wrote into your local `.dev.vars`
990
994
  (`wrangler secret put ORACLE_MATRIX_ACCESS_TOKEN`, then paste it);
@@ -1037,7 +1041,8 @@ Then you register nothing by hand. When a poster picks you, their posting transa
1037
1041
  oracle the right to authorize itself on the new collection, and the app calls
1038
1042
  `POST /openhands/hire/<collectionId>` on your host. The oracle checks that grant on chain, mints its
1039
1043
  own evaluate grant under it, registers the collection through the same four gates above, and scans
1040
- it. A backstop every five minutes catches a call that never arrived and keeps every hired ask
1044
+ it. A grants feed every minute catches a call that never arrived (it follows the meta-grants
1045
+ made to your oracle on Blocksync), and a backstop every five minutes keeps every hired ask
1041
1046
  topped up. `GET /v1/info` lists the two webhooks under `openhands` — that is how the app knows
1042
1047
  you are an OpenHands checker. (api.md §2, "The OpenHands add-on", has every step and answer.)
1043
1048
 
@@ -1529,7 +1534,7 @@ own retries, and a terminal failure clears it.
1529
1534
 
1530
1535
  | Symptom | Cause | Fix |
1531
1536
  | --- | --- | --- |
1532
- | `401` on any `/v1` call | The invocation's audience is not `did:web:<ORACLE_HOSTNAME>`, or `/.well-known/did.json` is not served from that host | Make `ORACLE_HOSTNAME`, the Custom Domain and the audience the same string. Check `SERVICE_ED25519_MNEMONIC` is set |
1537
+ | `401` on any `/v1` call | The invocation's audience is not `did:web:<ORACLE_HOSTNAME>`, or `/.well-known/did.json` is not served from that host | Make `ORACLE_HOSTNAME`, the served host (Custom Domain or `workers.dev`) and the audience the same string. Check `SERVICE_ED25519_MNEMONIC` is set |
1533
1538
  | `401` from the claim bot, the UCAN Store or the VFS claims lane (`claim.store-denied`), on an invocation minted as `did:ixo:…` | That DID has no IID document, or the `SERVICE_ED25519_MNEMONIC` key is not a verification method on it — the resolver has nothing to check the signature against | Re-run `oracle init --protocol <protocol did> --kit-url https://<your host> --yes`: every step already done says `skip`, so only the missing `iid` / `key` writes anything. (`--protocol` and `--kit-url` are always required, and `--only <step>` without `--yes` is still just a dry run) |
1534
1539
  | `bunx @ixo/decision-oracle@<version>` says `No version matching … found (but package exists)` right after a release | bun's cached copy of the package list is older than the release | `bun pm cache rm`, then run it again — or `BUN_INSTALL_CACHE_DIR=$(mktemp -d) bunx @ixo/decision-oracle@<version> …` |
1535
1540
  | A protocol shows as "Unnamed" in the portal, the console or the Openhands app | It has no `#pro` profile: `publish-protocol` writes one only with `--name` | `publish-protocol --phase profile --entity <protocol did> --rubric <file> --form <file> --name "<name>" [--description "<text>"] --yes` |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ixo/decision-oracle",
3
- "version": "0.2.21",
3
+ "version": "0.2.23",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Run an IXO evaluation oracle: pull claims, produce facts with your handlers, let the decision engine decide, sign on chain",
6
6
  "keywords": [
@@ -12,14 +12,7 @@
12
12
  "hono",
13
13
  "d1"
14
14
  ],
15
- "repository": {
16
- "type": "git",
17
- "url": "git+https://github.com/ixoworld/eval-oralce.git"
18
- },
19
- "bugs": {
20
- "url": "https://github.com/ixoworld/eval-oralce/issues"
21
- },
22
- "homepage": "https://github.com/ixoworld/eval-oralce#readme",
15
+ "homepage": "https://docs.ixo.world/build-an-oracle/decision-oracle",
23
16
  "type": "module",
24
17
  "exports": {
25
18
  ".": {
@@ -12,8 +12,9 @@ When a poster picks yours, their posting transaction grants your oracle a **meta
12
12
  (the right to authorize itself on the new collection) and the app calls
13
13
  `POST https://<your host>/openhands/hire/<collectionId>`. The package's **OpenHands add-on**
14
14
  answers that call: it checks the grant on chain, mints the oracle's own evaluate grant under it,
15
- registers the collection through the normal four gates and scans it — and a backstop every five
16
- minutes catches a call that never arrived and keeps every hired ask topped up. The engine still
15
+ registers the collection through the normal four gates and scans it — a grants feed every minute
16
+ catches a call that never arrived, and a backstop every five minutes keeps every hired ask
17
+ topped up. The engine still
17
18
  decides; nothing here judges.
18
19
 
19
20
  A checker judges asks on ITS OWN protocol: the poster's ask uses your protocol as it is — your
@@ -97,8 +97,14 @@ it in an agent session, or the mnemonic lands in the transcript.
97
97
  `wrangler.jsonc` `vars` (top level and every env), not `.dev.vars`.
98
98
 
99
99
  `ORACLE_HOSTNAME` (the host the did:web is served from) is `localhost:8787` in `.dev.vars` for local
100
- dev ONLY. Each deployed env's host lives in that env's `wrangler.jsonc` `vars` and must equal its
101
- Custom Domain in `routes`; a per-env secrets file (`.dev.vars.<env>`) must NOT carry a localhost
100
+ dev ONLY. Each deployed env's host lives in that env's `wrangler.jsonc` `vars` and must be the
101
+ host that env is served from. **A custom domain is optional**: without one, delete that env's
102
+ `routes` entry (with no `routes`, wrangler serves the Worker on `workers.dev`; `"workers_dev": true`
103
+ says so explicitly) and set `ORACLE_HOSTNAME` to the free `<worker name>.<account subdomain>.workers.dev`
104
+ host — the env's `name` (e.g. `<project>-devnet`) plus the account's workers.dev subdomain
105
+ (dashboard → Workers & Pages; the first deploy prints the URL). With a custom domain,
106
+ `ORACLE_HOSTNAME` must equal the Custom Domain in `routes`. Choose before `oracle init`: the host IS
107
+ the did:web, so changing it later is a new identity. A per-env secrets file (`.dev.vars.<env>`) must NOT carry a localhost
102
108
  `ORACLE_HOSTNAME`, or `engine register --env-file .dev.vars.<env>` registers localhost. Also put
103
109
  `UNIQUE_HMAC_KEY` in `.dev.vars` (any long random string; rotating it orphans every registered
104
110
  duplicate digest). `derive "<existing mnemonic>"` uses a wallet the provider already holds instead of
@@ -322,8 +328,9 @@ bun run deploy:devnet # or deploy:testnet / deploy:production (`--env
322
328
  wrangler secret put ORACLE_MATRIX_ACCESS_TOKEN # the value step 8 wrote into .dev.vars
323
329
  ```
324
330
 
325
- Before deploying: the D1/KV ids for that env are real, the Custom Domain equals that env's
326
- `ORACLE_HOSTNAME`, and every secret is set with `wrangler secret put`. **Then run step 8 again with
331
+ Before deploying: the D1/KV ids for that env are real, that env's `ORACLE_HOSTNAME` is the host
332
+ it will be served from (its Custom Domain in `routes`, or, with no `routes`, its `workers.dev`
333
+ host), and every secret is set with `wrangler secret put`. **Then run step 8 again with
327
334
  `--kit-url https://<the deployed host>` and `--yes`**: the `service` step re-points `#eval` at the
328
335
  real host and `profile` anchors the `#pro` it had to skip. `fund` may act again too — it is a floor
329
336
  check, so a wallet the first run's own `iid`/`key` transactions left below 1 IXO is topped back
@@ -389,7 +396,7 @@ the required fee (`pricing.byProtocol` for that collection's protocol, else the
389
396
  | Identity | a fresh wallet, or an existing mnemonic to derive from | `derive`, `.dev.vars` + `wrangler.jsonc` vars |
390
397
  | Owner | who owns this oracle — the AuthHub login whose subscription pays the engine | `login`, `delegation --for engine` |
391
398
  | Funding | nothing to ask — `oracle init` keeps the wallet topped up to 1 IXO for gas | `oracle init` (the `fund` step) |
392
- | Hosts | the did:web host per env (it IS the identity) | `ORACLE_HOSTNAME`, `routes` |
399
+ | Hosts | the did:web host per env (it IS the identity): a custom domain, or the free `workers.dev` host | `ORACLE_HOSTNAME`, `routes` (none for `workers.dev`) |
393
400
  | Contact | the address that gets pause / review notices | `register --contact-email` |
394
401
 
395
402
  ## Safety rules
@@ -417,7 +424,7 @@ the required fee (`pricing.byProtocol` for that collection's protocol, else the
417
424
  | Guessing `EVALUATION_MIN_AMOUNT` | ask what the collection's on-chain evaluation payment is (or will be) — set too high and register 402s |
418
425
  | No `EVALUATION_DENOM` in the mainnet env | the worker refuses to start — set both vars in every env you deploy |
419
426
  | `allowAiChecks: false` while the work order declares AI checks | every `ai` fact freezes `error` and the rubric's `onError` decides — ask first |
420
- | `ORACLE_HOSTNAME` ≠ the deployed Custom Domain | callers resolve the did:web by fetching that host — they must be the same string |
427
+ | `ORACLE_HOSTNAME` ≠ the host the env is served from (its Custom Domain, or its `workers.dev` host) | callers resolve the did:web by fetching that host — they must be the same string |
421
428
  | `ORACLE_ENTITY_DID` left unset after `oracle init` (or set only at the top level) | the deployed oracle fails `/health/ready` (`identity`); the Matrix review card can't resolve it, so reviews only work from the portal page |
422
429
  | Running `oracle init --yes` with nothing serving `--kit-url` | `profile`, `domain` and `acard` skip (all three are built from the live `GET /v1/info`) — start `bun run dev`, or deploy, before the run that should anchor them |
423
430
  | Skipping `--logo` without asking | the identity is still complete, but the portal, the console and the Openhands app show a placeholder — ask the provider for a logo (URL or image file) and pass `--logo` |
@@ -46,7 +46,7 @@ is the package CLI.
46
46
  ### 0. Prerequisites
47
47
 
48
48
  ```bash
49
- bunx wrangler whoami # the Cloudflare account that owns your host's zone
49
+ bunx wrangler whoami # the Cloudflare account the oracle deploys to
50
50
  bunx decision-oracle login --network devnet # the OWNER's AuthHub session — once
51
51
  ```
52
52
 
@@ -55,7 +55,7 @@ bunx decision-oracle login --network devnet # the OWNER's AuthHub session
55
55
  Put the session's OWN DID (`did:ixo:<address>` — `login` prints the address) in
56
56
  `ORACLE_ADMIN_DIDS` in every `vars` block of `wrangler.jsonc`. The example ships IXO's DID there —
57
57
  a copy of it must replace it with the owner's.
58
- - The account must hold the zone of the host, or the Custom Domain cannot attach. If `whoami` shows another account, stop and say so (**HUMAN**).
58
+ - A custom domain is optional. Without one, delete each env's `routes` entry and set that env's `ORACLE_HOSTNAME` to the Worker's free `<worker name>.<account subdomain>.workers.dev` host (the first deploy prints it). With one, the account must hold the zone of the host, or the Custom Domain cannot attach — if `whoami` shows another account, stop and say so (**HUMAN**). Either way the host IS the did:web: pick it before `oracle init`.
59
59
 
60
60
  ### 1. The protocol (example: publish `protocol/`; a provider: their protocol's DID)
61
61
 
@@ -313,13 +313,13 @@ Decision Console shows the price and card eligibility read-only.
313
313
 
314
314
  | Symptom | Cause → fix |
315
315
  | --- | --- |
316
- | Console / CLI 401 `UNAUTHORIZED` on a UCAN call | audience mismatch: the invocation names the did:web read from `<host>/.well-known/did.json` — `ORACLE_HOSTNAME` must equal the Custom Domain, and `--kit` must be that host |
316
+ | Console / CLI 401 `UNAUTHORIZED` on a UCAN call | audience mismatch: the invocation names the did:web read from `<host>/.well-known/did.json` — `ORACLE_HOSTNAME` must equal the host the env is served from (its Custom Domain, or its `workers.dev` host), and `--kit` must be that host |
317
317
  | Worker 500s on every request after deploy; logs say `WEBHOOK_ENCRYPTION_KEY: required when API_LANE is on` | the secret is missing in that env — `bunx wrangler secret put WEBHOOK_ENCRYPTION_KEY --env <env>` (for a new deployment only; never replace an existing one) |
318
318
  | `PROTOCOL_NOT_ALLOWED` on submit | the source's allow-list lacks it — empty means NONE; `api admin protocols <src> <did> --yes` |
319
319
  | 503 `SOURCE_PAUSED` `payments-disabled` | `API_PAYMENTS` is off and the source bills `x402` — turn payments on, or `api admin billing-mode <src> none` |
320
320
  | 402 again after a `PAYMENT-SIGNATURE` | the facilitator refused the payer: no deed / no `SendAuthorization` / not enough PAY — the fresh 402's error says which |
321
321
  | offers refused `plan_inactive`, `accepts: []` | the facilitator finds no active plan for the oracle: it is not registered with the engine (step 6 — registered, it runs on Standard at once), or, for an IXO-run oracle, IXO has not activated its plan (**HUMAN**: ask IXO). A way to pay whose payee is unset (`EARNINGS_ADDRESS` for PAY / USDC on IXO, `EARNINGS_BASE_WALLET` for USDC on Base) is simply not offered |
322
- | Not listed in the console | not registered with the engine (step 6), or not payable (the row above); or the host is not a `*.ixo.earth` Custom Domain; or `CORS_ORIGINS` lacks `https://decision-console.devnet.ixo.earth` |
322
+ | Not listed in the console | not registered with the engine (step 6), or not payable (the row above); or `https://<ORACLE_HOSTNAME>/.well-known/did.json` does not answer; or `CORS_ORIGINS` lacks `https://decision-console.devnet.ixo.earth` |
323
323
  | Every API claim rejects with `frequency` | the caller sends no `submitter` — an uncountable window fails closed; send the courier id |
324
324
  | 409 `REVIEW_EXPIRED` on a review answer | the paid claim's `answerBy` (its x402 reservation's expiry: extended up to 30 days for the review, else 24 h after verify) has passed — it can no longer be paid, and nothing was written. Answer paid reviews before the date the emails state |
325
325
  | Claims go `pending_review` on `SD-RT-CHECKS` (example) | an errored fact (onError `review`) held them for a person: the AI provider unavailable (the photo check — no gateway credits, or `OPENROUTER_API_KEY` missing on `openrouter`), or the orders endpoint unreachable (`DEMO_ORDERS` off, or an `ORD-…-E` order) — read the claim's report; fix it, and new claims decide again (the held ones are answered in the console). A rubric without a claim-level ReviewTask parks such claims `review` with NO task — give it one |
@@ -143,8 +143,10 @@ under `/v1` requires a UCAN invocation addressed to `did:web:<ORACLE_HOSTNAME>`.
143
143
  bun run deploy:devnet # or deploy:testnet / deploy:production
144
144
  ```
145
145
 
146
- The Custom Domain in `routes` must equal `ORACLE_HOSTNAME` — the did:web document is served from
147
- it, and that is how anyone verifies who you are.
146
+ `ORACLE_HOSTNAME` must be the host the env is served from — the did:web document is served from
147
+ it, and that is how anyone verifies who you are. A custom domain is optional: with no `routes`
148
+ entry, the Worker is served on its free `<worker name>.<account subdomain>.workers.dev` host, and
149
+ `ORACLE_HOSTNAME` is that host. With one, it must equal the Custom Domain in `routes`.
148
150
 
149
151
  `GET /v1/info` only answers a portal that already knows your host. For discovery that starts from
150
152
  the protocol, declare yourself on chain — an oracle entity, a `#eval` service pointing at your
@@ -5,7 +5,9 @@
5
5
  "compatibility_date": "2026-07-07",
6
6
  "compatibility_flags": ["nodejs_compat"],
7
7
 
8
- // The Custom Domain IS the did:web identity — it must equal ORACLE_HOSTNAME below.
8
+ // The host IS the did:web identity — ORACLE_HOSTNAME below must be the host the Worker is served
9
+ // from. A custom domain is optional: with no `routes`, the Worker is served on its free
10
+ // `<name>.<account subdomain>.workers.dev` host — set ORACLE_HOSTNAME to that.
9
11
  // "routes": [{ "pattern": "<your ORACLE_HOSTNAME>", "custom_domain": true }],
10
12
 
11
13
  // D1 is the oracle's database: the ledger tables the package owns. `migrations_dir` points INTO
@@ -156,7 +158,8 @@
156
158
 
157
159
  // THIS oracle's did:web host — the audience every inbound UCAN invocation must name, and the
158
160
  // issuer of every invocation this oracle mints. It must equal the Custom Domain in `routes`
159
- // for the env you deploy: callers resolve you by fetching https://<host>/.well-known/did.json.
161
+ // (or, with no `routes`, the env's `workers.dev` host) for the env you deploy: callers resolve
162
+ // you by fetching https://<host>/.well-known/did.json.
160
163
  "ORACLE_HOSTNAME": "<REPLACE: the host your did:web is served from>",
161
164
 
162
165
  // This oracle's PUBLIC chain identifiers, printed together by `bunx decision-oracle derive`.
@@ -231,7 +234,8 @@
231
234
  // keeps the deployed name explicit and independent of the top-level one.
232
235
  "name": "{{name}}-devnet",
233
236
  // The Custom Domain IS the identity: it must equal ORACLE_HOSTNAME below. Declared here so
234
- // the deploy attaches it (and its DNS record) instead of it being a dashboard step.
237
+ // the deploy attaches it (and its DNS record) instead of it being a dashboard step. Optional:
238
+ // delete `routes` to serve on the free workers.dev host, and set ORACLE_HOSTNAME to that.
235
239
  "routes": [{ "pattern": "<REPLACE: your devnet host>", "custom_domain": true }],
236
240
  "vars": {
237
241
  "ENVIRONMENT": "staging",
@@ -340,7 +344,8 @@
340
344
  // keeps the deployed name explicit and independent of the top-level one.
341
345
  "name": "{{name}}-testnet",
342
346
  // The Custom Domain IS the identity: it must equal ORACLE_HOSTNAME below. Declared here so
343
- // the deploy attaches it (and its DNS record) instead of it being a dashboard step.
347
+ // the deploy attaches it (and its DNS record) instead of it being a dashboard step. Optional:
348
+ // delete `routes` to serve on the free workers.dev host, and set ORACLE_HOSTNAME to that.
344
349
  "routes": [{ "pattern": "<REPLACE: your testnet host>", "custom_domain": true }],
345
350
  "vars": {
346
351
  "ENVIRONMENT": "staging",