@skill-harness/core 0.11.0 → 0.12.0

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 (77) hide show
  1. package/README.md +2 -1
  2. package/dist/adapters/types.d.ts +19 -0
  3. package/dist/adjudication.d.ts +9 -1
  4. package/dist/adjudication.js +41 -33
  5. package/dist/arms.d.ts +1 -1
  6. package/dist/capture-trace-types.d.ts +2 -0
  7. package/dist/command-cost.d.ts +9 -0
  8. package/dist/command-cost.js +23 -0
  9. package/dist/comparison.d.ts +1 -0
  10. package/dist/comparison.js +9 -3
  11. package/dist/execution-trace.js +9 -1
  12. package/dist/grade.d.ts +2 -0
  13. package/dist/grade.js +2 -1
  14. package/dist/index.d.ts +12 -0
  15. package/dist/index.js +12 -0
  16. package/dist/journal.d.ts +1 -1
  17. package/dist/judge-agreement.d.ts +19 -0
  18. package/dist/judge-agreement.js +31 -0
  19. package/dist/judge-policy.js +5 -3
  20. package/dist/lift.js +1 -1
  21. package/dist/lint.js +1 -1
  22. package/dist/prompt-normalization.d.ts +6 -0
  23. package/dist/prompt-normalization.js +14 -0
  24. package/dist/qualification-capture.d.ts +44 -0
  25. package/dist/qualification-capture.js +163 -0
  26. package/dist/qualification-config.d.ts +233 -0
  27. package/dist/qualification-config.js +694 -0
  28. package/dist/qualification-lock.d.ts +15 -0
  29. package/dist/qualification-lock.js +87 -0
  30. package/dist/qualification-oauth-directory.d.ts +79 -0
  31. package/dist/qualification-oauth-directory.js +444 -0
  32. package/dist/qualification-panel-store.d.ts +14 -0
  33. package/dist/qualification-panel-store.js +188 -0
  34. package/dist/qualification-panels.d.ts +99 -0
  35. package/dist/qualification-panels.js +91 -0
  36. package/dist/qualification-process.d.ts +13 -0
  37. package/dist/qualification-process.js +188 -0
  38. package/dist/qualification-runner.d.ts +203 -0
  39. package/dist/qualification-runner.js +2037 -0
  40. package/dist/qualification-store.d.ts +187 -0
  41. package/dist/qualification-store.js +833 -0
  42. package/dist/qualification-validation.d.ts +12 -0
  43. package/dist/qualification-validation.js +8 -0
  44. package/dist/regate.js +42 -10
  45. package/dist/regrade.d.ts +3 -1
  46. package/dist/regrade.js +37 -5
  47. package/dist/reps.d.ts +4 -2
  48. package/dist/reps.js +13 -4
  49. package/dist/rescore.js +2 -1
  50. package/dist/results.d.ts +53 -7
  51. package/dist/results.js +210 -7
  52. package/dist/run.js +66 -17
  53. package/dist/score.d.ts +4 -3
  54. package/dist/score.js +13 -4
  55. package/dist/screen.d.ts +31 -0
  56. package/dist/screen.js +105 -0
  57. package/dist/seeded.d.ts +2 -1
  58. package/dist/seeded.js +1 -0
  59. package/dist/sources.d.ts +7 -1
  60. package/dist/sources.js +13 -5
  61. package/dist/spec.d.ts +1 -1
  62. package/dist/spec.js +1 -1
  63. package/dist/stability.js +1 -1
  64. package/dist/trajectory-gates.d.ts +14 -2
  65. package/dist/trajectory-gates.js +26 -6
  66. package/dist/vote-panel.d.ts +33 -0
  67. package/dist/vote-panel.js +41 -0
  68. package/dist/workspace.js +4 -1
  69. package/package.json +3 -3
  70. package/schemas/qualification-cell-result-v1.schema.json +32 -0
  71. package/schemas/qualification-config-v1.schema.json +244 -0
  72. package/schemas/qualification-invocation-request-v1.schema.json +59 -0
  73. package/schemas/qualification-judge-panel-result-v1.schema.json +42 -0
  74. package/schemas/results-v2.schema.json +19 -21
  75. package/schemas/results-v3.schema.json +654 -0
  76. package/schemas/specification-v1.schema.json +1 -1
  77. package/schemas/trajectory-event-v1.schema.json +20 -1
