fleetmesh-schema 0.1.0__py3-none-any.whl

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 (83) hide show
  1. fleetmesh_schema/__init__.py +62 -0
  2. fleetmesh_schema/schema/DIGEST +1 -0
  3. fleetmesh_schema/schema/PROTOCOLS +10 -0
  4. fleetmesh_schema/schema/conformance.json +492 -0
  5. fleetmesh_schema/schema/constants.canonical.json +1 -0
  6. fleetmesh_schema/schema/constants.json +494 -0
  7. fleetmesh_schema/schema/kinds.canonical.json +1 -0
  8. fleetmesh_schema/schema/kinds.json +215 -0
  9. fleetmesh_schema/schema/messages.canonical.json +1 -0
  10. fleetmesh_schema/schema/messages.json +552 -0
  11. fleetmesh_schema/schema/schemaorg-terms.json +2712 -0
  12. fleetmesh_schema/schemas/common/didcomm-envelope.schema.json +85 -0
  13. fleetmesh_schema/schemas/common/nostr-event.schema.json +46 -0
  14. fleetmesh_schema/schemas/common/primitives.schema.json +207 -0
  15. fleetmesh_schema/schemas/compute/bacalhau-batch-job.schema.json +140 -0
  16. fleetmesh_schema/schemas/compute/benchmark-merkle-tower.schema.json +69 -0
  17. fleetmesh_schema/schemas/compute/image-transform.schema.json +95 -0
  18. fleetmesh_schema/schemas/compute/job-descriptor.schema.json +89 -0
  19. fleetmesh_schema/schemas/compute/llm-inference-job.schema.json +113 -0
  20. fleetmesh_schema/schemas/compute/spam-classifier.schema.json +82 -0
  21. fleetmesh_schema/schemas/compute/wot-pagerank.schema.json +100 -0
  22. fleetmesh_schema/schemas/compute/zk-verify-groth16.schema.json +93 -0
  23. fleetmesh_schema/schemas/didcomm/budget/close.schema.json +65 -0
  24. fleetmesh_schema/schemas/didcomm/budget/dispute.schema.json +35 -0
  25. fleetmesh_schema/schemas/didcomm/budget/receipt-ack.schema.json +69 -0
  26. fleetmesh_schema/schemas/didcomm/budget/receipt.schema.json +91 -0
  27. fleetmesh_schema/schemas/didcomm/complaint/appeal.schema.json +30 -0
  28. fleetmesh_schema/schemas/didcomm/complaint/evidence.schema.json +32 -0
  29. fleetmesh_schema/schemas/didcomm/complaint/notice.schema.json +40 -0
  30. fleetmesh_schema/schemas/didcomm/complaint/remedy.schema.json +31 -0
  31. fleetmesh_schema/schemas/didcomm/complaint/withdraw.schema.json +29 -0
  32. fleetmesh_schema/schemas/didcomm/compute/accept.schema.json +68 -0
  33. fleetmesh_schema/schemas/didcomm/compute/cancel.schema.json +52 -0
  34. fleetmesh_schema/schemas/didcomm/compute/progress.schema.json +62 -0
  35. fleetmesh_schema/schemas/didcomm/compute/quote.schema.json +36 -0
  36. fleetmesh_schema/schemas/didcomm/compute/refute.schema.json +102 -0
  37. fleetmesh_schema/schemas/didcomm/compute/sealed.schema.json +103 -0
  38. fleetmesh_schema/schemas/didcomm/compute/settled.schema.json +36 -0
  39. fleetmesh_schema/schemas/didcomm/compute/stream.schema.json +59 -0
  40. fleetmesh_schema/schemas/didcomm/peering/accept.schema.json +33 -0
  41. fleetmesh_schema/schemas/didcomm/peering/amend.schema.json +73 -0
  42. fleetmesh_schema/schemas/didcomm/peering/decline.schema.json +69 -0
  43. fleetmesh_schema/schemas/didcomm/peering/offer.schema.json +40 -0
  44. fleetmesh_schema/schemas/didcomm/peering/propose.schema.json +187 -0
  45. fleetmesh_schema/schemas/didcomm/peering/terminate.schema.json +29 -0
  46. fleetmesh_schema/schemas/didcomm/standing/ask.schema.json +36 -0
  47. fleetmesh_schema/schemas/didcomm/standing/decline.schema.json +28 -0
  48. fleetmesh_schema/schemas/didcomm/standing/tell.schema.json +33 -0
  49. fleetmesh_schema/schemas/didcomm/sync/deliver.schema.json +63 -0
  50. fleetmesh_schema/schemas/didcomm/sync/done.schema.json +30 -0
  51. fleetmesh_schema/schemas/didcomm/sync/handover.schema.json +129 -0
  52. fleetmesh_schema/schemas/didcomm/sync/have.schema.json +32 -0
  53. fleetmesh_schema/schemas/didcomm/sync/need.schema.json +33 -0
  54. fleetmesh_schema/schemas/didcomm/sync/open.schema.json +33 -0
  55. fleetmesh_schema/schemas/didcomm/sync/range.schema.json +32 -0
  56. fleetmesh_schema/schemas/events/kind-11801-descriptor.schema.json +133 -0
  57. fleetmesh_schema/schemas/events/kind-11802-revocation.schema.json +41 -0
  58. fleetmesh_schema/schemas/events/kind-11803-compute-offer.schema.json +54 -0
  59. fleetmesh_schema/schemas/events/kind-21801-heartbeat.schema.json +67 -0
  60. fleetmesh_schema/schemas/events/kind-21802-telemetry.schema.json +43 -0
  61. fleetmesh_schema/schemas/events/kind-30801-grant-envelope.schema.json +104 -0
  62. fleetmesh_schema/schemas/events/kind-30802-conformance-report.schema.json +153 -0
  63. fleetmesh_schema/schemas/events/kind-30803-coverage-claim.schema.json +120 -0
  64. fleetmesh_schema/schemas/events/kind-30804-gossip-topic-membership.schema.json +101 -0
  65. fleetmesh_schema/schemas/events/kind-30810-compute-ask.schema.json +222 -0
  66. fleetmesh_schema/schemas/events/kind-30811-compute-receipt.schema.json +213 -0
  67. fleetmesh_schema/schemas/identity/did-nostr-node.schema.json +75 -0
  68. fleetmesh_schema/schemas/identity/fleetmesh-auth.schema.json +137 -0
  69. fleetmesh_schema/schemas/manifests/compute-provider.schema.json +82 -0
  70. fleetmesh_schema/schemas/manifests/grant-policy.schema.json +80 -0
  71. fleetmesh_schema/schemas/manifests/inference-router.schema.json +62 -0
  72. fleetmesh_schema/schemas/manifests/meshnode.schema.json +125 -0
  73. fleetmesh_schema/schemas/manifests/peering.schema.json +86 -0
  74. fleetmesh_schema/schemas/manifests/workload-router.schema.json +115 -0
  75. fleetmesh_schema/schemas/payloads/compute-ask-payload.schema.json +116 -0
  76. fleetmesh_schema/schemas/payloads/compute-receipt-payload.schema.json +96 -0
  77. fleetmesh_schema/schemas/payloads/grant-payload.schema.json +83 -0
  78. fleetmesh_schema/schemas/payloads/receipt-counters.schema.json +55 -0
  79. fleetmesh_schema-0.1.0.dist-info/METADATA +44 -0
  80. fleetmesh_schema-0.1.0.dist-info/RECORD +83 -0
  81. fleetmesh_schema-0.1.0.dist-info/WHEEL +5 -0
  82. fleetmesh_schema-0.1.0.dist-info/licenses/LICENSE +121 -0
  83. fleetmesh_schema-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,62 @@
