harnery 0.34.1 → 0.35.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 (212) hide show
  1. package/dist/commander.d.ts.map +1 -1
  2. package/dist/commander.js +2 -0
  3. package/dist/commands/agents.d.ts +15 -4
  4. package/dist/commands/agents.d.ts.map +1 -1
  5. package/dist/commands/agents.js +89 -175
  6. package/dist/commands/browse.d.ts.map +1 -1
  7. package/dist/commands/browse.js +26 -2
  8. package/dist/commands/decision.d.ts.map +1 -1
  9. package/dist/commands/decision.js +2 -2
  10. package/dist/commands/events.d.ts.map +1 -1
  11. package/dist/commands/events.js +18 -1
  12. package/dist/commands/presence.d.ts.map +1 -1
  13. package/dist/commands/presence.js +2 -2
  14. package/dist/commands/semantic.d.ts +4 -0
  15. package/dist/commands/semantic.d.ts.map +1 -0
  16. package/dist/commands/semantic.js +147 -0
  17. package/dist/commands/web.d.ts.map +1 -1
  18. package/dist/commands/web.js +17 -0
  19. package/dist/core/agents/canonical-emit.d.ts +3 -0
  20. package/dist/core/agents/canonical-emit.d.ts.map +1 -1
  21. package/dist/core/agents/canonical-emit.js +12 -0
  22. package/dist/core/agents/claim-path.d.ts +11 -0
  23. package/dist/core/agents/claim-path.d.ts.map +1 -0
  24. package/dist/core/agents/claim-path.js +22 -0
  25. package/dist/core/agents/coord-client.d.ts +29 -3
  26. package/dist/core/agents/coord-client.d.ts.map +1 -1
  27. package/dist/core/agents/coord-client.js +88 -9
  28. package/dist/core/agents/live-authority-v3.d.ts.map +1 -1
  29. package/dist/core/agents/live-authority-v3.js +1 -3
  30. package/dist/core/agents/live-lifecycle-v3.js +3 -3
  31. package/dist/core/agents/live-observation-v3.d.ts.map +1 -1
  32. package/dist/core/agents/live-observation-v3.js +2 -2
  33. package/dist/core/agents/render/prompt-context.js +12 -10
  34. package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
  35. package/dist/core/agents/rules/stop-hook.js +23 -11
  36. package/dist/core/agents/session-name-display.d.ts +1 -0
  37. package/dist/core/agents/session-name-display.d.ts.map +1 -1
  38. package/dist/core/agents/session-name-display.js +8 -1
  39. package/dist/core/agents/state/heartbeat-reader.d.ts +46 -0
  40. package/dist/core/agents/state/heartbeat-reader.d.ts.map +1 -0
  41. package/dist/core/agents/state/heartbeat-reader.js +25 -0
  42. package/dist/core/agents/state/heartbeat-writer.d.ts +3 -48
  43. package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
  44. package/dist/core/agents/state/heartbeat-writer.js +16 -34
  45. package/dist/core/agents/state/live-coordination-view.d.ts +1 -1
  46. package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -1
  47. package/dist/core/agents/state/live-coordination-view.js +25 -1
  48. package/dist/core/agents/state/names.d.ts +9 -1
  49. package/dist/core/agents/state/names.d.ts.map +1 -1
  50. package/dist/core/agents/state/names.js +190 -182
  51. package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
  52. package/dist/core/agents/state/stale-sweep.js +23 -5
  53. package/dist/core/artifacts/constants.d.ts +5 -0
  54. package/dist/core/artifacts/constants.d.ts.map +1 -0
  55. package/dist/core/artifacts/constants.js +4 -0
  56. package/dist/core/artifacts/index.d.ts +3 -3
  57. package/dist/core/artifacts/index.d.ts.map +1 -1
  58. package/dist/core/artifacts/index.js +50 -7
  59. package/dist/core/events/v3/base-contract.d.ts +795 -0
  60. package/dist/core/events/v3/base-contract.d.ts.map +1 -1
  61. package/dist/core/events/v3/base-contract.js +33 -0
  62. package/dist/core/events/v3/capabilities.d.ts +11 -0
  63. package/dist/core/events/v3/capabilities.d.ts.map +1 -1
  64. package/dist/core/events/v3/capabilities.js +23 -0
  65. package/dist/core/events/v3/generated.d.ts +1 -1
  66. package/dist/core/events/v3/generated.js +1 -1
  67. package/dist/core/events/v3/index.d.ts +4 -3
  68. package/dist/core/events/v3/index.d.ts.map +1 -1
  69. package/dist/core/events/v3/index.js +4 -3
  70. package/dist/core/events/v3/latency.d.ts +31 -1
  71. package/dist/core/events/v3/latency.d.ts.map +1 -1
  72. package/dist/core/events/v3/latency.js +127 -3
  73. package/dist/core/events/v3/live-routing.d.ts +30 -0
  74. package/dist/core/events/v3/live-routing.d.ts.map +1 -1
  75. package/dist/core/events/v3/live-routing.js +109 -1
  76. package/dist/core/events/v3/producers/command-recorder.d.ts.map +1 -1
  77. package/dist/core/events/v3/producers/command-recorder.js +10 -1
  78. package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -1
  79. package/dist/core/events/v3/producers/coordination-recorder.js +14 -3
  80. package/dist/core/events/v3/producers/hook-base.d.ts +17 -1
  81. package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -1
  82. package/dist/core/events/v3/producers/hook-base.js +82 -1
  83. package/dist/core/events/v3/producers/intake.d.ts +6 -0
  84. package/dist/core/events/v3/producers/intake.d.ts.map +1 -1
  85. package/dist/core/events/v3/producers/intake.js +11 -0
  86. package/dist/core/events/v3/producers/recorder.d.ts +62 -0
  87. package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
  88. package/dist/core/events/v3/producers/recorder.js +654 -18
  89. package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts +51 -0
  90. package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts.map +1 -0
  91. package/dist/core/events/v3/runtime-telemetry-capabilities.js +54 -0
  92. package/dist/core/events/v3/turn-telemetry.d.ts +9 -0
  93. package/dist/core/events/v3/turn-telemetry.d.ts.map +1 -1
  94. package/dist/core/hooks/adapter/parse.d.ts +3 -0
  95. package/dist/core/hooks/adapter/parse.d.ts.map +1 -1
  96. package/dist/core/hooks/adapter/parse.js +14 -0
  97. package/dist/core/hooks/adapter/runtime-telemetry.d.ts +119 -0
  98. package/dist/core/hooks/adapter/runtime-telemetry.d.ts.map +1 -0
  99. package/dist/core/hooks/adapter/runtime-telemetry.js +568 -0
  100. package/dist/core/hooks/cli.js +111 -36
  101. package/dist/core/hooks/remediation-cap.d.ts +34 -0
  102. package/dist/core/hooks/remediation-cap.d.ts.map +1 -0
  103. package/dist/core/hooks/remediation-cap.js +71 -0
  104. package/dist/core/hooks/resolve/transcript.d.ts +25 -9
  105. package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
  106. package/dist/core/hooks/resolve/transcript.js +22 -10
  107. package/dist/core/semantic/adapters.d.ts +34 -0
  108. package/dist/core/semantic/adapters.d.ts.map +1 -0
  109. package/dist/core/semantic/adapters.js +222 -0
  110. package/dist/core/semantic/contract.d.ts +588 -0
  111. package/dist/core/semantic/contract.d.ts.map +1 -0
  112. package/dist/core/semantic/contract.js +230 -0
  113. package/dist/core/semantic/evidence.d.ts +11 -0
  114. package/dist/core/semantic/evidence.d.ts.map +1 -0
  115. package/dist/core/semantic/evidence.js +262 -0
  116. package/dist/core/semantic/index.d.ts +10 -0
  117. package/dist/core/semantic/index.d.ts.map +1 -0
  118. package/dist/core/semantic/index.js +9 -0
  119. package/dist/core/semantic/once.d.ts +33 -0
  120. package/dist/core/semantic/once.d.ts.map +1 -0
  121. package/dist/core/semantic/once.js +293 -0
  122. package/dist/core/semantic/prompt.d.ts +12 -0
  123. package/dist/core/semantic/prompt.d.ts.map +1 -0
  124. package/dist/core/semantic/prompt.js +70 -0
  125. package/dist/core/semantic/scheduler.d.ts +16 -0
  126. package/dist/core/semantic/scheduler.d.ts.map +1 -0
  127. package/dist/core/semantic/scheduler.js +67 -0
  128. package/dist/core/semantic/service-status.d.ts +31 -0
  129. package/dist/core/semantic/service-status.d.ts.map +1 -0
  130. package/dist/core/semantic/service-status.js +84 -0
  131. package/dist/core/semantic/service.d.ts +51 -0
  132. package/dist/core/semantic/service.d.ts.map +1 -0
  133. package/dist/core/semantic/service.js +470 -0
  134. package/dist/core/semantic/storage.d.ts +71 -0
  135. package/dist/core/semantic/storage.d.ts.map +1 -0
  136. package/dist/core/semantic/storage.js +179 -0
  137. package/dist/core/semantic/validate.d.ts +16 -0
  138. package/dist/core/semantic/validate.d.ts.map +1 -0
  139. package/dist/core/semantic/validate.js +174 -0
  140. package/dist/lib/browser/client.d.ts +11 -0
  141. package/dist/lib/browser/client.d.ts.map +1 -1
  142. package/dist/lib/browser/client.js +13 -0
  143. package/dist/lib/browser/index.d.ts +1 -0
  144. package/dist/lib/browser/index.d.ts.map +1 -1
  145. package/dist/lib/browser/standalone-html.d.ts +25 -0
  146. package/dist/lib/browser/standalone-html.d.ts.map +1 -0
  147. package/dist/lib/browser/standalone-html.js +284 -0
  148. package/dist/lib/instructions/apply.d.ts.map +1 -1
  149. package/dist/lib/instructions/apply.js +1 -0
  150. package/dist/lib/instructions/templates.d.ts +2 -0
  151. package/dist/lib/instructions/templates.d.ts.map +1 -1
  152. package/dist/lib/instructions/templates.js +144 -4
  153. package/package.json +6 -1
  154. package/schemas/event-v3.schema.json +2758 -478
  155. package/src/commander.ts +2 -0
  156. package/src/commands/agents.ts +102 -167
  157. package/src/commands/browse.ts +25 -2
  158. package/src/commands/decision.ts +8 -2
  159. package/src/commands/events.ts +21 -1
  160. package/src/commands/presence.ts +7 -2
  161. package/src/commands/semantic.ts +179 -0
  162. package/src/commands/web.ts +15 -0
  163. package/src/core/agents/canonical-emit.ts +15 -0
  164. package/src/core/agents/claim-path.ts +23 -0
  165. package/src/core/agents/coord-client.ts +92 -8
  166. package/src/core/agents/live-authority-v3.ts +1 -4
  167. package/src/core/agents/live-lifecycle-v3.ts +8 -3
  168. package/src/core/agents/live-observation-v3.ts +7 -2
  169. package/src/core/agents/render/prompt-context.ts +13 -10
  170. package/src/core/agents/rules/stop-hook.ts +24 -11
  171. package/src/core/agents/session-name-display.ts +9 -1
  172. package/src/core/agents/state/heartbeat-reader.ts +69 -0
  173. package/src/core/agents/state/heartbeat-writer.ts +20 -84
  174. package/src/core/agents/state/live-coordination-view.ts +26 -1
  175. package/src/core/agents/state/names.ts +190 -182
  176. package/src/core/agents/state/stale-sweep.ts +25 -5
  177. package/src/core/artifacts/constants.ts +4 -0
  178. package/src/core/artifacts/index.ts +49 -7
  179. package/src/core/events/v3/base-contract.ts +39 -0
  180. package/src/core/events/v3/capabilities.ts +34 -0
  181. package/src/core/events/v3/generated.ts +1 -1
  182. package/src/core/events/v3/index.ts +21 -0
  183. package/src/core/events/v3/latency.ts +213 -2
  184. package/src/core/events/v3/live-routing.ts +120 -1
  185. package/src/core/events/v3/producers/command-recorder.ts +10 -1
  186. package/src/core/events/v3/producers/coordination-recorder.ts +17 -5
  187. package/src/core/events/v3/producers/hook-base.ts +115 -1
  188. package/src/core/events/v3/producers/intake.ts +18 -0
  189. package/src/core/events/v3/producers/recorder.ts +856 -21
  190. package/src/core/events/v3/runtime-telemetry-capabilities.ts +137 -0
  191. package/src/core/events/v3/turn-telemetry.ts +10 -0
  192. package/src/core/hooks/adapter/parse.ts +16 -0
  193. package/src/core/hooks/adapter/runtime-telemetry.ts +805 -0
  194. package/src/core/hooks/cli.ts +123 -39
  195. package/src/core/hooks/remediation-cap.ts +77 -0
  196. package/src/core/hooks/resolve/transcript.ts +37 -11
  197. package/src/core/semantic/adapters.ts +293 -0
  198. package/src/core/semantic/contract.ts +298 -0
  199. package/src/core/semantic/evidence.ts +336 -0
  200. package/src/core/semantic/index.ts +127 -0
  201. package/src/core/semantic/once.ts +410 -0
  202. package/src/core/semantic/prompt.ts +84 -0
  203. package/src/core/semantic/scheduler.ts +107 -0
  204. package/src/core/semantic/service-status.ts +118 -0
  205. package/src/core/semantic/service.ts +580 -0
  206. package/src/core/semantic/storage.ts +286 -0
  207. package/src/core/semantic/validate.ts +212 -0
  208. package/src/lib/browser/client.ts +21 -0
  209. package/src/lib/browser/index.ts +4 -0
  210. package/src/lib/browser/standalone-html.ts +312 -0
  211. package/src/lib/instructions/apply.ts +1 -0
  212. package/src/lib/instructions/templates.ts +149 -4