@@ -0,0 +1,654 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://skill-harness.dev/schemas/results-v3.schema.json",
4
+ "title": "skill-harness results v3",
5
+ "type": "object",
6
+ "required": [
7
+ "schema",
8
+ "skill",
9
+ "harness",
10
+ "model",
11
+ "judge",
12
+ "timestamp",
13
+ "label",
14
+ "mode",
15
+ "effective_grade",
16
+ "scenarios",
17
+ "subject_invocations"
18
+ ],
19
+ "properties": {
20
+ "schema": {
21
+ "const": 3
22
+ },
23
+ "harness_version": {
24
+ "type": "string"
25
+ },
26
+ "harness_cli_version": {
27
+ "type": "string"
28
+ },
29
+ "delivery_canary": {
30
+ "enum": [
31
+ "pass",
32
+ "skipped"
33
+ ]
34
+ },
35
+ "skill": {
36
+ "type": "string"
37
+ },
38
+ "harness": {
39
+ "type": "string"
40
+ },
41
+ "model": {
42
+ "type": "string"
43
+ },
44
+ "judge": {
45
+ "type": "object",
46
+ "required": [
47
+ "provider",
48
+ "model"
49
+ ],
50
+ "properties": {
51
+ "provider": {
52
+ "type": "string"
53
+ },
54
+ "model": {
55
+ "type": "string"
56
+ }
57
+ }
58
+ },
59
+ "timestamp": {
60
+ "type": "string"
61
+ },
62
+ "label": {
63
+ "type": [
64
+ "string",
65
+ "null"
66
+ ]
67
+ },
68
+ "mode": {
69
+ "enum": [
70
+ "red",
71
+ "green",
72
+ "force"
73
+ ]
74
+ },
75
+ "partial": {
76
+ "type": "boolean"
77
+ },
78
+ "source_hashes": {
79
+ "type": "object",
80
+ "additionalProperties": {
81
+ "type": "string"
82
+ }
83
+ },
84
+ "effective_grade": {
85
+ "$ref": "#/$defs/grade"
86
+ },
87
+ "scenarios": {
88
+ "type": "array",
89
+ "items": {
90
+ "$ref": "#/$defs/scenario"
91
+ }
92
+ },
93
+ "subject_invocations": {
94
+ "type": "array",
95
+ "items": {
96
+ "$ref": "#/$defs/subject_invocation"
97
+ }
98
+ },
99
+ "arm": {
100
+ "$ref": "#/$defs/arm"
101
+ }
102
+ },
103
+ "$defs": {
104
+ "verdict": {
105
+ "enum": [
106
+ "PASS",
107
+ "FAIL",
108
+ "ERROR",
109
+ "NOT-MEASURED",
110
+ "JUDGE-AMBIGUOUS"
111
+ ]
112
+ },
113
+ "grade": {
114
+ "type": "object",
115
+ "required": [
116
+ "passed",
117
+ "total",
118
+ "pct",
119
+ "letter",
120
+ "ship",
121
+ "note"
122
+ ],
123
+ "properties": {
124
+ "passed": {
125
+ "type": "integer"
126
+ },
127
+ "total": {
128
+ "type": "integer"
129
+ },
130
+ "pct": {
131
+ "type": "number"
132
+ },
133
+ "letter": {
134
+ "type": "string"
135
+ },
136
+ "ship": {
137
+ "type": "boolean"
138
+ },
139
+ "note": {
140
+ "type": "string"
141
+ }
142
+ }
143
+ },
144
+ "metrics": {
145
+ "type": "object",
146
+ "required": [
147
+ "wall_time_ms",
148
+ "judge_calls",
149
+ "judge_rejudge_calls",
150
+ "subject_metrics_reps",
151
+ "total_reps"
152
+ ],
153
+ "properties": {
154
+ "wall_time_ms": {
155
+ "type": "number",
156
+ "minimum": 0
157
+ },
158
+ "judge_calls": {
159
+ "type": "integer",
160
+ "minimum": 0
161
+ },
162
+ "judge_rejudge_calls": {
163
+ "type": "integer",
164
+ "minimum": 0
165
+ },
166
+ "subject_metrics_reps": {
167
+ "type": "integer",
168
+ "minimum": 0
169
+ },
170
+ "total_reps": {
171
+ "type": "integer",
172
+ "minimum": 1
173
+ },
174
+ "input_tokens": {
175
+ "type": "integer",
176
+ "minimum": 0
177
+ },
178
+ "output_tokens": {
179
+ "type": "integer",
180
+ "minimum": 0
181
+ },
182
+ "cache_read_tokens": {
183
+ "type": "integer",
184
+ "minimum": 0
185
+ },
186
+ "cache_write_tokens": {
187
+ "type": "integer",
188
+ "minimum": 0
189
+ },
190
+ "subject_cost_usd": {
191
+ "type": "number",
192
+ "minimum": 0
193
+ },
194
+ "cost_source": {
195
+ "enum": [
196
+ "provider-reported",
197
+ "subscription",
198
+ "unreported"
199
+ ]
200
+ },
201
+ "tool_calls": {
202
+ "type": "integer",
203
+ "minimum": 0
204
+ },
205
+ "delegated_children": {
206
+ "type": "integer",
207
+ "minimum": 0
208
+ },
209
+ "max_concurrency": {
210
+ "type": "integer",
211
+ "minimum": 0
212
+ }
213
+ }
214
+ },
215
+ "judgment": {
216
+ "type": "object",
217
+ "additionalProperties": false,
218
+ "required": [
219
+ "ordinal",
220
+ "judge",
221
+ "verdict",
222
+ "reason",
223
+ "suspect",
224
+ "criteria"
225
+ ],
226
+ "properties": {
227
+ "ordinal": {
228
+ "type": "integer",
229
+ "minimum": 1,
230
+ "maximum": 3
231
+ },
232
+ "judge": {
233
+ "type": "object",
234
+ "additionalProperties": false,
235
+ "required": [
236
+ "provider",
237
+ "model"
238
+ ],
239
+ "properties": {
240
+ "provider": {
241
+ "type": "string"
242
+ },
243
+ "model": {
244
+ "type": "string"
245
+ }
246
+ }
247
+ },
248
+ "verdict": {
249
+ "$ref": "#/$defs/verdict"
250
+ },
251
+ "reason": {
252
+ "type": "string"
253
+ },
254
+ "suspect": {
255
+ "type": "boolean"
256
+ },
257
+ "criteria": {
258
+ "type": "array",
259
+ "minItems": 1,
260
+ "items": {
261
+ "$ref": "#/$defs/criterion"
262
+ }
263
+ }
264
+ }
265
+ },
266
+ "scenario": {
267
+ "type": "object",
268
+ "required": [
269
+ "id",
270
+ "criterion_count",
271
+ "judge_verdict",
272
+ "judge_reason",
273
+ "suspect",
274
+ "override",
275
+ "note",
276
+ "rep_judgments",
277
+ "objective"
278
+ ],
279
+ "properties": {
280
+ "id": {
281
+ "type": "string"
282
+ },
283
+ "criterion_count": {
284
+ "type": "integer",
285
+ "minimum": 1
286
+ },
287
+ "judge_verdict": {
288
+ "$ref": "#/$defs/verdict"
289
+ },
290
+ "judge_reason": {
291
+ "type": "string"
292
+ },
293
+ "suspect": {
294
+ "type": "boolean"
295
+ },
296
+ "override": {
297
+ "oneOf": [
298
+ {
299
+ "const": null
300
+ },
301
+ {
302
+ "enum": [
303
+ "PASS",
304
+ "FAIL"
305
+ ]
306
+ }
307
+ ]
308
+ },
309
+ "note": {
310
+ "type": "string"
311
+ },
312
+ "reps": {
313
+ "type": "integer",
314
+ "minimum": 1
315
+ },
316
+ "passes": {
317
+ "type": "integer",
318
+ "minimum": 0
319
+ },
320
+ "clean": {
321
+ "type": "integer",
322
+ "minimum": 0
323
+ },
324
+ "flakiness": {
325
+ "type": "number",
326
+ "minimum": 0,
327
+ "maximum": 1
328
+ },
329
+ "pass_threshold": {
330
+ "type": "number",
331
+ "minimum": 0,
332
+ "maximum": 1
333
+ },
334
+ "metrics": {
335
+ "$ref": "#/$defs/metrics"
336
+ },
337
+ "objective": {
338
+ "type": "object",
339
+ "additionalProperties": false,
340
+ "required": [
341
+ "status",
342
+ "assertions"
343
+ ],
344
+ "properties": {
345
+ "status": {
346
+ "enum": [
347
+ "PASS",
348
+ "FAIL",
349
+ "ERROR",
350
+ "NOT-MEASURED"
351
+ ]
352
+ },
353
+ "trace_version": {
354
+ "type": "integer"
355
+ },
356
+ "trace_sha256": {
357
+ "type": "string"
358
+ },
359
+ "trajectory_version": {
360
+ "const": "1.0"
361
+ },
362
+ "events_sha256": {
363
+ "type": "string"
364
+ },
365
+ "rep_events_sha256": {
366
+ "type": "array",
367
+ "items": {
368
+ "type": "string",
369
+ "pattern": "^[a-fA-F0-9]{64}$"
370
+ }
371
+ },
372
+ "rep_trace_sha256": {
373
+ "type": "array",
374
+ "items": {
375
+ "type": "string",
376
+ "pattern": "^[a-fA-F0-9]{64}$"
377
+ }
378
+ },
379
+ "assertions": {
380
+ "type": "array",
381
+ "items": {
382
+ "type": "object",
383
+ "additionalProperties": false,
384
+ "required": [
385
+ "kind",
386
+ "status",
387
+ "detail"
388
+ ],
389
+ "properties": {
390
+ "kind": {
391
+ "type": "string",
392
+ "minLength": 1
393
+ },
394
+ "status": {
395
+ "enum": [
396
+ "PASS",
397
+ "FAIL",
398
+ "ERROR",
399
+ "NOT-MEASURED"
400
+ ]
401
+ },
402
+ "detail": {
403
+ "type": "string"
404
+ }
405
+ }
406
+ }
407
+ }
408
+ }
409
+ },
410
+ "adjudication": {
411
+ "type": "object",
412
+ "additionalProperties": false,
413
+ "required": [
414
+ "state",
415
+ "trigger",
416
+ "judgments",
417
+ "repetition"
418
+ ],
419
+ "properties": {
420
+ "state": {
421
+ "enum": [
422
+ "confirmed",
423
+ "tie_broken",
424
+ "unresolved"
425
+ ]
426
+ },
427
+ "trigger": {
428
+ "enum": [
429
+ "ambiguous",
430
+ "contradictory",
431
+ "non_unanimous",
432
+ "ship_deciding"
433
+ ]
434
+ },
435
+ "verdict": {
436
+ "enum": [
437
+ "PASS",
438
+ "FAIL"
439
+ ]
440
+ },
441
+ "judgments": {
442
+ "type": "array",
443
+ "items": {
444
+ "$ref": "#/$defs/judgment"
445
+ }
446
+ },
447
+ "repetition": {
448
+ "type": "integer",
449
+ "minimum": 0
450
+ }
451
+ }
452
+ },
453
+ "judge_history": {
454
+ "type": "array",
455
+ "minItems": 2,
456
+ "maxItems": 3,
457
+ "items": {
458
+ "$ref": "#/$defs/judgment"
459
+ }
460
+ },
461
+ "rep_judgments": {
462
+ "type": "array",
463
+ "items": {
464
+ "$ref": "#/$defs/rep_judgment"
465
+ }
466
+ }
467
+ }
468
+ },
469
+ "criterion": {
470
+ "type": "object",
471
+ "additionalProperties": false,
472
+ "required": [
473
+ "index",
474
+ "verdict",
475
+ "reason"
476
+ ],
477
+ "properties": {
478
+ "index": {
479
+ "type": "integer",
480
+ "minimum": 1
481
+ },
482
+ "verdict": {
483
+ "enum": [
484
+ "PASS",
485
+ "FAIL",
486
+ "ERROR"
487
+ ]
488
+ },
489
+ "reason": {
490
+ "type": "string"
491
+ }
492
+ }
493
+ },
494
+ "rep_judgment": {
495
+ "type": "object",
496
+ "additionalProperties": false,
497
+ "required": [
498
+ "repetition",
499
+ "judgments",
500
+ "recorded_verdict",
501
+ "objective"
502
+ ],
503
+ "properties": {
504
+ "repetition": {
505
+ "type": "integer",
506
+ "minimum": 0
507
+ },
508
+ "judgments": {
509
+ "type": "array",
510
+ "items": {
511
+ "$ref": "#/$defs/judgment"
512
+ }
513
+ },
514
+ "recorded_verdict": {
515
+ "$ref": "#/$defs/verdict"
516
+ },
517
+ "objective": {
518
+ "$ref": "#/$defs/scenario/properties/objective"
519
+ }
520
+ }
521
+ },
522
+ "prompt_provenance": {
523
+ "type": "object",
524
+ "additionalProperties": false,
525
+ "required": [
526
+ "capture_version",
527
+ "request_index",
528
+ "raw_sha256",
529
+ "normalized_sha256",
530
+ "normalization_rule",
531
+ "bytes",
532
+ "contract_sha256",
533
+ "contract_bytes",
534
+ "contract_occurrences",
535
+ "mechanism",
536
+ "status"
537
+ ],
538
+ "properties": {
539
+ "capture_version": {
540
+ "const": "prompt-provenance-v1"
541
+ },
542
+ "request_index": {
543
+ "type": "integer",
544
+ "minimum": 0
545
+ },
546
+ "raw_sha256": {
547
+ "type": "string",
548
+ "pattern": "^[a-fA-F0-9]{64}$"
549
+ },
550
+ "normalized_sha256": {
551
+ "type": "string",
552
+ "pattern": "^[a-fA-F0-9]{64}$"
553
+ },
554
+ "normalization_rule": {
555
+ "const": "cwd-line-v1"
556
+ },
557
+ "bytes": {
558
+ "type": "integer",
559
+ "minimum": 0
560
+ },
561
+ "contract_sha256": {
562
+ "type": "string",
563
+ "pattern": "^[a-fA-F0-9]{64}$"
564
+ },
565
+ "contract_bytes": {
566
+ "type": "integer",
567
+ "minimum": 0
568
+ },
569
+ "contract_occurrences": {
570
+ "type": "integer",
571
+ "minimum": 0
572
+ },
573
+ "mechanism": {
574
+ "enum": [
575
+ "none",
576
+ "pi-skill",
577
+ "append-system-prompt",
578
+ "system-prompt-file"
579
+ ]
580
+ },
581
+ "status": {
582
+ "enum": [
583
+ "PASS",
584
+ "NOT-MEASURED",
585
+ "ERROR"
586
+ ]
587
+ },
588
+ "error": {
589
+ "type": "string"
590
+ }
591
+ }
592
+ },
593
+ "subject_invocation": {
594
+ "type": "object",
595
+ "additionalProperties": false,
596
+ "required": [
597
+ "scenario_id",
598
+ "repetition",
599
+ "prompt"
600
+ ],
601
+ "properties": {
602
+ "scenario_id": {
603
+ "type": "string"
604
+ },
605
+ "repetition": {
606
+ "type": "integer",
607
+ "minimum": 0
608
+ },
609
+ "attempt": {
610
+ "type": "integer",
611
+ "minimum": 0
612
+ },
613
+ "prompt": {
614
+ "$ref": "#/$defs/prompt_provenance"
615
+ }
616
+ }
617
+ },
618
+ "arm": {
619
+ "type": "object",
620
+ "additionalProperties": false,
621
+ "required": [
622
+ "name",
623
+ "extensions",
624
+ "definitions",
625
+ "ledger_events"
626
+ ],
627
+ "properties": {
628
+ "name": {
629
+ "type": "string"
630
+ },
631
+ "extensions": {
632
+ "type": "array",
633
+ "items": {
634
+ "type": "string"
635
+ }
636
+ },
637
+ "definitions": {
638
+ "type": "integer",
639
+ "minimum": 0
640
+ },
641
+ "ledger_events": {
642
+ "type": "integer",
643
+ "minimum": 0
644
+ },
645
+ "env": {
646
+ "type": "object",
647
+ "additionalProperties": {
648
+ "type": "string"
649
+ }
650
+ }
651
+ }
652
+ }
653
+ }
654
+ }
@@ -187,7 +187,7 @@
187
187
  "additionalProperties": false,