1
+ """fleetmesh_schema: the published schema files as an installable package.
2
+
3
+ The files are the ones at the root of the schema repo - `schema/` (the digest
4
+ set: constants, kinds, messages, DIGEST, PROTOCOLS, conformance) and
5
+ `schemas/` (the JSON Schema documents). This package carries them, nothing
6
+ more: a path for anything that opens files itself, and one cached loader for
7
+ the JSON. Standard library only, no I/O at import time.
8
+
9
+ In a checkout the two directories are reached through the symlinks beside
10
+ this file; installed, they are package data at the same relative place, so
11
+ `files()` is the same path arithmetic either way.
12
+ """
13
+ from __future__ import annotations
14
+
15
+ import functools
16
+ import json
17
+ import os
18
+ from typing import Any
19
+
20
+ HERE = os.path.dirname(os.path.abspath(__file__))
21
+ SCHEMA_DIR = os.path.join(HERE, 'schema') # constants.json, kinds.json, messages.json, DIGEST ...
22
+ SCHEMAS_DIR = os.path.join(HERE, 'schemas') # JSON Schema documents by plane
23
+
24
+
25
+ def path(name: str) -> str:
26
+ """Absolute path of a file under schema/ (constants.json, kinds.json, DIGEST ...)."""
27
+ return os.path.join(SCHEMA_DIR, name)
28
+
29
+
30
+ def schema_path(*parts: str) -> str:
31
+ """Absolute path of a JSON Schema document under schemas/ (plane, ..., file)."""
32
+ return os.path.join(SCHEMAS_DIR, *parts)
33
+
34
+
35
+ @functools.lru_cache(maxsize=None)
36
+ def load_json(name: str) -> Any:
37
+ """Parse one file under schema/, once; every importer sees the same object.
38
+ The path is in any error so a broken install names itself."""
39
+ p = path(name)
40
+ try:
41
+ with open(p, encoding='utf-8') as fh:
42
+ return json.load(fh)
43
+ except (OSError, json.JSONDecodeError) as e:
44
+ raise RuntimeError('cannot read schema file %s: %s' % (p, e)) from e
45
+
46
+
47
+ @functools.lru_cache(maxsize=None)
48
+ def text(name: str) -> str:
49
+ """One file under schema/ as stripped text (DIGEST, PROTOCOLS)."""
50
+ try:
51
+ with open(path(name), encoding='utf-8') as fh:
52
+ return fh.read().strip()
53
+ except OSError as e:
54
+ raise RuntimeError('cannot read schema file %s: %s' % (path(name), e)) from e
55
+
56
+
57
+ def digest() -> str:
58
+ """The protocol version digest, schema/DIGEST."""
59
+ return text('DIGEST')
60
+
61
+
62
+ __all__ = ['SCHEMA_DIR', 'SCHEMAS_DIR', 'path', 'schema_path', 'load_json', 'text', 'digest']
@@ -0,0 +1 @@
1
+ 695a868c3f2b343dba6f134cc23706bf8e48db392122cce63e06b69b3f92b7a7
@@ -0,0 +1,10 @@
1
+ https://fleetmesh.org/blob/1.0 1cd7a7af0622a9235e0f4b667d3459234b3144bcdc21ae4606f5eaf325a30d5e
2
+ https://fleetmesh.org/budget/1.0 57927f029cc188df8be0fc1a8c66d22471329f3e8c2a786bcb6c3233cd405a7c
3
+ https://fleetmesh.org/complaint/1.0 041772e8861db065ac10badb8ca69b95bc05f37dd2e0a9fae0fe4b5be59b3717
4
+ https://fleetmesh.org/compute/1.0 4d8ccdc8618ab421f775985a705b044b3e0cf11c1b8bdb1468bb71151276b0c4
5
+ https://fleetmesh.org/compute/1.1 e87aaea83565f4cad55e4d02cd4719439691c1085fab68e4d2cac67ea7db1d75
6
+ https://fleetmesh.org/gossip/1.0 83171e6abf4ecd300de7de9a08c1f39242de1950d1ec0481e5f3b2fd975fc872
7
+ https://fleetmesh.org/peering/1.0 70aeab210ab49ba4085e779aba3d97db15cf16bff5969295ca7261a82c0cab12
8
+ https://fleetmesh.org/standing/1.0 23f50257e1143ebfb207431b0899895d208dbc0c320fa1c071c1f6684ccbfa85
9
+ https://fleetmesh.org/sync/1.0 335a86ca87886806c8018551f6f6f4efd9ec35002c549a5922fdc890de56824b
10
+ https://fleetmesh.org/video-transit/1.0 4dbaa35541d77a8fd5f919f2c4c0f8f3de8c6f0d8b8229aec7caba1a64e1d3cd
@@ -0,0 +1,492 @@
1
+ {
2
+ "about": "the conformance op catalogue (docs/conformance.md); generated, do not edit",
3
+ "errors": [
4
+ "unsupported",
5
+ "bad_args",
6
+ "internal"
7
+ ],
8
+ "ops": {
9
+ "bech32.npub": {
10
+ "about": "npub of a hex pubkey",
11
+ "plane": "identity"
12
+ },
13
+ "blinding.derive": {
14
+ "about": "blinding scalar d from shared x, info and salt strings",
15
+ "plane": "identity"
16
+ },
17
+ "blossom.auth_event": {
18
+ "about": "BUD-01 authorization event (unsigned fields given signer)",
19
+ "plane": "store"
20
+ },
21
+ "blossom.auth_header": {
22
+ "about": "Authorization header for an auth event",
23
+ "plane": "store"
24
+ },
25
+ "blossom.check_auth": {
26
+ "about": "pubkey an auth event authorizes for verb/now/sha, or refused",
27
+ "plane": "store"
28
+ },
29
+ "blossom.mirror_request": {
30
+ "about": "BUD-04 mirror request body",
31
+ "plane": "store"
32
+ },
33
+ "blossom.mirror_response": {
34
+ "about": "blob descriptor after a mirror",
35
+ "plane": "store"
36
+ },
37
+ "blossom.parse_auth_header": {
38
+ "about": "auth event from an Authorization header",
39
+ "plane": "store"
40
+ },
41
+ "blossom.x_tag": {
42
+ "about": "the x tag of an auth event",
43
+ "plane": "store"
44
+ },
45
+ "capacity.pressure": {
46
+ "about": "{pressure, binding} from measured against total",
47
+ "plane": "peering"
48
+ },
49
+ "capacity.rungs": {
50
+ "about": "ladder rungs at a pressure",
51
+ "plane": "peering"
52
+ },
53
+ "capacity.shed_floor": {
54
+ "about": "the floor a shed never crosses, from probation ceilings",
55
+ "plane": "peering"
56
+ },
57
+ "complaint.may_publish": {
58
+ "about": "whether a complaint of a severity may be published now",
59
+ "plane": "peering"
60
+ },
61
+ "coverage.barred_reporter": {
62
+ "about": "why a reporter is barred from reporting on a claim, or null",
63
+ "plane": "store"
64
+ },
65
+ "coverage.chain_check": {
66
+ "about": "problems a bare handover chain has",
67
+ "plane": "store"
68
+ },
69
+ "coverage.check": {
70
+ "about": "problems a coverage claim has for a node class",
71
+ "plane": "store"
72
+ },
73
+ "coverage.handover_chain": {
74
+ "about": "the from-pubkeys of a claim's handover chain, in order",
75
+ "plane": "store"
76
+ },
77
+ "coverage.handover_check": {
78
+ "about": "problems a handover artefact has",
79
+ "plane": "store"
80
+ },
81
+ "coverage.handover_id": {
82
+ "about": "id of a handover artefact",
83
+ "plane": "store"
84
+ },
85
+ "coverage.handover_verify": {
86
+ "about": "handover verifies under its signer",
87
+ "plane": "store"
88
+ },
89
+ "coverage.inline_handover": {
90
+ "about": "the handover a replica claim carries inline",
91
+ "plane": "store"
92
+ },
93
+ "crypto.ecdh_x": {
94
+ "about": "x coordinate of the ECDH shared point",
95
+ "plane": "identity"
96
+ },
97
+ "crypto.hkdf": {
98
+ "about": "HKDF-SHA256 (RFC 5869); ikm/info/salt hex, length bytes",
99
+ "plane": "identity"
100
+ },
101
+ "crypto.pubkey": {
102
+ "about": "x-only public key of a secret key",
103
+ "plane": "identity"
104
+ },
105
+ "crypto.schnorr_sign": {
106
+ "about": "BIP-340 signature of a 32-byte message with zero aux",
107
+ "plane": "identity"
108
+ },
109
+ "descriptor.validate": {
110
+ "about": "problems a kind 11801 has at a given clock",
111
+ "plane": "identity"
112
+ },
113
+ "did.document": {
114
+ "about": "the resolved node profile for a kind 11801, aliases included",
115
+ "plane": "identity"
116
+ },
117
+ "did.key": {
118
+ "about": "did:key of a key kind over raw hex (node = x-only hex)",
119
+ "plane": "identity"
120
+ },
121
+ "did.parse": {
122
+ "about": "{method, node[, kind]} of a did:nostr / did:key / did:peer, or refused",
123
+ "plane": "identity"
124
+ },
125
+ "did.peer": {
126
+ "about": "did:peer:2 of node x-only hex, agreement hex or null, DIDComm service or null",
127
+ "plane": "identity"
128
+ },
129
+ "did.peer_parse": {
130
+ "about": "{node, agreement, service} read back from a did:peer:2, or refused",
131
+ "plane": "identity"
132
+ },
133
+ "discover.answer": {
134
+ "about": "the disclose message a descriptor answers a query with",
135
+ "plane": "peering"
136
+ },
137
+ "discover.ids": {
138
+ "about": "disclosed ids of a disclose message",
139
+ "plane": "peering"
140
+ },
141
+ "discover.parse": {
142
+ "about": "query list of a discover-features queries message",
143
+ "plane": "peering"
144
+ },
145
+ "discover.protocols": {
146
+ "about": "protocol ids a descriptor discloses",
147
+ "plane": "peering"
148
+ },
149
+ "discovery.check": {
150
+ "about": "problems a discovery event has against its descriptor",
151
+ "plane": "identity"
152
+ },
153
+ "discovery.events": {
154
+ "about": "NIP-66 discovery events from a descriptor and NIP-11 document",
155
+ "plane": "identity"
156
+ },
157
+ "discovery.network": {
158
+ "about": "NIP-66 network label of a URL",
159
+ "plane": "identity"
160
+ },
161
+ "envelope.hop_message": {
162
+ "about": "sha256 hop message for domain|event|prev|at",
163
+ "plane": "store"
164
+ },
165
+ "envelope.verify": {
166
+ "about": "problems a delivery envelope path has ([] = verifies)",
167
+ "plane": "store"
168
+ },
169
+ "event.expiration": {
170
+ "about": "NIP-40 expiration of an event, or null: the first well-formed tag, ASCII digits only",
171
+ "plane": "identity"
172
+ },
173
+ "event.verify": {
174
+ "about": "id and signature of a Nostr event check out",
175
+ "plane": "identity"
176
+ },
177
+ "fingerprint.of": {
178
+ "about": "range fingerprint of a set of event ids",
179
+ "plane": "store"
180
+ },
181
+ "fingerprint.union": {
182
+ "about": "fingerprint of two disjoint id sets composed",
183
+ "plane": "store"
184
+ },
185
+ "fingerprint.varint": {
186
+ "about": "negentropy varint encoding",
187
+ "plane": "store"
188
+ },
189
+ "giftwrap.constants": {
190
+ "about": "seal/live/stored kinds, skew max and retention",
191
+ "plane": "identity"
192
+ },
193
+ "giftwrap.unwrap": {
194
+ "about": "open a wrap for a recipient: {payload, from}, or refused",
195
+ "plane": "identity"
196
+ },
197
+ "giftwrap.wrap_kind_allowed": {
198
+ "about": "refusal text when wrapping a kind the profile forbids",
199
+ "plane": "identity"
200
+ },
201
+ "heartbeat.check": {
202
+ "about": "[problems, notices] of a heartbeat against a descriptor",
203
+ "plane": "store"
204
+ },
205
+ "heartbeat.is_retiring": {
206
+ "about": "heartbeat announces retirement",
207
+ "plane": "store"
208
+ },
209
+ "lifecycle.endpoints_digest": {
210
+ "about": "digest of a descriptor endpoint tag set",
211
+ "plane": "store"
212
+ },
213
+ "negentropy.decode": {
214
+ "about": "decode a message to [[timestamp, prefix_hex, mode], ...]",
215
+ "plane": "store"
216
+ },
217
+ "negentropy.encode": {
218
+ "about": "encode ranges: [[timestamp, prefix_hex, mode, payload], ...]",
219
+ "plane": "store"
220
+ },
221
+ "negentropy.minimal_bound": {
222
+ "about": "shortest prefix separating previous from item",
223
+ "plane": "store"
224
+ },
225
+ "negentropy.reconcile": {
226
+ "about": "have/need after a full reconciliation",
227
+ "plane": "store"
228
+ },
229
+ "negentropy.version": {
230
+ "about": "protocol version byte, hex",
231
+ "plane": "store"
232
+ },
233
+ "nip44.conversation_key": {
234
+ "about": "NIP-44 conversation key from sk and pk",
235
+ "plane": "identity"
236
+ },
237
+ "nip44.decrypt": {
238
+ "about": "NIP-44 v2 plaintext",
239
+ "plane": "identity"
240
+ },
241
+ "nip44.encrypt": {
242
+ "about": "NIP-44 v2 payload with a given nonce",
243
+ "plane": "identity"
244
+ },
245
+ "nip44.padded_len": {
246
+ "about": "padded length for an unpadded length",
247
+ "plane": "identity"
248
+ },
249
+ "nip90.constants": {
250
+ "about": "default kinds and feedback states",
251
+ "plane": "services"
252
+ },
253
+ "nip90.feedback": {
254
+ "about": "a feedback event (unsigned fields given signer)",
255
+ "plane": "services"
256
+ },
257
+ "nip90.parse": {
258
+ "about": "{is_request, parsed, executor, job} of a job request",
259
+ "plane": "services"
260
+ },
261
+ "nip90.result": {
262
+ "about": "a result event (unsigned fields given signer)",
263
+ "plane": "services"
264
+ },
265
+ "nip90.result_kind": {
266
+ "about": "result kind for a request kind",
267
+ "plane": "services"
268
+ },
269
+ "nsite.base36": {
270
+ "about": "base36 of a hex pubkey",
271
+ "plane": "services"
272
+ },
273
+ "nsite.base36_decode": {
274
+ "about": "hex pubkey of a base36 label, or null",
275
+ "plane": "services"
276
+ },
277
+ "nsite.guess_type": {
278
+ "about": "content type of a path",
279
+ "plane": "services"
280
+ },
281
+ "nsite.host": {
282
+ "about": "site ref of a host under suffixes",
283
+ "plane": "services"
284
+ },
285
+ "nsite.label": {
286
+ "about": "{ref, filter, canonical} of a site label",
287
+ "plane": "services"
288
+ },
289
+ "nsite.manifest": {
290
+ "about": "{paths, aggregate, domains, servers} of a manifest",
291
+ "plane": "services"
292
+ },
293
+ "nsite.resolve": {
294
+ "about": "resolution of a request path against manifest paths",
295
+ "plane": "services"
296
+ },
297
+ "nsite.txt": {
298
+ "about": "site ref of a TXT binding",
299
+ "plane": "services"
300
+ },
301
+ "paidfetch.quote": {
302
+ "about": "{headers, body} of a 402 quote",
303
+ "plane": "services"
304
+ },
305
+ "paidfetch.sat_ceil": {
306
+ "about": "msat rounded up to sat",
307
+ "plane": "services"
308
+ },
309
+ "paidfetch.tokens": {
310
+ "about": "tokens of an X-Cashu header",
311
+ "plane": "services"
312
+ },
313
+ "peering.offer": {
314
+ "about": "an acceptor's reply to a proposal (type, and code or tier/limits/transports)",
315
+ "plane": "peering"
316
+ },
317
+ "projection.canonical_relay": {
318
+ "about": "canonical spelling of a relay URL, or refused",
319
+ "plane": "identity"
320
+ },
321
+ "projection.check": {
322
+ "about": "problems an assertion has against its report ([] = holds)",
323
+ "plane": "identity"
324
+ },
325
+ "projection.project": {
326
+ "about": "NIP-85 assertions from one report",
327
+ "plane": "identity"
328
+ },
329
+ "projection.rank": {
330
+ "about": "rank by outcome table",
331
+ "plane": "identity"
332
+ },
333
+ "projection.relay_endpoints": {
334
+ "about": "relay endpoints a descriptor advertises",
335
+ "plane": "identity"
336
+ },
337
+ "protocol.version": {
338
+ "about": "[name, major, minor] of a fleetmesh protocol identifier, or null",
339
+ "plane": "identity"
340
+ },
341
+ "receipt.link": {
342
+ "about": "link hash of a receipt body (signature excluded)",
343
+ "plane": "peering"
344
+ },
345
+ "receipt.sign": {
346
+ "about": "signature over an unsigned receipt",
347
+ "plane": "peering"
348
+ },
349
+ "receipt.verify": {
350
+ "about": "a receipt verifies for its subject",
351
+ "plane": "peering"
352
+ },
353
+ "receipt_chain.sha256": {
354
+ "about": "canonical JSON and sha256 of a receipt link",
355
+ "plane": "store"
356
+ },
357
+ "relaylist.build": {
358
+ "about": "the tags of the kind 10050 a node publishes for its own inbox",
359
+ "plane": "transport"
360
+ },
361
+ "relaylist.dm_relays": {
362
+ "about": "inbox relays read from a kind 10050 event",
363
+ "plane": "transport"
364
+ },
365
+ "relaylist.filter": {
366
+ "about": "the REQ filter that fetches a pubkey's kind 10050",
367
+ "plane": "transport"
368
+ },
369
+ "release.classify": {
370
+ "about": "'major'|'minor'|'patch' when candidate is newer than running, else null",
371
+ "plane": "operations"
372
+ },
373
+ "release.compare": {
374
+ "about": "-1/0/1 for a <,==,> b; prerelease below its release; refused when either is not a semver",
375
+ "plane": "operations"
376
+ },
377
+ "release.parse": {
378
+ "about": "a kind 9900 read for {release_key[, name]}: the ReleaseInfo dict, or the refusal string",
379
+ "plane": "operations"
380
+ },
381
+ "release.revocation": {
382
+ "about": "[revoked event id, reason] of a kind 9901 by release_key that verifies, else null",
383
+ "plane": "operations"
384
+ },
385
+ "release.select": {
386
+ "about": "newest_compatible / incompatible_newer / refused / revoked from events for {release_key, running, digest[, name, already_revoked]}",
387
+ "plane": "operations"
388
+ },
389
+ "release.semver": {
390
+ "about": "[major, minor, patch, prerelease] of a semver, or refused",
391
+ "plane": "operations"
392
+ },
393
+ "report.admissible": {
394
+ "about": "a report is admissible given which referenced events resolve",
395
+ "plane": "peering"
396
+ },
397
+ "report.evidence_id": {
398
+ "about": "evidence id of a signed receipt",
399
+ "plane": "peering"
400
+ },
401
+ "standing.tell": {
402
+ "about": "standing tell after a sequence of windows",
403
+ "plane": "peering"
404
+ },
405
+ "store.replay": {
406
+ "about": "insert events; result {enumerate: [id], ranges: [fingerprint hex, one per range in order]}",
407
+ "plane": "store"
408
+ },
409
+ "telemetry.bin_of": {
410
+ "about": "order-of-magnitude bin of a counter",
411
+ "plane": "store"
412
+ },
413
+ "telemetry.check": {
414
+ "about": "problems a telemetry event has",
415
+ "plane": "store"
416
+ },
417
+ "telemetry.constants": {
418
+ "about": "kind and bin labels",
419
+ "plane": "store"
420
+ },
421
+ "telemetry.event": {
422
+ "about": "the kind 21802 event for counters (unsigned fields)",
423
+ "plane": "store"
424
+ },
425
+ "telemetry.read": {
426
+ "about": "metrics read back from a telemetry event",
427
+ "plane": "store"
428
+ },
429
+ "trust.reporter_weight": {
430
+ "about": "weight of a reporter",
431
+ "plane": "peering"
432
+ },
433
+ "trust.view": {
434
+ "about": "own view given weighted reports",
435
+ "plane": "peering"
436
+ },
437
+ "window.adjust": {
438
+ "about": "{limits_after, tier_after} after a severity; refused for a severity or tier not on the ladder",
439
+ "plane": "peering"
440
+ },
441
+ "window.ceilings": {
442
+ "about": "ceilings of a tier",
443
+ "plane": "peering"
444
+ },
445
+ "window.evaluate": {
446
+ "about": "severity of a window from limits, measured and claimed",
447
+ "plane": "peering"
448
+ },
449
+ "window.opening_limits": {
450
+ "about": "opening limits of a tier",
451
+ "plane": "peering"
452
+ }
453
+ },
454
+ "planes": [
455
+ "identity",
456
+ "store",
457
+ "peering",
458
+ "transport",
459
+ "services",
460
+ "operations"
461
+ ],
462
+ "verdicts": [
463
+ "conformant",
464
+ "partial",
465
+ "not attempted",
466
+ "FAILED",
467
+ "no cases"
468
+ ],
469
+ "wire": {
470
+ "hello": {
471
+ "result": {
472
+ "implementation": "string",
473
+ "ops": [
474
+ "sorted op names"
475
+ ]
476
+ }
477
+ },
478
+ "reply": {
479
+ "error": {
480
+ "code": "one of errors",
481
+ "message": "text"
482
+ },
483
+ "id": "echoed",
484
+ "result": "value, or {refused: why}"
485
+ },
486
+ "request": {
487
+ "args": "object",
488
+ "id": "any JSON",
489
+ "op": "domain.verb"
490
+ }
491
+ }
492
+ }