@gmickel/gno 1.18.0 → 1.19.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 (129) hide show
  1. package/README.md +5 -3
  2. package/assets/skill/SKILL.md +27 -0
  3. package/package.json +2 -1
  4. package/spec/AGENTS.md +83 -0
  5. package/spec/CLAUDE.md +83 -0
  6. package/spec/bench-fixture.schema.json +137 -0
  7. package/spec/cli.md +2894 -0
  8. package/spec/db/schema.sql +442 -0
  9. package/spec/evals-agentic.md +510 -0
  10. package/spec/evals.md +1106 -0
  11. package/spec/mcp.md +2229 -0
  12. package/spec/output-schemas/activation-verification.schema.json +515 -0
  13. package/spec/output-schemas/ask.schema.json +366 -0
  14. package/spec/output-schemas/backlinks.schema.json +131 -0
  15. package/spec/output-schemas/bench-result.schema.json +120 -0
  16. package/spec/output-schemas/capture-receipt.schema.json +143 -0
  17. package/spec/output-schemas/collection-list.schema.json +45 -0
  18. package/spec/output-schemas/context-capsule-v1.schema.json +691 -0
  19. package/spec/output-schemas/context-capsule-verification.schema.json +1338 -0
  20. package/spec/output-schemas/context-list.schema.json +21 -0
  21. package/spec/output-schemas/doctor.schema.json +313 -0
  22. package/spec/output-schemas/error.schema.json +30 -0
  23. package/spec/output-schemas/expansion.schema.json +37 -0
  24. package/spec/output-schemas/get.schema.json +140 -0
  25. package/spec/output-schemas/graph-query.schema.json +99 -0
  26. package/spec/output-schemas/graph.schema.json +371 -0
  27. package/spec/output-schemas/links-list.schema.json +186 -0
  28. package/spec/output-schemas/mcp-add-collection-result.schema.json +23 -0
  29. package/spec/output-schemas/mcp-capture-result.schema.json +152 -0
  30. package/spec/output-schemas/mcp-http-error.schema.json +30 -0
  31. package/spec/output-schemas/mcp-job-list.schema.json +58 -0
  32. package/spec/output-schemas/mcp-job-status.schema.json +224 -0
  33. package/spec/output-schemas/mcp-remove-result.schema.json +39 -0
  34. package/spec/output-schemas/mcp-sync-result.schema.json +41 -0
  35. package/spec/output-schemas/mcp-tag-result.schema.json +33 -0
  36. package/spec/output-schemas/models-list.schema.json +93 -0
  37. package/spec/output-schemas/multi-get.schema.json +103 -0
  38. package/spec/output-schemas/process-status.schema.json +119 -0
  39. package/spec/output-schemas/query-diagnose.schema.json +123 -0
  40. package/spec/output-schemas/resident-status.schema.json +154 -0
  41. package/spec/output-schemas/retrieval-trace-common.schema.json +492 -0
  42. package/spec/output-schemas/retrieval-trace-delete.schema.json +16 -0
  43. package/spec/output-schemas/retrieval-trace-export.schema.json +61 -0
  44. package/spec/output-schemas/retrieval-trace-filters.schema.json +139 -0
  45. package/spec/output-schemas/retrieval-trace-judgment.schema.json +15 -0
  46. package/spec/output-schemas/retrieval-trace-list.schema.json +18 -0
  47. package/spec/output-schemas/retrieval-trace-payloads.schema.json +178 -0
  48. package/spec/output-schemas/retrieval-trace-purge.schema.json +31 -0
  49. package/spec/output-schemas/retrieval-trace-qrels.schema.json +303 -0
  50. package/spec/output-schemas/retrieval-trace-replay.schema.json +286 -0
  51. package/spec/output-schemas/retrieval-trace-show.schema.json +69 -0
  52. package/spec/output-schemas/retrieval-trace-summary.schema.json +65 -0
  53. package/spec/output-schemas/search-result.schema.json +154 -0
  54. package/spec/output-schemas/search-results.schema.json +338 -0
  55. package/spec/output-schemas/similar.schema.json +84 -0
  56. package/spec/output-schemas/status.schema.json +676 -0
  57. package/spec/output-schemas/tags-list.schema.json +48 -0
  58. package/src/app/context-runtime-types.ts +3 -0
  59. package/src/app/context-runtime.ts +15 -1
  60. package/src/cli/commands/ask.ts +106 -36
  61. package/src/cli/commands/context-build.ts +56 -9
  62. package/src/cli/commands/get.ts +64 -3
  63. package/src/cli/commands/query.ts +62 -23
  64. package/src/cli/commands/replay.ts +140 -0
  65. package/src/cli/commands/search.ts +48 -3
  66. package/src/cli/commands/shared.ts +3 -1
  67. package/src/cli/commands/trace.ts +200 -0
  68. package/src/cli/commands/vsearch.ts +75 -53
  69. package/src/cli/program.ts +255 -0
  70. package/src/config/index.ts +9 -0
  71. package/src/config/retrieval-traces.ts +56 -0
  72. package/src/config/types.ts +4 -0
  73. package/src/core/context-compiler.ts +11 -4
  74. package/src/core/retrieval-qrels.ts +405 -0
  75. package/src/core/retrieval-replay-candidate.ts +368 -0
  76. package/src/core/retrieval-replay-types.ts +109 -0
  77. package/src/core/retrieval-replay-validation.ts +89 -0
  78. package/src/core/retrieval-replay.ts +441 -0
  79. package/src/core/retrieval-trace-evidence-origin.ts +175 -0
  80. package/src/core/retrieval-trace-export.ts +113 -0
  81. package/src/core/retrieval-trace-filter-normalization.ts +27 -0
  82. package/src/core/retrieval-trace-filters.ts +19 -0
  83. package/src/core/retrieval-trace-management-helpers.ts +247 -0
  84. package/src/core/retrieval-trace-management-types.ts +132 -0
  85. package/src/core/retrieval-trace-management.ts +422 -0
  86. package/src/core/retrieval-trace-request.ts +141 -0
  87. package/src/core/retrieval-trace-session.ts +494 -0
  88. package/src/core/retrieval-trace.ts +472 -0
  89. package/src/mcp/tools/context.ts +59 -8
  90. package/src/mcp/tools/get.ts +35 -1
  91. package/src/mcp/tools/index.ts +74 -0
  92. package/src/mcp/tools/query.ts +95 -64
  93. package/src/mcp/tools/search.ts +36 -13
  94. package/src/mcp/tools/trace.ts +143 -0
  95. package/src/mcp/tools/vsearch.ts +71 -38
  96. package/src/pipeline/answer.ts +167 -26
  97. package/src/pipeline/graph-retrieval.ts +15 -1
  98. package/src/pipeline/hybrid.ts +151 -43
  99. package/src/pipeline/search.ts +36 -3
  100. package/src/pipeline/trace-metadata.ts +47 -0
  101. package/src/pipeline/types.ts +43 -0
  102. package/src/pipeline/vsearch.ts +101 -38
  103. package/src/sdk/client.ts +380 -71
  104. package/src/sdk/documents.ts +48 -1
  105. package/src/sdk/index.ts +17 -0
  106. package/src/sdk/types.ts +28 -0
  107. package/src/serve/context-capsule.ts +67 -8
  108. package/src/serve/public/app.tsx +12 -1
  109. package/src/serve/public/globals.built.css +1 -1
  110. package/src/serve/public/lib/workspace-tabs.ts +2 -0
  111. package/src/serve/public/pages/Dashboard.tsx +10 -0
  112. package/src/serve/public/pages/TraceHistory.tsx +478 -0
  113. package/src/serve/public/pages/trace-history-detail.tsx +224 -0
  114. package/src/serve/retrieval-trace.ts +28 -0
  115. package/src/serve/routes/api.ts +366 -72
  116. package/src/serve/routes/traces.ts +156 -0
  117. package/src/serve/server.ts +87 -2
  118. package/src/store/index.ts +31 -0
  119. package/src/store/migrations/014-retrieval-traces.ts +303 -0
  120. package/src/store/migrations/index.ts +2 -0
  121. package/src/store/retrieval-trace-codec.ts +384 -0
  122. package/src/store/sqlite/adapter.ts +153 -1
  123. package/src/store/sqlite/retrieval-trace-management-store.ts +341 -0
  124. package/src/store/sqlite/retrieval-trace-retention.ts +349 -0
  125. package/src/store/sqlite/retrieval-trace-rows.ts +267 -0
  126. package/src/store/sqlite/retrieval-trace-store.ts +515 -0
  127. package/src/store/types.ts +297 -0
  128. package/src/store/vector/sqlite-vec.ts +76 -1
  129. package/src/store/vector/types.ts +1 -1