188
188
  "required": ["adapter", "path"],
189
189
  "properties": {
190
- "adapter": { "enum": ["normalized-v1", "principal-assurance-v1", "pi-daddy-v1"] },
190
+ "adapter": { "enum": ["normalized-v1", "principal-assurance-v1", "pi-daddy-v1", "pi-daddy-ledger-v3"] },
191
191
  "path": {
192
192
  "type": "string",
193
193
  "minLength": 1,
@@ -6,7 +6,7 @@
6
6
  "additionalProperties": false,
7
7
  "required": ["event_version", "seq", "type", "source"],
8
8
  "properties": {
9
- "event_version": { "const": "1.0" },
9
+ "event_version": { "enum": ["1.0", "1.1"] },
10
10
  "seq": { "type": "integer", "minimum": 1 },
11
11
  "type": { "type": "string", "minLength": 1 },
12
12
  "source": { "type": "string", "minLength": 1 },
@@ -18,6 +18,11 @@
18
18
  "finding_id": { "$ref": "#/$defs/id" },
19
19
  "parent_id": { "$ref": "#/$defs/id" },
20
20
  "child_id": { "$ref": "#/$defs/id" },
21
+ "execution_id": { "$ref": "#/$defs/id" },
22
+ "parent_execution_id": { "oneOf": [{ "$ref": "#/$defs/id" }, { "type": "null" }] },
23
+ "task_from_execution_id": { "$ref": "#/$defs/id" },
24
+ "workflow_fact_id": { "$ref": "#/$defs/id" },
25
+ "deadline_at": { "type": "string", "format": "date-time" },
21
26
  "phase": { "type": "string", "minLength": 1 },
22
27
  "tool": { "type": "string", "minLength": 1 },
23
28
  "capability": { "type": "string", "minLength": 1 },
@@ -53,6 +58,20 @@
53
58
  "requirements": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
54
59
  "attributes": { "type": "object" }
55
60
  },
61
+ "allOf": [
62
+ {
63
+ "if": { "properties": { "event_version": { "const": "1.0" } }, "required": ["event_version"] },
64
+ "then": {
65
+ "properties": {
66
+ "execution_id": false,
67
+ "parent_execution_id": false,
68
+ "task_from_execution_id": false,
69
+ "workflow_fact_id": false,
70
+ "deadline_at": false
71
+ }
72
+ }
73
+ }
74
+ ],
56
75
  "$defs": {
57
76
  "id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$" },
58
77
  "sha256": { "type": "string", "pattern": "^[a-fA-F0-9]{64}$" },