@@ -1988,6 +1988,8 @@
1988
1988
  "adapter",
1989
1989
  "harness",
1990
1990
  "model",
1991
+ "tuning",
1992
+ "telemetry",
1991
1993
  "capability_profile",
1992
1994
  "declared_by_event_id"
1993
1995
  ],
@@ -2490,168 +2492,1306 @@
2490
2492
  }
2491
2493
  ]
2492
2494
  },
2493
- "capability_profile": {
2494
- "pattern": "^cap_[a-f0-9]{64}$",
2495
- "type": "string"
2496
- },
2497
- "declared_by_event_id": {
2498
- "pattern": "^evt_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
2499
- "type": "string"
2500
- }
2501
- }
2502
- },
2503
- "resume": {
2504
- "anyOf": [
2505
- {
2506
- "additionalProperties": false,
2507
- "type": "object",
2508
- "required": [
2509
- "state",
2510
- "value",
2511
- "attestation",
2512
- "confidence"
2513
- ],
2514
- "properties": {
2515
- "state": {
2516
- "const": "observed",
2517
- "type": "string"
2495
+ "tuning": {
2496
+ "anyOf": [
2497
+ {
2498
+ "additionalProperties": false,
2499
+ "type": "object",
2500
+ "required": [
2501
+ "state",
2502
+ "value",
2503
+ "attestation",
2504
+ "confidence"
2505
+ ],
2506
+ "properties": {
2507
+ "state": {
2508
+ "const": "observed",
2509
+ "type": "string"
2510
+ },
2511
+ "value": {
2512
+ "additionalProperties": false,
2513
+ "type": "object",
2514
+ "properties": {
2515
+ "effort": {
2516
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2517
+ "type": "string"
2518
+ },
2519
+ "speed": {
2520
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2521
+ "type": "string"
2522
+ }
2523
+ }
2524
+ },
2525
+ "attestation": {
2526
+ "anyOf": [
2527
+ {
2528
+ "const": "native",
2529
+ "type": "string"
2530
+ },
2531
+ {
2532
+ "const": "derived",
2533
+ "type": "string"
2534
+ },
2535
+ {
2536
+ "const": "inferred",
2537
+ "type": "string"
2538
+ }
2539
+ ]
2540
+ },
2541
+ "confidence": {
2542
+ "anyOf": [
2543
+ {
2544
+ "const": "exact",
2545
+ "type": "string"
2546
+ },
2547
+ {
2548
+ "const": "high",
2549
+ "type": "string"
2550
+ },
2551
+ {
2552
+ "const": "medium",
2553
+ "type": "string"
2554
+ },
2555
+ {
2556
+ "const": "low",
2557
+ "type": "string"
2558
+ }
2559
+ ]
2560
+ }
2561
+ }
2518
2562
  },
2519
- "value": {
2563
+ {
2520
2564
  "additionalProperties": false,
2521
2565
  "type": "object",
2522
2566
  "required": [
2523
- "prior_generation_id",
2524
- "continuity"
2567
+ "state",
2568
+ "capability"
2525
2569
  ],
2526
2570
  "properties": {
2527
- "prior_generation_id": {
2528
- "pattern": "^gen_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
2571
+ "state": {
2572
+ "const": "unsupported",
2529
2573
  "type": "string"
2530
2574
  },
2531
- "continuity": {
2532
- "const": "native",
2575
+ "capability": {
2576
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2533
2577
  "type": "string"
2534
2578
  }
2535
2579
  }
2536
2580
  },
2537
- "attestation": {
2538
- "anyOf": [
2539
- {
2540
- "const": "native",
2581
+ {
2582
+ "additionalProperties": false,
2583
+ "type": "object",
2584
+ "required": [
2585
+ "state",
2586
+ "capability",
2587
+ "reason"
2588
+ ],
2589
+ "properties": {
2590
+ "state": {
2591
+ "const": "expected_but_missing",
2541
2592
  "type": "string"
2542
2593
  },
2543
- {
2544
- "const": "derived",
2594
+ "capability": {
2595
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2545
2596
  "type": "string"
2546
2597
  },
2547
- {
2548
- "const": "inferred",
2598
+ "reason": {
2599
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
2549
2600
  "type": "string"
2550
2601
  }
2551
- ]
2602
+ }
2552
2603
  },
2553
- "confidence": {
2554
- "anyOf": [
2555
- {
2556
- "const": "exact",
2604
+ {
2605
+ "additionalProperties": false,
2606
+ "type": "object",
2607
+ "required": [
2608
+ "state",
2609
+ "reason"
2610
+ ],
2611
+ "properties": {
2612
+ "state": {
2613
+ "const": "redacted",
2557
2614
  "type": "string"
2558
2615
  },
2559
- {
2560
- "const": "high",
2616
+ "reason": {
2617
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
2561
2618
  "type": "string"
2562
- },
2563
- {
2564
- "const": "medium",
2619
+ }
2620
+ }
2621
+ },
2622
+ {
2623
+ "additionalProperties": false,
2624
+ "type": "object",
2625
+ "required": [
2626
+ "state",
2627
+ "reason"
2628
+ ],
2629
+ "properties": {
2630
+ "state": {
2631
+ "const": "unknown",
2565
2632
  "type": "string"
2566
2633
  },
2567
- {
2568
- "const": "low",
2634
+ "reason": {
2635
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
2569
2636
  "type": "string"
2570
2637
  }
2571
- ]
2572
- }
2573
- }
2574
- },
2575
- {
2576
- "additionalProperties": false,
2577
- "type": "object",
2578
- "required": [
2579
- "state",
2580
- "capability"
2581
- ],
2582
- "properties": {
2583
- "state": {
2584
- "const": "unsupported",
2585
- "type": "string"
2586
- },
2587
- "capability": {
2588
- "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2589
- "type": "string"
2590
- }
2591
- }
2592
- },
2593
- {
2594
- "additionalProperties": false,
2595
- "type": "object",
2596
- "required": [
2597
- "state",
2598
- "capability",
2599
- "reason"
2600
- ],
2601
- "properties": {
2602
- "state": {
2603
- "const": "expected_but_missing",
2604
- "type": "string"
2605
- },
2606
- "capability": {
2607
- "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2608
- "type": "string"
2609
- },
2610
- "reason": {
2611
- "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
2612
- "type": "string"
2613
- }
2614
- }
2615
- },
2616
- {
2617
- "additionalProperties": false,
2618
- "type": "object",
2619
- "required": [
2620
- "state",
2621
- "reason"
2622
- ],
2623
- "properties": {
2624
- "state": {
2625
- "const": "redacted",
2626
- "type": "string"
2638
+ }
2627
2639
  },
2628
- "reason": {
2629
- "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
2630
- "type": "string"
2640
+ {
2641
+ "additionalProperties": false,
2642
+ "type": "object",
2643
+ "required": [
2644
+ "state"
2645
+ ],
2646
+ "properties": {
2647
+ "state": {
2648
+ "const": "not_applicable",
2649
+ "type": "string"
2650
+ }
2651
+ }
2631
2652
  }
2632
- }
2653
+ ]
2633
2654
  },
2634
- {
2655
+ "telemetry": {
2635
2656
  "additionalProperties": false,
2636
2657
  "type": "object",
2637
2658
  "required": [
2638
- "state",
2639
- "reason"
2659
+ "context_usage",
2660
+ "wait_spans",
2661
+ "wait_completeness",
2662
+ "response_latency",
2663
+ "inference_timing"
2640
2664
  ],
2641
2665
  "properties": {
2642
- "state": {
2643
- "const": "unknown",
2644
- "type": "string"
2645
- },
2646
- "reason": {
2647
- "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
2648
- "type": "string"
2649
- }
2650
- }
2651
- },
2652
- {
2653
- "additionalProperties": false,
2654
- "type": "object",
2666
+ "context_usage": {
2667
+ "anyOf": [
2668
+ {
2669
+ "additionalProperties": false,
2670
+ "type": "object",
2671
+ "required": [
2672
+ "state",
2673
+ "value",
2674
+ "attestation",
2675
+ "confidence"
2676
+ ],
2677
+ "properties": {
2678
+ "state": {
2679
+ "const": "observed",
2680
+ "type": "string"
2681
+ },
2682
+ "value": {
2683
+ "additionalProperties": false,
2684
+ "type": "object",
2685
+ "required": [
2686
+ "support",
2687
+ "source",
2688
+ "completeness"
2689
+ ],
2690
+ "properties": {
2691
+ "support": {
2692
+ "anyOf": [
2693
+ {
2694
+ "const": "native",
2695
+ "type": "string"
2696
+ },
2697
+ {
2698
+ "const": "derived",
2699
+ "type": "string"
2700
+ },
2701
+ {
2702
+ "const": "conditional",
2703
+ "type": "string"
2704
+ }
2705
+ ]
2706
+ },
2707
+ "source": {
2708
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2709
+ "type": "string"
2710
+ },
2711
+ "completeness": {
2712
+ "anyOf": [
2713
+ {
2714
+ "const": "exact",
2715
+ "type": "string"
2716
+ },
2717
+ {
2718
+ "const": "lower_bound",
2719
+ "type": "string"
2720
+ },
2721
+ {
2722
+ "const": "unknown",
2723
+ "type": "string"
2724
+ }
2725
+ ]
2726
+ }
2727
+ }
2728
+ },
2729
+ "attestation": {
2730
+ "anyOf": [
2731
+ {
2732
+ "const": "native",
2733
+ "type": "string"
2734
+ },
2735
+ {
2736
+ "const": "derived",
2737
+ "type": "string"
2738
+ },
2739
+ {
2740
+ "const": "inferred",
2741
+ "type": "string"
2742
+ }
2743
+ ]
2744
+ },
2745
+ "confidence": {
2746
+ "anyOf": [
2747
+ {
2748
+ "const": "exact",
2749
+ "type": "string"
2750
+ },
2751
+ {
2752
+ "const": "high",
2753
+ "type": "string"
2754
+ },
2755
+ {
2756
+ "const": "medium",
2757
+ "type": "string"
2758
+ },
2759
+ {
2760
+ "const": "low",
2761
+ "type": "string"
2762
+ }
2763
+ ]
2764
+ }
2765
+ }
2766
+ },
2767
+ {
2768
+ "additionalProperties": false,
2769
+ "type": "object",
2770
+ "required": [
2771
+ "state",
2772
+ "capability"
2773
+ ],
2774
+ "properties": {
2775
+ "state": {
2776
+ "const": "unsupported",
2777
+ "type": "string"
2778
+ },
2779
+ "capability": {
2780
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2781
+ "type": "string"
2782
+ }
2783
+ }
2784
+ },
2785
+ {
2786
+ "additionalProperties": false,
2787
+ "type": "object",
2788
+ "required": [
2789
+ "state",
2790
+ "capability",
2791
+ "reason"
2792
+ ],
2793
+ "properties": {
2794
+ "state": {
2795
+ "const": "expected_but_missing",
2796
+ "type": "string"
2797
+ },
2798
+ "capability": {
2799
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2800
+ "type": "string"
2801
+ },
2802
+ "reason": {
2803
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
2804
+ "type": "string"
2805
+ }
2806
+ }
2807
+ },
2808
+ {
2809
+ "additionalProperties": false,
2810
+ "type": "object",
2811
+ "required": [
2812
+ "state",
2813
+ "reason"
2814
+ ],
2815
+ "properties": {
2816
+ "state": {
2817
+ "const": "redacted",
2818
+ "type": "string"
2819
+ },
2820
+ "reason": {
2821
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
2822
+ "type": "string"
2823
+ }
2824
+ }
2825
+ },
2826
+ {
2827
+ "additionalProperties": false,
2828
+ "type": "object",
2829
+ "required": [
2830
+ "state",
2831
+ "reason"
2832
+ ],
2833
+ "properties": {
2834
+ "state": {
2835
+ "const": "unknown",
2836
+ "type": "string"
2837
+ },
2838
+ "reason": {
2839
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
2840
+ "type": "string"
2841
+ }
2842
+ }
2843
+ },
2844
+ {
2845
+ "additionalProperties": false,
2846
+ "type": "object",
2847
+ "required": [
2848
+ "state"
2849
+ ],
2850
+ "properties": {
2851
+ "state": {
2852
+ "const": "not_applicable",
2853
+ "type": "string"
2854
+ }
2855
+ }
2856
+ }
2857
+ ]
2858
+ },
2859
+ "wait_spans": {
2860
+ "anyOf": [
2861
+ {
2862
+ "additionalProperties": false,
2863
+ "type": "object",
2864
+ "required": [
2865
+ "state",
2866
+ "value",
2867
+ "attestation",
2868
+ "confidence"
2869
+ ],
2870
+ "properties": {
2871
+ "state": {
2872
+ "const": "observed",
2873
+ "type": "string"
2874
+ },
2875
+ "value": {
2876
+ "additionalProperties": false,
2877
+ "type": "object",
2878
+ "required": [
2879
+ "support",
2880
+ "source",
2881
+ "completeness"
2882
+ ],
2883
+ "properties": {
2884
+ "support": {
2885
+ "anyOf": [
2886
+ {
2887
+ "const": "native",
2888
+ "type": "string"
2889
+ },
2890
+ {
2891
+ "const": "derived",
2892
+ "type": "string"
2893
+ },
2894
+ {
2895
+ "const": "conditional",
2896
+ "type": "string"
2897
+ }
2898
+ ]
2899
+ },
2900
+ "source": {
2901
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2902
+ "type": "string"
2903
+ },
2904
+ "completeness": {
2905
+ "anyOf": [
2906
+ {
2907
+ "const": "exact",
2908
+ "type": "string"
2909
+ },
2910
+ {
2911
+ "const": "lower_bound",
2912
+ "type": "string"
2913
+ },
2914
+ {
2915
+ "const": "unknown",
2916
+ "type": "string"
2917
+ }
2918
+ ]
2919
+ }
2920
+ }
2921
+ },
2922
+ "attestation": {
2923
+ "anyOf": [
2924
+ {
2925
+ "const": "native",
2926
+ "type": "string"
2927
+ },
2928
+ {
2929
+ "const": "derived",
2930
+ "type": "string"
2931
+ },
2932
+ {
2933
+ "const": "inferred",
2934
+ "type": "string"
2935
+ }
2936
+ ]
2937
+ },
2938
+ "confidence": {
2939
+ "anyOf": [
2940
+ {
2941
+ "const": "exact",
2942
+ "type": "string"
2943
+ },
2944
+ {
2945
+ "const": "high",
2946
+ "type": "string"
2947
+ },
2948
+ {
2949
+ "const": "medium",
2950
+ "type": "string"
2951
+ },
2952
+ {
2953
+ "const": "low",
2954
+ "type": "string"
2955
+ }
2956
+ ]
2957
+ }
2958
+ }
2959
+ },
2960
+ {
2961
+ "additionalProperties": false,
2962
+ "type": "object",
2963
+ "required": [
2964
+ "state",
2965
+ "capability"
2966
+ ],
2967
+ "properties": {
2968
+ "state": {
2969
+ "const": "unsupported",
2970
+ "type": "string"
2971
+ },
2972
+ "capability": {
2973
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2974
+ "type": "string"
2975
+ }
2976
+ }
2977
+ },
2978
+ {
2979
+ "additionalProperties": false,
2980
+ "type": "object",
2981
+ "required": [
2982
+ "state",
2983
+ "capability",
2984
+ "reason"
2985
+ ],
2986
+ "properties": {
2987
+ "state": {
2988
+ "const": "expected_but_missing",
2989
+ "type": "string"
2990
+ },
2991
+ "capability": {
2992
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
2993
+ "type": "string"
2994
+ },
2995
+ "reason": {
2996
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
2997
+ "type": "string"
2998
+ }
2999
+ }
3000
+ },
3001
+ {
3002
+ "additionalProperties": false,
3003
+ "type": "object",
3004
+ "required": [
3005
+ "state",
3006
+ "reason"
3007
+ ],
3008
+ "properties": {
3009
+ "state": {
3010
+ "const": "redacted",
3011
+ "type": "string"
3012
+ },
3013
+ "reason": {
3014
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3015
+ "type": "string"
3016
+ }
3017
+ }
3018
+ },
3019
+ {
3020
+ "additionalProperties": false,
3021
+ "type": "object",
3022
+ "required": [
3023
+ "state",
3024
+ "reason"
3025
+ ],
3026
+ "properties": {
3027
+ "state": {
3028
+ "const": "unknown",
3029
+ "type": "string"
3030
+ },
3031
+ "reason": {
3032
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3033
+ "type": "string"
3034
+ }
3035
+ }
3036
+ },
3037
+ {
3038
+ "additionalProperties": false,
3039
+ "type": "object",
3040
+ "required": [
3041
+ "state"
3042
+ ],
3043
+ "properties": {
3044
+ "state": {
3045
+ "const": "not_applicable",
3046
+ "type": "string"
3047
+ }
3048
+ }
3049
+ }
3050
+ ]
3051
+ },
3052
+ "wait_completeness": {
3053
+ "anyOf": [
3054
+ {
3055
+ "additionalProperties": false,
3056
+ "type": "object",
3057
+ "required": [
3058
+ "state",
3059
+ "value",
3060
+ "attestation",
3061
+ "confidence"
3062
+ ],
3063
+ "properties": {
3064
+ "state": {
3065
+ "const": "observed",
3066
+ "type": "string"
3067
+ },
3068
+ "value": {
3069
+ "additionalProperties": false,
3070
+ "type": "object",
3071
+ "required": [
3072
+ "support",
3073
+ "source",
3074
+ "completeness"
3075
+ ],
3076
+ "properties": {
3077
+ "support": {
3078
+ "anyOf": [
3079
+ {
3080
+ "const": "native",
3081
+ "type": "string"
3082
+ },
3083
+ {
3084
+ "const": "derived",
3085
+ "type": "string"
3086
+ },
3087
+ {
3088
+ "const": "conditional",
3089
+ "type": "string"
3090
+ }
3091
+ ]
3092
+ },
3093
+ "source": {
3094
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3095
+ "type": "string"
3096
+ },
3097
+ "completeness": {
3098
+ "anyOf": [
3099
+ {
3100
+ "const": "exact",
3101
+ "type": "string"
3102
+ },
3103
+ {
3104
+ "const": "lower_bound",
3105
+ "type": "string"
3106
+ },
3107
+ {
3108
+ "const": "unknown",
3109
+ "type": "string"
3110
+ }
3111
+ ]
3112
+ }
3113
+ }
3114
+ },
3115
+ "attestation": {
3116
+ "anyOf": [
3117
+ {
3118
+ "const": "native",
3119
+ "type": "string"
3120
+ },
3121
+ {
3122
+ "const": "derived",
3123
+ "type": "string"
3124
+ },
3125
+ {
3126
+ "const": "inferred",
3127
+ "type": "string"
3128
+ }
3129
+ ]
3130
+ },
3131
+ "confidence": {
3132
+ "anyOf": [
3133
+ {
3134
+ "const": "exact",
3135
+ "type": "string"
3136
+ },
3137
+ {
3138
+ "const": "high",
3139
+ "type": "string"
3140
+ },
3141
+ {
3142
+ "const": "medium",
3143
+ "type": "string"
3144
+ },
3145
+ {
3146
+ "const": "low",
3147
+ "type": "string"
3148
+ }
3149
+ ]
3150
+ }
3151
+ }
3152
+ },
3153
+ {
3154
+ "additionalProperties": false,
3155
+ "type": "object",
3156
+ "required": [
3157
+ "state",
3158
+ "capability"
3159
+ ],
3160
+ "properties": {
3161
+ "state": {
3162
+ "const": "unsupported",
3163
+ "type": "string"
3164
+ },
3165
+ "capability": {
3166
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3167
+ "type": "string"
3168
+ }
3169
+ }
3170
+ },
3171
+ {
3172
+ "additionalProperties": false,
3173
+ "type": "object",
3174
+ "required": [
3175
+ "state",
3176
+ "capability",
3177
+ "reason"
3178
+ ],
3179
+ "properties": {
3180
+ "state": {
3181
+ "const": "expected_but_missing",
3182
+ "type": "string"
3183
+ },
3184
+ "capability": {
3185
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3186
+ "type": "string"
3187
+ },
3188
+ "reason": {
3189
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3190
+ "type": "string"
3191
+ }
3192
+ }
3193
+ },
3194
+ {
3195
+ "additionalProperties": false,
3196
+ "type": "object",
3197
+ "required": [
3198
+ "state",
3199
+ "reason"
3200
+ ],
3201
+ "properties": {
3202
+ "state": {
3203
+ "const": "redacted",
3204
+ "type": "string"
3205
+ },
3206
+ "reason": {
3207
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3208
+ "type": "string"
3209
+ }
3210
+ }
3211
+ },
3212
+ {
3213
+ "additionalProperties": false,
3214
+ "type": "object",
3215
+ "required": [
3216
+ "state",
3217
+ "reason"
3218
+ ],
3219
+ "properties": {
3220
+ "state": {
3221
+ "const": "unknown",
3222
+ "type": "string"
3223
+ },
3224
+ "reason": {
3225
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3226
+ "type": "string"
3227
+ }
3228
+ }
3229
+ },
3230
+ {
3231
+ "additionalProperties": false,
3232
+ "type": "object",
3233
+ "required": [
3234
+ "state"
3235
+ ],
3236
+ "properties": {
3237
+ "state": {
3238
+ "const": "not_applicable",
3239
+ "type": "string"
3240
+ }
3241
+ }
3242
+ }
3243
+ ]
3244
+ },
3245
+ "response_latency": {
3246
+ "anyOf": [
3247
+ {
3248
+ "additionalProperties": false,
3249
+ "type": "object",
3250
+ "required": [
3251
+ "state",
3252
+ "value",
3253
+ "attestation",
3254
+ "confidence"
3255
+ ],
3256
+ "properties": {
3257
+ "state": {
3258
+ "const": "observed",
3259
+ "type": "string"
3260
+ },
3261
+ "value": {
3262
+ "additionalProperties": false,
3263
+ "type": "object",
3264
+ "required": [
3265
+ "support",
3266
+ "source",
3267
+ "completeness"
3268
+ ],
3269
+ "properties": {
3270
+ "support": {
3271
+ "anyOf": [
3272
+ {
3273
+ "const": "native",
3274
+ "type": "string"
3275
+ },
3276
+ {
3277
+ "const": "derived",
3278
+ "type": "string"
3279
+ },
3280
+ {
3281
+ "const": "conditional",
3282
+ "type": "string"
3283
+ }
3284
+ ]
3285
+ },
3286
+ "source": {
3287
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3288
+ "type": "string"
3289
+ },
3290
+ "completeness": {
3291
+ "anyOf": [
3292
+ {
3293
+ "const": "exact",
3294
+ "type": "string"
3295
+ },
3296
+ {
3297
+ "const": "lower_bound",
3298
+ "type": "string"
3299
+ },
3300
+ {
3301
+ "const": "unknown",
3302
+ "type": "string"
3303
+ }
3304
+ ]
3305
+ }
3306
+ }
3307
+ },
3308
+ "attestation": {
3309
+ "anyOf": [
3310
+ {
3311
+ "const": "native",
3312
+ "type": "string"
3313
+ },
3314
+ {
3315
+ "const": "derived",
3316
+ "type": "string"
3317
+ },
3318
+ {
3319
+ "const": "inferred",
3320
+ "type": "string"
3321
+ }
3322
+ ]
3323
+ },
3324
+ "confidence": {
3325
+ "anyOf": [
3326
+ {
3327
+ "const": "exact",
3328
+ "type": "string"
3329
+ },
3330
+ {
3331
+ "const": "high",
3332
+ "type": "string"
3333
+ },
3334
+ {
3335
+ "const": "medium",
3336
+ "type": "string"
3337
+ },
3338
+ {
3339
+ "const": "low",
3340
+ "type": "string"
3341
+ }
3342
+ ]
3343
+ }
3344
+ }
3345
+ },
3346
+ {
3347
+ "additionalProperties": false,
3348
+ "type": "object",
3349
+ "required": [
3350
+ "state",
3351
+ "capability"
3352
+ ],
3353
+ "properties": {
3354
+ "state": {
3355
+ "const": "unsupported",
3356
+ "type": "string"
3357
+ },
3358
+ "capability": {
3359
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3360
+ "type": "string"
3361
+ }
3362
+ }
3363
+ },
3364
+ {
3365
+ "additionalProperties": false,
3366
+ "type": "object",
3367
+ "required": [
3368
+ "state",
3369
+ "capability",
3370
+ "reason"
3371
+ ],
3372
+ "properties": {
3373
+ "state": {
3374
+ "const": "expected_but_missing",
3375
+ "type": "string"
3376
+ },
3377
+ "capability": {
3378
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3379
+ "type": "string"
3380
+ },
3381
+ "reason": {
3382
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3383
+ "type": "string"
3384
+ }
3385
+ }
3386
+ },
3387
+ {
3388
+ "additionalProperties": false,
3389
+ "type": "object",
3390
+ "required": [
3391
+ "state",
3392
+ "reason"
3393
+ ],
3394
+ "properties": {
3395
+ "state": {
3396
+ "const": "redacted",
3397
+ "type": "string"
3398
+ },
3399
+ "reason": {
3400
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3401
+ "type": "string"
3402
+ }
3403
+ }
3404
+ },
3405
+ {
3406
+ "additionalProperties": false,
3407
+ "type": "object",
3408
+ "required": [
3409
+ "state",
3410
+ "reason"
3411
+ ],
3412
+ "properties": {
3413
+ "state": {
3414
+ "const": "unknown",
3415
+ "type": "string"
3416
+ },
3417
+ "reason": {
3418
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3419
+ "type": "string"
3420
+ }
3421
+ }
3422
+ },
3423
+ {
3424
+ "additionalProperties": false,
3425
+ "type": "object",
3426
+ "required": [
3427
+ "state"
3428
+ ],
3429
+ "properties": {
3430
+ "state": {
3431
+ "const": "not_applicable",
3432
+ "type": "string"
3433
+ }
3434
+ }
3435
+ }
3436
+ ]
3437
+ },
3438
+ "inference_timing": {
3439
+ "anyOf": [
3440
+ {
3441
+ "additionalProperties": false,
3442
+ "type": "object",
3443
+ "required": [
3444
+ "state",
3445
+ "value",
3446
+ "attestation",
3447
+ "confidence"
3448
+ ],
3449
+ "properties": {
3450
+ "state": {
3451
+ "const": "observed",
3452
+ "type": "string"
3453
+ },
3454
+ "value": {
3455
+ "additionalProperties": false,
3456
+ "type": "object",
3457
+ "required": [
3458
+ "support",
3459
+ "source",
3460
+ "completeness"
3461
+ ],
3462
+ "properties": {
3463
+ "support": {
3464
+ "anyOf": [
3465
+ {
3466
+ "const": "native",
3467
+ "type": "string"
3468
+ },
3469
+ {
3470
+ "const": "derived",
3471
+ "type": "string"
3472
+ },
3473
+ {
3474
+ "const": "conditional",
3475
+ "type": "string"
3476
+ }
3477
+ ]
3478
+ },
3479
+ "source": {
3480
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3481
+ "type": "string"
3482
+ },
3483
+ "completeness": {
3484
+ "anyOf": [
3485
+ {
3486
+ "const": "exact",
3487
+ "type": "string"
3488
+ },
3489
+ {
3490
+ "const": "lower_bound",
3491
+ "type": "string"
3492
+ },
3493
+ {
3494
+ "const": "unknown",
3495
+ "type": "string"
3496
+ }
3497
+ ]
3498
+ }
3499
+ }
3500
+ },
3501
+ "attestation": {
3502
+ "anyOf": [
3503
+ {
3504
+ "const": "native",
3505
+ "type": "string"
3506
+ },
3507
+ {
3508
+ "const": "derived",
3509
+ "type": "string"
3510
+ },
3511
+ {
3512
+ "const": "inferred",
3513
+ "type": "string"
3514
+ }
3515
+ ]
3516
+ },
3517
+ "confidence": {
3518
+ "anyOf": [
3519
+ {
3520
+ "const": "exact",
3521
+ "type": "string"
3522
+ },
3523
+ {
3524
+ "const": "high",
3525
+ "type": "string"
3526
+ },
3527
+ {
3528
+ "const": "medium",
3529
+ "type": "string"
3530
+ },
3531
+ {
3532
+ "const": "low",
3533
+ "type": "string"
3534
+ }
3535
+ ]
3536
+ }
3537
+ }
3538
+ },
3539
+ {
3540
+ "additionalProperties": false,
3541
+ "type": "object",
3542
+ "required": [
3543
+ "state",
3544
+ "capability"
3545
+ ],
3546
+ "properties": {
3547
+ "state": {
3548
+ "const": "unsupported",
3549
+ "type": "string"
3550
+ },
3551
+ "capability": {
3552
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3553
+ "type": "string"
3554
+ }
3555
+ }
3556
+ },
3557
+ {
3558
+ "additionalProperties": false,
3559
+ "type": "object",
3560
+ "required": [
3561
+ "state",
3562
+ "capability",
3563
+ "reason"
3564
+ ],
3565
+ "properties": {
3566
+ "state": {
3567
+ "const": "expected_but_missing",
3568
+ "type": "string"
3569
+ },
3570
+ "capability": {
3571
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3572
+ "type": "string"
3573
+ },
3574
+ "reason": {
3575
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3576
+ "type": "string"
3577
+ }
3578
+ }
3579
+ },
3580
+ {
3581
+ "additionalProperties": false,
3582
+ "type": "object",
3583
+ "required": [
3584
+ "state",
3585
+ "reason"
3586
+ ],
3587
+ "properties": {
3588
+ "state": {
3589
+ "const": "redacted",
3590
+ "type": "string"
3591
+ },
3592
+ "reason": {
3593
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3594
+ "type": "string"
3595
+ }
3596
+ }
3597
+ },
3598
+ {
3599
+ "additionalProperties": false,
3600
+ "type": "object",
3601
+ "required": [
3602
+ "state",
3603
+ "reason"
3604
+ ],
3605
+ "properties": {
3606
+ "state": {
3607
+ "const": "unknown",
3608
+ "type": "string"
3609
+ },
3610
+ "reason": {
3611
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3612
+ "type": "string"
3613
+ }
3614
+ }
3615
+ },
3616
+ {
3617
+ "additionalProperties": false,
3618
+ "type": "object",
3619
+ "required": [
3620
+ "state"
3621
+ ],
3622
+ "properties": {
3623
+ "state": {
3624
+ "const": "not_applicable",
3625
+ "type": "string"
3626
+ }
3627
+ }
3628
+ }
3629
+ ]
3630
+ }
3631
+ }
3632
+ },
3633
+ "capability_profile": {
3634
+ "pattern": "^cap_[a-f0-9]{64}$",
3635
+ "type": "string"
3636
+ },
3637
+ "declared_by_event_id": {
3638
+ "pattern": "^evt_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
3639
+ "type": "string"
3640
+ }
3641
+ }
3642
+ },
3643
+ "resume": {
3644
+ "anyOf": [
3645
+ {
3646
+ "additionalProperties": false,
3647
+ "type": "object",
3648
+ "required": [
3649
+ "state",
3650
+ "value",
3651
+ "attestation",
3652
+ "confidence"
3653
+ ],
3654
+ "properties": {
3655
+ "state": {
3656
+ "const": "observed",
3657
+ "type": "string"
3658
+ },
3659
+ "value": {
3660
+ "additionalProperties": false,
3661
+ "type": "object",
3662
+ "required": [
3663
+ "prior_generation_id",
3664
+ "continuity"
3665
+ ],
3666
+ "properties": {
3667
+ "prior_generation_id": {
3668
+ "pattern": "^gen_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
3669
+ "type": "string"
3670
+ },
3671
+ "continuity": {
3672
+ "const": "native",
3673
+ "type": "string"
3674
+ }
3675
+ }
3676
+ },
3677
+ "attestation": {
3678
+ "anyOf": [
3679
+ {
3680
+ "const": "native",
3681
+ "type": "string"
3682
+ },
3683
+ {
3684
+ "const": "derived",
3685
+ "type": "string"
3686
+ },
3687
+ {
3688
+ "const": "inferred",
3689
+ "type": "string"
3690
+ }
3691
+ ]
3692
+ },
3693
+ "confidence": {
3694
+ "anyOf": [
3695
+ {
3696
+ "const": "exact",
3697
+ "type": "string"
3698
+ },
3699
+ {
3700
+ "const": "high",
3701
+ "type": "string"
3702
+ },
3703
+ {
3704
+ "const": "medium",
3705
+ "type": "string"
3706
+ },
3707
+ {
3708
+ "const": "low",
3709
+ "type": "string"
3710
+ }
3711
+ ]
3712
+ }
3713
+ }
3714
+ },
3715
+ {
3716
+ "additionalProperties": false,
3717
+ "type": "object",
3718
+ "required": [
3719
+ "state",
3720
+ "capability"
3721
+ ],
3722
+ "properties": {
3723
+ "state": {
3724
+ "const": "unsupported",
3725
+ "type": "string"
3726
+ },
3727
+ "capability": {
3728
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3729
+ "type": "string"
3730
+ }
3731
+ }
3732
+ },
3733
+ {
3734
+ "additionalProperties": false,
3735
+ "type": "object",
3736
+ "required": [
3737
+ "state",
3738
+ "capability",
3739
+ "reason"
3740
+ ],
3741
+ "properties": {
3742
+ "state": {
3743
+ "const": "expected_but_missing",
3744
+ "type": "string"
3745
+ },
3746
+ "capability": {
3747
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3748
+ "type": "string"
3749
+ },
3750
+ "reason": {
3751
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3752
+ "type": "string"
3753
+ }
3754
+ }
3755
+ },
3756
+ {
3757
+ "additionalProperties": false,
3758
+ "type": "object",
3759
+ "required": [
3760
+ "state",
3761
+ "reason"
3762
+ ],
3763
+ "properties": {
3764
+ "state": {
3765
+ "const": "redacted",
3766
+ "type": "string"
3767
+ },
3768
+ "reason": {
3769
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3770
+ "type": "string"
3771
+ }
3772
+ }
3773
+ },
3774
+ {
3775
+ "additionalProperties": false,
3776
+ "type": "object",
3777
+ "required": [
3778
+ "state",
3779
+ "reason"
3780
+ ],
3781
+ "properties": {
3782
+ "state": {
3783
+ "const": "unknown",
3784
+ "type": "string"
3785
+ },
3786
+ "reason": {
3787
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3788
+ "type": "string"
3789
+ }
3790
+ }
3791
+ },
3792
+ {
3793
+ "additionalProperties": false,
3794
+ "type": "object",
2655
3795
  "required": [
2656
3796
  "state"
2657
3797
  ],
@@ -2971,111 +4111,603 @@
2971
4111
  "const": "medium",
2972
4112
  "type": "string"
2973
4113
  },
2974
- {
2975
- "const": "low",
2976
- "type": "string"
2977
- }
2978
- ]
2979
- },
2980
- "source_record_id": {
2981
- "pattern": "^(sid|tid|hid)_[a-f0-9]{64}$",
2982
- "type": "string"
2983
- },
2984
- "attribution": {
2985
- "additionalProperties": false,
2986
- "type": "object",
2987
- "required": [
2988
- "method",
2989
- "state"
2990
- ],
2991
- "properties": {
2992
- "method": {
4114
+ {
4115
+ "const": "low",
4116
+ "type": "string"
4117
+ }
4118
+ ]
4119
+ },
4120
+ "source_record_id": {
4121
+ "pattern": "^(sid|tid|hid)_[a-f0-9]{64}$",
4122
+ "type": "string"
4123
+ },
4124
+ "attribution": {
4125
+ "additionalProperties": false,
4126
+ "type": "object",
4127
+ "required": [
4128
+ "method",
4129
+ "state"
4130
+ ],
4131
+ "properties": {
4132
+ "method": {
4133
+ "anyOf": [
4134
+ {
4135
+ "const": "session_env",
4136
+ "type": "string"
4137
+ },
4138
+ {
4139
+ "const": "native_payload",
4140
+ "type": "string"
4141
+ },
4142
+ {
4143
+ "const": "heartbeat_match",
4144
+ "type": "string"
4145
+ },
4146
+ {
4147
+ "const": "explicit_argument",
4148
+ "type": "string"
4149
+ },
4150
+ {
4151
+ "const": "unattributed",
4152
+ "type": "string"
4153
+ }
4154
+ ]
4155
+ },
4156
+ "state": {
4157
+ "anyOf": [
4158
+ {
4159
+ "const": "verified",
4160
+ "type": "string"
4161
+ },
4162
+ {
4163
+ "const": "unverified",
4164
+ "type": "string"
4165
+ },
4166
+ {
4167
+ "const": "conflict",
4168
+ "type": "string"
4169
+ }
4170
+ ]
4171
+ },
4172
+ "observer_instance_id": {
4173
+ "pattern": "^inst_[a-zA-Z0-9._-]{1,128}$",
4174
+ "type": "string"
4175
+ },
4176
+ "subject_instance_id": {
4177
+ "pattern": "^inst_[a-zA-Z0-9._-]{1,128}$",
4178
+ "type": "string"
4179
+ }
4180
+ }
4181
+ }
4182
+ }
4183
+ },
4184
+ "payload": {
4185
+ "additionalProperties": false,
4186
+ "type": "object",
4187
+ "required": [
4188
+ "prior_attestation_id",
4189
+ "runtime_attestation",
4190
+ "reason"
4191
+ ],
4192
+ "properties": {
4193
+ "prior_attestation_id": {
4194
+ "pattern": "^att_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
4195
+ "type": "string"
4196
+ },
4197
+ "runtime_attestation": {
4198
+ "additionalProperties": false,
4199
+ "type": "object",
4200
+ "required": [
4201
+ "attestation_id",
4202
+ "generation_id",
4203
+ "adapter",
4204
+ "harness",
4205
+ "model",
4206
+ "tuning",
4207
+ "telemetry",
4208
+ "capability_profile",
4209
+ "declared_by_event_id"
4210
+ ],
4211
+ "properties": {
4212
+ "attestation_id": {
4213
+ "pattern": "^att_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
4214
+ "type": "string"
4215
+ },
4216
+ "generation_id": {
4217
+ "pattern": "^gen_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
4218
+ "type": "string"
4219
+ },
4220
+ "adapter": {
4221
+ "anyOf": [
4222
+ {
4223
+ "additionalProperties": false,
4224
+ "type": "object",
4225
+ "required": [
4226
+ "state",
4227
+ "value",
4228
+ "attestation",
4229
+ "confidence"
4230
+ ],
4231
+ "properties": {
4232
+ "state": {
4233
+ "const": "observed",
4234
+ "type": "string"
4235
+ },
4236
+ "value": {
4237
+ "additionalProperties": false,
4238
+ "type": "object",
4239
+ "required": [
4240
+ "id"
4241
+ ],
4242
+ "properties": {
4243
+ "id": {
4244
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4245
+ "type": "string"
4246
+ },
4247
+ "version": {
4248
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4249
+ "type": "string"
4250
+ }
4251
+ }
4252
+ },
4253
+ "attestation": {
4254
+ "anyOf": [
4255
+ {
4256
+ "const": "native",
4257
+ "type": "string"
4258
+ },
4259
+ {
4260
+ "const": "derived",
4261
+ "type": "string"
4262
+ },
4263
+ {
4264
+ "const": "inferred",
4265
+ "type": "string"
4266
+ }
4267
+ ]
4268
+ },
4269
+ "confidence": {
4270
+ "anyOf": [
4271
+ {
4272
+ "const": "exact",
4273
+ "type": "string"
4274
+ },
4275
+ {
4276
+ "const": "high",
4277
+ "type": "string"
4278
+ },
4279
+ {
4280
+ "const": "medium",
4281
+ "type": "string"
4282
+ },
4283
+ {
4284
+ "const": "low",
4285
+ "type": "string"
4286
+ }
4287
+ ]
4288
+ }
4289
+ }
4290
+ },
4291
+ {
4292
+ "additionalProperties": false,
4293
+ "type": "object",
4294
+ "required": [
4295
+ "state",
4296
+ "capability"
4297
+ ],
4298
+ "properties": {
4299
+ "state": {
4300
+ "const": "unsupported",
4301
+ "type": "string"
4302
+ },
4303
+ "capability": {
4304
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4305
+ "type": "string"
4306
+ }
4307
+ }
4308
+ },
4309
+ {
4310
+ "additionalProperties": false,
4311
+ "type": "object",
4312
+ "required": [
4313
+ "state",
4314
+ "capability",
4315
+ "reason"
4316
+ ],
4317
+ "properties": {
4318
+ "state": {
4319
+ "const": "expected_but_missing",
4320
+ "type": "string"
4321
+ },
4322
+ "capability": {
4323
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4324
+ "type": "string"
4325
+ },
4326
+ "reason": {
4327
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
4328
+ "type": "string"
4329
+ }
4330
+ }
4331
+ },
4332
+ {
4333
+ "additionalProperties": false,
4334
+ "type": "object",
4335
+ "required": [
4336
+ "state",
4337
+ "reason"
4338
+ ],
4339
+ "properties": {
4340
+ "state": {
4341
+ "const": "redacted",
4342
+ "type": "string"
4343
+ },
4344
+ "reason": {
4345
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
4346
+ "type": "string"
4347
+ }
4348
+ }
4349
+ },
4350
+ {
4351
+ "additionalProperties": false,
4352
+ "type": "object",
4353
+ "required": [
4354
+ "state",
4355
+ "reason"
4356
+ ],
4357
+ "properties": {
4358
+ "state": {
4359
+ "const": "unknown",
4360
+ "type": "string"
4361
+ },
4362
+ "reason": {
4363
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
4364
+ "type": "string"
4365
+ }
4366
+ }
4367
+ },
4368
+ {
4369
+ "additionalProperties": false,
4370
+ "type": "object",
4371
+ "required": [
4372
+ "state"
4373
+ ],
4374
+ "properties": {
4375
+ "state": {
4376
+ "const": "not_applicable",
4377
+ "type": "string"
4378
+ }
4379
+ }
4380
+ }
4381
+ ]
4382
+ },
4383
+ "harness": {
2993
4384
  "anyOf": [
2994
4385
  {
2995
- "const": "session_env",
2996
- "type": "string"
4386
+ "additionalProperties": false,
4387
+ "type": "object",
4388
+ "required": [
4389
+ "state",
4390
+ "value",
4391
+ "attestation",
4392
+ "confidence"
4393
+ ],
4394
+ "properties": {
4395
+ "state": {
4396
+ "const": "observed",
4397
+ "type": "string"
4398
+ },
4399
+ "value": {
4400
+ "additionalProperties": false,
4401
+ "type": "object",
4402
+ "required": [
4403
+ "id"
4404
+ ],
4405
+ "properties": {
4406
+ "id": {
4407
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4408
+ "type": "string"
4409
+ },
4410
+ "version": {
4411
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4412
+ "type": "string"
4413
+ }
4414
+ }
4415
+ },
4416
+ "attestation": {
4417
+ "anyOf": [
4418
+ {
4419
+ "const": "native",
4420
+ "type": "string"
4421
+ },
4422
+ {
4423
+ "const": "derived",
4424
+ "type": "string"
4425
+ },
4426
+ {
4427
+ "const": "inferred",
4428
+ "type": "string"
4429
+ }
4430
+ ]
4431
+ },
4432
+ "confidence": {
4433
+ "anyOf": [
4434
+ {
4435
+ "const": "exact",
4436
+ "type": "string"
4437
+ },
4438
+ {
4439
+ "const": "high",
4440
+ "type": "string"
4441
+ },
4442
+ {
4443
+ "const": "medium",
4444
+ "type": "string"
4445
+ },
4446
+ {
4447
+ "const": "low",
4448
+ "type": "string"
4449
+ }
4450
+ ]
4451
+ }
4452
+ }
2997
4453
  },
2998
4454
  {
2999
- "const": "native_payload",
3000
- "type": "string"
4455
+ "additionalProperties": false,
4456
+ "type": "object",
4457
+ "required": [
4458
+ "state",
4459
+ "capability"
4460
+ ],
4461
+ "properties": {
4462
+ "state": {
4463
+ "const": "unsupported",
4464
+ "type": "string"
4465
+ },
4466
+ "capability": {
4467
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4468
+ "type": "string"
4469
+ }
4470
+ }
4471
+ },
4472
+ {
4473
+ "additionalProperties": false,
4474
+ "type": "object",
4475
+ "required": [
4476
+ "state",
4477
+ "capability",
4478
+ "reason"
4479
+ ],
4480
+ "properties": {
4481
+ "state": {
4482
+ "const": "expected_but_missing",
4483
+ "type": "string"
4484
+ },
4485
+ "capability": {
4486
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4487
+ "type": "string"
4488
+ },
4489
+ "reason": {
4490
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
4491
+ "type": "string"
4492
+ }
4493
+ }
3001
4494
  },
3002
4495
  {
3003
- "const": "heartbeat_match",
3004
- "type": "string"
4496
+ "additionalProperties": false,
4497
+ "type": "object",
4498
+ "required": [
4499
+ "state",
4500
+ "reason"
4501
+ ],
4502
+ "properties": {
4503
+ "state": {
4504
+ "const": "redacted",
4505
+ "type": "string"
4506
+ },
4507
+ "reason": {
4508
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
4509
+ "type": "string"
4510
+ }
4511
+ }
3005
4512
  },
3006
4513
  {
3007
- "const": "explicit_argument",
3008
- "type": "string"
4514
+ "additionalProperties": false,
4515
+ "type": "object",
4516
+ "required": [
4517
+ "state",
4518
+ "reason"
4519
+ ],
4520
+ "properties": {
4521
+ "state": {
4522
+ "const": "unknown",
4523
+ "type": "string"
4524
+ },
4525
+ "reason": {
4526
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
4527
+ "type": "string"
4528
+ }
4529
+ }
3009
4530
  },
3010
4531
  {
3011
- "const": "unattributed",
3012
- "type": "string"
4532
+ "additionalProperties": false,
4533
+ "type": "object",
4534
+ "required": [
4535
+ "state"
4536
+ ],
4537
+ "properties": {
4538
+ "state": {
4539
+ "const": "not_applicable",
4540
+ "type": "string"
4541
+ }
4542
+ }
3013
4543
  }
3014
4544
  ]
3015
4545
  },
3016
- "state": {
4546
+ "model": {
3017
4547
  "anyOf": [
3018
4548
  {
3019
- "const": "verified",
3020
- "type": "string"
4549
+ "additionalProperties": false,
4550
+ "type": "object",
4551
+ "required": [
4552
+ "state",
4553
+ "value",
4554
+ "attestation",
4555
+ "confidence"
4556
+ ],
4557
+ "properties": {
4558
+ "state": {
4559
+ "const": "observed",
4560
+ "type": "string"
4561
+ },
4562
+ "value": {
4563
+ "additionalProperties": false,
4564
+ "type": "object",
4565
+ "required": [
4566
+ "provider",
4567
+ "id"
4568
+ ],
4569
+ "properties": {
4570
+ "provider": {
4571
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4572
+ "type": "string"
4573
+ },
4574
+ "id": {
4575
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4576
+ "type": "string"
4577
+ }
4578
+ }
4579
+ },
4580
+ "attestation": {
4581
+ "anyOf": [
4582
+ {
4583
+ "const": "native",
4584
+ "type": "string"
4585
+ },
4586
+ {
4587
+ "const": "derived",
4588
+ "type": "string"
4589
+ },
4590
+ {
4591
+ "const": "inferred",
4592
+ "type": "string"
4593
+ }
4594
+ ]
4595
+ },
4596
+ "confidence": {
4597
+ "anyOf": [
4598
+ {
4599
+ "const": "exact",
4600
+ "type": "string"
4601
+ },
4602
+ {
4603
+ "const": "high",
4604
+ "type": "string"
4605
+ },
4606
+ {
4607
+ "const": "medium",
4608
+ "type": "string"
4609
+ },
4610
+ {
4611
+ "const": "low",
4612
+ "type": "string"
4613
+ }
4614
+ ]
4615
+ }
4616
+ }
3021
4617
  },
3022
4618
  {
3023
- "const": "unverified",
3024
- "type": "string"
4619
+ "additionalProperties": false,
4620
+ "type": "object",
4621
+ "required": [
4622
+ "state",
4623
+ "capability"
4624
+ ],
4625
+ "properties": {
4626
+ "state": {
4627
+ "const": "unsupported",
4628
+ "type": "string"
4629
+ },
4630
+ "capability": {
4631
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4632
+ "type": "string"
4633
+ }
4634
+ }
3025
4635
  },
3026
4636
  {
3027
- "const": "conflict",
3028
- "type": "string"
3029
- }
3030
- ]
3031
- },
3032
- "observer_instance_id": {
3033
- "pattern": "^inst_[a-zA-Z0-9._-]{1,128}$",
3034
- "type": "string"
3035
- },
3036
- "subject_instance_id": {
3037
- "pattern": "^inst_[a-zA-Z0-9._-]{1,128}$",
3038
- "type": "string"
3039
- }
3040
- }
3041
- }
3042
- }
3043
- },
3044
- "payload": {
3045
- "additionalProperties": false,
3046
- "type": "object",
3047
- "required": [
3048
- "prior_attestation_id",
3049
- "runtime_attestation",
3050
- "reason"
3051
- ],
3052
- "properties": {
3053
- "prior_attestation_id": {
3054
- "pattern": "^att_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
3055
- "type": "string"
3056
- },
3057
- "runtime_attestation": {
3058
- "additionalProperties": false,
3059
- "type": "object",
3060
- "required": [
3061
- "attestation_id",
3062
- "generation_id",
3063
- "adapter",
3064
- "harness",
3065
- "model",
3066
- "capability_profile",
3067
- "declared_by_event_id"
3068
- ],
3069
- "properties": {
3070
- "attestation_id": {
3071
- "pattern": "^att_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
3072
- "type": "string"
3073
- },
3074
- "generation_id": {
3075
- "pattern": "^gen_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
3076
- "type": "string"
4637
+ "additionalProperties": false,
4638
+ "type": "object",
4639
+ "required": [
4640
+ "state",
4641
+ "capability",
4642
+ "reason"
4643
+ ],
4644
+ "properties": {
4645
+ "state": {
4646
+ "const": "expected_but_missing",
4647
+ "type": "string"
4648
+ },
4649
+ "capability": {
4650
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4651
+ "type": "string"
4652
+ },
4653
+ "reason": {
4654
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
4655
+ "type": "string"
4656
+ }
4657
+ }
4658
+ },
4659
+ {
4660
+ "additionalProperties": false,
4661
+ "type": "object",
4662
+ "required": [
4663
+ "state",
4664
+ "reason"
4665
+ ],
4666
+ "properties": {
4667
+ "state": {
4668
+ "const": "redacted",
4669
+ "type": "string"
4670
+ },
4671
+ "reason": {
4672
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
4673
+ "type": "string"
4674
+ }
4675
+ }
4676
+ },
4677
+ {
4678
+ "additionalProperties": false,
4679
+ "type": "object",
4680
+ "required": [
4681
+ "state",
4682
+ "reason"
4683
+ ],
4684
+ "properties": {
4685
+ "state": {
4686
+ "const": "unknown",
4687
+ "type": "string"
4688
+ },
4689
+ "reason": {
4690
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
4691
+ "type": "string"
4692
+ }
4693
+ }
4694
+ },
4695
+ {
4696
+ "additionalProperties": false,
4697
+ "type": "object",
4698
+ "required": [
4699
+ "state"
4700
+ ],
4701
+ "properties": {
4702
+ "state": {
4703
+ "const": "not_applicable",
4704
+ "type": "string"
4705
+ }
4706
+ }
4707
+ }
4708
+ ]
3077
4709
  },
3078
- "adapter": {
4710
+ "tuning": {
3079
4711
  "anyOf": [
3080
4712
  {
3081
4713
  "additionalProperties": false,
@@ -3094,15 +4726,12 @@
3094
4726
  "value": {
3095
4727
  "additionalProperties": false,
3096
4728
  "type": "object",
3097
- "required": [
3098
- "id"
3099
- ],
3100
4729
  "properties": {
3101
- "id": {
4730
+ "effort": {
3102
4731
  "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3103
4732
  "type": "string"
3104
4733
  },
3105
- "version": {
4734
+ "speed": {
3106
4735
  "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3107
4736
  "type": "string"
3108
4737
  }
@@ -3238,332 +4867,983 @@
3238
4867
  }
3239
4868
  ]
3240
4869
  },
3241
- "harness": {
3242
- "anyOf": [
3243
- {
3244
- "additionalProperties": false,
3245
- "type": "object",
3246
- "required": [
3247
- "state",
3248
- "value",
3249
- "attestation",
3250
- "confidence"
3251
- ],
3252
- "properties": {
3253
- "state": {
3254
- "const": "observed",
3255
- "type": "string"
4870
+ "telemetry": {
4871
+ "additionalProperties": false,
4872
+ "type": "object",
4873
+ "required": [
4874
+ "context_usage",
4875
+ "wait_spans",
4876
+ "wait_completeness",
4877
+ "response_latency",
4878
+ "inference_timing"
4879
+ ],
4880
+ "properties": {
4881
+ "context_usage": {
4882
+ "anyOf": [
4883
+ {
4884
+ "additionalProperties": false,
4885
+ "type": "object",
4886
+ "required": [
4887
+ "state",
4888
+ "value",
4889
+ "attestation",
4890
+ "confidence"
4891
+ ],
4892
+ "properties": {
4893
+ "state": {
4894
+ "const": "observed",
4895
+ "type": "string"
4896
+ },
4897
+ "value": {
4898
+ "additionalProperties": false,
4899
+ "type": "object",
4900
+ "required": [
4901
+ "support",
4902
+ "source",
4903
+ "completeness"
4904
+ ],
4905
+ "properties": {
4906
+ "support": {
4907
+ "anyOf": [
4908
+ {
4909
+ "const": "native",
4910
+ "type": "string"
4911
+ },
4912
+ {
4913
+ "const": "derived",
4914
+ "type": "string"
4915
+ },
4916
+ {
4917
+ "const": "conditional",
4918
+ "type": "string"
4919
+ }
4920
+ ]
4921
+ },
4922
+ "source": {
4923
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4924
+ "type": "string"
4925
+ },
4926
+ "completeness": {
4927
+ "anyOf": [
4928
+ {
4929
+ "const": "exact",
4930
+ "type": "string"
4931
+ },
4932
+ {
4933
+ "const": "lower_bound",
4934
+ "type": "string"
4935
+ },
4936
+ {
4937
+ "const": "unknown",
4938
+ "type": "string"
4939
+ }
4940
+ ]
4941
+ }
4942
+ }
4943
+ },
4944
+ "attestation": {
4945
+ "anyOf": [
4946
+ {
4947
+ "const": "native",
4948
+ "type": "string"
4949
+ },
4950
+ {
4951
+ "const": "derived",
4952
+ "type": "string"
4953
+ },
4954
+ {
4955
+ "const": "inferred",
4956
+ "type": "string"
4957
+ }
4958
+ ]
4959
+ },
4960
+ "confidence": {
4961
+ "anyOf": [
4962
+ {
4963
+ "const": "exact",
4964
+ "type": "string"
4965
+ },
4966
+ {
4967
+ "const": "high",
4968
+ "type": "string"
4969
+ },
4970
+ {
4971
+ "const": "medium",
4972
+ "type": "string"
4973
+ },
4974
+ {
4975
+ "const": "low",
4976
+ "type": "string"
4977
+ }
4978
+ ]
4979
+ }
4980
+ }
4981
+ },
4982
+ {
4983
+ "additionalProperties": false,
4984
+ "type": "object",
4985
+ "required": [
4986
+ "state",
4987
+ "capability"
4988
+ ],
4989
+ "properties": {
4990
+ "state": {
4991
+ "const": "unsupported",
4992
+ "type": "string"
4993
+ },
4994
+ "capability": {
4995
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
4996
+ "type": "string"
4997
+ }
4998
+ }
4999
+ },
5000
+ {
5001
+ "additionalProperties": false,
5002
+ "type": "object",
5003
+ "required": [
5004
+ "state",
5005
+ "capability",
5006
+ "reason"
5007
+ ],
5008
+ "properties": {
5009
+ "state": {
5010
+ "const": "expected_but_missing",
5011
+ "type": "string"
5012
+ },
5013
+ "capability": {
5014
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5015
+ "type": "string"
5016
+ },
5017
+ "reason": {
5018
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
5019
+ "type": "string"
5020
+ }
5021
+ }
5022
+ },
5023
+ {
5024
+ "additionalProperties": false,
5025
+ "type": "object",
5026
+ "required": [
5027
+ "state",
5028
+ "reason"
5029
+ ],
5030
+ "properties": {
5031
+ "state": {
5032
+ "const": "redacted",
5033
+ "type": "string"
5034
+ },
5035
+ "reason": {
5036
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
5037
+ "type": "string"
5038
+ }
5039
+ }
5040
+ },
5041
+ {
5042
+ "additionalProperties": false,
5043
+ "type": "object",
5044
+ "required": [
5045
+ "state",
5046
+ "reason"
5047
+ ],
5048
+ "properties": {
5049
+ "state": {
5050
+ "const": "unknown",
5051
+ "type": "string"
5052
+ },
5053
+ "reason": {
5054
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
5055
+ "type": "string"
5056
+ }
5057
+ }
5058
+ },
5059
+ {
5060
+ "additionalProperties": false,
5061
+ "type": "object",
5062
+ "required": [
5063
+ "state"
5064
+ ],
5065
+ "properties": {
5066
+ "state": {
5067
+ "const": "not_applicable",
5068
+ "type": "string"
5069
+ }
5070
+ }
5071
+ }
5072
+ ]
5073
+ },
5074
+ "wait_spans": {
5075
+ "anyOf": [
5076
+ {
5077
+ "additionalProperties": false,
5078
+ "type": "object",
5079
+ "required": [
5080
+ "state",
5081
+ "value",
5082
+ "attestation",
5083
+ "confidence"
5084
+ ],
5085
+ "properties": {
5086
+ "state": {
5087
+ "const": "observed",
5088
+ "type": "string"
5089
+ },
5090
+ "value": {
5091
+ "additionalProperties": false,
5092
+ "type": "object",
5093
+ "required": [
5094
+ "support",
5095
+ "source",
5096
+ "completeness"
5097
+ ],
5098
+ "properties": {
5099
+ "support": {
5100
+ "anyOf": [
5101
+ {
5102
+ "const": "native",
5103
+ "type": "string"
5104
+ },
5105
+ {
5106
+ "const": "derived",
5107
+ "type": "string"
5108
+ },
5109
+ {
5110
+ "const": "conditional",
5111
+ "type": "string"
5112
+ }
5113
+ ]
5114
+ },
5115
+ "source": {
5116
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5117
+ "type": "string"
5118
+ },
5119
+ "completeness": {
5120
+ "anyOf": [
5121
+ {
5122
+ "const": "exact",
5123
+ "type": "string"
5124
+ },
5125
+ {
5126
+ "const": "lower_bound",
5127
+ "type": "string"
5128
+ },
5129
+ {
5130
+ "const": "unknown",
5131
+ "type": "string"
5132
+ }
5133
+ ]
5134
+ }
5135
+ }
5136
+ },
5137
+ "attestation": {
5138
+ "anyOf": [
5139
+ {
5140
+ "const": "native",
5141
+ "type": "string"
5142
+ },
5143
+ {
5144
+ "const": "derived",
5145
+ "type": "string"
5146
+ },
5147
+ {
5148
+ "const": "inferred",
5149
+ "type": "string"
5150
+ }
5151
+ ]
5152
+ },
5153
+ "confidence": {
5154
+ "anyOf": [
5155
+ {
5156
+ "const": "exact",
5157
+ "type": "string"
5158
+ },
5159
+ {
5160
+ "const": "high",
5161
+ "type": "string"
5162
+ },
5163
+ {
5164
+ "const": "medium",
5165
+ "type": "string"
5166
+ },
5167
+ {
5168
+ "const": "low",
5169
+ "type": "string"
5170
+ }
5171
+ ]
5172
+ }
5173
+ }
5174
+ },
5175
+ {
5176
+ "additionalProperties": false,
5177
+ "type": "object",
5178
+ "required": [
5179
+ "state",
5180
+ "capability"
5181
+ ],
5182
+ "properties": {
5183
+ "state": {
5184
+ "const": "unsupported",
5185
+ "type": "string"
5186
+ },
5187
+ "capability": {
5188
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5189
+ "type": "string"
5190
+ }
5191
+ }
5192
+ },
5193
+ {
5194
+ "additionalProperties": false,
5195
+ "type": "object",
5196
+ "required": [
5197
+ "state",
5198
+ "capability",
5199
+ "reason"
5200
+ ],
5201
+ "properties": {
5202
+ "state": {
5203
+ "const": "expected_but_missing",
5204
+ "type": "string"
5205
+ },
5206
+ "capability": {
5207
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5208
+ "type": "string"
5209
+ },
5210
+ "reason": {
5211
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
5212
+ "type": "string"
5213
+ }
5214
+ }
5215
+ },
5216
+ {
5217
+ "additionalProperties": false,
5218
+ "type": "object",
5219
+ "required": [
5220
+ "state",
5221
+ "reason"
5222
+ ],
5223
+ "properties": {
5224
+ "state": {
5225
+ "const": "redacted",
5226
+ "type": "string"
5227
+ },
5228
+ "reason": {
5229
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
5230
+ "type": "string"
5231
+ }
5232
+ }
5233
+ },
5234
+ {
5235
+ "additionalProperties": false,
5236
+ "type": "object",
5237
+ "required": [
5238
+ "state",
5239
+ "reason"
5240
+ ],
5241
+ "properties": {
5242
+ "state": {
5243
+ "const": "unknown",
5244
+ "type": "string"
5245
+ },
5246
+ "reason": {
5247
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
5248
+ "type": "string"
5249
+ }
5250
+ }
5251
+ },
5252
+ {
5253
+ "additionalProperties": false,
5254
+ "type": "object",
5255
+ "required": [
5256
+ "state"
5257
+ ],
5258
+ "properties": {
5259
+ "state": {
5260
+ "const": "not_applicable",
5261
+ "type": "string"
5262
+ }
5263
+ }
5264
+ }
5265
+ ]
5266
+ },
5267
+ "wait_completeness": {
5268
+ "anyOf": [
5269
+ {
5270
+ "additionalProperties": false,
5271
+ "type": "object",
5272
+ "required": [
5273
+ "state",
5274
+ "value",
5275
+ "attestation",
5276
+ "confidence"
5277
+ ],
5278
+ "properties": {
5279
+ "state": {
5280
+ "const": "observed",
5281
+ "type": "string"
5282
+ },
5283
+ "value": {
5284
+ "additionalProperties": false,
5285
+ "type": "object",
5286
+ "required": [
5287
+ "support",
5288
+ "source",
5289
+ "completeness"
5290
+ ],
5291
+ "properties": {
5292
+ "support": {
5293
+ "anyOf": [
5294
+ {
5295
+ "const": "native",
5296
+ "type": "string"
5297
+ },
5298
+ {
5299
+ "const": "derived",
5300
+ "type": "string"
5301
+ },
5302
+ {
5303
+ "const": "conditional",
5304
+ "type": "string"
5305
+ }
5306
+ ]
5307
+ },
5308
+ "source": {
5309
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5310
+ "type": "string"
5311
+ },
5312
+ "completeness": {
5313
+ "anyOf": [
5314
+ {
5315
+ "const": "exact",
5316
+ "type": "string"
5317
+ },
5318
+ {
5319
+ "const": "lower_bound",
5320
+ "type": "string"
5321
+ },
5322
+ {
5323
+ "const": "unknown",
5324
+ "type": "string"
5325
+ }
5326
+ ]
5327
+ }
5328
+ }
5329
+ },
5330
+ "attestation": {
5331
+ "anyOf": [
5332
+ {
5333
+ "const": "native",
5334
+ "type": "string"
5335
+ },
5336
+ {
5337
+ "const": "derived",
5338
+ "type": "string"
5339
+ },
5340
+ {
5341
+ "const": "inferred",
5342
+ "type": "string"
5343
+ }
5344
+ ]
5345
+ },
5346
+ "confidence": {
5347
+ "anyOf": [
5348
+ {
5349
+ "const": "exact",
5350
+ "type": "string"
5351
+ },
5352
+ {
5353
+ "const": "high",
5354
+ "type": "string"
5355
+ },
5356
+ {
5357
+ "const": "medium",
5358
+ "type": "string"
5359
+ },
5360
+ {
5361
+ "const": "low",
5362
+ "type": "string"
5363
+ }
5364
+ ]
5365
+ }
5366
+ }
3256
5367
  },
3257
- "value": {
5368
+ {
3258
5369
  "additionalProperties": false,
3259
5370
  "type": "object",
3260
5371
  "required": [
3261
- "id"
5372
+ "state",
5373
+ "capability"
3262
5374
  ],
3263
5375
  "properties": {
3264
- "id": {
3265
- "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5376
+ "state": {
5377
+ "const": "unsupported",
3266
5378
  "type": "string"
3267
5379
  },
3268
- "version": {
5380
+ "capability": {
3269
5381
  "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3270
5382
  "type": "string"
3271
5383
  }
3272
5384
  }
3273
5385
  },
3274
- "attestation": {
3275
- "anyOf": [
3276
- {
3277
- "const": "native",
5386
+ {
5387
+ "additionalProperties": false,
5388
+ "type": "object",
5389
+ "required": [
5390
+ "state",
5391
+ "capability",
5392
+ "reason"
5393
+ ],
5394
+ "properties": {
5395
+ "state": {
5396
+ "const": "expected_but_missing",
3278
5397
  "type": "string"
3279
5398
  },
3280
- {
3281
- "const": "derived",
5399
+ "capability": {
5400
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3282
5401
  "type": "string"
3283
5402
  },
3284
- {
3285
- "const": "inferred",
5403
+ "reason": {
5404
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3286
5405
  "type": "string"
3287
5406
  }
3288
- ]
5407
+ }
3289
5408
  },
3290
- "confidence": {
3291
- "anyOf": [
3292
- {
3293
- "const": "exact",
5409
+ {
5410
+ "additionalProperties": false,
5411
+ "type": "object",
5412
+ "required": [
5413
+ "state",
5414
+ "reason"
5415
+ ],
5416
+ "properties": {
5417
+ "state": {
5418
+ "const": "redacted",
3294
5419
  "type": "string"
3295
5420
  },
3296
- {
3297
- "const": "high",
5421
+ "reason": {
5422
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3298
5423
  "type": "string"
3299
- },
3300
- {
3301
- "const": "medium",
5424
+ }
5425
+ }
5426
+ },
5427
+ {
5428
+ "additionalProperties": false,
5429
+ "type": "object",
5430
+ "required": [
5431
+ "state",
5432
+ "reason"
5433
+ ],
5434
+ "properties": {
5435
+ "state": {
5436
+ "const": "unknown",
3302
5437
  "type": "string"
3303
5438
  },
3304
- {
3305
- "const": "low",
5439
+ "reason": {
5440
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3306
5441
  "type": "string"
3307
5442
  }
3308
- ]
3309
- }
3310
- }
3311
- },
3312
- {
3313
- "additionalProperties": false,
3314
- "type": "object",
3315
- "required": [
3316
- "state",
3317
- "capability"
3318
- ],
3319
- "properties": {
3320
- "state": {
3321
- "const": "unsupported",
3322
- "type": "string"
3323
- },
3324
- "capability": {
3325
- "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3326
- "type": "string"
3327
- }
3328
- }
3329
- },
3330
- {
3331
- "additionalProperties": false,
3332
- "type": "object",
3333
- "required": [
3334
- "state",
3335
- "capability",
3336
- "reason"
3337
- ],
3338
- "properties": {
3339
- "state": {
3340
- "const": "expected_but_missing",
3341
- "type": "string"
3342
- },
3343
- "capability": {
3344
- "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3345
- "type": "string"
3346
- },
3347
- "reason": {
3348
- "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3349
- "type": "string"
3350
- }
3351
- }
3352
- },
3353
- {
3354
- "additionalProperties": false,
3355
- "type": "object",
3356
- "required": [
3357
- "state",
3358
- "reason"
3359
- ],
3360
- "properties": {
3361
- "state": {
3362
- "const": "redacted",
3363
- "type": "string"
3364
- },
3365
- "reason": {
3366
- "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3367
- "type": "string"
3368
- }
3369
- }
3370
- },
3371
- {
3372
- "additionalProperties": false,
3373
- "type": "object",
3374
- "required": [
3375
- "state",
3376
- "reason"
3377
- ],
3378
- "properties": {
3379
- "state": {
3380
- "const": "unknown",
3381
- "type": "string"
5443
+ }
3382
5444
  },
3383
- "reason": {
3384
- "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3385
- "type": "string"
5445
+ {
5446
+ "additionalProperties": false,
5447
+ "type": "object",
5448
+ "required": [
5449
+ "state"
5450
+ ],
5451
+ "properties": {
5452
+ "state": {
5453
+ "const": "not_applicable",
5454
+ "type": "string"
5455
+ }
5456
+ }
3386
5457
  }
3387
- }
5458
+ ]
3388
5459
  },
3389
- {
3390
- "additionalProperties": false,
3391
- "type": "object",
3392
- "required": [
3393
- "state"
3394
- ],
3395
- "properties": {
3396
- "state": {
3397
- "const": "not_applicable",
3398
- "type": "string"
3399
- }
3400
- }
3401
- }
3402
- ]
3403
- },
3404
- "model": {
3405
- "anyOf": [
3406
- {
3407
- "additionalProperties": false,
3408
- "type": "object",
3409
- "required": [
3410
- "state",
3411
- "value",
3412
- "attestation",
3413
- "confidence"
3414
- ],
3415
- "properties": {
3416
- "state": {
3417
- "const": "observed",
3418
- "type": "string"
5460
+ "response_latency": {
5461
+ "anyOf": [
5462
+ {
5463
+ "additionalProperties": false,
5464
+ "type": "object",
5465
+ "required": [
5466
+ "state",
5467
+ "value",
5468
+ "attestation",
5469
+ "confidence"
5470
+ ],
5471
+ "properties": {
5472
+ "state": {
5473
+ "const": "observed",
5474
+ "type": "string"
5475
+ },
5476
+ "value": {
5477
+ "additionalProperties": false,
5478
+ "type": "object",
5479
+ "required": [
5480
+ "support",
5481
+ "source",
5482
+ "completeness"
5483
+ ],
5484
+ "properties": {
5485
+ "support": {
5486
+ "anyOf": [
5487
+ {
5488
+ "const": "native",
5489
+ "type": "string"
5490
+ },
5491
+ {
5492
+ "const": "derived",
5493
+ "type": "string"
5494
+ },
5495
+ {
5496
+ "const": "conditional",
5497
+ "type": "string"
5498
+ }
5499
+ ]
5500
+ },
5501
+ "source": {
5502
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5503
+ "type": "string"
5504
+ },
5505
+ "completeness": {
5506
+ "anyOf": [
5507
+ {
5508
+ "const": "exact",
5509
+ "type": "string"
5510
+ },
5511
+ {
5512
+ "const": "lower_bound",
5513
+ "type": "string"
5514
+ },
5515
+ {
5516
+ "const": "unknown",
5517
+ "type": "string"
5518
+ }
5519
+ ]
5520
+ }
5521
+ }
5522
+ },
5523
+ "attestation": {
5524
+ "anyOf": [
5525
+ {
5526
+ "const": "native",
5527
+ "type": "string"
5528
+ },
5529
+ {
5530
+ "const": "derived",
5531
+ "type": "string"
5532
+ },
5533
+ {
5534
+ "const": "inferred",
5535
+ "type": "string"
5536
+ }
5537
+ ]
5538
+ },
5539
+ "confidence": {
5540
+ "anyOf": [
5541
+ {
5542
+ "const": "exact",
5543
+ "type": "string"
5544
+ },
5545
+ {
5546
+ "const": "high",
5547
+ "type": "string"
5548
+ },
5549
+ {
5550
+ "const": "medium",
5551
+ "type": "string"
5552
+ },
5553
+ {
5554
+ "const": "low",
5555
+ "type": "string"
5556
+ }
5557
+ ]
5558
+ }
5559
+ }
3419
5560
  },
3420
- "value": {
5561
+ {
3421
5562
  "additionalProperties": false,
3422
5563
  "type": "object",
3423
5564
  "required": [
3424
- "provider",
3425
- "id"
5565
+ "state",
5566
+ "capability"
3426
5567
  ],
3427
5568
  "properties": {
3428
- "provider": {
3429
- "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5569
+ "state": {
5570
+ "const": "unsupported",
3430
5571
  "type": "string"
3431
5572
  },
3432
- "id": {
5573
+ "capability": {
3433
5574
  "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3434
5575
  "type": "string"
3435
5576
  }
3436
5577
  }
3437
5578
  },
3438
- "attestation": {
3439
- "anyOf": [
3440
- {
3441
- "const": "native",
5579
+ {
5580
+ "additionalProperties": false,
5581
+ "type": "object",
5582
+ "required": [
5583
+ "state",
5584
+ "capability",
5585
+ "reason"
5586
+ ],
5587
+ "properties": {
5588
+ "state": {
5589
+ "const": "expected_but_missing",
3442
5590
  "type": "string"
3443
5591
  },
3444
- {
3445
- "const": "derived",
5592
+ "capability": {
5593
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3446
5594
  "type": "string"
3447
5595
  },
3448
- {
3449
- "const": "inferred",
5596
+ "reason": {
5597
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3450
5598
  "type": "string"
3451
5599
  }
3452
- ]
5600
+ }
3453
5601
  },
3454
- "confidence": {
3455
- "anyOf": [
3456
- {
3457
- "const": "exact",
5602
+ {
5603
+ "additionalProperties": false,
5604
+ "type": "object",
5605
+ "required": [
5606
+ "state",
5607
+ "reason"
5608
+ ],
5609
+ "properties": {
5610
+ "state": {
5611
+ "const": "redacted",
3458
5612
  "type": "string"
3459
5613
  },
3460
- {
3461
- "const": "high",
5614
+ "reason": {
5615
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3462
5616
  "type": "string"
3463
- },
3464
- {
3465
- "const": "medium",
5617
+ }
5618
+ }
5619
+ },
5620
+ {
5621
+ "additionalProperties": false,
5622
+ "type": "object",
5623
+ "required": [
5624
+ "state",
5625
+ "reason"
5626
+ ],
5627
+ "properties": {
5628
+ "state": {
5629
+ "const": "unknown",
3466
5630
  "type": "string"
3467
5631
  },
3468
- {
3469
- "const": "low",
5632
+ "reason": {
5633
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3470
5634
  "type": "string"
3471
5635
  }
3472
- ]
3473
- }
3474
- }
3475
- },
3476
- {
3477
- "additionalProperties": false,
3478
- "type": "object",
3479
- "required": [
3480
- "state",
3481
- "capability"
3482
- ],
3483
- "properties": {
3484
- "state": {
3485
- "const": "unsupported",
3486
- "type": "string"
5636
+ }
3487
5637
  },
3488
- "capability": {
3489
- "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3490
- "type": "string"
5638
+ {
5639
+ "additionalProperties": false,
5640
+ "type": "object",
5641
+ "required": [
5642
+ "state"
5643
+ ],
5644
+ "properties": {
5645
+ "state": {
5646
+ "const": "not_applicable",
5647
+ "type": "string"
5648
+ }
5649
+ }
3491
5650
  }
3492
- }
5651
+ ]
3493
5652
  },
3494
- {
3495
- "additionalProperties": false,
3496
- "type": "object",
3497
- "required": [
3498
- "state",
3499
- "capability",
3500
- "reason"
3501
- ],
3502
- "properties": {
3503
- "state": {
3504
- "const": "expected_but_missing",
3505
- "type": "string"
5653
+ "inference_timing": {
5654
+ "anyOf": [
5655
+ {
5656
+ "additionalProperties": false,
5657
+ "type": "object",
5658
+ "required": [
5659
+ "state",
5660
+ "value",
5661
+ "attestation",
5662
+ "confidence"
5663
+ ],
5664
+ "properties": {
5665
+ "state": {
5666
+ "const": "observed",
5667
+ "type": "string"
5668
+ },
5669
+ "value": {
5670
+ "additionalProperties": false,
5671
+ "type": "object",
5672
+ "required": [
5673
+ "support",
5674
+ "source",
5675
+ "completeness"
5676
+ ],
5677
+ "properties": {
5678
+ "support": {
5679
+ "anyOf": [
5680
+ {
5681
+ "const": "native",
5682
+ "type": "string"
5683
+ },
5684
+ {
5685
+ "const": "derived",
5686
+ "type": "string"
5687
+ },
5688
+ {
5689
+ "const": "conditional",
5690
+ "type": "string"
5691
+ }
5692
+ ]
5693
+ },
5694
+ "source": {
5695
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5696
+ "type": "string"
5697
+ },
5698
+ "completeness": {
5699
+ "anyOf": [
5700
+ {
5701
+ "const": "exact",
5702
+ "type": "string"
5703
+ },
5704
+ {
5705
+ "const": "lower_bound",
5706
+ "type": "string"
5707
+ },
5708
+ {
5709
+ "const": "unknown",
5710
+ "type": "string"
5711
+ }
5712
+ ]
5713
+ }
5714
+ }
5715
+ },
5716
+ "attestation": {
5717
+ "anyOf": [
5718
+ {
5719
+ "const": "native",
5720
+ "type": "string"
5721
+ },
5722
+ {
5723
+ "const": "derived",
5724
+ "type": "string"
5725
+ },
5726
+ {
5727
+ "const": "inferred",
5728
+ "type": "string"
5729
+ }
5730
+ ]
5731
+ },
5732
+ "confidence": {
5733
+ "anyOf": [
5734
+ {
5735
+ "const": "exact",
5736
+ "type": "string"
5737
+ },
5738
+ {
5739
+ "const": "high",
5740
+ "type": "string"
5741
+ },
5742
+ {
5743
+ "const": "medium",
5744
+ "type": "string"
5745
+ },
5746
+ {
5747
+ "const": "low",
5748
+ "type": "string"
5749
+ }
5750
+ ]
5751
+ }
5752
+ }
3506
5753
  },
3507
- "capability": {
3508
- "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
3509
- "type": "string"
5754
+ {
5755
+ "additionalProperties": false,
5756
+ "type": "object",
5757
+ "required": [
5758
+ "state",
5759
+ "capability"
5760
+ ],
5761
+ "properties": {
5762
+ "state": {
5763
+ "const": "unsupported",
5764
+ "type": "string"
5765
+ },
5766
+ "capability": {
5767
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5768
+ "type": "string"
5769
+ }
5770
+ }
3510
5771
  },
3511
- "reason": {
3512
- "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3513
- "type": "string"
3514
- }
3515
- }
3516
- },
3517
- {
3518
- "additionalProperties": false,
3519
- "type": "object",
3520
- "required": [
3521
- "state",
3522
- "reason"
3523
- ],
3524
- "properties": {
3525
- "state": {
3526
- "const": "redacted",
3527
- "type": "string"
5772
+ {
5773
+ "additionalProperties": false,
5774
+ "type": "object",
5775
+ "required": [
5776
+ "state",
5777
+ "capability",
5778
+ "reason"
5779
+ ],
5780
+ "properties": {
5781
+ "state": {
5782
+ "const": "expected_but_missing",
5783
+ "type": "string"
5784
+ },
5785
+ "capability": {
5786
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._:/+-]{0,127}$",
5787
+ "type": "string"
5788
+ },
5789
+ "reason": {
5790
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
5791
+ "type": "string"
5792
+ }
5793
+ }
3528
5794
  },
3529
- "reason": {
3530
- "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3531
- "type": "string"
3532
- }
3533
- }
3534
- },
3535
- {
3536
- "additionalProperties": false,
3537
- "type": "object",
3538
- "required": [
3539
- "state",
3540
- "reason"
3541
- ],
3542
- "properties": {
3543
- "state": {
3544
- "const": "unknown",
3545
- "type": "string"
5795
+ {
5796
+ "additionalProperties": false,
5797
+ "type": "object",
5798
+ "required": [
5799
+ "state",
5800
+ "reason"
5801
+ ],
5802
+ "properties": {
5803
+ "state": {
5804
+ "const": "redacted",
5805
+ "type": "string"
5806
+ },
5807
+ "reason": {
5808
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
5809
+ "type": "string"
5810
+ }
5811
+ }
3546
5812
  },
3547
- "reason": {
3548
- "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
3549
- "type": "string"
3550
- }
3551
- }
3552
- },
3553
- {
3554
- "additionalProperties": false,
3555
- "type": "object",
3556
- "required": [
3557
- "state"
3558
- ],
3559
- "properties": {
3560
- "state": {
3561
- "const": "not_applicable",
3562
- "type": "string"
5813
+ {
5814
+ "additionalProperties": false,
5815
+ "type": "object",
5816
+ "required": [
5817
+ "state",
5818
+ "reason"
5819
+ ],
5820
+ "properties": {
5821
+ "state": {
5822
+ "const": "unknown",
5823
+ "type": "string"
5824
+ },
5825
+ "reason": {
5826
+ "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$",
5827
+ "type": "string"
5828
+ }
5829
+ }
5830
+ },
5831
+ {
5832
+ "additionalProperties": false,
5833
+ "type": "object",
5834
+ "required": [
5835
+ "state"
5836
+ ],
5837
+ "properties": {
5838
+ "state": {
5839
+ "const": "not_applicable",
5840
+ "type": "string"
5841
+ }
5842
+ }
3563
5843
  }
3564
- }
5844
+ ]
3565
5845
  }
3566
- ]
5846
+ }
3567
5847
  },
3568
5848
  "capability_profile": {
3569
5849
  "pattern": "^cap_[a-f0-9]{64}$",