@taifoon/jev 0.1.0 → 0.2.1
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.
- package/README.md +97 -191
- package/bin/jev.mjs +9 -3
- package/bin/run.mjs +86 -0
- package/bin/term.mjs +154 -0
- package/dist/ask.d.ts +5 -8
- package/dist/ask.js +16 -28
- package/dist/contracts.d.ts +5 -1
- package/dist/contracts.js +7 -3
- package/dist/grade.d.ts +0 -4
- package/dist/grade.js +5 -6
- package/dist/index.d.ts +7 -1
- package/dist/index.js +5 -1
- package/dist/job.d.ts +65 -0
- package/dist/job.js +50 -0
- package/dist/pipeline.d.ts +156 -0
- package/dist/pipeline.js +193 -0
- package/dist/rubric.js +1 -1
- package/dist/verify.d.ts +6 -0
- package/dist/verify.js +48 -9
- package/docs/API.md +20 -0
- package/docs/DEVELOP.md +7 -0
- package/docs/EVALUATORS.md +20 -0
- package/docs/ON_CHAIN.md +44 -0
- package/docs/PIPELINE.md +76 -0
- package/docs/RECORDS.md +10 -0
- package/docs/WORKFLOWS.md +38 -0
- package/examples/grade-job.mjs +17 -0
- package/examples/jobs/base-bitagent-7287.recorded.json +80 -0
- package/examples/jobs/invoice-extraction.json +24 -0
- package/examples/jobs/research-report-no-sources.json +29 -0
- package/examples/jobs/research-report.json +34 -0
- package/examples/jobs/signal-unsupported.json +27 -0
- package/examples/quickstart.mjs +22 -0
- package/package.json +19 -11
- package/workflows/{0.1.0 → 0.2.1}/README.md +3 -3
- package/workflows/{0.1.0 → 0.2.1}/jev-grader.json +2 -2
- package/workflows/{0.1.0 → 0.2.1}/manifest.json +12 -12
- package/workflows/{0.1.0 → 0.2.1}/schemas/answers.json +17 -35
- package/workflows/{0.1.0 → 0.2.1}/schemas/common.json +1 -1
- package/workflows/{0.1.0 → 0.2.1}/schemas/delivery.json +15 -31
- package/workflows/{0.1.0 → 0.2.1}/schemas/facts.json +15 -31
- package/workflows/{0.1.0 → 0.2.1}/schemas/hire.json +22 -45
- package/workflows/{0.1.0 → 0.2.1}/schemas/job.json +7 -15
- package/workflows/{0.1.0 → 0.2.1}/schemas/settlement.json +17 -33
- package/workflows/{0.1.0 → 0.2.1}/schemas/verdict.json +17 -35
- package/workflows/0.2.1/stamp-grade.json +175 -0
- package/workflows/0.1.0/stamp-grade.json +0 -175
- /package/workflows/{0.1.0 → 0.2.1}/batch-judge.json +0 -0
- /package/workflows/{0.1.0 → 0.2.1}/hire-judge-settle.json +0 -0
|
@@ -8,13 +8,11 @@
|
|
|
8
8
|
"schema": {
|
|
9
9
|
"const": "taifoon.delivery.v1",
|
|
10
10
|
"x-stage": "L",
|
|
11
|
-
"x-source": "this contract",
|
|
12
11
|
"description": "which canonical entity this record is; fixed per schema"
|
|
13
12
|
},
|
|
14
13
|
"job": {
|
|
15
14
|
"$ref": "common.json#/$defs/job_ref",
|
|
16
|
-
"x-stage": "S1"
|
|
17
|
-
"x-source": "the hire it answers"
|
|
15
|
+
"x-stage": "S1"
|
|
18
16
|
},
|
|
19
17
|
"handshake_id": {
|
|
20
18
|
"type": [
|
|
@@ -22,13 +20,11 @@
|
|
|
22
20
|
"null"
|
|
23
21
|
],
|
|
24
22
|
"pattern": "^hs_[0-9a-f]{24}$",
|
|
25
|
-
"x-stage": "L"
|
|
26
|
-
"x-source": "coordd dlv:<hs>"
|
|
23
|
+
"x-stage": "L"
|
|
27
24
|
},
|
|
28
25
|
"delivered": {
|
|
29
26
|
"type": "boolean",
|
|
30
|
-
"x-stage": "S1"
|
|
31
|
-
"x-source": "a reply was held (status ready + digest) or JobSubmitted / memo phase EVALUATION / hook Submitted exists"
|
|
27
|
+
"x-stage": "S1"
|
|
32
28
|
},
|
|
33
29
|
"transport": {
|
|
34
30
|
"enum": [
|
|
@@ -45,8 +41,7 @@
|
|
|
45
41
|
"grid.probe",
|
|
46
42
|
"none"
|
|
47
43
|
],
|
|
48
|
-
"x-stage": "L"
|
|
49
|
-
"x-source": "wire-client protocol + tool; or the on-chain submit"
|
|
44
|
+
"x-stage": "L"
|
|
50
45
|
},
|
|
51
46
|
"status": {
|
|
52
47
|
"enum": [
|
|
@@ -57,8 +52,7 @@
|
|
|
57
52
|
"submitted",
|
|
58
53
|
"none"
|
|
59
54
|
],
|
|
60
|
-
"x-stage": "L"
|
|
61
|
-
"x-source": "wire-client WireStatus; submitted = on-chain submission; none = nothing"
|
|
55
|
+
"x-stage": "L"
|
|
62
56
|
},
|
|
63
57
|
"digest": {
|
|
64
58
|
"type": "object",
|
|
@@ -86,8 +80,7 @@
|
|
|
86
80
|
"algo"
|
|
87
81
|
],
|
|
88
82
|
"additionalProperties": false,
|
|
89
|
-
"x-stage": "S1"
|
|
90
|
-
"x-source": "keccak256(reply text) (wire-client replyDigest) = hook Submitted.evidenceDigest; ERC-8183 JobSubmitted.deliverable"
|
|
83
|
+
"x-stage": "S1"
|
|
91
84
|
},
|
|
92
85
|
"content": {
|
|
93
86
|
"type": "object",
|
|
@@ -121,32 +114,28 @@
|
|
|
121
114
|
"full_available"
|
|
122
115
|
],
|
|
123
116
|
"additionalProperties": false,
|
|
124
|
-
"x-stage": "L"
|
|
125
|
-
"x-source": "reply_head (≤400) · reply_chars · memo deliverable URL (acpx memo-contents) · whether the full text is held (coordd, ≤100 kB)"
|
|
117
|
+
"x-stage": "L"
|
|
126
118
|
},
|
|
127
119
|
"tool": {
|
|
128
120
|
"type": [
|
|
129
121
|
"string",
|
|
130
122
|
"null"
|
|
131
123
|
],
|
|
132
|
-
"x-stage": "L"
|
|
133
|
-
"x-source": "MCP tool called"
|
|
124
|
+
"x-stage": "L"
|
|
134
125
|
},
|
|
135
126
|
"reason": {
|
|
136
127
|
"type": [
|
|
137
128
|
"string",
|
|
138
129
|
"null"
|
|
139
130
|
],
|
|
140
|
-
"x-stage": "L"
|
|
141
|
-
"x-source": "wire-client reason: why nothing came back, or a reply flag (the tool reported isError)"
|
|
131
|
+
"x-stage": "L"
|
|
142
132
|
},
|
|
143
133
|
"request": {
|
|
144
134
|
"type": [
|
|
145
135
|
"object",
|
|
146
136
|
"null"
|
|
147
137
|
],
|
|
148
|
-
"x-stage": "L"
|
|
149
|
-
"x-source": "the request as sent: tool + args (MCP) or text (A2A)"
|
|
138
|
+
"x-stage": "L"
|
|
150
139
|
},
|
|
151
140
|
"submitted_at": {
|
|
152
141
|
"anyOf": [
|
|
@@ -157,16 +146,14 @@
|
|
|
157
146
|
"type": "null"
|
|
158
147
|
}
|
|
159
148
|
],
|
|
160
|
-
"x-stage": "S1"
|
|
161
|
-
"x-source": "JobSubmitted block ts / delivery at"
|
|
149
|
+
"x-stage": "S1"
|
|
162
150
|
},
|
|
163
151
|
"latency_ms": {
|
|
164
152
|
"type": [
|
|
165
153
|
"integer",
|
|
166
154
|
"null"
|
|
167
155
|
],
|
|
168
|
-
"x-stage": "L"
|
|
169
|
-
"x-source": "wire round trip"
|
|
156
|
+
"x-stage": "L"
|
|
170
157
|
},
|
|
171
158
|
"attestation": {
|
|
172
159
|
"type": [
|
|
@@ -194,21 +181,18 @@
|
|
|
194
181
|
"source"
|
|
195
182
|
],
|
|
196
183
|
"additionalProperties": false,
|
|
197
|
-
"x-stage": "S8"
|
|
198
|
-
"x-source": "the seller enclave as the registry knew it at dispatch (Delivery.attestation)"
|
|
184
|
+
"x-stage": "S8"
|
|
199
185
|
},
|
|
200
186
|
"anchors": {
|
|
201
187
|
"type": "array",
|
|
202
188
|
"items": {
|
|
203
189
|
"$ref": "common.json#/$defs/anchor"
|
|
204
190
|
},
|
|
205
|
-
"x-stage": "S1"
|
|
206
|
-
"x-source": "JobSubmitted / Submitted tx; coordd dlv:<hs>"
|
|
191
|
+
"x-stage": "S1"
|
|
207
192
|
},
|
|
208
193
|
"source": {
|
|
209
194
|
"$ref": "common.json#/$defs/source",
|
|
210
|
-
"x-stage": "L"
|
|
211
|
-
"x-source": "the mapper"
|
|
195
|
+
"x-stage": "L"
|
|
212
196
|
}
|
|
213
197
|
},
|
|
214
198
|
"required": [
|
|
@@ -8,23 +8,19 @@
|
|
|
8
8
|
"schema": {
|
|
9
9
|
"const": "taifoon.facts.v1",
|
|
10
10
|
"x-stage": "L",
|
|
11
|
-
"x-source": "this contract",
|
|
12
11
|
"description": "which canonical entity this record is; fixed per schema"
|
|
13
12
|
},
|
|
14
13
|
"subject": {
|
|
15
14
|
"$ref": "common.json#/$defs/job_key",
|
|
16
|
-
"x-stage": "L"
|
|
17
|
-
"x-source": "what the facts are about: the job key (hs:… for a handshake subject)"
|
|
15
|
+
"x-stage": "L"
|
|
18
16
|
},
|
|
19
17
|
"job": {
|
|
20
18
|
"$ref": "common.json#/$defs/job_ref",
|
|
21
|
-
"x-stage": "S1"
|
|
22
|
-
"x-source": "the hire"
|
|
19
|
+
"x-stage": "S1"
|
|
23
20
|
},
|
|
24
21
|
"delivered": {
|
|
25
22
|
"type": "boolean",
|
|
26
|
-
"x-stage": "S4"
|
|
27
|
-
"x-source": "judge-facts factsOf.delivered: reply digest held / JobSubmitted seen / Olas delivery"
|
|
23
|
+
"x-stage": "S4"
|
|
28
24
|
},
|
|
29
25
|
"checks": {
|
|
30
26
|
"type": "object",
|
|
@@ -34,16 +30,14 @@
|
|
|
34
30
|
"null"
|
|
35
31
|
]
|
|
36
32
|
},
|
|
37
|
-
"x-stage": "S4"
|
|
38
|
-
"x-source": "judge-facts checks{}: reply_held, funded, submitted, inclusion (proof.verify.v5 DET), delivered; null = could not be checked"
|
|
33
|
+
"x-stage": "S4"
|
|
39
34
|
},
|
|
40
35
|
"checks_ok": {
|
|
41
36
|
"type": [
|
|
42
37
|
"boolean",
|
|
43
38
|
"null"
|
|
44
39
|
],
|
|
45
|
-
"x-stage": "S4"
|
|
46
|
-
"x-source": "every check made passed; null = none could be made"
|
|
40
|
+
"x-stage": "S4"
|
|
47
41
|
},
|
|
48
42
|
"det": {
|
|
49
43
|
"type": [
|
|
@@ -63,8 +57,7 @@
|
|
|
63
57
|
"why"
|
|
64
58
|
],
|
|
65
59
|
"additionalProperties": false,
|
|
66
|
-
"x-stage": "S4"
|
|
67
|
-
"x-source": "the class DET that ran (proof.verify.v5 inclusion)"
|
|
60
|
+
"x-stage": "S4"
|
|
68
61
|
},
|
|
69
62
|
"ending": {
|
|
70
63
|
"anyOf": [
|
|
@@ -75,8 +68,7 @@
|
|
|
75
68
|
"type": "null"
|
|
76
69
|
}
|
|
77
70
|
],
|
|
78
|
-
"x-stage": "S2"
|
|
79
|
-
"x-source": "observatory ending when the subject is a job"
|
|
71
|
+
"x-stage": "S2"
|
|
80
72
|
},
|
|
81
73
|
"det_value": {
|
|
82
74
|
"anyOf": [
|
|
@@ -87,8 +79,7 @@
|
|
|
87
79
|
"type": "null"
|
|
88
80
|
}
|
|
89
81
|
],
|
|
90
|
-
"x-stage": "S4"
|
|
91
|
-
"x-source": "DET from events (jev-pad detFromEvents): completed → delivered_as_specified · rejected+submitted → delivered_with_defects · no submission → not_delivered · expired+submitted → cannot_determine"
|
|
82
|
+
"x-stage": "S4"
|
|
92
83
|
},
|
|
93
84
|
"verdict_class": {
|
|
94
85
|
"anyOf": [
|
|
@@ -99,16 +90,14 @@
|
|
|
99
90
|
"type": "null"
|
|
100
91
|
}
|
|
101
92
|
],
|
|
102
|
-
"x-stage": "S2"
|
|
103
|
-
"x-source": "the seller-verdict rule on this job (trails.mjs verdictOf)"
|
|
93
|
+
"x-stage": "S2"
|
|
104
94
|
},
|
|
105
95
|
"reason_on_chain": {
|
|
106
96
|
"type": [
|
|
107
97
|
"string",
|
|
108
98
|
"null"
|
|
109
99
|
],
|
|
110
|
-
"x-stage": "S1"
|
|
111
|
-
"x-source": "JobRejected reason (ascii) ?? the rejecting memo — what a party SAID on chain, quoted, never inferred"
|
|
100
|
+
"x-stage": "S1"
|
|
112
101
|
},
|
|
113
102
|
"pair": {
|
|
114
103
|
"type": [
|
|
@@ -131,16 +120,14 @@
|
|
|
131
120
|
"endings"
|
|
132
121
|
],
|
|
133
122
|
"additionalProperties": false,
|
|
134
|
-
"x-stage": "S2"
|
|
135
|
-
"x-source": "every job between this buyer and this seller (observatory pair)"
|
|
123
|
+
"x-stage": "S2"
|
|
136
124
|
},
|
|
137
125
|
"price_usdc": {
|
|
138
126
|
"type": [
|
|
139
127
|
"number",
|
|
140
128
|
"null"
|
|
141
129
|
],
|
|
142
|
-
"x-stage": "S4"
|
|
143
|
-
"x-source": "the price when it is in USDC (auto-complete cap check)"
|
|
130
|
+
"x-stage": "S4"
|
|
144
131
|
},
|
|
145
132
|
"pack": {
|
|
146
133
|
"type": [
|
|
@@ -186,21 +173,18 @@
|
|
|
186
173
|
"state"
|
|
187
174
|
],
|
|
188
175
|
"additionalProperties": false,
|
|
189
|
-
"x-stage": "S4"
|
|
190
|
-
"x-source": "job-evidence buildEvidence / delivery-evidence buildDeliveryEvidence: [label, value][], gaps[], the state text"
|
|
176
|
+
"x-stage": "S4"
|
|
191
177
|
},
|
|
192
178
|
"anchors": {
|
|
193
179
|
"type": "array",
|
|
194
180
|
"items": {
|
|
195
181
|
"$ref": "common.json#/$defs/anchor"
|
|
196
182
|
},
|
|
197
|
-
"x-stage": "S4"
|
|
198
|
-
"x-source": "the events the facts were read from; the evidence route"
|
|
183
|
+
"x-stage": "S4"
|
|
199
184
|
},
|
|
200
185
|
"source": {
|
|
201
186
|
"$ref": "common.json#/$defs/source",
|
|
202
|
-
"x-stage": "L"
|
|
203
|
-
"x-source": "the mapper"
|
|
187
|
+
"x-stage": "L"
|
|
204
188
|
}
|
|
205
189
|
},
|
|
206
190
|
"required": [
|
|
@@ -8,26 +8,22 @@
|
|
|
8
8
|
"schema": {
|
|
9
9
|
"const": "taifoon.hire.v1",
|
|
10
10
|
"x-stage": "L",
|
|
11
|
-
"x-source": "this contract",
|
|
12
11
|
"description": "which canonical entity this record is; fixed per schema"
|
|
13
12
|
},
|
|
14
13
|
"job": {
|
|
15
14
|
"$ref": "common.json#/$defs/job_ref",
|
|
16
|
-
"x-stage": "S1"
|
|
17
|
-
"x-source": "JobCreated.jobId / JobManager id / hook bytes32 / handshake id (src/ids.ts)"
|
|
15
|
+
"x-stage": "S1"
|
|
18
16
|
},
|
|
19
17
|
"lane": {
|
|
20
18
|
"$ref": "common.json#/$defs/lane",
|
|
21
|
-
"x-stage": "S2"
|
|
22
|
-
"x-source": "observatory source (erc8183 | memo-acp | hook, + deployment for extra) or handshake"
|
|
19
|
+
"x-stage": "S2"
|
|
23
20
|
},
|
|
24
21
|
"tenant": {
|
|
25
22
|
"type": [
|
|
26
23
|
"string",
|
|
27
24
|
"null"
|
|
28
25
|
],
|
|
29
|
-
"x-stage": "S2"
|
|
30
|
-
"x-source": "observatory tenant for hook jobs (layer | moonbeam)"
|
|
26
|
+
"x-stage": "S2"
|
|
31
27
|
},
|
|
32
28
|
"buyer": {
|
|
33
29
|
"anyOf": [
|
|
@@ -38,8 +34,7 @@
|
|
|
38
34
|
"type": "null"
|
|
39
35
|
}
|
|
40
36
|
],
|
|
41
|
-
"x-stage": "S1"
|
|
42
|
-
"x-source": "JobCreated.client / hook JobFunded.buyer / handshake hirer / §2 offer client"
|
|
37
|
+
"x-stage": "S1"
|
|
43
38
|
},
|
|
44
39
|
"seller": {
|
|
45
40
|
"anyOf": [
|
|
@@ -50,8 +45,7 @@
|
|
|
50
45
|
"type": "null"
|
|
51
46
|
}
|
|
52
47
|
],
|
|
53
|
-
"x-stage": "S1"
|
|
54
|
-
"x-source": "JobCreated.provider (ProviderSet on extra) / hook seller / handshake candidate.address"
|
|
48
|
+
"x-stage": "S1"
|
|
55
49
|
},
|
|
56
50
|
"seller_agent_key": {
|
|
57
51
|
"anyOf": [
|
|
@@ -62,8 +56,7 @@
|
|
|
62
56
|
"type": "null"
|
|
63
57
|
}
|
|
64
58
|
],
|
|
65
|
-
"x-stage": "S9"
|
|
66
|
-
"x-source": "the provider → ERC-8004 join: extra provider_agent_id, handshake candidate.agentId; null when nothing joins them (the missing seam)"
|
|
59
|
+
"x-stage": "S9"
|
|
67
60
|
},
|
|
68
61
|
"seller_ids": {
|
|
69
62
|
"type": "array",
|
|
@@ -83,8 +76,7 @@
|
|
|
83
76
|
],
|
|
84
77
|
"additionalProperties": false
|
|
85
78
|
},
|
|
86
|
-
"x-stage": "S1"
|
|
87
|
-
"x-source": "every other id the source names for the seller: bitagent ProviderSet agentId (not an ERC-8004 id), handshake candidate agentId"
|
|
79
|
+
"x-stage": "S1"
|
|
88
80
|
},
|
|
89
81
|
"evaluator": {
|
|
90
82
|
"anyOf": [
|
|
@@ -95,8 +87,7 @@
|
|
|
95
87
|
"type": "null"
|
|
96
88
|
}
|
|
97
89
|
],
|
|
98
|
-
"x-stage": "S1"
|
|
99
|
-
"x-source": "JobCreated.evaluator (null for hook jobs: the buyer or the hook’s evaluators decide)"
|
|
90
|
+
"x-stage": "S1"
|
|
100
91
|
},
|
|
101
92
|
"hook": {
|
|
102
93
|
"anyOf": [
|
|
@@ -107,8 +98,7 @@
|
|
|
107
98
|
"type": "null"
|
|
108
99
|
}
|
|
109
100
|
],
|
|
110
|
-
"x-stage": "S1"
|
|
111
|
-
"x-source": "JobCreated.hook (ERC-8183 hook contract; null when zero) / the assurance hook itself on the hook lane"
|
|
101
|
+
"x-stage": "S1"
|
|
112
102
|
},
|
|
113
103
|
"evaluator_kind": {
|
|
114
104
|
"anyOf": [
|
|
@@ -125,24 +115,21 @@
|
|
|
125
115
|
"type": "null"
|
|
126
116
|
}
|
|
127
117
|
],
|
|
128
|
-
"x-stage": "S2"
|
|
129
|
-
"x-source": "observatory evaluator_kind; hook = the assurance hook’s buyer/evaluator set"
|
|
118
|
+
"x-stage": "S2"
|
|
130
119
|
},
|
|
131
120
|
"task": {
|
|
132
121
|
"type": [
|
|
133
122
|
"string",
|
|
134
123
|
"null"
|
|
135
124
|
],
|
|
136
|
-
"x-stage": "S2"
|
|
137
|
-
"x-source": "getJob(id).description (tasks.json) / memo-ACP first REQUEST memo / handshake task / §2 offer task"
|
|
125
|
+
"x-stage": "S2"
|
|
138
126
|
},
|
|
139
127
|
"required_skills": {
|
|
140
128
|
"type": "array",
|
|
141
129
|
"items": {
|
|
142
130
|
"type": "string"
|
|
143
131
|
},
|
|
144
|
-
"x-stage": "L"
|
|
145
|
-
"x-source": "handshake / offer required_skills"
|
|
132
|
+
"x-stage": "L"
|
|
146
133
|
},
|
|
147
134
|
"budget": {
|
|
148
135
|
"anyOf": [
|
|
@@ -153,8 +140,7 @@
|
|
|
153
140
|
"type": "null"
|
|
154
141
|
}
|
|
155
142
|
],
|
|
156
|
-
"x-stage": "S1"
|
|
157
|
-
"x-source": "JobFunded.amount (else BudgetSet / getJob word 6) in the job token; handshake budget_usdc"
|
|
143
|
+
"x-stage": "S1"
|
|
158
144
|
},
|
|
159
145
|
"funding": {
|
|
160
146
|
"type": [
|
|
@@ -233,8 +219,7 @@
|
|
|
233
219
|
"challenge_window"
|
|
234
220
|
],
|
|
235
221
|
"additionalProperties": false,
|
|
236
|
-
"x-stage": "S1"
|
|
237
|
-
"x-source": "hook JobFunded(price, premium, deposit, pool) + JobCovered.coverCap + jobs(jobId).deadline; ERC-8183 JobFunded.amount as price"
|
|
222
|
+
"x-stage": "S1"
|
|
238
223
|
},
|
|
239
224
|
"created_at": {
|
|
240
225
|
"anyOf": [
|
|
@@ -245,8 +230,7 @@
|
|
|
245
230
|
"type": "null"
|
|
246
231
|
}
|
|
247
232
|
],
|
|
248
|
-
"x-stage": "S1"
|
|
249
|
-
"x-source": "JobCreated block ts / handshake createdAt"
|
|
233
|
+
"x-stage": "S1"
|
|
250
234
|
},
|
|
251
235
|
"deadline": {
|
|
252
236
|
"anyOf": [
|
|
@@ -257,8 +241,7 @@
|
|
|
257
241
|
"type": "null"
|
|
258
242
|
}
|
|
259
243
|
],
|
|
260
|
-
"x-stage": "S1"
|
|
261
|
-
"x-source": "JobCreated.expiredAt / hook deadline"
|
|
244
|
+
"x-stage": "S1"
|
|
262
245
|
},
|
|
263
246
|
"handshake_id": {
|
|
264
247
|
"type": [
|
|
@@ -266,21 +249,18 @@
|
|
|
266
249
|
"null"
|
|
267
250
|
],
|
|
268
251
|
"pattern": "^hs_[0-9a-f]{24}$",
|
|
269
|
-
"x-stage": "L"
|
|
270
|
-
"x-source": "the broker’s handshake this job was offered under"
|
|
252
|
+
"x-stage": "L"
|
|
271
253
|
},
|
|
272
254
|
"offer_nonce": {
|
|
273
255
|
"type": [
|
|
274
256
|
"string",
|
|
275
257
|
"null"
|
|
276
258
|
],
|
|
277
|
-
"x-stage": "S7"
|
|
278
|
-
"x-source": "§2 offer nonce the seller must echo (n8n.webhook class DET)"
|
|
259
|
+
"x-stage": "S7"
|
|
279
260
|
},
|
|
280
261
|
"state": {
|
|
281
262
|
"$ref": "common.json#/$defs/lifecycle_state",
|
|
282
|
-
"x-stage": "L"
|
|
283
|
-
"x-source": "machine state (src/machine.ts) derived from the events / hook state / memo phase / handshake state"
|
|
263
|
+
"x-stage": "L"
|
|
284
264
|
},
|
|
285
265
|
"ending": {
|
|
286
266
|
"anyOf": [
|
|
@@ -291,21 +271,18 @@
|
|
|
291
271
|
"type": "null"
|
|
292
272
|
}
|
|
293
273
|
],
|
|
294
|
-
"x-stage": "S2"
|
|
295
|
-
"x-source": "observatory ending, null for a handshake"
|
|
274
|
+
"x-stage": "S2"
|
|
296
275
|
},
|
|
297
276
|
"anchors": {
|
|
298
277
|
"type": "array",
|
|
299
278
|
"items": {
|
|
300
279
|
"$ref": "common.json#/$defs/anchor"
|
|
301
280
|
},
|
|
302
|
-
"x-stage": "S1"
|
|
303
|
-
"x-source": "JobCreated / JobFunded transactions; the handshake row"
|
|
281
|
+
"x-stage": "S1"
|
|
304
282
|
},
|
|
305
283
|
"source": {
|
|
306
284
|
"$ref": "common.json#/$defs/source",
|
|
307
|
-
"x-stage": "L"
|
|
308
|
-
"x-source": "the mapper"
|
|
285
|
+
"x-stage": "L"
|
|
309
286
|
}
|
|
310
287
|
},
|
|
311
288
|
"required": [
|
|
@@ -8,18 +8,15 @@
|
|
|
8
8
|
"schema": {
|
|
9
9
|
"const": "taifoon.job.v1",
|
|
10
10
|
"x-stage": "L",
|
|
11
|
-
"x-source": "this contract",
|
|
12
11
|
"description": "which canonical entity this record is; fixed per schema"
|
|
13
12
|
},
|
|
14
13
|
"job_key": {
|
|
15
14
|
"$ref": "common.json#/$defs/job_key",
|
|
16
|
-
"x-stage": "L"
|
|
17
|
-
"x-source": "hire.job.key"
|
|
15
|
+
"x-stage": "L"
|
|
18
16
|
},
|
|
19
17
|
"hire": {
|
|
20
18
|
"$ref": "hire.json",
|
|
21
|
-
"x-stage": "S1"
|
|
22
|
-
"x-source": "HIRE"
|
|
19
|
+
"x-stage": "S1"
|
|
23
20
|
},
|
|
24
21
|
"delivery": {
|
|
25
22
|
"anyOf": [
|
|
@@ -30,8 +27,7 @@
|
|
|
30
27
|
"type": "null"
|
|
31
28
|
}
|
|
32
29
|
],
|
|
33
|
-
"x-stage": "S1"
|
|
34
|
-
"x-source": "DELIVERY"
|
|
30
|
+
"x-stage": "S1"
|
|
35
31
|
},
|
|
36
32
|
"facts": {
|
|
37
33
|
"anyOf": [
|
|
@@ -42,8 +38,7 @@
|
|
|
42
38
|
"type": "null"
|
|
43
39
|
}
|
|
44
40
|
],
|
|
45
|
-
"x-stage": "S4"
|
|
46
|
-
"x-source": "FACTS"
|
|
41
|
+
"x-stage": "S4"
|
|
47
42
|
},
|
|
48
43
|
"verdict": {
|
|
49
44
|
"anyOf": [
|
|
@@ -54,8 +49,7 @@
|
|
|
54
49
|
"type": "null"
|
|
55
50
|
}
|
|
56
51
|
],
|
|
57
|
-
"x-stage": "S5"
|
|
58
|
-
"x-source": "VERDICT"
|
|
52
|
+
"x-stage": "S5"
|
|
59
53
|
},
|
|
60
54
|
"settlement": {
|
|
61
55
|
"anyOf": [
|
|
@@ -66,8 +60,7 @@
|
|
|
66
60
|
"type": "null"
|
|
67
61
|
}
|
|
68
62
|
],
|
|
69
|
-
"x-stage": "S6"
|
|
70
|
-
"x-source": "SETTLEMENT"
|
|
63
|
+
"x-stage": "S6"
|
|
71
64
|
},
|
|
72
65
|
"record": {
|
|
73
66
|
"anyOf": [
|
|
@@ -78,8 +71,7 @@
|
|
|
78
71
|
"type": "null"
|
|
79
72
|
}
|
|
80
73
|
],
|
|
81
|
-
"x-stage": "S2"
|
|
82
|
-
"x-source": "the seller RECORD at read time"
|
|
74
|
+
"x-stage": "S2"
|
|
83
75
|
}
|
|
84
76
|
},
|
|
85
77
|
"required": [
|