@@ -0,0 +1,1338 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "gno://schemas/context-capsule-verification@1.0",
4
+ "title": "GNO Context Capsule Verification Receipt",
5
+ "description": "Successful, non-mutating verification of saved Capsule content and ranking state. Stale or missing evidence remains a completed receipt.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schemaVersion",
10
+ "coordinateSpace",
11
+ "capsuleId",
12
+ "operationStatus",
13
+ "contentStatus",
14
+ "contentCode",
15
+ "rankingStatus",
16
+ "rankingCode",
17
+ "currentFingerprints",
18
+ "fingerprintStatus",
19
+ "fingerprintReasons",
20
+ "indexSnapshot",
21
+ "evidence"
22
+ ],
23
+ "properties": {
24
+ "schemaVersion": { "const": "1.0" },
25
+ "coordinateSpace": { "const": "canonical_mirror" },
26
+ "capsuleId": { "$ref": "#/definitions/sha256" },
27
+ "operationStatus": { "const": "completed" },
28
+ "contentStatus": { "enum": ["unchanged", "stale", "missing"] },
29
+ "contentCode": {
30
+ "enum": ["verified_unchanged", "content_stale", "content_missing"]
31
+ },
32
+ "rankingStatus": { "enum": ["unchanged", "reranked", "unavailable"] },
33
+ "rankingCode": {
34
+ "enum": ["ranking_unchanged", "ranking_changed", "ranking_unavailable"]
35
+ },
36
+ "currentFingerprints": { "$ref": "#/definitions/currentFingerprints" },
37
+ "fingerprintStatus": { "enum": ["unchanged", "drifted"] },
38
+ "fingerprintReasons": {
39
+ "oneOf": [
40
+ {
41
+ "type": "array",
42
+ "minItems": 0,
43
+ "maxItems": 0,
44
+ "items": false
45
+ },
46
+ {
47
+ "type": "array",
48
+ "minItems": 1,
49
+ "maxItems": 1,
50
+ "items": [
51
+ {
52
+ "const": "config_changed"
53
+ }
54
+ ]
55
+ },
56
+ {
57
+ "type": "array",
58
+ "minItems": 1,
59
+ "maxItems": 1,
60
+ "items": [
61
+ {
62
+ "const": "retrieval_changed"
63
+ }
64
+ ]
65
+ },
66
+ {
67
+ "type": "array",
68
+ "minItems": 2,
69
+ "maxItems": 2,
70
+ "items": [
71
+ {
72
+ "const": "config_changed"
73
+ },
74
+ {
75
+ "const": "retrieval_changed"
76
+ }
77
+ ]
78
+ },
79
+ {
80
+ "type": "array",
81
+ "minItems": 1,
82
+ "maxItems": 1,
83
+ "items": [
84
+ {
85
+ "const": "embedding_model_changed"
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "type": "array",
91
+ "minItems": 2,
92
+ "maxItems": 2,
93
+ "items": [
94
+ {
95
+ "const": "config_changed"
96
+ },
97
+ {
98
+ "const": "embedding_model_changed"
99
+ }
100
+ ]
101
+ },
102
+ {
103
+ "type": "array",
104
+ "minItems": 2,
105
+ "maxItems": 2,
106
+ "items": [
107
+ {
108
+ "const": "retrieval_changed"
109
+ },
110
+ {
111
+ "const": "embedding_model_changed"
112
+ }
113
+ ]
114
+ },
115
+ {
116
+ "type": "array",
117
+ "minItems": 3,
118
+ "maxItems": 3,
119
+ "items": [
120
+ {
121
+ "const": "config_changed"
122
+ },
123
+ {
124
+ "const": "retrieval_changed"
125
+ },
126
+ {
127
+ "const": "embedding_model_changed"
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ "type": "array",
133
+ "minItems": 1,
134
+ "maxItems": 1,
135
+ "items": [
136
+ {
137
+ "const": "rerank_model_changed"
138
+ }
139
+ ]
140
+ },
141
+ {
142
+ "type": "array",
143
+ "minItems": 2,
144
+ "maxItems": 2,
145
+ "items": [
146
+ {
147
+ "const": "config_changed"
148
+ },
149
+ {
150
+ "const": "rerank_model_changed"
151
+ }
152
+ ]
153
+ },
154
+ {
155
+ "type": "array",
156
+ "minItems": 2,
157
+ "maxItems": 2,
158
+ "items": [
159
+ {
160
+ "const": "retrieval_changed"
161
+ },
162
+ {
163
+ "const": "rerank_model_changed"
164
+ }
165
+ ]
166
+ },
167
+ {
168
+ "type": "array",
169
+ "minItems": 3,
170
+ "maxItems": 3,
171
+ "items": [
172
+ {
173
+ "const": "config_changed"
174
+ },
175
+ {
176
+ "const": "retrieval_changed"
177
+ },
178
+ {
179
+ "const": "rerank_model_changed"
180
+ }
181
+ ]
182
+ },
183
+ {
184
+ "type": "array",
185
+ "minItems": 2,
186
+ "maxItems": 2,
187
+ "items": [
188
+ {
189
+ "const": "embedding_model_changed"
190
+ },
191
+ {
192
+ "const": "rerank_model_changed"
193
+ }
194
+ ]
195
+ },
196
+ {
197
+ "type": "array",
198
+ "minItems": 3,
199
+ "maxItems": 3,
200
+ "items": [
201
+ {
202
+ "const": "config_changed"
203
+ },
204
+ {
205
+ "const": "embedding_model_changed"
206
+ },
207
+ {
208
+ "const": "rerank_model_changed"
209
+ }
210
+ ]
211
+ },
212
+ {
213
+ "type": "array",
214
+ "minItems": 3,
215
+ "maxItems": 3,
216
+ "items": [
217
+ {
218
+ "const": "retrieval_changed"
219
+ },
220
+ {
221
+ "const": "embedding_model_changed"
222
+ },
223
+ {
224
+ "const": "rerank_model_changed"
225
+ }
226
+ ]
227
+ },
228
+ {
229
+ "type": "array",
230
+ "minItems": 4,
231
+ "maxItems": 4,
232
+ "items": [
233
+ {
234
+ "const": "config_changed"
235
+ },
236
+ {
237
+ "const": "retrieval_changed"
238
+ },
239
+ {
240
+ "const": "embedding_model_changed"
241
+ },
242
+ {
243
+ "const": "rerank_model_changed"
244
+ }
245
+ ]
246
+ },
247
+ {
248
+ "type": "array",
249
+ "minItems": 1,
250
+ "maxItems": 1,
251
+ "items": [
252
+ {
253
+ "const": "tokenizer_changed"
254
+ }
255
+ ]
256
+ },
257
+ {
258
+ "type": "array",
259
+ "minItems": 2,
260
+ "maxItems": 2,
261
+ "items": [
262
+ {
263
+ "const": "config_changed"
264
+ },
265
+ {
266
+ "const": "tokenizer_changed"
267
+ }
268
+ ]
269
+ },
270
+ {
271
+ "type": "array",
272
+ "minItems": 2,
273
+ "maxItems": 2,
274
+ "items": [
275
+ {
276
+ "const": "retrieval_changed"
277
+ },
278
+ {
279
+ "const": "tokenizer_changed"
280
+ }
281
+ ]
282
+ },
283
+ {
284
+ "type": "array",
285
+ "minItems": 3,
286
+ "maxItems": 3,
287
+ "items": [
288
+ {
289
+ "const": "config_changed"
290
+ },
291
+ {
292
+ "const": "retrieval_changed"
293
+ },
294
+ {
295
+ "const": "tokenizer_changed"
296
+ }
297
+ ]
298
+ },
299
+ {
300
+ "type": "array",
301
+ "minItems": 2,
302
+ "maxItems": 2,
303
+ "items": [
304
+ {
305
+ "const": "embedding_model_changed"
306
+ },
307
+ {
308
+ "const": "tokenizer_changed"
309
+ }
310
+ ]
311
+ },
312
+ {
313
+ "type": "array",
314
+ "minItems": 3,
315
+ "maxItems": 3,
316
+ "items": [
317
+ {
318
+ "const": "config_changed"
319
+ },
320
+ {
321
+ "const": "embedding_model_changed"
322
+ },
323
+ {
324
+ "const": "tokenizer_changed"
325
+ }
326
+ ]
327
+ },
328
+ {
329
+ "type": "array",
330
+ "minItems": 3,
331
+ "maxItems": 3,
332
+ "items": [
333
+ {
334
+ "const": "retrieval_changed"
335
+ },
336
+ {
337
+ "const": "embedding_model_changed"
338
+ },
339
+ {
340
+ "const": "tokenizer_changed"
341
+ }
342
+ ]
343
+ },
344
+ {
345
+ "type": "array",
346
+ "minItems": 4,
347
+ "maxItems": 4,
348
+ "items": [
349
+ {
350
+ "const": "config_changed"
351
+ },
352
+ {
353
+ "const": "retrieval_changed"
354
+ },
355
+ {
356
+ "const": "embedding_model_changed"
357
+ },
358
+ {
359
+ "const": "tokenizer_changed"
360
+ }
361
+ ]
362
+ },
363
+ {
364
+ "type": "array",
365
+ "minItems": 2,
366
+ "maxItems": 2,
367
+ "items": [
368
+ {
369
+ "const": "rerank_model_changed"
370
+ },
371
+ {
372
+ "const": "tokenizer_changed"
373
+ }
374
+ ]
375
+ },
376
+ {
377
+ "type": "array",
378
+ "minItems": 3,
379
+ "maxItems": 3,
380
+ "items": [
381
+ {
382
+ "const": "config_changed"
383
+ },
384
+ {
385
+ "const": "rerank_model_changed"
386
+ },
387
+ {
388
+ "const": "tokenizer_changed"
389
+ }
390
+ ]
391
+ },
392
+ {
393
+ "type": "array",
394
+ "minItems": 3,
395
+ "maxItems": 3,
396
+ "items": [
397
+ {
398
+ "const": "retrieval_changed"
399
+ },
400
+ {
401
+ "const": "rerank_model_changed"
402
+ },
403
+ {
404
+ "const": "tokenizer_changed"
405
+ }
406
+ ]
407
+ },
408
+ {
409
+ "type": "array",
410
+ "minItems": 4,
411
+ "maxItems": 4,
412
+ "items": [
413
+ {
414
+ "const": "config_changed"
415
+ },
416
+ {
417
+ "const": "retrieval_changed"
418
+ },
419
+ {
420
+ "const": "rerank_model_changed"
421
+ },
422
+ {
423
+ "const": "tokenizer_changed"
424
+ }
425
+ ]
426
+ },
427
+ {
428
+ "type": "array",
429
+ "minItems": 3,
430
+ "maxItems": 3,
431
+ "items": [
432
+ {
433
+ "const": "embedding_model_changed"
434
+ },
435
+ {
436
+ "const": "rerank_model_changed"
437
+ },
438
+ {
439
+ "const": "tokenizer_changed"
440
+ }
441
+ ]
442
+ },
443
+ {
444
+ "type": "array",
445
+ "minItems": 4,
446
+ "maxItems": 4,
447
+ "items": [
448
+ {
449
+ "const": "config_changed"
450
+ },
451
+ {
452
+ "const": "embedding_model_changed"
453
+ },
454
+ {
455
+ "const": "rerank_model_changed"
456
+ },
457
+ {
458
+ "const": "tokenizer_changed"
459
+ }
460
+ ]
461
+ },
462
+ {
463
+ "type": "array",
464
+ "minItems": 4,
465
+ "maxItems": 4,
466
+ "items": [
467
+ {
468
+ "const": "retrieval_changed"
469
+ },
470
+ {
471
+ "const": "embedding_model_changed"
472
+ },
473
+ {
474
+ "const": "rerank_model_changed"
475
+ },
476
+ {
477
+ "const": "tokenizer_changed"
478
+ }
479
+ ]
480
+ },
481
+ {
482
+ "type": "array",
483
+ "minItems": 5,
484
+ "maxItems": 5,
485
+ "items": [
486
+ {
487
+ "const": "config_changed"
488
+ },
489
+ {
490
+ "const": "retrieval_changed"
491
+ },
492
+ {
493
+ "const": "embedding_model_changed"
494
+ },
495
+ {
496
+ "const": "rerank_model_changed"
497
+ },
498
+ {
499
+ "const": "tokenizer_changed"
500
+ }
501
+ ]
502
+ },
503
+ {
504
+ "type": "array",
505
+ "minItems": 1,
506
+ "maxItems": 1,
507
+ "items": [
508
+ {
509
+ "const": "index_changed"
510
+ }
511
+ ]
512
+ },
513
+ {
514
+ "type": "array",
515
+ "minItems": 2,
516
+ "maxItems": 2,
517
+ "items": [
518
+ {
519
+ "const": "config_changed"
520
+ },
521
+ {
522
+ "const": "index_changed"
523
+ }
524
+ ]
525
+ },
526
+ {
527
+ "type": "array",
528
+ "minItems": 2,
529
+ "maxItems": 2,
530
+ "items": [
531
+ {
532
+ "const": "retrieval_changed"
533
+ },
534
+ {
535
+ "const": "index_changed"
536
+ }
537
+ ]
538
+ },
539
+ {
540
+ "type": "array",
541
+ "minItems": 3,
542
+ "maxItems": 3,
543
+ "items": [
544
+ {
545
+ "const": "config_changed"
546
+ },
547
+ {
548
+ "const": "retrieval_changed"
549
+ },
550
+ {
551
+ "const": "index_changed"
552
+ }
553
+ ]
554
+ },
555
+ {
556
+ "type": "array",
557
+ "minItems": 2,
558
+ "maxItems": 2,
559
+ "items": [
560
+ {
561
+ "const": "embedding_model_changed"
562
+ },
563
+ {
564
+ "const": "index_changed"
565
+ }
566
+ ]
567
+ },
568
+ {
569
+ "type": "array",
570
+ "minItems": 3,
571
+ "maxItems": 3,
572
+ "items": [
573
+ {
574
+ "const": "config_changed"
575
+ },
576
+ {
577
+ "const": "embedding_model_changed"
578
+ },
579
+ {
580
+ "const": "index_changed"
581
+ }
582
+ ]
583
+ },
584
+ {
585
+ "type": "array",
586
+ "minItems": 3,
587
+ "maxItems": 3,
588
+ "items": [
589
+ {
590
+ "const": "retrieval_changed"
591
+ },
592
+ {
593
+ "const": "embedding_model_changed"
594
+ },
595
+ {
596
+ "const": "index_changed"
597
+ }
598
+ ]
599
+ },
600
+ {
601
+ "type": "array",
602
+ "minItems": 4,
603
+ "maxItems": 4,
604
+ "items": [
605
+ {
606
+ "const": "config_changed"
607
+ },
608
+ {
609
+ "const": "retrieval_changed"
610
+ },
611
+ {
612
+ "const": "embedding_model_changed"
613
+ },
614
+ {
615
+ "const": "index_changed"
616
+ }
617
+ ]
618
+ },
619
+ {
620
+ "type": "array",
621
+ "minItems": 2,
622
+ "maxItems": 2,
623
+ "items": [
624
+ {
625
+ "const": "rerank_model_changed"
626
+ },
627
+ {
628
+ "const": "index_changed"
629
+ }
630
+ ]
631
+ },
632
+ {
633
+ "type": "array",
634
+ "minItems": 3,
635
+ "maxItems": 3,
636
+ "items": [
637
+ {
638
+ "const": "config_changed"
639
+ },
640
+ {
641
+ "const": "rerank_model_changed"
642
+ },
643
+ {
644
+ "const": "index_changed"
645
+ }
646
+ ]
647
+ },
648
+ {
649
+ "type": "array",
650
+ "minItems": 3,
651
+ "maxItems": 3,
652
+ "items": [
653
+ {
654
+ "const": "retrieval_changed"
655
+ },
656
+ {
657
+ "const": "rerank_model_changed"
658
+ },
659
+ {
660
+ "const": "index_changed"
661
+ }
662
+ ]
663
+ },
664
+ {
665
+ "type": "array",
666
+ "minItems": 4,
667
+ "maxItems": 4,
668
+ "items": [
669
+ {
670
+ "const": "config_changed"
671
+ },
672
+ {
673
+ "const": "retrieval_changed"
674
+ },
675
+ {
676
+ "const": "rerank_model_changed"
677
+ },
678
+ {
679
+ "const": "index_changed"
680
+ }
681
+ ]
682
+ },
683
+ {
684
+ "type": "array",
685
+ "minItems": 3,
686
+ "maxItems": 3,
687
+ "items": [
688
+ {
689
+ "const": "embedding_model_changed"
690
+ },
691
+ {
692
+ "const": "rerank_model_changed"
693
+ },
694
+ {
695
+ "const": "index_changed"
696
+ }
697
+ ]
698
+ },
699
+ {
700
+ "type": "array",
701
+ "minItems": 4,
702
+ "maxItems": 4,
703
+ "items": [
704
+ {
705
+ "const": "config_changed"
706
+ },
707
+ {
708
+ "const": "embedding_model_changed"
709
+ },
710
+ {
711
+ "const": "rerank_model_changed"
712
+ },
713
+ {
714
+ "const": "index_changed"
715
+ }
716
+ ]
717
+ },
718
+ {
719
+ "type": "array",
720
+ "minItems": 4,
721
+ "maxItems": 4,
722
+ "items": [
723
+ {
724
+ "const": "retrieval_changed"
725
+ },
726
+ {
727
+ "const": "embedding_model_changed"
728
+ },
729
+ {
730
+ "const": "rerank_model_changed"
731
+ },
732
+ {
733
+ "const": "index_changed"
734
+ }
735
+ ]
736
+ },
737
+ {
738
+ "type": "array",
739
+ "minItems": 5,
740
+ "maxItems": 5,
741
+ "items": [
742
+ {
743
+ "const": "config_changed"
744
+ },
745
+ {
746
+ "const": "retrieval_changed"
747
+ },
748
+ {
749
+ "const": "embedding_model_changed"
750
+ },
751
+ {
752
+ "const": "rerank_model_changed"
753
+ },
754
+ {
755
+ "const": "index_changed"
756
+ }
757
+ ]
758
+ },
759
+ {
760
+ "type": "array",
761
+ "minItems": 2,
762
+ "maxItems": 2,
763
+ "items": [
764
+ {
765
+ "const": "tokenizer_changed"
766
+ },
767
+ {
768
+ "const": "index_changed"
769
+ }
770
+ ]
771
+ },
772
+ {
773
+ "type": "array",
774
+ "minItems": 3,
775
+ "maxItems": 3,
776
+ "items": [
777
+ {
778
+ "const": "config_changed"
779
+ },
780
+ {
781
+ "const": "tokenizer_changed"
782
+ },
783
+ {
784
+ "const": "index_changed"
785
+ }
786
+ ]
787
+ },
788
+ {
789
+ "type": "array",
790
+ "minItems": 3,
791
+ "maxItems": 3,
792
+ "items": [
793
+ {
794
+ "const": "retrieval_changed"
795
+ },
796
+ {
797
+ "const": "tokenizer_changed"
798
+ },
799
+ {
800
+ "const": "index_changed"
801
+ }
802
+ ]
803
+ },
804
+ {
805
+ "type": "array",
806
+ "minItems": 4,
807
+ "maxItems": 4,
808
+ "items": [
809
+ {
810
+ "const": "config_changed"
811
+ },
812
+ {
813
+ "const": "retrieval_changed"
814
+ },
815
+ {
816
+ "const": "tokenizer_changed"
817
+ },
818
+ {
819
+ "const": "index_changed"
820
+ }
821
+ ]
822
+ },
823
+ {
824
+ "type": "array",
825
+ "minItems": 3,
826
+ "maxItems": 3,
827
+ "items": [
828
+ {
829
+ "const": "embedding_model_changed"
830
+ },
831
+ {
832
+ "const": "tokenizer_changed"
833
+ },
834
+ {
835
+ "const": "index_changed"
836
+ }
837
+ ]
838
+ },
839
+ {
840
+ "type": "array",
841
+ "minItems": 4,
842
+ "maxItems": 4,
843
+ "items": [
844
+ {
845
+ "const": "config_changed"
846
+ },
847
+ {
848
+ "const": "embedding_model_changed"
849
+ },
850
+ {
851
+ "const": "tokenizer_changed"
852
+ },
853
+ {
854
+ "const": "index_changed"
855
+ }
856
+ ]
857
+ },
858
+ {
859
+ "type": "array",
860
+ "minItems": 4,
861
+ "maxItems": 4,
862
+ "items": [
863
+ {
864
+ "const": "retrieval_changed"
865
+ },
866
+ {
867
+ "const": "embedding_model_changed"
868
+ },
869
+ {
870
+ "const": "tokenizer_changed"
871
+ },
872
+ {
873
+ "const": "index_changed"
874
+ }
875
+ ]
876
+ },
877
+ {
878
+ "type": "array",
879
+ "minItems": 5,
880
+ "maxItems": 5,
881
+ "items": [
882
+ {
883
+ "const": "config_changed"
884
+ },
885
+ {
886
+ "const": "retrieval_changed"
887
+ },
888
+ {
889
+ "const": "embedding_model_changed"
890
+ },
891
+ {
892
+ "const": "tokenizer_changed"
893
+ },
894
+ {
895
+ "const": "index_changed"
896
+ }
897
+ ]
898
+ },
899
+ {
900
+ "type": "array",
901
+ "minItems": 3,
902
+ "maxItems": 3,
903
+ "items": [
904
+ {
905
+ "const": "rerank_model_changed"
906
+ },
907
+ {
908
+ "const": "tokenizer_changed"
909
+ },
910
+ {
911
+ "const": "index_changed"
912
+ }
913
+ ]
914
+ },
915
+ {
916
+ "type": "array",
917
+ "minItems": 4,
918
+ "maxItems": 4,
919
+ "items": [
920
+ {
921
+ "const": "config_changed"
922
+ },
923
+ {
924
+ "const": "rerank_model_changed"
925
+ },
926
+ {
927
+ "const": "tokenizer_changed"
928
+ },
929
+ {
930
+ "const": "index_changed"
931
+ }
932
+ ]
933
+ },
934
+ {
935
+ "type": "array",
936
+ "minItems": 4,
937
+ "maxItems": 4,
938
+ "items": [
939
+ {
940
+ "const": "retrieval_changed"
941
+ },
942
+ {
943
+ "const": "rerank_model_changed"
944
+ },
945
+ {
946
+ "const": "tokenizer_changed"
947
+ },
948
+ {
949
+ "const": "index_changed"
950
+ }
951
+ ]
952
+ },
953
+ {
954
+ "type": "array",
955
+ "minItems": 5,
956
+ "maxItems": 5,
957
+ "items": [
958
+ {
959
+ "const": "config_changed"
960
+ },
961
+ {
962
+ "const": "retrieval_changed"
963
+ },
964
+ {
965
+ "const": "rerank_model_changed"
966
+ },
967
+ {
968
+ "const": "tokenizer_changed"
969
+ },
970
+ {
971
+ "const": "index_changed"
972
+ }
973
+ ]
974
+ },
975
+ {
976
+ "type": "array",
977
+ "minItems": 4,
978
+ "maxItems": 4,
979
+ "items": [
980
+ {
981
+ "const": "embedding_model_changed"
982
+ },
983
+ {
984
+ "const": "rerank_model_changed"
985
+ },
986
+ {
987
+ "const": "tokenizer_changed"
988
+ },
989
+ {
990
+ "const": "index_changed"
991
+ }
992
+ ]
993
+ },
994
+ {
995
+ "type": "array",
996
+ "minItems": 5,
997
+ "maxItems": 5,
998
+ "items": [
999
+ {
1000
+ "const": "config_changed"
1001
+ },
1002
+ {
1003
+ "const": "embedding_model_changed"
1004
+ },
1005
+ {
1006
+ "const": "rerank_model_changed"
1007
+ },
1008
+ {
1009
+ "const": "tokenizer_changed"
1010
+ },
1011
+ {
1012
+ "const": "index_changed"
1013
+ }
1014
+ ]
1015
+ },
1016
+ {
1017
+ "type": "array",
1018
+ "minItems": 5,
1019
+ "maxItems": 5,
1020
+ "items": [
1021
+ {
1022
+ "const": "retrieval_changed"
1023
+ },
1024
+ {
1025
+ "const": "embedding_model_changed"
1026
+ },
1027
+ {
1028
+ "const": "rerank_model_changed"
1029
+ },
1030
+ {
1031
+ "const": "tokenizer_changed"
1032
+ },
1033
+ {
1034
+ "const": "index_changed"
1035
+ }
1036
+ ]
1037
+ },
1038
+ {
1039
+ "type": "array",
1040
+ "minItems": 6,
1041
+ "maxItems": 6,
1042
+ "items": [
1043
+ {
1044
+ "const": "config_changed"
1045
+ },
1046
+ {
1047
+ "const": "retrieval_changed"
1048
+ },
1049
+ {
1050
+ "const": "embedding_model_changed"
1051
+ },
1052
+ {
1053
+ "const": "rerank_model_changed"
1054
+ },
1055
+ {
1056
+ "const": "tokenizer_changed"
1057
+ },
1058
+ {
1059
+ "const": "index_changed"
1060
+ }
1061
+ ]
1062
+ }
1063
+ ]
1064
+ },
1065
+ "indexSnapshot": { "$ref": "#/definitions/indexSnapshot" },
1066
+ "evidence": {
1067
+ "type": "array",
1068
+ "minItems": 1,
1069
+ "items": { "$ref": "#/definitions/evidenceVerification" }
1070
+ }
1071
+ },
1072
+ "allOf": [
1073
+ {
1074
+ "if": { "properties": { "contentStatus": { "const": "unchanged" } } },
1075
+ "then": {
1076
+ "properties": { "contentCode": { "const": "verified_unchanged" } }
1077
+ }
1078
+ },
1079
+ {
1080
+ "if": { "properties": { "contentStatus": { "const": "stale" } } },
1081
+ "then": {
1082
+ "properties": {
1083
+ "contentCode": { "const": "content_stale" },
1084
+ "rankingStatus": { "const": "unavailable" },
1085
+ "rankingCode": { "const": "ranking_unavailable" }
1086
+ }
1087
+ }
1088
+ },
1089
+ {
1090
+ "if": { "properties": { "contentStatus": { "const": "missing" } } },
1091
+ "then": {
1092
+ "properties": {
1093
+ "contentCode": { "const": "content_missing" },
1094
+ "rankingStatus": { "const": "unavailable" },
1095
+ "rankingCode": { "const": "ranking_unavailable" }
1096
+ }
1097
+ }
1098
+ },
1099
+ {
1100
+ "if": { "properties": { "rankingStatus": { "const": "unchanged" } } },
1101
+ "then": {
1102
+ "properties": { "rankingCode": { "const": "ranking_unchanged" } }
1103
+ }
1104
+ },
1105
+ {
1106
+ "if": { "properties": { "rankingStatus": { "const": "reranked" } } },
1107
+ "then": {
1108
+ "properties": { "rankingCode": { "const": "ranking_changed" } }
1109
+ }
1110
+ },
1111
+ {
1112
+ "if": { "properties": { "rankingStatus": { "const": "unavailable" } } },
1113
+ "then": {
1114
+ "properties": { "rankingCode": { "const": "ranking_unavailable" } }
1115
+ }
1116
+ },
1117
+ {
1118
+ "if": { "properties": { "fingerprintStatus": { "const": "unchanged" } } },
1119
+ "then": {
1120
+ "properties": {
1121
+ "fingerprintReasons": { "type": "array", "maxItems": 0 }
1122
+ }
1123
+ }
1124
+ },
1125
+ {
1126
+ "if": { "properties": { "fingerprintStatus": { "const": "drifted" } } },
1127
+ "then": {
1128
+ "properties": {
1129
+ "fingerprintReasons": { "type": "array", "minItems": 1 }
1130
+ }
1131
+ }
1132
+ }
1133
+ ],
1134
+ "definitions": {
1135
+ "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
1136
+ "nullableSha256": {
1137
+ "oneOf": [{ "$ref": "#/definitions/sha256" }, { "type": "null" }]
1138
+ },
1139
+ "currentFingerprints": {
1140
+ "type": "object",
1141
+ "additionalProperties": false,
1142
+ "required": [
1143
+ "config",
1144
+ "retrieval",
1145
+ "embeddingModel",
1146
+ "rerankModel",
1147
+ "tokenizer",
1148
+ "index"
1149
+ ],
1150
+ "properties": {
1151
+ "config": { "$ref": "#/definitions/sha256" },
1152
+ "retrieval": { "$ref": "#/definitions/sha256" },
1153
+ "embeddingModel": { "$ref": "#/definitions/nullableSha256" },
1154
+ "rerankModel": { "$ref": "#/definitions/nullableSha256" },
1155
+ "tokenizer": { "$ref": "#/definitions/nullableSha256" },
1156
+ "index": { "$ref": "#/definitions/sha256" }
1157
+ }
1158
+ },
1159
+ "fingerprintDriftReason": {
1160
+ "enum": [
1161
+ "config_changed",
1162
+ "retrieval_changed",
1163
+ "embedding_model_changed",
1164
+ "rerank_model_changed",
1165
+ "tokenizer_changed",
1166
+ "index_changed"
1167
+ ]
1168
+ },
1169
+ "gnoUri": {
1170
+ "type": "string",
1171
+ "maxLength": 2048,
1172
+ "pattern": "^gno://[a-z0-9][a-z0-9_-]{0,63}/(?!.*%2F)(?:[A-Za-z0-9_.!~*'()/\\-]|%[0-9A-F]{2})+(?:\\?index=(?:[A-Za-z0-9_.!~*'()\\-]|%[0-9A-F]{2})+)?$"
1173
+ },
1174
+ "indexSnapshot": {
1175
+ "type": "object",
1176
+ "additionalProperties": false,
1177
+ "required": ["before", "after", "stable"],
1178
+ "properties": {
1179
+ "before": { "$ref": "#/definitions/sha256" },
1180
+ "after": { "$ref": "#/definitions/sha256" },
1181
+ "stable": { "const": true }
1182
+ }
1183
+ },
1184
+ "evidenceVerification": {
1185
+ "type": "object",
1186
+ "additionalProperties": false,
1187
+ "required": [
1188
+ "evidenceId",
1189
+ "uri",
1190
+ "contentStatus",
1191
+ "contentCode",
1192
+ "rankingStatus",
1193
+ "rankingCode",
1194
+ "currentSourceHash",
1195
+ "currentMirrorHash",
1196
+ "currentPassageHash",
1197
+ "currentRetrievalRank"
1198
+ ],
1199
+ "properties": {
1200
+ "evidenceId": { "$ref": "#/definitions/sha256" },
1201
+ "uri": { "$ref": "#/definitions/gnoUri" },
1202
+ "contentStatus": { "enum": ["unchanged", "stale", "missing"] },
1203
+ "contentCode": {
1204
+ "enum": [
1205
+ "verified_unchanged",
1206
+ "source_stale",
1207
+ "mirror_stale",
1208
+ "mirror_corrupt",
1209
+ "passage_stale",
1210
+ "chunk_missing",
1211
+ "chunk_corrupt",
1212
+ "source_missing",
1213
+ "mirror_missing"
1214
+ ]
1215
+ },
1216
+ "rankingStatus": { "enum": ["unchanged", "reranked", "unavailable"] },
1217
+ "rankingCode": {
1218
+ "enum": [
1219
+ "ranking_unchanged",
1220
+ "ranking_changed",
1221
+ "ranking_unavailable"
1222
+ ]
1223
+ },
1224
+ "currentSourceHash": { "$ref": "#/definitions/nullableSha256" },
1225
+ "currentMirrorHash": { "$ref": "#/definitions/nullableSha256" },
1226
+ "currentPassageHash": { "$ref": "#/definitions/nullableSha256" },
1227
+ "currentRetrievalRank": {
1228
+ "type": ["integer", "null"],
1229
+ "minimum": 1
1230
+ }
1231
+ },
1232
+ "allOf": [
1233
+ {
1234
+ "if": { "properties": { "contentStatus": { "const": "unchanged" } } },
1235
+ "then": {
1236
+ "properties": {
1237
+ "contentCode": { "const": "verified_unchanged" },
1238
+ "currentSourceHash": { "$ref": "#/definitions/sha256" },
1239
+ "currentMirrorHash": { "$ref": "#/definitions/sha256" },
1240
+ "currentPassageHash": { "$ref": "#/definitions/sha256" }
1241
+ }
1242
+ }
1243
+ },
1244
+ {
1245
+ "if": { "properties": { "contentStatus": { "const": "stale" } } },
1246
+ "then": {
1247
+ "properties": {
1248
+ "contentCode": {
1249
+ "enum": [
1250
+ "source_stale",
1251
+ "mirror_stale",
1252
+ "mirror_corrupt",
1253
+ "passage_stale",
1254
+ "chunk_missing",
1255
+ "chunk_corrupt"
1256
+ ]
1257
+ },
1258
+ "currentSourceHash": { "$ref": "#/definitions/sha256" },
1259
+ "currentMirrorHash": { "$ref": "#/definitions/sha256" },
1260
+ "currentPassageHash": { "$ref": "#/definitions/sha256" },
1261
+ "rankingStatus": { "const": "unavailable" },
1262
+ "rankingCode": { "const": "ranking_unavailable" },
1263
+ "currentRetrievalRank": { "type": "null" }
1264
+ }
1265
+ }
1266
+ },
1267
+ {
1268
+ "if": { "properties": { "contentStatus": { "const": "missing" } } },
1269
+ "then": {
1270
+ "properties": {
1271
+ "contentCode": { "enum": ["source_missing", "mirror_missing"] },
1272
+ "rankingStatus": { "const": "unavailable" },
1273
+ "rankingCode": { "const": "ranking_unavailable" },
1274
+ "currentRetrievalRank": { "type": "null" }
1275
+ }
1276
+ }
1277
+ },
1278
+ {
1279
+ "if": {
1280
+ "properties": { "contentCode": { "const": "source_missing" } }
1281
+ },
1282
+ "then": {
1283
+ "properties": {
1284
+ "contentStatus": { "const": "missing" },
1285
+ "currentSourceHash": { "type": "null" },
1286
+ "currentMirrorHash": { "type": "null" },
1287
+ "currentPassageHash": { "type": "null" }
1288
+ }
1289
+ }
1290
+ },
1291
+ {
1292
+ "if": {
1293
+ "properties": { "contentCode": { "const": "mirror_missing" } }
1294
+ },
1295
+ "then": {
1296
+ "properties": {
1297
+ "contentStatus": { "const": "missing" },
1298
+ "currentSourceHash": { "$ref": "#/definitions/sha256" },
1299
+ "currentMirrorHash": {
1300
+ "$ref": "#/definitions/nullableSha256"
1301
+ },
1302
+ "currentPassageHash": { "type": "null" }
1303
+ }
1304
+ }
1305
+ },
1306
+ {
1307
+ "if": { "properties": { "rankingStatus": { "const": "unchanged" } } },
1308
+ "then": {
1309
+ "properties": {
1310
+ "rankingCode": { "const": "ranking_unchanged" },
1311
+ "currentRetrievalRank": { "type": "integer", "minimum": 1 }
1312
+ }
1313
+ }
1314
+ },
1315
+ {
1316
+ "if": { "properties": { "rankingStatus": { "const": "reranked" } } },
1317
+ "then": {
1318
+ "properties": {
1319
+ "rankingCode": { "const": "ranking_changed" },
1320
+ "currentRetrievalRank": { "type": "integer", "minimum": 1 }
1321
+ }
1322
+ }
1323
+ },
1324
+ {
1325
+ "if": {
1326
+ "properties": { "rankingStatus": { "const": "unavailable" } }
1327
+ },
1328
+ "then": {
1329
+ "properties": {
1330
+ "rankingCode": { "const": "ranking_unavailable" },
1331
+ "currentRetrievalRank": { "type": "null" }
1332
+ }
1333
+ }
1334
+ }
1335
+ ]
1336
+ }
1337
+ }
1338
+ }